<?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>68231</bug_id>
          
          <creation_ts>2011-09-16 01:11:42 -0700</creation_ts>
          <short_desc>[EFL] Revert pointer operator coding style in ewk</short_desc>
          <delta_ts>2011-10-12 18:56:23 -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>68356</dependson>
          <blocked>68209</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>468374</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-16 01:11:42 -0700</bug_when>
    <thetext>As for pointer operator placement, WebKit coding style is applied instead of efl coding style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468382</commentid>
    <comment_count>1</comment_count>
      <attachid>107622</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-16 01:24:51 -0700</bug_when>
    <thetext>Created attachment 107622
Patch for ewk_view.cpp

I adjust webkit rule into ewk_view.cpp first. 

However, I&apos;m not sure whether we should adjust this rule into ewk_view.h as well. Because, ewk_view.h is public header, which is included by C application. In addition, pointer operator placement of public header differs from .cpp fliles in GTK port. 

For example, in webkit_web_view_set_settings function case,

- webkitwebview.h
WEBKIT_API void webkit_web_view_set_settings(WebKitWebView *webView, WebKitWebSettings *settings);

- webkitwebview.cpp
   void webkit_web_view_set_settings(WebKitWebView* webView, WebKitWebSettings* webSettings)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468383</commentid>
    <comment_count>2</comment_count>
      <attachid>107623</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-16 01:27:06 -0700</bug_when>
    <thetext>Created attachment 107623
Patch for ewk_view.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468385</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-16 01:28:11 -0700</bug_when>
    <thetext>Attachment 107622 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Source/WebKit/efl/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 2 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>468471</commentid>
    <comment_count>4</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-16 07:36:02 -0700</bug_when>
    <thetext>If we are going to make this huge change, couldn&apos;t we do it once instead of going through each file?

We might think about using sed / coccinelle to automate it and relief us the pain of manually converting them.

If you used any automated way to do this, what was it?

I agree that public headers must remain as is (and even convert back to EFL style if someone wrongly made the change).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468496</commentid>
    <comment_count>5</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-09-16 08:23:03 -0700</bug_when>
    <thetext>Fixing everything at once also makes sense to me. It might also be good to explain in the ChangeLog that this is being done to make reviewing ewk patches easier to everyone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468578</commentid>
    <comment_count>6</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-16 10:26:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Fixing everything at once also makes sense to me. It might also be good to explain in the ChangeLog that this is being done to make reviewing ewk patches easier to everyone.

And how it was done, if it was done automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468982</commentid>
    <comment_count>7</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-16 18:54:19 -0700</bug_when>
    <thetext>If there is automatic method to change this at once, I&apos;d like to use the method. However, I don&apos;t know what is the method now. If you guys and reviewer agree to fix everything at once, I also think it is better to change it at once. Of course, I will notify webkit-efl mailing list of this change again. Ok, I will prepare new patch which fixes every .cpp files again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469013</commentid>
    <comment_count>8</comment_count>
      <attachid>107765</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-16 21:24:37 -0700</bug_when>
    <thetext>Created attachment 107765
configuration file for uncrustify

We might consider using uncrustify for this job. I started with a small config to change &quot;type *p&quot; to &quot;type* p&quot; and added some other things

Right now it will remove &apos;\t&apos; chars (WHY there are so many of them?!?), fix indentation (preserving it when we use with EINA_LIST_FOREACH and the like) and fix the position of the star in pointer declarations.

I couldn&apos;t find a way to tell it not to change bitfield variables.


This is and initial .cfg so we can improve it to make other changes too (most of the changes are &quot;ignore&quot; by default).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469014</commentid>
    <comment_count>9</comment_count>
      <attachid>107766</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-16 21:26:16 -0700</bug_when>
    <thetext>Created attachment 107766
example of patch generated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469136</commentid>
    <comment_count>10</comment_count>
      <attachid>107782</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-17 21:15:29 -0700</bug_when>
    <thetext>Created attachment 107782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469137</commentid>
    <comment_count>11</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-17 21:18:26 -0700</bug_when>
    <thetext>Hello Lucas,

Nice file !!. Could you let me know how to use the file? Anyway, your example file has two problems. One is to use a tab instead of spaces. The other is to use wrong a space adding as below,

INF(&quot;current_size=%&quot;PRIu64&quot; expected_size=%&quot;PRIu64, current_size, expected_size);
 3191    INF(&quot;current_size=%&quot;PRIu 64 &quot; expected_size=%&quot;PRIu 64, current_size, expected_size);

I fix them and submit it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469138</commentid>
    <comment_count>12</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-17 22:35:19 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Hello Lucas,
&gt; 
&gt; Nice file !!. Could you let me know how to use the file? Anyway, your example file has two problems. One is to use a tab instead of spaces. The other is to use wrong a space adding as below,

cd Source/WebKit/efl/ewk/
uncrustify -c config.cfg *.cpp

Really weird it&apos;s using tab :-/. I&apos;m almost sure I was *removing* the tabs.

&gt; 
&gt; INF(&quot;current_size=%&quot;PRIu64&quot; expected_size=%&quot;PRIu64, current_size, expected_size);
&gt;  3191    INF(&quot;current_size=%&quot;PRIu 64 &quot; expected_size=%&quot;PRIu 64, current_size, expected_size);
&gt; 
&gt; I fix them and submit it again.

Let&apos;s get this config working before asking &quot;r?&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469142</commentid>
    <comment_count>13</comment_count>
      <attachid>107784</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-17 23:10:43 -0700</bug_when>
    <thetext>Created attachment 107784
uncrustify.cfg

New configuration file. It eliminates the problem with tabs.

For the PRIu64, it seems to be a bug in release 0.58. I&apos;m using 0.56 now.
I also applied to WebCoreSupport now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469143</commentid>
    <comment_count>14</comment_count>
      <attachid>107785</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-17 23:11:45 -0700</bug_when>
    <thetext>Created attachment 107785
webkit-efl.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469144</commentid>
    <comment_count>15</comment_count>
      <attachid>107785</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-17 23:14:26 -0700</bug_when>
    <thetext>Comment on attachment 107785
webkit-efl.patch

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

I also fix the tab problem with &quot;align_on_tabstop=false&quot; As mentioned in my comment, there is a unneeded space.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:935
&gt; +        EINA_LIST_FREE(points, point) ;

We should not add a space between &quot;)&quot; and &quot;;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469145</commentid>
    <comment_count>16</comment_count>
      <attachid>107785</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-17 23:39:23 -0700</bug_when>
    <thetext>Comment on attachment 107785
webkit-efl.patch

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

&gt;&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:935
&gt;&gt; +        EINA_LIST_FREE(points, point) ;
&gt; 
&gt; We should not add a space between &quot;)&quot; and &quot;;&quot;.

EINA_LIST_FREE is considered to be &quot;for&quot; in terms of coding style.

These lines are just plain wrong. First because if they meant to free the data, they should be like below:

EINA_LIST_FREE(points, point)
    free(point);

However, looking at the documentation, it&apos;s really weird that we are freeing data provided by user and he even doesn&apos;t known that. I didn&apos;t check thoroughly, but this EINA_LIST_FREE should just be removed.

Nice to see this cleanup is actually fixing  a bug ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469151</commentid>
    <comment_count>17</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-18 00:30:42 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 107785 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107785&amp;action=review

&gt; EINA_LIST_FREE(points, point)
&gt;     free(point);
&gt; 

Yes, your right. I also think that is a bug. We need to file a new bug for this problem. However, I also think it is better to file bugs after checking that this config file is working well.

I also run this config file on .cpp file of WebCoreSupport. There is a problem as below,

Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:681:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]

I think it is better to remove &quot;l&quot; parameter for now because the function is not implemented yet. Of course, we have to use meaning parameter when we implement this function.

 void FrameLoaderClientEfl::didChangeTitle(DocumentLoader* l)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469841</commentid>
    <comment_count>18</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-19 18:07:16 -0700</bug_when>
    <thetext>Hello lucas and kubo,

There are two style errors, which can&apos;t be fixed by this script I think.

1. Wrong parameter name in FrameLoaderClientEfl.cpp

Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:681:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]

2. Alphabetical sorting problem in ewk_util.cpp

Source/WebKit/efl/ewk/ewk_util.cpp:27:  Alphabetical sorting problem.  [build/include_order] [4]

So, I&apos;d like to file a bug for this. How do you think ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469897</commentid>
    <comment_count>19</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-19 20:53:14 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Hello lucas and kubo,
&gt; 
&gt; There are two style errors, which can&apos;t be fixed by this script I think.
&gt; 
&gt; 1. Wrong parameter name in FrameLoaderClientEfl.cpp
&gt; 
&gt; Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:681:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]

Actually it&apos;s worse than that... we don&apos;t use the parameter. We shouldn&apos;t name it.

&gt; 
&gt; 2. Alphabetical sorting problem in ewk_util.cpp
&gt; 
&gt; Source/WebKit/efl/ewk/ewk_util.cpp:27:  Alphabetical sorting problem.  [build/include_order] [4]

This is unrelated, but I think it&apos;s ok to fix it here in order to land this one.

After this one we fix the other cases, otherwise we will never close this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470147</commentid>
    <comment_count>20</comment_count>
      <attachid>108018</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-20 10:22:28 -0700</bug_when>
    <thetext>Created attachment 108018
uncrustify.cfg

New config file to be used with uncrustify, so the changes can be applied to (internal) headers too. Version 0.58 has a bug that causes some wrong changes and warnings. Use either version 0.56 or latest git.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470177</commentid>
    <comment_count>21</comment_count>
      <attachid>108025</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-20 10:54:15 -0700</bug_when>
    <thetext>Created attachment 108025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470178</commentid>
    <comment_count>22</comment_count>
      <attachid>108025</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-20 10:55:50 -0700</bug_when>
    <thetext>Comment on attachment 108025
Patch

This patch needs to be applied after bug 68356 lands, so I&apos;m marking it as cq-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470952</commentid>
    <comment_count>23</comment_count>
      <attachid>108025</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-09-21 11:10:07 -0700</bug_when>
    <thetext>Comment on attachment 108025
Patch

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

&gt; Source/WebKit/efl/ChangeLog:505
&gt; +        * WebCoreSupport/ChromeClientEfl.cpp:
&gt; +        (WebCore::ChromeClientEfl::exceededDatabaseQuota):
&gt; +        (WebCore::ChromeClientEfl::runOpenPanel):
&gt; +        * WebCoreSupport/EditorClientEfl.cpp:
&gt; +        (WebCore::EditorClientEfl::handleEditingKeyboardEvent):
&gt; +        * WebCoreSupport/FrameLoaderClientEfl.cpp:
&gt; +        (WebCore::FrameLoaderClientEfl::FrameLoaderClientEfl): remove name of
&gt; +        unused function paramenter
&gt; +        (WebCore::FrameLoaderClientEfl::setCustomUserAgent):
&gt; +        (WebCore::FrameLoaderClientEfl::createJavaAppletWidget):
&gt; +        (WebCore::FrameLoaderClientEfl::didChangeTitle):
&gt; +        * WebCoreSupport/IconDatabaseClientEfl.cpp:
&gt; +        * WebCoreSupport/NotificationPresenterClientEfl.cpp:
&gt; +        * ewk/ewk_auth.cpp:
&gt; +        (ewk_auth_credentials_set):
&gt; +        * ewk/ewk_auth_soup.cpp:
&gt; +        (_Ewk_Auth_Data::ewk_auth_soup_dialog_class_init):
&gt; +        (_Ewk_Auth_Data::ewk_auth_soup_dialog_init):
&gt; +        (_Ewk_Auth_Data::ewk_auth_soup_dialog_session_feature_init):
&gt; +        (_Ewk_Auth_Data::ewk_auth_soup_credentials_set):
&gt; +        (_Ewk_Auth_Data::session_authenticate):
&gt; +        (_Ewk_Auth_Data::free_auth_data):
&gt; +        (_Ewk_Auth_Data::attach):
&gt; +        (_Ewk_Auth_Data::detach):
&gt; +        * ewk/ewk_contextmenu.cpp:
&gt; +        (ewk_context_menu_ref):
&gt; +        (ewk_context_menu_unref):
&gt; +        (ewk_context_menu_destroy):
&gt; +        (ewk_context_menu_item_list_get):
&gt; +        (ewk_context_menu_item_new):
&gt; +        (ewk_context_menu_item_select):
&gt; +        (ewk_context_menu_item_free):
&gt; +        (ewk_context_menu_item_type_get):
&gt; +        (ewk_context_menu_item_type_set):
&gt; +        (ewk_context_menu_item_action_get):
&gt; +        (ewk_context_menu_item_action_set):
&gt; +        (ewk_context_menu_item_title_get):
&gt; +        (ewk_context_menu_item_title_set):
&gt; +        (ewk_context_menu_item_checked_get):
&gt; +        (ewk_context_menu_item_checked_set):
&gt; +        (ewk_context_menu_item_enabled_get):
&gt; +        (ewk_context_menu_item_enabled_set):
&gt; +        (ewk_context_menu_new):
&gt; +        (ewk_context_menu_free):
&gt; +        (ewk_context_menu_item_append):
&gt; +        (ewk_context_menu_custom_get):
&gt; +        (ewk_context_menu_show):
&gt; +        * ewk/ewk_cookies.cpp:
&gt; +        (ewk_cookies_file_set):
&gt; +        (ewk_cookies_clear):
&gt; +        (ewk_cookies_get_all):
&gt; +        (ewk_cookies_cookie_del):
&gt; +        (ewk_cookies_cookie_free):
&gt; +        (ewk_cookies_policy_set):
&gt; +        (ewk_cookies_policy_get):
&gt; +        * ewk/ewk_frame.cpp:
&gt; +        (_ewk_frame_debug):
&gt; +        (_ewk_frame_loader_efl_get):
&gt; +        (kit):
&gt; +        (_ewk_frame_children_iterator_next):
&gt; +        (_ewk_frame_children_iterator_get_container):
&gt; +        (_ewk_frame_smart_add):
&gt; +        (_ewk_frame_smart_del):
&gt; +        (_ewk_frame_smart_resize):
&gt; +        (_ewk_frame_smart_set):
&gt; +        (_ewk_frame_smart_class_new):
&gt; +        (ewk_frame_view_get):
&gt; +        (ewk_frame_children_iterator_new):
&gt; +        (ewk_frame_child_find):
&gt; +        (ewk_frame_uri_set):
&gt; +        (ewk_frame_uri_get):
&gt; +        (ewk_frame_title_get):
&gt; +        (ewk_frame_name_get):
&gt; +        (ewk_frame_contents_size_get):
&gt; +        (_ewk_frame_contents_set_internal):
&gt; +        (ewk_frame_contents_set):
&gt; +        (ewk_frame_contents_alternate_set):
&gt; +        (ewk_frame_script_execute):
&gt; +        (ewk_frame_editable_get):
&gt; +        (ewk_frame_editable_set):
&gt; +        (ewk_frame_selection_get):
&gt; +        (ewk_frame_text_search):
&gt; +        (ewk_frame_text_matches_mark):
&gt; +        (ewk_frame_text_matches_unmark_all):
&gt; +        (ewk_frame_text_matches_highlight_set):
&gt; +        (ewk_frame_text_matches_highlight_get):
&gt; +        (_ewk_frame_rect_cmp_less_than):
&gt; +        (_ewk_frame_rect_is_negative_value):
&gt; +        (ewk_frame_text_matches_nth_pos_get):
&gt; +        (ewk_frame_stop):
&gt; +        (ewk_frame_reload):
&gt; +        (ewk_frame_reload_full):
&gt; +        (ewk_frame_back):
&gt; +        (ewk_frame_forward):
&gt; +        (ewk_frame_navigate):
&gt; +        (ewk_frame_back_possible):
&gt; +        (ewk_frame_forward_possible):
&gt; +        (ewk_frame_navigate_possible):
&gt; +        (ewk_frame_zoom_get):
&gt; +        (ewk_frame_zoom_set):
&gt; +        (ewk_frame_zoom_text_only_get):
&gt; +        (ewk_frame_zoom_text_only_set):
&gt; +        (ewk_frame_hit_test_free):
&gt; +        (ewk_frame_hit_test_new):
&gt; +        (ewk_frame_scroll_add):
&gt; +        (ewk_frame_scroll_set):
&gt; +        (ewk_frame_scroll_size_get):
&gt; +        (ewk_frame_scroll_pos_get):
&gt; +        (ewk_frame_visible_content_geometry_get):
&gt; +        (ewk_frame_paint_full_get):
&gt; +        (ewk_frame_paint_full_set):
&gt; +        (ewk_frame_feed_focus_in):
&gt; +        (ewk_frame_feed_focus_out):
&gt; +        (ewk_frame_feed_mouse_wheel):
&gt; +        (ewk_frame_feed_mouse_down):
&gt; +        (ewk_frame_feed_mouse_up):
&gt; +        (ewk_frame_feed_mouse_move):
&gt; +        (ewk_frame_feed_touch_event):
&gt; +        (_ewk_frame_handle_key_scrolling):
&gt; +        (ewk_frame_feed_key_down):
&gt; +        (ewk_frame_feed_key_up):
&gt; +        (ewk_frame_text_selection_type_get):
&gt; +        (ewk_frame_add):
&gt; +        (ewk_frame_init):
&gt; +        (ewk_frame_child_add):
&gt; +        (ewk_frame_core_gone):
&gt; +        (ewk_frame_core_get):
&gt; +        (ewk_frame_request_will_send):
&gt; +        (ewk_frame_request_assign_identifier):
&gt; +        (ewk_frame_did_perform_first_navigation):
&gt; +        (ewk_frame_view_state_save):
&gt; +        (ewk_frame_load_started):
&gt; +        (ewk_frame_load_provisional):
&gt; +        (ewk_frame_load_firstlayout_finished):
&gt; +        (ewk_frame_load_firstlayout_nonempty_finished):
&gt; +        (ewk_frame_load_document_finished):
&gt; +        (ewk_frame_load_finished):
&gt; +        (ewk_frame_load_error):
&gt; +        (ewk_frame_load_progress_changed):
&gt; +        (ewk_frame_contents_size_changed):
&gt; +        (ewk_frame_title_set):
&gt; +        (ewk_frame_view_create_for_view):
&gt; +        (ewk_frame_source_get):
&gt; +        (ewk_frame_resources_location_get):
&gt; +        (ewk_frame_uri_changed):
&gt; +        (ewk_frame_force_layout):
&gt; +        (ewk_frame_plugin_create):
&gt; +        (ewk_frame_editor_client_selection_changed):
&gt; +        (ewk_frame_editor_client_contents_changed):
&gt; +        * ewk/ewk_history.cpp:
&gt; +        (_ewk_history_item_new):
&gt; +        (_ewk_history_item_list_get):
&gt; +        (ewk_history_history_item_current_get):
&gt; +        (ewk_history_item_icon_surface_get):
&gt; +        * ewk/ewk_js.cpp:
&gt; +        * ewk/ewk_main.cpp:
&gt; +        (_ewk_init_body):
&gt; +        * ewk/ewk_network.cpp:
&gt; +        (ewk_network_proxy_uri_set):
&gt; +        (ewk_network_proxy_uri_get):
&gt; +        * ewk/ewk_private.h:
&gt; +        * ewk/ewk_protocol_handler_soup.h:
&gt; +        * ewk/ewk_settings.cpp:
&gt; +        (ewk_settings_web_database_path_set):
&gt; +        (ewk_settings_web_database_path_get):
&gt; +        (ewk_settings_icon_database_path_set):
&gt; +        (ewk_settings_icon_database_path_get):
&gt; +        (ewk_settings_icon_database_icon_surface_get):
&gt; +        (ewk_settings_icon_database_icon_object_add):
&gt; +        (ewk_settings_default_user_agent_get):
&gt; +        (ewk_settings_cache_directory_path_set):
&gt; +        (ewk_settings_cache_directory_path_get):
&gt; +        * ewk/ewk_tiled_backing_store.h:
&gt; +        * ewk/ewk_tiled_matrix.h:
&gt; +        * ewk/ewk_tiled_model.h:
&gt; +        * ewk/ewk_tiled_private.h:
&gt; +        * ewk/ewk_util.cpp:
&gt; +        (ewk_util_image_from_cairo_surface_add):
&gt; +        (ewk_util_dpi_get):
&gt; +        * ewk/ewk_util.h:
&gt; +        * ewk/ewk_view.cpp:
&gt; +        (_ewk_view_smart_changed):
&gt; +        (_ewk_view_repaints_resize):
&gt; +        (_ewk_view_repaint_add):
&gt; +        (_ewk_view_repaints_flush):
&gt; +        (_ewk_view_scrolls_resize):
&gt; +        (_ewk_view_scroll_add):
&gt; +        (_ewk_view_scrolls_flush):
&gt; +        (_ewk_view_smart_focus_in):
&gt; +        (_ewk_view_smart_focus_out):
&gt; +        (_ewk_view_smart_mouse_wheel):
&gt; +        (_ewk_view_smart_mouse_down):
&gt; +        (_ewk_view_smart_mouse_up):
&gt; +        (_ewk_view_smart_mouse_move):
&gt; +        (_ewk_view_smart_key_down):
&gt; +        (_ewk_view_smart_key_up):
&gt; +        (_ewk_view_smart_add_console_message):
&gt; +        (_ewk_view_smart_run_javascript_alert):
&gt; +        (_ewk_view_smart_run_javascript_confirm):
&gt; +        (_ewk_view_smart_should_interrupt_javascript):
&gt; +        (_ewk_view_smart_run_javascript_prompt):
&gt; +        (_ewk_view_on_focus_in):
&gt; +        (_ewk_view_on_focus_out):
&gt; +        (_ewk_view_on_mouse_wheel):
&gt; +        (_ewk_view_on_mouse_down):
&gt; +        (_ewk_view_on_mouse_up):
&gt; +        (_ewk_view_on_mouse_move):
&gt; +        (_ewk_view_on_key_down):
&gt; +        (_ewk_view_on_key_up):
&gt; +        (_ewk_view_core_frame_new):
&gt; +        (_ewk_view_priv_new):
&gt; +        (_ewk_view_priv_del):
&gt; +        (_ewk_view_smart_add):
&gt; +        (_ewk_view_smart_del):
&gt; +        (_ewk_view_smart_resize):
&gt; +        (_ewk_view_smart_move):
&gt; +        (_ewk_view_smart_calculate):
&gt; +        (_ewk_view_smart_show):
&gt; +        (_ewk_view_smart_hide):
&gt; +        (_ewk_view_smart_contents_resize):
&gt; +        (_ewk_view_smart_zoom_set):
&gt; +        (_ewk_view_smart_flush):
&gt; +        (_ewk_view_smart_pre_render_region):
&gt; +        (_ewk_view_smart_pre_render_relative_radius):
&gt; +        (_ewk_view_smart_pre_render_cancel):
&gt; +        (_ewk_view_zoom_animated_mark_stop):
&gt; +        (_ewk_view_zoom_animated_finish):
&gt; +        (_ewk_view_zoom_animated_current):
&gt; +        (_ewk_view_zoom_animator_cb):
&gt; +        (_ewk_view_zoom_animation_start):
&gt; +        (_ewk_view_viewport_attributes_compute):
&gt; +        (_ewk_view_smart_disable_render):
&gt; +        (_ewk_view_smart_enable_render):
&gt; +        (ewk_view_base_smart_set):
&gt; +        (ewk_view_fixed_layout_size_set):
&gt; +        (ewk_view_fixed_layout_size_get):
&gt; +        (ewk_view_theme_set):
&gt; +        (ewk_view_theme_get):
&gt; +        (ewk_view_frame_main_get):
&gt; +        (ewk_view_frame_focused_get):
&gt; +        (ewk_view_uri_set):
&gt; +        (ewk_view_uri_get):
&gt; +        (ewk_view_title_get):
&gt; +        (ewk_view_editable_get):
&gt; +        (ewk_view_bg_color_set):
&gt; +        (ewk_view_bg_color_get):
&gt; +        (ewk_view_text_search):
&gt; +        (ewk_view_text_matches_mark):
&gt; +        (ewk_view_text_matches_unmark_all):
&gt; +        (ewk_view_text_matches_highlight_set):
&gt; +        (ewk_view_text_matches_highlight_get):
&gt; +        (ewk_view_editable_set):
&gt; +        (ewk_view_selection_get):
&gt; +        (_ewk_view_editor_command):
&gt; +        (ewk_view_execute_editor_command):
&gt; +        (ewk_view_context_menu_forward_event):
&gt; +        (ewk_view_load_progress_get):
&gt; +        (ewk_view_stop):
&gt; +        (ewk_view_reload):
&gt; +        (ewk_view_reload_full):
&gt; +        (ewk_view_back):
&gt; +        (ewk_view_forward):
&gt; +        (ewk_view_navigate):
&gt; +        (ewk_view_back_possible):
&gt; +        (ewk_view_forward_possible):
&gt; +        (ewk_view_navigate_possible):
&gt; +        (ewk_view_history_enable_get):
&gt; +        (ewk_view_history_enable_set):
&gt; +        (ewk_view_history_get):
&gt; +        (ewk_view_zoom_get):
&gt; +        (ewk_view_zoom_set):
&gt; +        (ewk_view_zoom_weak_smooth_scale_get):
&gt; +        (ewk_view_zoom_weak_smooth_scale_set):
&gt; +        (ewk_view_zoom_weak_set):
&gt; +        (ewk_view_zoom_animated_mark_start):
&gt; +        (ewk_view_zoom_animated_mark_end):
&gt; +        (ewk_view_zoom_animated_mark_current):
&gt; +        (ewk_view_zoom_animated_mark_stop):
&gt; +        (ewk_view_zoom_animated_set):
&gt; +        (ewk_view_zoom_text_only_get):
&gt; +        (ewk_view_zoom_text_only_set):
&gt; +        (ewk_view_pre_render_region):
&gt; +        (ewk_view_pre_render_relative_radius):
&gt; +        (ewk_view_imh_get):
&gt; +        (ewk_view_pre_render_cancel):
&gt; +        (ewk_view_enable_render):
&gt; +        (ewk_view_disable_render):
&gt; +        (ewk_view_setting_user_agent_get):
&gt; +        (ewk_view_setting_user_agent_set):
&gt; +        (ewk_view_setting_user_stylesheet_get):
&gt; +        (ewk_view_setting_user_stylesheet_set):
&gt; +        (ewk_view_setting_auto_load_images_get):
&gt; +        (ewk_view_setting_auto_load_images_set):
&gt; +        (ewk_view_setting_auto_shrink_images_get):
&gt; +        (ewk_view_setting_auto_shrink_images_set):
&gt; +        (ewk_view_setting_enable_auto_resize_window_get):
&gt; +        (ewk_view_setting_enable_auto_resize_window_set):
&gt; +        (ewk_view_setting_enable_scripts_get):
&gt; +        (ewk_view_setting_enable_scripts_set):
&gt; +        (ewk_view_setting_enable_plugins_get):
&gt; +        (ewk_view_setting_enable_plugins_set):
&gt; +        (ewk_view_setting_enable_frame_flattening_get):
&gt; +        (ewk_view_setting_enable_frame_flattening_set):
&gt; +        (ewk_view_setting_scripts_window_open_get):
&gt; +        (ewk_view_setting_scripts_window_open_set):
&gt; +        (ewk_view_setting_scripts_can_close_windows_get):
&gt; +        (ewk_view_setting_scripts_can_close_windows_set):
&gt; +        (ewk_view_setting_resizable_textareas_get):
&gt; +        (ewk_view_setting_resizable_textareas_set):
&gt; +        (ewk_view_setting_private_browsing_get):
&gt; +        (ewk_view_setting_private_browsing_set):
&gt; +        (ewk_view_setting_offline_app_cache_get):
&gt; +        (ewk_view_setting_offline_app_cache_set):
&gt; +        (ewk_view_setting_caret_browsing_get):
&gt; +        (ewk_view_setting_caret_browsing_set):
&gt; +        (ewk_view_setting_encoding_custom_get):
&gt; +        (ewk_view_setting_encoding_custom_set):
&gt; +        (ewk_view_setting_encoding_default_get):
&gt; +        (ewk_view_setting_encoding_default_set):
&gt; +        (ewk_view_setting_encoding_detector_set):
&gt; +        (ewk_view_setting_encoding_detector_get):
&gt; +        (ewk_view_setting_enable_developer_extras_get):
&gt; +        (ewk_view_setting_enable_developer_extras_set):
&gt; +        (ewk_view_setting_font_minimum_size_get):
&gt; +        (ewk_view_setting_font_minimum_size_set):
&gt; +        (ewk_view_setting_font_minimum_logical_size_get):
&gt; +        (ewk_view_setting_font_minimum_logical_size_set):
&gt; +        (ewk_view_setting_font_default_size_get):
&gt; +        (ewk_view_setting_font_default_size_set):
&gt; +        (ewk_view_setting_font_monospace_size_get):
&gt; +        (ewk_view_setting_font_monospace_size_set):
&gt; +        (ewk_view_font_family_name_get):
&gt; +        (ewk_view_font_family_name_set):
&gt; +        (ewk_view_setting_spatial_navigation_get):
&gt; +        (ewk_view_setting_spatial_navigation_set):
&gt; +        (ewk_view_setting_local_storage_get):
&gt; +        (ewk_view_setting_local_storage_set):
&gt; +        (ewk_view_setting_page_cache_get):
&gt; +        (ewk_view_setting_page_cache_set):
&gt; +        (ewk_view_setting_local_storage_database_path_get):
&gt; +        (ewk_view_setting_local_storage_database_path_set):
&gt; +        (ewk_view_setting_minimum_timer_interval_set):
&gt; +        (ewk_view_setting_minimum_timer_interval_get):
&gt; +        (ewk_view_smart_data_get):
&gt; +        (ewk_view_repaints_get):
&gt; +        (ewk_view_scroll_requests_get):
&gt; +        (ewk_view_repaint_add):
&gt; +        (ewk_view_layout_if_needed_recursive):
&gt; +        (ewk_view_scrolls_process):
&gt; +        (ewk_view_paint_context_new):
&gt; +        (ewk_view_paint_context_free):
&gt; +        (ewk_view_paint_context_save):
&gt; +        (ewk_view_paint_context_restore):
&gt; +        (ewk_view_paint_context_clip):
&gt; +        (ewk_view_paint_context_paint):
&gt; +        (ewk_view_paint_context_paint_contents):
&gt; +        (ewk_view_paint_context_scale):
&gt; +        (ewk_view_paint_context_translate):
&gt; +        (ewk_view_paint):
&gt; +        (ewk_view_paint_contents):
&gt; +        (ewk_view_ready):
&gt; +        (ewk_view_input_method_state_set):
&gt; +        (ewk_view_title_set):
&gt; +        (ewk_view_uri_changed):
&gt; +        (ewk_view_load_started):
&gt; +        (ewk_view_frame_main_load_started):
&gt; +        (ewk_view_load_provisional):
&gt; +        (ewk_view_load_show):
&gt; +        (ewk_view_frame_main_cleared):
&gt; +        (ewk_view_frame_main_icon_received):
&gt; +        (ewk_view_load_finished):
&gt; +        (ewk_view_load_error):
&gt; +        (ewk_view_load_progress_changed):
&gt; +        (ewk_view_restore_state):
&gt; +        (ewk_view_window_create):
&gt; +        (ewk_view_window_close):
&gt; +        (ewk_view_mouse_link_hover_in):
&gt; +        (ewk_view_mouse_link_hover_out):
&gt; +        (ewk_view_toolbars_visible_set):
&gt; +        (ewk_view_toolbars_visible_get):
&gt; +        (ewk_view_statusbar_visible_set):
&gt; +        (ewk_view_statusbar_visible_get):
&gt; +        (ewk_view_statusbar_text_set):
&gt; +        (ewk_view_scrollbars_visible_set):
&gt; +        (ewk_view_scrollbars_visible_get):
&gt; +        (ewk_view_menubar_visible_set):
&gt; +        (ewk_view_menubar_visible_get):
&gt; +        (ewk_view_tooltip_text_set):
&gt; +        (ewk_view_add_console_message):
&gt; +        (ewk_view_run_javascript_alert):
&gt; +        (ewk_view_run_javascript_confirm):
&gt; +        (ewk_view_run_javascript_prompt):
&gt; +        (ewk_view_should_interrupt_javascript):
&gt; +        (ewk_view_exceeded_database_quota):
&gt; +        (ewk_view_run_open_panel):
&gt; +        (ewk_view_repaint):
&gt; +        (ewk_view_scroll):
&gt; +        (ewk_view_core_page_get):
&gt; +        (ewk_view_frame_create):
&gt; +        (ewk_view_plugin_create):
&gt; +        (ewk_view_popup_new):
&gt; +        (ewk_view_popup_destroy):
&gt; +        (ewk_view_popup_selected_set):
&gt; +        (ewk_view_download_request):
&gt; +        (ewk_view_js_window_object_clear):
&gt; +        (ewk_view_viewport_attributes_set):
&gt; +        (ewk_view_viewport_attributes_get):
&gt; +        (ewk_view_zoom_range_set):
&gt; +        (ewk_view_zoom_range_min_get):
&gt; +        (ewk_view_zoom_range_max_get):
&gt; +        (ewk_view_user_scalable_set):
&gt; +        (ewk_view_user_scalable_get):
&gt; +        (ewk_view_device_pixel_ratio_get):
&gt; +        (ewk_view_did_first_visually_nonempty_layout):
&gt; +        (ewk_view_dispatch_did_finish_loading):
&gt; +        (ewk_view_transition_to_commited_for_newpage):
&gt; +        (ewk_view_navigation_policy_decision):
&gt; +        (ewk_view_js_object_add):
&gt; +        (ewk_view_contents_size_changed):
&gt; +        (ewk_view_page_rect_get):
&gt; +        (ewk_view_need_touch_events_set):
&gt; +        (ewk_view_need_touch_events_get):
&gt; +        (ewk_view_mode_set):
&gt; +        (ewk_view_mode_get):
&gt; +        (ewk_view_editor_client_selection_changed):
&gt; +        (ewk_view_editor_client_contents_changed):
&gt; +        * ewk/ewk_view_single.cpp:
&gt; +        (_ewk_view_single_on_del):
&gt; +        (_ewk_view_single_smart_add):
&gt; +        (_ewk_view_single_smart_backing_store_add):
&gt; +        (_ewk_view_single_smart_resize):
&gt; +        (_ewk_view_4b_move_region_up):
&gt; +        (_ewk_view_4b_move_region_down):
&gt; +        (_ewk_view_4b_move_line_left):
&gt; +        (_ewk_view_4b_move_line_right):
&gt; +        (_ewk_view_4b_move_region_left):
&gt; +        (_ewk_view_4b_move_region_right):
&gt; +        (_ewk_view_4b_move_region):
&gt; +        (_ewk_view_single_scroll_process_single):
&gt; +        (_ewk_view_single_smart_scrolls_process):
&gt; +        (_ewk_view_single_smart_repaints_process):
&gt; +        (_ewk_view_single_smart_zoom_weak_set):
&gt; +        (_ewk_view_single_smart_zoom_weak_smooth_scale_set):
&gt; +        (_ewk_view_single_smart_bg_color_set):
&gt; +        (ewk_view_single_smart_set):
&gt; +        (_ewk_view_single_smart_class_new):
&gt; +        (ewk_view_single_add):
&gt; +        * ewk/ewk_view_tiled.cpp:
&gt; +        (_ewk_view_tiled_render_cb):
&gt; +        (_ewk_view_tiled_updates_process_pre):
&gt; +        (_ewk_view_tiled_smart_backing_store_add):
&gt; +        (_ewk_view_tiled_contents_size_changed_cb):
&gt; +        (_ewk_view_tiled_smart_add):
&gt; +        (_ewk_view_tiled_smart_scrolls_process):
&gt; +        (_ewk_view_tiled_smart_repaints_process):
&gt; +        (_ewk_view_tiled_smart_contents_resize):
&gt; +        (_ewk_view_tiled_smart_zoom_set):
&gt; +        (_ewk_view_tiled_smart_zoom_weak_set):
&gt; +        (_ewk_view_tiled_smart_zoom_weak_smooth_scale_set):
&gt; +        (_ewk_view_tiled_smart_flush):
&gt; +        (_ewk_view_tiled_smart_pre_render_region):
&gt; +        (_ewk_view_tiled_smart_pre_render_relative_radius):
&gt; +        (_ewk_view_tiled_smart_pre_render_cancel):
&gt; +        (_ewk_view_tiled_smart_disable_render):
&gt; +        (_ewk_view_tiled_smart_enable_render):
&gt; +        (ewk_view_tiled_smart_set):
&gt; +        (_ewk_view_tiled_smart_class_new):
&gt; +        (ewk_view_tiled_add):
&gt; +        (ewk_view_tiled_unused_cache_get):
&gt; +        (ewk_view_tiled_unused_cache_set):
&gt; +        * ewk/ewk_window_features.cpp:
&gt; +        (ewk_window_features_unref):
&gt; +        (ewk_window_features_ref):
&gt; +        (ewk_window_features_bool_property_get):
&gt; +        (ewk_window_features_int_property_get):
&gt; +        (ewk_window_features_new_from_core):

Please drop this of the changelog. It does not add anything since you changed everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471030</commentid>
    <comment_count>24</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-21 12:17:10 -0700</bug_when>
    <thetext>Committed r95659: &lt;http://trac.webkit.org/changeset/95659&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107622</attachid>
            <date>2011-09-16 01:24:51 -0700</date>
            <delta_ts>2011-09-16 01:25:28 -0700</delta_ts>
            <desc>Patch for ewk_view.cpp</desc>
            <filename>patch-revert-pointer-ewk-view.patch</filename>
            <type>text/plain</type>
            <size>112469</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA1NDdhMTY5Li5lNzAzZDVkIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjU0IEBACisyMDExLTA5LTE1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmV2ZXJ0IHBvaW50ZXIgb3BlcmF0b3IgY29k
aW5nIHN0eWxlIGluIGV3a192aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD14eHh4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXMgZm9yIHBvaW50ZXIgb3BlcmF0b3IgcGxhY2VtZW50LCBXZWJLaXQgY29k
aW5nIHN0eWxlIGlzIGFwcGxpZWQgaW5zdGVhZCBvZgorICAgICAgICBlZmwgY29kaW5nIHN0eWxl
LgorCisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9jaGFuZ2VkKToKKyAgICAgICAgKF9ld2tfdmlld19yZXBhaW50c19yZXNpemUpOgorICAgICAg
ICAoX2V3a192aWV3X3JlcGFpbnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19yZXBhaW50c19m
bHVzaCk6CisgICAgICAgIChfZXdrX3ZpZXdfc2Nyb2xsc19yZXNpemUpOgorICAgICAgICAoX2V3
a192aWV3X3Njcm9sbF9hZGQpOgorICAgICAgICAoX2V3a192aWV3X3Njcm9sbHNfZmx1c2gpOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9mb2N1c19vdXQpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToK
KyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9tb3VzZV91cCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X2tleV91cCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVfbWVz
c2FnZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfYWxlcnQpOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJvbXB0KToKKyAgICAgICAgKF9ld2tf
dmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KToKKyAg
ICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25f
bW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfdXApOgorICAgICAgICAo
X2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X29uX2tleV9kb3du
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X2Nv
cmVfZnJhbWVfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfZGVsKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNp
emUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVz
aXplKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF96b29tX3NldCk6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfZmx1c2gpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJf
cmVnaW9uKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3Jh
ZGl1cyk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKToKKyAgICAgICAgKF9ld2tf
dmlld196b29tX2FuaW1hdGVkX2ZpbmlzaCk6CisgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9jdXJyZW50KToKKyAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKToKKyAg
ICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFydCk6CisgICAgICAgIChfZXdrX3Zp
ZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKToKKyAgICAgICAgKGV3a192aWV3X2Jhc2Vf
c21hcnRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCk6Cisg
ICAgICAgIChld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfdGhlbWVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3RoZW1lX2dldCk6CisgICAgICAgIChl
d2tfdmlld19mcmFtZV9tYWluX2dldCk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9mb2N1c2Vk
X2dldCk6CisgICAgICAgIChld2tfdmlld191cmlfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Vy
aV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3
X2VkaXRhYmxlX2dldCk6CisgICAgICAgIChld2tfdmlld19iZ19jb2xvcl9zZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfc2VhcmNo
KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKToKKyAgICAgICAgKGV3a192
aWV3X3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0
Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdo
bGlnaHRfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2VkaXRhYmxlX3NldCk6CisgICAgICAgIChl
d2tfdmlld19zZWxlY3Rpb25fZ2V0KToKKyAgICAgICAgKF9ld2tfdmlld19lZGl0b3JfY29tbWFu
ZCk6CisgICAgICAgIChld2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKToKKyAgICAgICAg
KGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3
X2xvYWRfcHJvZ3Jlc3NfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3N0b3ApOgorICAgICAgICAo
ZXdrX3ZpZXdfcmVsb2FkKToKKyAgICAgICAgKGV3a192aWV3X3JlbG9hZF9mdWxsKToKKyAgICAg
ICAgKGV3a192aWV3X2JhY2spOgorICAgICAgICAoZXdrX3ZpZXdfZm9yd2FyZCk6CisgICAgICAg
IChld2tfdmlld19uYXZpZ2F0ZSk6CisgICAgICAgIChld2tfdmlld19iYWNrX3Bvc3NpYmxlKToK
KyAgICAgICAgKGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUpOgorICAgICAgICAoZXdrX3ZpZXdf
bmF2aWdhdGVfcG9zc2libGUpOgorICAgICAgICAoZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0
KToKKyAgICAgICAgKGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldCk6CisgICAgICAgIChld2tf
dmlld19oaXN0b3J5X2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX2dldCk6CisgICAgICAg
IChld2tfdmlld196b29tX3NldCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc21vb3Ro
X3NjYWxlX2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3Nl
dCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCk6CisgICAgICAgIChld2tfdmlld196b29tX2FuaW1h
dGVkX21hcmtfZW5kKToKKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJy
ZW50KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKToKKyAgICAg
ICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21f
dGV4dF9vbmx5X2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX3RleHRfb25seV9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24pOgorICAgICAgICAoZXdrX3ZpZXdf
cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRl
cl9jYW5jZWwpOgorICAgICAgICAoZXdrX3ZpZXdfZW5hYmxlX3JlbmRlcik6CisgICAgICAgIChl
d2tfdmlld19kaXNhYmxlX3JlbmRlcik6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3VzZXJf
YWdlbnRfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KToKKyAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldCk6CisgICAgICAgIChld2tfdmll
d19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfYXV0b19sb2FkX2ltYWdlc19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19hdXRv
X3Nocmlua19pbWFnZXNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYXV0b19zaHJp
bmtfaW1hZ2VzX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jl
c2l6ZV93aW5kb3dfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9f
cmVzaXplX3dpbmRvd19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2Ny
aXB0c19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19nZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19nZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX2dldCk6CisgICAgICAgIChld2tfdmlld19z
ZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93c19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX3NldCk6CisgICAgICAgIChld2tfdmlld19z
ZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfcmVzaXphYmxlX3RleHRhcmVhc19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19w
cml2YXRlX2Jyb3dzaW5nX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3ByaXZhdGVf
YnJvd3Npbmdfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2Fj
aGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0
KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3NpbmdfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNv
ZGluZ19kZWZhdWx0X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2Rl
ZmF1bHRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3Jf
c2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3JfZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3NldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dldCk6CisgICAgICAgIChld2tf
dmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX3NldCk6CisgICAgICAgIChld2tfdmlld19z
ZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZm9udF9mYW1p
bHlfbmFtZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldCk6CisgICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19wYWdl
X2NhY2hlX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX2dl
dCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0
aF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFs
X3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX21pbmltdW1fdGltZXJfaW50ZXJ2YWxf
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X3JlcGFpbnRzX2dldCk6CisgICAgICAgIChld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0
KToKKyAgICAgICAgKGV3a192aWV3X3JlcGFpbnRfYWRkKToKKyAgICAgICAgKGV3a192aWV3X2xh
eW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKToKKyAgICAgICAgKGV3a192aWV3X3Njcm9sbHNfcHJv
Y2Vzcyk6CisgICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X25ldyk6CisgICAgICAgIChl
d2tfdmlld19wYWludF9jb250ZXh0X2ZyZWUpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9zYXZlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9yZSk6Cisg
ICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X2NsaXApOgorICAgICAgICAoZXdrX3ZpZXdf
cGFpbnRfY29udGV4dF9wYWludCk6CisgICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3Bh
aW50X2NvbnRlbnRzKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUpOgor
ICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUpOgorICAgICAgICAoZXdr
X3ZpZXdfcGFpbnQpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGVudHMpOgorICAgICAg
ICAoZXdrX3ZpZXdfcmVhZHkpOgorICAgICAgICAoZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRl
X3NldCk6CisgICAgICAgIChld2tfdmlld190aXRsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
dXJpX2NoYW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9zdGFydGVkKToKKyAgICAgICAg
KGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKToKKyAgICAgICAgKGV3a192aWV3X2xv
YWRfcHJvdmlzaW9uYWwpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9zaG93KToKKyAgICAgICAg
KGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZCk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9t
YWluX2ljb25fcmVjZWl2ZWQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9maW5pc2hlZCk6Cisg
ICAgICAgIChld2tfdmlld19sb2FkX2Vycm9yKToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfcHJv
Z3Jlc3NfY2hhbmdlZCk6CisgICAgICAgIChld2tfdmlld19yZXN0b3JlX3N0YXRlKToKKyAgICAg
ICAgKGV3a192aWV3X3dpbmRvd19jcmVhdGUpOgorICAgICAgICAoZXdrX3ZpZXdfd2luZG93X2Ns
b3NlKToKKyAgICAgICAgKGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4pOgorICAgICAgICAo
ZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQpOgorICAgICAgICAoZXdrX3ZpZXdfdG9vbGJh
cnNfdmlzaWJsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldCk6CisgICAgICAgIChld2tfdmlld19zdGF0dXNi
YXJfdGV4dF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldCk6
CisgICAgICAgIChld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbWVudWJhcl92
aXNpYmxlX2dldCk6CisgICAgICAgIChld2tfdmlld190b29sdGlwX3RleHRfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UpOgorICAgICAgICAoZXdrX3ZpZXdfcnVu
X2phdmFzY3JpcHRfYWxlcnQpOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29u
ZmlybSk6CisgICAgICAgIChld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQpOgorICAgICAg
ICAoZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KToKKyAgICAgICAgKGV3a192
aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKToKKyAgICAgICAgKGV3a192aWV3X3J1bl9vcGVu
X3BhbmVsKToKKyAgICAgICAgKGV3a192aWV3X3JlcGFpbnQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2Nyb2xsKToKKyAgICAgICAgKGV3a192aWV3X2NvcmVfcGFnZV9nZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfZnJhbWVfY3JlYXRlKToKKyAgICAgICAgKGV3a192aWV3X3BsdWdpbl9jcmVhdGUpOgor
ICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX2Rl
c3Ryb3kpOgorICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfc2VsZWN0ZWRfc2V0KToKKyAgICAgICAg
KGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QpOgorICAgICAgICAoZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfem9vbV9yYW5nZV9taW5fZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2VfbWF4
X2dldCk6CisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX3NldCk6CisgICAgICAgIChl
d2tfdmlld191c2VyX3NjYWxhYmxlX2dldCk6CisgICAgICAgIChld2tfdmlld19kZXZpY2VfcGl4
ZWxfcmF0aW9fZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25l
bXB0eV9sYXlvdXQpOgorICAgICAgICAoZXdrX3ZpZXdfZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2Fk
aW5nKToKKyAgICAgICAgKGV3a192aWV3X3RyYW5zaXRpb25fdG9fY29tbWl0ZWRfZm9yX25ld3Bh
Z2UpOgorICAgICAgICAoZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24pOgorICAg
ICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6CisgICAgICAgIChld2tfdmlld19jb250ZW50
c19zaXplX2NoYW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV9yZWN0X2dldCk6CisgICAg
ICAgIChld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
bmVlZF90b3VjaF9ldmVudHNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X21vZGVfc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X21vZGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2VkaXRvcl9jbGll
bnRfc2VsZWN0aW9uX2NoYW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9j
b250ZW50c19jaGFuZ2VkKToKKwogMjAxMS0wOS0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlbmFtZSBFTkFCTEUoREFUQUJBU0UpIHRvIEVOQUJMRShTUUxf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBjZTU1NWZkLi4wYjU0
YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTg4LDI2ICs4OCwyNiBAQCBz
dGF0aWMgY29uc3Qgc2l6ZV90IEVXS19WSUVXX1NDUk9MTFNfU0laRV9NQVhfRlJFRSA9IDMyOwog
ICogQGludGVybmFsCiAgKi8KIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKLSAgICBX
ZWJDb3JlOjpQYWdlICpwYWdlOwotICAgIFdlYkNvcmU6OlNldHRpbmdzICpwYWdlX3NldHRpbmdz
OwotICAgIFdlYkNvcmU6OkZyYW1lICptYWluX2ZyYW1lOworICAgIFdlYkNvcmU6OlBhZ2UqIHBh
Z2U7CisgICAgV2ViQ29yZTo6U2V0dGluZ3MqIHBhZ2Vfc2V0dGluZ3M7CisgICAgV2ViQ29yZTo6
RnJhbWUqIG1haW5fZnJhbWU7CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgdmlld3Bv
cnRfYXJndW1lbnRzOwotICAgIEV3a19IaXN0b3J5ICpoaXN0b3J5OworICAgIEV3a19IaXN0b3J5
KiBoaXN0b3J5OwogICAgIHN0cnVjdCB7CiAgICAgICAgIHZvaWQqIGNvbnRleHQ7CiAgICAgICAg
IEV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXJfQ2IgZnVuY3Rpb247CiAgICAgfSBjdXN0b21fcmVz
b3VyY2VfaGFuZGxlcjsKICAgICBzdHJ1Y3QgewogICAgICAgICBFd2tfTWVudSBtZW51OwotICAg
ICAgICBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQgKm1lbnVfY2xpZW50OworICAgICAgICBXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqIG1lbnVfY2xpZW50OwogICAgIH0gcG9wdXA7CiAgICAgc3Ry
dWN0IHsKLSAgICAgICAgRWluYV9SZWN0YW5nbGUgKmFycmF5OworICAgICAgICBFaW5hX1JlY3Rh
bmdsZSogYXJyYXk7CiAgICAgICAgIHNpemVfdCBjb3VudDsKICAgICAgICAgc2l6ZV90IGFsbG9j
YXRlZDsKICAgICB9IHJlcGFpbnRzOwogICAgIHN0cnVjdCB7Ci0gICAgICAgIEV3a19TY3JvbGxf
UmVxdWVzdCAqYXJyYXk7CisgICAgICAgIEV3a19TY3JvbGxfUmVxdWVzdCogYXJyYXk7CiAgICAg
ICAgIHNpemVfdCBjb3VudDsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRlZDsKICAgICB9IHNjcm9s
bHM7CkBAIC0xMTcsMjIgKzExNywyMiBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgICAgIEVpbmFfQm9vbCBuZWVkX3RvdWNoX2V2ZW50czoxOwogICAgIH0gZmxhZ3M7CiAg
ICAgc3RydWN0IHsKLSAgICAgICAgY29uc3QgY2hhciAqdXNlcl9hZ2VudDsKLSAgICAgICAgY29u
c3QgY2hhciAqdXNlcl9zdHlsZXNoZWV0OwotICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZ19k
ZWZhdWx0OwotICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZ19jdXN0b207Ci0gICAgICAgIGNv
bnN0IGNoYXIgKnRoZW1lOwotICAgICAgICBjb25zdCBjaGFyICpsb2NhbF9zdG9yYWdlX2RhdGFi
YXNlX3BhdGg7CisgICAgICAgIGNvbnN0IGNoYXIqIHVzZXJfYWdlbnQ7CisgICAgICAgIGNvbnN0
IGNoYXIqIHVzZXJfc3R5bGVzaGVldDsKKyAgICAgICAgY29uc3QgY2hhciogZW5jb2RpbmdfZGVm
YXVsdDsKKyAgICAgICAgY29uc3QgY2hhciogZW5jb2RpbmdfY3VzdG9tOworICAgICAgICBjb25z
dCBjaGFyKiB0aGVtZTsKKyAgICAgICAgY29uc3QgY2hhciogbG9jYWxfc3RvcmFnZV9kYXRhYmFz
ZV9wYXRoOwogICAgICAgICBpbnQgZm9udF9taW5pbXVtX3NpemU7CiAgICAgICAgIGludCBmb250
X21pbmltdW1fbG9naWNhbF9zaXplOwogICAgICAgICBpbnQgZm9udF9kZWZhdWx0X3NpemU7CiAg
ICAgICAgIGludCBmb250X21vbm9zcGFjZV9zaXplOwotICAgICAgICBjb25zdCBjaGFyICpmb250
X3N0YW5kYXJkOwotICAgICAgICBjb25zdCBjaGFyICpmb250X2N1cnNpdmU7Ci0gICAgICAgIGNv
bnN0IGNoYXIgKmZvbnRfbW9ub3NwYWNlOwotICAgICAgICBjb25zdCBjaGFyICpmb250X2ZhbnRh
c3k7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfc2VyaWY7Ci0gICAgICAgIGNvbnN0IGNoYXIg
KmZvbnRfc2Fuc19zZXJpZjsKKyAgICAgICAgY29uc3QgY2hhciogZm9udF9zdGFuZGFyZDsKKyAg
ICAgICAgY29uc3QgY2hhciogZm9udF9jdXJzaXZlOworICAgICAgICBjb25zdCBjaGFyKiBmb250
X21vbm9zcGFjZTsKKyAgICAgICAgY29uc3QgY2hhciogZm9udF9mYW50YXN5OworICAgICAgICBj
b25zdCBjaGFyKiBmb250X3NlcmlmOworICAgICAgICBjb25zdCBjaGFyKiBmb250X3NhbnNfc2Vy
aWY7CiAgICAgICAgIEVpbmFfQm9vbCBhdXRvX2xvYWRfaW1hZ2VzOjE7CiAgICAgICAgIEVpbmFf
Qm9vbCBhdXRvX3Nocmlua19pbWFnZXM6MTsKICAgICAgICAgRWluYV9Cb29sIGVuYWJsZV9hdXRv
X3Jlc2l6ZV93aW5kb3c6MTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1By
aXZhdGVfRGF0YSB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBFdmFzX0Nvb3JkIHgs
IHk7CiAgICAgICAgIH0gY2VudGVyOwotICAgICAgICBFY29yZV9BbmltYXRvciAqYW5pbWF0b3I7
CisgICAgICAgIEVjb3JlX0FuaW1hdG9yKiBhbmltYXRvcjsKICAgICB9IGFuaW1hdGVkX3pvb207
CiB9OwogCkBAIC0xODEsMTUgKzE4MSwxNSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSB7CiAjZWxzZQogI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNLKG8sIC4uLikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBj
b25zdCBjaGFyICpfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlwZV9nZXQobyk7ICAgICAgICAg
ICAgICAgXAotICAgICAgICBjb25zdCBFdmFzX1NtYXJ0ICpfdG1wX3MgPSBldmFzX29iamVjdF9z
bWFydF9zbWFydF9nZXQobyk7ICAgICAgXAorICAgICAgICBjb25zdCBjaGFyKiBfdG1wX290eXBl
ID0gZXZhc19vYmplY3RfdHlwZV9nZXQobyk7ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25z
dCBFdmFzX1NtYXJ0KiBfdG1wX3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAg
ICAgXAogICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAg
ICgiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAg
XAogICAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsg
ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzICpfdG1wX3NjID0gZXZhc19zbWFydF9jbGFz
c19nZXQoX3RtcF9zKTsgXAorICAgICAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBfdG1wX3Nj
ID0gZXZhc19zbWFydF9jbGFzc19nZXQoX3RtcF9zKTsgXAogICAgICAgICBpZiAoRUlOQV9VTkxJ
S0VMWSghX3RtcF9zYykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBv
YmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICNlbmRpZgogCiAjZGVmaW5lIEVXS19WSUVXX1NE
X0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfVmlld19TbWFydF9EYXRhICopZXZhc19vYmplY3Rf
c21hcnRfZGF0YV9nZXQobykKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBwdHIgPSAoRXdrX1Zp
ZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKIAogI2RlZmluZSBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwgLi4uKSAgICAgICAgICBcCiAgICAgRVdL
X1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgIFwKQEAgLTIx
OSw3ICsyMTksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgfQogCiAj
ZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwdHIpICAgICAgICAgICAgICBcCi0gICAgRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhICpwdHIgPSBzZC0+X3ByaXYKKyAgICBFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHB0ciA9IHNkLT5fcHJpdgogCiAjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHRyLCAuLi4pICAgICAgICAgICAgICAgXAogICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTIyOSw3ICsy
MjksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgICAgIHJldHVybiBf
X1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0K
IAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCkKIHsKICAgICBpZiAoc2QtPmNoYW5nZWQuYW55KQogICAgICAgICByZXR1cm47
CkBAIC0yMzcsMjEgKzIzNywyMSBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdl
ZChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICBldmFzX29iamVjdF9zbWFydF9jaGFuZ2Vk
KHNkLT5zZWxmKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfcmVwYWludHNfcmVz
aXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgc2l6ZV90IHNpemUpCitzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19yZXBhaW50c19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICB2b2lkICp0bXAgPSByZWFsbG9jKHByaXYtPnJlcGFp
bnRzLmFycmF5LCBzaXplICogc2l6ZW9mKEVpbmFfUmVjdGFuZ2xlKSk7CisgICAgdm9pZCogdG1w
ID0gcmVhbGxvYyhwcml2LT5yZXBhaW50cy5hcnJheSwgc2l6ZSAqIHNpemVvZihFaW5hX1JlY3Rh
bmdsZSkpOwogICAgIGlmICghdG1wKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgcmVh
bGxvYyByZXBhaW50cyBhcnJheSB0byAlenUgZWxlbWVudHMuIiwgc2l6ZSk7CiAgICAgICAgIHJl
dHVybiBFSU5BX0ZBTFNFOwogICAgIH0KICAgICBwcml2LT5yZXBhaW50cy5hbGxvY2F0ZWQgPSBz
aXplOwotICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0gKEVpbmFfUmVjdGFuZ2xlICopdG1wOwor
ICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0gKEVpbmFfUmVjdGFuZ2xlKil0bXA7CiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRfYWRkKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2
YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRf
YWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3Jk
IHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewotICAgIEVpbmFfUmVjdGFuZ2xlICpy
OworICAgIEVpbmFfUmVjdGFuZ2xlKiByOwogCiAgICAgLy8gZnByaW50ZihzdGRlcnIsICI+Pj4g
cmVwYWludCByZXF1ZXN0ZWQ6ICVkLCVkKyVkeCVkXG4iLCB4LCB5LCB3LCBoKTsKICAgICBpZiAo
cHJpdi0+cmVwYWludHMuYWxsb2NhdGVkID09IHByaXYtPnJlcGFpbnRzLmNvdW50KSB7CkBAIC0y
NzIsMTAgKzI3MiwxMCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YQogICAgIHItPncgPSB3Owog
ICAgIHItPmggPSBoOwogCi0gICAgREJHKCJhZGQgcmVwYWludCAlZCwgJWQrJWR4JWQiLCB4LCB5
LCB3LCBoKTsKKyAgICBEQkcoImFkZCByZXBhaW50ICVkLCVkKyVkeCVkIiwgeCwgeSwgdywgaCk7
CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50c19mbHVzaChFd2tfVmlld19Qcml2
YXRlX0RhdGEgKnByaXYpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2goRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogewogICAgIHByaXYtPnJlcGFpbnRzLmNvdW50ID0g
MDsKICAgICBpZiAocHJpdi0+cmVwYWludHMuYWxsb2NhdGVkIDw9IEVXS19WSUVXX1JFUEFJTlRT
X1NJWkVfTUFYX0ZSRUUpCkBAIC0yODMsMjIgKzI4MywyMiBAQCBzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfcmVwYWludHNfZmx1c2goRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQogICAgIF9ld2tf
dmlld19yZXBhaW50c19yZXNpemUocHJpdiwgRVdLX1ZJRVdfUkVQQUlOVFNfU0laRV9NQVhfRlJF
RSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Njcm9sbHNfcmVzaXplKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgc2l6ZV90IHNpemUpCitzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zY3JvbGxzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVf
dCBzaXplKQogewotICAgIHZvaWQgKnRtcCA9IHJlYWxsb2MocHJpdi0+c2Nyb2xscy5hcnJheSwg
c2l6ZSAqIHNpemVvZihFd2tfU2Nyb2xsX1JlcXVlc3QpKTsKKyAgICB2b2lkKiB0bXAgPSByZWFs
bG9jKHByaXYtPnNjcm9sbHMuYXJyYXksIHNpemUgKiBzaXplb2YoRXdrX1Njcm9sbF9SZXF1ZXN0
KSk7CiAgICAgaWYgKCF0bXApIHsKICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCByZWFsbG9j
IHNjcm9sbHMgYXJyYXkgdG8gJXp1IGVsZW1lbnRzLiIsIHNpemUpOwogICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPSBzaXplOwot
ICAgIHByaXYtPnNjcm9sbHMuYXJyYXkgPSAoRXdrX1Njcm9sbF9SZXF1ZXN0ICopdG1wOworICAg
IHByaXYtPnNjcm9sbHMuYXJyYXkgPSAoRXdrX1Njcm9sbF9SZXF1ZXN0Kil0bXA7CiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbF9hZGQoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBF
dmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIEVp
bmFfQm9vbCBtYWluX3Njcm9sbCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRkKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBF
aW5hX0Jvb2wgbWFpbl9zY3JvbGwpCiB7Ci0gICAgRXdrX1Njcm9sbF9SZXF1ZXN0ICpyOwotICAg
IEV3a19TY3JvbGxfUmVxdWVzdCAqcl9lbmQ7CisgICAgRXdrX1Njcm9sbF9SZXF1ZXN0KiByOwor
ICAgIEV3a19TY3JvbGxfUmVxdWVzdCogcl9lbmQ7CiAgICAgRXZhc19Db29yZCB4MiA9IHggKyB3
LCB5MiA9IHkgKyBoOwogCiAgICAgciA9IHByaXYtPnNjcm9sbHMuYXJyYXk7CkBAIC0zNDMsMTAg
KzM0MywxMCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsX2FkZChFd2tfVmlld19Qcml2
YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQgZHgsIEV2YQogICAgIHItPmR4ID0gZHg7CiAgICAg
ci0+ZHkgPSBkeTsKICAgICByLT5tYWluX3Njcm9sbCA9IG1haW5fc2Nyb2xsOwotICAgIERCRygi
YWRkIHNjcm9sbCBpbiByZWdpb246ICVkLCAlZCslZHglZCAlKzAzZCwgJSswM2QiLCB4LCB5LCB3
LCBoLCBkeCwgZHkpOworICAgIERCRygiYWRkIHNjcm9sbCBpbiByZWdpb246ICVkLCVkKyVkeCVk
ICUrMDNkLCUrMDNkIiwgeCwgeSwgdywgaCwgZHgsIGR5KTsKIAotICAgIEVpbmFfUmVjdGFuZ2xl
ICpwcjsKLSAgICBFaW5hX1JlY3RhbmdsZSAqcHJfZW5kOworICAgIEVpbmFfUmVjdGFuZ2xlKiBw
cjsKKyAgICBFaW5hX1JlY3RhbmdsZSogcHJfZW5kOwogICAgIHNpemVfdCBjb3VudDsKICAgICBw
ciA9IHByaXYtPnJlcGFpbnRzLmFycmF5OwogICAgIGNvdW50ID0gcHJpdi0+cmVwYWludHMuY291
bnQ7CkBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbF9hZGQo
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIGR4LCBFdmEKICAgICB9CiB9
CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSAqcHJpdikKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBwcml2LT5zY3JvbGxzLmNvdW50ID0gMDsKICAg
ICBpZiAocHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPD0gRVdLX1ZJRVdfU0NST0xMU19TSVpFX01B
WF9GUkVFKQpAQCAtMzY2LDEwICszNjYsMTAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9s
bHNfZmx1c2goRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQogfQogCiAvLyBEZWZhdWx0IEV2
ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4o
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHBy
aXYpOwotICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciAqZmMgPSBwcml2LT5wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKTsKKyAgICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXIqIGZjID0gcHJpdi0+
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCk7CiAgICAgREJHKCJvPSVwLCBmYz0lcCIsIHNkLT5zZWxm
LCBmYyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGZjLCBFSU5BX0ZBTFNF
KTsKIApAQCAtMzc4LDEwICszNzgsMTAgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfZm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgcmV0dXJuIEVJTkFfVFJV
RTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9j
dXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwcml2KTsKLSAgICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXIgKmZjID0gcHJpdi0+cGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCk7CisgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9
IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpOwogICAgIERCRygibz0lcCwgZmM9JXAiLCBz
ZC0+c2VsZiwgZmMpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmYywgRUlO
QV9GQUxTRSk7CiAKQEAgLTM5MCwyOSArMzkwLDI5IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93
aGVlbChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVl
bCAqZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCiB7
CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX3doZWVsKHNkLT5tYWluX2ZyYW1lLCBl
dik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24oRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpCitz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQogewogICAgIHJldHVy
biBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKHNkLT5tYWluX2ZyYW1lLCBldik7CiB9CiAKLXN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwICpldikKK3N0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBF
dmFzX0V2ZW50X01vdXNlX1VwKiBldikKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfbW91
c2VfdXAoc2QtPm1haW5fZnJhbWUsIGV2KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc21hcnRfbW91c2VfbW92ZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9Nb3ZlICpldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21v
dXNlX21vdmUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
TW92ZSogZXYpCiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUoc2QtPm1h
aW5fZnJhbWUsIGV2KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5
X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24g
KmV2KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQogewotICAgIEV2
YXNfT2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KHNkLT5zZWxmKTsK
KyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChzZC0+
c2VsZik7CiAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBmcmFtZSA9IHNkLT5tYWluX2ZyYW1l
OwpAQCAtNDIwLDkgKzQyMCw5IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tl
eV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2CiAgICAgcmV0dXJu
IGV3a19mcmFtZV9mZWVkX2tleV9kb3duKGZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3Qg
RXZhc19FdmVudF9LZXlfVXAgKmV2KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRf
a2V5X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCog
ZXYpCiB7Ci0gICAgRXZhc19PYmplY3QgKmZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9n
ZXQoc2QtPnNlbGYpOworICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2Zv
Y3VzZWRfZ2V0KHNkLT5zZWxmKTsKIAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIGZyYW1lID0g
c2QtPm1haW5fZnJhbWU7CkBAIC00MzAsMzEgKzQzMCwzMSBAQCBzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNf
RXZlbgogICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9rZXlfdXAoZnJhbWUsIGV2KTsKIH0KIAot
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZF9jb25zb2xlX21lc3NhZ2UoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVt
YmVyLCBjb25zdCBjaGFyICpzb3VyY2VJRCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9h
ZGRfY29uc29sZV9tZXNzYWdlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBjaGFyKiBt
ZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hhciogc291cmNlSUQpCiB7
CiAgICAgSU5GKCJjb25zb2xlIG1lc3NhZ2U6ICVzIEAlZDogJXNcbiIsIHNvdXJjZUlELCBsaW5l
TnVtYmVyLCBtZXNzYWdlKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3J1bl9q
YXZhc2NyaXB0X2FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX09iamVjdCAqZnJh
bWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcnVu
X2phdmFzY3JpcHRfYWxlcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV2YXNfT2JqZWN0KiBm
cmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBJTkYoImphdmFzY3JpcHQgYWxlcnQ6
ICVzXG4iLCBtZXNzYWdlKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRf
cnVuX2phdmFzY3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19PYmpl
Y3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhKiBzZCwg
RXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIElORigiamF2
YXNjcmlwdCBjb25maXJtOiAlcyIsIG1lc3NhZ2UpOwogICAgIElORigiamF2YXNjcmlwdCBjb25m
aXJtIChIQVJEIENPREVEKT8gWUVTIik7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQog
ewogICAgIElORigic2hvdWxkIGludGVycnVwdCBqYXZhc2NyaXB0P1xuIgogICAgICAgICAgICAg
Ilx0KEhBUkQgQ09ERUQpIE5PIik7CiAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiB9CiAKLXN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdl
LCBjb25zdCBjaGFyICpkZWZhdWx0VmFsdWUsIGNoYXIgKip2YWx1ZSkKK3N0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9E
YXRhKiBzZCwgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBj
aGFyKiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2YWx1ZSkKIHsKICAgICAqdmFsdWUgPSBzdHJkdXAo
InRlc3QiKTsKICAgICBFaW5hX0Jvb2wgcmV0ID0gRUlOQV9UUlVFOwpAQCAtNDY4LDc5ICs0Njgs
NzkgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJv
bXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLAogfQogCiAvLyBFdmVudCBIYW5kbGluZyAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLXN0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09i
amVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1
c19pbih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5m
bykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRh
ICopZGF0YTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9E
YXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmZvY3VzX2luKTsKICAgICBzZC0+
YXBpLT5mb2N1c19pbihzZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19v
dXQodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8p
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQqIGRhdGEsIEV2YXMqIGUs
IEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRhOworICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaS0+Zm9jdXNfb3V0KTsKICAgICBzZC0+YXBpLT5mb2N1c19vdXQoc2QpOwogfQog
Ci1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwodm9pZCAqZGF0YSwgRXZhcyAq
ZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fbW91c2Vfd2hlZWwodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZv
aWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqZXYgPSAoRXZh
c19FdmVudF9Nb3VzZV9XaGVlbCAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7CisgICAgRXZhc19FdmVudF9Nb3Vz
ZV9XaGVlbCogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9XaGVlbCopZXZlbnRfaW5mbzsKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3doZWVsKTsKICAgICBzZC0+YXBpLT5tb3VzZV93
aGVlbChzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2
b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2
YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2Vf
RG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duICopZXZlbnRfaW5mbzsKLSAgICBFd2tf
Vmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAgICBF
dmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biAqKWV2ZW50
X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0
YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9kb3duKTsKICAgICBzZC0+
YXBpLT5tb3VzZV9kb3duKHNkLCBldik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9t
b3VzZV91cCh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRf
aW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkKiBkYXRhLCBFdmFz
KiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50
X01vdXNlX1VwICpldiA9IChFdmFzX0V2ZW50X01vdXNlX1VwICopZXZlbnRfaW5mbzsKLSAgICBF
d2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAg
ICBFdmFzX0V2ZW50X01vdXNlX1VwKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1VwKilldmVudF9p
bmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEq
KWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfdXApOwogICAgIHNkLT5hcGkt
Pm1vdXNlX3VwKHNkLCBldik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9t
b3ZlKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9pbmZv
KQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9pZCogZGF0YSwgRXZhcyog
ZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9N
b3VzZV9Nb3ZlICpldiA9IChFdmFzX0V2ZW50X01vdXNlX01vdmUgKilldmVudF9pbmZvOwotICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRhOwor
ICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKill
dmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfbW92ZSk7CiAgICAg
c2QtPmFwaS0+bW91c2VfbW92ZShzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
b25fa2V5X2Rvd24odm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2
ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19F
dmVudF9LZXlfRG93biAqZXYgPSAoRXZhc19FdmVudF9LZXlfRG93biAqKWV2ZW50X2luZm87Ci0g
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7
CisgICAgRXZhc19FdmVudF9LZXlfRG93biogZXYgPSAoRXZhc19FdmVudF9LZXlfRG93biopZXZl
bnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9E
YXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV9kb3duKTsKICAgICBzZC0+
YXBpLT5rZXlfZG93bihzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5
X3VwKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9pbmZv
KQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBF
dmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X0tleV9V
cCAqZXYgPSAoRXZhc19FdmVudF9LZXlfVXAgKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRhOworICAgIEV2YXNfRXZl
bnRfS2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tleV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNkLT5hcGktPmtleV91cCk7CiAgICAgc2QtPmFwaS0+a2V5X3VwKHNkLCBldik7
CiB9CiAKLXN0YXRpYyBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IF9ld2tfdmlld19j
b3JlX2ZyYW1lX25ldyhFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpwcml2LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQgKm93bmVyKQorc3RhdGlj
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIpCiB7Ci0gICAgV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmwgKmZsYyA9IG5ldyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bChzZC0+c2VsZik7CisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGZsYyA9IG5l
dyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbChzZC0+c2VsZik7CiAgICAgaWYgKCFmbGMp
IHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgZnJhbWUgbG9hZGVyIGNsaWVu
dC4iKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NTIsMTAgKzU1MiwxMCBAQCBzdGF0aWMgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcoRXdr
X1ZpZXdfU21hcnRfRAogCiBzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZB
U19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKLXN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEg
Kl9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyBFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRh
KiBzZCkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYgPQotICAgICAgICAoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhICopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0Rh
dGEpKTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPQorICAgICAgICAoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkp
OwogICAgIEF0b21pY1N0cmluZyBzOwogICAgIFdlYkNvcmU6OktVUkwgdXJsOwogCkBAIC02ODks
NyArNjg5LDcgQEAgZXJyb3JfcGFnZToKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQg
X2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiB7CiAg
ICAgaWYgKCFwcml2KQogICAgICAgICByZXR1cm47CkBAIC03MjAsMTYgKzcyMCwxNiBAQCBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQog
ICAgIGZyZWUocHJpdik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZh
c19PYmplY3QgKm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0
KiBvKQogewotICAgIGNvbnN0IEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19vYmplY3Rfc21hcnRf
c21hcnRfZ2V0KG8pOwotICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MgKnNjID0gZXZhc19zbWFy
dF9jbGFzc19nZXQoc21hcnQpOwotICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkg
PSAoY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKilzYzsKKyAgICBjb25zdCBFdmFzX1NtYXJ0
KiBzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsKKyAgICBjb25zdCBFdmFz
X1NtYXJ0X0NsYXNzKiBzYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KHNtYXJ0KTsKKyAgICBjb25z
dCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gKGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNz
KilzYzsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcGktPmJhY2tpbmdfc3RvcmVf
YWRkKTsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogCiAgICAgaWYgKCFzZCkgewotICAg
ICAgICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopY2FsbG9jKDEsIHNpemVvZihFd2tfVmll
d19TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWNhbGxv
YygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOwogICAgICAgICBpZiAoIXNkKSB7CiAg
ICAgICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3X1NtYXJ0X0Rh
dGEiKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgwMCwxNyArODAwLDE3IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiAjdW5kZWYgQ09OTkVDVAog
fQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0ICpvKQorc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVQobywgc2QpOwotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiA9IHNk
ID8gc2QtPl9wcml2IDogMDsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBzZCA/
IHNkLT5fcHJpdiA6IDA7CiAKICAgICBld2tfdmlld19zdG9wKG8pOwogICAgIF9wYXJlbnRfc2Mu
ZGVsKG8pOwogICAgIF9ld2tfdmlld19wcml2X2RlbChwcml2KTsKIH0KIAotc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFz
X0Nvb3JkIGgpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0
KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkKTsKIApAQCAtODIxLDE0ICs4MjEsMTQgQEAgc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nv
b3JkIGgpCiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCi1zdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHkpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCog
bywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCk7CiAgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX1RSVUU7CiAg
ICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVQo
bywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTg1MCw3ICs4NTAs
NyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0ICpv
KQogICAgICAgICBwcml2LT5zY3JvbGxzLmNvdW50LCBwcml2LT5yZXBhaW50cy5jb3VudCk7CiAK
ICAgICBpZiAoc2QtPmNoYW5nZWQuc2l6ZSAmJiAoKHcgIT0gc2QtPnZpZXcudykgfHwgKGggIT0g
c2QtPnZpZXcuaCkpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHByaXYt
Pm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0g
cHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgICAgICBpZiAodmlldykgewogICAgICAgICAg
ICAgdmlldy0+cmVzaXplKHcsIGgpOwogICAgICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsK
QEAgLTg4OCw3ICs4ODgsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KEV2YXNfT2JqZWN0ICpvKQogICAgIF9ld2tfdmlld19yZXBhaW50c19mbHVzaChwcml2KTsKIAog
ICAgIGlmIChzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1l
VmlldyAqdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgV2ViQ29yZTo6
RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgICAgICB2aWV3
LT5mcmFtZVJlY3RzQ2hhbmdlZCgpOyAvKiBmb3JjZSB0cmVlIHRvIGdldCBwb3NpdGlvbiBmcm9t
IHJvb3QgKi8KICAgICAgICAgc2QtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IEVJTkFfRkFMU0U7CiAg
ICAgfQpAQCAtOTExLDEyICs5MTEsMTIgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2hp
ZGUoRXZhc19PYmplY3QgKm8pCiAgICAgZXZhc19vYmplY3RfaGlkZShzZC0+YmFja2luZ19zdG9y
ZSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6
ZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgaW50IHcsIGludCBoKQorc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
LCBpbnQgdywgaW50IGgpCiB7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCitzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgZmxv
YXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBkb3VibGUgcHgs
IHB5OwogICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKQEAgLTk0NCw0MCArOTQ0LDQwIEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBmbG9hdCB6b29tLCBFCiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CiAgICAgX2V3a192aWV3X3Jl
cGFpbnRzX2ZsdXNoKHByaXYpOwogICAgIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKHByaXYpOwog
fQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbihF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNf
Q29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQorc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWdpb24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxv
YXQgem9vbSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzZD0lcCBhcmVh
PSVkLCVkKyVkeCVkLCB6b29tPSVmIiwKICAgICAgICAgc2QsIHgsIHksIHcsIGgsIHpvb20pOwog
ICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
dW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCwg
dW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pCiB7CiAgICAgV1JOKCJub3Qgc3VwcG9ydGVkIGJ5
IGVuZ2luZS4gc2Q9JXAsIG49JXUgem9vbT0lZiIsCiAgICAgICAgIHNkLCBuLCB6b29tKTsKICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3By
ZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQog
ewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNkPSVwIiwgc2QpOwogfQogCi1z
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0
b3AoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9v
bS5zdGFydCA9IDAuMDsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmVuZCA9IDAuMDsKICAg
ICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPSAwLjA7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CiAgICAgZWNv
cmVfYW5pbWF0b3JfZGVsKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpOwpAQCAtOTg2LDcg
Kzk4Niw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChFd2tf
Vmlld19TbWFydF9EYXRhICpzZCkKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KHNkLT5zZWxmLCAiem9vbSxhbmltYXRlZCxlbmQiLCAwKTsKIH0KIAotc3RhdGljIGZsb2F0IF9l
d2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2
KQorc3RhdGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKiBwcml2KQogewogICAgIGRvdWJsZSBub3cgPSBlY29yZV9sb29wX3RpbWVf
Z2V0KCk7CiAgICAgZG91YmxlIGRlbHRhID0gbm93IC0gcHJpdi0+YW5pbWF0ZWRfem9vbS50aW1l
LnN0YXJ0OwpAQCAtMTAwMiw5ICsxMDAyLDkgQEAgc3RhdGljIGZsb2F0IF9ld2tfdmlld196b29t
X2FuaW1hdGVkX2N1cnJlbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQogICAgICAgICAg
ICAgKyBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQpOwogfQogCi1zdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQgKmRhdGEpCitzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQqIGRhdGEpCiB7Ci0gICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBF
dmFzX0Nvb3JkIGN4LCBjeTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CiAgICAg
ZG91YmxlIG5vdyA9IGVjb3JlX2xvb3BfdGltZV9nZXQoKTsKQEAgLTEwMzEsNyArMTAzMSw3IEBA
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2Iodm9pZCAqZGF0YSkK
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9h
bmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKICAgICBpZiAocHJpdi0+
YW5pbWF0ZWRfem9vbS5hbmltYXRvcikKQEAgLTEwNDAsNyArMTA0MCw3IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFydChFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
ICAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiLCBzZCk7CiB9CiAKLXN0YXRpYyBX
ZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNf
Y29tcHV0ZShjb25zdCBFdmFzX09iamVjdCAqbykKK3N0YXRpYyBXZWJDb3JlOjpWaWV3cG9ydEF0
dHJpYnV0ZXMgX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShjb25zdCBFdmFz
X09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTEwNzIsNyArMTA3Miw3IEBAIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X2VuYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
CiAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19iYXNlX3Nt
YXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpKQorRWluYV9Cb29sIGV3a192aWV3X2Jh
c2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiB7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGFwaSwgRUlOQV9GQUxTRSk7CiAKQEAgLTExMjMsMTIgKzEx
MjMsMTIgQEAgRWluYV9Cb29sIGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0
X0NsYXNzICphcGkpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotdm9pZCBld2tfdmlld19m
aXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19D
b29yZCBoKQordm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhc19PYmplY3Qq
IG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
dik7CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52
aWV3KCk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+
dmlldygpOwogICAgIGlmICh3IDw9IDAgJiYgaCA8PSAwKSB7CiAgICAgICAgIGlmICghdmlldy0+
dXNlRml4ZWRMYXlvdXQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNDcsNyArMTE0Nyw3
IEBAIHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
dmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKICAgICB2aWV3LT5mb3JjZUxheW91dCgpOwogfQog
Ci12b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAq
bywgRXZhc19Db29yZCAqdywgRXZhc19Db29yZCAqaCkKK3ZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5
b3V0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkKiB3LCBFdmFzX0Nv
b3JkKiBoKQogewogICAgIGlmICh3KQogICAgICAgICAqdyA9IDA7CkBAIC0xMTY1LDE0ICsxMTY1
LDE0IEBAIHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX0Nvb3JkICp3LCBFdmFzX0NvCiAgICAgfQogfQogCi12b2lkIGV3a192aWV3
X3RoZW1lX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0aCkKK3ZvaWQgZXdrX3Zp
ZXdfdGhlbWVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBwYXRoKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdik7CiAgICAgaWYgKCFlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnBy
aXYtPnNldHRpbmdzLnRoZW1lLCBwYXRoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29y
ZTo6RnJhbWVWaWV3ICp2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOworICAgIFdlYkNv
cmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAo
dmlldykgewogICAgICAgICB2aWV3LT5zZXRFZGplVGhlbWUoV1RGOjpTdHJpbmcocGF0aCkpOwog
ICAgICAgICBwcml2LT5wYWdlLT50aGVtZSgpLT50aGVtZUNoYW5nZWQoKTsKQEAgLTExODAsMjUg
KzExODAsMjUgQEAgdm9pZCBld2tfdmlld190aGVtZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKnBhdGgpCiAKIH0KIAotY29uc3QgY2hhciogZXdrX3ZpZXdfdGhlbWVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfdGhlbWVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0
dXJuIHByaXYtPnNldHRpbmdzLnRoZW1lOwogfQogCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfZnJh
bWVfbWFpbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFdmFzX09iamVjdCogZXdrX3ZpZXdf
ZnJhbWVfbWFpbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIHNkLT5tYWluX2ZyYW1lOwogfQog
Ci1FdmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pCitFdmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKIAotICAgIFdl
YkNvcmU6OkZyYW1lICpjb3JlID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRGcmFtZSgpOworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlID0gcHJpdi0+cGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpOwogICAgIGlmICghY29yZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTEyMDgsMzEgKzEyMDgsMzEgQEAgRXZhc19PYmplY3QqIGV3a192aWV3X2Zy
YW1lX2ZvY3VzZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBjbGllbnQt
PndlYkZyYW1lKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICp1cmkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3NldChFdmFzX09i
amVjdCogbywgY29uc3QgY2hhciogdXJpKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfdXJpX3NldChzZC0+
bWFpbl9mcmFtZSwgdXJpKTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdfdXJpX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7
CiAgICAgcmV0dXJuIGV3a19mcmFtZV91cmlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotY29u
c3QgY2hhciAqZXdrX3ZpZXdfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3Qg
Y2hhciogZXdrX3ZpZXdfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIHJldHVybiBld2tfZnJhbWVf
dGl0bGVfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2VkaXRh
YmxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19lZGl0YWJs
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9lZGl0YWJsZV9n
ZXQoc2QtPm1haW5fZnJhbWUpOwogfQogCi12b2lkIGV3a192aWV3X2JnX2NvbG9yX3NldChFdmFz
X09iamVjdCAqbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCit2b2lkIGV3a192aWV3X2Jn
X2NvbG9yX3NldChFdmFzX09iamVjdCogbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2b2lkIGV3a192
aWV3X2JnX2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50
IGEpCiAKICAgICBzZC0+YXBpLT5iZ19jb2xvcl9zZXQoc2QsIHIsIGcsIGIsIGEpOwogCi0gICAg
V2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3ID0gc2QtPl9wcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7
CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc2QtPl9wcml2LT5tYWluX2ZyYW1lLT52
aWV3KCk7CiAgICAgaWYgKHZpZXcpIHsKICAgICAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3I7CiAK
QEAgLTEyODIsNyArMTI4Miw3IEBAIHZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKICAgICB9CiB9CiAKLXZvaWQgZXdr
X3ZpZXdfYmdfY29sb3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKnIsIGludCAqZywg
aW50ICpiLCBpbnQgKmEpCit2b2lkIGV3a192aWV3X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09i
amVjdCogbywgaW50KiByLCBpbnQqIGcsIGludCogYiwgaW50KiBhKQogewogICAgIGlmIChyKQog
ICAgICAgICAqciA9IDA7CkBAIC0xMzAzLDcgKzEzMDMsNyBAQCB2b2lkIGV3a192aWV3X2JnX2Nv
bG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQgKmcsIGludCAqYiwgaW50
ICphKQogICAgICAgICAqYSA9IHNkLT5iZ19jb2xvci5hOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywg
RWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWluYV9Cb29sIHdy
YXApCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QqIG8s
IGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wg
Zm9yd2FyZCwgRWluYV9Cb29sIHdyYXApCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTEzMzUsNyArMTMzNSw3IEBAIEVpbmFfQm9vbCBld2tf
dmlld190ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5n
LCBFaW5hX0JvCiAgKgogICogQHJldHVybiBudW1iZXIgb2YgbWF0Y2hlcy4KICAqLwotdW5zaWdu
ZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBj
aGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdo
dCwgdW5zaWduZWQgaW50IGxpbWl0KQordW5zaWduZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hl
c19tYXJrKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNl
X3NlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0xMzUwLDcgKzEzNTAsNyBAQCB1bnNp
Z25lZCBpbnQgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKnN0cmluZywgRWluYQogICAgIHJldHVybiBwcml2LT5wYWdlLT5tYXJrQWxsTWF0Y2hl
c0ZvclRleHQoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLCBzZW5zaXRpdmUsIGhpZ2hsaWdodCwg
bGltaXQpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3VubWFya19hbGwo
RXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3VubWFya19h
bGwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKQEAgLTEzNTgsMjUgKzEzNTgsMjUgQEAgRWluYV9Cb29sIGV3a192aWV3
X3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBFSU5B
X1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhpZ2hsaWdodCkKK0VpbmFfQm9vbCBld2tfdmll
d190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGhp
Z2hsaWdodCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KHNk
LT5tYWluX2ZyYW1lLCBoaWdobGlnaHQpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9t
YXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
cmV0dXJuIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChzZC0+bWFpbl9mcmFt
ZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19lZGl0YWJsZV9zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCBlZGl0YWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19lZGl0YWJsZV9zZXQoRXZh
c19PYmplY3QqIG8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2VkaXRh
YmxlX3NldChzZC0+bWFpbl9mcmFtZSwgZWRpdGFibGUpOwogfQogCi1jaGFyICpld2tfdmlld19z
ZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY2hhciogZXdrX3ZpZXdfc2VsZWN0
aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIDApOwpAQCAtMTM4NiwxMiArMTM4NiwxMiBAQCBjaGFyICpld2tfdmlld19zZWxlY3Rpb25f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBzdHJkdXAocy5kYXRhKCkpOwog
fQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChFd2tfVmlld19Q
cml2YXRlX0RhdGEgKnByaXYsIGNvbnN0IGNoYXIgKmNvbW1hbmQsIGNvbnN0IGNoYXIgKnZhbHVl
ID0gMCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X2VkaXRvcl9jb21tYW5kKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3QgY2hhciogdmFs
dWUgPSAwKQogewogICAgIHJldHVybiBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKFdURjo6U3RyaW5nOjpmcm9tVVRG
OChjb21tYW5kKSkuZXhlY3V0ZSh2YWx1ZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19leGVj
dXRlX2VkaXRvcl9jb21tYW5kKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfRWRpdG9yX0NvbW1h
bmQgY29tbWFuZCwgY29uc3QgY2hhciAqdmFsdWUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZXhlY3V0
ZV9lZGl0b3JfY29tbWFuZChFdmFzX09iamVjdCogbywgY29uc3QgRXdrX0VkaXRvcl9Db21tYW5k
IGNvbW1hbmQsIGNvbnN0IGNoYXIqIHZhbHVlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xNDE4LDcgKzE0MTgsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfZXhlY3V0ZV9lZGl0b3JfY29tbWFuZChFdmFzX09iamVjdCAqbywgY29uc3QgRXdr
X0VkaXRvcl9Db21tYQogICAgIH0KIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRfbWVu
dV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rv
d24gKmV2KQorRWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2
YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQogewogI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwpAQCAtMTQyNiw3ICsxNDI2LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2Nv
bnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50
X00KICAgICBFaW5hX0Jvb2wgbW91c2VfcHJlc3NfaGFuZGxlZCA9IEVJTkFfRkFMU0U7CiAKICAg
ICBwcml2LT5wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgp
OwotICAgIFdlYkNvcmU6OkZyYW1lICptYWluX2ZyYW1lID0gcHJpdi0+cGFnZS0+bWFpbkZyYW1l
KCk7CisgICAgV2ViQ29yZTo6RnJhbWUqIG1haW5fZnJhbWUgPSBwcml2LT5wYWdlLT5tYWluRnJh
bWUoKTsKICAgICBFdmFzX0Nvb3JkIHgsIHk7CiAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0
KHNkLT5zZWxmLCAmeCwgJnksIDAsIDApOwogCkBAIC0xNDU0LDc1ICsxNDU0LDc1IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09iamVjdCAqbywg
Y29uc3QgRXZhc19FdmVudF9NCiAjZW5kaWYKIH0KIAotZG91YmxlIGV3a192aWV3X2xvYWRfcHJv
Z3Jlc3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorZG91YmxlIGV3a192aWV3X2xvYWRfcHJv
Z3Jlc3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIC0xLjApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgLTEuMCk7CiAgICAgcmV0dXJuIHByaXYtPnBhZ2UtPnByb2dyZXNzKCktPmVzdGlt
YXRlZFByb2dyZXNzKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0
ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3
a19mcmFtZV9zdG9wKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Jl
bG9hZChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19yZWxvYWQoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9yZWxvYWQoc2QtPm1haW5fZnJhbWUpOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9y
ZWxvYWRfZnVsbChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19iYWNr
KEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2JhY2soRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgcmV0dXJuIGV3a19mcmFtZV9iYWNrKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9Cb29s
IGV3a192aWV3X2ZvcndhcmQoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9y
d2FyZChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZvcndhcmQoc2QtPm1haW5f
ZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGUoRXZhc19PYmplY3QgKm8s
IGludCBzdGVwcykKK0VpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZShFdmFzX09iamVjdCogbywg
aW50IHN0ZXBzKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGUoc2QtPm1haW5fZnJhbWUsIHN0
ZXBzKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZhc19PYmplY3Qg
Km8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFja19wb3NzaWJsZShFdmFzX09iamVjdCogbykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBy
ZXR1cm4gZXdrX2ZyYW1lX2JhY2tfcG9zc2libGUoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCAqbykKK0VpbmFfQm9v
bCBld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tf
ZnJhbWVfZm9yd2FyZF9wb3NzaWJsZShzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBzKQorRWlu
YV9Cb29sIGV3a192aWV3X25hdmlnYXRlX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBvLCBpbnQgc3Rl
cHMpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CiAgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShzZC0+bWFpbl9mcmFtZSwg
c3RlcHMpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX2dldChj
b25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9y
d2FyZExpc3RJbXBsKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpLT5lbmFibGVkKCk7
CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVf
c2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xNTMwLDcgKzE1MzAsNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgZW5hYmxlKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUV3a19IaXN0b3J5KiBl
d2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0V3a19IaXN0b3J5KiBl
d2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMTU0MSwxMyArMTU0MSwxMyBAQCBFd2tfSGlzdG9yeSog
ZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHBy
aXYtPmhpc3Rvcnk7CiB9CiAKLWZsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQorZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7CiAgICAgcmV0dXJu
IGV3a19mcmFtZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tf
dmlld196b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwg
RXZhc19Db29yZCBjeSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCog
bywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVChzZCwgcHJpdik7CkBAIC0xNTczLDEzICsxNTczLDEzIEBAIEVpbmFfQm9vbCBld2tf
dmlld196b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwg
RXZhc19Db29yCiAgICAgcmV0dXJuIHNkLT5hcGktPnpvb21fc2V0KHNkLCB6b29tLCBjeCwgY3kp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9z
Y2FsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT56b29tX3dlYWtfc21v
b3RoX3NjYWxlOwogfQogCi12b2lkIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQordm9pZCBld2tfdmlld196
b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNtb290
aF9zY2FsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBz
bW9vdGhfc2NhbGUgPSAhIXNtb290aF9zY2FsZTsKQEAgLTE1OTEsNyArMTU5MSw3IEBAIHZvaWQg
ZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBzbW9vdGhfc2NhbGUpCiAgICAgc2QtPmFwaS0+em9vbV93ZWFrX3Ntb290aF9zY2FsZV9z
ZXQoc2QsIHNtb290aF9zY2FsZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtf
c2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3Jk
IGN5KQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIG8sIGZs
b2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVQoc2QsIHByaXYpOwpAQCAtMTYxOSwzNSArMTYxOSwzNSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
em9vbV93ZWFrX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwg
RXZhcwogICAgIHJldHVybiBzZC0+YXBpLT56b29tX3dlYWtfc2V0KHNkLCB6b29tLCBjeCwgY3kp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0YXJ0KEV2YXNf
T2JqZWN0ICpvLCBmbG9hdCB6b29tKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
bWFya19zdGFydChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBzZC0+YW5pbWF0ZWRfem9v
bS56b29tLnN0YXJ0ID0gem9vbTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZChFdmFzX09iamVjdCAqbywgZmxvYXQg
em9vbSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKEV2YXNfT2Jq
ZWN0KiBvLCBmbG9hdCB6b29tKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uZW5kID0gem9vbTsK
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmplY3QqIG8sIGZsb2F0
IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50ID0gem9vbTsKICAgICByZXR1
cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJr
X3N0b3AoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9t
YXJrX3N0b3AoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19z
dG9wKHNkKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
em9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0
aW9uLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQorRWluYV9Cb29sIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJhdGlv
biwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBkb3VibGUgbm93OwogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwpAQCAtMTY5Niwx
OSArMTY5NiwxOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19P
YmplY3QgKm8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLAogICAgIHJldHVybiBFSU5BX1RS
VUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KHNk
LT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
em9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgc2V0dGluZykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBy
ZXR1cm4gZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChzZC0+bWFpbl9mcmFtZSwgc2V0dGlu
Zyk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVj
dCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29y
ZCBoLCBmbG9hdCB6b29tKQorRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKEV2
YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE3NTEsNyArMTc1MSw3IEBAIEVpbmFfQm9vbCBld2tf
dmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHksCiAgICAgcmV0dXJuIHNkLT5hcGktPnByZV9yZW5kZXJfcmVnaW9uKHNkLCB4LCB5
LCB3LCBoLCB6b29tKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRp
dmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbikKK0VpbmFfQm9vbCBld2tf
dmlld19wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFdmFzX09iamVjdCogbywgdW5zaWduZWQg
aW50IG4pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKQEAgLTE3NzIsMzUgKzE3NzIsMzUgQEAgdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHByaXYtPmltaDsKIH0KIAotdm9pZCBl
d2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdf
cHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aS0+cHJlX3JlbmRlcl9jYW5jZWwpOwogICAgIHNkLT5hcGktPnByZV9yZW5kZXJfY2FuY2VsKHNk
KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2VuYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmpl
Y3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZW5hYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaS0+ZW5hYmxlX3Jl
bmRlciwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT5hcGktPmVuYWJsZV9yZW5kZXIoc2Qp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZGlzYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmpl
Y3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZGlzYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPmRpc2FibGVf
cmVuZGVyLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gc2QtPmFwaS0+ZGlzYWJsZV9yZW5kZXIo
c2QpOwogfQogCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ191c2VyX2Fn
ZW50X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy51c2VyX2FnZW50OwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X3NldChFdmFzX09iamVjdCAqbywgY29u
c3QgY2hhciAqdXNlcl9hZ2VudCkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJfYWdl
bnRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB1c2VyX2FnZW50KQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xODExLDE0ICsx
ODExLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNf
T2JqZWN0ICpvLCBjb25zdCBjaGFyICp1c2VyX2FnZW50CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0
eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnVzZXJfc3R5bGVzaGVldDsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqdXJpKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
dXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXJpKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xODI5
LDE0ICsxODI5LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVl
dF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVyaSkKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9f
bG9hZF9pbWFnZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRp
bmdzLmF1dG9fbG9hZF9pbWFnZXM7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1
dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQor
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmpl
Y3QqIG8sIEVpbmFfQm9vbCBhdXRvbWF0aWMpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE4NDgsMTQgKzE4NDgsMTQgQEAgRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBhdXRvbWEKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5hdXRvX3Nocmlua19pbWFn
ZXM7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhdXRvbWF0aWMpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jv
b2wgYXV0b21hdGljKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlO
QV9GQUxTRSk7CkBAIC0xODY3LDE0ICsxODY3LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhdXRv
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
ZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFibGVfYXV0b19yZXNp
emVfd2luZG93OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19y
ZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHJlc2l6YWJsZSkKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KEV2
YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgcmVzaXphYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xODgyLDE0ICsxODgyLDE0IEBAIEVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFaW5hX0JvCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
RUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZV9zY3JpcHRzOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfc2NyaXB0c19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE5MDEs
MTQgKzE5MDEsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogICAgIHJldHVybiBFSU5BX1RS
VUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9w
bHVnaW5zX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5l
bmFibGVfcGx1Z2luczsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3Bs
dWdpbnNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jv
b2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CkBAIC0xOTIwLDE0ICsxOTIwLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKICAg
ICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfZnJhbWVfZmxhdHRlbmluZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZB
TFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmc7
CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5n
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nX3NldChFdmFzX09iamVjdCogbywgRWlu
YV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwpAQCAtMTkzOSwxNCArMTkzOSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X3NjcmlwdHNfd2luZG93X29wZW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc2NyaXB0c193aW5kb3dfb3BlbjsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBhbGxvdykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Nj
cmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYWxsb3cpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE5
NTgsMTQgKzE5NTgsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193aW5k
b3dfb3Blbl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhbGwKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9z
ZV93aW5kb3dzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBv
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAg
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3M7CiB9CiAK
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3Nfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWxsb3cpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIGFsbG93KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CkBAIC0xOTc3LDE0ICsxOTc3LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3Nfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0JvCiAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcmVz
aXphYmxlX3RleHRhcmVhc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX2dldChjb25zdCBFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwog
ICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVfdGV4dGFyZWFzOwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX3NldChFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Jlc2l6
YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xOTk2
LDE0ICsxOTk2LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0
YXJlYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hCiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2
YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy5wcml2YXRlX2Jyb3dzaW5nOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19w
cml2YXRlX2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMDE1LDE0ICsyMDE1LDE0IEBAIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmxlCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLm9mZmxpbmVfYXBwX2NhY2hlOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19v
ZmZsaW5lX2FwcF9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIw
MzUsMTQgKzIwMzUsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBf
Y2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmwKIH0KIAogCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuY2FyZXRfYnJvd3Npbmc7CiB9
CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Nh
cmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjA1NCw3
ICsyMDU0LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfZW5jb2Rp
bmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIDApOwpAQCAtMjA3MCwyNyArMjA3MCwyNyBAQCBjb25zdCBjaGFyICpld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAg
cmV0dXJuIHByaXYtPnNldHRpbmdzLmVuY29kaW5nX2N1c3RvbTsKIH0KIAotRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCAqbywgY29uc3Qg
Y2hhciAqZW5jb2RpbmcpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0
b21fc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBlbmNvZGluZykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIEV2YXNfT2JqZWN0
KiBtYWluX2ZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobyk7CiAgICAgV2ViQ29yZTo6
RnJhbWUqIGNvcmVfZnJhbWUgPSBld2tfZnJhbWVfY29yZV9nZXQobWFpbl9mcmFtZSk7Ci1EQkco
IiVzIiwgZW5jb2RpbmcpOworICAgIERCRygiJXMiLCBlbmNvZGluZyk7CiAgICAgZWluYV9zdHJp
bmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5lbmNvZGluZ19jdXN0b20sIGVuY29kaW5n
KTsKICAgICBjb3JlX2ZyYW1lLT5sb2FkZXIoKS0+cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2Rpbmco
U3RyaW5nOjpmcm9tVVRGOChlbmNvZGluZykpOwogCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0K
IAotY29uc3QgY2hhciAqZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2Rpbmdf
ZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdfZGVmYXVsdDsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQoRXZh
c19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVuY29kaW5nKQorRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGVu
Y29kaW5nKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CkBAIC0yMDk5LDcgKzIwOTksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNv
ZGluZ19kZWZhdWx0X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZW5jbwogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2RldGVjdG9yX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwpAQCAtMjExMSwyMSArMjExMSwyMSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBl
bmFibAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0Up
OwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ19kZXRlY3RvcjsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVs
b3Blcl9leHRyYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRp
bmdzLmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4
dHJhc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIxMzcsMTQgKzIxMzcs
MTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
Ci1pbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAg
ICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9taW5pbXVtX3NpemU7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX3NldChFdmFzX09iamVjdCAqbywg
aW50IHNpemUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9z
ZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMTU1LDE0ICsyMTU1LDE0IEBAIEVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX3NldChFdmFzX09iamVjdCAqbywg
aW50IHNpemUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192aWV3X3NldHRp
bmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitp
bnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX2dldChjb25zdCBF
dmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5mb250X21pbmltdW1fbG9naWNhbF9zaXplOwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3NldChFdmFz
X09iamVjdCAqbywgaW50IHNpemUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21p
bmltdW1fbG9naWNhbF9zaXplX3NldChFdmFzX09iamVjdCogbywgaW50IHNpemUpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIxNzMsMTQg
KzIxNzMsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2lj
YWxfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXoKICAgICByZXR1cm4gRUlOQV9UUlVF
OwogfQogCi1pbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAw
KTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9kZWZhdWx0X3NpemU7CiB9CiAKLUVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX3NldChFdmFzX09iamVj
dCAqbywgaW50IHNpemUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRf
c2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMTkxLDE0ICsyMTkxLDE0IEBAIEVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX3NldChFdmFzX09iamVj
dCAqbywgaW50IHNpemUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192aWV3
X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitp
bnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy5mb250X21vbm9zcGFjZV9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNp
emUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX3NldChF
dmFzX09iamVjdCogbywgaW50IHNpemUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIyMDksNyArMjIwOSw3IEBAIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQg
c2l6ZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyICpld2tfdmlld19m
b250X2ZhbWlseV9uYW1lX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRXdrX0ZvbnRfRmFtaWx5
IGZvbnRfZmFtaWx5KQorY29uc3QgY2hhciAqZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8sIEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSkKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMjIzMSw3ICsyMjMxLDcgQEAgY29uc3Qg
Y2hhciAqZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8s
IEV3a19Gb250X0ZhbWlseQogICAgIHJldHVybiAwOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
Zm9udF9mYW1pbHlfbmFtZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19Gb250X0ZhbWlseSBmb250
X2ZhbWlseSwgY29uc3QgY2hhciAqbmFtZSkKK0VpbmFfQm9vbCBld2tfdmlld19mb250X2ZhbWls
eV9uYW1lX3NldChFdmFzX09iamVjdCogbywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRfZmFtaWx5LCBj
b25zdCBjaGFyKiBuYW1lKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
RUlOQV9GQUxTRSk7CkBAIC0yMjY4LDE0ICsyMjY4LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19m
b250X2ZhbWlseV9uYW1lX3NldChFdmFzX09iamVjdCAqbywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRf
ZmFtCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc3BhdGlhbF9uYXZpZ2F0aW9uOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3Bh
dGlhbF9uYXZpZ2F0aW9uX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjI4
NywxNCArMjI4NywxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmln
YXRpb25fc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYgogICAgIHJldHVybiBFSU5B
X1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxf
c3RvcmFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mu
bG9jYWxfc3RvcmFnZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3Rv
cmFnZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFM
U0UpOwpAQCAtMjMwNiwxNCArMjMwNiwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19s
b2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKICAgICBy
ZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2Nh
Y2hlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X3BhZ2VfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRp
bmdzLnBhZ2VfY2FjaGU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2Fj
aGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFi
bGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsK
QEAgLTIzMjUsMTQgKzIzMjUsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcGFnZV9j
YWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCiAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdl
X2RhdGFiYXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciogZXdr
X3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJu
IHByaXYtPnNldHRpbmdzLmxvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aDsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX3NldChFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0aCkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNo
YXIqIHBhdGgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZB
TFNFKTsKQEAgLTIzNDEsNyArMjM0MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xv
Y2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0CiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbWluaW11
bV90aW1lcl9pbnRlcnZhbF9zZXQoRXZhc19PYmplY3QgKm8sIGRvdWJsZSBpbnRlcnZhbCkKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX21pbmltdW1fdGltZXJfaW50ZXJ2YWxfc2V0KEV2YXNf
T2JqZWN0KiBvLCBkb3VibGUgaW50ZXJ2YWwpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIzNTIsMTQgKzIzNTIsMTQgQEAgRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9zZXQoRXZhc19PYmplY3Qg
Km8sIGRvdWJsZSBpbnQKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1kb3VibGUgZXdrX3Zp
ZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFsX2dldChjb25zdCBFdmFzX09iamVjdCAq
bykKK2RvdWJsZSBld2tfdmlld19zZXR0aW5nX21pbmltdW1fdGltZXJfaW50ZXJ2YWxfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmRvbV90aW1lcl9pbnRl
cnZhbDsKIH0KIAotRXdrX1ZpZXdfU21hcnRfRGF0YSAqZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitFd2tfVmlld19TbWFydF9EYXRhKiBld2tfdmlld19zbWFy
dF9kYXRhX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICByZXR1cm4gc2Q7CkBAIC0yMzgyLDcgKzIzODIsNyBA
QCBFd2tfVmlld19TbWFydF9EYXRhICpld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFz
X09iamVjdCAqbykKICAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVz
dCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24g
YmFja2luZyBzdG9yZS4KICAqLwotY29uc3QgRWluYV9SZWN0YW5nbGUgKmV3a192aWV3X3JlcGFp
bnRzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVfdCAqY291bnQp
Citjb25zdCBFaW5hX1JlY3RhbmdsZSogZXdrX3ZpZXdfcmVwYWludHNfZ2V0KGNvbnN0IEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90KiBjb3VudCkKIHsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoY291bnQsIDApOwogICAgIGlmIChjb3VudCkKQEAgLTI0MTAs
NyArMjQxMCw3IEBAIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICpld2tfdmlld19yZXBhaW50c19nZXQo
Y29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBzCiAgKiBAbm90ZSB0aGlzIGlzIG5v
dCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAg
ICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLWNvbnN0IEV3a19T
Y3JvbGxfUmVxdWVzdCAqZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldChjb25zdCBFd2tfVmll
d19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVfdCAqY291bnQpCitjb25zdCBFd2tfU2Nyb2xsX1Jl
cXVlc3QqIGV3a192aWV3X3Njcm9sbF9yZXF1ZXN0c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBwcml2LCBzaXplX3QqIGNvdW50KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChjb3VudCwgMCk7CiAgICAgaWYgKGNvdW50KQpAQCAtMjQzNSw3ICsyNDM1LDcg
QEAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0ICpld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0
KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGEKICAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5l
cmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRl
ZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwotdm9pZCBld2tfdmlld19yZXBhaW50
X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29y
ZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3ZvaWQgZXdrX3ZpZXdfcmVwYWludF9h
ZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQg
eSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4ocHJpdik7CiAgICAgX2V3a192aWV3X3JlcGFpbnRfYWRkKHByaXYsIHgsIHksIHcs
IGgpOwpAQCAtMjQ0OSwxMSArMjQ0OSwxMSBAQCB2b2lkIGV3a192aWV3X3JlcGFpbnRfYWRkKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkCiAgKiBA
bm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMg
dGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAg
Ki8KLXZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2KQordm9pZCBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2
ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4ocHJpdik7CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnYgPSBwcml2LT5tYWlu
X2ZyYW1lLT52aWV3KCk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2ID0gcHJpdi0+bWFpbl9m
cmFtZS0+dmlldygpOwogICAgIGlmICghdikgewogICAgICAgICBFUlIoIm5vIG1haW4gZnJhbWUg
dmlldyIpOwogICAgICAgICByZXR1cm47CkBAIC0yNDYxLDcgKzI0NjEsNyBAQCB2b2lkIGV3a192
aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJp
dikKICAgICB2LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiB9CiAK
LXZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQor
dm9pZCBld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdik7CkBAIC0yNDc5LDE5ICsyNDc5LDE5IEBAIHZvaWQgZXdr
X3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICogICAgICAg
dG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCiBzdHJ1Y3QgX0V3a19WaWV3
X1BhaW50X0NvbnRleHQgewotICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCAqZ2M7Ci0gICAg
V2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3OwotICAgIGNhaXJvX3QgKmNyOworICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCogZ2M7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3OworICAg
IGNhaXJvX3QqIGNyOwogfTsKIAotRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqZXdrX3ZpZXdfcGFp
bnRfY29udGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjcikK
K0V3a19WaWV3X1BhaW50X0NvbnRleHQqIGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9fdCogY3IpCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChjciwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYt
Pm1haW5fZnJhbWUsIDApOwotICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHByaXYtPm1h
aW5fZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5t
YWluX2ZyYW1lLT52aWV3KCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZp
ZXcsIDApOwotICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQgPSAoRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCAqKW1hbGxvYyhzaXplb2YoKmN0eHQpKTsKKyAgICBFd2tfVmlld19QYWludF9D
b250ZXh0KiBjdHh0ID0gKEV3a19WaWV3X1BhaW50X0NvbnRleHQqKW1hbGxvYyhzaXplb2YoKmN0
eHQpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3R4dCwgMCk7CiAKICAg
ICBjdHh0LT5nYyA9IG5ldyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQoY3IpOwpAQCAtMjUwNCw3
ICsyNTA0LDcgQEAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LAogICAgIHJldHVybiBjdHh0OwogfQog
Ci12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWludF9Db250ZXh0
ICpjdHh0KQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2ZyZWUoRXdrX1ZpZXdfUGFpbnRf
Q29udGV4dCogY3R4dCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsK
ICAgICBkZWxldGUgY3R4dC0+Z2M7CkBAIC0yNTEyLDI4ICsyNTEyLDI4IEBAIHZvaWQgZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9mcmVlKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQpCiAgICAg
ZnJlZShjdHh0KTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NhdmUoRXdrX1Zp
ZXdfUGFpbnRfQ29udGV4dCAqY3R4dCkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZl
KEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oY3R4dCk7CiAgICAgY2Fpcm9fc2F2ZShjdHh0LT5jcik7CiAgICAgY3R4dC0+Z2Mt
PnNhdmUoKTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoRXdrX1Zp
ZXdfUGFpbnRfQ29udGV4dCAqY3R4dCkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0
b3JlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgY3R4dC0+Z2MtPnJlc3RvcmUoKTsKICAgICBjYWlyb19y
ZXN0b3JlKGN0eHQtPmNyKTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAo
RXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEp
Cit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChFd2tfVmlld19QYWludF9Db250ZXh0
KiBjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcmVh
KTsKICAgICBjdHh0LT5nYy0+Y2xpcChXZWJDb3JlOjpJbnRSZWN0KGFyZWEtPngsIGFyZWEtPnks
IGFyZWEtPncsIGFyZWEtPmgpKTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3Bh
aW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICph
cmVhKQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50X0Nv
bnRleHQqIGN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KGFyZWEpOwpAQCAtMjU0NSw3ICsyNTQ1LDcgQEAgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0
X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGEKICAg
ICBjdHh0LT52aWV3LT5wYWludChjdHh0LT5nYywgcmVjdCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdf
cGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyhFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0
LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF9wYWludF9jb250ZW50cyhFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBjb25zdCBFaW5h
X1JlY3RhbmdsZSogYXJlYSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKQEAgLTI1NTgsMjEgKzI1
NTgsMjEgQEAgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKEV3a19W
aWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEUKICAgICBjdHh0LT52aWV3LT5wYWludENv
bnRlbnRzKGN0eHQtPmdjLCByZWN0KTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0
X3NjYWxlKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0
IHNjYWxlX3kpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCogY3R4dCwgZmxvYXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVfeSkKIHsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKIAogICAgIGN0eHQtPmdjLT5zY2FsZShX
ZWJDb3JlOjpGbG9hdFNpemUoc2NhbGVfeCwgc2NhbGVfeSkpOwogfQogCi12b2lkIGV3a192aWV3
X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGZs
b2F0IHgsIGZsb2F0IHkpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKEV3
a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAKICAgICBjdHh0LT5nYy0+dHJhbnNsYXRl
KHgsIHkpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190
KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChjciwgRUlOQV9GQUxTRSk7CkBAIC0yNTkwLDE0ICsyNTkwLDE0IEBAIEVp
bmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJv
X3QgKmNyLCBjb25zdCBFaW5hX1JlCiAgICAgZ2MuY2xpcChyZWN0KTsKICAgICBpZiAodmlldy0+
aXNUcmFuc3BhcmVudCgpKQogICAgICAgICBnYy5jbGVhclJlY3QocmVjdCk7Ci0gICAgdmlldy0+
cGFpbnQoJmdjLCByZWN0KTsKKyAgICB2aWV3LT5wYWludCgmZ2MsICByZWN0KTsKICAgICBnYy5y
ZXN0b3JlKCk7CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiAKICAgICByZXR1cm4gRUlOQV9UUlVF
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgRUlOQV9GQUxTRSk7CkBAIC0yNjI4LDcgKzI2
MjgsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29ucwogICoKICAqIEVtaXRzIHNpZ25hbDogInJl
YWR5IiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfcmVhZHkoRXZhc19P
YmplY3QgKm8pCit2b2lkIGV3a192aWV3X3JlYWR5KEV2YXNfT2JqZWN0KiBvKQogewogICAgIERC
Rygibz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInJl
YWR5IiwgMCk7CkBAIC0yNjQyLDcgKzI2NDIsNyBAQCB2b2lkIGV3a192aWV3X3JlYWR5KEV2YXNf
T2JqZWN0ICpvKQogICogRW1pdHMgc2lnbmFsOiAiaW5wdXRtZXRob2QsY2hhbmdlZCIgd2l0aCBh
IGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGl0J3MKICAqIGVuYWJsZWQgb3Igbm90LgogICov
Ci12b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBhY3RpdmUpCit2b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZh
c19PYmplY3QqIG8sIEVpbmFfQm9vbCBhY3RpdmUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwpAQCAtMjY3
MSw3ICsyNjcxLDcgQEAgdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWN0aXZlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiaW5wdXRtZXRob2QsY2hhbmdlZCIsICh2
b2lkICopYWN0aXZlKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJp
bnB1dG1ldGhvZCxjaGFuZ2VkIiwgKHZvaWQqKWFjdGl2ZSk7CiB9CiAKIC8qKgpAQCAtMjY4MCwx
MCArMjY4MCwxMCBAQCB2b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBhY3RpdmUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidGl0bGUs
Y2hhbmdlZCIgd2l0aCBwb2ludGVyIHRvIG5ldyB0aXRsZSBzdHJpbmcuCiAgKi8KLXZvaWQgZXdr
X3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0aXRsZSkKK3ZvaWQg
ZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0aXRsZSkKIHsK
ICAgICBEQkcoIm89JXAsIHRpdGxlPSVzIiwgbywgdGl0bGUgPyB0aXRsZSA6ICIobnVsbCkiKTsK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ0aXRsZSxjaGFuZ2VkIiwg
KHZvaWQgKil0aXRsZSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAi
dGl0bGUsY2hhbmdlZCIsICh2b2lkKil0aXRsZSk7CiB9CiAKIC8qKgpAQCAtMjY5MiwxMiArMjY5
MiwxMiBAQCB2b2lkIGV3a192aWV3X3RpdGxlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hh
ciAqdGl0bGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidXJpLGNoYW5nZWQiIHdpdGggcG9pbnRl
ciB0byB0aGUgbmV3IHVyaSBzdHJpbmcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQo
RXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBv
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwotICAgIGNvbnN0IGNo
YXIgKnVyaSA9IGV3a19mcmFtZV91cmlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBjb25zdCBj
aGFyKiB1cmkgPSBld2tfZnJhbWVfdXJpX2dldChzZC0+bWFpbl9mcmFtZSk7CiAgICAgREJHKCJv
PSVwLCB1cmk9JXMiLCBvLCB1cmkgPyB1cmkgOiAiKG51bGwpIik7Ci0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAidXJpLGNoYW5nZWQiLCAodm9pZCAqKXVyaSk7CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidXJpLGNoYW5nZWQiLCAodm9pZCop
dXJpKTsKIH0KIAogLyoqCkBAIC0yNzA4LDcgKzI3MDgsNyBAQCB2b2lkIGV3a192aWV3X3VyaV9j
aGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQsc3RhcnRl
ZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChF
dmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBv
KQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwobywgImxvYWQsc3RhcnRlZCIsIDApOwpAQCAtMjcyMSwxMCArMjcyMSwxMCBAQCB2b2lk
IGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWdu
YWw6ICJsb2FkLHN0YXJ0ZWQiIG9uIG1haW4gZnJhbWUgd2l0aCBubyBwYXJhbWV0ZXJzLgogICov
Ci12b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQor
dm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogbykKIHsK
ICAgICBEQkcoIm89JXAiLCBvKTsKLSAgICBFdmFzX09iamVjdCAqZnJhbWUgPSBld2tfdmlld19m
cmFtZV9tYWluX2dldChvKTsKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFt
ZV9tYWluX2dldChvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGZyYW1l
LCAibG9hZCxzdGFydGVkIiwgMCk7CiB9CiAKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgZXdr
X3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1p
dHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCIgb24gVmlldyB3aXRoIG5vIHBhcmFtZXRlcnMu
CiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCAqbykKK3Zv
aWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCogbykKIHsKICAgICBEQkco
Im89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2Fk
LHByb3Zpc2lvbmFsIiwgMCk7CkBAIC0yNzUwLDcgKzI3NTAsNyBAQCB2b2lkIGV3a192aWV3X2xv
YWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9h
ZCxuZXd3aW5kb3csc2hvdyIgb24gdmlldyB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfbG9hZF9zaG93KEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19sb2FkX3No
b3coRXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxuZXd3aW5kb3csc2hvdyIsIDApOwpAQCAt
Mjc2Myw3ICsyNzYzLDcgQEAgdm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmplY3QgKm8p
CiAgKgogICogQHBhcmFtIG8gVmlldy4KICAqLwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2Ns
ZWFyZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZChF
dmFzX09iamVjdCogbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTI3NzksMTAgKzI3NzksMTAgQEAgdm9pZCBld2tfdmll
d19mcmFtZV9tYWluX2NsZWFyZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFs
OiAiaWNvbixyZWNlaXZlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3
X2ZyYW1lX21haW5faWNvbl9yZWNlaXZlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdf
ZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIERCRygibz0l
cCIsIG8pOwotICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0
KG8pOworICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8p
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZnJhbWUsICJpY29uLHJlY2Vp
dmVkIiwgMCk7CiB9CiAKQEAgLTI3OTYsMTAgKzI3OTYsMTAgQEAgdm9pZCBld2tfdmlld19mcmFt
ZV9tYWluX2ljb25fcmVjZWl2ZWQoRXZhc19PYmplY3QgKm8pCiAgKiBAbm90ZSB0aGVyZSBzaG91
bGQgbm90IGJlIGFueSBlcnJvciBzdHVmZiBoZXJlLCBidXQgdHJ5aW5nIHRvIGJlCiAgKiAgICAg
ICBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgV2ViS2l0LgogICovCi12b2lkIGV3a192aWV3X2xv
YWRfZmluaXNoZWQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yICpl
cnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogbywgY29uc3Qg
RXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQogewogICAgIERCRygibz0lcCwgZXJyb3I9JXAi
LCBvLCBlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9h
ZCxmaW5pc2hlZCIsICh2b2lkICopZXJyb3IpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobywgImxvYWQsZmluaXNoZWQiLCAodm9pZCopZXJyb3IpOwogfQogCiAvKioKQEAg
LTI4MDgsMTAgKzI4MDgsMTAgQEAgdm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciAqZXJyb3IpCiAgKgogICogRW1pdHMg
c2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9y
LgogICovCi12b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3
a19GcmFtZV9Mb2FkX0Vycm9yICplcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFz
X09iamVjdCogbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQogewogICAgIERC
Rygibz0lcCwgZXJyb3I9JXAiLCBvLCBlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChvLCAibG9hZCxlcnJvciIsICh2b2lkICopZXJyb3IpOworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsZXJyb3IiLCAodm9pZCopZXJyb3IpOwog
fQogCiAvKioKQEAgLTI4MjAsNyArMjgyMCw3IEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihF
dmFzX09iamVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgKmVycm9yKQogICoKICAq
IEVtaXRzIHNpZ25hbDogImxvYWQscHJvZ3Jlc3MiIHdpdGggcG9pbnRlciB0byBhIGRvdWJsZSBm
cm9tIDAuMCB0byAxLjAuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2Vk
KEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKQEAgLTI4NDIsNyArMjg0
Miw3IEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0ICpv
KQogICoKICAqIEVtaXRzIHNpZ25hbDogInJlc3RvcmUiIHdpdGggZnJhbWUuCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1l
KQordm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVj
dCogZnJhbWUpCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVz
dG9yZSIsIGZyYW1lKTsKIH0KQEAgLTI4NjgsMTQgKzI4NjgsMTQgQEAgdm9pZCBld2tfdmlld19y
ZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUpCiAgKgogICog
QHNlZSBld2tfd2luZG93X2ZlYXR1cmVzX3JlZigpLgogICovCi1FdmFzX09iamVjdCAqZXdrX3Zp
ZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNv
bnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzICpjb3JlRmVhdHVyZXMpCitFdmFzX09iamVjdCog
ZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGphdmFzY3Jp
cHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVyZXMpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAKICAgICBpZiAoIXNkLT5hcGkt
PndpbmRvd19jcmVhdGUpCiAgICAgICAgIHJldHVybiBvOwogCi0gICAgRXdrX1dpbmRvd19GZWF0
dXJlcyAqd2luZG93X2ZlYXR1cmVzID0gZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3Jl
KGNvcmVGZWF0dXJlcyk7CisgICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2ZlYXR1cmVz
ID0gZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvcmVGZWF0dXJlcyk7CiAgICAg
aWYgKCF3aW5kb3dfZmVhdHVyZXMpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yODk2LDcgKzI4
OTYsNyBAQCBFdmFzX09iamVjdCAqZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0CiAgKgogICogQHBhcmFtIG8gVmlldyB0byBi
ZSBjbG9zZWQuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0ICpv
KQordm9pZCBld2tfdmlld193aW5kb3dfY2xvc2UoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAKQEAgLTI5MTIsNyArMjkxMiw3IEBAIHZv
aWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNp
Z25hbDogImxpbmssaG92ZXIsaW4iCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zl
cl9pbihFdmFzX09iamVjdCAqbywgdm9pZCAqZGF0YSkKK3ZvaWQgZXdrX3ZpZXdfbW91c2VfbGlu
a19ob3Zlcl9pbihFdmFzX09iamVjdCogbywgdm9pZCogZGF0YSkKIHsKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsaW5rLGhvdmVyLGluIiwgZGF0YSk7CiB9CkBAIC0y
OTIzLDcgKzI5MjMsNyBAQCB2b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4oRXZhc19P
YmplY3QgKm8sIHZvaWQgKmRhdGEpCiAgKgogICogRW1pdHMgc2lnbmFsOiAibGluayxob3Zlcixv
dXQiCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmplY3Qg
Km8pCit2b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0KiBvKQog
ewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxpbmssaG92ZXIsb3V0
IiwgMCk7CiB9CkBAIC0yOTM0LDcgKzI5MzQsNyBAQCB2b2lkIGV3a192aWV3X21vdXNlX2xpbmtf
aG92ZXJfb3V0KEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogInRvb2xiYXJz
LHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdr
X3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNp
YmxlKQordm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJHKCJvPSVwICh2aXNpYmxlPSVkKSIsIG8sICEh
dmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidG9vbGJh
cnMsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBAIC0yOTUxLDcgKzI5NTEsNyBAQCB2b2lkIGV3
a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlz
aWJsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ0b29sYmFycyx2aXNpYmxlLGdldCIgd2l0aCBh
IHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2li
bGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCit2b2lkIGV3a192aWV3
X3Rvb2xiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUp
CiB7CiAgICAgREJHKCIlcywgbz0lcCIsIF9fZnVuY19fLCBvKTsKICAgICAqdmlzaWJsZSA9IEVJ
TkFfRkFMU0U7CkBAIC0yOTY3LDcgKzI5NjcsNyBAQCB2b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zp
c2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCiAgKgogICogRW1p
dHMgc2lnbmFsOiAic3RhdHVzYmFyLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJv
b2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2li
bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKIHsKICAgICBEQkcoIm89
JXAgKHZpc2libGU9JWQpIiwgbywgISF2aXNpYmxlKTsKICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG8sICJzdGF0dXNiYXIsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBAIC0y
OTg0LDcgKzI5ODQsNyBAQCB2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAic3Rh
dHVzYmFyLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZv
aWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgKnZpc2libGUpCit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogewogICAgIERCRygiJXMsIG89JXAiLCBfX2Z1
bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZBTFNFOwpAQCAtMzAwMCw3ICszMDAwLDcg
QEAgdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCAqdmlzaWJsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJzdGF0dXNiYXIsdGV4dCxz
ZXQiIHdpdGggYSBzdHJpbmcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0KQordm9pZCBld2tfdmlld19zdGF0dXNi
YXJfdGV4dF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRleHQpCiB7CiAgICAgREJH
KCJvPSVwICh0ZXh0PSVzKSIsIG8sIHRleHQpOwogICAgIElORigic3RhdHVzIGJhciB0ZXh0IHNl
dDogJXMiLCB0ZXh0KTsKQEAgLTMwMTYsNyArMzAxNiw3IEBAIHZvaWQgZXdrX3ZpZXdfc3RhdHVz
YmFyX3RleHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0KQogICoKICAqIEVt
aXRzIHNpZ25hbDogInNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiIHdpdGggYSBwb2ludGVyIHRvIGEg
Ym9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192
aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJH
KCJvPSVwICh2aXNpYmxlPSVkKSIsIG8sICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAic2Nyb2xsYmFycyx2aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsK
QEAgLTMwMzMsNyArMzAzMyw3IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFs
OiAic2Nyb2xsYmFycyx2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgog
ICovCi12b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCAqdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dl
dChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogewogICAgIERCRygiJXMsIG89
JXAiLCBfX2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZBTFNFOwpAQCAtMzA0OSw3
ICszMDQ5LDcgQEAgdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAibWVudWJh
cix2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3
a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNp
YmxlKQordm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBF
aW5hX0Jvb2wgdmlzaWJsZSkKIHsKICAgICBEQkcoIm89JXAgKHZpc2libGU9JWQpIiwgbywgISF2
aXNpYmxlKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJtZW51YmFy
LHZpc2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMzA2Niw3ICszMDY2LDcgQEAgdm9pZCBld2tf
dmlld19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJs
ZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJtZW51YmFyLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9p
bnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQordm9pZCBld2tfdmlld19tZW51
YmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpCiB7CiAg
ICAgREJHKCIlcywgbz0lcCIsIF9fZnVuY19fLCBvKTsKICAgICAqdmlzaWJsZSA9IEVJTkFfRkFM
U0U7CkBAIC0zMDgzLDcgKzMwODMsNyBAQCB2b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9n
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKICAqIEVtaXRzIHNpZ25hbDog
InRvb2x0aXAsdGV4dCxzZXQiIHdpdGggYSBzdHJpbmcuIElmIHRvb2x0aXAgbXVzdCBiZSBhY3R1
YWxseQogICogcmVtb3ZlZCwgdGV4dCB3aWxsIGJlIDAgb3IgJ1wwJwogICovCi12b2lkIGV3a192
aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQpCit2
b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIq
IHRleHQpCiB7CiAgICAgREJHKCJvPSVwIHRleHQ9JXMiLCBvLCB0ZXh0KTsKICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ0b29sdGlwLHRleHQsc2V0IiwgKHZvaWQgKil0
ZXh0KTsKQEAgLTMwOTgsNyArMzA5OCw3IEBAIHZvaWQgZXdrX3ZpZXdfdG9vbHRpcF90ZXh0X3Nl
dChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCkKICAqIEBzb3VyY2VJRCBTb3VyY2Ug
aWQuCiAgKgogICovCi12b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25z
dCBjaGFyICpzb3VyY2VJRCkKK3ZvaWQgZXdrX3ZpZXdfYWRkX2NvbnNvbGVfbWVzc2FnZShFdmFz
X09iamVjdCogbywgY29uc3QgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IGNoYXIqIHNvdXJjZUlEKQogewogICAgIERCRygibz0lcCBtZXNzYWdlPSVzIGxpbmVO
dW1iZXI9JXUgc291cmNlSUQ9JXMiLCBvLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0zMTA3LDcgKzMxMDcs
NyBAQCB2b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkCiAgICAgc2QtPmFwaS0+YWRkX2NvbnNvbGVfbWVz
c2FnZShzZCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpOwogfQogCi12b2lkIGV3a192
aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJh
bWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit2b2lkIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2Fs
ZXJ0KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpCiB7CiAgICAgREJHKCJvPSVwIGZyYW1lPSVwIG1lc3NhZ2U9JXMiLCBvLCBmcmFtZSwgbWVz
c2FnZSk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0zMTE5LDcg
KzMxMTksNyBAQCB2b2lkIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0
ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYQogICAgIHNkLT5hcGktPnJ1bl9qYXZh
c2NyaXB0X2FsZXJ0KHNkLCBmcmFtZSwgbWVzc2FnZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19ydW5famF2YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJh
bWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfY29uZmlybShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFy
KiBtZXNzYWdlKQogewogICAgIERCRygibz0lcCBmcmFtZT0lcCBtZXNzYWdlPSVzIiwgbywgZnJh
bWUsIG1lc3NhZ2UpOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwpAQCAtMzEzMSw3ICszMTMxLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZh
c2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY28KICAg
ICByZXR1cm4gc2QtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybShzZCwgZnJhbWUsIG1lc3Nh
Z2UpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNf
T2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGNvbnN0
IGNoYXIgKmRlZmF1bHRWYWx1ZSwgY2hhciAqKnZhbHVlKQorRWluYV9Cb29sIGV3a192aWV3X3J1
bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBj
b25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2YWx1
ZSkKIHsKICAgICBEQkcoIm89JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIG8sIGZyYW1lLCBtZXNz
YWdlKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
QEAgLTMxNTQsNyArMzE1NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9w
cm9tcHQoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uCiAgKgogICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgaWYgc2NyaXB0IHNob3VsZCBiZSBzdG9wcGVkOyBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9q
YXZhc2NyaXB0KEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3Nob3VsZF9pbnRl
cnJ1cHRfamF2YXNjcmlwdChFdmFzX09iamVjdCogbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTMx
ODAsNyArMzE4MCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFz
Y3JpcHQoRXZhc19PYmplY3QgKm8pCiAgKiBAcGFyYW0gZXhwZWN0ZWRfc2l6ZSBUaGUgZXhwZWN0
ZWQgc2l6ZSBvZiB0aGlzIGRhdGFiYXNlIGluIG9yZGVyIHRvIGZ1bGZpbGwKICAqIHNpdGUncyBy
ZXF1aXJlbWVudC4KICAqLwotdWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVv
dGEoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqZGF0YWJh
c2VOYW1lLCB1aW50NjRfdCBjdXJyZW50X3NpemUsIHVpbnQ2NF90IGV4cGVjdGVkX3NpemUpCit1
aW50NjRfdCBld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFzX09iamVjdCogbywg
RXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBkYXRhYmFzZU5hbWUsIHVpbnQ2NF90IGN1
cnJlbnRfc2l6ZSwgdWludDY0X3QgZXhwZWN0ZWRfc2l6ZSkKIHsKICAgICBEQkcoIm89JXAiLCBv
KTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKQEAgLTMyMDUsNyAr
MzIwNSw3IEBAIHVpbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKEV2YXNf
T2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvCiAgKgogICogQHJldHVybiBARUlOQV9G
QUxTRSBpZiB1c2VyIGNhbmNlbGVkIGZpbGUgc2VsZWN0aW9uOyBARUlOQV9UUlVFIGlmIGNvbmZp
cm1lZC4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0
ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIEVpbmFfQm9vbCBhbGxvd3NfbXVsdGlwbGVfZmlsZXMs
IGNvbnN0IGNoYXIgKmFjY2VwdF90eXBlcywgRWluYV9MaXN0ICoqc2VsZWN0ZWRfZmlsZW5hbWVz
KQorRWluYV9Cb29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0KiBvLCBFdmFz
X09iamVjdCogZnJhbWUsIEVpbmFfQm9vbCBhbGxvd3NfbXVsdGlwbGVfZmlsZXMsIGNvbnN0IGNo
YXIqIGFjY2VwdF90eXBlcywgRWluYV9MaXN0Kiogc2VsZWN0ZWRfZmlsZW5hbWVzKQogewogICAg
IERCRygibz0lcCBmcmFtZT0lcCBhbGxvd3NfbXVsdGlwbGVfZmlsZXM9JWQiLCBvLCBmcmFtZSwg
YWxsb3dzX211bHRpcGxlX2ZpbGVzKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTMyMjMsNyArMzIyMyw3IEBAIEVpbmFfQm9vbCBld2tfdmll
d19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBFaW5h
X0Jvb2wKICAgICByZXR1cm4gY29uZmlybTsKIH0KIAotdm9pZCBld2tfdmlld19yZXBhaW50KEV2
YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgpCit2b2lkIGV3a192aWV3X3JlcGFpbnQoRXZhc19PYmplY3QqIG8sIEV2YXNf
Q29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAg
ICBEQkcoIm89JXAsIHJlZ2lvbj0lZCwlZCArICVkeCVkIiwgbywgeCwgeSwgdywgaCk7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0zMjM4LDcgKzMyMzgsNyBAQCB2
b2lkIGV3a192aWV3X3JlcGFpbnQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc19D
b29yZCB5LCBFdmFzX0Nvb3JkIHcsCiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwog
fQogCi12b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCBkeCwg
RXZhc19Db29yZCBkeSwgRXZhc19Db29yZCBzeCwgRXZhc19Db29yZCBzeSwgRXZhc19Db29yZCBz
dywgRXZhc19Db29yZCBzaCwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSwgRXZhc19Db29y
ZCBjdywgRXZhc19Db29yZCBjaCwgRWluYV9Cb29sIG1haW5fZnJhbWUpCit2b2lkIGV3a192aWV3
X3Njcm9sbChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZh
c19Db29yZCBzeCwgRXZhc19Db29yZCBzeSwgRXZhc19Db29yZCBzdywgRXZhc19Db29yZCBzaCwg
RXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSwgRXZhc19Db29yZCBjdywgRXZhc19Db29yZCBj
aCwgRWluYV9Cb29sIG1haW5fZnJhbWUpCiB7CiAgICAgREJHKCJvPSVwLCBkZWx0YTogJWQsJWQs
IHNjcm9sbDogJWQsJWQrJWR4JWQsIGNsaXA6ICVkLCVkKyVkeCVkIiwKICAgICAgICAgbywgZHgs
IGR5LCBzeCwgc3ksIHN3LCBzaCwgY3gsIGN5LCBjdywgY2gpOwpAQCAtMzI1Niw3ICszMjU2LDcg
QEAgdm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2
YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgc3gKICAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChz
ZCk7CiB9CiAKLVdlYkNvcmU6OlBhZ2UqIGV3a192aWV3X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pCitXZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0z
MjY4LDcgKzMyNjgsNyBAQCBXZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzICJmcmFtZSxjcmVhdGVkIiB3aXRoIHRo
ZSBuZXcgZnJhbWUgb2JqZWN0IG9uIHN1Y2Nlc3MuCiAgKi8KLVdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpGcmFtZT4gZXdrX3ZpZXdfZnJhbWVfY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09i
amVjdCAqZnJhbWUsIGNvbnN0IFdURjo6U3RyaW5nICZuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVP
d25lckVsZW1lbnQgKm93bmVyRWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBjb25z
dCBXVEY6OlN0cmluZyAmcmVmZXJyZXIpCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+
IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmIHJlZmVycmVyKQogewogICAgIERCRygibz0lcCwgZnJhbWU9JXAsIG5hbWU9JXMsIG93bmVy
RWxlbWVudD0lcCwgdXJsPSVzLCByZWZlcnJlcj0lcyIsCiAgICAgICAgIG8sIGZyYW1lLCBuYW1l
LnV0ZjgoKS5kYXRhKCksIG93bmVyRWxlbWVudCwKQEAgLTMzMDAsNyArMzMwMCw3IEBAIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gZXdrX3ZpZXdfZnJhbWVfY3JlYXRlKEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX09iamVjCiAgICAgcmV0dXJuIGNmLnJlbGVhc2UoKTsKIH0KIAotV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09i
amVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVn
aW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCAqZWxlbWVudCwgY29uc3QgV2ViQ29y
ZTo6S1VSTCAmdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtTmFtZXMs
IGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiAmcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6
U3RyaW5nICZtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFz
X09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmws
IGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICBEQkcoIm89JXAsIGZyYW1lPSVwLCBzaXpl
PSVkeCVkLCBlbGVtZW50PSVwLCB1cmw9JXMsIG1pbWVUeXBlPSVzIiwKICAgICAgICAgbywgZnJh
bWUsIHBsdWdpblNpemUud2lkdGgoKSwgcGx1Z2luU2l6ZS5oZWlnaHQoKSwgZWxlbWVudCwKQEAg
LTMzMTUsNiArMzMxNSw3IEBAIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192
aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqCiAgICAgICAgICBtaW1l
VHlwZSwgbG9hZE1hbnVhbGx5KTsKIH0KIAorCiAvKioKICAqIEBpbnRlcm5hbAogICoKQEAgLTMz
MjYsNyArMzMyNyw3IEBAIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3
X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqCiAgKgogICogRW1pdHM6ICJw
b3B1cCxjcmVhdGUiIHdpdGggYSBsaXN0IG9mIEV3a19NZW51IGNvbnRhaW5pbmcgZWFjaCBpdGVt
J3MgZGF0YQogICovCi12b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAqbywgV2Vi
Q29yZTo6UG9wdXBNZW51Q2xpZW50ICpjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCAmcmVjdCkKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0KiBv
LCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwgaW50IHNlbGVjdGVkLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewogICAgIElORigibz0lcCIsIG8pOwogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzM0MCw3ICszMzQxLDcgQEAgdm9pZCBl
d2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVu
dCAqY2xpZW50LCBpbnQgc2UKICAgICAvLyBwb3B1bGF0ZSBpdGVtcwogICAgIGNvbnN0IGludCBz
aXplID0gY2xpZW50LT5saXN0U2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIEV3a19NZW51X0l0ZW0gKml0ZW0gPSAoRXdrX01lbnVfSXRlbSAqKSBt
YWxsb2Moc2l6ZW9mKCppdGVtKSk7CisgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSAoRXdr
X01lbnVfSXRlbSopIG1hbGxvYyhzaXplb2YoKml0ZW0pKTsKICAgICAgICAgaWYgKGNsaWVudC0+
aXRlbUlzU2VwYXJhdG9yKGkpKQogICAgICAgICAgICAgaXRlbS0+dHlwZSA9IEVXS19NRU5VX1NF
UEFSQVRPUjsKICAgICAgICAgZWxzZSBpZiAoY2xpZW50LT5pdGVtSXNMYWJlbChpKSkKQEAgLTMz
NTksNyArMzM2MCw3IEBAIHZvaWQgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0ICpvLCBX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQgKmNsaWVudCwgaW50IHNlCiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAicG9wdXAsY3JlYXRlIiwgJnByaXYtPnBvcHVwLm1lbnUp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFzX09iamVjdCAqbykK
K0VpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0KiBvKQogewogICAg
IElORigibz0lcCIsIG8pOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwpAQCAtMzM3Miw3ICszMzczLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BvcHVw
X2Rlc3Ryb3koRXZhc19PYmplY3QgKm8pCiAKICAgICB2b2lkKiBpdGVtdjsKICAgICBFSU5BX0xJ
U1RfRlJFRShwcml2LT5wb3B1cC5tZW51Lml0ZW1zLCBpdGVtdikgewotICAgICAgICBFd2tfTWVu
dV9JdGVtKiBpdGVtID0gKEV3a19NZW51X0l0ZW0gKilpdGVtdjsKKyAgICAgICAgRXdrX01lbnVf
SXRlbSogaXRlbSA9IChFd2tfTWVudV9JdGVtKilpdGVtdjsKICAgICAgICAgZWluYV9zdHJpbmdz
aGFyZV9kZWwoaXRlbS0+dGV4dCk7CiAgICAgICAgIGZyZWUoaXRlbSk7CiAgICAgfQpAQCAtMzM4
Miw3ICszMzgzLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3koRXZhc19PYmpl
Y3QgKm8pCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotdm9pZCBld2tfdmlld19wb3B1cF9z
ZWxlY3RlZF9zZXQoRXZhc19PYmplY3QgKm8sIGludCBpbmRleCkKK3ZvaWQgZXdrX3ZpZXdfcG9w
dXBfc2VsZWN0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgaW5kZXgpCiB7CiAgICAgSU5GKCJv
PSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0zNDAy
LDcgKzM0MDMsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX3NlbGVjdGVkX3NldChFdmFzX09iamVj
dCAqbywgaW50IGluZGV4KQogICogRW1pdHM6ICJkb3dubG9hZCxyZXF1ZXN0IiB3aXRoIGFuIEV3
a19Eb3dubG9hZCBjb250YWluaW5nIHRoZSBkZXRhaWxzIG9mIHRoZQogICogcmVxdWVzdGVkIGRv
d25sb2FkLiBUaGUgZG93bmxvYWQgcGVyIHNlIG11c3QgYmUgaGFuZGxlZCBvdXRzaWRlIG9mIHdl
YmtpdC4KICAqLwotdm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0ICpv
LCBFd2tfRG93bmxvYWQgKmRvd25sb2FkKQordm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBvLCBFd2tfRG93bmxvYWQqIGRvd25sb2FkKQogewogICAgIERCRygidmll
dz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImRvd25s
b2FkLHJlcXVlc3QiLCBkb3dubG9hZCk7CkBAIC0zNDI4LDcgKzM0MjksNyBAQCB2b2lkIGV3a192
aWV3X2pzX3dpbmRvd19vYmplY3RfY2xlYXIoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpm
cmFtZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5vIHBh
cmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZh
c19PYmplY3QgKm8sIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzICZhcmd1bWVudHMp
Cit2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKQogewogICAgIEVXS19W
SUVXX1NEX0dFVChvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwpAQCAt
MzQzNyw3ICszNDM4LDcgQEAgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChF
dmFzX09iamVjdCAqbywgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmcKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ2aWV3cG9ydCxjaGFuZ2VkIiwgMCk7CiB9CiAKLXZv
aWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8s
IGZsb2F0ICp3LCBmbG9hdCAqaCwgZmxvYXQgKmluaXRfc2NhbGUsIGZsb2F0ICptYXhfc2NhbGUs
IGZsb2F0ICptaW5fc2NhbGUsIGZsb2F0ICpkZXZpY2VfcGl4ZWxfcmF0aW8sIEVpbmFfQm9vbCAq
dXNlcl9zY2FsYWJsZSkKK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8sIGZsb2F0KiB3LCBmbG9hdCogaCwgZmxvYXQqIGluaXRfc2NhbGUs
IGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIGZsb2F0KiBkZXZpY2VfcGl4ZWxf
cmF0aW8sIEVpbmFfQm9vbCogdXNlcl9zY2FsYWJsZSkKIHsKICAgICBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2Nv
bXB1dGUobyk7CiAKQEAgLTM0NTcsNyArMzQ1OCw3IEBAIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGZsb2F0ICp3LCBmbG9hdCAqaCwK
ICAgICAgICAgKnVzZXJfc2NhbGFibGUgPSBzdGF0aWNfY2FzdDxib29sPihhdHRyaWJ1dGVzLnVz
ZXJTY2FsYWJsZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX3JhbmdlX3NldChFdmFz
X09iamVjdCAqbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwg
ZmxvYXQgbWF4X3NjYWxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
RUlOQV9GQUxTRSk7CkBAIC0zNDczLDcgKzM0NzQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9v
bV9yYW5nZV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3Nj
YQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2Vf
bWluX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2Zsb2F0IGV3a192aWV3X3pvb21fcmFuZ2Vf
bWluX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAtMS4wKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIC0xLjApOwpAQCAtMzQ4MSw3ICszNDgyLDcgQEAgZmxvYXQgZXdrX3ZpZXdfem9vbV9y
YW5nZV9taW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZTsKIH0KIAotZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5n
ZV9tYXhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5n
ZV9tYXhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIC0xLjApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgLTEuMCk7CkBAIC0zNDg5LDcgKzM0OTAsNyBAQCBmbG9hdCBld2tfdmlld196b29t
X3JhbmdlX21heF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdXNl
cl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKQor
RWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgdXNlcl9zY2FsYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwpAQCAtMzQ5OSw3ICszNTAwLDcgQEAgRWluYV9Cb29sIGV3a192aWV3
X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJs
ZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9z
Y2FsYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNl
cl9zY2FsYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTM1MDcsNyArMzUwOCw3IEBAIEVp
bmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykK
ICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS51c2VyX3NjYWxhYmxlOwogfQog
Ci1mbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKQorZmxvYXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAtMS4wKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIC0xLjApOwpAQCAtMzUx
NSw3ICszNTE2LDcgQEAgZmxvYXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZGV2aWNlX3BpeGVs
X3JhdGlvOwogfQogCi12b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9s
YXlvdXQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9u
b25lbXB0eV9sYXlvdXQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
KTsKQEAgLTM1MzIsNyArMzUzMyw3IEBAIHZvaWQgZXdrX3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5
X25vbmVtcHR5X2xheW91dChFdmFzX09iamVjdCAqbykKICAqCiAgKiBAcGFyYW0gbyB2aWV3Lgog
ICovCi12b2lkIGV3a192aWV3X2Rpc3BhdGNoX2RpZF9maW5pc2hfbG9hZGluZyhFdmFzX09iamVj
dCAqbykKK3ZvaWQgZXdrX3ZpZXdfZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2FkaW5nKEV2YXNfT2Jq
ZWN0KiBvKQogewogICAgIC8qIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQgYW5kIHJlbmRlcmluZyBp
cyBzdGlsbCBkaXNhYmxlZCwgV2ViQ29yZSB3aWxsIG5vdAogICAgICAqIHRyaWdnZXIgdGhlIGRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBzaWduYWwgYW55bW9yZS4gU28sIHdlCkBAIC0z
NTQxLDcgKzM1NDIsNyBAQCB2b2lkIGV3a192aWV3X2Rpc3BhdGNoX2RpZF9maW5pc2hfbG9hZGlu
ZyhFdmFzX09iamVjdCAqbykKICAgICBld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlfbm9uZW1w
dHlfbGF5b3V0KG8pOwogfQogCi12b2lkIGV3a192aWV3X3RyYW5zaXRpb25fdG9fY29tbWl0ZWRf
Zm9yX25ld3BhZ2UoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X3RyYW5zaXRpb25fdG9f
Y29tbWl0ZWRfZm9yX25ld3BhZ2UoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2KTsKQEAgLTM1NjAsNyArMzU2MSw3IEBAIHZvaWQgZXdrX3ZpZXdfdHJhbnNpdGlvbl90
b19jb21taXRlZF9mb3JfbmV3cGFnZShFdmFzX09iamVjdCAqbykKICAqIEBwYXJhbSBvIFZpZXcg
dG8gbG9hZAogICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB3aGljaCBjb250YWluIHVybCB0byBu
YXZpZ2F0ZQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b24oRXZhc19PYmplY3QgKm8sIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0ICpyZXF1ZXN0KQor
RWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0
KiBvLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX1RSVUUpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX1RSVUUpOwpAQCAtMzU3MSw3ICszNTcyLDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2Jq
ZWN0ICpvLCBFd2tfRnJhbWVfUmVzb3VyY2UKICAgICByZXR1cm4gc2QtPmFwaS0+bmF2aWdhdGlv
bl9wb2xpY3lfZGVjaXNpb24oc2QsIHJlcXVlc3QpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
anNfb2JqZWN0X2FkZChFdmFzX09iamVjdCAqbywgRXdrX0pTX09iamVjdCAqb2JqLCBjb25zdCBj
aGFyICpvYmpfbmFtZSkKK0VpbmFfQm9vbCBld2tfdmlld19qc19vYmplY3RfYWRkKEV2YXNfT2Jq
ZWN0ICpvLCBFd2tfSlNfT2JqZWN0KiBvYmosIGNvbnN0IGNoYXIqIG9ial9uYW1lKQogewogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChvYmotPnZpZXcpIC8vIG9iamVj
dCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIGFub3RoZXIgZXdrX3ZpZXcKQEAgLTM1OTMsNyAr
MzU5NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19qc19vYmplY3RfYWRkKEV2YXNfT2JqZWN0ICpv
LCBFd2tfSlNfT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IHdpbmRvdy0+Z2xvYmFsRXhlYygpOwogCiAgICAgb2JqLT52aWV3ID0gbzsKLSAgICBKU0M6
OkpTT2JqZWN0ICpydW50aW1lT2JqZWN0ID0gKEpTQzo6SlNPYmplY3QqKUpTQzo6QmluZGluZ3M6
OkNJbnN0YW5jZTo6Y3JlYXRlKChOUE9iamVjdCopb2JqLCByb290KS0+Y3JlYXRlUnVudGltZU9i
amVjdChleGVjKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBydW50aW1lT2JqZWN0ID0gKEpTQzo6SlNP
YmplY3QqKUpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKChOUE9iamVjdCopb2JqLCBy
b290KS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKICAgICBKU0M6OklkZW50aWZpZXIgaWQg
PSBKU0M6OklkZW50aWZpZXIoZXhlYywgb2JqX25hbWUpOwogCiAgICAgSlNDOjpQdXRQcm9wZXJ0
eVNsb3Qgc2xvdDsKQEAgLTM2NTMsNyArMzY1NCw3IEBAIHZvaWQqIGV3a192aWV3X3Byb3RvY29s
X2hhbmRsZXJfcmVzb3VyY2VfZ2V0KEV2YXNfT2JqZWN0KiBvLCBzaXplX3QqIGJ5dGVzUmVhZCwK
ICAqIEBwYXJhbSB3IG5ldyBjb250ZW50IHdpZHRoLgogICogQHBhcmFtIGggbmV3IGNvbnRlbnQg
aGVpZ2h0LgogICovCi12b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09i
amVjdCAqbywgaW50IHcsIGludCBoKQordm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5n
ZWQoRXZhc19PYmplY3QqIG8sIGludCB3LCBpbnQgaCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
KTsKQEAgLTM2NzEsMTcgKzM2NzIsMTcgQEAgdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2No
YW5nZWQoRXZhc19PYmplY3QgKm8sIGludCB3LCBpbnQgaCkKICAqCiAgKiBAcmV0dXJuIHBhZ2Ug
c2l6ZS4KICAqLwotV2ViQ29yZTo6RmxvYXRSZWN0IGV3a192aWV3X3BhZ2VfcmVjdF9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitXZWJDb3JlOjpGbG9hdFJlY3QgZXdrX3ZpZXdfcGFnZV9yZWN0
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2Qp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKIAogICAgIFdlYkNvcmU6OkZyYW1l
KiBtYWluX2ZyYW1lID0gcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgcmV0dXJuIG1haW5f
ZnJhbWUtPnZpZXcoKS0+ZnJhbWVSZWN0KCk7Ci19Cit9IAogCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKLXZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0ICpv
LCBib29sIG5lZWRlZCkKK3ZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNf
T2JqZWN0KiBvLCBib29sIG5lZWRlZCkKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTM2ODksNyArMzY5MCw3IEBAIHZv
aWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBib29sIG5l
ZWRlZCkKICAgICBwcml2LT5mbGFncy5uZWVkX3RvdWNoX2V2ZW50cyA9IG5lZWRlZDsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldChjb25zdCBFdmFzX09iamVj
dCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5B
X0ZBTFNFKTsKQEAgLTM2OTcsNyArMzY5OCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19uZWVkX3Rv
dWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB9CiAjZW5kaWYKIAotRWluYV9C
b29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfVmlld19Nb2RlIHZpZXdf
bW9kZSkKK0VpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCogbywgRXdrX1Zp
ZXdfTW9kZSB2aWV3X21vZGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKQEAgLTM3MjUsNyArMzcyNiw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19t
b2RlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1ZpZXdfTW9kZSB2aWV3X21vZGUpCiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotRXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK0V3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9kZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRXdrX1ZpZXdfTW9kZSBtb2RlID0gRVdLX1ZJRVdfTU9E
RV9XSU5ET1dFRDsKIApAQCAtMzc2NCw3ICszNzY1LDcgQEAgRXdrX1ZpZXdfTW9kZSBld2tfdmll
d19tb2RlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJl
ZGl0b3JjbGllbnRzZWxlY3Rpb24sY2hhbmdlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12
b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3Qg
Km8pCit2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiZWRp
dG9yY2xpZW50LHNlbGVjdGlvbixjaGFuZ2VkIiwgMCk7CiB9CkBAIC0zNzc3LDcgKzM3NzgsNyBA
QCB2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmpl
Y3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAiZWRpdG9yY2xpZW50LGNvbnRlbnRzLGNoYW5n
ZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50
X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2VkaXRvcl9j
bGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJlZGl0b3JjbGllbnQsY29udGVudHMsY2hhbmdlZCIs
IDApOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107623</attachid>
            <date>2011-09-16 01:27:06 -0700</date>
            <delta_ts>2011-09-17 21:15:15 -0700</delta_ts>
            <desc>Patch for ewk_view.cpp</desc>
            <filename>patch-revert-pointer-ewk-view.patch</filename>
            <type>text/plain</type>
            <size>112470</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA1NDdhMTY5Li44MWY2NDhhIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjU0IEBACisyMDExLTA5LTE1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmV2ZXJ0IHBvaW50ZXIgb3BlcmF0b3IgY29k
aW5nIHN0eWxlIGluIGV3a192aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02ODIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFzIGZvciBwb2ludGVyIG9wZXJhdG9yIHBsYWNlbWVudCwgV2ViS2l0IGNv
ZGluZyBzdHlsZSBpcyBhcHBsaWVkIGluc3RlYWQgb2YKKyAgICAgICAgZWZsIGNvZGluZyBzdHls
ZS4KKworICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc21h
cnRfY2hhbmdlZCk6CisgICAgICAgIChfZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKToKKyAgICAg
ICAgKF9ld2tfdmlld19yZXBhaW50X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfcmVwYWludHNf
Zmx1c2gpOgorICAgICAgICAoX2V3a192aWV3X3Njcm9sbHNfcmVzaXplKToKKyAgICAgICAgKF9l
d2tfdmlld19zY3JvbGxfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKToK
KyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbCk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmUp
OgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9rZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZF9jb25zb2xlX21l
c3NhZ2UpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KToK
KyAgICAgICAgKF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtKToKKyAgICAg
ICAgKF9ld2tfdmlld19zbWFydF9zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQpOgorICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdCk6CisgICAgICAgIChfZXdr
X3ZpZXdfb25fZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X29uX2ZvY3VzX291dCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOgorICAgICAgICAoX2V3a192aWV3X29u
X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfZG93
bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fa2V5X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19j
b3JlX2ZyYW1lX25ldyk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAo
X2V3a192aWV3X3ByaXZfZGVsKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9hZGQpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2RlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcmVz
aXplKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9jYWxjdWxhdGUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jl
c2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQpOgorICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X2ZsdXNoKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVy
X3JlZ2lvbik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9y
YWRpdXMpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKToKKyAg
ICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcCk6CisgICAgICAgIChfZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9maW5pc2gpOgorICAgICAgICAoX2V3a192aWV3X3pvb21fYW5p
bWF0ZWRfY3VycmVudCk6CisgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYik6Cisg
ICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQpOgorICAgICAgICAoX2V3a192
aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZSk6CisgICAgICAgIChld2tfdmlld19iYXNl
X3NtYXJ0X3NldCk6CisgICAgICAgIChld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X3RoZW1lX3NldCk6CisgICAgICAgIChld2tfdmlld190aGVtZV9nZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfZm9jdXNl
ZF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXJpX3NldCk6CisgICAgICAgIChld2tfdmlld191
cmlfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3RpdGxlX2dldCk6CisgICAgICAgIChld2tfdmll
d19lZGl0YWJsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X2JnX2NvbG9yX2dldCk6CisgICAgICAgIChld2tfdmlld190ZXh0X3NlYXJj
aCk6CisgICAgICAgIChld2tfdmlld190ZXh0X21hdGNoZXNfbWFyayk6CisgICAgICAgIChld2tf
dmlld190ZXh0X21hdGNoZXNfdW5tYXJrX2FsbCk6CisgICAgICAgIChld2tfdmlld190ZXh0X21h
dGNoZXNfaGlnaGxpZ2h0X3NldCk6CisgICAgICAgIChld2tfdmlld190ZXh0X21hdGNoZXNfaGln
aGxpZ2h0X2dldCk6CisgICAgICAgIChld2tfdmlld19lZGl0YWJsZV9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfc2VsZWN0aW9uX2dldCk6CisgICAgICAgIChfZXdrX3ZpZXdfZWRpdG9yX2NvbW1h
bmQpOgorICAgICAgICAoZXdrX3ZpZXdfZXhlY3V0ZV9lZGl0b3JfY29tbWFuZCk6CisgICAgICAg
IChld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudCk6CisgICAgICAgIChld2tfdmll
d19sb2FkX3Byb2dyZXNzX2dldCk6CisgICAgICAgIChld2tfdmlld19zdG9wKToKKyAgICAgICAg
KGV3a192aWV3X3JlbG9hZCk6CisgICAgICAgIChld2tfdmlld19yZWxvYWRfZnVsbCk6CisgICAg
ICAgIChld2tfdmlld19iYWNrKToKKyAgICAgICAgKGV3a192aWV3X2ZvcndhcmQpOgorICAgICAg
ICAoZXdrX3ZpZXdfbmF2aWdhdGUpOgorICAgICAgICAoZXdrX3ZpZXdfYmFja19wb3NzaWJsZSk6
CisgICAgICAgIChld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a192aWV3
X25hdmlnYXRlX3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX2dl
dCk6CisgICAgICAgIChld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfaGlzdG9yeV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9nZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfem9vbV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290
aF9zY2FsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV93ZWFrX3NldCk6CisgICAgICAgIChld2tfdmll
d196b29tX2FuaW1hdGVkX21hcmtfc3RhcnQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9tYXJrX2VuZCk6CisgICAgICAgIChld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3Vy
cmVudCk6CisgICAgICAgIChld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcCk6CisgICAg
ICAgIChld2tfdmlld196b29tX2FuaW1hdGVkX3NldCk6CisgICAgICAgIChld2tfdmlld196b29t
X3RleHRfb25seV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKToKKyAgICAgICAgKGV3a192aWV3
X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKToKKyAgICAgICAgKGV3a192aWV3X3ByZV9yZW5k
ZXJfY2FuY2VsKToKKyAgICAgICAgKGV3a192aWV3X2VuYWJsZV9yZW5kZXIpOgorICAgICAgICAo
ZXdrX3ZpZXdfZGlzYWJsZV9yZW5kZXIpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ191c2Vy
X2FnZW50X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X2dldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYXV0
b19zaHJpbmtfaW1hZ2VzX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2F1dG9fc2hy
aW5rX2ltYWdlc19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19y
ZXNpemVfd2luZG93X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRv
X3Jlc2l6ZV93aW5kb3dfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3Nj
cmlwdHNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0
KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3NfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93c19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdf
cHJpdmF0ZV9icm93c2luZ19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRl
X2Jyb3dzaW5nX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2Nh
Y2hlX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX3Nl
dCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX2dldCk6CisgICAg
ICAgIChld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldCk6CisgICAgICAgIChld2tf
dmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5j
b2RpbmdfZGVmYXVsdF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19k
ZWZhdWx0X3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9y
X3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldCk6
CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX2dldCk6
CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldCk6
CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX2dldCk6CisgICAg
ICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX3NldCk6CisgICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3NpemVfZ2V0KToKKyAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9nZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZvbnRfZmFt
aWx5X25hbWVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldCk6CisgICAg
ICAgIChld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2dldCk6CisgICAgICAgIChld2tfdmlld19z
ZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfcGFn
ZV9jYWNoZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldCk6
CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3Bh
dGhfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZh
bF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFs
X2dldCk6CisgICAgICAgIChld2tfdmlld19zbWFydF9kYXRhX2dldCk6CisgICAgICAgIChld2tf
dmlld19yZXBhaW50c19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dl
dCk6CisgICAgICAgIChld2tfdmlld19yZXBhaW50X2FkZCk6CisgICAgICAgIChld2tfdmlld19s
YXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZSk6CisgICAgICAgIChld2tfdmlld19zY3JvbGxzX3By
b2Nlc3MpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcpOgorICAgICAgICAo
ZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2Nv
bnRleHRfc2F2ZSk6CisgICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUpOgor
ICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlwKToKKyAgICAgICAgKGV3a192aWV3
X3BhaW50X2NvbnRleHRfcGFpbnQpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9w
YWludF9jb250ZW50cyk6CisgICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKToK
KyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKToKKyAgICAgICAgKGV3
a192aWV3X3BhaW50KToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRlbnRzKToKKyAgICAg
ICAgKGV3a192aWV3X3JlYWR5KToKKyAgICAgICAgKGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0
ZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3VyaV9jaGFuZ2VkKToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfc3RhcnRlZCk6CisgICAgICAg
IChld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZCk6CisgICAgICAgIChld2tfdmlld19s
b2FkX3Byb3Zpc2lvbmFsKToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfc2hvdyk6CisgICAgICAg
IChld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZnJhbWVf
bWFpbl9pY29uX3JlY2VpdmVkKToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfZmluaXNoZWQpOgor
ICAgICAgICAoZXdrX3ZpZXdfbG9hZF9lcnJvcik6CisgICAgICAgIChld2tfdmlld19sb2FkX3By
b2dyZXNzX2NoYW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZSk6CisgICAg
ICAgIChld2tfdmlld193aW5kb3dfY3JlYXRlKToKKyAgICAgICAgKGV3a192aWV3X3dpbmRvd19j
bG9zZSk6CisgICAgICAgIChld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKToKKyAgICAgICAg
KGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KToKKyAgICAgICAgKGV3a192aWV3X3Rvb2xi
YXJzX3Zpc2libGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0
KToKKyAgICAgICAgKGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldCk6CisgICAgICAgIChl
d2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc3RhdHVz
YmFyX3RleHRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldCk6CisgICAgICAgIChl
d2tfdmlld19tZW51YmFyX3Zpc2libGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X21lbnViYXJf
dmlzaWJsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdG9vbHRpcF90ZXh0X3NldCk6CisgICAg
ICAgIChld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKToKKyAgICAgICAgKGV3a192aWV3X3J1
bl9qYXZhc2NyaXB0X2FsZXJ0KToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2Nv
bmZpcm0pOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KToKKyAgICAg
ICAgKGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdCk6CisgICAgICAgIChld2tf
dmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90YSk6CisgICAgICAgIChld2tfdmlld19ydW5fb3Bl
bl9wYW5lbCk6CisgICAgICAgIChld2tfdmlld19yZXBhaW50KToKKyAgICAgICAgKGV3a192aWV3
X3Njcm9sbCk6CisgICAgICAgIChld2tfdmlld19jb3JlX3BhZ2VfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X2ZyYW1lX2NyZWF0ZSk6CisgICAgICAgIChld2tfdmlld19wbHVnaW5fY3JlYXRlKToK
KyAgICAgICAgKGV3a192aWV3X3BvcHVwX25ldyk6CisgICAgICAgIChld2tfdmlld19wb3B1cF9k
ZXN0cm95KToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX3NlbGVjdGVkX3NldCk6CisgICAgICAg
IChld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0
X2F0dHJpYnV0ZXNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNf
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X3pvb21fcmFuZ2VfbWluX2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX3JhbmdlX21h
eF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZGV2aWNlX3Bp
eGVsX3JhdGlvX2dldCk6CisgICAgICAgIChld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlfbm9u
ZW1wdHlfbGF5b3V0KToKKyAgICAgICAgKGV3a192aWV3X2Rpc3BhdGNoX2RpZF9maW5pc2hfbG9h
ZGluZyk6CisgICAgICAgIChld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVkX2Zvcl9uZXdw
YWdlKToKKyAgICAgICAgKGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKToKKyAg
ICAgICAgKGV3a192aWV3X2pzX29iamVjdF9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfY29udGVu
dHNfc2l6ZV9jaGFuZ2VkKToKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfcmVjdF9nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X25lZWRfdG91Y2hfZXZlbnRzX2dldCk6CisgICAgICAgIChld2tfdmlld19tb2RlX3NldCk6Cisg
ICAgICAgIChld2tfdmlld19tb2RlX2dldCk6CisgICAgICAgIChld2tfdmlld19lZGl0b3JfY2xp
ZW50X3NlbGVjdGlvbl9jaGFuZ2VkKToKKyAgICAgICAgKGV3a192aWV3X2VkaXRvcl9jbGllbnRf
Y29udGVudHNfY2hhbmdlZCk6CisKIDIwMTEtMDktMTUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW5hbWUgRU5BQkxFKERBVEFCQVNFKSB0byBFTkFCTEUoU1FM
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggY2U1NTVmZC4uMGI1
NGI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC04OCwyNiArODgsMjYgQEAg
c3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklFV19TQ1JPTExTX1NJWkVfTUFYX0ZSRUUgPSAzMjsK
ICAqIEBpbnRlcm5hbAogICovCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7Ci0gICAg
V2ViQ29yZTo6UGFnZSAqcGFnZTsKLSAgICBXZWJDb3JlOjpTZXR0aW5ncyAqcGFnZV9zZXR0aW5n
czsKLSAgICBXZWJDb3JlOjpGcmFtZSAqbWFpbl9mcmFtZTsKKyAgICBXZWJDb3JlOjpQYWdlKiBw
YWdlOworICAgIFdlYkNvcmU6OlNldHRpbmdzKiBwYWdlX3NldHRpbmdzOworICAgIFdlYkNvcmU6
OkZyYW1lKiBtYWluX2ZyYW1lOwogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdw
b3J0X2FyZ3VtZW50czsKLSAgICBFd2tfSGlzdG9yeSAqaGlzdG9yeTsKKyAgICBFd2tfSGlzdG9y
eSogaGlzdG9yeTsKICAgICBzdHJ1Y3QgewogICAgICAgICB2b2lkKiBjb250ZXh0OwogICAgICAg
ICBFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyX0NiIGZ1bmN0aW9uOwogICAgIH0gY3VzdG9tX3Jl
c291cmNlX2hhbmRsZXI7CiAgICAgc3RydWN0IHsKICAgICAgICAgRXdrX01lbnUgbWVudTsKLSAg
ICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICptZW51X2NsaWVudDsKKyAgICAgICAgV2Vi
Q29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51X2NsaWVudDsKICAgICB9IHBvcHVwOwogICAgIHN0
cnVjdCB7Ci0gICAgICAgIEVpbmFfUmVjdGFuZ2xlICphcnJheTsKKyAgICAgICAgRWluYV9SZWN0
YW5nbGUqIGFycmF5OwogICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgIHNpemVfdCBhbGxv
Y2F0ZWQ7CiAgICAgfSByZXBhaW50czsKICAgICBzdHJ1Y3QgewotICAgICAgICBFd2tfU2Nyb2xs
X1JlcXVlc3QgKmFycmF5OworICAgICAgICBFd2tfU2Nyb2xsX1JlcXVlc3QqIGFycmF5OwogICAg
ICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0ZWQ7CiAgICAgfSBzY3Jv
bGxzOwpAQCAtMTE3LDIyICsxMTcsMjIgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgICAgICBFaW5hX0Jvb2wgbmVlZF90b3VjaF9ldmVudHM6MTsKICAgICB9IGZsYWdzOwog
ICAgIHN0cnVjdCB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnVzZXJfYWdlbnQ7Ci0gICAgICAgIGNv
bnN0IGNoYXIgKnVzZXJfc3R5bGVzaGVldDsKLSAgICAgICAgY29uc3QgY2hhciAqZW5jb2Rpbmdf
ZGVmYXVsdDsKLSAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmdfY3VzdG9tOwotICAgICAgICBj
b25zdCBjaGFyICp0aGVtZTsKLSAgICAgICAgY29uc3QgY2hhciAqbG9jYWxfc3RvcmFnZV9kYXRh
YmFzZV9wYXRoOworICAgICAgICBjb25zdCBjaGFyKiB1c2VyX2FnZW50OworICAgICAgICBjb25z
dCBjaGFyKiB1c2VyX3N0eWxlc2hlZXQ7CisgICAgICAgIGNvbnN0IGNoYXIqIGVuY29kaW5nX2Rl
ZmF1bHQ7CisgICAgICAgIGNvbnN0IGNoYXIqIGVuY29kaW5nX2N1c3RvbTsKKyAgICAgICAgY29u
c3QgY2hhciogdGhlbWU7CisgICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsX3N0b3JhZ2VfZGF0YWJh
c2VfcGF0aDsKICAgICAgICAgaW50IGZvbnRfbWluaW11bV9zaXplOwogICAgICAgICBpbnQgZm9u
dF9taW5pbXVtX2xvZ2ljYWxfc2l6ZTsKICAgICAgICAgaW50IGZvbnRfZGVmYXVsdF9zaXplOwog
ICAgICAgICBpbnQgZm9udF9tb25vc3BhY2Vfc2l6ZTsKLSAgICAgICAgY29uc3QgY2hhciAqZm9u
dF9zdGFuZGFyZDsKLSAgICAgICAgY29uc3QgY2hhciAqZm9udF9jdXJzaXZlOwotICAgICAgICBj
b25zdCBjaGFyICpmb250X21vbm9zcGFjZTsKLSAgICAgICAgY29uc3QgY2hhciAqZm9udF9mYW50
YXN5OwotICAgICAgICBjb25zdCBjaGFyICpmb250X3NlcmlmOwotICAgICAgICBjb25zdCBjaGFy
ICpmb250X3NhbnNfc2VyaWY7CisgICAgICAgIGNvbnN0IGNoYXIqIGZvbnRfc3RhbmRhcmQ7Cisg
ICAgICAgIGNvbnN0IGNoYXIqIGZvbnRfY3Vyc2l2ZTsKKyAgICAgICAgY29uc3QgY2hhciogZm9u
dF9tb25vc3BhY2U7CisgICAgICAgIGNvbnN0IGNoYXIqIGZvbnRfZmFudGFzeTsKKyAgICAgICAg
Y29uc3QgY2hhciogZm9udF9zZXJpZjsKKyAgICAgICAgY29uc3QgY2hhciogZm9udF9zYW5zX3Nl
cmlmOwogICAgICAgICBFaW5hX0Jvb2wgYXV0b19sb2FkX2ltYWdlczoxOwogICAgICAgICBFaW5h
X0Jvb2wgYXV0b19zaHJpbmtfaW1hZ2VzOjE7CiAgICAgICAgIEVpbmFfQm9vbCBlbmFibGVfYXV0
b19yZXNpemVfd2luZG93OjE7CkBAIC0xNzIsNyArMTcyLDcgQEAgc3RydWN0IF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEgewogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgRXZhc19Db29yZCB4
LCB5OwogICAgICAgICB9IGNlbnRlcjsKLSAgICAgICAgRWNvcmVfQW5pbWF0b3IgKmFuaW1hdG9y
OworICAgICAgICBFY29yZV9BbmltYXRvciogYW5pbWF0b3I7CiAgICAgfSBhbmltYXRlZF96b29t
OwogfTsKIApAQCAtMTgxLDE1ICsxODEsMTUgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEgewogI2Vsc2UKICNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCAuLi4pICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
Y29uc3QgY2hhciAqX3RtcF9vdHlwZSA9IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgY29uc3QgRXZhc19TbWFydCAqX3RtcF9zID0gZXZhc19vYmplY3Rf
c21hcnRfc21hcnRfZ2V0KG8pOyAgICAgIFwKKyAgICAgICAgY29uc3QgY2hhciogX3RtcF9vdHlw
ZSA9IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29u
c3QgRXZhc19TbWFydCogX3RtcF9zID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KG8pOyAg
ICAgIFwKICAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfcykpIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAg
ICAoIiVwICglcykgaXMgbm90IGEgc21hcnQgb2JqZWN0ISIsIG8sICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyAqX3RtcF9zYyA9IGV2YXNfc21hcnRfY2xh
c3NfZ2V0KF90bXBfcyk7IFwKKyAgICAgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogX3RtcF9z
YyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KF90bXBfcyk7IFwKICAgICAgICAgaWYgKEVJTkFfVU5M
SUtFTFkoIV90bXBfc2MpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAoIiVwICglcykgaXMgbm90IGEgc21hcnQg
b2JqZWN0ISIsIG8sICAgICAgICAgICAgICAgICAgIFwKQEAgLTIwNyw3ICsyMDcsNyBAQCBzdHJ1
Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAjZW5kaWYKIAogI2RlZmluZSBFV0tfVklFV19T
RF9HRVQobywgcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFd2tf
Vmlld19TbWFydF9EYXRhICpwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KG8pCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogcHRyID0gKEV3a19W
aWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pCiAKICNkZWZpbmUg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICAgXAogICAgIEVX
S19WSUVXX1RZUEVfQ0hFQ0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgICBcCkBAIC0y
MTksNyArMjE5LDcgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIH0KIAog
I2RlZmluZSBFV0tfVklFV19QUklWX0dFVChzZCwgcHRyKSAgICAgICAgICAgICAgXAotICAgIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSAqcHRyID0gc2QtPl9wcml2CisgICAgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBwdHIgPSBzZC0+X3ByaXYKIAogI2RlZmluZSBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHB0ciwgLi4uKSAgICAgICAgICAgICAgIFwKICAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yMjksNyAr
MjI5LDcgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICByZXR1cm4g
X19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9
CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QpCiB7CiAgICAgaWYgKHNkLT5jaGFuZ2VkLmFueSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjM3LDIxICsyMzcsMjEgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5n
ZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2hhbmdl
ZChzZC0+c2VsZik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3JlcGFpbnRzX3Jl
c2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVfdCBzaXplKQorc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwgc2l6ZV90IHNpemUpCiB7Ci0gICAgdm9pZCAqdG1wID0gcmVhbGxvYyhwcml2LT5yZXBh
aW50cy5hcnJheSwgc2l6ZSAqIHNpemVvZihFaW5hX1JlY3RhbmdsZSkpOworICAgIHZvaWQqIHRt
cCA9IHJlYWxsb2MocHJpdi0+cmVwYWludHMuYXJyYXksIHNpemUgKiBzaXplb2YoRWluYV9SZWN0
YW5nbGUpKTsKICAgICBpZiAoIXRtcCkgewogICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IHJl
YWxsb2MgcmVwYWludHMgYXJyYXkgdG8gJXp1IGVsZW1lbnRzLiIsIHNpemUpOwogICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJpdi0+cmVwYWludHMuYWxsb2NhdGVkID0g
c2l6ZTsKLSAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5hX1JlY3RhbmdsZSAqKXRtcDsK
KyAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5hX1JlY3RhbmdsZSopdG1wOwogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50X2FkZChF
d2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBF
dmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50
X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29y
ZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKLSAgICBFaW5hX1JlY3RhbmdsZSAq
cjsKKyAgICBFaW5hX1JlY3RhbmdsZSogcjsKIAogICAgIC8vIGZwcmludGYoc3RkZXJyLCAiPj4+
IHJlcGFpbnQgcmVxdWVzdGVkOiAlZCwlZCslZHglZFxuIiwgeCwgeSwgdywgaCk7CiAgICAgaWYg
KHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA9PSBwcml2LT5yZXBhaW50cy5jb3VudCkgewpAQCAt
MjcyLDEwICsyNzIsMTAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRfYWRkKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCB4LCBFdmEKICAgICByLT53ID0gdzsK
ICAgICByLT5oID0gaDsKIAotICAgIERCRygiYWRkIHJlcGFpbnQgJWQsICVkKyVkeCVkIiwgeCwg
eSwgdywgaCk7CisgICAgREJHKCJhZGQgcmVwYWludCAlZCwlZCslZHglZCIsIHgsIHksIHcsIGgp
OwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2goRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBwcml2LT5yZXBhaW50cy5jb3VudCA9
IDA7CiAgICAgaWYgKHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA8PSBFV0tfVklFV19SRVBBSU5U
U19TSVpFX01BWF9GUkVFKQpAQCAtMjgzLDIyICsyODMsMjIgQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X3JlcGFpbnRzX2ZsdXNoKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKICAgICBfZXdr
X3ZpZXdfcmVwYWludHNfcmVzaXplKHByaXYsIEVXS19WSUVXX1JFUEFJTlRTX1NJWkVfTUFYX0ZS
RUUpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zY3JvbGxzX3Jlc2l6ZShFd2tf
Vmlld19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVfdCBzaXplKQorc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc2Nyb2xsc19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXpl
X3Qgc2l6ZSkKIHsKLSAgICB2b2lkICp0bXAgPSByZWFsbG9jKHByaXYtPnNjcm9sbHMuYXJyYXks
IHNpemUgKiBzaXplb2YoRXdrX1Njcm9sbF9SZXF1ZXN0KSk7CisgICAgdm9pZCogdG1wID0gcmVh
bGxvYyhwcml2LT5zY3JvbGxzLmFycmF5LCBzaXplICogc2l6ZW9mKEV3a19TY3JvbGxfUmVxdWVz
dCkpOwogICAgIGlmICghdG1wKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgcmVhbGxv
YyBzY3JvbGxzIGFycmF5IHRvICV6dSBlbGVtZW50cy4iLCBzaXplKTsKICAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CiAgICAgfQogICAgIHByaXYtPnNjcm9sbHMuYWxsb2NhdGVkID0gc2l6ZTsK
LSAgICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxfUmVxdWVzdCAqKXRtcDsKKyAg
ICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxfUmVxdWVzdCopdG1wOwogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRkKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBF
aW5hX0Jvb2wgbWFpbl9zY3JvbGwpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsX2FkZChF
d2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHks
IEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwg
RWluYV9Cb29sIG1haW5fc2Nyb2xsKQogewotICAgIEV3a19TY3JvbGxfUmVxdWVzdCAqcjsKLSAg
ICBFd2tfU2Nyb2xsX1JlcXVlc3QgKnJfZW5kOworICAgIEV3a19TY3JvbGxfUmVxdWVzdCogcjsK
KyAgICBFd2tfU2Nyb2xsX1JlcXVlc3QqIHJfZW5kOwogICAgIEV2YXNfQ29vcmQgeDIgPSB4ICsg
dywgeTIgPSB5ICsgaDsKIAogICAgIHIgPSBwcml2LT5zY3JvbGxzLmFycmF5OwpAQCAtMzQzLDEw
ICszNDMsMTAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbF9hZGQoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIGR4LCBFdmEKICAgICByLT5keCA9IGR4OwogICAg
IHItPmR5ID0gZHk7CiAgICAgci0+bWFpbl9zY3JvbGwgPSBtYWluX3Njcm9sbDsKLSAgICBEQkco
ImFkZCBzY3JvbGwgaW4gcmVnaW9uOiAlZCwgJWQrJWR4JWQgJSswM2QsICUrMDNkIiwgeCwgeSwg
dywgaCwgZHgsIGR5KTsKKyAgICBEQkcoImFkZCBzY3JvbGwgaW4gcmVnaW9uOiAlZCwlZCslZHgl
ZCAlKzAzZCwlKzAzZCIsIHgsIHksIHcsIGgsIGR4LCBkeSk7CiAKLSAgICBFaW5hX1JlY3Rhbmds
ZSAqcHI7Ci0gICAgRWluYV9SZWN0YW5nbGUgKnByX2VuZDsKKyAgICBFaW5hX1JlY3RhbmdsZSog
cHI7CisgICAgRWluYV9SZWN0YW5nbGUqIHByX2VuZDsKICAgICBzaXplX3QgY291bnQ7CiAgICAg
cHIgPSBwcml2LT5yZXBhaW50cy5hcnJheTsKICAgICBjb3VudCA9IHByaXYtPnJlcGFpbnRzLmNv
dW50OwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRk
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhCiAgICAgfQog
fQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRl
X0RhdGEgKnByaXYpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYpCiB7CiAgICAgcHJpdi0+c2Nyb2xscy5jb3VudCA9IDA7CiAg
ICAgaWYgKHByaXYtPnNjcm9sbHMuYWxsb2NhdGVkIDw9IEVXS19WSUVXX1NDUk9MTFNfU0laRV9N
QVhfRlJFRSkKQEAgLTM2NiwxMCArMzY2LDEwIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3Jv
bGxzX2ZsdXNoKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKIH0KIAogLy8gRGVmYXVsdCBF
dmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9mb2N1c19pbihFd2tfVmlld19T
bWFydF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2lu
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBw
cml2KTsKLSAgICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXIgKmZjID0gcHJpdi0+cGFnZS0+Zm9j
dXNDb250cm9sbGVyKCk7CisgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9IHByaXYt
PnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpOwogICAgIERCRygibz0lcCwgZmM9JXAiLCBzZC0+c2Vs
ZiwgZmMpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmYywgRUlOQV9GQUxT
RSk7CiAKQEAgLTM3OCwxMCArMzc4LDEwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Nt
YXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICAgIHJldHVybiBFSU5BX1RS
VUU7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tf
Vmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2Zv
Y3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7Ci0gICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyICpmYyA9IHByaXYtPnBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpOworICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciogZmMg
PSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKTsKICAgICBEQkcoIm89JXAsIGZjPSVwIiwg
c2QtPnNlbGYsIGZjKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZmMsIEVJ
TkFfRkFMU0UpOwogCkBAIC0zOTAsMjkgKzM5MCwyOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9mb2N1c19vdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vf
d2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hl
ZWwgKmV2KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2KQog
ewogICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChzZC0+bWFpbl9mcmFtZSwg
ZXYpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2KQor
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bihFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldikKIHsKICAgICByZXR1
cm4gZXdrX2ZyYW1lX2ZlZWRfbW91c2VfZG93bihzZC0+bWFpbl9mcmFtZSwgZXYpOwogfQogCi1z
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCAqZXYpCitzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zbWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9VcCogZXYpCiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21v
dXNlX3VwKHNkLT5tYWluX2ZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X21vdXNlX21vdmUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNf
RXZlbnRfTW91c2VfTW92ZSAqZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9t
b3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNl
X01vdmUqIGV2KQogewogICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKHNkLT5t
YWluX2ZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tl
eV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3du
ICpldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBldikKIHsKLSAgICBF
dmFzX09iamVjdCAqZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChzZC0+c2VsZik7
CisgICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoc2Qt
PnNlbGYpOwogCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgZnJhbWUgPSBzZC0+bWFpbl9mcmFt
ZTsKQEAgLTQyMCw5ICs0MjAsOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9r
ZXlfZG93bihFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdgogICAgIHJldHVy
biBld2tfZnJhbWVfZmVlZF9rZXlfZG93bihmcmFtZSwgZXYpOwogfQogCi1zdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0
IEV2YXNfRXZlbnRfS2V5X1VwICpldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAq
IGV2KQogewotICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRf
Z2V0KHNkLT5zZWxmKTsKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9m
b2N1c2VkX2dldChzZC0+c2VsZik7CiAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBmcmFtZSA9
IHNkLT5tYWluX2ZyYW1lOwpAQCAtNDMwLDMxICs0MzAsMzEgQEAgc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFz
X0V2ZW4KICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKGZyYW1lLCBldik7CiB9CiAK
LXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGRfY29uc29sZV9tZXNzYWdlKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBjaGFyICptZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51
bWJlciwgY29uc3QgY2hhciAqc291cmNlSUQpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
YWRkX2NvbnNvbGVfbWVzc2FnZShFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgY2hhciog
bWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IGNoYXIqIHNvdXJjZUlEKQog
ewogICAgIElORigiY29uc29sZSBtZXNzYWdlOiAlcyBAJWQ6ICVzXG4iLCBzb3VyY2VJRCwgbGlu
ZU51bWJlciwgbWVzc2FnZSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9ydW5f
amF2YXNjcmlwdF9hbGVydChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19PYmplY3QgKmZy
YW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3J1
bl9qYXZhc2NyaXB0X2FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFdmFzX09iamVjdCog
ZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgSU5GKCJqYXZhc2NyaXB0IGFsZXJ0
OiAlc1xuIiwgbWVzc2FnZSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfT2Jq
ZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qs
IEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBJTkYoImph
dmFzY3JpcHQgY29uZmlybTogJXMiLCBtZXNzYWdlKTsKICAgICBJTkYoImphdmFzY3JpcHQgY29u
ZmlybSAoSEFSRCBDT0RFRCk/IFlFUyIpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlw
dChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Nt
YXJ0X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkK
IHsKICAgICBJTkYoInNob3VsZCBpbnRlcnJ1cHQgamF2YXNjcmlwdD9cbiIKICAgICAgICAgICAg
ICJcdChIQVJEIENPREVEKSBOTyIpOwogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1zdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9tcHQoRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqbWVzc2Fn
ZSwgY29uc3QgY2hhciAqZGVmYXVsdFZhbHVlLCBjaGFyICoqdmFsdWUpCitzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9tcHQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSwgY29uc3Qg
Y2hhciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUpCiB7CiAgICAgKnZhbHVlID0gc3RyZHVw
KCJ0ZXN0Iik7CiAgICAgRWluYV9Cb29sIHJldCA9IEVJTkFfVFJVRTsKQEAgLTQ2OCw3OSArNDY4
LDc5IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3By
b21wdChFd2tfVmlld19TbWFydF9EYXRhICpzZCwKIH0KIAogLy8gRXZlbnQgSGFuZGxpbmcgLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1zdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19P
YmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9j
dXNfaW4odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2lu
Zm8pCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5mb2N1c19pbik7CiAgICAgc2Qt
PmFwaS0+Zm9jdXNfaW4oc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNf
b3V0KHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9pbmZv
KQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBl
LCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFd2tfVmlld19TbWFy
dF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGktPmZvY3VzX291dCk7CiAgICAgc2QtPmFwaS0+Zm9jdXNfb3V0KHNkKTsKIH0K
IAotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQgKmRhdGEsIEV2YXMg
KmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2
b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfV2hlZWwgKmV2ID0gKEV2
YXNfRXZlbnRfTW91c2VfV2hlZWwgKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91
c2VfV2hlZWwqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqKWV2ZW50X2luZm87CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV93aGVlbCk7CiAgICAgc2QtPmFwaS0+bW91c2Vf
d2hlZWwoc2QsIGV2KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24o
dm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBF
dmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNl
X0Rvd24gKmV2ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biAqKWV2ZW50X2luZm87Ci0gICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7CisgICAg
RXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX0Rvd24gKilldmVu
dF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7CiAgICAgc2Qt
PmFwaS0+bW91c2VfZG93bihzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
bW91c2VfdXAodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50
X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZh
cyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVu
dF9Nb3VzZV9VcCAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9VcCAqKWV2ZW50X2luZm87Ci0gICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7Cisg
ICAgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9VcCopZXZlbnRf
aW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRh
KilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3VwKTsKICAgICBzZC0+YXBp
LT5tb3VzZV91cChzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vf
bW92ZSh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5m
bykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQqIGRhdGEsIEV2YXMq
IGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRf
TW91c2VfTW92ZSAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICopZXZlbnRfaW5mbzsKLSAg
ICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsK
KyAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfTW92ZSop
ZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFy
dF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX21vdmUpOwogICAg
IHNkLT5hcGktPm1vdXNlX21vdmUoc2QsIGV2KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3
X29uX2tleV9kb3duKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpl
dmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEs
IEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNf
RXZlbnRfS2V5X0Rvd24gKmV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24gKilldmVudF9pbmZvOwot
ICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRh
OworICAgIEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2
ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfZG93bik7CiAgICAgc2Qt
PmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tl
eV91cCh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5m
bykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfdXAodm9pZCogZGF0YSwgRXZhcyogZSwg
RXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9LZXlf
VXAgKmV2ID0gKEV2YXNfRXZlbnRfS2V5X1VwICopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19T
bWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFdmFzX0V2
ZW50X0tleV9VcCogZXYgPSAoRXZhc19FdmVudF9LZXlfVXAqKWV2ZW50X2luZm87CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfdXApOwogICAgIHNkLT5hcGktPmtleV91cChzZCwgZXYp
OwogfQogCi1zdGF0aWMgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBfZXdrX3ZpZXdf
Y29yZV9mcmFtZV9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19WaWV3X1ByaXZhdGVf
RGF0YSAqcHJpdiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50ICpvd25lcikKK3N0YXRp
YyBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IF9ld2tfdmlld19jb3JlX2ZyYW1lX25l
dyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyKQogewotICAgIFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsICpmbGMgPSBuZXcgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmwoc2QtPnNlbGYpOworICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBmbGMgPSBu
ZXcgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwoc2QtPnNlbGYpOwogICAgIGlmICghZmxj
KSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIGZyYW1lIGxvYWRlciBjbGll
bnQuIik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTUyLDEwICs1NTIsMTAgQEAgc3RhdGljIFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KEV3
a19WaWV3X1NtYXJ0X0QKIAogc3RhdGljIEV2YXNfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVW
QVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCi1zdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
ICpfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QpCiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2ID0KLSAgICAgICAgKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSAqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKSk7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0KKyAgICAgICAgKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEp
KTsKICAgICBBdG9taWNTdHJpbmcgczsKICAgICBXZWJDb3JlOjpLVVJMIHVybDsKIApAQCAtNjg5
LDcgKzY4OSw3IEBAIGVycm9yX3BhZ2U6CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYpCitzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogewog
ICAgIGlmICghcHJpdikKICAgICAgICAgcmV0dXJuOwpAQCAtNzIwLDE2ICs3MjAsMTYgQEAgc3Rh
dGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikK
ICAgICBmcmVlKHByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2
YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVj
dCogbykKIHsKLSAgICBjb25zdCBFdmFzX1NtYXJ0ICpzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0
X3NtYXJ0X2dldChvKTsKLSAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzICpzYyA9IGV2YXNfc21h
cnRfY2xhc3NfZ2V0KHNtYXJ0KTsKLSAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyAqYXBp
ID0gKGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzICopc2M7CisgICAgY29uc3QgRXZhc19TbWFy
dCogc21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7CisgICAgY29uc3QgRXZh
c19TbWFydF9DbGFzcyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChzbWFydCk7CisgICAgY29u
c3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tfVmlld19TbWFydF9DbGFz
cyopc2M7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXBpLT5iYWNraW5nX3N0b3Jl
X2FkZCk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2QpIHsKLSAg
ICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWNhbGxvYygxLCBzaXplb2YoRXdrX1Zp
ZXdfU21hcnRfRGF0YSkpOworICAgICAgICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKiljYWxs
b2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKICAgICAgICAgaWYgKCFzZCkgewog
ICAgICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19TbWFydF9E
YXRhIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04MDAsMTcgKzgwMCwxNyBAQCBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0ICpvKQogI3VuZGVmIENPTk5FQ1QK
IH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCAqbykKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUKG8sIHNkKTsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYgPSBz
ZCA/IHNkLT5fcHJpdiA6IDA7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gc2Qg
PyBzZC0+X3ByaXYgOiAwOwogCiAgICAgZXdrX3ZpZXdfc3RvcChvKTsKICAgICBfcGFyZW50X3Nj
LmRlbChvKTsKICAgICBfZXdrX3ZpZXdfcHJpdl9kZWwocHJpdik7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZh
c19Db29yZCBoKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVj
dCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCk7CiAKQEAgLTgyMSwxNCArODIxLDE0IEBAIHN0YXRpYyB2b2lkIF9l
d2tfdmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19D
b29yZCBoKQogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0KIAotc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZh
c19Db29yZCB5KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3Qq
IG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QpOwogICAgIHNkLT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9UUlVFOwog
ICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192
aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCAqbykKK3N0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
KG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC04NTAsNyArODUw
LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCAq
bykKICAgICAgICAgcHJpdi0+c2Nyb2xscy5jb3VudCwgcHJpdi0+cmVwYWludHMuY291bnQpOwog
CiAgICAgaWYgKHNkLT5jaGFuZ2VkLnNpemUgJiYgKCh3ICE9IHNkLT52aWV3LncpIHx8IChoICE9
IHNkLT52aWV3LmgpKSkgewotICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBwcml2
LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9
IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKHZpZXcpIHsKICAgICAgICAg
ICAgIHZpZXctPnJlc2l6ZSh3LCBoKTsKICAgICAgICAgICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7
CkBAIC04ODgsNyArODg4LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0
ZShFdmFzX09iamVjdCAqbykKICAgICBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2gocHJpdik7CiAK
ICAgICBpZiAoc2QtPmNoYW5nZWQuZnJhbWVfcmVjdCkgewotICAgICAgICBXZWJDb3JlOjpGcmFt
ZVZpZXcgKnZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgICAgIFdlYkNvcmU6
OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICAgICAgdmll
dy0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsgLyogZm9yY2UgdHJlZSB0byBnZXQgcG9zaXRpb24gZnJv
bSByb290ICovCiAgICAgICAgIHNkLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5BX0ZBTFNFOwog
ICAgIH0KQEAgLTkxMSwxMiArOTExLDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9o
aWRlKEV2YXNfT2JqZWN0ICpvKQogICAgIGV2YXNfb2JqZWN0X2hpZGUoc2QtPmJhY2tpbmdfc3Rv
cmUpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9jb250ZW50c19yZXNp
emUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGludCB3LCBpbnQgaCkKK3N0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZShFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCwgaW50IHcsIGludCBoKQogewogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQorc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZs
b2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgZG91YmxlIHB4
LCBweTsKICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGg7CkBAIC05NDQsNDAgKzk0NCw0MCBAQCBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgZmxvYXQgem9vbSwgRQogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9mbHVzaChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9mbHVzaChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwogICAgIF9ld2tfdmlld19y
ZXBhaW50c19mbHVzaChwcml2KTsKICAgICBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChwcml2KTsK
IH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWdpb24o
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFz
X0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBF
dmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZs
b2F0IHpvb20pCiB7CiAgICAgV1JOKCJub3Qgc3VwcG9ydGVkIGJ5IGVuZ2luZS4gc2Q9JXAgYXJl
YT0lZCwlZCslZHglZCwgem9vbT0lZiIsCiAgICAgICAgIHNkLCB4LCB5LCB3LCBoLCB6b29tKTsK
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IHVuc2lnbmVkIGludCBuLCBmbG9hdCB6b29tKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qs
IHVuc2lnbmVkIGludCBuLCBmbG9hdCB6b29tKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBi
eSBlbmdpbmUuIHNkPSVwLCBuPSV1IHpvb209JWYiLAogICAgICAgICBzZCwgbiwgem9vbSk7CiAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9w
cmVfcmVuZGVyX2NhbmNlbChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyB2b2lkIF9l
d2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkK
IHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzZD0lcCIsIHNkKTsKIH0KIAot
c3RhdGljIHZvaWQgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19z
dG9wKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIHNkLT5hbmltYXRlZF96b29tLnpv
b20uc3RhcnQgPSAwLjA7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSAwLjA7CiAg
ICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50ID0gMC4wOwogfQogCi1zdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9maW5pc2goRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9maW5pc2goRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwogICAgIGVj
b3JlX2FuaW1hdG9yX2RlbChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKTsKQEAgLTk4Niw3
ICs5ODYsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9maW5pc2goRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChzZC0+c2VsZiwgInpvb20sYW5pbWF0ZWQsZW5kIiwgMCk7CiB9CiAKLXN0YXRpYyBmbG9hdCBf
ZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJp
dikKK3N0YXRpYyBmbG9hdCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBkb3VibGUgbm93ID0gZWNvcmVfbG9vcF90aW1l
X2dldCgpOwogICAgIGRvdWJsZSBkZWx0YSA9IG5vdyAtIHByaXYtPmFuaW1hdGVkX3pvb20udGlt
ZS5zdGFydDsKQEAgLTEwMDIsOSArMTAwMiw5IEBAIHN0YXRpYyBmbG9hdCBfZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9jdXJyZW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKICAgICAgICAg
ICAgICsgcHJpdi0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0KTsKIH0KIAotc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYih2b2lkICpkYXRhKQorc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYih2b2lkKiBkYXRhKQogewotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRhOworICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CiAgICAg
RXZhc19Db29yZCBjeCwgY3k7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwogICAg
IGRvdWJsZSBub3cgPSBlY29yZV9sb29wX3RpbWVfZ2V0KCk7CkBAIC0xMDMxLDcgKzEwMzEsNyBA
QCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQgKmRhdGEp
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3pvb21f
YW5pbWF0aW9uX3N0YXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIHZvaWQgX2V3
a192aWV3X3pvb21fYW5pbWF0aW9uX3N0YXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CiAgICAgaWYgKHByaXYt
PmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpCkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
CiAgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYiwgc2QpOwogfQogCi1zdGF0aWMg
V2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVz
X2NvbXB1dGUoY29uc3QgRXZhc19PYmplY3QgKm8pCitzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRB
dHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKICAgICBFV0tfVklF
V19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF9lbmFibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KQogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9z
bWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSkKK0VpbmFfQm9vbCBld2tfdmlld19i
YXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChhcGksIEVJTkFfRkFMU0UpOwogCkBAIC0xMTIzLDEyICsx
MTIzLDEyIEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFy
dF9DbGFzcyAqYXBpKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXZvaWQgZXdrX3ZpZXdf
Zml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHcsIEV2YXNf
Q29vcmQgaCkKK3ZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYpOwogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+
dmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5fZnJhbWUt
PnZpZXcoKTsKICAgICBpZiAodyA8PSAwICYmIGggPD0gMCkgewogICAgICAgICBpZiAoIXZpZXct
PnVzZUZpeGVkTGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTQ3LDcgKzExNDcs
NyBAQCB2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldChFdmFzX09iamVjdCAqbywg
RXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKIH0K
IAotdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8sIEV2YXNfQ29vcmQgKncsIEV2YXNfQ29vcmQgKmgpCit2b2lkIGV3a192aWV3X2ZpeGVkX2xh
eW91dF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbywgRXZhc19Db29yZCogdywgRXZhc19D
b29yZCogaCkKIHsKICAgICBpZiAodykKICAgICAgICAgKncgPSAwOwpAQCAtMTE2NSwxNCArMTE2
NSwxNCBAQCB2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldChjb25zdCBFdmFzX09i
amVjdCAqbywgRXZhc19Db29yZCAqdywgRXZhc19DbwogICAgIH0KIH0KIAotdm9pZCBld2tfdmll
d190aGVtZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgpCit2b2lkIGV3a192
aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogcGF0aCkKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYpOwogICAgIGlmICghZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZw
cml2LT5zZXR0aW5ncy50aGVtZSwgcGF0aCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNv
cmU6OkZyYW1lVmlldyAqdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJD
b3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYg
KHZpZXcpIHsKICAgICAgICAgdmlldy0+c2V0RWRqZVRoZW1lKFdURjo6U3RyaW5nKHBhdGgpKTsK
ICAgICAgICAgcHJpdi0+cGFnZS0+dGhlbWUoKS0+dGhlbWVDaGFuZ2VkKCk7CkBAIC0xMTgwLDI1
ICsxMTgwLDI1IEBAIHZvaWQgZXdrX3ZpZXdfdGhlbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25z
dCBjaGFyICpwYXRoKQogCiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dldChjb25zdCBF
dmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy50aGVtZTsKIH0KIAotRXZhc19PYmplY3QqIGV3a192aWV3X2Zy
YW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRXZhc19PYmplY3QqIGV3a192aWV3
X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIHJldHVybiBzZC0+bWFpbl9mcmFtZTsKIH0K
IAotRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQorRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAKLSAgICBX
ZWJDb3JlOjpGcmFtZSAqY29yZSA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkRnJhbWUoKTsKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZSA9IHByaXYtPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKTsKICAgICBpZiAoIWNvcmUpCiAgICAgICAgIHJl
dHVybiAwOwogCkBAIC0xMjA4LDMxICsxMjA4LDMxIEBAIEV2YXNfT2JqZWN0KiBld2tfdmlld19m
cmFtZV9mb2N1c2VkX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gY2xpZW50
LT53ZWJGcmFtZSgpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3NldChFdmFzX09iamVj
dCAqbywgY29uc3QgY2hhciAqdXJpKQorRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIHVyaSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3VyaV9zZXQoc2Qt
Pm1haW5fZnJhbWUsIHVyaSk7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3VyaV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDAp
OwogICAgIHJldHVybiBld2tfZnJhbWVfdXJpX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLWNv
bnN0IGNoYXIgKmV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0
IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICByZXR1cm4gZXdrX2ZyYW1l
X3RpdGxlX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19lZGl0
YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdGFi
bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfZWRpdGFibGVf
Z2V0KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotdm9pZCBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZh
c19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQordm9pZCBld2tfdmlld19i
Z19jb2xvcl9zZXQoRXZhc19PYmplY3QqIG8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwpAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgdm9pZCBld2tf
dmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGlu
dCBhKQogCiAgICAgc2QtPmFwaS0+YmdfY29sb3Jfc2V0KHNkLCByLCBnLCBiLCBhKTsKIAotICAg
IFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHNkLT5fcHJpdi0+bWFpbl9mcmFtZS0+dmlldygp
OworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNkLT5fcHJpdi0+bWFpbl9mcmFtZS0+
dmlldygpOwogICAgIGlmICh2aWV3KSB7CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yOwog
CkBAIC0xMjgyLDcgKzEyODIsNyBAQCB2b2lkIGV3a192aWV3X2JnX2NvbG9yX3NldChFdmFzX09i
amVjdCAqbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiAgICAgfQogfQogCi12b2lkIGV3
a192aWV3X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQgKmcs
IGludCAqYiwgaW50ICphKQordm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8sIGludCogciwgaW50KiBnLCBpbnQqIGIsIGludCogYSkKIHsKICAgICBpZiAocikK
ICAgICAgICAgKnIgPSAwOwpAQCAtMTMwMyw3ICsxMzAzLDcgQEAgdm9pZCBld2tfdmlld19iZ19j
b2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqciwgaW50ICpnLCBpbnQgKmIsIGlu
dCAqYSkKICAgICAgICAgKmEgPSBzZC0+YmdfY29sb3IuYTsKIH0KIAotRWluYV9Cb29sIGV3a192
aWV3X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcs
IEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGZvcndhcmQsIEVpbmFfQm9vbCB3
cmFwKQorRWluYV9Cb29sIGV3a192aWV3X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29s
IGZvcndhcmQsIEVpbmFfQm9vbCB3cmFwKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xMzM1LDcgKzEzMzUsNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmlu
ZywgRWluYV9CbwogICoKICAqIEByZXR1cm4gbnVtYmVyIG9mIG1hdGNoZXMuCiAgKi8KLXVuc2ln
bmVkIGludCBld2tfdmlld190ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVjdCAqbywgY29uc3Qg
Y2hhciAqc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdobGln
aHQsIHVuc2lnbmVkIGludCBsaW1pdCkKK3Vuc2lnbmVkIGludCBld2tfdmlld190ZXh0X21hdGNo
ZXNfbWFyayhFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2Fz
ZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMTM1MCw3ICsxMzUwLDcgQEAgdW5z
aWduZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0ICpvLCBjb25z
dCBjaGFyICpzdHJpbmcsIEVpbmEKICAgICByZXR1cm4gcHJpdi0+cGFnZS0+bWFya0FsbE1hdGNo
ZXNGb3JUZXh0KFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgc2Vuc2l0aXZlLCBoaWdobGlnaHQs
IGxpbWl0KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc191bm1hcmtfYWxs
KEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc191bm1hcmtf
YWxsKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CkBAIC0xMzU4LDI1ICsxMzU4LDI1IEBAIEVpbmFfQm9vbCBld2tfdmll
d190ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBoaWdobGlnaHQpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBo
aWdobGlnaHQpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChz
ZC0+bWFpbl9mcmFtZSwgaGlnaGxpZ2h0KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3RleHRf
bWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3
a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IHJldHVybiBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoc2QtPm1haW5fZnJh
bWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgZWRpdGFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KEV2
YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZWRpdGFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9lZGl0
YWJsZV9zZXQoc2QtPm1haW5fZnJhbWUsIGVkaXRhYmxlKTsKIH0KIAotY2hhciAqZXdrX3ZpZXdf
c2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NoYXIqIGV3a192aWV3X3NlbGVj
dGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCAwKTsKQEAgLTEzODYsMTIgKzEzODYsMTIgQEAgY2hhciAqZXdrX3ZpZXdfc2VsZWN0aW9u
X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gc3RyZHVwKHMuZGF0YSgpKTsK
IH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhICpwcml2LCBjb25zdCBjaGFyICpjb21tYW5kLCBjb25zdCBjaGFyICp2YWx1
ZSA9IDApCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYsIGNvbnN0IGNoYXIqIGNvbW1hbmQsIGNvbnN0IGNoYXIqIHZh
bHVlID0gMCkKIHsKICAgICByZXR1cm4gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChXVEY6OlN0cmluZzo6ZnJvbVVU
RjgoY29tbWFuZCkpLmV4ZWN1dGUodmFsdWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZXhl
Y3V0ZV9lZGl0b3JfY29tbWFuZChFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX0VkaXRvcl9Db21t
YW5kIGNvbW1hbmQsIGNvbnN0IGNoYXIgKnZhbHVlKQorRWluYV9Cb29sIGV3a192aWV3X2V4ZWN1
dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV3a19FZGl0b3JfQ29tbWFu
ZCBjb21tYW5kLCBjb25zdCBjaGFyKiB2YWx1ZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTQxOCw3ICsxNDE4LDcgQEAgRWluYV9Cb29s
IGV3a192aWV3X2V4ZWN1dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3
a19FZGl0b3JfQ29tbWEKICAgICB9CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19jb250ZXh0X21l
bnVfZm9yd2FyZF9ldmVudChFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9E
b3duICpldikKK0VpbmFfQm9vbCBld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudChF
dmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldikKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKQEAgLTE0MjYsNyArMTQyNiw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19j
b250ZXh0X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVu
dF9NCiAgICAgRWluYV9Cb29sIG1vdXNlX3ByZXNzX2hhbmRsZWQgPSBFSU5BX0ZBTFNFOwogCiAg
ICAgcHJpdi0+cGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUo
KTsKLSAgICBXZWJDb3JlOjpGcmFtZSAqbWFpbl9mcmFtZSA9IHByaXYtPnBhZ2UtPm1haW5GcmFt
ZSgpOworICAgIFdlYkNvcmU6OkZyYW1lKiBtYWluX2ZyYW1lID0gcHJpdi0+cGFnZS0+bWFpbkZy
YW1lKCk7CiAgICAgRXZhc19Db29yZCB4LCB5OwogICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dl
dChzZC0+c2VsZiwgJngsICZ5LCAwLCAwKTsKIApAQCAtMTQ1NCw3NSArMTQ1NCw3NSBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QgKm8s
IGNvbnN0IEV2YXNfRXZlbnRfTQogI2VuZGlmCiB9CiAKLWRvdWJsZSBld2tfdmlld19sb2FkX3By
b2dyZXNzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2RvdWJsZSBld2tfdmlld19sb2FkX3By
b2dyZXNzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCAtMS4wKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIC0xLjApOwogICAgIHJldHVybiBwcml2LT5wYWdlLT5wcm9ncmVzcygpLT5lc3Rp
bWF0ZWRQcm9ncmVzcygpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVj
dCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBl
d2tfZnJhbWVfc3RvcChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19y
ZWxvYWQoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2Jq
ZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfcmVsb2FkKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29s
IGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVf
cmVsb2FkX2Z1bGwoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfYmFj
ayhFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19iYWNrKEV2YXNfT2JqZWN0KiBv
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIHJldHVybiBld2tfZnJhbWVfYmFjayhzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld19mb3J3YXJkKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2Zv
cndhcmQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mb3J3YXJkKHNkLT5tYWlu
X2ZyYW1lKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRlKEV2YXNfT2JqZWN0ICpv
LCBpbnQgc3RlcHMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGUoRXZhc19PYmplY3QqIG8s
IGludCBzdGVwcykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX25hdmlnYXRlKHNkLT5tYWluX2ZyYW1lLCBz
dGVwcyk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bvc3NpYmxlKEV2YXNfT2JqZWN0
ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
cmV0dXJuIGV3a19mcmFtZV9iYWNrX3Bvc3NpYmxlKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdr
X2ZyYW1lX2ZvcndhcmRfcG9zc2libGUoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcykKK0Vp
bmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCogbywgaW50IHN0
ZXBzKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoc2QtPm1haW5fZnJhbWUs
IHN0ZXBzKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0Zv
cndhcmRMaXN0SW1wbCo+KHByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+ZW5hYmxlZCgp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxl
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTUzMCw3ICsxNTMwLDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIGVuYWJsZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1Fd2tfSGlzdG9yeSog
ZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFd2tfSGlzdG9yeSog
ZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTE1NDEsMTMgKzE1NDEsMTMgQEAgRXdrX0hpc3Rvcnkq
IGV3a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBw
cml2LT5oaXN0b3J5OwogfQogCi1mbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09i
amVjdCAqbykKK2Zsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwogICAgIHJldHVy
biBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gs
IEV2YXNfQ29vcmQgY3kpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3Qq
IG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc2QsIHByaXYpOwpAQCAtMTU3MywxMyArMTU3MywxMyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gs
IEV2YXNfQ29vcgogICAgIHJldHVybiBzZC0+YXBpLT56b29tX3NldChzZCwgem9vbSwgY3gsIGN5
KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhf
c2NhbGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBzZC0+em9vbV93ZWFrX3Nt
b290aF9zY2FsZTsKIH0KIAotdm9pZCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2FsZSkKK3ZvaWQgZXdrX3ZpZXdf
em9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBzbW9v
dGhfc2NhbGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAg
c21vb3RoX3NjYWxlID0gISFzbW9vdGhfc2NhbGU7CkBAIC0xNTkxLDcgKzE1OTEsNyBAQCB2b2lk
IGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgc21vb3RoX3NjYWxlKQogICAgIHNkLT5hcGktPnpvb21fd2Vha19zbW9vdGhfc2NhbGVf
c2V0KHNkLCBzbW9vdGhfc2NhbGUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFr
X3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29y
ZCBjeSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBm
bG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUKHNkLCBwcml2KTsKQEAgLTE2MTksMzUgKzE2MTksMzUgQEAgRWluYV9Cb29sIGV3a192aWV3
X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gs
IEV2YXMKICAgICByZXR1cm4gc2QtPmFwaS0+em9vbV93ZWFrX3NldChzZCwgem9vbSwgY3gsIGN5
KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydChFdmFz
X09iamVjdCAqbywgZmxvYXQgem9vbSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVk
X21hcmtfc3RhcnQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgc2QtPmFuaW1hdGVkX3pv
b20uem9vbS5zdGFydCA9IHpvb207CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QgKm8sIGZsb2F0
IHpvb20pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZChFdmFzX09i
amVjdCogbywgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmVuZCA9IHpvb207
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5p
bWF0ZWRfbWFya19jdXJyZW50KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKQorRWluYV9Cb29s
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJyZW50KEV2YXNfT2JqZWN0KiBvLCBmbG9h
dCB6b29tKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCA9IHpvb207CiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFy
a19zdG9wKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
bWFya19zdG9wKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIF9ld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtf
c3RvcChzZCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJh
dGlvbiwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKK0VpbmFfQm9vbCBld2tfdmlld196
b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRp
b24sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgZG91YmxlIG5vdzsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTE2OTYs
MTkgKzE2OTYsMTkgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNf
T2JqZWN0ICpvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJhdGlvbiwKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChz
ZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5nKQorRWluYV9Cb29sIGV3a192aWV3
X3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNldHRpbmcpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
cmV0dXJuIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoc2QtPm1haW5fZnJhbWUsIHNldHRp
bmcpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmpl
Y3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29v
cmQgaCwgZmxvYXQgem9vbSkKK0VpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihF
dmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZh
c19Db29yZCB5LAogICAgIHJldHVybiBzZC0+YXBpLT5wcmVfcmVuZGVyX3JlZ2lvbihzZCwgeCwg
eSwgdywgaCwgem9vbSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlbGF0
aXZlX3JhZGl1cyhFdmFzX09iamVjdCAqbywgdW5zaWduZWQgaW50IG4pCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIG8sIHVuc2lnbmVk
IGludCBuKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CkBAIC0xNzcyLDM1ICsxNzcyLDM1IEBAIHVuc2lnbmVkIGludCBld2tfdmlld19pbWhfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBwcml2LT5pbWg7CiB9CiAKLXZvaWQg
ZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3
X3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGktPnByZV9yZW5kZXJfY2FuY2VsKTsKICAgICBzZC0+YXBpLT5wcmVfcmVuZGVyX2NhbmNlbChz
ZCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19lbmFibGVfcmVuZGVyKGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2VuYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPmVuYWJsZV9y
ZW5kZXIsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBzZC0+YXBpLT5lbmFibGVfcmVuZGVyKHNk
KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2Rpc2FibGVfcmVuZGVyKGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2Rpc2FibGVfcmVuZGVyKGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT5kaXNhYmxl
X3JlbmRlciwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT5hcGktPmRpc2FibGVfcmVuZGVy
KHNkKTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfdXNlcl9h
Z2VudF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MudXNlcl9hZ2VudDsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9zZXQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKnVzZXJfYWdlbnQpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2VyX2Fn
ZW50X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXNlcl9hZ2VudCkKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTgxMSwxNCAr
MTgxMSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X3NldChFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqdXNlcl9hZ2VudAogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfdXNlcl9z
dHlsZXNoZWV0X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy51c2VyX3N0eWxlc2hlZXQ7
CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZh
c19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVyaSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHVyaSkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTgy
OSwxNCArMTgyOSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hl
ZXRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp1cmkpCiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRv
X2xvYWRfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy5hdXRvX2xvYWRfaW1hZ2VzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19h
dXRvX2xvYWRfaW1hZ2VzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGF1dG9tYXRpYykK
K0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xODQ4LDE0ICsxODQ4LDE0IEBAIEVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgYXV0b21hCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCAq
bykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuYXV0b19zaHJpbmtfaW1h
Z2VzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQorRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIGF1dG9tYXRpYykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwpAQCAtMTg2NywxNCArMTg2NywxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYXV0
bwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlX2F1dG9fcmVz
aXplX3dpbmRvdzsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9f
cmVzaXplX3dpbmRvd19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCByZXNpemFibGUpCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldChF
dmFzX09iamVjdCogbywgRWluYV9Cb29sIHJlc2l6YWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTg4MiwxNCArMTg4MiwxNCBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldChF
dmFzX09iamVjdCAqbywgRWluYV9CbwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX2dldChjb25zdCBFdmFzX09iamVj
dCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFibGVfc2NyaXB0czsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
ZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xOTAx
LDE0ICsxOTAxLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRz
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVf
cGx1Z2luc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mu
ZW5hYmxlX3BsdWdpbnM7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9w
bHVnaW5zX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFf
RkFMU0UpOwpAQCAtMTkyMCwxNCArMTkyMCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfcGx1Z2luc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCiAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZV9mcmFtZV9mbGF0dGVuaW5n
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmlu
Z19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKQEAgLTE5MzksMTQgKzE5MzksMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19zY3JpcHRzX3dpbmRvd19vcGVuX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNjcmlwdHNfd2luZG93X29wZW47CiB9CiAK
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWxsb3cpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19z
Y3JpcHRzX3dpbmRvd19vcGVuX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGFsbG93KQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0x
OTU4LDE0ICsxOTU4LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2lu
ZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWxsCiAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fY2xv
c2Vfd2luZG93c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX2dldChjb25zdCBFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwog
ICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGFsbG93KQorRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93c19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFf
Qm9vbCBhbGxvdykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFf
RkFMU0UpOwpAQCAtMTk3NywxNCArMTk3NywxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cbwog
ICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Jl
c2l6YWJsZV90ZXh0YXJlYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsK
ICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MucmVzaXphYmxlX3RleHRhcmVhczsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19zZXQoRXZhc19PYmpl
Y3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNp
emFibGVfdGV4dGFyZWFzX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTk5
NiwxNCArMTk5NiwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4
dGFyZWFzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYQogICAgIHJldHVybiBFSU5B
X1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcHJp
dmF0ZV9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0
dGluZ3MucHJpdmF0ZV9icm93c2luZzsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
cHJpdmF0ZV9icm93c2luZ19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjAxNSwxNCArMjAxNSwxNCBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIGVuYWJsZQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX2dldChjb25zdCBFdmFz
X09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFf
RkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5vZmZsaW5lX2FwcF9jYWNoZTsKIH0K
IAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
b2ZmbGluZV9hcHBfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0y
MDM1LDE0ICsyMDM1LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBw
X2NhY2hlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsCiB9CiAKIAotRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3NpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3NpbmdfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
RUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmNhcmV0X2Jyb3dzaW5nOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19j
YXJldF9icm93c2luZ19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIwNTQs
NyArMjA1NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKICAgICByZXR1cm4gRUlOQV9UUlVF
OwogfQogCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2VuY29k
aW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCAwKTsKQEAgLTIwNzAsMjcgKzIwNzAsMjcgQEAgY29uc3QgY2hhciAqZXdrX3Zp
ZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAg
IHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ19jdXN0b207CiB9CiAKLUVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKmVuY29kaW5nKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3Vz
dG9tX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZW5jb2RpbmcpCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBFdmFzX09iamVj
dCogbWFpbl9mcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOwogICAgIFdlYkNvcmU6
OkZyYW1lKiBjb3JlX2ZyYW1lID0gZXdrX2ZyYW1lX2NvcmVfZ2V0KG1haW5fZnJhbWUpOwotREJH
KCIlcyIsIGVuY29kaW5nKTsKKyAgICBEQkcoIiVzIiwgZW5jb2RpbmcpOwogICAgIGVpbmFfc3Ry
aW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdfY3VzdG9tLCBlbmNvZGlu
Zyk7CiAgICAgY29yZV9mcmFtZS0+bG9hZGVyKCktPnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5n
KFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpKTsKIAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9
CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuY29kaW5nX2RlZmF1bHQ7
CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2
YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplbmNvZGluZykKK0VpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBl
bmNvZGluZykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFM
U0UpOwpAQCAtMjA5OSw3ICsyMDk5LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5j
b2RpbmdfZGVmYXVsdF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVuY28KICAgICBy
ZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGlu
Z19kZXRlY3Rvcl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9zZXQoRXZhc19PYmplY3QqIG8s
IEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKQEAgLTIxMTEsMjEgKzIxMTEsMjEgQEAgRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
ZW5hYmwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdfZGV0ZWN0b3I7CiB9CiAKLUVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZl
bG9wZXJfZXh0cmFzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy5lbmFibGVfZGV2ZWxvcGVyX2V4dHJhczsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9l
eHRyYXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMTM3LDE0ICsyMTM3
LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFz
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0K
IAotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKQoraW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAg
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfbWluaW11bV9zaXplOwogfQogCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8s
IGludCBzaXplKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVf
c2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgc2l6ZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjE1NSwxNCArMjE1NSwxNCBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8s
IGludCBzaXplKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWludCBld2tfdmlld19zZXR0
aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQor
aW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
MCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICBy
ZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZTsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQoRXZh
c19PYmplY3QgKm8sIGludCBzaXplKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9t
aW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMTczLDE0
ICsyMTczLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dp
Y2FsX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6CiAgICAgcmV0dXJuIEVJTkFfVFJV
RTsKIH0KIAotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQoraW50IGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
MCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfZGVmYXVsdF9zaXplOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmpl
Y3QgKm8sIGludCBzaXplKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0
X3NpemVfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgc2l6ZSkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjE5MSwxNCArMjE5MSwxNCBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmpl
Y3QgKm8sIGludCBzaXplKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWludCBld2tfdmll
d19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQor
aW50IGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4g
cHJpdi0+c2V0dGluZ3MuZm9udF9tb25vc3BhY2Vfc2l6ZTsKIH0KIAotRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBz
aXplKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQo
RXZhc19PYmplY3QqIG8sIGludCBzaXplKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMjA5LDcgKzIyMDksNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50
IHNpemUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdf
Zm9udF9mYW1pbHlfbmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIEV3a19Gb250X0ZhbWls
eSBmb250X2ZhbWlseSkKK2NvbnN0IGNoYXIgKmV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBFd2tfRm9udF9GYW1pbHkgZm9udF9mYW1pbHkpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTIyMzEsNyArMjIzMSw3IEBAIGNvbnN0
IGNoYXIgKmV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
LCBFd2tfRm9udF9GYW1pbHkKICAgICByZXR1cm4gMDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3
X2ZvbnRfZmFtaWx5X25hbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkgZm9u
dF9mYW1pbHksIGNvbnN0IGNoYXIgKm5hbWUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9udF9mYW1p
bHlfbmFtZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSwg
Y29uc3QgY2hhciogbmFtZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwpAQCAtMjI2OCwxNCArMjI2OCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
Zm9udF9mYW1pbHlfbmFtZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19Gb250X0ZhbWlseSBmb250
X2ZhbQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNwYXRpYWxfbmF2aWdhdGlvbjsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Nw
YXRpYWxfbmF2aWdhdGlvbl9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIy
ODcsMTQgKzIyODcsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZp
Z2F0aW9uX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWIKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2Fs
X3N0b3JhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdz
LmxvY2FsX3N0b3JhZ2U7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0
b3JhZ2Vfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZB
TFNFKTsKQEAgLTIzMDYsMTQgKzIzMDYsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
bG9jYWxfc3RvcmFnZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcGFnZV9j
YWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19wYWdlX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy5wYWdlX2NhY2hlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2Nh
Y2hlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5h
YmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CkBAIC0yMzI1LDE0ICsyMzI1LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3BhZ2Vf
Y2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFn
ZV9kYXRhYmFzZV9wYXRoX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3
a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX2dldChjb25zdCBFdmFz
X09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVy
biBwcml2LT5zZXR0aW5ncy5sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGg7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQoRXZh
c19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBj
aGFyKiBwYXRoKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19s
b2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdAogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX21pbmlt
dW1fdGltZXJfaW50ZXJ2YWxfc2V0KEV2YXNfT2JqZWN0ICpvLCBkb3VibGUgaW50ZXJ2YWwpCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFsX3NldChFdmFz
X09iamVjdCogbywgZG91YmxlIGludGVydmFsKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMzUyLDE0ICsyMzUyLDE0IEBAIEVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX21pbmltdW1fdGltZXJfaW50ZXJ2YWxfc2V0KEV2YXNfT2JqZWN0
ICpvLCBkb3VibGUgaW50CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotZG91YmxlIGV3a192
aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pCitkb3VibGUgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFsX2dldChj
b25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5kb21fdGltZXJfaW50
ZXJ2YWw7CiB9CiAKLUV3a19WaWV3X1NtYXJ0X0RhdGEgKmV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRXdrX1ZpZXdfU21hcnRfRGF0YSogZXdrX3ZpZXdfc21h
cnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIHNkOwpAQCAtMjM4Miw3ICsyMzgyLDcg
QEAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1
c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3du
IGJhY2tpbmcgc3RvcmUuCiAgKi8KLWNvbnN0IEVpbmFfUmVjdGFuZ2xlICpld2tfdmlld19yZXBh
aW50c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBzaXplX3QgKmNvdW50
KQorY29uc3QgRWluYV9SZWN0YW5nbGUqIGV3a192aWV3X3JlcGFpbnRzX2dldChjb25zdCBFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCogY291bnQpCiB7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvdW50LCAwKTsKICAgICBpZiAoY291bnQpCkBAIC0yNDEw
LDcgKzI0MTAsNyBAQCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqZXdrX3ZpZXdfcmVwYWludHNfZ2V0
KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgcwogICogQG5vdGUgdGhpcyBpcyBu
b3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICog
ICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCi1jb25zdCBFd2tf
U2Nyb2xsX1JlcXVlc3QgKmV3a192aWV3X3Njcm9sbF9yZXF1ZXN0c19nZXQoY29uc3QgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBzaXplX3QgKmNvdW50KQorY29uc3QgRXdrX1Njcm9sbF9S
ZXF1ZXN0KiBld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdiwgc2l6ZV90KiBjb3VudCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoY291bnQsIDApOwogICAgIGlmIChjb3VudCkKQEAgLTI0MzUsNyArMjQzNSw3
IEBAIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dl
dChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2Vu
ZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBk
ZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfcmVwYWlu
dF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29v
cmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit2b2lkIGV3a192aWV3X3JlcGFpbnRf
YWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3Jk
IHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHByaXYpOwogICAgIF9ld2tfdmlld19yZXBhaW50X2FkZChwcml2LCB4LCB5LCB3
LCBoKTsKQEAgLTI0NDksMTEgKzI0NDksMTEgQEAgdm9pZCBld2tfdmlld19yZXBhaW50X2FkZChF
d2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZAogICog
QG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2Vz
IHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgog
ICovCi12b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1By
aXZhdGVfRGF0YSAqcHJpdikKK3ZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNp
dmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogewogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHByaXYpOwogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2ID0gcHJpdi0+bWFp
bl9mcmFtZS0+dmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdiA9IHByaXYtPm1haW5f
ZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXYpIHsKICAgICAgICAgRVJSKCJubyBtYWluIGZyYW1l
IHZpZXciKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2MSw3ICsyNDYxLDcgQEAgdm9pZCBld2tf
dmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmlld19Qcml2YXRlX0RhdGEgKnBy
aXYpCiAgICAgdi0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogfQog
Ci12b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
K3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQog
ewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwpAQCAtMjQ3OSwxOSArMjQ3OSwxOSBAQCB2b2lkIGV3
a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAqICAgICAg
IHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwogc3RydWN0IF9Fd2tfVmll
d19QYWludF9Db250ZXh0IHsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQgKmdjOwotICAg
IFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldzsKLSAgICBjYWlyb190ICpjcjsKKyAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQqIGdjOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldzsKKyAg
ICBjYWlyb190KiBjcjsKIH07CiAKLUV3a19WaWV3X1BhaW50X0NvbnRleHQgKmV3a192aWV3X3Bh
aW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3Ip
CitFd2tfVmlld19QYWludF9Db250ZXh0KiBld2tfdmlld19wYWludF9jb250ZXh0X25ldyhFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIHByaXYsIGNhaXJvX3QqIGNyKQogewogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChwcml2LCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoY3IsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2
LT5tYWluX2ZyYW1lLCAwKTsKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBwcml2LT5t
YWluX2ZyYW1lLT52aWV3KCk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+
bWFpbl9mcmFtZS0+dmlldygpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2
aWV3LCAwKTsKLSAgICBFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0ID0gKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQgKiltYWxsb2Moc2l6ZW9mKCpjdHh0KSk7CisgICAgRXdrX1ZpZXdfUGFpbnRf
Q29udGV4dCogY3R4dCA9IChFd2tfVmlld19QYWludF9Db250ZXh0KiltYWxsb2Moc2l6ZW9mKCpj
dHh0KSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGN0eHQsIDApOwogCiAg
ICAgY3R4dC0+Z2MgPSBuZXcgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KGNyKTsKQEAgLTI1MDQs
NyArMjUwNCw3IEBAIEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmV3a192aWV3X3BhaW50X2NvbnRl
eHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwKICAgICByZXR1cm4gY3R4dDsKIH0K
IAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2ZyZWUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4
dCAqY3R4dCkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKEV3a19WaWV3X1BhaW50
X0NvbnRleHQqIGN0eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7
CiAgICAgZGVsZXRlIGN0eHQtPmdjOwpAQCAtMjUxMiwyOCArMjUxMiwyOCBAQCB2b2lkIGV3a192
aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0KQogICAg
IGZyZWUoY3R4dCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKEV3a19W
aWV3X1BhaW50X0NvbnRleHQgKmN0eHQpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2
ZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0KQogewogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKGN0eHQpOwogICAgIGNhaXJvX3NhdmUoY3R4dC0+Y3IpOwogICAgIGN0eHQtPmdj
LT5zYXZlKCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3a19W
aWV3X1BhaW50X0NvbnRleHQgKmN0eHQpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVz
dG9yZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0KQogewogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKGN0eHQpOwogICAgIGN0eHQtPmdjLT5yZXN0b3JlKCk7CiAgICAgY2Fpcm9f
cmVzdG9yZShjdHh0LT5jcik7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlw
KEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVh
KQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4
dCogY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXJl
YSk7CiAgICAgY3R4dC0+Z2MtPmNsaXAoV2ViQ29yZTo6SW50UmVjdChhcmVhLT54LCBhcmVhLT55
LCBhcmVhLT53LCBhcmVhLT5oKSk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9w
YWludChFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAq
YXJlYSkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludChFd2tfVmlld19QYWludF9D
b250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihhcmVhKTsKQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF9wYWludChFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1JlY3RhCiAg
ICAgY3R4dC0+dmlldy0+cGFpbnQoY3R4dC0+Z2MsIHJlY3QpOwogfQogCi12b2lkIGV3a192aWV3
X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4
dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRl
eHRfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwgY29uc3QgRWlu
YV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4
dCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7CkBAIC0yNTU4LDIxICsy
NTU4LDIxIEBAIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyhFd2tf
Vmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFCiAgICAgY3R4dC0+dmlldy0+cGFpbnRD
b250ZW50cyhjdHh0LT5nYywgcmVjdCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF9zY2FsZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBmbG9hdCBzY2FsZV94LCBmbG9h
dCBzY2FsZV95KQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQqIGN0eHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0IHNjYWxlX3kpCiB7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAKICAgICBjdHh0LT5nYy0+c2NhbGUo
V2ViQ29yZTo6RmxvYXRTaXplKHNjYWxlX3gsIHNjYWxlX3kpKTsKIH0KIAotdm9pZCBld2tfdmll
d19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBm
bG9hdCB4LCBmbG9hdCB5KQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShF
d2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogCiAgICAgY3R4dC0+Z2MtPnRyYW5zbGF0
ZSh4LCB5KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVf
RGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKQorRWlu
YV9Cb29sIGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9f
dCogY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoY3IsIEVJTkFfRkFMU0UpOwpAQCAtMjU5MCwxNCArMjU5MCwxNCBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWly
b190ICpjciwgY29uc3QgRWluYV9SZQogICAgIGdjLmNsaXAocmVjdCk7CiAgICAgaWYgKHZpZXct
PmlzVHJhbnNwYXJlbnQoKSkKICAgICAgICAgZ2MuY2xlYXJSZWN0KHJlY3QpOwotICAgIHZpZXct
PnBhaW50KCZnYywgcmVjdCk7CisgICAgdmlldy0+cGFpbnQoJmdjLCAgcmVjdCk7CiAgICAgZ2Mu
cmVzdG9yZSgpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogCiAgICAgcmV0dXJuIEVJTkFfVFJV
RTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKQor
RWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3IsIEVJTkFfRkFMU0UpOwpAQCAtMjYyOCw3ICsy
NjI4LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnMKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJy
ZWFkeSIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X3JlYWR5KEV2YXNf
T2JqZWN0ICpvKQordm9pZCBld2tfdmlld19yZWFkeShFdmFzX09iamVjdCogbykKIHsKICAgICBE
QkcoIm89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJy
ZWFkeSIsIDApOwpAQCAtMjY0Miw3ICsyNjQyLDcgQEAgdm9pZCBld2tfdmlld19yZWFkeShFdmFz
X09iamVjdCAqbykKICAqIEVtaXRzIHNpZ25hbDogImlucHV0bWV0aG9kLGNoYW5nZWQiIHdpdGgg
YSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpdCdzCiAgKiBlbmFibGVkIG9yIG5vdC4KICAq
Lwotdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgYWN0aXZlKQordm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2
YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYWN0aXZlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTI2
NzEsNyArMjY3MSw3IEBAIHZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIGFjdGl2ZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImlucHV0bWV0aG9kLGNoYW5nZWQiLCAo
dm9pZCAqKWFjdGl2ZSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAi
aW5wdXRtZXRob2QsY2hhbmdlZCIsICh2b2lkKilhY3RpdmUpOwogfQogCiAvKioKQEAgLTI2ODAs
MTAgKzI2ODAsMTAgQEAgdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWN0aXZlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInRpdGxl
LGNoYW5nZWQiIHdpdGggcG9pbnRlciB0byBuZXcgdGl0bGUgc3RyaW5nLgogICovCi12b2lkIGV3
a192aWV3X3RpdGxlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGl0bGUpCit2b2lk
IGV3a192aWV3X3RpdGxlX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGl0bGUpCiB7
CiAgICAgREJHKCJvPSVwLCB0aXRsZT0lcyIsIG8sIHRpdGxlID8gdGl0bGUgOiAiKG51bGwpIik7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidGl0bGUsY2hhbmdlZCIs
ICh2b2lkICopdGl0bGUpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
InRpdGxlLGNoYW5nZWQiLCAodm9pZCopdGl0bGUpOwogfQogCiAvKioKQEAgLTI2OTIsMTIgKzI2
OTIsMTIgQEAgdm9pZCBld2tfdmlld190aXRsZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNo
YXIgKnRpdGxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInVyaSxjaGFuZ2VkIiB3aXRoIHBvaW50
ZXIgdG8gdGhlIG5ldyB1cmkgc3RyaW5nLgogICovCi12b2lkIGV3a192aWV3X3VyaV9jaGFuZ2Vk
KEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld191cmlfY2hhbmdlZChFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKLSAgICBjb25zdCBj
aGFyICp1cmkgPSBld2tfZnJhbWVfdXJpX2dldChzZC0+bWFpbl9mcmFtZSk7CisgICAgY29uc3Qg
Y2hhciogdXJpID0gZXdrX2ZyYW1lX3VyaV9nZXQoc2QtPm1haW5fZnJhbWUpOwogICAgIERCRygi
bz0lcCwgdXJpPSVzIiwgbywgdXJpID8gdXJpIDogIihudWxsKSIpOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInVyaSxjaGFuZ2VkIiwgKHZvaWQgKil1cmkpOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInVyaSxjaGFuZ2VkIiwgKHZvaWQq
KXVyaSk7CiB9CiAKIC8qKgpAQCAtMjcwOCw3ICsyNzA4LDcgQEAgdm9pZCBld2tfdmlld191cmlf
Y2hhbmdlZChFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHN0YXJ0
ZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX3N0YXJ0ZWQo
RXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCog
bykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG8sICJsb2FkLHN0YXJ0ZWQiLCAwKTsKQEAgLTI3MjEsMTAgKzI3MjEsMTAgQEAgdm9p
ZCBld2tfdmlld19sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2ln
bmFsOiAibG9hZCxzdGFydGVkIiBvbiBtYWluIGZyYW1lIHdpdGggbm8gcGFyYW1ldGVycy4KICAq
Lwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCAqbykK
K3ZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgREJHKCJvPSVwIiwgbyk7Ci0gICAgRXZhc19PYmplY3QgKmZyYW1lID0gZXdrX3ZpZXdf
ZnJhbWVfbWFpbl9nZXQobyk7CisgICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJh
bWVfbWFpbl9nZXQobyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChmcmFt
ZSwgImxvYWQsc3RhcnRlZCIsIDApOwogfQogCkBAIC0yNzM2LDcgKzI3MzYsNyBAQCB2b2lkIGV3
a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVt
aXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwiIG9uIFZpZXcgd2l0aCBubyBwYXJhbWV0ZXJz
LgogICovCi12b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QgKm8pCit2
b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJH
KCJvPSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9h
ZCxwcm92aXNpb25hbCIsIDApOwpAQCAtMjc1MCw3ICsyNzUwLDcgQEAgdm9pZCBld2tfdmlld19s
b2FkX3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxv
YWQsbmV3d2luZG93LHNob3ciIG9uIHZpZXcgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lk
IGV3a192aWV3X2xvYWRfc2hvdyhFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9z
aG93KEV2YXNfT2JqZWN0KiBvKQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsbmV3d2luZG93LHNob3ciLCAwKTsKQEAg
LTI3NjMsNyArMjc2Myw3IEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9zaG93KEV2YXNfT2JqZWN0ICpv
KQogICoKICAqIEBwYXJhbSBvIFZpZXcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9j
bGVhcmVkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQo
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0yNzc5LDEwICsyNzc5LDEwIEBAIHZvaWQgZXdrX3Zp
ZXdfZnJhbWVfbWFpbl9jbGVhcmVkKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25h
bDogImljb24scmVjZWl2ZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBld2tfdmll
d19mcmFtZV9tYWluX2ljb25fcmVjZWl2ZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3
X2ZyYW1lX21haW5faWNvbl9yZWNlaXZlZChFdmFzX09iamVjdCogbykKIHsKICAgICBEQkcoIm89
JXAiLCBvKTsKLSAgICBFdmFzX09iamVjdCAqZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dl
dChvKTsKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChv
KTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGZyYW1lLCAiaWNvbixyZWNl
aXZlZCIsIDApOwogfQogCkBAIC0yNzk2LDEwICsyNzk2LDEwIEBAIHZvaWQgZXdrX3ZpZXdfZnJh
bWVfbWFpbl9pY29uX3JlY2VpdmVkKEV2YXNfT2JqZWN0ICpvKQogICogQG5vdGUgdGhlcmUgc2hv
dWxkIG5vdCBiZSBhbnkgZXJyb3Igc3R1ZmYgaGVyZSwgYnV0IHRyeWluZyB0byBiZQogICogICAg
ICAgY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIFdlYktpdC4KICAqLwotdm9pZCBld2tfdmlld19s
b2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciAq
ZXJyb3IpCit2b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIG8sIGNvbnN0
IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKIHsKICAgICBEQkcoIm89JXAsIGVycm9yPSVw
IiwgbywgZXJyb3IpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxv
YWQsZmluaXNoZWQiLCAodm9pZCAqKWVycm9yKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8sICJsb2FkLGZpbmlzaGVkIiwgKHZvaWQqKWVycm9yKTsKIH0KIAogLyoqCkBA
IC0yODA4LDEwICsyODA4LDEwIEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09i
amVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgKmVycm9yKQogICoKICAqIEVtaXRz
IHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0byBFd2tfRnJhbWVfTG9hZF9FcnJv
ci4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBF
d2tfRnJhbWVfTG9hZF9FcnJvciAqZXJyb3IpCit2b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZh
c19PYmplY3QqIG8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKIHsKICAgICBE
QkcoIm89JXAsIGVycm9yPSVwIiwgbywgZXJyb3IpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobywgImxvYWQsZXJyb3IiLCAodm9pZCAqKWVycm9yKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLGVycm9yIiwgKHZvaWQqKWVycm9yKTsK
IH0KIAogLyoqCkBAIC0yODIwLDcgKzI4MjAsNyBAQCB2b2lkIGV3a192aWV3X2xvYWRfZXJyb3Io
RXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yICplcnJvcikKICAqCiAg
KiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb2dyZXNzIiB3aXRoIHBvaW50ZXIgdG8gYSBkb3VibGUg
ZnJvbSAwLjAgdG8gMS4wLgogICovCi12b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdl
ZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CkBAIC0yODQyLDcgKzI4
NDIsNyBAQCB2b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCAq
bykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJyZXN0b3JlIiB3aXRoIGZyYW1lLgogICovCi12b2lk
IGV3a192aWV3X3Jlc3RvcmVfc3RhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFt
ZSkKK3ZvaWQgZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmpl
Y3QqIGZyYW1lKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInJl
c3RvcmUiLCBmcmFtZSk7CiB9CkBAIC0yODY4LDE0ICsyODY4LDE0IEBAIHZvaWQgZXdrX3ZpZXdf
cmVzdG9yZV9zdGF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lKQogICoKICAq
IEBzZWUgZXdrX3dpbmRvd19mZWF0dXJlc19yZWYoKS4KICAqLwotRXZhc19PYmplY3QgKmV3a192
aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBqYXZhc2NyaXB0LCBj
b25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyAqY29yZUZlYXR1cmVzKQorRXZhc19PYmplY3Qq
IGV3a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBqYXZhc2Ny
aXB0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZlYXR1cmVzKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogCiAgICAgaWYgKCFzZC0+YXBp
LT53aW5kb3dfY3JlYXRlKQogICAgICAgICByZXR1cm4gbzsKIAotICAgIEV3a19XaW5kb3dfRmVh
dHVyZXMgKndpbmRvd19mZWF0dXJlcyA9IGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29y
ZShjb3JlRmVhdHVyZXMpOworICAgIEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0dXJl
cyA9IGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZShjb3JlRmVhdHVyZXMpOwogICAg
IGlmICghd2luZG93X2ZlYXR1cmVzKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjg5Niw3ICsy
ODk2LDcgQEAgRXZhc19PYmplY3QgKmV3a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBqYXZhc2NyaXB0LCBjb25zdAogICoKICAqIEBwYXJhbSBvIFZpZXcgdG8g
YmUgY2xvc2VkLgogICovCi12b2lkIGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCAq
bykKK3ZvaWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogCkBAIC0yOTEyLDcgKzI5MTIsNyBAQCB2
b2lkIGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBz
aWduYWw6ICJsaW5rLGhvdmVyLGluIgogICovCi12b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92
ZXJfaW4oRXZhc19PYmplY3QgKm8sIHZvaWQgKmRhdGEpCit2b2lkIGV3a192aWV3X21vdXNlX2xp
bmtfaG92ZXJfaW4oRXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCiB7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibGluayxob3ZlcixpbiIsIGRhdGEpOwogfQpAQCAt
MjkyMyw3ICsyOTIzLDcgQEAgdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNf
T2JqZWN0ICpvLCB2b2lkICpkYXRhKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxpbmssaG92ZXIs
b3V0IgogICovCi12b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0
ICpvKQordm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291dChFdmFzX09iamVjdCogbykK
IHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsaW5rLGhvdmVyLG91
dCIsIDApOwogfQpAQCAtMjkzNCw3ICsyOTM0LDcgQEAgdm9pZCBld2tfdmlld19tb3VzZV9saW5r
X2hvdmVyX291dChFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ0b29sYmFy
cyx2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3
a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlz
aWJsZSkKK3ZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8s
IEVpbmFfQm9vbCB2aXNpYmxlKQogewogICAgIERCRygibz0lcCAodmlzaWJsZT0lZCkiLCBvLCAh
IXZpc2libGUpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRvb2xi
YXJzLHZpc2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMjk1MSw3ICsyOTUxLDcgQEAgdm9pZCBl
d2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZp
c2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidG9vbGJhcnMsdmlzaWJsZSxnZXQiIHdpdGgg
YSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld190b29sYmFyc192aXNp
YmxlX2dldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQordm9pZCBld2tfdmll
d190b29sYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxl
KQogewogICAgIERCRygiJXMsIG89JXAiLCBfX2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBF
SU5BX0ZBTFNFOwpAQCAtMjk2Nyw3ICsyOTY3LDcgQEAgdm9pZCBld2tfdmlld190b29sYmFyc192
aXNpYmxlX2dldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQogICoKICAqIEVt
aXRzIHNpZ25hbDogInN0YXR1c2Jhcix2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBi
b29sZWFuLgogICovCi12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNp
YmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJHKCJv
PSVwICh2aXNpYmxlPSVkKSIsIG8sICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChvLCAic3RhdHVzYmFyLHZpc2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAt
Mjk4NCw3ICsyOTg0LDcgQEAgdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInN0
YXR1c2Jhcix2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12
b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sICp2aXNpYmxlKQordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19P
YmplY3QqIG8sIEVpbmFfQm9vbCogdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19m
dW5jX18sIG8pOwogICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKQEAgLTMwMDAsNyArMzAwMCw3
IEBAIHZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgKnZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAic3RhdHVzYmFyLHRleHQs
c2V0IiB3aXRoIGEgc3RyaW5nLgogICovCi12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3Nl
dChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCkKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVz
YmFyX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0ZXh0KQogewogICAgIERC
Rygibz0lcCAodGV4dD0lcykiLCBvLCB0ZXh0KTsKICAgICBJTkYoInN0YXR1cyBiYXIgdGV4dCBz
ZXQ6ICVzIiwgdGV4dCk7CkBAIC0zMDE2LDcgKzMwMTYsNyBAQCB2b2lkIGV3a192aWV3X3N0YXR1
c2Jhcl90ZXh0X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCkKICAqCiAgKiBF
bWl0cyBzaWduYWw6ICJzY3JvbGxiYXJzLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBh
IGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNf
dmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKQogewogICAgIERC
Rygibz0lcCAodmlzaWJsZT0lZCkiLCBvLCAhIXZpc2libGUpOwogICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobywgInNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7
CkBAIC0zMDMzLDcgKzMwMzMsNyBAQCB2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25h
bDogInNjcm9sbGJhcnMsdmlzaWJsZSxnZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4K
ICAqLwotdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgKnZpc2libGUpCit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9n
ZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCogdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBv
PSVwIiwgX19mdW5jX18sIG8pOwogICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKQEAgLTMwNDks
NyArMzA0OSw3IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogIm1lbnVi
YXIsdmlzaWJsZSxzZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBl
d2tfdmlld19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlz
aWJsZSkKK3ZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJHKCJvPSVwICh2aXNpYmxlPSVkKSIsIG8sICEh
dmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibWVudWJh
cix2aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsKQEAgLTMwNjYsNyArMzA2Niw3IEBAIHZvaWQgZXdr
X3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZpc2li
bGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAibWVudWJhcix2aXNpYmxlLGdldCIgd2l0aCBhIHBv
aW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9n
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfbWVu
dWJhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogewog
ICAgIERCRygiJXMsIG89JXAiLCBfX2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZB
TFNFOwpAQCAtMzA4Myw3ICszMDgzLDcgQEAgdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVf
Z2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCiAgKiBFbWl0cyBzaWduYWw6
ICJ0b29sdGlwLHRleHQsc2V0IiB3aXRoIGEgc3RyaW5nLiBJZiB0b29sdGlwIG11c3QgYmUgYWN0
dWFsbHkKICAqIHJlbW92ZWQsIHRleHQgd2lsbCBiZSAwIG9yICdcMCcKICAqLwotdm9pZCBld2tf
dmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0KQor
dm9pZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFy
KiB0ZXh0KQogewogICAgIERCRygibz0lcCB0ZXh0PSVzIiwgbywgdGV4dCk7CiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidG9vbHRpcCx0ZXh0LHNldCIsICh2b2lkICop
dGV4dCk7CkBAIC0zMDk4LDcgKzMwOTgsNyBAQCB2b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9z
ZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQpCiAgKiBAc291cmNlSUQgU291cmNl
IGlkLgogICoKICAqLwotdm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBjaGFyICptZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29u
c3QgY2hhciAqc291cmNlSUQpCit2b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVy
LCBjb25zdCBjaGFyKiBzb3VyY2VJRCkKIHsKICAgICBEQkcoIm89JXAgbWVzc2FnZT0lcyBsaW5l
TnVtYmVyPSV1IHNvdXJjZUlEPSVzIiwgbywgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQp
OwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzEwNyw3ICszMTA3
LDcgQEAgdm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICptZXNzYWdlLCB1bnNpZ25lZAogICAgIHNkLT5hcGktPmFkZF9jb25zb2xlX21l
c3NhZ2Uoc2QsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKIH0KIAotdm9pZCBld2tf
dmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZy
YW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQordm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9h
bGVydChFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNz
YWdlKQogewogICAgIERCRygibz0lcCBmcmFtZT0lcCBtZXNzYWdlPSVzIiwgbywgZnJhbWUsIG1l
c3NhZ2UpOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzExOSw3
ICszMTE5LDcgQEAgdm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVj
dCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGEKICAgICBzZC0+YXBpLT5ydW5famF2
YXNjcmlwdF9hbGVydChzZCwgZnJhbWUsIG1lc3NhZ2UpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZy
YW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQorRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2Ny
aXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hh
ciogbWVzc2FnZSkKIHsKICAgICBEQkcoIm89JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIG8sIGZy
YW1lLCBtZXNzYWdlKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKQEAgLTMxMzEsNyArMzEzMSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvCiAg
ICAgcmV0dXJuIHNkLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2NvbmZpcm0oc2QsIGZyYW1lLCBtZXNz
YWdlKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFz
X09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlLCBjb25z
dCBjaGFyICpkZWZhdWx0VmFsdWUsIGNoYXIgKip2YWx1ZSkKK0VpbmFfQm9vbCBld2tfdmlld19y
dW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwg
Y29uc3QgY2hhciogbWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFs
dWUpCiB7CiAgICAgREJHKCJvPSVwIGZyYW1lPSVwIG1lc3NhZ2U9JXMiLCBvLCBmcmFtZSwgbWVz
c2FnZSk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRf
cHJvbXB0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbgogICoKICAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHNjcmlwdCBzaG91bGQgYmUgc3RvcHBlZDsgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKICAqLwotRWluYV9Cb29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRf
amF2YXNjcmlwdChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zaG91bGRfaW50
ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0z
MTgwLDcgKzMxODAsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9qYXZh
c2NyaXB0KEV2YXNfT2JqZWN0ICpvKQogICogQHBhcmFtIGV4cGVjdGVkX3NpemUgVGhlIGV4cGVj
dGVkIHNpemUgb2YgdGhpcyBkYXRhYmFzZSBpbiBvcmRlciB0byBmdWxmaWxsCiAgKiBzaXRlJ3Mg
cmVxdWlyZW1lbnQuCiAgKi8KLXVpbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1
b3RhKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKmRhdGFi
YXNlTmFtZSwgdWludDY0X3QgY3VycmVudF9zaXplLCB1aW50NjRfdCBleHBlY3RlZF9zaXplKQor
dWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QqIG8s
IEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBj
dXJyZW50X3NpemUsIHVpbnQ2NF90IGV4cGVjdGVkX3NpemUpCiB7CiAgICAgREJHKCJvPSVwIiwg
byk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CkBAIC0zMjA1LDcg
KzMyMDUsNyBAQCB1aW50NjRfdCBld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFz
X09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjbwogICoKICAqIEByZXR1cm4gQEVJTkFf
RkFMU0UgaWYgdXNlciBjYW5jZWxlZCBmaWxlIHNlbGVjdGlvbjsgQEVJTkFfVFJVRSBpZiBjb25m
aXJtZWQuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVj
dCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBFaW5hX0Jvb2wgYWxsb3dzX211bHRpcGxlX2ZpbGVz
LCBjb25zdCBjaGFyICphY2NlcHRfdHlwZXMsIEVpbmFfTGlzdCAqKnNlbGVjdGVkX2ZpbGVuYW1l
cykKK0VpbmFfQm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCogbywgRXZh
c19PYmplY3QqIGZyYW1lLCBFaW5hX0Jvb2wgYWxsb3dzX211bHRpcGxlX2ZpbGVzLCBjb25zdCBj
aGFyKiBhY2NlcHRfdHlwZXMsIEVpbmFfTGlzdCoqIHNlbGVjdGVkX2ZpbGVuYW1lcykKIHsKICAg
ICBEQkcoIm89JXAgZnJhbWU9JXAgYWxsb3dzX211bHRpcGxlX2ZpbGVzPSVkIiwgbywgZnJhbWUs
IGFsbG93c19tdWx0aXBsZV9maWxlcyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0zMjIzLDcgKzMyMjMsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcnVuX29wZW5fcGFuZWwoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgRWlu
YV9Cb29sCiAgICAgcmV0dXJuIGNvbmZpcm07CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcmVwYWludChF
dmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoKQordm9pZCBld2tfdmlld19yZXBhaW50KEV2YXNfT2JqZWN0KiBvLCBFdmFz
X0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAg
ICAgREJHKCJvPSVwLCByZWdpb249JWQsJWQgKyAlZHglZCIsIG8sIHgsIHksIHcsIGgpOwogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzIzOCw3ICszMjM4LDcgQEAg
dm9pZCBld2tfdmlld19yZXBhaW50KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNf
Q29vcmQgeSwgRXZhc19Db29yZCB3LAogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsK
IH0KIAotdm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgs
IEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgc3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQg
c3csIEV2YXNfQ29vcmQgc2gsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29v
cmQgY3csIEV2YXNfQ29vcmQgY2gsIEVpbmFfQm9vbCBtYWluX2ZyYW1lKQordm9pZCBld2tfdmll
d19zY3JvbGwoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2
YXNfQ29vcmQgc3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3csIEV2YXNfQ29vcmQgc2gs
IEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgY3csIEV2YXNfQ29vcmQg
Y2gsIEVpbmFfQm9vbCBtYWluX2ZyYW1lKQogewogICAgIERCRygibz0lcCwgZGVsdGE6ICVkLCVk
LCBzY3JvbGw6ICVkLCVkKyVkeCVkLCBjbGlwOiAlZCwlZCslZHglZCIsCiAgICAgICAgIG8sIGR4
LCBkeSwgc3gsIHN5LCBzdywgc2gsIGN4LCBjeSwgY3csIGNoKTsKQEAgLTMyNTYsNyArMzI1Niw3
IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIGR4LCBF
dmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHN4CiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQo
c2QpOwogfQogCi1XZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAt
MzI2OCw3ICszMjY4LDcgQEAgV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyAiZnJhbWUsY3JlYXRlZCIgd2l0aCB0
aGUgbmV3IGZyYW1lIG9iamVjdCBvbiBzdWNjZXNzLgogICovCi1XVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCAqbywgRXZhc19P
YmplY3QgKmZyYW1lLCBjb25zdCBXVEY6OlN0cmluZyAmbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1l
T3duZXJFbGVtZW50ICpvd25lckVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29u
c3QgV1RGOjpTdHJpbmcgJnJlZmVycmVyKQorV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1l
PiBld2tfdmlld19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3Ry
aW5nJiByZWZlcnJlcikKIHsKICAgICBEQkcoIm89JXAsIGZyYW1lPSVwLCBuYW1lPSVzLCBvd25l
ckVsZW1lbnQ9JXAsIHVybD0lcywgcmVmZXJyZXI9JXMiLAogICAgICAgICBvLCBmcmFtZSwgbmFt
ZS51dGY4KCkuZGF0YSgpLCBvd25lckVsZW1lbnQsCkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09i
amVjdCAqbywgRXZhc19PYmplYwogICAgIHJldHVybiBjZi5yZWxlYXNlKCk7CiB9CiAKLVdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19P
YmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1
Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQgKmVsZW1lbnQsIGNvbnN0IFdlYkNv
cmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbU5hbWVz
LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtVmFsdWVzLCBjb25zdCBXVEY6
OlN0cmluZyAmbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZh
c19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJs
LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgREJHKCJvPSVwLCBmcmFtZT0lcCwgc2l6
ZT0lZHglZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCiAgICAgICAgIG8sIGZy
YW1lLCBwbHVnaW5TaXplLndpZHRoKCksIHBsdWdpblNpemUuaGVpZ2h0KCksIGVsZW1lbnQsCkBA
IC0zMzE1LDYgKzMzMTUsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tf
dmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iagogICAgICAgICAgbWlt
ZVR5cGUsIGxvYWRNYW51YWxseSk7CiB9CiAKKwogLyoqCiAgKiBAaW50ZXJuYWwKICAqCkBAIC0z
MzI2LDcgKzMzMjcsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmll
d19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iagogICoKICAqIEVtaXRzOiAi
cG9wdXAsY3JlYXRlIiB3aXRoIGEgbGlzdCBvZiBFd2tfTWVudSBjb250YWluaW5nIGVhY2ggaXRl
bSdzIGRhdGEKICAqLwotdm9pZCBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCAqY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QgJnJlY3QpCit2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCog
bywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIHsKICAgICBJTkYoIm89JXAiLCBvKTsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTMzNDAsNyArMzM0MSw3IEBAIHZvaWQg
ZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0ICpvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQgKmNsaWVudCwgaW50IHNlCiAgICAgLy8gcG9wdWxhdGUgaXRlbXMKICAgICBjb25zdCBpbnQg
c2l6ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBFd2tfTWVudV9JdGVtICppdGVtID0gKEV3a19NZW51X0l0ZW0gKikg
bWFsbG9jKHNpemVvZigqaXRlbSkpOworICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0gKEV3
a19NZW51X0l0ZW0qKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CiAgICAgICAgIGlmIChjbGllbnQt
Pml0ZW1Jc1NlcGFyYXRvcihpKSkKICAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVOVV9T
RVBBUkFUT1I7CiAgICAgICAgIGVsc2UgaWYgKGNsaWVudC0+aXRlbUlzTGFiZWwoaSkpCkBAIC0z
MzU5LDcgKzMzNjAsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAqbywg
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICpjbGllbnQsIGludCBzZQogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInBvcHVwLGNyZWF0ZSIsICZwcml2LT5wb3B1cC5tZW51
KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3koRXZhc19PYmplY3QgKm8p
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFzX09iamVjdCogbykKIHsKICAg
ICBJTkYoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKQEAgLTMzNzIsNyArMzM3Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1
cF9kZXN0cm95KEV2YXNfT2JqZWN0ICpvKQogCiAgICAgdm9pZCogaXRlbXY7CiAgICAgRUlOQV9M
SVNUX0ZSRUUocHJpdi0+cG9wdXAubWVudS5pdGVtcywgaXRlbXYpIHsKLSAgICAgICAgRXdrX01l
bnVfSXRlbSogaXRlbSA9IChFd2tfTWVudV9JdGVtICopaXRlbXY7CisgICAgICAgIEV3a19NZW51
X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRlbSopaXRlbXY7CiAgICAgICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKGl0ZW0tPnRleHQpOwogICAgICAgICBmcmVlKGl0ZW0pOwogICAgIH0KQEAgLTMz
ODIsNyArMzM4Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2Jq
ZWN0ICpvKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcG9wdXBf
c2VsZWN0ZWRfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgaW5kZXgpCit2b2lkIGV3a192aWV3X3Bv
cHVwX3NlbGVjdGVkX3NldChFdmFzX09iamVjdCogbywgaW50IGluZGV4KQogewogICAgIElORigi
bz0lcCIsIG8pOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzQw
Miw3ICszNDAzLDcgQEAgdm9pZCBld2tfdmlld19wb3B1cF9zZWxlY3RlZF9zZXQoRXZhc19PYmpl
Y3QgKm8sIGludCBpbmRleCkKICAqIEVtaXRzOiAiZG93bmxvYWQscmVxdWVzdCIgd2l0aCBhbiBF
d2tfRG93bmxvYWQgY29udGFpbmluZyB0aGUgZGV0YWlscyBvZiB0aGUKICAqIHJlcXVlc3RlZCBk
b3dubG9hZC4gVGhlIGRvd25sb2FkIHBlciBzZSBtdXN0IGJlIGhhbmRsZWQgb3V0c2lkZSBvZiB3
ZWJraXQuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCAq
bywgRXdrX0Rvd25sb2FkICpkb3dubG9hZCkKK3ZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVz
dChFdmFzX09iamVjdCogbywgRXdrX0Rvd25sb2FkKiBkb3dubG9hZCkKIHsKICAgICBEQkcoInZp
ZXc9JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJkb3du
bG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwpAQCAtMzQyOCw3ICszNDI5LDcgQEAgdm9pZCBld2tf
dmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAq
ZnJhbWUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidmlld3BvcnQsY2hhbmdlZCIgd2l0aCBubyBw
YXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2
YXNfT2JqZWN0ICpvLCBjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyAmYXJndW1lbnRz
KQordm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChFdmFzX09iamVjdCogbywg
Y29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cykKIHsKICAgICBFV0tf
VklFV19TRF9HRVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAg
LTM0MzcsNyArMzQzOCw3IEBAIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJnCiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidmlld3BvcnQsY2hhbmdlZCIsIDApOwogfQogCi12
b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
LCBmbG9hdCAqdywgZmxvYXQgKmgsIGZsb2F0ICppbml0X3NjYWxlLCBmbG9hdCAqbWF4X3NjYWxl
LCBmbG9hdCAqbWluX3NjYWxlLCBmbG9hdCAqZGV2aWNlX3BpeGVsX3JhdGlvLCBFaW5hX0Jvb2wg
KnVzZXJfc2NhbGFibGUpCit2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvLCBmbG9hdCogdywgZmxvYXQqIGgsIGZsb2F0KiBpbml0X3NjYWxl
LCBmbG9hdCogbWF4X3NjYWxlLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogZGV2aWNlX3BpeGVs
X3JhdGlvLCBFaW5hX0Jvb2wqIHVzZXJfc2NhbGFibGUpCiB7CiAgICAgV2ViQ29yZTo6Vmlld3Bv
cnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19j
b21wdXRlKG8pOwogCkBAIC0zNDU3LDcgKzM0NTgsNyBAQCB2b2lkIGV3a192aWV3X3ZpZXdwb3J0
X2F0dHJpYnV0ZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBmbG9hdCAqdywgZmxvYXQgKmgs
CiAgICAgICAgICp1c2VyX3NjYWxhYmxlID0gc3RhdGljX2Nhc3Q8Ym9vbD4oYXR0cmlidXRlcy51
c2VyU2NhbGFibGUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZh
c19PYmplY3QgKm8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlKQorRWluYV9Cb29s
IGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5fc2NhbGUs
IGZsb2F0IG1heF9zY2FsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwpAQCAtMzQ3Myw3ICszNDc0LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3pv
b21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9z
Y2EKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1mbG9hdCBld2tfdmlld196b29tX3Jhbmdl
X21pbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitmbG9hdCBld2tfdmlld196b29tX3Jhbmdl
X21pbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgLTEuMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCAtMS4wKTsKQEAgLTM0ODEsNyArMzQ4Miw3IEBAIGZsb2F0IGV3a192aWV3X3pvb21f
cmFuZ2VfbWluX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gcHJpdi0+c2V0
dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGU7CiB9CiAKLWZsb2F0IGV3a192aWV3X3pvb21fcmFu
Z2VfbWF4X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2Zsb2F0IGV3a192aWV3X3pvb21fcmFu
Z2VfbWF4X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCAtMS4wKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIC0xLjApOwpAQCAtMzQ4OSw3ICszNDkwLDcgQEAgZmxvYXQgZXdrX3ZpZXdfem9v
bV9yYW5nZV9tYXhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Vz
ZXJfc2NhbGFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkK
K0VpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWlu
YV9Cb29sIHVzZXJfc2NhbGFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKQEAgLTM0OTksNyArMzUwMCw3IEBAIEVpbmFfQm9vbCBld2tfdmll
d191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHVzZXJfc2NhbGFi
bGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3VzZXJf
c2NhbGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3Vz
ZXJfc2NhbGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0zNTA3LDcgKzM1MDgsNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UudXNlcl9zY2FsYWJsZTsKIH0K
IAotZmxvYXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldChjb25zdCBFdmFzX09iamVj
dCAqbykKK2Zsb2F0IGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAtMS4wKTsKQEAgLTM1
MTUsNyArMzUxNiw3IEBAIGZsb2F0IGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmRldmljZV9waXhl
bF9yYXRpbzsKIH0KIAotdm9pZCBld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlfbm9uZW1wdHlf
bGF5b3V0KEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlf
bm9uZW1wdHlfbGF5b3V0KEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
dik7CkBAIC0zNTMyLDcgKzM1MzMsNyBAQCB2b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxs
eV9ub25lbXB0eV9sYXlvdXQoRXZhc19PYmplY3QgKm8pCiAgKgogICogQHBhcmFtIG8gdmlldy4K
ICAqLwotdm9pZCBld2tfdmlld19kaXNwYXRjaF9kaWRfZmluaXNoX2xvYWRpbmcoRXZhc19PYmpl
Y3QgKm8pCit2b2lkIGV3a192aWV3X2Rpc3BhdGNoX2RpZF9maW5pc2hfbG9hZGluZyhFdmFzX09i
amVjdCogbykKIHsKICAgICAvKiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50IGFuZCByZW5kZXJpbmcg
aXMgc3RpbGwgZGlzYWJsZWQsIFdlYkNvcmUgd2lsbCBub3QKICAgICAgKiB0cmlnZ2VyIHRoZSBk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgc2lnbmFsIGFueW1vcmUuIFNvLCB3ZQpAQCAt
MzU0MSw3ICszNTQyLDcgQEAgdm9pZCBld2tfdmlld19kaXNwYXRjaF9kaWRfZmluaXNoX2xvYWRp
bmcoRXZhc19PYmplY3QgKm8pCiAgICAgZXdrX3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5X25vbmVt
cHR5X2xheW91dChvKTsKIH0KIAotdm9pZCBld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVk
X2Zvcl9uZXdwYWdlKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld190cmFuc2l0aW9uX3Rv
X2NvbW1pdGVkX2Zvcl9uZXdwYWdlKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdik7CkBAIC0zNTYwLDcgKzM1NjEsNyBAQCB2b2lkIGV3a192aWV3X3RyYW5zaXRpb25f
dG9fY29tbWl0ZWRfZm9yX25ld3BhZ2UoRXZhc19PYmplY3QgKm8pCiAgKiBAcGFyYW0gbyBWaWV3
IHRvIGxvYWQKICAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3Qgd2hpY2ggY29udGFpbiB1cmwgdG8g
bmF2aWdhdGUKICAqLwotRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uKEV2YXNfT2JqZWN0ICpvLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCAqcmVxdWVzdCkK
K0VpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVj
dCogbywgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9UUlVFKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgRUlOQV9UUlVFKTsKQEAgLTM1NzEsNyArMzU3Miw3
IEBAIEVpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09i
amVjdCAqbywgRXdrX0ZyYW1lX1Jlc291cmNlCiAgICAgcmV0dXJuIHNkLT5hcGktPm5hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uKHNkLCByZXF1ZXN0KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3
X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QgKm8sIEV3a19KU19PYmplY3QgKm9iaiwgY29uc3Qg
Y2hhciAqb2JqX25hbWUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2JqZWN0X2FkZChFdmFzX09i
amVjdCAqbywgRXdrX0pTX09iamVjdCogb2JqLCBjb25zdCBjaGFyKiBvYmpfbmFtZSkKIHsKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAob2JqLT52aWV3KSAvLyBvYmpl
Y3QgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBhbm90aGVyIGV3a192aWV3CkBAIC0zNTkzLDcg
KzM1OTQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2JqZWN0X2FkZChFdmFzX09iamVjdCAq
bywgRXdrX0pTX09iamVjdCAqb2JqLCBjb25zdCBjaGFyCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMgPSB3aW5kb3ctPmdsb2JhbEV4ZWMoKTsKIAogICAgIG9iai0+dmlldyA9IG87Ci0gICAgSlND
OjpKU09iamVjdCAqcnVudGltZU9iamVjdCA9IChKU0M6OkpTT2JqZWN0KilKU0M6OkJpbmRpbmdz
OjpDSW5zdGFuY2U6OmNyZWF0ZSgoTlBPYmplY3QqKW9iaiwgcm9vdCktPmNyZWF0ZVJ1bnRpbWVP
YmplY3QoZXhlYyk7CisgICAgSlNDOjpKU09iamVjdCogcnVudGltZU9iamVjdCA9IChKU0M6OkpT
T2JqZWN0KilKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZSgoTlBPYmplY3QqKW9iaiwg
cm9vdCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgSlNDOjpJZGVudGlmaWVyIGlk
ID0gSlNDOjpJZGVudGlmaWVyKGV4ZWMsIG9ial9uYW1lKTsKIAogICAgIEpTQzo6UHV0UHJvcGVy
dHlTbG90IHNsb3Q7CkBAIC0zNjUzLDcgKzM2NTQsNyBAQCB2b2lkKiBld2tfdmlld19wcm90b2Nv
bF9oYW5kbGVyX3Jlc291cmNlX2dldChFdmFzX09iamVjdCogbywgc2l6ZV90KiBieXRlc1JlYWQs
CiAgKiBAcGFyYW0gdyBuZXcgY29udGVudCB3aWR0aC4KICAqIEBwYXJhbSBoIG5ldyBjb250ZW50
IGhlaWdodC4KICAqLwotdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19P
YmplY3QgKm8sIGludCB3LCBpbnQgaCkKK3ZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFu
Z2VkKEV2YXNfT2JqZWN0KiBvLCBpbnQgdywgaW50IGgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aSk7CkBAIC0zNjcxLDE3ICszNjcyLDE3IEBAIHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9j
aGFuZ2VkKEV2YXNfT2JqZWN0ICpvLCBpbnQgdywgaW50IGgpCiAgKgogICogQHJldHVybiBwYWdl
IHNpemUuCiAgKi8KLVdlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQorV2ViQ29yZTo6RmxvYXRSZWN0IGV3a192aWV3X3BhZ2VfcmVj
dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNk
KTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CiAKICAgICBXZWJDb3JlOjpGcmFt
ZSogbWFpbl9mcmFtZSA9IHByaXYtPnBhZ2UtPm1haW5GcmFtZSgpOwogICAgIHJldHVybiBtYWlu
X2ZyYW1lLT52aWV3KCktPmZyYW1lUmVjdCgpOwotfQorfSAKIAogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCi12b2lkIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX3NldChFdmFzX09iamVjdCAq
bywgYm9vbCBuZWVkZWQpCit2b2lkIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX3NldChFdmFz
X09iamVjdCogbywgYm9vbCBuZWVkZWQpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0zNjg5LDcgKzM2OTAsNyBAQCB2
b2lkIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX3NldChFdmFzX09iamVjdCAqbywgYm9vbCBu
ZWVkZWQpCiAgICAgcHJpdi0+ZmxhZ3MubmVlZF90b3VjaF9ldmVudHMgPSBuZWVkZWQ7CiB9CiAK
LUVpbmFfQm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlO
QV9GQUxTRSk7CkBAIC0zNjk3LDcgKzM2OTgsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbmVlZF90
b3VjaF9ldmVudHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogfQogI2VuZGlmCiAKLUVpbmFf
Qm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1ZpZXdfTW9kZSB2aWV3
X21vZGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfbW9kZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19W
aWV3X01vZGUgdmlld19tb2RlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CkBAIC0zNzI1LDcgKzM3MjYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
bW9kZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19WaWV3X01vZGUgdmlld19tb2RlKQogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLUV3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9kZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitFd2tfVmlld19Nb2RlIGV3a192aWV3X21vZGVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEV3a19WaWV3X01vZGUgbW9kZSA9IEVXS19WSUVXX01P
REVfV0lORE9XRUQ7CiAKQEAgLTM3NjQsNyArMzc2NSw3IEBAIEV3a19WaWV3X01vZGUgZXdrX3Zp
ZXdfbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
ZWRpdG9yY2xpZW50c2VsZWN0aW9uLGNoYW5nZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwot
dm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0
ICpvKQordm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNf
T2JqZWN0KiBvKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImVk
aXRvcmNsaWVudCxzZWxlY3Rpb24sY2hhbmdlZCIsIDApOwogfQpAQCAtMzc3Nyw3ICszNzc4LDcg
QEAgdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2Jq
ZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImVkaXRvcmNsaWVudCxjb250ZW50cyxjaGFu
Z2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVu
dF9jb250ZW50c19jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19lZGl0b3Jf
Y2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiZWRpdG9yY2xpZW50LGNvbnRlbnRzLGNoYW5nZWQi
LCAwKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>107765</attachid>
            <date>2011-09-16 21:24:37 -0700</date>
            <delta_ts>2011-09-17 23:10:43 -0700</delta_ts>
            <desc>configuration file for uncrustify</desc>
            <filename>uncrustify.cfg</filename>
            <type>text/plain</type>
            <size>3431</size>
            <attacher name="Lucas De Marchi">lucas.de.marchi</attacher>
            
              <data encoding="base64">c3BfYXJpdGg9aWdub3JlCnNwX2Fzc2lnbj1pZ25vcmUKc3BfYXNzaWduX2RlZmF1bHQ9aWdub3Jl
CnNwX2JlZm9yZV9hc3NpZ249aWdub3JlCnNwX2FmdGVyX2Fzc2lnbj1pZ25vcmUKc3BfZW51bV9h
c3NpZ249aWdub3JlCnNwX2VudW1fYmVmb3JlX2Fzc2lnbj1pZ25vcmUKc3BfZW51bV9hZnRlcl9h
c3NpZ249aWdub3JlCnNwX3BwX2NvbmNhdD1pZ25vcmUKc3BfcHBfc3RyaW5naWZ5PWlnbm9yZQpz
cF9ib29sPWlnbm9yZQpzcF9jb21wYXJlPWlnbm9yZQpzcF9pbnNpZGVfcGFyZW49aWdub3JlCnNw
X3BhcmVuX3BhcmVuPWlnbm9yZQpzcF9iYWxhbmNlX25lc3RlZF9wYXJlbnM9ZmFsc2UKc3BfcGFy
ZW5fYnJhY2U9aWdub3JlCnNwX2JlZm9yZV9wdHJfc3Rhcj1yZW1vdmUKc3BfYmVmb3JlX3VubmFt
ZWRfcHRyX3N0YXI9aWdub3JlCnNwX2JldHdlZW5fcHRyX3N0YXI9aWdub3JlCnNwX2FmdGVyX3B0
cl9zdGFyPWZvcmNlCnNwX2FmdGVyX3B0cl9zdGFyX2Z1bmM9Zm9yY2UKc3BfYmVmb3JlX3B0cl9z
dGFyX2Z1bmM9cmVtb3ZlCnNwX2JlZm9yZV9ieXJlZj1pZ25vcmUKc3BfYmVmb3JlX3VubmFtZWRf
YnlyZWY9aWdub3JlCnNwX2FmdGVyX2J5cmVmPWlnbm9yZQpzcF9hZnRlcl9ieXJlZl9mdW5jPWln
bm9yZQpzcF9iZWZvcmVfYnlyZWZfZnVuYz1pZ25vcmUKc3BfYWZ0ZXJfdHlwZT1pZ25vcmUKc3Bf
dGVtcGxhdGVfYW5nbGU9aWdub3JlCnNwX2JlZm9yZV9hbmdsZT1pZ25vcmUKc3BfaW5zaWRlX2Fu
Z2xlPWlnbm9yZQpzcF9hZnRlcl9hbmdsZT1pZ25vcmUKc3BfYW5nbGVfcGFyZW49aWdub3JlCnNw
X2FuZ2xlX3dvcmQ9aWdub3JlCnNwX2JlZm9yZV9zcGFyZW49aWdub3JlCnNwX2luc2lkZV9zcGFy
ZW49aWdub3JlCnNwX2luc2lkZV9zcGFyZW5fY2xvc2U9aWdub3JlCnNwX2FmdGVyX3NwYXJlbj1p
Z25vcmUKc3Bfc3BhcmVuX2JyYWNlPWlnbm9yZQpzcF9pbnZhcmlhbnRfcGFyZW49aWdub3JlCnNw
X2FmdGVyX2ludmFyaWFudF9wYXJlbj1pZ25vcmUKc3Bfc3BlY2lhbF9zZW1pPWlnbm9yZQpzcF9i
ZWZvcmVfc2VtaT1pZ25vcmUKc3BfYmVmb3JlX3NlbWlfZm9yPWlnbm9yZQpzcF9iZWZvcmVfc2Vt
aV9mb3JfZW1wdHk9aWdub3JlCnNwX2FmdGVyX3NlbWk9aWdub3JlCnNwX2FmdGVyX3NlbWlfZm9y
PWlnbm9yZQpzcF9hZnRlcl9zZW1pX2Zvcl9lbXB0eT1pZ25vcmUKc3BfYmVmb3JlX3NxdWFyZT1p
Z25vcmUKc3BfYmVmb3JlX3NxdWFyZXM9aWdub3JlCnNwX2luc2lkZV9zcXVhcmU9aWdub3JlCnNw
X2FmdGVyX2NvbW1hPWlnbm9yZQpzcF9iZWZvcmVfY29tbWE9aWdub3JlCnNwX2JlZm9yZV9lbGxp
cHNpcz1pZ25vcmUKc3BfYWZ0ZXJfY2xhc3NfY29sb249aWdub3JlCnNwX2JlZm9yZV9jbGFzc19j
b2xvbj1pZ25vcmUKc3BfYmVmb3JlX2Nhc2VfY29sb249cmVtb3ZlCnNwX2FmdGVyX29wZXJhdG9y
PWlnbm9yZQpzcF9hZnRlcl9vcGVyYXRvcl9zeW09aWdub3JlCnNwX2FmdGVyX2Nhc3Q9aWdub3Jl
CnNwX2luc2lkZV9wYXJlbl9jYXN0PWlnbm9yZQpzcF9jcHBfY2FzdF9wYXJlbj1pZ25vcmUKc3Bf
c2l6ZW9mX3BhcmVuPWlnbm9yZQpzcF9hZnRlcl90YWc9aWdub3JlCnNwX2luc2lkZV9icmFjZXNf
ZW51bT1pZ25vcmUKc3BfaW5zaWRlX2JyYWNlc19zdHJ1Y3Q9aWdub3JlCnNwX2luc2lkZV9icmFj
ZXM9aWdub3JlCnNwX2luc2lkZV9icmFjZXNfZW1wdHk9aWdub3JlCnNwX3R5cGVfZnVuYz1pZ25v
cmUKc3BfZnVuY19wcm90b19wYXJlbj1pZ25vcmUKc3BfZnVuY19kZWZfcGFyZW49aWdub3JlCnNw
X2luc2lkZV9mcGFyZW5zPWlnbm9yZQpzcF9pbnNpZGVfZnBhcmVuPWlnbm9yZQpzcF9zcXVhcmVf
ZnBhcmVuPWlnbm9yZQpzcF9mcGFyZW5fYnJhY2U9aWdub3JlCnNwX2Z1bmNfY2FsbF9wYXJlbj1p
Z25vcmUKc3BfZnVuY19jYWxsX3VzZXJfcGFyZW49aWdub3JlCnNwX2Z1bmNfY2xhc3NfcGFyZW49
aWdub3JlCnNwX3JldHVybl9wYXJlbj1pZ25vcmUKc3BfYXR0cmlidXRlX3BhcmVuPWlnbm9yZQpz
cF9kZWZpbmVkX3BhcmVuPWlnbm9yZQpzcF90aHJvd19wYXJlbj1pZ25vcmUKc3BfbWFjcm89aWdu
b3JlCnNwX21hY3JvX2Z1bmM9aWdub3JlCnNwX2Vsc2VfYnJhY2U9aWdub3JlCnNwX2JyYWNlX2Vs
c2U9aWdub3JlCnNwX2JyYWNlX3R5cGVkZWY9aWdub3JlCnNwX2NhdGNoX2JyYWNlPWlnbm9yZQpz
cF9icmFjZV9jYXRjaD1pZ25vcmUKc3BfZmluYWxseV9icmFjZT1pZ25vcmUKc3BfYnJhY2VfZmlu
YWxseT1pZ25vcmUKc3BfdHJ5X2JyYWNlPWlnbm9yZQpzcF9nZXRzZXRfYnJhY2U9aWdub3JlCnNw
X2JlZm9yZV9kYz1pZ25vcmUKc3BfYWZ0ZXJfZGM9aWdub3JlCnNwX2RfYXJyYXlfY29sb249aWdu
b3JlCnNwX25vdD1pZ25vcmUKc3BfaW52PWlnbm9yZQpzcF9hZGRyPWlnbm9yZQpzcF9tZW1iZXI9
aWdub3JlCnNwX2RlcmVmPWlnbm9yZQpzcF9zaWduPWlnbm9yZQpzcF9pbmNkZWM9aWdub3JlCnNw
X2JlZm9yZV9ubF9jb250PWlnbm9yZQpzcF9hZnRlcl9vY19zY29wZT1pZ25vcmUKc3BfYWZ0ZXJf
b2NfY29sb249aWdub3JlCnNwX2JlZm9yZV9vY19jb2xvbj1pZ25vcmUKc3BfYWZ0ZXJfc2VuZF9v
Y19jb2xvbj1pZ25vcmUKc3BfYmVmb3JlX3NlbmRfb2NfY29sb249aWdub3JlCnNwX2FmdGVyX29j
X3R5cGU9aWdub3JlCnNwX2FmdGVyX29jX3JldHVybl90eXBlPWlnbm9yZQpzcF9hZnRlcl9vY19h
dF9zZWw9aWdub3JlCnNwX2FmdGVyX29jX2F0X3NlbF9wYXJlbnM9aWdub3JlCnNwX2luc2lkZV9v
Y19hdF9zZWxfcGFyZW5zPWlnbm9yZQpzcF9iZWZvcmVfb2NfYmxvY2tfY2FyZXQ9aWdub3JlCnNw
X2FmdGVyX29jX2Jsb2NrX2NhcmV0PWlnbm9yZQpzcF9jb25kX2NvbG9uPWlnbm9yZQpzcF9jb25k
X3F1ZXN0aW9uPWlnbm9yZQpzcF9jYXNlX2xhYmVsPWlnbm9yZQpzcF9yYW5nZT1pZ25vcmUKc3Bf
Y210X2NwcF9zdGFydD1pZ25vcmUKc3BfZW5kaWZfY210PWlnbm9yZQppbmRlbnRfY29sdW1ucz00
CmNtdF9pbmRlbnRfbXVsdGk9ZmFsc2UKCmluZGVudF9jbGFzc19jb2xvbj1mYWxzZQphbGlnbl92
YXJfZGVmX2NvbG9uPWZhbHNlCmFsaWduX3Zhcl9kZWZfc3Rhcl9zdHlsZT0xCmFsaWduX3Zhcl9k
ZWZfYW1wX3N0eWxlPTEKCnNldCBGT1IgRUlOQV9MSVNUX0ZPUkVBQ0gKc2V0IEZPUiBFSU5BX0xJ
U1RfUkVWRVJTRV9GT1JFQUNICnNldCBGT1IgRUlOQV9MSVNUX0ZPUkVBQ0hfU0FGRQpzZXQgRk9S
IEVJTkFfTElTVF9GUkVFCnNldCBGT1IgRUlOQV9JVEVSQVRPUl9GT1JFQUNICnNldCBGT1IgRUlO
QV9JTkxJU1RfRk9SRUFDSApzZXQgRk9SIEVJTkFfSU5MSVNUX1JFVkVSU0VfRk9SRUFDSApzZXQg
Rk9SIEVJTkFfSU5MSVNUX0ZPUkVBQ0hfU0FGRQpzZXQgRk9SIHVkZXZfbGlzdF9lbnRyeV9mb3Jl
YWNoCnNldCBUWVBFIEVJTkFfTUFHSUMKc2V0IFRZUEUgRUlOQV9JTkxJU1QKc2V0IElHTk9SRUQg
X19VTlVTRURfXwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107766</attachid>
            <date>2011-09-16 21:26:16 -0700</date>
            <delta_ts>2011-09-17 21:15:21 -0700</delta_ts>
            <desc>example of patch generated</desc>
            <filename>ewk.patch</filename>
            <type>text/plain</type>
            <size>332101</size>
            <attacher name="Lucas De Marchi">lucas.de.marchi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2F1dGguY3BwCmluZGV4IDJhNmI0YTcuLmE0Y2I5ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcApAQCAtMzEsNyArMzEsNyBAQCB2b2lkIGV3a19hdXRo
X3Nob3dfZGlhbG9nX2NhbGxiYWNrX3NldChFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBj
YWxsYmFjaykKICNlbmRpZgogfQogCi12b2lkIGV3a19hdXRoX2NyZWRlbnRpYWxzX3NldChjaGFy
ICp1c2VybmFtZSwgY2hhciAqcGFzc3dvcmQsIHZvaWQgKmRhdGEpCit2b2lkIGV3a19hdXRoX2Ny
ZWRlbnRpYWxzX3NldChjaGFyKiB1c2VybmFtZSwgY2hhciogcGFzc3dvcmQsIHZvaWQqIGRhdGEp
CiB7CiAjaWYgVVNFKFNPVVApCiAgICAgZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQodXNl
cm5hbWUsIHBhc3N3b3JkLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfYXV0aF9zb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3Vw
LmNwcAppbmRleCAzOTBlOGJkLi40OTVmNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2F1dGhfc291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoX3NvdXAuY3BwCkBAIC00MCw5ICs0MCw5IEBAIGV4dGVybiAiQyIgewogICovCiAKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfQXV0aF9EYXRhIHsKLSAgICBTb3VwTWVzc2FnZSAqbXNnOwotICAgIFNv
dXBBdXRoICphdXRoOwotICAgIFNvdXBTZXNzaW9uICpzZXNzaW9uOworICAgIFNvdXBNZXNzYWdl
KiBtc2c7CisgICAgU291cEF1dGgqIGF1dGg7CisgICAgU291cFNlc3Npb24qIHNlc3Npb247CiB9
IEV3a19BdXRoX0RhdGE7CiAKIHN0YXRpYyBFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBl
d2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayA9IDA7CkBAIC01NSwxNSArNTUsMTUgQEAgc3Rh
dGljIHZvaWQgZnJlZV9hdXRoX2RhdGEoRXdrX0F1dGhfRGF0YSopOwogR19ERUZJTkVfVFlQRV9X
SVRIX0NPREUoRXdrX1NvdXBfQXV0aF9EaWFsb2csIGV3a19hdXRoX3NvdXBfZGlhbG9nLCBHX1RZ
UEVfT0JKRUNULAogICAgICAgICAgICAgICAgICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNF
KFNPVVBfVFlQRV9TRVNTSU9OX0ZFQVRVUkUsIGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25f
ZmVhdHVyZV9pbml0KSkKIAotc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfY2xhc3Nf
aW5pdChFd2tfU291cF9BdXRoX0RpYWxvZ0NsYXNzICprbGFzcykKK3N0YXRpYyB2b2lkIGV3a19h
dXRoX3NvdXBfZGlhbG9nX2NsYXNzX2luaXQoRXdrX1NvdXBfQXV0aF9EaWFsb2dDbGFzcyoga2xh
c3MpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX2luaXQoRXdrX1Nv
dXBfQXV0aF9EaWFsb2cgKmluc3RhbmNlKQorc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFs
b2dfaW5pdChFd2tfU291cF9BdXRoX0RpYWxvZyogaW5zdGFuY2UpCiB7CiB9CiAKLXN0YXRpYyB2
b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9u
RmVhdHVyZUludGVyZmFjZSAqZmVhdHVyZV9pbnRlcmZhY2UsIGdwb2ludGVyIGludGVyZmFjZV9k
YXRhKQorc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2lu
aXQoU291cFNlc3Npb25GZWF0dXJlSW50ZXJmYWNlKiBmZWF0dXJlX2ludGVyZmFjZSwgZ3BvaW50
ZXIgaW50ZXJmYWNlX2RhdGEpCiB7CiAgICAgZmVhdHVyZV9pbnRlcmZhY2UtPmF0dGFjaCA9IGF0
dGFjaDsKICAgICBmZWF0dXJlX2ludGVyZmFjZS0+ZGV0YWNoID0gZGV0YWNoOwpAQCAtNzQsMzEg
Kzc0LDMxIEBAIHZvaWQgZXdrX2F1dGhfc291cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdr
X0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sgY2FsbGJhCiAgICAgZXdrX2F1dGhfc2hvd19kaWFs
b2dfY2FsbGJhY2sgPSBjYWxsYmFjazsKIH0KIAotdm9pZCBld2tfYXV0aF9zb3VwX2NyZWRlbnRp
YWxzX3NldChjb25zdCBjaGFyICp1c2VybmFtZSwgY29uc3QgY2hhciAqcGFzc3dvcmQsIHZvaWQg
KmRhdGEpCit2b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIqIHVz
ZXJuYW1lLCBjb25zdCBjaGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSkKIHsKICAgICBpZiAoIWRh
dGEpCi0gICAgICAgIHJldHVybjsKKwlyZXR1cm47CiAKLSAgICBFd2tfQXV0aF9EYXRhICphdXRo
X2RhdGEgPSAoRXdrX0F1dGhfRGF0YSAqKWRhdGE7CisgICAgRXdrX0F1dGhfRGF0YSogYXV0aF9k
YXRhID0gKEV3a19BdXRoX0RhdGEqKWRhdGE7CiAgICAgc291cF9hdXRoX2F1dGhlbnRpY2F0ZShh
dXRoX2RhdGEtPmF1dGgsIHVzZXJuYW1lLCBwYXNzd29yZCk7CiAgICAgc291cF9zZXNzaW9uX3Vu
cGF1c2VfbWVzc2FnZShhdXRoX2RhdGEtPnNlc3Npb24sIGF1dGhfZGF0YS0+bXNnKTsKICAgICBm
cmVlX2F1dGhfZGF0YShhdXRoX2RhdGEpOwogfQogCi1zdGF0aWMgdm9pZCBzZXNzaW9uX2F1dGhl
bnRpY2F0ZShTb3VwU2Vzc2lvbiAqc2Vzc2lvbiwgU291cE1lc3NhZ2UgKm1zZywgU291cEF1dGgg
KmF1dGgsIGdib29sZWFuIHJldHJ5aW5nLCBncG9pbnRlciAvKiB1c2VyX2RhdGEgKi8pCitzdGF0
aWMgdm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1l
c3NhZ2UqIG1zZywgU291cEF1dGgqIGF1dGgsIGdib29sZWFuIHJldHJ5aW5nLCBncG9pbnRlciAv
KiB1c2VyX2RhdGEgKi8pCiB7Ci0gICAgU291cFVSSSAqdXJpOwotICAgIEV3a19BdXRoX0RhdGEg
KmF1dGhfZGF0YTsKLSAgICBjb25zdCBjaGFyICpyZWFsbTsKKyAgICBTb3VwVVJJKiB1cmk7Cisg
ICAgRXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhOworICAgIGNvbnN0IGNoYXIqIHJlYWxtOwogCiAg
ICAgaWYgKCFld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwor
CXJldHVybjsKIAotICAgIGF1dGhfZGF0YSA9IChFd2tfQXV0aF9EYXRhICopY2FsbG9jKDEsIHNp
emVvZihFd2tfQXV0aF9EYXRhKSk7CisgICAgYXV0aF9kYXRhID0gKEV3a19BdXRoX0RhdGEqKWNh
bGxvYygxLCBzaXplb2YoRXdrX0F1dGhfRGF0YSkpOwogCiAgICAgaWYgKCFhdXRoX2RhdGEpIHsK
LSAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfQXV0aF9EYXRhIik7Ci0g
ICAgICAgIHJldHVybjsKKwlDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19BdXRoX0Rh
dGEiKTsKKwlyZXR1cm47CiAgICAgfQogCiAgICAgc291cF9zZXNzaW9uX3BhdXNlX21lc3NhZ2Uo
c2Vzc2lvbiwgbXNnKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBzZXNzaW9uX2F1
dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiAqc2Vzc2lvbiwgU291cE1lc3NhZ2UgKm1zZywgU291cEF1
dAogICAgIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrKHJlYWxtLCBzb3VwX3VyaV90b19z
dHJpbmcodXJpLCBUUlVFKSwgYXV0aF9kYXRhKTsKIH0KIAotc3RhdGljIHZvaWQgZnJlZV9hdXRo
X2RhdGEoRXdrX0F1dGhfRGF0YSAqYXV0aF9kYXRhKQorc3RhdGljIHZvaWQgZnJlZV9hdXRoX2Rh
dGEoRXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhKQogewogICAgIGdfb2JqZWN0X3VucmVmKGF1dGhf
ZGF0YS0+bXNnKTsKICAgICBnX29iamVjdF91bnJlZihhdXRoX2RhdGEtPnNlc3Npb24pOwpAQCAt
MTI2LDE0ICsxMjYsMTQgQEAgc3RhdGljIHZvaWQgZnJlZV9hdXRoX2RhdGEoRXdrX0F1dGhfRGF0
YSAqYXV0aF9kYXRhKQogICAgIGZyZWUoYXV0aF9kYXRhKTsKIH0KIAotc3RhdGljIHZvaWQgYXR0
YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSAqbWFuYWdlciwgU291cFNlc3Npb24gKnNlc3Npb24pCitz
dGF0aWMgdm9pZCBhdHRhY2goU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyLCBTb3VwU2Vzc2lv
biogc2Vzc2lvbikKIHsKICAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50aWNh
dGUiLCBHX0NBTExCQUNLKHNlc3Npb25fYXV0aGVudGljYXRlKSwgbWFuYWdlcik7CiB9CiAKLXN0
YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9u
ICpzZXNzaW9uKQorc3RhdGljIHZvaWQgZGV0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdl
ciwgU291cFNlc3Npb24qIHNlc3Npb24pCiB7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29u
bmVjdF9ieV9mdW5jKHNlc3Npb24sICh2b2lkICopc2Vzc2lvbl9hdXRoZW50aWNhdGUsIG1hbmFn
ZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXNzaW9uLCAo
dm9pZCopc2Vzc2lvbl9hdXRoZW50aWNhdGUsIG1hbmFnZXIpOwogfQogCiAjaWZkZWYgX19jcGx1
c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAKaW5kZXggNmZh
ZmZjOC4uMjQ5MDdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250
ZXh0bWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5j
cHAKQEAgLTM4LDExICszOCwxMSBAQAogc3RydWN0IF9Fd2tfQ29udGV4dF9NZW51IHsKICAgICB1
bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgb2JqZWN0
ICovCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2ViQ29yZTo6Q29udGV4dE1lbnVD
b250cm9sbGVyICpjb250cm9sbGVyOyAvKio8IHRoZSBXZWJDb3JlJ3Mgb2JqZWN0IHdoaWNoIGlz
IHJlc3BvbnNpYmxlIGZvciB0aGUgY29udGV4dCBtZW51ICovCisgICAgV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyKiBjb250cm9sbGVyOyAvKio8IHRoZSBXZWJDb3JlJ3Mgb2JqZWN0IHdo
aWNoIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgY29udGV4dCBtZW51ICovCiAjZW5kaWYKLSAgICBF
dmFzX09iamVjdCAqdmlldzsgLyoqPCB0aGUgdmlldyBvYmplY3QgKi8KKyAgICBFdmFzX09iamVj
dCogdmlldzsgLyoqPCB0aGUgdmlldyBvYmplY3QgKi8KIAotICAgIEVpbmFfTGlzdCAqaXRlbXM7
IC8qKjwgdGhlIGxpc3Qgb2YgaXRlbXMgKi8KKyAgICBFaW5hX0xpc3QqIGl0ZW1zOyAvKio8IHRo
ZSBsaXN0IG9mIGl0ZW1zICovCiB9OwogCiAvKioKQEAgLTUzLDU5ICs1Myw1OSBAQCBzdHJ1Y3Qg
X0V3a19Db250ZXh0X01lbnVfSXRlbSB7CiAgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUg
dHlwZTsgLyoqPCBjb250YWlucyB0aGUgdHlwZSBvZiB0aGUgaXRlbSAqLwogICAgIEV3a19Db250
ZXh0X01lbnVfQWN0aW9uIGFjdGlvbjsgLyoqPCBjb250YWlucyB0aGUgYWN0aW9uIG9mIHRoZSBp
dGVtICovCiAKLSAgICBjb25zdCBjaGFyICp0aXRsZTsgLyoqPCBjb250YWlucyB0aGUgdGl0bGUg
b2YgdGhlIGl0ZW0gKi8KLSAgICBFd2tfQ29udGV4dF9NZW51ICpzdWJtZW51OyAvKio8IGNvbnRh
aW5zIHRoZSBwb2ludGVyIHRvIHRoZSBzdWJtZW51IG9mIHRoZSBpdGVtICovCisgICAgY29uc3Qg
Y2hhciogdGl0bGU7IC8qKjwgY29udGFpbnMgdGhlIHRpdGxlIG9mIHRoZSBpdGVtICovCisgICAg
RXdrX0NvbnRleHRfTWVudSogc3VibWVudTsgLyoqPCBjb250YWlucyB0aGUgcG9pbnRlciB0byB0
aGUgc3VibWVudSBvZiB0aGUgaXRlbSAqLwogCi0gICAgRWluYV9Cb29sIGNoZWNrZWQ6MTsKLSAg
ICBFaW5hX0Jvb2wgZW5hYmxlZDoxOworICAgIEVpbmFfQm9vbCBjaGVja2VkIDogMTsKKyAgICBF
aW5hX0Jvb2wgZW5hYmxlZCA6IDE7CiB9OwogCi12b2lkIGV3a19jb250ZXh0X21lbnVfcmVmKEV3
a19Db250ZXh0X01lbnUgKm1lbnUpCit2b2lkIGV3a19jb250ZXh0X21lbnVfcmVmKEV3a19Db250
ZXh0X01lbnUqIG1lbnUpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4obWVudSk7
CiAgICAgbWVudS0+X19yZWYrKzsKIH0KIAotdm9pZCBld2tfY29udGV4dF9tZW51X3VucmVmKEV3
a19Db250ZXh0X01lbnUgKm1lbnUpCit2b2lkIGV3a19jb250ZXh0X21lbnVfdW5yZWYoRXdrX0Nv
bnRleHRfTWVudSogbWVudSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihtZW51
KTsKLSAgICB2b2lkICppdGVtOworICAgIHZvaWQqIGl0ZW07CiAKICAgICBpZiAoLS1tZW51LT5f
X3JlZikKLSAgICAgICAgcmV0dXJuOworCXJldHVybjsKIAogICAgIEVJTkFfTElTVF9GUkVFKG1l
bnUtPml0ZW1zLCBpdGVtKQotICAgICAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShzdGF0
aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihpdGVtKSk7CisJZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2ZyZWUoc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oaXRlbSkpOwog
CiAgICAgZnJlZShtZW51KTsKIH0KIAotRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfZGVzdHJv
eShFd2tfQ29udGV4dF9NZW51ICptZW51KQorRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfZGVz
dHJveShFd2tfQ29udGV4dF9NZW51KiBtZW51KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBFSU5BX0ZBTFNFKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJvbGxlciwgRUlO
QV9GQUxTRSk7CiAgICAgbWVudS0+Y29udHJvbGxlci0+Y2xlYXJDb250ZXh0TWVudSgpOwogICAg
IHJldHVybiBFSU5BX1RSVUU7Ci0jZWxzZSAKKyNlbHNlCiAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CiAjZW5kaWYKIH0KIAotY29uc3QgRWluYV9MaXN0ICpld2tfY29udGV4dF9tZW51X2l0ZW1fbGlz
dF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSAqbykKK2NvbnN0IEVpbmFfTGlzdCogZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2xpc3RfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUqIG8pCiB7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG8sIDApOwogCiAgICAgcmV0dXJuIG8t
Pml0ZW1zOwogfQogCi1Fd2tfQ29udGV4dF9NZW51X0l0ZW0gKmV3a19jb250ZXh0X21lbnVfaXRl
bV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwKLSAgICAgICAgRXdrX0NvbnRl
eHRfTWVudV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51ICpzdWJtZW51LAotICAgICAg
ICBjb25zdCBjaGFyICp0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVk
KQorRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19D
b250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gYWN0aW9uLCBFd2tf
Q29udGV4dF9NZW51KiBzdWJtZW51LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWlu
YV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtID0gKEV3
a19Db250ZXh0X01lbnVfSXRlbSAqKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CisgICAgRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBpdGVtID0gKEV3a19Db250ZXh0X01lbnVfSXRlbSopIG1hbGxvYyhz
aXplb2YoKml0ZW0pKTsKICAgICBpZiAoIWl0ZW0pCi0gICAgICAgIHJldHVybiAwOworCXJldHVy
biAwOwogCiAgICAgaXRlbS0+dHlwZSA9IHR5cGU7CiAgICAgaXRlbS0+YWN0aW9uID0gYWN0aW9u
OwpAQCAtMTE3LDcgKzExNyw3IEBAIEV3a19Db250ZXh0X01lbnVfSXRlbSAqZXdrX2NvbnRleHRf
bWVudV9pdGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlCiAgICAgcmV0dXJu
IGl0ZW07CiB9CiAKLUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19D
b250ZXh0X01lbnUgKm1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSAqaXRlbSkKK0VpbmFfQm9v
bCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUqIG1lbnUsIEV3
a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgRUlOQV9GQUxTRSk7CkBA
IC0xMzQsNyArMTM0LDcgQEAgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3Qo
RXdrX0NvbnRleHRfTWVudSAqbWVudSwgRXdrX0NvbnRleHRfTWVudV8KICNlbmRpZgogfQogCi12
b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlKEV3a19Db250ZXh0X01lbnVfSXRlbSAqaXRl
bSkKK3ZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVt
KiBpdGVtKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOwogCkBAIC0x
NDIsNjUgKzE0Miw2NSBAQCB2b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlKEV3a19Db250
ZXh0X01lbnVfSXRlbSAqaXRlbSkKICAgICBmcmVlKGl0ZW0pOwogfQogCi1Fd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX0Nv
bnRleHRfTWVudV9JdGVtICpvKQorRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogbykKIHsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgRVdLX0FDVElPTl9UWVBFKTsK
ICAgICByZXR1cm4gby0+dHlwZTsKIH0KIAotRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRl
bV90eXBlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEV3a19Db250ZXh0X01lbnVfSXRl
bV9UeXBlIHR5cGUpCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KEV3
a19Db250ZXh0X01lbnVfSXRlbSogbywgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSkK
IHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgRUlOQV9GQUxTRSk7CiAg
ICAgby0+dHlwZSA9IHR5cGU7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRXdrX0NvbnRl
eHRfTWVudV9BY3Rpb24gZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoY29uc3QgRXdr
X0NvbnRleHRfTWVudV9JdGVtICpvKQorRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvKQog
ewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX05PX0FDVElPTik7CiAgICAgcmV0dXJuIG8tPmFjdGlvbjsKIH0KIAotRWluYV9C
b29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0KEV3a19Db250ZXh0X01lbnVfSXRl
bSAqbywgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gYWN0aW9uKQorRWluYV9Cb29sIGV3a19jb250
ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogbywgRXdrX0Nv
bnRleHRfTWVudV9BY3Rpb24gYWN0aW9uKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChvLCBFSU5BX0ZBTFNFKTsKICAgICBvLT5hY3Rpb24gPSBhY3Rpb247CiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciAqZXdrX2NvbnRleHRfbWVudV9pdGVtX3Rp
dGxlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pCitjb25zdCBjaGFyKiBld2tf
Y29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSog
bykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgMCk7CiAgICAgcmV0
dXJuIG8tPnRpdGxlOwogfQogCi1jb25zdCBjaGFyICpld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0
bGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgY29uc3QgY2hhciAqdGl0bGUpCitjb25z
dCBjaGFyKiBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KEV3a19Db250ZXh0X01lbnVf
SXRlbSogbywgY29uc3QgY2hhciogdGl0bGUpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKG8sIDApOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmby0+dGl0bGUs
IHRpdGxlKTsKICAgICByZXR1cm4gby0+dGl0bGU7CiB9CiAKLUVpbmFfQm9vbCBld2tfY29udGV4
dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKQor
RWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0qIG8pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KG8sIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBvLT5jaGVja2VkOwogfQogCi1FaW5hX0Jvb2wg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAq
bywgRWluYV9Cb29sIGNoZWNrZWQpCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2No
ZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogbywgRWluYV9Cb29sIGNoZWNrZWQpCiB7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG8sIEVJTkFfRkFMU0UpOwogICAg
IG8tPmNoZWNrZWQgPSBjaGVja2VkOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRf
TWVudV9JdGVtICpvKQorRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dl
dChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG8pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKG8sIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBvLT5lbmFibGVkOwog
fQogCi1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0KEV3a19Db250
ZXh0X01lbnVfSXRlbSAqbywgRWluYV9Cb29sIGVuYWJsZWQpCitFaW5hX0Jvb2wgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogbywgRWluYV9C
b29sIGVuYWJsZWQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG8sIEVJ
TkFfRkFMU0UpOwogICAgIG8tPmVuYWJsZWQgPSBlbmFibGVkOwpAQCAtMjIyLDcgKzIyMiw3IEBA
IEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRf
TWVudV9JdGVtICpvLCBFaW5hX0Jvb2wKICAqCiAgKiBAbm90ZSBlbWl0cyBhIHNpZ25hbCAiY29u
dGV4dG1lbnUsbmV3IgogICovCi1Fd2tfQ29udGV4dF9NZW51ICpld2tfY29udGV4dF9tZW51X25l
dyhFdmFzX09iamVjdCAqdmlldywgV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyICpjb250
cm9sbGVyKQorRXdrX0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoRXZhc19PYmpl
Y3QqIHZpZXcsIFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxlcikKIHsK
ICAgICBFd2tfQ29udGV4dF9NZW51KiBtZW51OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTCh2aWV3LCAwKTsKQEAgLTIzMCw4ICsyMzAsOCBAQCBFd2tfQ29udGV4dF9NZW51ICpl
d2tfY29udGV4dF9tZW51X25ldyhFdmFzX09iamVjdCAqdmlldywgV2ViQ29yZTo6Q29udGV4dE1l
bnVDbwogCiAgICAgbWVudSA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnUqPihtYWxsb2Mo
c2l6ZW9mKCptZW51KSkpOwogICAgIGlmICghbWVudSkgewotICAgICAgICBDUklUSUNBTCgiQ291
bGQgbm90IGFsbG9jYXRlIGNvbnRleHQgbWVudSBtZW1vcnkuIik7Ci0gICAgICAgIHJldHVybiAw
OworCUNSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUgY29udGV4dCBtZW51IG1lbW9yeS4iKTsK
KwlyZXR1cm4gMDsKICAgICB9CiAKICAgICBtZW51LT5fX3JlZiA9IDE7CkBAIC0yNTYsNyArMjU2
LDcgQEAgRXdrX0NvbnRleHRfTWVudSAqZXdrX2NvbnRleHRfbWVudV9uZXcoRXZhc19PYmplY3Qg
KnZpZXcsIFdlYkNvcmU6OkNvbnRleHRNZW51Q28KICAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV91
bnJlZgogICogQHNlZSBld2tfY29udGV4dF9tZW51X2Rlc3Ryb3kKICAqLwotRWluYV9Cb29sIGV3
a19jb250ZXh0X21lbnVfZnJlZShFd2tfQ29udGV4dF9NZW51ICpvKQorRWluYV9Cb29sIGV3a19j
b250ZXh0X21lbnVfZnJlZShFd2tfQ29udGV4dF9NZW51KiBvKQogewogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChvLCBFSU5BX0ZBTFNFKTsKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG8tPnZpZXcsICJjb250ZXh0bWVudSxmcmVlIiwgbyk7CkBAIC0yNzUs
MTQgKzI3NSwxNCBAQCBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9mcmVlKEV3a19Db250ZXh0
X01lbnUgKm8pCiAgKgogICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3CiAgKi8KLXZv
aWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZChFd2tfQ29udGV4dF9NZW51ICpvLCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW0gJmNvcmUpCit2b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9h
cHBlbmQoRXdrX0NvbnRleHRfTWVudSogbywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtICZjb3Jl
KQogewogICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxF
d2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZT4oY29yZS50eXBlKCkpOwogICAgIEV3a19Db250ZXh0
X01lbnVfQWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfQWN0aW9u
Pihjb3JlLmFjdGlvbigpKTsKIAotICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSAqbWVudV9pdGVt
ID0gZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldwotICAgICAgICAodHlwZSwgYWN0aW9uLCAwLCBj
b3JlLnRpdGxlKCkudXRmOCgpLmRhdGEoKSwgY29yZS5jaGVja2VkKCksCi0gICAgICAgICBjb3Jl
LmVuYWJsZWQoKSk7CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBtZW51X2l0ZW0gPSBld2tf
Y29udGV4dF9tZW51X2l0ZW1fbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHR5cGUsIGFjdGlvbiwgMCwgY29yZS50aXRsZSgpLnV0ZjgoKS5kYXRhKCksIGNv
cmUuY2hlY2tlZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvcmUuZW5hYmxlZCgpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihtZW51X2l0
ZW0pOwogCiAgICAgby0+aXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKG8tPml0ZW1zLCBtZW51X2l0
ZW0pOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVu
ZChFd2tfQ29udGV4dF9NZW51ICpvLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0KICAqCiAgKiBA
c2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9saXN0X2dldAogICovCi1Fd2tfQ29udGV4dF9NZW51
ICpld2tfY29udGV4dF9tZW51X2N1c3RvbV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSAqbykK
K0V3a19Db250ZXh0X01lbnUqIGV3a19jb250ZXh0X21lbnVfY3VzdG9tX2dldChjb25zdCBFd2tf
Q29udGV4dF9NZW51KiBvKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChv
LCAwKTsKIApAQCAtMzE2LDcgKzMxNiw3IEBAIEV3a19Db250ZXh0X01lbnUgKmV3a19jb250ZXh0
X21lbnVfY3VzdG9tX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51ICpvKQogICoKICAqIEBwYXJh
bSBvIHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0CiAgKi8KLXZvaWQgZXdrX2NvbnRleHRfbWVudV9z
aG93KGNvbnN0IEV3a19Db250ZXh0X01lbnUgKm8pCit2b2lkIGV3a19jb250ZXh0X21lbnVfc2hv
dyhjb25zdCBFd2tfQ29udGV4dF9NZW51KiBvKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKG8pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tp
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcAppbmRleCA3OWQ1
NTNkLi5lMTg1YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5jcHAKQEAgLTM2
LDI0ICszNiwyNCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogCi1FaW5hX0Jv
b2wgZXdrX2Nvb2tpZXNfZmlsZV9zZXQoY29uc3QgY2hhciAqZmlsZW5hbWUpCitFaW5hX0Jvb2wg
ZXdrX2Nvb2tpZXNfZmlsZV9zZXQoY29uc3QgY2hhciogZmlsZW5hbWUpCiB7CiAjaWYgVVNFKFNP
VVApCi0gICAgU291cENvb2tpZUphciAqY29va2llSmFyID0gMDsKKyAgICBTb3VwQ29va2llSmFy
KiBjb29raWVKYXIgPSAwOwogICAgIGlmIChmaWxlbmFtZSkKLSAgICAgICAgY29va2llSmFyID0g
c291cF9jb29raWVfamFyX3RleHRfbmV3KGZpbGVuYW1lLCBGQUxTRSk7CisJY29va2llSmFyID0g
c291cF9jb29raWVfamFyX3RleHRfbmV3KGZpbGVuYW1lLCBGQUxTRSk7CiAgICAgZWxzZQotICAg
ICAgICBjb29raWVKYXIgPSBzb3VwX2Nvb2tpZV9qYXJfbmV3KCk7CisJY29va2llSmFyID0gc291
cF9jb29raWVfamFyX25ldygpOwogCiAgICAgaWYgKCFjb29raWVKYXIpCi0gICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOworCXJldHVybiBFSU5BX0ZBTFNFOwogCiAgICAgc291cF9jb29raWVfamFy
X3NldF9hY2NlcHRfcG9saWN5KGNvb2tpZUphciwgU09VUF9DT09LSUVfSkFSX0FDQ0VQVF9OT19U
SElSRF9QQVJUWSk7CiAKLSAgICBTb3VwU2Vzc2lvbiAqc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIFNvdXBTZXNzaW9uRmVhdHVyZSAqb2xk
amFyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DT09LSUVf
SkFSKTsKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogb2xkamFyID0gc291
cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DT09LSUVfSkFSKTsKICAg
ICBpZiAob2xkamFyKQotICAgICAgICBzb3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1cmUoc2Vzc2lv
biwgb2xkamFyKTsKKwlzb3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1cmUoc2Vzc2lvbiwgb2xkamFy
KTsKIAogICAgIFdlYkNvcmU6OnNldERlZmF1bHRDb29raWVKYXIoY29va2llSmFyKTsKICAgICBz
b3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoY29v
a2llSmFyKSk7CkBAIC02NywzOCArNjcsMzggQEAgRWluYV9Cb29sIGV3a19jb29raWVzX2ZpbGVf
c2V0KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogdm9pZCBld2tfY29va2llc19jbGVhcih2b2lkKQog
ewogI2lmIFVTRShTT1VQKQotICAgIEdTTGlzdCAqbDsKLSAgICBHU0xpc3QgKnA7Ci0gICAgU291
cENvb2tpZUphciAqY29va2llSmFyID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tpZUphcigpOworICAg
IEdTTGlzdCogbDsKKyAgICBHU0xpc3QqIHA7CisgICAgU291cENvb2tpZUphciogY29va2llSmFy
ID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tpZUphcigpOwogCiAgICAgbCA9IHNvdXBfY29va2llX2ph
cl9hbGxfY29va2llcyhjb29raWVKYXIpOwogICAgIGZvciAocCA9IGw7IHA7IHAgPSBwLT5uZXh0
KQotICAgICAgICBzb3VwX2Nvb2tpZV9qYXJfZGVsZXRlX2Nvb2tpZShjb29raWVKYXIsIChTb3Vw
Q29va2llICopcC0+ZGF0YSk7CisJc291cF9jb29raWVfamFyX2RlbGV0ZV9jb29raWUoY29va2ll
SmFyLCAoU291cENvb2tpZSopcC0+ZGF0YSk7CiAKICAgICBzb3VwX2Nvb2tpZXNfZnJlZShsKTsK
ICNlbmRpZgogfQogCi1FaW5hX0xpc3QgKmV3a19jb29raWVzX2dldF9hbGwodm9pZCkKK0VpbmFf
TGlzdCogZXdrX2Nvb2tpZXNfZ2V0X2FsbCh2b2lkKQogewotICAgIEVpbmFfTGlzdCAqZWwgPSAw
OworICAgIEVpbmFfTGlzdCogZWwgPSAwOwogI2lmIFVTRShTT1VQKQotICAgIEdTTGlzdCAqbDsK
LSAgICBHU0xpc3QgKnA7Ci0gICAgU291cENvb2tpZUphciAqY29va2llSmFyID0gV2ViQ29yZTo6
ZGVmYXVsdENvb2tpZUphcigpOworICAgIEdTTGlzdCogbDsKKyAgICBHU0xpc3QqIHA7CisgICAg
U291cENvb2tpZUphciogY29va2llSmFyID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tpZUphcigpOwog
CiAgICAgbCA9IHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpOwogICAgIGZv
ciAocCA9IGw7IHA7IHAgPSBwLT5uZXh0KSB7Ci0gICAgICAgIFNvdXBDb29raWUgKmNvb2tpZSA9
IHN0YXRpY19jYXN0PFNvdXBDb29raWUqPihwLT5kYXRhKTsKLSAgICAgICAgRXdrX0Nvb2tpZSAq
YyA9IHN0YXRpY19jYXN0PEV3a19Db29raWUqPihtYWxsb2Moc2l6ZW9mKCpjKSkpOwotICAgICAg
ICBjLT5uYW1lID0gc3RyZHVwKGNvb2tpZS0+bmFtZSk7Ci0gICAgICAgIGMtPnZhbHVlID0gc3Ry
ZHVwKGNvb2tpZS0+dmFsdWUpOwotICAgICAgICBjLT5kb21haW4gPSBzdHJkdXAoY29va2llLT5k
b21haW4pOwotICAgICAgICBjLT5wYXRoID0gc3RyZHVwKGNvb2tpZS0+cGF0aCk7Ci0gICAgICAg
IGMtPmV4cGlyZXMgPSBzb3VwX2RhdGVfdG9fdGltZV90KGNvb2tpZS0+ZXhwaXJlcyk7Ci0gICAg
ICAgIGMtPnNlY3VyZSA9IHN0YXRpY19jYXN0PEVpbmFfQm9vbD4oY29va2llLT5zZWN1cmUpOwot
ICAgICAgICBjLT5odHRwX29ubHkgPSBzdGF0aWNfY2FzdDxFaW5hX0Jvb2w+KGNvb2tpZS0+aHR0
cF9vbmx5KTsKLSAgICAgICAgZWwgPSBlaW5hX2xpc3RfYXBwZW5kKGVsLCBjKTsKKwlTb3VwQ29v
a2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4ocC0+ZGF0YSk7CisJRXdrX0Nv
b2tpZSogYyA9IHN0YXRpY19jYXN0PEV3a19Db29raWUqPihtYWxsb2Moc2l6ZW9mKCpjKSkpOwor
CWMtPm5hbWUgPSBzdHJkdXAoY29va2llLT5uYW1lKTsKKwljLT52YWx1ZSA9IHN0cmR1cChjb29r
aWUtPnZhbHVlKTsKKwljLT5kb21haW4gPSBzdHJkdXAoY29va2llLT5kb21haW4pOworCWMtPnBh
dGggPSBzdHJkdXAoY29va2llLT5wYXRoKTsKKwljLT5leHBpcmVzID0gc291cF9kYXRlX3RvX3Rp
bWVfdChjb29raWUtPmV4cGlyZXMpOworCWMtPnNlY3VyZSA9IHN0YXRpY19jYXN0PEVpbmFfQm9v
bD4oY29va2llLT5zZWN1cmUpOworCWMtPmh0dHBfb25seSA9IHN0YXRpY19jYXN0PEVpbmFfQm9v
bD4oY29va2llLT5odHRwX29ubHkpOworCWVsID0gZWluYV9saXN0X2FwcGVuZChlbCwgYyk7CiAg
ICAgfQogCiAgICAgc291cF9jb29raWVzX2ZyZWUobCk7CkBAIC0xMDYsMjMgKzEwNiwyMyBAQCBF
aW5hX0xpc3QgKmV3a19jb29raWVzX2dldF9hbGwodm9pZCkKICAgICByZXR1cm4gZWw7CiB9CiAK
LXZvaWQgZXdrX2Nvb2tpZXNfY29va2llX2RlbChFd2tfQ29va2llICpjb29raWUpCit2b2lkIGV3
a19jb29raWVzX2Nvb2tpZV9kZWwoRXdrX0Nvb2tpZSogY29va2llKQogewogI2lmIFVTRShTT1VQ
KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvb2tpZSk7CiAgICAgR1NMaXN0KiBs
OwogICAgIEdTTGlzdCogcDsKLSAgICBTb3VwQ29va2llSmFyICpjb29raWVKYXIgPSBXZWJDb3Jl
OjpkZWZhdWx0Q29va2llSmFyKCk7Ci0gICAgU291cENvb2tpZSAqYzEgPSBzb3VwX2Nvb2tpZV9u
ZXcoCisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tp
ZUphcigpOworICAgIFNvdXBDb29raWUqIGMxID0gc291cF9jb29raWVfbmV3KAogICAgICAgICBj
b29raWUtPm5hbWUsIGNvb2tpZS0+dmFsdWUsIGNvb2tpZS0+ZG9tYWluLCBjb29raWUtPnBhdGgs
IC0xKTsKIAogICAgIGwgPSBzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKTsK
ICAgICBmb3IgKHAgPSBsOyBwOyBwID0gcC0+bmV4dCkgewotICAgICAgICBTb3VwQ29va2llICpj
MiA9IHN0YXRpY19jYXN0PFNvdXBDb29raWUqPihwLT5kYXRhKTsKLSAgICAgICAgaWYgKHNvdXBf
Y29va2llX2VxdWFsKGMxLCBjMikpIHsKLSAgICAgICAgICAgIHNvdXBfY29va2llX2phcl9kZWxl
dGVfY29va2llKGNvb2tpZUphciwgYzIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
KwlTb3VwQ29va2llKiBjMiA9IHN0YXRpY19jYXN0PFNvdXBDb29raWUqPihwLT5kYXRhKTsKKwlp
ZiAoc291cF9jb29raWVfZXF1YWwoYzEsIGMyKSkgeworCSAgICBzb3VwX2Nvb2tpZV9qYXJfZGVs
ZXRlX2Nvb2tpZShjb29raWVKYXIsIGMyKTsKKwkgICAgYnJlYWs7CisJfQogICAgIH0KIAogICAg
IHNvdXBfY29va2llX2ZyZWUoYzEpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgZXdrX2Nvb2tp
ZXNfY29va2llX2RlbChFd2tfQ29va2llICpjb29raWUpCiAjZW5kaWYKIH0KIAotdm9pZCBld2tf
Y29va2llc19jb29raWVfZnJlZShFd2tfQ29va2llICpjb29raWUpCit2b2lkIGV3a19jb29raWVz
X2Nvb2tpZV9mcmVlKEV3a19Db29raWUqIGNvb2tpZSkKIHsKICNpZiBVU0UoU09VUCkKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb29raWUpOwpAQCAtMTQ1LDIwICsxNDUsMjAgQEAg
dm9pZCBld2tfY29va2llc19jb29raWVfZnJlZShFd2tfQ29va2llICpjb29raWUpCiB2b2lkIGV3
a19jb29raWVzX3BvbGljeV9zZXQoRXdrX0Nvb2tpZV9Qb2xpY3kgcCkKIHsKICNpZiBVU0UoU09V
UCkKLSAgICBTb3VwQ29va2llSmFyICpjb29raWVKYXIgPSBXZWJDb3JlOjpkZWZhdWx0Q29va2ll
SmFyKCk7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gV2ViQ29yZTo6ZGVmYXVsdENv
b2tpZUphcigpOwogICAgIFNvdXBDb29raWVKYXJBY2NlcHRQb2xpY3kgcG9saWN5OwogCiAgICAg
cG9saWN5ID0gU09VUF9DT09LSUVfSkFSX0FDQ0VQVF9BTFdBWVM7CiAgICAgc3dpdGNoIChwKSB7
CiAgICAgY2FzZSBFV0tfQ09PS0lFX0pBUl9BQ0NFUFRfTkVWRVI6Ci0gICAgICAgIHBvbGljeSA9
IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTkVWRVI7Ci0gICAgICAgIGJyZWFrOworCXBvbGljeSA9
IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTkVWRVI7CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfQ09P
S0lFX0pBUl9BQ0NFUFRfQUxXQVlTOgotICAgICAgICBwb2xpY3kgPSBTT1VQX0NPT0tJRV9KQVJf
QUNDRVBUX0FMV0FZUzsKLSAgICAgICAgYnJlYWs7CisJcG9saWN5ID0gU09VUF9DT09LSUVfSkFS
X0FDQ0VQVF9BTFdBWVM7CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfQ09PS0lFX0pBUl9BQ0NFUFRf
Tk9fVEhJUkRfUEFSVFk6Ci0gICAgICAgIHBvbGljeSA9IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRf
Tk9fVEhJUkRfUEFSVFk7Ci0gICAgICAgIGJyZWFrOworCXBvbGljeSA9IFNPVVBfQ09PS0lFX0pB
Ul9BQ0NFUFRfTk9fVEhJUkRfUEFSVFk7CisJYnJlYWs7CiAgICAgfQogCiAgICAgc291cF9jb29r
aWVfamFyX3NldF9hY2NlcHRfcG9saWN5KGNvb2tpZUphciwgcG9saWN5KTsKQEAgLTE2OSwyMCAr
MTY5LDIwIEBAIEV3a19Db29raWVfUG9saWN5IGV3a19jb29raWVzX3BvbGljeV9nZXQodm9pZCkK
IHsKICAgICBFd2tfQ29va2llX1BvbGljeSBld2tfcG9saWN5ID0gRVdLX0NPT0tJRV9KQVJfQUND
RVBUX0FMV0FZUzsKICNpZiBVU0UoU09VUCkKLSAgICBTb3VwQ29va2llSmFyICpjb29raWVKYXIg
PSBXZWJDb3JlOjpkZWZhdWx0Q29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogY29va2ll
SmFyID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tpZUphcigpOwogICAgIFNvdXBDb29raWVKYXJBY2Nl
cHRQb2xpY3kgcG9saWN5OwogCiAgICAgcG9saWN5ID0gc291cF9jb29raWVfamFyX2dldF9hY2Nl
cHRfcG9saWN5KGNvb2tpZUphcik7CiAgICAgc3dpdGNoIChwb2xpY3kpIHsKICAgICBjYXNlIFNP
VVBfQ09PS0lFX0pBUl9BQ0NFUFRfTkVWRVI6Ci0gICAgICAgIGV3a19wb2xpY3kgPSBFV0tfQ09P
S0lFX0pBUl9BQ0NFUFRfTkVWRVI7Ci0gICAgICAgIGJyZWFrOworCWV3a19wb2xpY3kgPSBFV0tf
Q09PS0lFX0pBUl9BQ0NFUFRfTkVWRVI7CisJYnJlYWs7CiAgICAgY2FzZSBTT1VQX0NPT0tJRV9K
QVJfQUNDRVBUX0FMV0FZUzoKLSAgICAgICAgZXdrX3BvbGljeSA9IEVXS19DT09LSUVfSkFSX0FD
Q0VQVF9BTFdBWVM7Ci0gICAgICAgIGJyZWFrOworCWV3a19wb2xpY3kgPSBFV0tfQ09PS0lFX0pB
Ul9BQ0NFUFRfQUxXQVlTOworCWJyZWFrOwogICAgIGNhc2UgU09VUF9DT09LSUVfSkFSX0FDQ0VQ
VF9OT19USElSRF9QQVJUWToKLSAgICAgICAgZXdrX3BvbGljeSA9IEVXS19DT09LSUVfSkFSX0FD
Q0VQVF9OT19USElSRF9QQVJUWTsKLSAgICAgICAgYnJlYWs7CisJZXdrX3BvbGljeSA9IEVXS19D
T09LSUVfSkFSX0FDQ0VQVF9OT19USElSRF9QQVJUWTsKKwlicmVhazsKICAgICB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBkYTQzNDQwLi5lZTczZWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNjMsMjUgKzYzLDI1IEBAIHN0YXRp
YyBjb25zdCBjaGFyIEVXS19GUkFNRV9UWVBFX1NUUltdID0gIkVXS19GcmFtZSI7CiAKIHN0cnVj
dCBFd2tfRnJhbWVfU21hcnRfRGF0YSB7CiAgICAgRXZhc19PYmplY3RfU21hcnRfQ2xpcHBlZF9E
YXRhIGJhc2U7Ci0gICAgRXZhc19PYmplY3QgKnNlbGY7Ci0gICAgRXZhc19PYmplY3QgKnZpZXc7
CisgICAgRXZhc19PYmplY3QqIHNlbGY7CisgICAgRXZhc19PYmplY3QqIHZpZXc7CiAjaWZkZWYg
RVdLX0ZSQU1FX0RFQlVHCi0gICAgRXZhc19PYmplY3QgKnJlZ2lvbjsKKyAgICBFdmFzX09iamVj
dCogcmVnaW9uOwogI2VuZGlmCi0gICAgV2ViQ29yZTo6RnJhbWUgKmZyYW1lOwotICAgIGNvbnN0
IGNoYXIgKnRpdGxlOwotICAgIGNvbnN0IGNoYXIgKnVyaTsKLSAgICBjb25zdCBjaGFyICpuYW1l
OworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZTsKKyAgICBjb25zdCBjaGFyKiB0aXRsZTsKKyAg
ICBjb25zdCBjaGFyKiB1cmk7CisgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBzdHJ1Y3Qgewot
ICAgICAgICBFdmFzX0Nvb3JkIHcsIGg7CisJRXZhc19Db29yZCB3LCBoOwogICAgIH0gY29udGVu
dHNfc2l6ZTsKLSAgICBFaW5hX0Jvb2wgdGV4dFpvb206MTsKLSAgICBFaW5hX0Jvb2wgZWRpdGFi
bGU6MTsKKyAgICBFaW5hX0Jvb2wgdGV4dFpvb20gOiAxOworICAgIEVpbmFfQm9vbCBlZGl0YWJs
ZSA6IDE7CiB9OwogCiBzdHJ1Y3QgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUgewogICAgIEVpbmFf
SXRlcmF0b3IgYmFzZTsKLSAgICBFdmFzX09iamVjdCAqb2JqOworICAgIEV2YXNfT2JqZWN0KiBv
Ymo7CiAgICAgdW5zaWduZWQgY3VycmVudEluZGV4OwogfTsKIApAQCAtOTAsMzQgKzkwLDM0IEBA
IHN0cnVjdCBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSB7CiAjZWxzZQogI2RlZmluZSBFV0tfRlJB
TUVfVFlQRV9DSEVDSyhvLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjb25zdCBjaGFyICpfdG1wX290eXBlID0gZXZh
c19vYmplY3RfdHlwZV9nZXQobyk7ICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoRUlOQV9V
TkxJS0VMWShfdG1wX290eXBlICE9IEVXS19GUkFNRV9UWVBFX1NUUikpIHsgICAgICAgICAgXAot
ICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3Qgb2YgYW4g
ZXdrX2ZyYW1lISIsIG8sICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICBfdG1w
X290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWNvbnN0IGNoYXIqIF90bXBfb3R5cGUg
PSBldmFzX29iamVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICBcCisJaWYgKEVJTkFfVU5M
SUtFTFkoX3RtcF9vdHlwZSAhPSBFV0tfRlJBTUVfVFlQRV9TVFIpKSB7ICAgICAgICAgIFwKKwkg
ICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorCSAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBvZiBhbiBld2tfZnJhbWUhIiwgbywg
ICAgICAgICAgICAgICAgICBcCisJICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIo
bnVsbCkiKTsgICAgICAgICAgICAgICAgICAgXAorCSAgICByZXR1cm4gX19WQV9BUkdTX187ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9
IHdoaWxlICgwKQogI2VuZGlmCiAKICNkZWZpbmUgRVdLX0ZSQU1FX1NEX0dFVChvLCBwdHIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEg
KnB0ciA9IChFd2tfRnJhbWVfU21hcnRfRGF0YSAqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0
KG8pCisgICAgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfRnJhbWVfU21hcnRfRGF0
YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKIAogI2RlZmluZSBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICBcCiAgICAgRVdLX0ZSQU1FX1RZUEVf
Q0hFQ0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwKICAgICBFV0tfRlJBTUVfU0Rf
R0VUKG8sIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmICghcHRyKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENSSVRJ
Q0FMKCJubyBzbWFydCBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsICAgIFwKLSAgICAgICAgICAg
ICAgICAgbywgZXZhc19vYmplY3RfdHlwZV9nZXQobykpOyAgICAgICAgICAgXAotICAgICAgICBy
ZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJQ1JJVElD
QUwoIm5vIHNtYXJ0IGRhdGEgZm9yIG9iamVjdCAlcCAoJXMpIiwgICAgXAorCSAgICAgICAgIG8s
IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pKTsgICAgICAgICAgIFwKKwlyZXR1cm4gX19WQV9BUkdT
X187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQogCiBzdGF0aWMgRXZhc19T
bWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKICNp
ZmRlZiBFV0tfRlJBTUVfREVCVUcKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX2ZyYW1lX2RlYnVn
KEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIGlubGluZSB2b2lkIF9ld2tfZnJhbWVfZGVidWcoRXZh
c19PYmplY3QqIG8pCiB7Ci0gICAgRXZhc19PYmplY3QgKmNsaXAsICpwYXJlbnQ7CisgICAgRXZh
c19PYmplY3QqIGNsaXAsICogcGFyZW50OwogICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaCwgY3gs
IGN5LCBjdywgY2g7CiAgICAgaW50IHIsIGcsIGIsIGEsIGNyLCBjZywgY2IsIGNhOwogCkBAIC0x
MzQsMjggKzEzNCwyOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a19mcmFtZV9kZWJ1ZyhFdmFz
X09iamVjdCAqbykKICAgICAgICAgICAgIGNsaXAsIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0KGNs
aXApLCBjciwgY2csIGNiLCBjYSwgY3gsIGN5LCBjdywgY2gpOwogICAgIHBhcmVudCA9IGV2YXNf
b2JqZWN0X3NtYXJ0X3BhcmVudF9nZXQobyk7CiAgICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIGZw
cmludGYoc3RkZXJyLCAiXG4iKTsKKwlmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiAgICAgZWxzZQot
ICAgICAgICBfZXdrX2ZyYW1lX2RlYnVnKHBhcmVudCk7CisJX2V3a19mcmFtZV9kZWJ1ZyhwYXJl
bnQpOwogfQogI2VuZGlmCiAKLXN0YXRpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAq
X2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChXZWJDb3JlOjpGcmFtZSAqZnJhbWUpCitzdGF0aWMg
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQo
V2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0ICpraXQoV2ViQ29yZTo6RnJhbWUgKmZyYW1lKQor
c3RhdGljIGlubGluZSBFdmFzX09iamVjdCoga2l0KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKIHsK
ICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICBXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEVmbCAqZmwgPSBfZXdrX2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KGZyYW1lKTsKKwly
ZXR1cm4gMDsKKyAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogZmwgPSBfZXdrX2Zy
YW1lX2xvYWRlcl9lZmxfZ2V0KGZyYW1lKTsKICAgICBpZiAoIWZsKQotICAgICAgICByZXR1cm4g
MDsKKwlyZXR1cm4gMDsKICAgICByZXR1cm4gZmwtPndlYkZyYW1lKCk7CiB9CiAKLXN0YXRpYyBF
aW5hX0Jvb2wgX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXh0KEVpbmFfSXRlcmF0b3Jf
RXdrX0ZyYW1lICppdCwgRXZhc19PYmplY3QgKipkYXRhKQorc3RhdGljIEVpbmFfQm9vbCBfZXdr
X2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25leHQoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqIGl0
LCBFdmFzX09iamVjdCoqIGRhdGEpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4o
aXQtPm9iaiwgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtMTY0LDI5ICsxNjQsMjkgQEAgc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25leHQoRWluYV9JdGVyYXRv
cl9Fd2tfRnJhbWUgKml0LAogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0cmVl
LCBFSU5BX0ZBTFNFKTsKIAogICAgIGlmIChpdC0+Y3VycmVudEluZGV4IDwgdHJlZS0+Y2hpbGRD
b3VudCgpKSB7Ci0gICAgICAgICpkYXRhID0ga2l0KHRyZWUtPmNoaWxkKGl0LT5jdXJyZW50SW5k
ZXgrKykpOwotICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworCSpkYXRhID0ga2l0KHRyZWUtPmNo
aWxkKGl0LT5jdXJyZW50SW5kZXgrKykpOworCXJldHVybiBFSU5BX1RSVUU7CiAgICAgfQogCiAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CiB9CiAKLXN0YXRpYyBFdmFzX09iamVjdCAqX2V3a19mcmFt
ZV9jaGlsZHJlbl9pdGVyYXRvcl9nZXRfY29udGFpbmVyKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1l
ICppdCkKK3N0YXRpYyBFdmFzX09iamVjdCogX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9n
ZXRfY29udGFpbmVyKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKiBpdCkKIHsKICAgICByZXR1cm4g
aXQtPm9iajsKIH0KIAotc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9hZGQoRXZhc19PYmpl
Y3QgKm8pCitzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykK
IHsKICAgICBFV0tfRlJBTUVfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2QpIHsKLSAgICAg
ICAgc2QgPSAoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX0ZyYW1l
X1NtYXJ0X0RhdGEpKTsKLSAgICAgICAgaWYgKCFzZCkgewotICAgICAgICAgICAgQ1JJVElDQUwo
ImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfRnJhbWVfU21hcnRfRGF0YSIpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8s
IHNkKTsKKwlzZCA9IChFd2tfRnJhbWVfU21hcnRfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tf
RnJhbWVfU21hcnRfRGF0YSkpOworCWlmICghc2QpIHsKKwkgICAgQ1JJVElDQUwoImNvdWxkIG5v
dCBhbGxvY2F0ZSBFd2tfRnJhbWVfU21hcnRfRGF0YSIpOworCSAgICByZXR1cm47CisJfQorCWV2
YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8sIHNkKTsKICAgICB9CiAKICAgICBzZC0+c2VsZiA9
IG87CkBAIC0yMDEsNjAgKzIwMSw2MCBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2Fk
ZChFdmFzX09iamVjdCAqbykKICAgICBzdGF0aWMgaW50IGkgPSAwOwogICAgIHN3aXRjaCAoaSkg
ewogICAgIGNhc2UgMDoKLSAgICAgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0KHNkLT5yZWdpb24s
IDEyOCwgMCwgMCwgMTI4KTsKLSAgICAgICAgYnJlYWs7CisJZXZhc19vYmplY3RfY29sb3Jfc2V0
KHNkLT5yZWdpb24sIDEyOCwgMCwgMCwgMTI4KTsKKwlicmVhazsKICAgICBjYXNlIDE6Ci0gICAg
ICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChzZC0+cmVnaW9uLCAwLCAxMjgsIDAsIDEyOCk7Ci0g
ICAgICAgIGJyZWFrOworCWV2YXNfb2JqZWN0X2NvbG9yX3NldChzZC0+cmVnaW9uLCAwLCAxMjgs
IDAsIDEyOCk7CisJYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBldmFzX29iamVjdF9jb2xv
cl9zZXQoc2QtPnJlZ2lvbiwgMCwgMCwgMTI4LCAxMjgpOwotICAgICAgICBicmVhazsKKwlldmFz
X29iamVjdF9jb2xvcl9zZXQoc2QtPnJlZ2lvbiwgMCwgMCwgMTI4LCAxMjgpOworCWJyZWFrOwog
ICAgIGNhc2UgMzoKLSAgICAgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0KHNkLT5yZWdpb24sIDEy
OCwgMCwgMCwgMTI4KTsKLSAgICAgICAgYnJlYWs7CisJZXZhc19vYmplY3RfY29sb3Jfc2V0KHNk
LT5yZWdpb24sIDEyOCwgMCwgMCwgMTI4KTsKKwlicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAg
IGV2YXNfb2JqZWN0X2NvbG9yX3NldChzZC0+cmVnaW9uLCAxMjgsIDEyOCwgMCwgMTI4KTsKLSAg
ICAgICAgYnJlYWs7CisJZXZhc19vYmplY3RfY29sb3Jfc2V0KHNkLT5yZWdpb24sIDEyOCwgMTI4
LCAwLCAxMjgpOworCWJyZWFrOwogICAgIGNhc2UgNToKLSAgICAgICAgZXZhc19vYmplY3RfY29s
b3Jfc2V0KHNkLT5yZWdpb24sIDEyOCwgMCwgMTI4LCAxMjgpOwotICAgICAgICBicmVhazsKKwll
dmFzX29iamVjdF9jb2xvcl9zZXQoc2QtPnJlZ2lvbiwgMTI4LCAwLCAxMjgsIDEyOCk7CisJYnJl
YWs7CiAgICAgY2FzZSA2OgotICAgICAgICBldmFzX29iamVjdF9jb2xvcl9zZXQoc2QtPnJlZ2lv
biwgMCwgMTI4LCAxMjgsIDEyOCk7Ci0gICAgICAgIGJyZWFrOworCWV2YXNfb2JqZWN0X2NvbG9y
X3NldChzZC0+cmVnaW9uLCAwLCAxMjgsIDEyOCwgMTI4KTsKKwlicmVhazsKICAgICBkZWZhdWx0
OgotICAgICAgICBicmVhazsKKwlicmVhazsKICAgICB9CiAgICAgaSsrOwogICAgIGlmIChpID4g
NikKLSAgICAgICAgaSA9IDA7CisJaSA9IDA7CiAKICAgICBldmFzX29iamVjdF9zbWFydF9tZW1i
ZXJfYWRkKHNkLT5yZWdpb24sIG8pOwogICAgIGV2YXNfb2JqZWN0X2hpZGUoc2QtPnJlZ2lvbik7
CiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9kZWwoRXZhc19PYmpl
Y3QgKm8pCitzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykK
IHsKICAgICBXUk4oIm89JXAiLCBvKTsgLy8gWFhYIFJFTU9WRSBNRSBMQVRFUgogICAgIEVXS19G
UkFNRV9TRF9HRVQobywgc2QpOwogCiAgICAgaWYgKHNkKSB7Ci0gICAgICAgIGlmIChzZC0+ZnJh
bWUpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsICpmbGMgPSBf
ZXdrX2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KHNkLT5mcmFtZSk7Ci0gICAgICAgICAgICBmbGMtPnNl
dFdlYkZyYW1lKDApOwotICAgICAgICAgICAgc2QtPmZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5k
Q2xlYXIoKTsKLSAgICAgICAgICAgIHNkLT5mcmFtZSA9IDA7Ci0gICAgICAgIH0KLQotICAgICAg
ICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzZC0+dGl0bGUpOwotICAgICAgICBlaW5hX3N0cmluZ3No
YXJlX2RlbChzZC0+dXJpKTsKLSAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoc2QtPm5hbWUp
OworCWlmIChzZC0+ZnJhbWUpIHsKKwkgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwq
IGZsYyA9IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoc2QtPmZyYW1lKTsKKwkgICAgZmxjLT5z
ZXRXZWJGcmFtZSgwKTsKKwkgICAgc2QtPmZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIo
KTsKKwkgICAgc2QtPmZyYW1lID0gMDsKKwl9CisKKwllaW5hX3N0cmluZ3NoYXJlX2RlbChzZC0+
dGl0bGUpOworCWVpbmFfc3RyaW5nc2hhcmVfZGVsKHNkLT51cmkpOworCWVpbmFfc3RyaW5nc2hh
cmVfZGVsKHNkLT5uYW1lKTsKICAgICB9CiAKICAgICBfcGFyZW50X3NjLmRlbChvKTsKIH0KIAot
c3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNf
Q29vcmQgdywgRXZhc19Db29yZCBoKQorc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9yZXNp
emUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAgIEVX
S19GUkFNRV9TRF9HRVQobywgc2QpOwogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzZC0+YmFzZS5j
bGlwcGVyLCB3LCBoKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1l
X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgp
CiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9zZXQoRXZhc19TbWFy
dF9DbGFzcyAqYXBpKQorc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9zZXQoRXZhc19TbWFy
dF9DbGFzcyogYXBpKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0
KGFwaSk7CiAgICAgYXBpLT5hZGQgPSBfZXdrX2ZyYW1lX3NtYXJ0X2FkZDsKQEAgLTI3NywzMyAr
Mjc3LDMzIEBAIHN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfc2V0KEV2YXNfU21hcnRfQ2xh
c3MgKmFwaSkKICAgICBhcGktPnJlc2l6ZSA9IF9ld2tfZnJhbWVfc21hcnRfcmVzaXplOwogfQog
Ci1zdGF0aWMgaW5saW5lIEV2YXNfU21hcnQgKl9ld2tfZnJhbWVfc21hcnRfY2xhc3NfbmV3KHZv
aWQpCitzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9ld2tfZnJhbWVfc21hcnRfY2xhc3NfbmV3
KHZvaWQpCiB7CiAgICAgc3RhdGljIEV2YXNfU21hcnRfQ2xhc3Mgc2MgPSBFVkFTX1NNQVJUX0NM
QVNTX0lOSVRfTkFNRV9WRVJTSU9OKEVXS19GUkFNRV9UWVBFX1NUUik7Ci0gICAgc3RhdGljIEV2
YXNfU21hcnQgKnNtYXJ0ID0gMDsKKyAgICBzdGF0aWMgRXZhc19TbWFydCogc21hcnQgPSAwOwog
CiAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0KSkgewotICAgICAgICBldmFzX29iamVjdF9z
bWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7Ci0gICAgICAgIF9ld2tfZnJhbWVf
c21hcnRfc2V0KCZzYyk7Ci0gICAgICAgIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJnNj
KTsKKwlldmFzX29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CisJ
X2V3a19mcmFtZV9zbWFydF9zZXQoJnNjKTsKKwlzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3
KCZzYyk7CiAgICAgfQogCiAgICAgcmV0dXJuIHNtYXJ0OwogfQogCi1FdmFzX09iamVjdCAqZXdr
X2ZyYW1lX3ZpZXdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRXZhc19PYmplY3QqIGV3a19m
cmFtZV92aWV3X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIHNkLT52aWV3OwogfQogCi1FaW5h
X0l0ZXJhdG9yICpld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KEV2YXNfT2JqZWN0ICpv
KQorRWluYV9JdGVyYXRvciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhFdmFzX09i
amVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7Ci0g
ICAgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUgKml0ID0gKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1l
ICopCi0gICAgICAgIGNhbGxvYygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUpKTsK
KyAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQgPSAoRWluYV9JdGVyYXRvcl9Fd2tfRnJh
bWUqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxvYygxLCBzaXplb2Yo
RWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUpKTsKICAgICBpZiAoIWl0KQotICAgICAgICByZXR1cm4g
MDsKKwlyZXR1cm4gMDsKIAogICAgIEVJTkFfTUFHSUNfU0VUKCZpdC0+YmFzZSwgRUlOQV9NQUdJ
Q19JVEVSQVRPUik7CiAgICAgaXQtPmJhc2UubmV4dCA9IEZVTkNfSVRFUkFUT1JfTkVYVChfZXdr
X2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25leHQpOwpAQCAtMzE0LDcgKzMxNCw3IEBAIEVpbmFf
SXRlcmF0b3IgKmV3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcoRXZhc19PYmplY3QgKm8p
CiAgICAgcmV0dXJuICZpdC0+YmFzZTsKIH0KIAotRXZhc19PYmplY3QgKmV3a19mcmFtZV9jaGls
ZF9maW5kKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpuYW1lKQorRXZhc19PYmplY3QqIGV3
a19mcmFtZV9jaGlsZF9maW5kKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBuYW1lKQogewog
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwobmFtZSwgMCk7CkBAIC0zMjMsMTEzICszMjMsMTEzIEBAIEV2
YXNfT2JqZWN0ICpld2tfZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hh
ciAqbmFtZSkKICAgICByZXR1cm4ga2l0KHNkLT5mcmFtZS0+dHJlZSgpLT5maW5kKFdURjo6QXRv
bWljU3RyaW5nKHMpKSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfdXJpX3NldChFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqdXJpKQorRWluYV9Cb29sIGV3a19mcmFtZV91cmlfc2V0KEV2
YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJD
b3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxKGt1cmwpOwotICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyICpsb2Fk
ZXIgPSBzZC0+ZnJhbWUtPmxvYWRlcigpOworICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyKiBsb2Fk
ZXIgPSBzZC0+ZnJhbWUtPmxvYWRlcigpOwogICAgIGxvYWRlci0+bG9hZChyZXEsIGZhbHNlKTsK
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyICpld2tfZnJhbWVfdXJpX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a19mcmFtZV91cmlfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCAwKTsKICAgICByZXR1cm4gc2QtPnVyaTsKIH0KIAotY29uc3QgY2hhciAqZXdrX2ZyYW1l
X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a19mcmFtZV90
aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIDApOwogICAgIHJldHVybiBzZC0+dGl0bGU7CiB9CiAKLWNvbnN0IGNo
YXIgKmV3a19mcmFtZV9uYW1lX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIq
IGV3a19mcmFtZV9uYW1lX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAKICAgICBpZiAoIXNkLT5mcmFtZSkgewot
ICAgICAgICBFUlIoImNvdWxkIG5vdCBnZXQgbmFtZSBvZiB1bmluaXRpYWxpemVkIGZyYW1lLiIp
OwotICAgICAgICByZXR1cm4gMDsKKwlFUlIoImNvdWxkIG5vdCBnZXQgbmFtZSBvZiB1bmluaXRp
YWxpemVkIGZyYW1lLiIpOworCXJldHVybiAwOwogICAgIH0KIAogICAgIGNvbnN0IFdURjo6U3Ry
aW5nIGZyYW1lTmFtZSA9IHNkLT5mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCk7CiAKICAgICBp
ZiAoKHNkLT5uYW1lKSAmJiAoc2QtPm5hbWUgPT0gZnJhbWVOYW1lKSkKLSAgICAgICAgcmV0dXJu
IHNkLT5uYW1lOworCXJldHVybiBzZC0+bmFtZTsKIAogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVw
bGFjZV9sZW5ndGgoJihzZC0+bmFtZSksIGZyYW1lTmFtZS51dGY4KCkuZGF0YSgpLCBmcmFtZU5h
bWUubGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIHNkLT5uYW1lOwogfQogCi1FaW5hX0Jvb2wgZXdr
X2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3Jk
ICp3LCBFdmFzX0Nvb3JkICpoKQorRWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19zaXplX2dl
dChjb25zdCBFdmFzX09iamVjdCogbywgRXZhc19Db29yZCogdywgRXZhc19Db29yZCogaCkKIHsK
ICAgICBpZiAodykKLSAgICAgICAgKncgPSAwOworCSp3ID0gMDsKICAgICBpZiAoaCkKLSAgICAg
ICAgKmggPSAwOworCSpoID0gMDsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgaWYgKHcpCi0gICAgICAgICp3ID0gc2QtPmNvbnRlbnRzX3Np
emUudzsKKwkqdyA9IHNkLT5jb250ZW50c19zaXplLnc7CiAgICAgaWYgKGgpCi0gICAgICAgICpo
ID0gc2QtPmNvbnRlbnRzX3NpemUuaDsKKwkqaCA9IHNkLT5jb250ZW50c19zaXplLmg7CiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NvbnRl
bnRzX3NldF9pbnRlcm5hbChFd2tfRnJhbWVfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIgKmNv
bnRlbnRzLCBzaXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hhciAqbWltZV90eXBlLCBjb25z
dCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqYmFzZV91cmksIGNvbnN0IGNoYXIgKnVucmVh
Y2hhYmxlX3VyaSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50
ZXJuYWwoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBjaGFyKiBjb250ZW50cywgc2l6
ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0IGNoYXIqIG1pbWVfdHlwZSwgY29uc3QgY2hhciogZW5j
b2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VfdXJpLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZV91cmkp
CiB7CiAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihjb250ZW50cyk7CiAgICAgaWYgKGNvbnRlbnRz
X3NpemUgPCAxIHx8IGNvbnRlbnRzX3NpemUgPiBsZW4pCi0gICAgICAgIGNvbnRlbnRzX3NpemUg
PSBsZW47CisJY29udGVudHNfc2l6ZSA9IGxlbjsKICAgICBpZiAoIW1pbWVfdHlwZSkKLSAgICAg
ICAgbWltZV90eXBlID0gInRleHQvaHRtbCI7CisJbWltZV90eXBlID0gInRleHQvaHRtbCI7CiAg
ICAgaWYgKCFlbmNvZGluZykKLSAgICAgICAgZW5jb2RpbmcgPSAiVVRGLTgiOworCWVuY29kaW5n
ID0gIlVURi04IjsKICAgICBpZiAoIWJhc2VfdXJpKQotICAgICAgICBiYXNlX3VyaSA9ICJhYm91
dDpibGFuayI7CisJYmFzZV91cmkgPSAiYWJvdXQ6YmxhbmsiOwogCiAgICAgV2ViQ29yZTo6S1VS
TCBiYXNlS1VSTChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOChiYXNlX3Vy
aSkpOwogICAgIFdlYkNvcmU6OktVUkwgdW5yZWFjaGFibGVLVVJMOwogICAgIGlmICh1bnJlYWNo
YWJsZV91cmkpCi0gICAgICAgIHVucmVhY2hhYmxlS1VSTCA9IFdlYkNvcmU6OktVUkwoV2ViQ29y
ZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVfdXJpKSk7CisJdW5y
ZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5n
Ojpmcm9tVVRGOCh1bnJlYWNoYWJsZV91cmkpKTsKICAgICBlbHNlCi0gICAgICAgIHVucmVhY2hh
YmxlS1VSTCA9IFdlYkNvcmU6OktVUkwoKTsKKwl1bnJlYWNoYWJsZUtVUkwgPSBXZWJDb3JlOjpL
VVJMKCk7CiAKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLCBjb250ZW50c19zaXplKTsK
ICAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YQogICAgICAgICAoYnVm
ZmVyLnJlbGVhc2UoKSwKLSAgICAgICAgIFdURjo6U3RyaW5nOjpmcm9tVVRGOChtaW1lX3R5cGUp
LAotICAgICAgICAgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGVuY29kaW5nKSwKLSAgICAgICAgIGJh
c2VLVVJMLCB1bnJlYWNoYWJsZUtVUkwpOworICAgICAgICBXVEY6OlN0cmluZzo6ZnJvbVVURjgo
bWltZV90eXBlKSwKKyAgICAgICAgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGVuY29kaW5nKSwKKyAg
ICAgICAgYmFzZUtVUkwsIHVucmVhY2hhYmxlS1VSTCk7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoYmFzZUtVUkwpOwogCiAgICAgc2QtPmZyYW1lLT5sb2FkZXIoKS0+bG9h
ZChyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICpjb250ZW50cywgc2l6ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0IGNoYXIgKm1p
bWVfdHlwZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmJhc2VfdXJpKQorRWlu
YV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIq
IGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hhciogbWltZV90eXBlLCBj
b25zdCBjaGFyKiBlbmNvZGluZywgY29uc3QgY2hhciogYmFzZV91cmkpCiB7CiAgICAgRVdLX0ZS
QU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZ
X09OX0ZBTFNFX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29udGVudHMsIEVJTkFfRkFMU0UpOwogICAgIHJldHVy
biBfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbAotICAgICAgICAoc2QsIGNvbnRlbnRz
LCBjb250ZW50c19zaXplLCBtaW1lX3R5cGUsIGVuY29kaW5nLCBiYXNlX3VyaSwgMCk7CisgICAg
ICAgICAgICAgICAoc2QsIGNvbnRlbnRzLCBjb250ZW50c19zaXplLCBtaW1lX3R5cGUsIGVuY29k
aW5nLCBiYXNlX3VyaSwgMCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfYWx0
ZXJuYXRlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqY29udGVudHMsIHNpemVfdCBj
b250ZW50c19zaXplLCBjb25zdCBjaGFyICptaW1lX3R5cGUsIGNvbnN0IGNoYXIgKmVuY29kaW5n
LCBjb25zdCBjaGFyICpiYXNlX3VyaSwgY29uc3QgY2hhciAqdW5yZWFjaGFibGVfdXJpKQorRWlu
YV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19hbHRlcm5hdGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBj
b25zdCBjaGFyKiBjb250ZW50cywgc2l6ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0IGNoYXIqIG1p
bWVfdHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VfdXJpLCBjb25z
dCBjaGFyKiB1bnJlYWNoYWJsZV91cmkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX0ZBTFNFX1JFVFVSTl9W
QUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoY29udGVudHMsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTCh1bnJlYWNoYWJsZV91cmksIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBfZXdrX2Zy
YW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbAotICAgICAgICAoc2QsIGNvbnRlbnRzLCBjb250ZW50
c19zaXplLCBtaW1lX3R5cGUsIGVuY29kaW5nLCBiYXNlX3VyaSwKLSAgICAgICAgIHVucmVhY2hh
YmxlX3VyaSk7CisgICAgICAgICAgICAgICAoc2QsIGNvbnRlbnRzLCBjb250ZW50c19zaXplLCBt
aW1lX3R5cGUsIGVuY29kaW5nLCBiYXNlX3VyaSwKKyAgICAgICAgICAgICAgIHVucmVhY2hhYmxl
X3VyaSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnNjcmlwdCkKK0VpbmFfQm9vbCBld2tfZnJhbWVfc2NyaXB0X2V4
ZWN1dGUoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHNjcmlwdCkKIHsKICAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlf
T05fRkFMU0VfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNDM4LDM2ICs0
MzgsMzYgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZShFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqc2NyaXB0KQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfZnJhbWVfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9C
b29sIGV3a19mcmFtZV9lZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwogICAgIHJl
dHVybiBzZC0+ZWRpdGFibGU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZWRpdGFibGVfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZWRpdGFibGUpCitFaW5hX0Jvb2wgZXdrX2ZyYW1l
X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVkaXRhYmxlKQogewogICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKICAgICBl
ZGl0YWJsZSA9ICEhZWRpdGFibGU7CiAgICAgaWYgKHNkLT5lZGl0YWJsZSA9PSBlZGl0YWJsZSkK
LSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKwlyZXR1cm4gRUlOQV9UUlVFOwogICAgIGlmIChl
ZGl0YWJsZSkKLSAgICAgICAgc2QtPmZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVU
b0JvZHlFbGVtZW50KCk7CisJc2QtPmZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVU
b0JvZHlFbGVtZW50KCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY2hhciAqZXdrX2Zy
YW1lX3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjaGFyKiBld2tfZnJhbWVf
c2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5mcmFtZSwgMCk7CiAgICAgV1RGOjpDU3RyaW5nIHMgPSBzZC0+ZnJhbWUtPmVkaXRv
cigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7CiAgICAgaWYgKHMuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiAwOworCXJldHVybiAwOwogICAgIHJldHVybiBzdHJkdXAocy5kYXRhKCkpOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGZv
cndhcmQsIEVpbmFfQm9vbCB3cmFwKQorRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X3NlYXJjaChj
b25zdCBFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9z
ZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKIHsKICAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC00NzYsNyAr
NDc2LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVj
dCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5hX0IKICAgICByZXR1cm4gc2QtPmZyYW1lLT5l
ZGl0b3IoKS0+ZmluZFN0cmluZyhXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgZm9yd2Fy
ZCwgY2FzZV9zZW5zaXRpdmUsIHdyYXAsIHRydWUpOwogfQogCi11bnNpZ25lZCBpbnQgZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcs
IEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQg
aW50IGxpbWl0KQordW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhFdmFz
X09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUs
IEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKIHsKICAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC00ODYsNyArNDg2LDcgQEAgdW5z
aWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVjdCAqbywgY29u
c3QgY2hhciAqc3RyaW5nLCBFaW4KICAgICByZXR1cm4gc2QtPmZyYW1lLT5lZGl0b3IoKS0+Y291
bnRNYXRjaGVzRm9yVGV4dChXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgY2FzZV9zZW5z
aXRpdmUsIGxpbWl0LCB0cnVlKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNo
ZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9t
YXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNDk1LDcgKzQ5NSw3IEBAIEVp
bmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QgKm8p
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21h
dGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhpZ2hsaWdodCkK
K0VpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmpl
Y3QqIG8sIEVpbmFfQm9vbCBoaWdobGlnaHQpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNTAzLDcgKzUwMyw3IEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBoaWdobGlnCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3
a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCAqbykK
K0VpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwpAQCAtNTI2LDcgKzUyNiw3IEBAIHN0YXRpYyBib29sIF9ld2tfZnJhbWVf
cmVjdF9pc19uZWdhdGl2ZV92YWx1ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0ICZpKQogICAgIHJl
dHVybiAoaS54KCkgPCAwIHx8IGkueSgpIDwgMCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVf
dGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBzaXplX3Qgbiwg
aW50ICp4LCBpbnQgKnkpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhfcG9z
X2dldChjb25zdCBFdmFzX09iamVjdCogbywgc2l6ZV90IG4sIGludCogeCwgaW50KiB5KQogewog
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAg
LTUzNywxOCArNTM3LDE4IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9w
b3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBzaXplX3QgbiwgaW50CiAgICAgc3RkOjpyZW1v
dmVfaWYoaW50UmVjdHMuYmVnaW4oKSwgaW50UmVjdHMuZW5kKCksIF9ld2tfZnJhbWVfcmVjdF9p
c19uZWdhdGl2ZV92YWx1ZSk7CiAKICAgICBpZiAoaW50UmVjdHMuaXNFbXB0eSgpIHx8IG4gPiBp
bnRSZWN0cy5zaXplKCkpCi0gICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlyZXR1cm4gRUlOQV9G
QUxTRTsKIAogICAgIHN0ZDo6c29ydChpbnRSZWN0cy5iZWdpbigpLCBpbnRSZWN0cy5lbmQoKSwg
X2V3a19mcmFtZV9yZWN0X2NtcF9sZXNzX3RoYW4pOwogCiAgICAgaWYgKHgpCi0gICAgICAqeCA9
IGludFJlY3RzW24gLSAxXS54KCk7CisJKnggPSBpbnRSZWN0c1tuIC0gMV0ueCgpOwogICAgIGlm
ICh5KQotICAgICAgKnkgPSBpbnRSZWN0c1tuIC0gMV0ueSgpOworCSp5ID0gaW50UmVjdHNbbiAt
IDFdLnkoKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1l
X3N0b3AoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3N0b3AoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFf
RkFMU0UpOwpAQCAtNTU2LDcgKzU1Niw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfc3RvcChFdmFz
X09iamVjdCAqbykKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2Zy
YW1lX3JlbG9hZChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfcmVsb2FkKEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LCBFSU5BX0ZBTFNFKTsKQEAgLTU2NCw3ICs1NjQsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Jl
bG9hZChFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jv
b2wgZXdrX2ZyYW1lX3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19m
cmFtZV9yZWxvYWRfZnVsbChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC01NzIsMzggKzU3MiwzOCBAQCBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVy
biBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfYmFjayhFdmFzX09iamVjdCAq
bykKK0VpbmFfQm9vbCBld2tfZnJhbWVfYmFjayhFdmFzX09iamVjdCogbykKIHsKICAgICByZXR1
cm4gZXdrX2ZyYW1lX25hdmlnYXRlKG8sIC0xKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9m
b3J3YXJkKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV9mb3J3YXJkKEV2YXNf
T2JqZWN0KiBvKQogewogICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGUobywgMSk7CiB9CiAK
LUVpbmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcykK
K0VpbmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykK
IHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7
Ci0gICAgV2ViQ29yZTo6UGFnZSAqcGFnZSA9IHNkLT5mcmFtZS0+cGFnZSgpOworICAgIFdlYkNv
cmU6OlBhZ2UqIHBhZ2UgPSBzZC0+ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UtPmNhbkdv
QmFja09yRm9yd2FyZChzdGVwcykpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCXJldHVy
biBFSU5BX0ZBTFNFOwogICAgIHBhZ2UtPmdvQmFja09yRm9yd2FyZChzdGVwcyk7CiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9iYWNrX3Bvc3NpYmxlKEV2
YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV9iYWNrX3Bvc3NpYmxlKEV2YXNfT2Jq
ZWN0KiBvKQogewogICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUobywgLTEp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3Qg
Km8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShvLCAxKTsKIH0KIAot
RWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50
IHN0ZXBzKQorRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVj
dCogbywgaW50IHN0ZXBzKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZy
YW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTYxMSw1MCArNjExLDUwIEBAIEVpbmFfQm9vbCBld2tfZnJh
bWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcykKICAgICByZXR1
cm4gcGFnZS0+Y2FuR29CYWNrT3JGb3J3YXJkKHN0ZXBzKTsKIH0KIAotZmxvYXQgZXdrX2ZyYW1l
X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorZmxvYXQgZXdrX2ZyYW1lX3pvb21fZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCAtMS4wKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZy
YW1lLCAtMS4wKTsKIAogICAgIGlmIChzZC0+dGV4dFpvb20pCi0gICAgICAgIHJldHVybiBzZC0+
ZnJhbWUtPnRleHRab29tRmFjdG9yKCk7CisJcmV0dXJuIHNkLT5mcmFtZS0+dGV4dFpvb21GYWN0
b3IoKTsKICAgICByZXR1cm4gc2QtPmZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwogfQogCi1FaW5h
X0Jvb2wgZXdrX2ZyYW1lX3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKQorRWlu
YV9Cb29sIGV3a19mcmFtZV96b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CiAg
ICAgaWYgKHNkLT50ZXh0Wm9vbSkKLSAgICAgICAgc2QtPmZyYW1lLT5zZXRUZXh0Wm9vbUZhY3Rv
cih6b29tKTsKKwlzZC0+ZnJhbWUtPnNldFRleHRab29tRmFjdG9yKHpvb20pOwogICAgIGVsc2UK
LSAgICAgICAgc2QtPmZyYW1lLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tKTsKKwlzZC0+ZnJhbWUt
PnNldFBhZ2Vab29tRmFjdG9yKHpvb20pOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVp
bmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQorRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIHJldHVybiBzZC0+dGV4dFpvb207CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVf
em9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc2V0dGluZykKK0Vp
bmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgc2V0dGluZykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFt
ZSwgRUlOQV9GQUxTRSk7CiAgICAgaWYgKHNkLT50ZXh0Wm9vbSA9PSBzZXR0aW5nKQotICAgICAg
ICByZXR1cm4gRUlOQV9UUlVFOworCXJldHVybiBFSU5BX1RSVUU7CiAKICAgICBmbG9hdCB6b29t
X2xldmVsID0gc2QtPnRleHRab29tID8gc2QtPmZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpIDogc2Qt
PmZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwogICAgIHNkLT50ZXh0Wm9vbSA9IHNldHRpbmc7CiAg
ICAgaWYgKHNkLT50ZXh0Wm9vbSkKLSAgICAgICAgc2QtPmZyYW1lLT5zZXRQYWdlQW5kVGV4dFpv
b21GYWN0b3JzKDEsIHpvb21fbGV2ZWwpOworCXNkLT5mcmFtZS0+c2V0UGFnZUFuZFRleHRab29t
RmFjdG9ycygxLCB6b29tX2xldmVsKTsKICAgICBlbHNlCi0gICAgICAgIHNkLT5mcmFtZS0+c2V0
UGFnZUFuZFRleHRab29tRmFjdG9ycyh6b29tX2xldmVsLCAxKTsKKwlzZC0+ZnJhbWUtPnNldFBh
Z2VBbmRUZXh0Wm9vbUZhY3RvcnMoem9vbV9sZXZlbCwgMSk7CiAgICAgcmV0dXJuIEVJTkFfVFJV
RTsKIH0KIAotdm9pZCBld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QgKmhpdF90
ZXN0KQordm9pZCBld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QqIGhpdF90ZXN0
KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGhpdF90ZXN0KTsKICAgICBlaW5h
X3N0cmluZ3NoYXJlX2RlbChoaXRfdGVzdC0+dGl0bGUpOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIHZv
aWQgZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUoRXdrX0hpdF9UZXN0ICpoaXRfdGVzdCkKICAgICBm
cmVlKGhpdF90ZXN0KTsKIH0KIAotRXdrX0hpdF9UZXN0ICpld2tfZnJhbWVfaGl0X3Rlc3RfbmV3
KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgeCwgaW50IHkpCitFd2tfSGl0X1Rlc3QqIGV3a19m
cmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgMCk7CkBAIC02NzcsMTggKzY3NywxOCBA
QCBFd2tfSGl0X1Rlc3QgKmV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3Qg
Km8sIGludCB4LCBpbnQgeSkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Qt
PmZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSwgMCk7CiAKICAgICBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IHNkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50Ci0gICAgICAgICh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKFdlYkNvcmU6OkludFBvaW50KHgs
IHkpKSwKLSAgICAgICAgIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xp
cHBpbmcqLyB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
dmlldy0+d2luZG93VG9Db250ZW50cyhXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBm
YWxzZSwgLyppZ25vcmVDbGlwcGluZyovIHRydWUpOwogCiAgICAgaWYgKHJlc3VsdC5zY3JvbGxi
YXIoKSkKLSAgICAgICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiAgICAgaWYgKCFyZXN1bHQuaW5u
ZXJOb2RlKCkpCi0gICAgICAgIHJldHVybiAwOworCXJldHVybiAwOwogCi0gICAgRXdrX0hpdF9U
ZXN0ICpoaXRfdGVzdCA9IChFd2tfSGl0X1Rlc3QgKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXRf
VGVzdCkpOworICAgIEV3a19IaXRfVGVzdCogaGl0X3Rlc3QgPSAoRXdrX0hpdF9UZXN0KiljYWxs
b2MoMSwgc2l6ZW9mKEV3a19IaXRfVGVzdCkpOwogICAgIGlmICghaGl0X3Rlc3QpIHsKLSAgICAg
ICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGhpdCB0ZXN0LiIpOwot
ICAgICAgICByZXR1cm4gMDsKKwlDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBm
b3IgaGl0IHRlc3QuIik7CisJcmV0dXJuIDA7CiAgICAgfQogCiAgICAgaGl0X3Rlc3QtPnggPSBy
ZXN1bHQucG9pbnQoKS54KCk7CkBAIC03MTEsNyArNzExLDcgQEAgRXdrX0hpdF9UZXN0ICpld2tf
ZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgeCwgaW50IHkpCiAg
ICAgaGl0X3Rlc3QtPmFsdGVybmF0ZV90ZXh0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocmVzdWx0
LmFsdERpc3BsYXlTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAocmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpICYmIHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQo
KQogICAgICAgICAmJiByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZy
YW1lKCkpCi0gICAgICAgIGhpdF90ZXN0LT5mcmFtZSA9IGtpdChyZXN1bHQuaW5uZXJOb25TaGFy
ZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpOworCWhpdF90ZXN0LT5mcmFtZSA9IGtpdChy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpOwogCiAgICAg
aGl0X3Rlc3QtPmxpbmsudGV4dCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHJlc3VsdC50ZXh0Q29u
dGVudCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGhpdF90ZXN0LT5saW5rLnVybCA9IGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKQEAgLTcyNCwxNSArNzI0LDE1IEBAIEV3a19IaXRfVGVzdCAqZXdrX2ZyYW1lX2hpdF90
ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCAqbywgaW50IHgsIGludCB5KQogICAgIGludCBjb250
ZXh0ID0gRVdLX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0RPQ1VNRU5UOwogCiAgICAgaWYgKCFy
ZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuaXNFbXB0eSgpKQotICAgICAgICBjb250ZXh0IHw9IEVX
S19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9MSU5LOworCWNvbnRleHQgfD0gRVdLX0hJVF9URVNU
X1JFU1VMVF9DT05URVhUX0xJTks7CiAgICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgp
LmlzRW1wdHkoKSkKLSAgICAgICAgY29udGV4dCB8PSBFV0tfSElUX1RFU1RfUkVTVUxUX0NPTlRF
WFRfSU1BR0U7CisJY29udGV4dCB8PSBFV0tfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfSU1BR0U7
CiAgICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
Y29udGV4dCB8PSBFV0tfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTUVESUE7CisJY29udGV4dCB8
PSBFV0tfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTUVESUE7CiAgICAgaWYgKHJlc3VsdC5pc1Nl
bGVjdGVkKCkpCi0gICAgICAgIGNvbnRleHQgfD0gRVdLX0hJVF9URVNUX1JFU1VMVF9DT05URVhU
X1NFTEVDVElPTjsKKwljb250ZXh0IHw9IEVXS19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9TRUxF
Q1RJT047CiAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKQotICAgICAgICBjb250
ZXh0IHw9IEVXS19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9FRElUQUJMRTsKKwljb250ZXh0IHw9
IEVXS19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9FRElUQUJMRTsKIAogICAgIGhpdF90ZXN0LT5j
b250ZXh0ID0gc3RhdGljX2Nhc3Q8RXdrX0hpdF9UZXN0X1Jlc3VsdF9Db250ZXh0Pihjb250ZXh0
KTsKIApAQCAtNzQwLDcgKzc0MCw3IEBAIEV3a19IaXRfVGVzdCAqZXdrX2ZyYW1lX2hpdF90ZXN0
X25ldyhjb25zdCBFdmFzX09iamVjdCAqbywgaW50IHgsIGludCB5KQogfQogCiBFaW5hX0Jvb2wK
LWV3a19mcmFtZV9zY3JvbGxfYWRkKEV2YXNfT2JqZWN0ICpvLCBpbnQgZHgsIGludCBkeSkKK2V3
a19mcmFtZV9zY3JvbGxfYWRkKEV2YXNfT2JqZWN0KiBvLCBpbnQgZHgsIGludCBkeSkKIHsKICAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC03
NTAsNyArNzUwLDcgQEAgZXdrX2ZyYW1lX3Njcm9sbF9hZGQoRXZhc19PYmplY3QgKm8sIGludCBk
eCwgaW50IGR5KQogfQogCiBFaW5hX0Jvb2wKLWV3a19mcmFtZV9zY3JvbGxfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBpbnQgeCwgaW50IHkpCitld2tfZnJhbWVfc2Nyb2xsX3NldChFdmFzX09iamVjdCog
bywgaW50IHgsIGludCB5KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZy
YW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTc2MCw2NyArNzYwLDY3IEBAIGV3a19mcmFtZV9zY3JvbGxf
c2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgeCwgaW50IHkpCiB9CiAKIEVpbmFfQm9vbAotZXdrX2Zy
YW1lX3Njcm9sbF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICp3LCBpbnQgKmgp
Citld2tfZnJhbWVfc2Nyb2xsX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHcs
IGludCogaCkKIHsKICAgICBpZiAodykKLSAgICAgICAgKncgPSAwOworCSp3ID0gMDsKICAgICBp
ZiAoaCkKLSAgICAgICAgKmggPSAwOworCSpoID0gMDsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNkLT5mcmFtZS0+dmlldygpLCBFSU5BX0ZBTFNFKTsKICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCA9IHNkLT5mcmFtZS0+dmlldygpLT5tYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KTsKICAgICBpZiAodykKLSAgICAgICAgKncgPSBwb2ludC54KCk7CisJKncgPSBwb2ludC54KCk7
CiAgICAgaWYgKGgpCi0gICAgICAgICpoID0gcG9pbnQueSgpOworCSpoID0gcG9pbnQueSgpOwog
ICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKIEVpbmFfQm9vbAotZXdrX2ZyYW1lX3Njcm9sbF9w
b3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKngsIGludCAqeSkKK2V3a19mcmFtZV9z
Y3JvbGxfcG9zX2dldChjb25zdCBFdmFzX09iamVjdCogbywgaW50KiB4LCBpbnQqIHkpCiB7CiAg
ICAgaWYgKHgpCi0gICAgICAgICp4ID0gMDsKKwkqeCA9IDA7CiAgICAgaWYgKHkpCi0gICAgICAg
ICp5ID0gMDsKKwkqeSA9IDA7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJh
bWUsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+
ZnJhbWUtPnZpZXcoKSwgRUlOQV9GQUxTRSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9zID0g
c2QtPmZyYW1lLT52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgaWYgKHgpCi0gICAgICAg
ICp4ID0gcG9zLngoKTsKKwkqeCA9IHBvcy54KCk7CiAgICAgaWYgKHkpCi0gICAgICAgICp5ID0g
cG9zLnkoKTsKKwkqeSA9IHBvcy55KCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWlu
YV9Cb29sIGV3a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgaW5jbHVkZV9zY3JvbGxiYXJzLCBpbnQgKngsIGludCAqeSwg
aW50ICp3LCBpbnQgKmgpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2libGVfY29udGVudF9nZW9t
ZXRyeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBpbmNsdWRlX3Njcm9sbGJh
cnMsIGludCogeCwgaW50KiB5LCBpbnQqIHcsIGludCogaCkKIHsKICAgICBpZiAoeCkKLSAgICAg
ICAgKnggPSAwOworCSp4ID0gMDsKICAgICBpZiAoeSkKLSAgICAgICAgKnkgPSAwOworCSp5ID0g
MDsKICAgICBpZiAodykKLSAgICAgICAgKncgPSAwOworCSp3ID0gMDsKICAgICBpZiAoaCkKLSAg
ICAgICAgKmggPSAwOworCSpoID0gMDsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNk
LT5mcmFtZSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5mcmFtZS0+dmlldygpLCBFSU5BX0ZBTFNFKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QgPSBzZC0+ZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KGluY2x1ZGVfc2Nyb2xs
YmFycyk7CiAgICAgaWYgKHgpCi0gICAgICAgICp4ID0gcmVjdC54KCk7CisJKnggPSByZWN0Lngo
KTsKICAgICBpZiAoeSkKLSAgICAgICAgKnkgPSByZWN0LnkoKTsKKwkqeSA9IHJlY3QueSgpOwog
ICAgIGlmICh3KQotICAgICAgICAqdyA9IHJlY3Qud2lkdGgoKTsKKwkqdyA9IHJlY3Qud2lkdGgo
KTsKICAgICBpZiAoaCkKLSAgICAgICAgKmggPSByZWN0LmhlaWdodCgpOworCSpoID0gcmVjdC5o
ZWlnaHQoKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1l
X3BhaW50X2Z1bGxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFt
ZV9wYWludF9mdWxsX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC04MjgsNyArODI4LDcg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV9wYWludF9mdWxsX2dldChjb25zdCBFdmFzX09iamVjdCAq
bykKICAgICByZXR1cm4gc2QtPmZyYW1lLT52aWV3KCktPnBhaW50c0VudGlyZUNvbnRlbnRzKCk7
CiB9CiAKLXZvaWQgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgZmxhZykKK3ZvaWQgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KEV2YXNfT2JqZWN0KiBv
LCBFaW5hX0Jvb2wgZmxhZykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmZyYW1lKTsKQEAgLTgzNiw3
ICs4MzYsNyBAQCB2b2lkIGV3a19mcmFtZV9wYWludF9mdWxsX3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGZsYWcpCiAgICAgc2QtPmZyYW1lLT52aWV3KCktPnNldFBhaW50c0VudGlyZUNv
bnRlbnRzKGZsYWcpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4oRXZh
c19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4oRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFf
RkFMU0UpOwpAQCAtODQ1LDE0ICs4NDUsMTQgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2Zv
Y3VzX2luKEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19vdXQoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfb3V0KEV2YXNfT2JqZWN0KiBvKQogewogICAgIC8vIFRPRE86
IHdoYXQgdG8gZG8gb24gZm9jdXMgb3V0PwogICAgIEVSUigid2hhdCB0byBkbz8iKTsKICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3do
ZWVsKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsICpldikKK0Vp
bmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVjdCogbywgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtODY3LDcgKzg2Nyw3IEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9XaGVlCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhh
bmRsZVdoZWVsRXZlbnQoZXZlbnQpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91
c2VfZG93bihFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldikK
K0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTg4NSwxMyArODg1LDEzIEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX0Rvd24KICAgICByZXR1cm4gc2QtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9m
ZWVkX21vdXNlX3VwKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwICpl
dikKK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV91cChFdmFzX09iamVjdCogbywgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChldiwgRUlOQV9GQUxTRSk7CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcg
PSBzZC0+ZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzZC0+
ZnJhbWUtPnZpZXcoKTsKICAgICBEQkcoIm89JXAsIHZpZXc9JXAsIGJ1dHRvbj0lZCwgcG9zPSVk
LCVkIiwKICAgICAgICAgbywgdmlldywgZXYtPmJ1dHRvbiwgZXYtPmNhbnZhcy54LCBldi0+Y2Fu
dmFzLnkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBFSU5BX0ZB
TFNFKTsKQEAgLTkwMyw3ICs5MDMsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2Vf
dXAoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2KQogICAgIHJl
dHVybiBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChl
dmVudCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KQorRWluYV9Cb29sIGV3a19m
cmFtZV9mZWVkX21vdXNlX21vdmUoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfTW92ZSogZXYpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwpAQCAtOTIyLDcgKzkyMiw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVl
ZF9tb3VzZV9tb3ZlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUK
ICAgICByZXR1cm4gc2QtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VNb3ZlZChldmVudCk7
CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChFdmFzX09iamVjdCAq
bywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCBFaW5hX0xpc3QgKnBvaW50cywgaW50IG1l
dGFTdGF0ZSkKK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChFdmFzX09iamVj
dCogbywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCBFaW5hX0xpc3QqIHBvaW50cywgaW50
IG1ldGFTdGF0ZSkKIHsKICAgICBFaW5hX0Jvb2wgcmV0ID0gRUlOQV9GQUxTRTsKIApAQCAtOTMx
LDkgKzkzMSw5IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChFdmFzX09i
amVjdCAqbywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uCiAgICAgRVdLX0ZSQU1FX1NEX0dF
VChvLCBzZCk7CiAKICAgICBpZiAoIXNkIHx8ICFzZC0+ZnJhbWUgfHwgIWV3a192aWV3X25lZWRf
dG91Y2hfZXZlbnRzX2dldChzZC0+dmlldykpIHsKLSAgICAgICAgdm9pZCAqcG9pbnQ7Ci0gICAg
ICAgIEVJTkFfTElTVF9GUkVFKHBvaW50cywgcG9pbnQpOwotICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKwl2b2lkKiBwb2ludDsKKwlFSU5BX0xJU1RfRlJFRShwb2ludHMsIHBvaW50KSA7CisJ
cmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgRXZhc19Db29yZCB4LCB5OwpAQCAtOTQy
LDE5ICs5NDIsMTkgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KEV2YXNf
T2JqZWN0ICpvLCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24KICAgICBXZWJDb3JlOjpUb3Vj
aEV2ZW50VHlwZSB0eXBlID0gV2ViQ29yZTo6VG91Y2hTdGFydDsKICAgICBzd2l0Y2ggKGFjdGlv
bikgewogICAgIGNhc2UgRVdLX1RPVUNIX1NUQVJUOgotICAgICAgICB0eXBlID0gV2ViQ29yZTo6
VG91Y2hTdGFydDsKLSAgICAgICAgYnJlYWs7CisJdHlwZSA9IFdlYkNvcmU6OlRvdWNoU3RhcnQ7
CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfVE9VQ0hfRU5EOgotICAgICAgICB0eXBlID0gV2ViQ29y
ZTo6VG91Y2hFbmQ7Ci0gICAgICAgIGJyZWFrOworCXR5cGUgPSBXZWJDb3JlOjpUb3VjaEVuZDsK
KwlicmVhazsKICAgICBjYXNlIEVXS19UT1VDSF9NT1ZFOgotICAgICAgICB0eXBlID0gV2ViQ29y
ZTo6VG91Y2hNb3ZlOwotICAgICAgICBicmVhazsKKwl0eXBlID0gV2ViQ29yZTo6VG91Y2hNb3Zl
OworCWJyZWFrOwogICAgIGNhc2UgRVdLX1RPVUNIX0NBTkNFTDoKLSAgICAgICAgdHlwZSA9IFdl
YkNvcmU6OlRvdWNoQ2FuY2VsOwotICAgICAgICBicmVhazsKKwl0eXBlID0gV2ViQ29yZTo6VG91
Y2hDYW5jZWw7CisJYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1U
b3VjaEV2ZW50IHRlKHBvaW50cywgV2ViQ29yZTo6SW50UG9pbnQoeCwgeSksIHR5cGUsIG1ldGFT
dGF0ZSk7CkBAIC05NjMsNyArOTYzLDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX3RvdWNo
X2V2ZW50KEV2YXNfT2JqZWN0ICpvLCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24KICAgICBy
ZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW5saW5lIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2hhbmRs
ZV9rZXlfc2Nyb2xsaW5nKFdlYkNvcmU6OkZyYW1lICpmcmFtZSwgY29uc3QgV2ViQ29yZTo6UGxh
dGZvcm1LZXlib2FyZEV2ZW50ICZldmVudCkKK3N0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tf
ZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmcoV2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQgJmV2ZW50KQogewogICAgIFdlYkNvcmU6OlNj
cm9sbERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHk7CkBAIC05NzIsNjIgKzk3Miw2MiBAQCBzdGF0aWMgaW5saW5lIEVpbmFfQm9v
bCBfZXdrX2ZyYW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKFdlYkNvcmU6OkZyYW1lICpmcmFtZSwg
YwogCiAgICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgY2FzZSBWS19TUEFDRToKLSAgICAgICAg
Z3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeVBhZ2U7Ci0gICAgICAgIGlmIChldmVudC5z
aGlmdEtleSgpKQotICAgICAgICAgICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsVXA7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbERvd247
Ci0gICAgICAgIGJyZWFrOworCWdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlOwor
CWlmIChldmVudC5zaGlmdEtleSgpKQorCSAgICBkaXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxV
cDsKKwllbHNlCisJICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbERvd247CisJYnJlYWs7
CiAgICAgY2FzZSBWS19ORVhUOgotICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9s
bEJ5UGFnZTsKLSAgICAgICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsRG93bjsKLSAgICAg
ICAgYnJlYWs7CisJZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeVBhZ2U7CisJZGlyZWN0
aW9uID0gV2ViQ29yZTo6U2Nyb2xsRG93bjsKKwlicmVhazsKICAgICBjYXNlIFZLX1BSSU9SOgot
ICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5UGFnZTsKLSAgICAgICAgZGly
ZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsVXA7Ci0gICAgICAgIGJyZWFrOworCWdyYW51bGFyaXR5
ID0gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlOworCWRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbFVw
OworCWJyZWFrOwogICAgIGNhc2UgVktfSE9NRToKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJD
b3JlOjpTY3JvbGxCeURvY3VtZW50OwotICAgICAgICBkaXJlY3Rpb24gPSBXZWJDb3JlOjpTY3Jv
bGxVcDsKLSAgICAgICAgYnJlYWs7CisJZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeURv
Y3VtZW50OworCWRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbFVwOworCWJyZWFrOwogICAgIGNh
c2UgVktfRU5EOgotICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5RG9jdW1l
bnQ7Ci0gICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbERvd247Ci0gICAgICAgIGJy
ZWFrOworCWdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlEb2N1bWVudDsKKwlkaXJlY3Rp
b24gPSBXZWJDb3JlOjpTY3JvbGxEb3duOworCWJyZWFrOwogICAgIGNhc2UgVktfTEVGVDoKLSAg
ICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeUxpbmU7Ci0gICAgICAgIGRpcmVj
dGlvbiA9IFdlYkNvcmU6OlNjcm9sbExlZnQ7Ci0gICAgICAgIGJyZWFrOworCWdyYW51bGFyaXR5
ID0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lOworCWRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbExl
ZnQ7CisJYnJlYWs7CiAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBX
ZWJDb3JlOjpTY3JvbGxCeUxpbmU7Ci0gICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9s
bFJpZ2h0OwotICAgICAgICBicmVhazsKKwlncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5
TGluZTsKKwlkaXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxSaWdodDsKKwlicmVhazsKICAgICBj
YXNlIFZLX1VQOgotICAgICAgICBkaXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxVcDsKLSAgICAg
ICAgaWYgKGV2ZW50LmN0cmxLZXkoKSkKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29y
ZTo6U2Nyb2xsQnlEb2N1bWVudDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZ3JhbnVsYXJp
dHkgPSBXZWJDb3JlOjpTY3JvbGxCeUxpbmU7Ci0gICAgICAgIGJyZWFrOworCWRpcmVjdGlvbiA9
IFdlYkNvcmU6OlNjcm9sbFVwOworCWlmIChldmVudC5jdHJsS2V5KCkpCisJICAgIGdyYW51bGFy
aXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlEb2N1bWVudDsKKwllbHNlCisJICAgIGdyYW51bGFyaXR5
ID0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lOworCWJyZWFrOwogICAgIGNhc2UgVktfRE9XTjoKLSAg
ICAgICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsRG93bjsKLSAgICAgICAgIGlmIChldmVu
dC5jdHJsS2V5KCkpCi0gICAgICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5
RG9jdW1lbnQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29y
ZTo6U2Nyb2xsQnlMaW5lOwotICAgICAgICBicmVhazsKKwlkaXJlY3Rpb24gPSBXZWJDb3JlOjpT
Y3JvbGxEb3duOworCWlmIChldmVudC5jdHJsS2V5KCkpCisJICAgIGdyYW51bGFyaXR5ID0gV2Vi
Q29yZTo6U2Nyb2xsQnlEb2N1bWVudDsKKwllbHNlCisJICAgIGdyYW51bGFyaXR5ID0gV2ViQ29y
ZTo6U2Nyb2xsQnlMaW5lOworCWJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOworCXJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIAogICAgIGlmIChmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPnNjcm9sbE92ZXJmbG93KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKQot
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKIAogICAgIGZy
YW1lLT52aWV3KCktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24oRXZhc19P
YmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KQorRWluYV9Cb29sIGV3a19m
cmFtZV9mZWVkX2tleV9kb3duKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9E
b3duKiBldikKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlO
QV9GQUxTRSk7CkBAIC0xMDM4LDEyICsxMDM4LDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVl
ZF9rZXlfZG93bihFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYp
CiAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQgZXZlbnQoZXYpOwogICAgIGlm
IChzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChldmVudCkpCi0gICAgICAgIHJl
dHVybiBFSU5BX1RSVUU7CisJcmV0dXJuIEVJTkFfVFJVRTsKIAogICAgIHJldHVybiBfZXdrX2Zy
YW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKHNkLT5mcmFtZSwgZXZlbnQpOwogfQogCi1FaW5hX0Jv
b2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50
X0tleV9VcCAqZXYpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNfT2JqZWN0
KiBvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXYpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtMTA1NiwyMiArMTA1NiwyMiBA
QCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBF
dmFzX0V2ZW50X0tleV9VcCAqZXYpCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmtleUV2ZW50KGV2ZW50KTsKIH0KIAotRXdrX1RleHRfU2VsZWN0aW9uX1R5cGUgZXdrX2Zy
YW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRXdrX1Rl
eHRfU2VsZWN0aW9uX1R5cGUgZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFV0tfVEVYVF9TRUxFQ1RJT05fTk9ORSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNkLT5mcmFtZSwgRVdLX1RFWFRfU0VMRUNUSU9OX05PTkUpOwogCi0gICAgV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb24gKmNvbnRyb2xsZXIgPSBzZC0+ZnJhbWUtPnNlbGVjdGlvbigpOwor
ICAgIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uKiBjb250cm9sbGVyID0gc2QtPmZyYW1lLT5zZWxl
Y3Rpb24oKTsKICAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBFV0tfVEVYVF9T
RUxFQ1RJT05fTk9ORTsKKwlyZXR1cm4gRVdLX1RFWFRfU0VMRUNUSU9OX05PTkU7CiAKICAgICBz
d2l0Y2ggKGNvbnRyb2xsZXItPnNlbGVjdGlvblR5cGUoKSkgewogICAgIGNhc2UgV2ViQ29yZTo6
VmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb246Ci0gICAgICAgIHJldHVybiBFV0tfVEVY
VF9TRUxFQ1RJT05fQ0FSRVQ7CisJcmV0dXJuIEVXS19URVhUX1NFTEVDVElPTl9DQVJFVDsKICAg
ICBjYXNlIFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9uOgotICAgICAg
ICByZXR1cm4gRVdLX1RFWFRfU0VMRUNUSU9OX1JBTkdFOworCXJldHVybiBFV0tfVEVYVF9TRUxF
Q1RJT05fUkFOR0U7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEVXS19URVhUX1NFTEVD
VElPTl9OT05FOworCXJldHVybiBFV0tfVEVYVF9TRUxFQ1RJT05fTk9ORTsKICAgICB9CiB9CiAK
QEAgLTEwOTAsNyArMTA5MCw3IEBAIEV3a19UZXh0X1NlbGVjdGlvbl9UeXBlIGV3a19mcmFtZV90
ZXh0X3NlbGVjdGlvbl90eXBlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAqCiAgKiBAcmV0
dXJuIGEgbmV3IGZyYW1lIG9iamVjdCBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwotRXZhc19PYmpl
Y3QgKmV3a19mcmFtZV9hZGQoRXZhcyAqZSkKK0V2YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRkKEV2
YXMqIGUpCiB7CiAgICAgcmV0dXJuIGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChlLCBfZXdrX2ZyYW1l
X3NtYXJ0X2NsYXNzX25ldygpKTsKIH0KQEAgLTExMDIsMTYgKzExMDIsMTYgQEAgRXZhc19PYmpl
Y3QgKmV3a19mcmFtZV9hZGQoRXZhcyAqZSkKICAqCiAgKiBUaGlzIGlzIGludGVybmFsIGFuZCBz
aG91bGQgbmV2ZXIgYmUgY2FsbGVkIGJ5IGV4dGVybmFsIHVzZXJzLgogICovCi1FaW5hX0Jvb2wg
ZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICp2aWV3LCBXZWJDb3Jl
OjpGcmFtZSAqZnJhbWUpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QqIG8s
IEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7CiAgICAgRVdLX0ZS
QU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIGlmICghc2QtPmZy
YW1lKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBmbGMgPSBfZXdr
X2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KGZyYW1lKTsKLSAgICAgICAgZmxjLT5zZXRXZWJGcmFtZShv
KTsKLSAgICAgICAgc2QtPmZyYW1lID0gZnJhbWU7Ci0gICAgICAgIHNkLT52aWV3ID0gdmlldzsK
LSAgICAgICAgZnJhbWUtPmluaXQoKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKwlXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogZmxjID0gX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dl
dChmcmFtZSk7CisJZmxjLT5zZXRXZWJGcmFtZShvKTsKKwlzZC0+ZnJhbWUgPSBmcmFtZTsKKwlz
ZC0+dmlldyA9IHZpZXc7CisJZnJhbWUtPmluaXQoKTsKKwlyZXR1cm4gRUlOQV9UUlVFOwogICAg
IH0KIAogICAgIEVSUigiZnJhbWUgJXAgYWxyZWFkeSBzZXQgZm9yICVwLCBpZ25vcmVkIG5ldyAl
cCIsCkBAIC0xMTI0LDI5ICsxMTI0LDI5IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfaW5pdChFdmFz
X09iamVjdCAqbywgRXZhc19PYmplY3QgKnZpZXcsIFdlYkNvcmU6OkZyYW1lICpmcmFtCiAgKgog
ICogQWRkcyBjaGlsZCB0byB0aGUgZnJhbWUuCiAgKi8KLUVpbmFfQm9vbCBld2tfZnJhbWVfY2hp
bGRfYWRkKEV2YXNfT2JqZWN0ICpvLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNo
aWxkLCBjb25zdCBXVEY6OlN0cmluZyAmbmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBj
b25zdCBXVEY6OlN0cmluZyAmcmVmZXJyZXIpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NoaWxkX2Fk
ZChFdmFzX09iamVjdCogbywgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjaGlsZCwg
Y29uc3QgV1RGOjpTdHJpbmcgJm5hbWUsIGNvbnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29uc3Qg
V1RGOjpTdHJpbmcgJnJlZmVycmVyKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCAwKTsKICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsK
KyAgICBFdmFzX09iamVjdCogZnJhbWU7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGNmOwogCiAgICAg
ZnJhbWUgPSBld2tfZnJhbWVfYWRkKHNkLT5iYXNlLmV2YXMpOwogICAgIGlmICghZnJhbWUpIHsK
LSAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGV3a19mcmFtZSBvYmplY3QuIik7Ci0gICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOworCUVSUigiQ291bGQgbm90IGNyZWF0ZSBld2tfZnJhbWUg
b2JqZWN0LiIpOworCXJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIAogICAgIGNmID0gY2hpbGQu
Z2V0KCk7CiAgICAgaWYgKGNmLT50cmVlKCkpCi0gICAgICAgIGNmLT50cmVlKCktPnNldE5hbWUo
bmFtZSk7CisJY2YtPnRyZWUoKS0+c2V0TmFtZShuYW1lKTsKICAgICBlbHNlCi0gICAgICAgIEVS
Uigibm8gdHJlZSBmb3IgY2hpbGQgb2JqZWN0Iik7CisJRVJSKCJubyB0cmVlIGZvciBjaGlsZCBv
YmplY3QiKTsKICAgICBzZC0+ZnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoY2hpbGQpOwogCiAg
ICAgaWYgKCFld2tfZnJhbWVfaW5pdChmcmFtZSwgc2QtPnZpZXcsIGNmKSkgewotICAgICAgICBl
dmFzX29iamVjdF9kZWwoZnJhbWUpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlldmFz
X29iamVjdF9kZWwoZnJhbWUpOworCXJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KICAgICBzbnBy
aW50ZihidWYsIHNpemVvZihidWYpLCAiRVdLX0ZyYW1lOmNoaWxkLyVzIiwgbmFtZS51dGY4KCku
ZGF0YSgpKTsKICAgICBldmFzX29iamVjdF9uYW1lX3NldChmcmFtZSwgYnVmKTsKQEAgLTExNTUs
OCArMTE1NSw4IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfY2hpbGRfYWRkKEV2YXNfT2JqZWN0ICpv
LCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNoCiAKICAgICAvLyBUaGUgY3JlYXRp
b24gb2YgdGhlIGZyYW1lIG1heSBoYXZlIHJ1biBhcmJpdHJhcnkgSmF2YVNjcmlwdCB0aGF0IHJl
bW92ZWQgaXQgZnJvbSB0aGUgcGFnZSBhbHJlYWR5LgogICAgIGlmICghY2YtPnBhZ2UoKSkgewot
ICAgICAgICBldmFzX29iamVjdF9kZWwoZnJhbWUpOwotICAgICAgICByZXR1cm4gRUlOQV9UUlVF
OworCWV2YXNfb2JqZWN0X2RlbChmcmFtZSk7CisJcmV0dXJuIEVJTkFfVFJVRTsKICAgICB9CiAK
ICAgICBzZC0+ZnJhbWUtPmxvYWRlcigpLT5sb2FkVVJMSW50b0NoaWxkRnJhbWUodXJsLCByZWZl
cnJlciwgY2YpOwpAQCAtMTE2NCw4ICsxMTY0LDggQEAgRWluYV9Cb29sIGV3a19mcmFtZV9jaGls
ZF9hZGQoRXZhc19PYmplY3QgKm8sIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY2gK
ICAgICAvLyBUaGUgZnJhbWUncyBvbmxvYWQgaGFuZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZy
b20gdGhlIGRvY3VtZW50LgogICAgIC8vIFNlZSBmYXN0L2RvbS9udWxsLXBhZ2Utc2hvdy1tb2Rh
bC1kaWFsb2ctY3Jhc2guaHRtbCBmb3IgYW4gZXhhbXBsZS4KICAgICBpZiAoIWNmLT50cmVlKCkt
PnBhcmVudCgpKSB7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2RlbChmcmFtZSk7Ci0gICAgICAgIHJl
dHVybiBFSU5BX1RSVUU7CisJZXZhc19vYmplY3RfZGVsKGZyYW1lKTsKKwlyZXR1cm4gRUlOQV9U
UlVFOwogICAgIH0KIAogICAgIC8vIFRPRE86IGFubm91bmNlIGZyYW1lIHdhcyBjcmVhdGVkPwpA
QCAtMTE5Myw3ICsxMTkzLDcgQEAgdm9pZCBld2tfZnJhbWVfdmlld19zZXQoRXZhc19PYmplY3Qq
IG8sIEV2YXNfT2JqZWN0KiBuZXdQYXJlbnQpCiAgKiBAaW50ZXJuYWwKICAqIEZyYW1lIHdhcyBk
ZXN0cm95ZWQgYnkgbG9hZGVyLCByZW1vdmUgaW50ZXJuYWwgcmVmZXJlbmNlLgogICovCi12b2lk
IGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9jb3Jl
X2dvbmUoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgRVdLX0ZS
QU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMTIwNyw3ICsxMjA3LDcgQEAgdm9pZCBl
d2tfZnJhbWVfY29yZV9nb25lKEV2YXNfT2JqZWN0ICpvKQogICogQXZvaWQgdXNpbmcgdGhpcyBj
YWxsIGZyb20gb3V0c2lkZSwgYWRkIHNwZWNpZmljIGV3a19mcmFtZV8qCiAgKiBhY3Rpb25zIGlu
c3RlYWQuCiAgKi8KLVdlYkNvcmU6OkZyYW1lKiBld2tfZnJhbWVfY29yZV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pCitXZWJDb3JlOjpGcmFtZSogZXdrX2ZyYW1lX2NvcmVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKICAgICByZXR1cm4gc2QtPmZyYW1lOwpAQCAtMTIyNiw3ICsxMjI2LDcgQEAgV2ViQ29yZTo6
RnJhbWUqIGV3a19mcmFtZV9jb3JlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAqCiAgKiBF
bWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIgogICovCi12b2lkIGV3a19m
cmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCAqbywgRXdrX0ZyYW1lX1Jlc291cmNl
X1JlcXVlc3QgKnJlcXVlc3QpCit2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFz
X09iamVjdCogbywgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVzb3VyY2UscmVxdWVzdCx3aWxs
c2VuZCIsIHJlcXVlc3QpOwogfQpAQCAtMTI0MCw5ICsxMjQwLDkgQEAgdm9pZCBld2tfZnJhbWVf
cmVxdWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QgKm8sIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1
ZXN0ICpyZXEKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIKICAq
Lwotdm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09iamVjdCAq
bywgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgKnJlcXVlc3QpCit2b2lkIGV3a19m
cmFtZV9yZXF1ZXN0X2Fzc2lnbl9pZGVudGlmaWVyKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFd2tf
RnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG8sICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsICh2b2lkICopcmVxdWVz
dCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVzb3VyY2UscmVx
dWVzdCxuZXciLCAodm9pZCopcmVxdWVzdCk7CiB9CiAKIC8qKgpAQCAtMTI1Myw3ICsxMjUzLDcg
QEAgdm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09iamVjdCAq
bywgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmMKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJuYXZpZ2F0
aW9uLGZpcnN0IgogICovCi12b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9maXJzdF9uYXZpZ2F0
aW9uKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1fZmlyc3RfbmF2
aWdhdGlvbihFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG8sICJuYXZpZ2F0aW9uLGZpcnN0IiwgMCk7CiB9CkBAIC0xMjY3LDcgKzEyNjcsNyBA
QCB2b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9maXJzdF9uYXZpZ2F0aW9uKEV2YXNfT2JqZWN0
ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogInN0YXRlLHNhdmUiCiAgKi8KLXZvaWQgZXdrX2Zy
YW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCAqbywgV2ViQ29yZTo6SGlzdG9yeUl0ZW0g
Kml0ZW0pCit2b2lkIGV3a19mcmFtZV92aWV3X3N0YXRlX3NhdmUoRXZhc19PYmplY3QqIG8sIFdl
YkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobywgInN0YXRlLHNhdmUiLCAwKTsKIH0KQEAgLTEyNzgsOSArMTI3OCw5IEBAIHZv
aWQgZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCAqbywgV2ViQ29yZTo6SGlz
dG9yeUl0ZW0gKml0ZW0pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxzdGFydGVkIiB3aXRo
IG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChFdmFzX09i
amVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogbykKIHsK
LSAgICBFdmFzX09iamVjdCAqbWFpbl9mcmFtZTsKKyAgICBFdmFzX09iamVjdCogbWFpbl9mcmFt
ZTsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG8sICJsb2FkLHN0YXJ0ZWQiLCAwKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCk7CkBAIC0xMjg4LDcgKzEyODgsNyBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX3N0YXJ0
ZWQoRXZhc19PYmplY3QgKm8pCiAKICAgICBtYWluX2ZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFp
bl9nZXQoc2QtPnZpZXcpOwogICAgIGlmIChtYWluX2ZyYW1lID09IG8pCi0gICAgICAgIGV3a192
aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKHNkLT52aWV3KTsKKwlld2tfdmlld19mcmFtZV9t
YWluX2xvYWRfc3RhcnRlZChzZC0+dmlldyk7CiB9CiAKIC8qKgpAQCAtMTI5OSw3ICsxMjk5LDcg
QEAgdm9pZCBld2tfZnJhbWVfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVt
aXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwot
dm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdr
X2ZyYW1lX2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxwcm92aXNpb25hbCIsIDApOwogfQpAQCAt
MTMxMiw3ICsxMzEyLDcgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbChFdmFzX09i
amVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLGZpcnN0bGF5b3V0LGZpbmlzaGVk
IiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlv
dXRfZmluaXNoZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5
b3V0X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobywgImxvYWQsZmlyc3RsYXlvdXQsZmluaXNoZWQiLCAwKTsKIH0KQEAgLTEz
MjUsNyArMTMyNSw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfZmluaXNoZWQo
RXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxub25lbXB0eWxheW91
dCxmaW5pc2hlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a19mcmFtZV9sb2Fk
X2ZpcnN0bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tf
ZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25lbXB0eV9maW5pc2hlZChFdmFzX09iamVjdCogbykK
IHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLG5vbmVtcHR5
bGF5b3V0LGZpbmlzaGVkIiwgMCk7CiB9CkBAIC0xMzM4LDcgKzEzMzgsNyBAQCB2b2lkIGV3a19m
cmFtZV9sb2FkX2ZpcnN0bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvKQog
ICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiIHdpdGggbm8gcGFy
YW1ldGVycy4KICAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZChFdmFz
X09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9h
ZCxkb2N1bWVudCxmaW5pc2hlZCIsIDApOwogfQpAQCAtMTM1MywyNCArMTM1MywyNCBAQCB2b2lk
IGV3a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvKQogICogQG5v
dGUgdGhlcmUgc2hvdWxkIG5vdGJlIGFueSBlcnJvciBzdHVmZiBoZXJlLCBidXQgdHJ5aW5nIHRv
IGJlCiAgKiAgICAgICBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgV2ViS2l0LgogICovCi12b2lk
IGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplcnJv
cl9kb21haW4sIGludCBlcnJvcl9jb2RlLCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25z
dCBjaGFyICplcnJvcl9kZXNjcmlwdGlvbiwgY29uc3QgY2hhciAqZmFpbGluZ191cmwpCit2b2lk
IGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBlcnJv
cl9kb21haW4sIGludCBlcnJvcl9jb2RlLCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25z
dCBjaGFyKiBlcnJvcl9kZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ191cmwpCiB7Ci0g
ICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgYnVmLCAqZXJyb3I7CisgICAgRXdrX0ZyYW1lX0xvYWRf
RXJyb3IgYnVmLCAqIGVycm9yOwogICAgIGlmICghZXJyb3JfZG9tYWluKSB7Ci0gICAgICAgIERC
Rygibz0lcCwgc3VjY2Vzcy4iLCBvKTsKLSAgICAgICAgZXJyb3IgPSAwOworCURCRygibz0lcCwg
c3VjY2Vzcy4iLCBvKTsKKwllcnJvciA9IDA7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgREJHKCJv
PSVwLCBlcnJvcj0lcyAoJWQsIGNhbmNlbGxhdGlvbj0laGh1KSBcIiVzXCIsIHVybD0lcyIsCi0g
ICAgICAgICAgICBvLCBlcnJvcl9kb21haW4sIGVycm9yX2NvZGUsIGlzX2NhbmNlbGxhdGlvbiwK
LSAgICAgICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uLCBmYWlsaW5nX3VybCk7Ci0KLSAgICAgICAg
YnVmLmRvbWFpbiA9IGVycm9yX2RvbWFpbjsKLSAgICAgICAgYnVmLmNvZGUgPSBlcnJvcl9jb2Rl
OwotICAgICAgICBidWYuaXNfY2FuY2VsbGF0aW9uID0gaXNfY2FuY2VsbGF0aW9uOwotICAgICAg
ICBidWYuZGVzY3JpcHRpb24gPSBlcnJvcl9kZXNjcmlwdGlvbjsKLSAgICAgICAgYnVmLmZhaWxp
bmdfdXJsID0gZmFpbGluZ191cmw7Ci0gICAgICAgIGJ1Zi5mcmFtZSA9IG87Ci0gICAgICAgIGVy
cm9yID0gJmJ1ZjsKKwlEQkcoIm89JXAsIGVycm9yPSVzICglZCwgY2FuY2VsbGF0aW9uPSVoaHUp
IFwiJXNcIiwgdXJsPSVzIiwKKwkgICAgbywgZXJyb3JfZG9tYWluLCBlcnJvcl9jb2RlLCBpc19j
YW5jZWxsYXRpb24sCisJICAgIGVycm9yX2Rlc2NyaXB0aW9uLCBmYWlsaW5nX3VybCk7CisKKwli
dWYuZG9tYWluID0gZXJyb3JfZG9tYWluOworCWJ1Zi5jb2RlID0gZXJyb3JfY29kZTsKKwlidWYu
aXNfY2FuY2VsbGF0aW9uID0gaXNfY2FuY2VsbGF0aW9uOworCWJ1Zi5kZXNjcmlwdGlvbiA9IGVy
cm9yX2Rlc2NyaXB0aW9uOworCWJ1Zi5mYWlsaW5nX3VybCA9IGZhaWxpbmdfdXJsOworCWJ1Zi5m
cmFtZSA9IG87CisJZXJyb3IgPSAmYnVmOwogICAgIH0KICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG8sICJsb2FkLGZpbmlzaGVkIiwgZXJyb3IpOwogICAgIEVXS19GUkFNRV9T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTEzODMsNyArMTM4Myw3IEBAIHZvaWQgZXdrX2Zy
YW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVycm9yX2RvbWFp
biwgaW50IGVycm9yCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2lu
dGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX2Vy
cm9yKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplcnJvcl9kb21haW4sIGludCBlcnJvcl9j
b2RlLCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyICplcnJvcl9kZXNjcmlw
dGlvbiwgY29uc3QgY2hhciAqZmFpbGluZ191cmwpCit2b2lkIGV3a19mcmFtZV9sb2FkX2Vycm9y
KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBlcnJvcl9kb21haW4sIGludCBlcnJvcl9jb2Rl
LCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvcl9kZXNjcmlwdGlv
biwgY29uc3QgY2hhciogZmFpbGluZ191cmwpCiB7CiAgICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3Ig
ZXJyb3I7CiAKQEAgLTE0MTAsNyArMTQxMCw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3Io
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvCiAg
KgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm9ncmVzcyIgd2l0aCBwb2ludGVyIHRvIGEgZG91
YmxlIGZyb20gMC4wIHRvIDEuMC4KICAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19j
aGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFu
Z2VkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+ZnJhbWUpOwpAQCAtMTQz
MCwxMiArMTQzMCwxMiBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZh
c19PYmplY3QgKm8pCiAgKgogICogUmVwb3J0cyBjb250ZW50cyBzaXplIGNoYW5nZWQuCiAgKi8K
LXZvaWQgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCAqbywgRXZh
c19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit2b2lkIGV3a19mcmFtZV9jb250ZW50c19zaXplX2No
YW5nZWQoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAg
IERCRygibz0lcDogJWR4JWQiLCBvLCB3LCBoKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCk7CiAgICAgaWYgKHNkLT5jb250ZW50c19zaXplLncgPT0gdyAmJiBzZC0+Y29u
dGVudHNfc2l6ZS5oID09IGgpCi0gICAgICAgIHJldHVybjsKKwlyZXR1cm47CiAgICAgc2QtPmNv
bnRlbnRzX3NpemUudyA9IHc7CiAgICAgc2QtPmNvbnRlbnRzX3NpemUuaCA9IGg7CiAgICAgLy8g
VE9ETzogdXBkYXRlIHNvbWV0aGluZyBlbHNlIGludGVybmFsbHk/CkBAIC0xNDQ5LDEzICsxNDQ5
LDEzIEBAIHZvaWQgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCAq
bywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiAgKgogICogUmVwb3J0cyB0aXRsZSBjaGFu
Z2VkLgogICovCi12b2lkIGV3a19mcmFtZV90aXRsZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKnRpdGxlKQordm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBj
b25zdCBjaGFyKiB0aXRsZSkKIHsKICAgICBEQkcoIm89JXAsIHRpdGxlPSVzIiwgbywgdGl0bGUg
PyB0aXRsZSA6ICIobnVsbCkiKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCk7CiAgICAgaWYgKCFlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnNkLT50aXRsZSwgdGl0bGUp
KQotICAgICAgICByZXR1cm47Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChv
LCAidGl0bGUsY2hhbmdlZCIsICh2b2lkICopc2QtPnRpdGxlKTsKKwlyZXR1cm47CisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidGl0bGUsY2hhbmdlZCIsICh2b2lkKilz
ZC0+dGl0bGUpOwogfQogCiAvKioKQEAgLTE0NjMsNyArMTQ2Myw3IEBAIHZvaWQgZXdrX2ZyYW1l
X3RpdGxlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGl0bGUpCiAgKgogICogQ3Jl
YXRlcyBhIHZpZXcuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX3ZpZXdfY3JlYXRlX2Zvcl92aWV3KEV2
YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqdmlldykKK3ZvaWQgZXdrX2ZyYW1lX3ZpZXdfY3Jl
YXRlX2Zvcl92aWV3KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogdmlldykKIHsKICAgICBE
QkcoIm89JXAsIHZpZXc9JXAiLCBvLCB2aWV3KTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCk7CkBAIC0xNDc4LDIyICsxNDc4LDIyIEBAIHZvaWQgZXdrX2ZyYW1lX3ZpZXdf
Y3JlYXRlX2Zvcl92aWV3KEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqdmlldykKIAogICAg
IGV3a192aWV3X2JnX2NvbG9yX2dldCh2aWV3LCAmciwgJmcsICZiLCAmYSk7CiAgICAgaWYgKCFh
KQotICAgICAgICBiZyA9IFdlYkNvcmU6OkNvbG9yKDAsIDAsIDAsIDApOworCWJnID0gV2ViQ29y
ZTo6Q29sb3IoMCwgMCwgMCwgMCk7CiAgICAgZWxzZSBpZiAoYSA9PSAyNTUpCi0gICAgICAgIGJn
ID0gV2ViQ29yZTo6Q29sb3IociwgZywgYiwgYSk7CisJYmcgPSBXZWJDb3JlOjpDb2xvcihyLCBn
LCBiLCBhKTsKICAgICBlbHNlCi0gICAgICAgIGJnID0gV2ViQ29yZTo6Q29sb3IociAqIDI1NSAv
IGEsIGcgKiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSk7CisJYmcgPSBXZWJDb3JlOjpDb2xvcihy
ICogMjU1IC8gYSwgZyAqIDI1NSAvIGEsIGIgKiAyNTUgLyBhLCBhKTsKIAogICAgIHNkLT5mcmFt
ZS0+Y3JlYXRlVmlldyhzaXplLCBiZywgIWEsIFdlYkNvcmU6OkludFNpemUoKSwgZmFsc2UpOwog
ICAgIGlmICghc2QtPmZyYW1lLT52aWV3KCkpCi0gICAgICAgIHJldHVybjsKKwlyZXR1cm47CiAK
LSAgICBjb25zdCBjaGFyICp0aGVtZSA9IGV3a192aWV3X3RoZW1lX2dldCh2aWV3KTsKKyAgICBj
b25zdCBjaGFyKiB0aGVtZSA9IGV3a192aWV3X3RoZW1lX2dldCh2aWV3KTsKICAgICBzZC0+ZnJh
bWUtPnZpZXcoKS0+c2V0RWRqZVRoZW1lKHRoZW1lKTsKICAgICBzZC0+ZnJhbWUtPnZpZXcoKS0+
c2V0RXZhc09iamVjdChvKTsKIH0KIAotc3NpemVfdCBld2tfZnJhbWVfc291cmNlX2dldChjb25z
dCBFdmFzX09iamVjdCAqbywgY2hhciAqKmZyYW1lX3NvdXJjZSkKK3NzaXplX3QgZXdrX2ZyYW1l
X3NvdXJjZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIGNoYXIqKiBmcmFtZV9zb3VyY2UpCiB7
CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCAtMSk7CkBAIC0xNTA0LDM3ICsxNTA0
LDM3IEBAIHNzaXplX3QgZXdrX2ZyYW1lX3NvdXJjZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8s
IGNoYXIgKipmcmFtZV9zb3VyY2UpCiAgICAgKmZyYW1lX3NvdXJjZSA9IDA7IC8vIFNhdmVzIDAg
dG8gcG9pbnRlciB1bnRpbCBpdCdzIG5vdCBhbGxvY2F0ZWQuCiAKICAgICBpZiAoIXNkLT5mcmFt
ZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBvdGhlcnMgZG9jdW1lbnRzLgotICAgICAgICBXUk4oIk9ubHkgSFRNTCBkb2N1bWVudHMg
YXJlIHN1cHBvcnRlZCIpOwotICAgICAgICByZXR1cm4gLTE7CisJLy8gRklYTUU6IFN1cHBvcnQg
b3RoZXJzIGRvY3VtZW50cy4KKwlXUk4oIk9ubHkgSFRNTCBkb2N1bWVudHMgYXJlIHN1cHBvcnRl
ZCIpOworCXJldHVybiAtMTsKICAgICB9CiAKICAgICAvLyBMb29rIGZvciA8aHRtbD4gdGFnLiBJ
ZiBpdCBleGlzdHMsIHRoZSBub2RlIGNvbnRhdGlucyBhbGwgZG9jdW1lbnQncyBzb3VyY2UuCi0g
ICAgV2ViQ29yZTo6Tm9kZSAqZG9jdW1lbnROb2RlID0gc2QtPmZyYW1lLT5kb2N1bWVudCgpLT5k
b2N1bWVudEVsZW1lbnQoKTsKKyAgICBXZWJDb3JlOjpOb2RlKiBkb2N1bWVudE5vZGUgPSBzZC0+
ZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmIChkb2N1bWVudE5v
ZGUpCi0gICAgICAgIGZvciAoV2ViQ29yZTo6Tm9kZSAqbm9kZSA9IGRvY3VtZW50Tm9kZS0+Zmly
c3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6Omh0bWxUYWcpKSB7
Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6SFRNTEVsZW1lbnQgKmVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50KQotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBlbGVtZW50LT5vdXRlckhUTUwo
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorCWZv
ciAoV2ViQ29yZTo6Tm9kZSogbm9kZSA9IGRvY3VtZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBub2Rl
OyBub2RlID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKSB7CisJICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6aHRtbFRhZykpIHsKKwkJV2ViQ29yZTo6SFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KG5vZGUpOwor
CQlpZiAoZWxlbWVudCkKKwkJICAgIHNvdXJjZSA9IGVsZW1lbnQtPm91dGVySFRNTCgpOworCQli
cmVhazsKKwkgICAgfQorCX0KIAogICAgIC8vIFRyeSB0byBnZXQgPGhlYWQ+IGFuZCA8Ym9keT4g
dGFncyBpZiA8aHRtbD4gdGFnIHdhcyBub3QgZm91bmQuCiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgaWYgKHNkLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aGVhZCgpKQotICAgICAg
ICAgICAgc291cmNlID0gc2QtPmZyYW1lLT5kb2N1bWVudCgpLT5oZWFkKCktPm91dGVySFRNTCgp
OworCWlmIChzZC0+ZnJhbWUtPmRvY3VtZW50KCktPmhlYWQoKSkKKwkgICAgc291cmNlID0gc2Qt
PmZyYW1lLT5kb2N1bWVudCgpLT5oZWFkKCktPm91dGVySFRNTCgpOwogCi0gICAgICAgIGlmIChz
ZC0+ZnJhbWUtPmRvY3VtZW50KCktPmJvZHkoKSkKLSAgICAgICAgICAgIHNvdXJjZSArPSBzZC0+
ZnJhbWUtPmRvY3VtZW50KCktPmJvZHkoKS0+b3V0ZXJIVE1MKCk7CisJaWYgKHNkLT5mcmFtZS0+
ZG9jdW1lbnQoKS0+Ym9keSgpKQorCSAgICBzb3VyY2UgKz0gc2QtPmZyYW1lLT5kb2N1bWVudCgp
LT5ib2R5KCktPm91dGVySFRNTCgpOwogICAgIH0KIAogICAgIHNpemVfdCBzb3VyY2VfbGVuZ3Ro
ID0gc3RybGVuKHNvdXJjZS51dGY4KCkuZGF0YSgpKTsKICAgICAqZnJhbWVfc291cmNlID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KG1hbGxvYyhzb3VyY2VfbGVuZ3RoICsgMSkpOwogICAgIGlmICghKmZy
YW1lX3NvdXJjZSkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9y
eS4iKTsKLSAgICAgICAgcmV0dXJuIC0xOworCUNSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUg
bWVtb3J5LiIpOworCXJldHVybiAtMTsKICAgICB9CiAKICAgICBzdHJuY3B5KCpmcmFtZV9zb3Vy
Y2UsIHNvdXJjZS51dGY4KCkuZGF0YSgpLCBzb3VyY2VfbGVuZ3RoKTsKQEAgLTE1NDMsNDcgKzE1
NDMsNDcgQEAgc3NpemVfdCBld2tfZnJhbWVfc291cmNlX2dldChjb25zdCBFdmFzX09iamVjdCAq
bywgY2hhciAqKmZyYW1lX3NvdXJjZSkKICAgICByZXR1cm4gc291cmNlX2xlbmd0aDsKIH0KIAot
RWluYV9MaXN0ICpld2tfZnJhbWVfcmVzb3VyY2VzX2xvY2F0aW9uX2dldChjb25zdCBFdmFzX09i
amVjdCAqbykKK0VpbmFfTGlzdCogZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlvbl9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIDAp
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUtPmRvY3VtZW50
KCksIDApOwogCi0gICAgRWluYV9MaXN0ICpsaXN0T2ZJbWFnZXNMb2NhdGlvbiA9IDA7CisgICAg
RWluYV9MaXN0KiBsaXN0T2ZJbWFnZXNMb2NhdGlvbiA9IDA7CiAKICAgICAvLyBHZXQgc3JjIGF0
dGlidXRlIG9mIGltYWdlcyBhbmQgc2F2ZXMgdGhlbSB0byB0aGUgRWluYV9MaXN0LgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbj4gaW1hZ2VzID0gc2QtPmZyYW1lLT5kb2N1bWVu
dCgpLT5pbWFnZXMoKTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgaW1hZ2Vz
LT5sZW5ndGgoKTsgKytpbmRleCkgewotICAgICAgICBXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50
ICppbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Kj4o
aW1hZ2VzLT5pdGVtKGluZGV4KSk7Ci0gICAgICAgIGlmICghaW1hZ2VFbGVtZW50IHx8IGltYWdl
RWxlbWVudC0+c3JjKCkuaXNOdWxsKCkgfHwgaW1hZ2VFbGVtZW50LT5zcmMoKS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBXVEY6OlN0cmluZyBpbWFnZUxvY2F0
aW9uID0gaW1hZ2VFbGVtZW50LT5zcmMoKS5zdHJpbmcoKTsKLSAgICAgICAgLy8gTG9vayBmb3Ig
ZHVwbGljYXRlZCBsb2NhdGlvbi4KLSAgICAgICAgRWluYV9MaXN0ICpsaXN0SXRlcmF0b3IgPSAw
OwotICAgICAgICB2b2lkICpkYXRhID0gMDsKLSAgICAgICAgRWluYV9Cb29sIGZvdW5kID0gRUlO
QV9GQUxTRTsKLSAgICAgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobGlzdE9mSW1hZ2VzTG9jYXRpb24s
IGxpc3RJdGVyYXRvciwgZGF0YSkKLSAgICAgICAgICAgIGlmIChmb3VuZCA9ICFzdHJjbXAoc3Rh
dGljX2Nhc3Q8Y2hhcio+KGRhdGEpLCBpbWFnZUxvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpKQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoZm91bmQpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBjaGFyICppbWFnZUxvY2F0aW9uQ29weSA9IHN0cmR1cChpbWFnZUxv
Y2F0aW9uLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBpZiAoIWltYWdlTG9jYXRpb25Db3B5KQot
ICAgICAgICAgICAgZ290byBvdXRfb2ZfbWVtb3J5X2hhbmRsZXI7Ci0gICAgICAgIGxpc3RPZklt
YWdlc0xvY2F0aW9uID0gZWluYV9saXN0X2FwcGVuZChsaXN0T2ZJbWFnZXNMb2NhdGlvbiwgaW1h
Z2VMb2NhdGlvbkNvcHkpOwotICAgICAgICBpZiAoZWluYV9lcnJvcl9nZXQoKSkKLSAgICAgICAg
ICAgIGdvdG8gb3V0X29mX21lbW9yeV9oYW5kbGVyOworCVdlYkNvcmU6OkhUTUxJbWFnZUVsZW1l
bnQqIGltYWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQq
PihpbWFnZXMtPml0ZW0oaW5kZXgpKTsKKwlpZiAoIWltYWdlRWxlbWVudCB8fCBpbWFnZUVsZW1l
bnQtPnNyYygpLmlzTnVsbCgpIHx8IGltYWdlRWxlbWVudC0+c3JjKCkuaXNFbXB0eSgpKQorCSAg
ICBjb250aW51ZTsKKworCVdURjo6U3RyaW5nIGltYWdlTG9jYXRpb24gPSBpbWFnZUVsZW1lbnQt
PnNyYygpLnN0cmluZygpOworCS8vIExvb2sgZm9yIGR1cGxpY2F0ZWQgbG9jYXRpb24uCisJRWlu
YV9MaXN0KiBsaXN0SXRlcmF0b3IgPSAwOworCXZvaWQqIGRhdGEgPSAwOworCUVpbmFfQm9vbCBm
b3VuZCA9IEVJTkFfRkFMU0U7CisJRUlOQV9MSVNUX0ZPUkVBQ0gobGlzdE9mSW1hZ2VzTG9jYXRp
b24sIGxpc3RJdGVyYXRvciwgZGF0YSkKKwkgICAgaWYgKGZvdW5kID0gIXN0cmNtcChzdGF0aWNf
Y2FzdDxjaGFyKj4oZGF0YSksIGltYWdlTG9jYXRpb24udXRmOCgpLmRhdGEoKSkpCisJCWJyZWFr
OworCWlmIChmb3VuZCkKKwkgICAgY29udGludWU7CisKKwljaGFyKiBpbWFnZUxvY2F0aW9uQ29w
eSA9IHN0cmR1cChpbWFnZUxvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpOworCWlmICghaW1hZ2VMb2Nh
dGlvbkNvcHkpCisJICAgIGdvdG8gb3V0X29mX21lbW9yeV9oYW5kbGVyOworCWxpc3RPZkltYWdl
c0xvY2F0aW9uID0gZWluYV9saXN0X2FwcGVuZChsaXN0T2ZJbWFnZXNMb2NhdGlvbiwgaW1hZ2VM
b2NhdGlvbkNvcHkpOworCWlmIChlaW5hX2Vycm9yX2dldCgpKQorCSAgICBnb3RvIG91dF9vZl9t
ZW1vcnlfaGFuZGxlcjsKICAgICB9CiAgICAgLy8gRklYTUU6IEdldCBVUkwgb3RoZXJzIHJlc291
cmNlcyAocGx1Z2lucywgY3NzLCBtZWRpYSBmaWxlcykuCiAgICAgcmV0dXJuIGxpc3RPZkltYWdl
c0xvY2F0aW9uOwogCiBvdXRfb2ZfbWVtb3J5X2hhbmRsZXI6CiAgICAgQ1JJVElDQUwoIkNvdWxk
IG5vdCBhbGxvY2F0ZSBtZW1vcnkuIik7Ci0gICAgdm9pZCAqZGF0YTsKKyAgICB2b2lkKiBkYXRh
OwogICAgIEVJTkFfTElTVF9GUkVFKGxpc3RPZkltYWdlc0xvY2F0aW9uLCBkYXRhKQotICAgICAg
ICBmcmVlKGRhdGEpOworCWZyZWUoZGF0YSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE1OTMs
NyArMTU5Myw3IEBAIG91dF9vZl9tZW1vcnlfaGFuZGxlcjoKICAqCiAgKiBFbWl0cyBzaWduYWw6
ICJ1cmksY2hhbmdlZCIgd2l0aCBuZXcgdXJpIGFzIHBhcmFtZXRlci4KICAqLwotRWluYV9Cb29s
IGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJh
bWVfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtMTYwMSw4ICsxNjAxLDggQEAgRWlu
YV9Cb29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCAqbykKIAogICAgIElORigi
dXJpPSVzIiwgdXJpLmRhdGEoKSk7CiAgICAgaWYgKCF1cmkuZGF0YSgpKSB7Ci0gICAgICAgIEVS
Uigibm8gdXJpIik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCUVSUigibm8gdXJpIik7
CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBs
YWNlKCZzZC0+dXJpLCB1cmkuZGF0YSgpKTsKQEAgLTE2MTUsMTQgKzE2MTUsMTQgQEAgRWluYV9C
b29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCAqbykKICAqCiAgKiBGb3JjZXMg
bGF5b3V0IGZvciBmcmFtZS4KICAqLwotdm9pZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNf
T2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNfT2JqZWN0KiBvKQog
ewogICAgIERCRygibz0lcCIsIG8pOwogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+ZnJhbWUpOwogICAgIFdl
YkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNkLT5mcmFtZS0+dmlldygpOwogICAgIGlmICh2aWV3
KQotICAgICAgICB2aWV3LT5mb3JjZUxheW91dCh0cnVlKTsKKwl2aWV3LT5mb3JjZUxheW91dCh0
cnVlKTsKIH0KIAogLyoqCkBAIC0xNjMwLDcgKzE2MzAsNyBAQCB2b2lkIGV3a19mcmFtZV9mb3Jj
ZV9sYXlvdXQoRXZhc19PYmplY3QgKm8pCiAgKgogICogQ3JlYXRlcyBwbHVnaW4uCiAgKi8KLVdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2
YXNfT2JqZWN0ICpvLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplICZwbHVnaW5TaXplLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCAqZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiAmcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nICZtaW1lVHlw
ZSwgYm9vbCBsb2FkTWFudWFsbHkpCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBl
d2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSAmcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZw
YXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtVmFsdWVzLCBj
b25zdCBXVEY6OlN0cmluZyAmbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIHJl
dHVybiAwOwogfQpAQCAtMTY0Myw3ICsxNjQzLDcgQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OldpZGdldD4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QgKm8sIGNvbnN0IFcK
ICAqCiAgKiBFbWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnRzZWxlY3Rpb24sY2hhbmdlZCIgd2l0
aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVj
dGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVu
dF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG8sICJlZGl0b3JjbGllbnQsc2VsZWN0aW9uLGNoYW5nZWQiLCAw
KTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0xNjU4LDcgKzE2
NTgsNyBAQCB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2
YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImVkaXRvcmNsaWVudCxjb250ZW50
cyxjaGFuZ2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2VkaXRv
cl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1l
X2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJlZGl0b3JjbGllbnQsY29udGVudHMs
Y2hhbmdlZCIsIDApOwogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCmluZGV4IDkxYzdjNWMuLjRiODgxOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcApAQCAtMzQsNTkgKzM0LDU5IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBzdHJ1Y3QgX0V3a19IaXN0b3J5IHsKLSAg
ICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsICpjb3JlOworICAgIFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdEltcGwqIGNvcmU7CiB9OwogCiAjZGVmaW5lIEVXS19ISVNUT1JZX0NPUkVfR0VU
X09SX1JFVFVSTihoaXN0b3J5LCBjb3JlXywgLi4uKSAgICAgIFwKICAgICBpZiAoIShoaXN0b3J5
KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBDUklUSUNBTCgiaGlzdG9yeSBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKwlDUklUSUNBTCgiaGlzdG9yeSBpcyBOVUxMLiIpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisJcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKCEoaGlzdG9yeSktPmNv
cmUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ1JJ
VElDQUwoImhpc3RvcnktPmNvcmUgaXMgTlVMTC4iKTsgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisJQ1JJVElDQUwoImhpc3RvcnktPmNvcmUgaXMgTlVMTC4iKTsgICAgICAgICAg
ICAgICAgICAgICAgXAorCXJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmICghKGhpc3RvcnkpLT5jb3JlLT5l
bmFibGVkKCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEVSUigiaGlz
dG9yeS0+Y29yZSBpcyBkaXNhYmxlZCEuIik7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorCUVSUigiaGlzdG9yeS0+Y29yZSBpcyBkaXNhYmxlZCEuIik7ICAgICAgICAgICAgICAg
ICAgICAgIFwKKwlyZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBs
ICpjb3JlXyA9IChoaXN0b3J5KS0+Y29yZQorICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdElt
cGwqIGNvcmVfID0gKGhpc3RvcnkpLT5jb3JlCiAKIAogc3RydWN0IF9Fd2tfSGlzdG9yeV9JdGVt
IHsKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSAqY29yZTsKKyAgICBXZWJDb3JlOjpIaXN0b3J5
SXRlbSogY29yZTsKIAotICAgIGNvbnN0IGNoYXIgKnRpdGxlOwotICAgIGNvbnN0IGNoYXIgKmFs
dGVybmF0ZV90aXRsZTsKLSAgICBjb25zdCBjaGFyICp1cmk7Ci0gICAgY29uc3QgY2hhciAqb3Jp
Z2luYWxfdXJpOworICAgIGNvbnN0IGNoYXIqIHRpdGxlOworICAgIGNvbnN0IGNoYXIqIGFsdGVy
bmF0ZV90aXRsZTsKKyAgICBjb25zdCBjaGFyKiB1cmk7CisgICAgY29uc3QgY2hhciogb3JpZ2lu
YWxfdXJpOwogfTsKIAogI2RlZmluZSBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVS
TihpdGVtLCBjb3JlXywgLi4uKSBcCiAgICAgaWYgKCEoaXRlbSkpIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ1JJVElDQUwoIml0ZW0gaXMg
TlVMTC4iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gX19W
QV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJQ1JJVElDQUwo
Iml0ZW0gaXMgTlVMTC4iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCXJldHVybiBf
X1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIGlmICghKGl0ZW0pLT5jb3JlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIENSSVRJQ0FMKCJpdGVtLT5jb3JlIGlzIE5VTEwuIik7ICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorCUNSSVRJQ0FMKCJpdGVtLT5jb3JlIGlzIE5VTEwuIik7
ICAgICAgICAgICAgICAgICAgICAgIFwKKwlyZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRl
bSAqY29yZV8gPSAoaXRlbSktPmNvcmUKKyAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogY29yZV8g
PSAoaXRlbSktPmNvcmUKIAogCi1zdGF0aWMgaW5saW5lIEV3a19IaXN0b3J5X0l0ZW0gKl9ld2tf
aGlzdG9yeV9pdGVtX25ldyhXZWJDb3JlOjpIaXN0b3J5SXRlbSAqY29yZSkKK3N0YXRpYyBpbmxp
bmUgRXdrX0hpc3RvcnlfSXRlbSogX2V3a19oaXN0b3J5X2l0ZW1fbmV3KFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKiBjb3JlKQogewogICAgIEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW07CiAKICAgICBpZiAo
IWNvcmUpIHsKLSAgICAgICAgRVJSKCJXZWJDb3JlOjpIaXN0b3J5SXRlbSBpcyBOVUxMLiIpOwot
ICAgICAgICByZXR1cm4gMDsKKwlFUlIoIldlYkNvcmU6Okhpc3RvcnlJdGVtIGlzIE5VTEwuIik7
CisJcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaXRlbSA9IChFd2tfSGlzdG9yeV9JdGVtICopY2Fs
bG9jKDEsIHNpemVvZihFd2tfSGlzdG9yeV9JdGVtKSk7CisgICAgaXRlbSA9IChFd2tfSGlzdG9y
eV9JdGVtKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXN0b3J5X0l0ZW0pKTsKICAgICBpZiAoIWl0
ZW0pIHsKLSAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBpdGVtIG1lbW9yeS4i
KTsKLSAgICAgICAgcmV0dXJuIDA7CisJQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBpdGVt
IG1lbW9yeS4iKTsKKwlyZXR1cm4gMDsKICAgICB9CiAKICAgICBjb3JlLT5yZWYoKTsKQEAgLTk1
LDE2ICs5NSwxNiBAQCBzdGF0aWMgaW5saW5lIEV3a19IaXN0b3J5X0l0ZW0gKl9ld2tfaGlzdG9y
eV9pdGVtX25ldyhXZWJDb3JlOjpIaXN0b3J5SXRlbSAqY29yZQogICAgIHJldHVybiBpdGVtOwog
fQogCi1zdGF0aWMgaW5saW5lIEVpbmFfTGlzdCAqX2V3a19oaXN0b3J5X2l0ZW1fbGlzdF9nZXQo
Y29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3IgJmNvcmVfaXRlbXMpCitzdGF0aWMgaW5s
aW5lIEVpbmFfTGlzdCogX2V3a19oaXN0b3J5X2l0ZW1fbGlzdF9nZXQoY29uc3QgV2ViQ29yZTo6
SGlzdG9yeUl0ZW1WZWN0b3IgJmNvcmVfaXRlbXMpCiB7CiAgICAgRWluYV9MaXN0KiByZXQgPSAw
OwogICAgIHVuc2lnbmVkIGludCBpLCBzaXplOwogCiAgICAgc2l6ZSA9IGNvcmVfaXRlbXMuc2l6
ZSgpOwogICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgRXdrX0hpc3Rv
cnlfSXRlbSogaXRlbSA9IF9ld2tfaGlzdG9yeV9pdGVtX25ldyhjb3JlX2l0ZW1zW2ldLmdldCgp
KTsKLSAgICAgICAgaWYgKGl0ZW0pCi0gICAgICAgICAgICByZXQgPSBlaW5hX2xpc3RfYXBwZW5k
KHJldCwgaXRlbSk7CisJRXdrX0hpc3RvcnlfSXRlbSogaXRlbSA9IF9ld2tfaGlzdG9yeV9pdGVt
X25ldyhjb3JlX2l0ZW1zW2ldLmdldCgpKTsKKwlpZiAoaXRlbSkKKwkgICAgcmV0ID0gZWluYV9s
aXN0X2FwcGVuZChyZXQsIGl0ZW0pOwogICAgIH0KIAogICAgIHJldHVybiByZXQ7CkBAIC0xMTQs
NyArMTE0LDcgQEAgRWluYV9Cb29sIGV3a19oaXN0b3J5X2ZvcndhcmQoRXdrX0hpc3RvcnkqIGhp
c3RvcnkpCiB7CiAgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNv
cmUsIEVJTkFfRkFMU0UpOwogICAgIGlmIChjb3JlLT5mb3J3YXJkTGlzdENvdW50KCkgPCAxKQot
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKICAgICBjb3Jl
LT5nb0ZvcndhcmQoKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQpAQCAtMTIzLDcgKzEyMyw3
IEBAIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9iYWNrKEV3a19IaXN0b3J5KiBoaXN0b3J5KQogewog
ICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3JlLCBFSU5BX0ZB
TFNFKTsKICAgICBpZiAoY29yZS0+YmFja0xpc3RDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgY29yZS0+Z29CYWNrKCk7CiAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KQEAgLTE1Myw5ICsxNTMsOSBAQCBFd2tfSGlzdG9yeV9J
dGVtKiBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fYmFja19nZXQoY29uc3QgRXdrX0hpc3Rvcnkq
IGhpc3RvcnkpCiBFd2tfSGlzdG9yeV9JdGVtKiBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fY3Vy
cmVudF9nZXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnkpCiB7CiAgICAgRVdLX0hJU1RPUllf
Q09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIDApOwotICAgIFdlYkNvcmU6Okhpc3Rv
cnlJdGVtICpjdXJyZW50SXRlbSA9IGNvcmUtPmN1cnJlbnRJdGVtKCk7CisgICAgV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtID0gY29yZS0+Y3VycmVudEl0ZW0oKTsKICAgICBpZiAo
Y3VycmVudEl0ZW0pCi0gICAgICAgIHJldHVybiBfZXdrX2hpc3RvcnlfaXRlbV9uZXcoY3VycmVu
dEl0ZW0pOworCXJldHVybiBfZXdrX2hpc3RvcnlfaXRlbV9uZXcoY3VycmVudEl0ZW0pOwogICAg
IHJldHVybiAwOwogfQogCkBAIC0yNjIsOCArMjYyLDggQEAgdm9pZCBld2tfaGlzdG9yeV9pdGVt
X2xpc3RfZnJlZShFaW5hX0xpc3QqIGhpc3RvcnlfaXRlbXMpCiB7CiAgICAgdm9pZCogZDsKICAg
ICBFSU5BX0xJU1RfRlJFRShoaXN0b3J5X2l0ZW1zLCBkKSB7Ci0gICAgICAgIEV3a19IaXN0b3J5
X0l0ZW0qIGl0ZW0gPSAoRXdrX0hpc3RvcnlfSXRlbSopZDsKLSAgICAgICAgX2V3a19oaXN0b3J5
X2l0ZW1fZnJlZShpdGVtLCBpdGVtLT5jb3JlKTsKKwlFd2tfSGlzdG9yeV9JdGVtKiBpdGVtID0g
KEV3a19IaXN0b3J5X0l0ZW0qKWQ7CisJX2V3a19oaXN0b3J5X2l0ZW1fZnJlZShpdGVtLCBpdGVt
LT5jb3JlKTsKICAgICB9CiB9CiAKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIGV3a19oaXN0b3J5
X2l0ZW1fdGl0bGVfYWx0ZXJuYXRlX3NldChFd2tfSGlzdG9yeV9JdGVtKiBpdGVtLCBjb25zdCBj
aGFyKiB0aQogewogICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0s
IGNvcmUpOwogICAgIGlmICghZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpdGVtLT5hbHRlcm5h
dGVfdGl0bGUsIHRpdGxlKSkKLSAgICAgICAgcmV0dXJuOworCXJldHVybjsKICAgICBjb3JlLT5z
ZXRBbHRlcm5hdGVUaXRsZShXVEY6OlN0cmluZzo6ZnJvbVVURjgodGl0bGUpKTsKIH0KIApAQCAt
MzIyLDExICszMjIsMTEgQEAgZG91YmxlIGV3a19oaXN0b3J5X2l0ZW1fdGltZV9sYXN0X3Zpc2l0
ZWRfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiBjYWlyb19zdXJmYWNlX3QqIGV3
a19oaXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBp
dGVtKQogewogICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNv
cmUsIDApOwotICAgIAorCiAgICAgV2ViQ29yZTo6SW1hZ2UqIGljb24gPSBXZWJDb3JlOjppY29u
RGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvcmUtPnVybCgpLCBXZWJDb3Jl
OjpJbnRTaXplKDE2LCAxNikpOwogICAgIGlmICghaWNvbikgewotICAgICAgICBFUlIoImljb24g
aXMgTlVMTC4iKTsKLSAgICAgICAgcmV0dXJuIDA7CisJRVJSKCJpY29uIGlzIE5VTEwuIik7CisJ
cmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwogfQpAQCAtMzM5LDggKzMzOSw4IEBAIEV2YXNfT2JqZWN0KiBld2tfaGlzdG9yeV9p
dGVtX2ljb25fb2JqZWN0X2FkZChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtLCBFdmFzCiAg
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlOwogCiAgICAgaWYgKCFpY29uKSB7Ci0gICAgICAg
IEVSUigiaWNvbiBpcyBOVUxMLiIpOwotICAgICAgICByZXR1cm4gMDsKKwlFUlIoImljb24gaXMg
TlVMTC4iKTsKKwlyZXR1cm4gMDsKICAgICB9CiAKICAgICBzdXJmYWNlID0gaWNvbi0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTM4NSw4ICszODUsOCBAQCBFd2tfSGlzdG9yeSog
ZXdrX2hpc3RvcnlfbmV3KFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqIGNvcmUpCiAKICAg
ICBoaXN0b3J5ID0gKEV3a19IaXN0b3J5KiltYWxsb2Moc2l6ZW9mKEV3a19IaXN0b3J5KSk7CiAg
ICAgaWYgKCFoaXN0b3J5KSB7Ci0gICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUg
aGlzdG9yeSBtZW1vcnkuIik7Ci0gICAgICAgIHJldHVybiAwOworCUNSSVRJQ0FMKCJDb3VsZCBu
b3QgYWxsb2NhdGUgaGlzdG9yeSBtZW1vcnkuIik7CisJcmV0dXJuIDA7CiAgICAgfQogCiAgICAg
Y29yZS0+cmVmKCk7CkBAIC00NTAsMTEgKzQ1MCwxMSBAQCBFaW5hX0xpc3QqIGV3a19oaXN0b3J5
X2l0ZW1fY2hpbGRyZW5fZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiAgICAgRVdL
X0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgY29u
c3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3ImIGNoaWxkcmVuID0gY29yZS0+Y2hpbGRyZW4o
KTsKICAgICBpZiAoIWNoaWxkcmVuLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisJcmV0dXJu
IDA7CiAKICAgICBFaW5hX0xpc3QqIGtpZHMgPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNpemUg
PSBjaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAga2lkcyA9IGVpbmFfbGlzdF9hcHBlbmQoa2lkcywgX2V3a19oaXN0b3J5X2l0
ZW1fbmV3KGNoaWxkcmVuW2ldLmdldCgpKSk7CisJa2lkcyA9IGVpbmFfbGlzdF9hcHBlbmQoa2lk
cywgX2V3a19oaXN0b3J5X2l0ZW1fbmV3KGNoaWxkcmVuW2ldLmdldCgpKSk7CiAgICAgcmV0dXJu
IGtpZHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanMuY3BwCmluZGV4IDYyYjNhYTQuLjYyMzcyZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfanMuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAKICNkZWZpbmUg
RUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4obywgLi4uKSBcCiAgICAgaWYgKCFFSU5BX01BR0lD
X0NIRUNLKG9iaiwgRVdLX0pTX09CSkVDVF9NQUdJQykpIHsgXAotICAgICAgIEVJTkFfTUFHSUNf
RkFJTChvYmosIEVXS19KU19PQkpFQ1RfTUFHSUMpOyBcCi0gICAgICAgcmV0dXJuIF9fVkFfQVJH
U19fOyBcCisJRUlOQV9NQUdJQ19GQUlMKG9iaiwgRVdLX0pTX09CSkVDVF9NQUdJQyk7IFwKKwly
ZXR1cm4gX19WQV9BUkdTX187IFwKICAgICB9CiAKIHN0cnVjdCBfRXdrX0pTX0NsYXNzIHsKQEAg
LTUxLDMyICs1MSwzMiBAQCBzdGF0aWMgRWluYV9Cb29sIGV3a19qc192YXJpYW50X3RvX25wdmFy
aWFudChjb25zdCBFd2tfSlNfVmFyaWFudCogZGF0YSwgTlBWYXJpYQogCiAgICAgc3dpdGNoIChk
YXRhLT50eXBlKSB7CiAgICAgY2FzZSBFV0tfSlNfVkFSSUFOVF9WT0lEOgotICAgICAgICBWT0lE
X1RPX05QVkFSSUFOVCgqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7CisJVk9JRF9UT19OUFZBUklB
TlQoKnJlc3VsdCk7CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfSlNfVkFSSUFOVF9OVUxMOgotICAg
ICAgICBOVUxMX1RPX05QVkFSSUFOVCgqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7CisJTlVMTF9U
T19OUFZBUklBTlQoKnJlc3VsdCk7CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfSlNfVkFSSUFOVF9J
TlQzMjoKLSAgICAgICAgSU5UMzJfVE9fTlBWQVJJQU5UKGRhdGEtPnZhbHVlLmksICpyZXN1bHQp
OwotICAgICAgICBicmVhazsKKwlJTlQzMl9UT19OUFZBUklBTlQoZGF0YS0+dmFsdWUuaSwgKnJl
c3VsdCk7CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfSlNfVkFSSUFOVF9ET1VCTEU6Ci0gICAgICAg
IERPVUJMRV9UT19OUFZBUklBTlQoZGF0YS0+dmFsdWUuZCwgKnJlc3VsdCk7Ci0gICAgICAgIGJy
ZWFrOworCURPVUJMRV9UT19OUFZBUklBTlQoZGF0YS0+dmFsdWUuZCwgKnJlc3VsdCk7CisJYnJl
YWs7CiAgICAgY2FzZSBFV0tfSlNfVkFSSUFOVF9TVFJJTkc6Ci0gICAgICAgIHN0cmluZ192YWx1
ZSA9IHN0cmR1cChkYXRhLT52YWx1ZS5zKTsKLSAgICAgICAgaWYgKHN0cmluZ192YWx1ZSkKLSAg
ICAgICAgICAgIFNUUklOR1pfVE9fTlBWQVJJQU5UKHN0cmluZ192YWx1ZSwgKnJlc3VsdCk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwotICAgICAgICBicmVh
azsKKwlzdHJpbmdfdmFsdWUgPSBzdHJkdXAoZGF0YS0+dmFsdWUucyk7CisJaWYgKHN0cmluZ192
YWx1ZSkKKwkgICAgU1RSSU5HWl9UT19OUFZBUklBTlQoc3RyaW5nX3ZhbHVlLCAqcmVzdWx0KTsK
KwllbHNlCisJICAgIHJldHVybiBFSU5BX0ZBTFNFOworCWJyZWFrOwogICAgIGNhc2UgRVdLX0pT
X1ZBUklBTlRfQk9PTDoKLSAgICAgICAgQk9PTEVBTl9UT19OUFZBUklBTlQoZGF0YS0+dmFsdWUu
YiwgKnJlc3VsdCk7Ci0gICAgICAgIGJyZWFrOworCUJPT0xFQU5fVE9fTlBWQVJJQU5UKGRhdGEt
PnZhbHVlLmIsICpyZXN1bHQpOworCWJyZWFrOwogICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfT0JK
RUNUOgotICAgICAgICBPQkpFQ1RfVE9fTlBWQVJJQU5UKHJlaW50ZXJwcmV0X2Nhc3Q8TlBPYmpl
Y3QqPihkYXRhLT52YWx1ZS5vKSwgKnJlc3VsdCk7Ci0gICAgICAgIGJyZWFrOworCU9CSkVDVF9U
T19OUFZBUklBTlQocmVpbnRlcnByZXRfY2FzdDxOUE9iamVjdCo+KGRhdGEtPnZhbHVlLm8pLCAq
cmVzdWx0KTsKKwlicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKICAgICByZXR1cm4gRUlOQV9UUlVFOwpA
QCAtOTEsOCArOTEsOCBAQCBzdGF0aWMgYm9vbCBld2tfanNfcHJvcGVydHlfaGFzKE5QT2JqZWN0
KiBucF9vYmosIE5QSWRlbnRpZmllciBuYW1lKQogICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVU
VVJOKG9iaiwgZmFsc2UpOwogCiAgICAgaWYgKCFfTlBOX0lkZW50aWZpZXJJc1N0cmluZyhuYW1l
KSkgewotICAgICAgICBFUlIoImludCBOUElkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC4iKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworCUVSUigiaW50IE5QSWRlbnRpZmllciBpcyBub3Qgc3Vw
cG9ydGVkLiIpOworCXJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjaGFyKiBwcm9wX25hbWUg
PSBfTlBOX1VURjhGcm9tSWRlbnRpZmllcihuYW1lKTsKQEAgLTExMywzMiArMTEzLDMyIEBAIHN0
YXRpYyBib29sIGV3a19qc19wcm9wZXJ0eV9nZXQoTlBPYmplY3QqIG5wX29iaiwgTlBJZGVudGlm
aWVyIG5hbWUsIE5QVmFyaWFudCoKICAgICBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihvYmos
IGZhbHNlKTsKIAogICAgIGlmICghX05QTl9JZGVudGlmaWVySXNTdHJpbmcobmFtZSkpIHsKLSAg
ICAgICAgRVJSKCJpbnQgTlBJZGVudGlmaWVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKwlFUlIoImludCBOUElkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC4i
KTsKKwlyZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxFd2tf
SlNfVmFyaWFudCo+KG1hbGxvYyhzaXplb2YoRXdrX0pTX1ZhcmlhbnQpKSk7CiAgICAgaWYgKCF2
YWx1ZSkgewotICAgICAgICBFUlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19q
c192YXJpYW50Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKwlFUlIoIkNvdWxkIG5vdCBhbGxv
Y2F0ZSBtZW1vcnkgZm9yIGV3a19qc192YXJpYW50Iik7CisJcmV0dXJuIGZhbHNlOwogICAgIH0K
IAogICAgIHByb3AgPSBzdGF0aWNfY2FzdDxFd2tfSlNfUHJvcGVydHkqPihlaW5hX2hhc2hfZmlu
ZChvYmotPmNscy0+cHJvcGVydGllcywgbmFtZSkpOwogICAgIGlmIChwcm9wICYmIHByb3AtPmdl
dCkgeyAvLyBDbGFzcyBoYXMgcHJvcGVydHkgYW5kIHByb3BlcnR5IGhhcyBnZXR0ZXIuCi0gICAg
ICAgIGZhaWwgPSBwcm9wLT5nZXQob2JqLCBwcm9wLT5uYW1lLCB2YWx1ZSk7Ci0gICAgICAgIGlm
ICghZmFpbCkKLSAgICAgICAgICAgIGZhaWwgPSBld2tfanNfdmFyaWFudF90b19ucHZhcmlhbnQo
dmFsdWUsIHJlc3VsdCk7CisJZmFpbCA9IHByb3AtPmdldChvYmosIHByb3AtPm5hbWUsIHZhbHVl
KTsKKwlpZiAoIWZhaWwpCisJICAgIGZhaWwgPSBld2tfanNfdmFyaWFudF90b19ucHZhcmlhbnQo
dmFsdWUsIHJlc3VsdCk7CiAgICAgfSBlbHNlIGlmIChvYmotPmNscy0+ZGVmYXVsdF9wcm9wLmdl
dCkgeyAvLyBEZWZhdWx0IGdldHRlciBleGlzdHMuCi0gICAgICAgIGZhaWwgPSBvYmotPmNscy0+
ZGVmYXVsdF9wcm9wLmdldChvYmosIHByb3AtPm5hbWUsIHZhbHVlKTsKLSAgICAgICAgaWYgKCFm
YWlsKQotICAgICAgICAgICAgZmFpbCA9IGV3a19qc192YXJpYW50X3RvX25wdmFyaWFudCh2YWx1
ZSwgcmVzdWx0KTsKKwlmYWlsID0gb2JqLT5jbHMtPmRlZmF1bHRfcHJvcC5nZXQob2JqLCBwcm9w
LT5uYW1lLCB2YWx1ZSk7CisJaWYgKCFmYWlsKQorCSAgICBmYWlsID0gZXdrX2pzX3ZhcmlhbnRf
dG9fbnB2YXJpYW50KHZhbHVlLCByZXN1bHQpOwogICAgIH0gZWxzZSB7IC8vIEZhbGxiYWNrIHRv
IG9iamVjdHMgaGFzaCBtYXAuCi0gICAgICAgIGNoYXIqIHByb3BfbmFtZSA9IF9OUE5fVVRGOEZy
b21JZGVudGlmaWVyKG5hbWUpOwotICAgICAgICBmcmVlKHZhbHVlKTsKLSAgICAgICAgdmFsdWUg
PSBzdGF0aWNfY2FzdDxFd2tfSlNfVmFyaWFudCo+KGVpbmFfaGFzaF9maW5kKG9iai0+cHJvcGVy
dGllcywgcHJvcF9uYW1lKSk7Ci0gICAgICAgIGZyZWUocHJvcF9uYW1lKTsKLSAgICAgICAgaWYg
KHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGV3a19qc192YXJpYW50X3RvX25wdmFyaWFudCh2
YWx1ZSwgcmVzdWx0KTsKKwljaGFyKiBwcm9wX25hbWUgPSBfTlBOX1VURjhGcm9tSWRlbnRpZmll
cihuYW1lKTsKKwlmcmVlKHZhbHVlKTsKKwl2YWx1ZSA9IHN0YXRpY19jYXN0PEV3a19KU19WYXJp
YW50Kj4oZWluYV9oYXNoX2ZpbmQob2JqLT5wcm9wZXJ0aWVzLCBwcm9wX25hbWUpKTsKKwlmcmVl
KHByb3BfbmFtZSk7CisJaWYgKHZhbHVlKQorCSAgICByZXR1cm4gZXdrX2pzX3ZhcmlhbnRfdG9f
bnB2YXJpYW50KHZhbHVlLCByZXN1bHQpOwogICAgIH0KIAogICAgIGZyZWUodmFsdWUpOwpAQCAt
MTU2LDI3ICsxNTYsMjcgQEAgc3RhdGljIGJvb2wgZXdrX2pzX3Byb3BlcnR5X3NldChOUE9iamVj
dCogbnBfb2JqLCBOUElkZW50aWZpZXIgbmFtZSwgY29uc3QgTlBWYXIKICAgICBFSU5BX01BR0lD
X0NIRUNLX09SX1JFVFVSTihvYmosIGZhbHNlKTsKIAogICAgIGlmICghX05QTl9JZGVudGlmaWVy
SXNTdHJpbmcobmFtZSkpIHsKLSAgICAgICAgRVJSKCJpbnQgTlBJZGVudGlmaWVyIGlzIG5vdCBz
dXBwb3J0ZWQuIik7Ci0gICAgICAgIHJldHVybiBmYWlsOworCUVSUigiaW50IE5QSWRlbnRpZmll
ciBpcyBub3Qgc3VwcG9ydGVkLiIpOworCXJldHVybiBmYWlsOwogICAgIH0KIAogICAgIHZhbHVl
ID0gc3RhdGljX2Nhc3Q8RXdrX0pTX1ZhcmlhbnQqPihtYWxsb2Moc2l6ZW9mKEV3a19KU19WYXJp
YW50KSkpOwogICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2Nh
dGUgbWVtb3J5IGZvciBld2tfanNfdmFyaWFudCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisJ
RVJSKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBld2tfanNfdmFyaWFudCIpOworCXJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBld2tfanNfbnB2YXJpYW50X3RvX3ZhcmlhbnQodmFs
dWUsIG5wX3ZhbHVlKTsKICAgICBjaGFyKiBwcm9wX25hbWUgPSBfTlBOX1VURjhGcm9tSWRlbnRp
ZmllcihuYW1lKTsKICAgICBwcm9wID0gc3RhdGljX2Nhc3Q8RXdrX0pTX1Byb3BlcnR5Kj4oZWlu
YV9oYXNoX2ZpbmQob2JqLT5jbHMtPnByb3BlcnRpZXMsIHByb3BfbmFtZSkpOwogICAgIGlmIChw
cm9wICYmIHByb3AtPnNldCkKLSAgICAgICAgZmFpbCA9IHByb3AtPnNldChvYmosIHByb3AtPm5h
bWUsIHZhbHVlKTsgLy8gQ2xhc3MgaGFzIHByb3BlcnR5IGFuZCBwcm9wZXJ0eSBoYXMgc2V0dGVy
LgorCWZhaWwgPSBwcm9wLT5zZXQob2JqLCBwcm9wLT5uYW1lLCB2YWx1ZSk7IC8vIENsYXNzIGhh
cyBwcm9wZXJ0eSBhbmQgcHJvcGVydHkgaGFzIHNldHRlci4KICAgICBlbHNlIGlmIChvYmotPmNs
cy0+ZGVmYXVsdF9wcm9wLnNldCkKLSAgICAgICAgZmFpbCA9IG9iai0+Y2xzLT5kZWZhdWx0X3By
b3Auc2V0KG9iaiwgcHJvcF9uYW1lLCB2YWx1ZSk7IC8vIERlZmF1bHQgZ2V0dGVyIGV4aXN0cy4K
KwlmYWlsID0gb2JqLT5jbHMtPmRlZmF1bHRfcHJvcC5zZXQob2JqLCBwcm9wX25hbWUsIHZhbHVl
KTsgLy8gRGVmYXVsdCBnZXR0ZXIgZXhpc3RzLgogICAgIGVsc2UgeyAvLyBGYWxsYmFjayB0byBv
YmplY3RzIGhhc2ggbWFwLgotICAgICAgICB2b2lkKiBvbGQgPSBlaW5hX2hhc2hfc2V0KG9iai0+
cHJvcGVydGllcywgcHJvcF9uYW1lLCB2YWx1ZSk7Ci0gICAgICAgIGZyZWUob2xkKTsKLSAgICAg
ICAgZmFpbCA9IHRydWU7CisJdm9pZCogb2xkID0gZWluYV9oYXNoX3NldChvYmotPnByb3BlcnRp
ZXMsIHByb3BfbmFtZSwgdmFsdWUpOworCWZyZWUob2xkKTsKKwlmYWlsID0gdHJ1ZTsKICAgICB9
CiAKICAgICBmcmVlKHByb3BfbmFtZSk7CkBAIC0xOTMsMTggKzE5MywxOCBAQCBzdGF0aWMgYm9v
bCBld2tfanNfcHJvcGVydHlfcmVtb3ZlKE5QT2JqZWN0KiBucF9vYmosIE5QSWRlbnRpZmllciBu
YW1lKQogICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKG9iaiwgZmFsc2UpOwogCiAgICAg
aWYgKCFfTlBOX0lkZW50aWZpZXJJc1N0cmluZyhuYW1lKSkgewotICAgICAgICBFUlIoImludCBO
UElkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC4iKTsKLSAgICAgICAgcmV0dXJuIGZhaWw7CisJ
RVJSKCJpbnQgTlBJZGVudGlmaWVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7CisJcmV0dXJuIGZhaWw7
CiAgICAgfQogCiAgICAgY2hhciogcHJvcF9uYW1lID0gX05QTl9VVEY4RnJvbUlkZW50aWZpZXIo
bmFtZSk7CiAgICAgcHJvcCA9IHN0YXRpY19jYXN0PEV3a19KU19Qcm9wZXJ0eSo+KGVpbmFfaGFz
aF9maW5kKG9iai0+Y2xzLT5wcm9wZXJ0aWVzLCBwcm9wX25hbWUpKTsKICAgICBpZiAocHJvcCAm
JiBwcm9wLT5kZWwpCi0gICAgICAgIGZhaWwgPSBwcm9wLT5kZWwob2JqLCBwcm9wLT5uYW1lKTsg
Ly8gQ2xhc3MgaGFzIHByb3BlcnR5IGFuZCBwcm9wZXJ0eSBoYXMgZ2V0dGVyLgorCWZhaWwgPSBw
cm9wLT5kZWwob2JqLCBwcm9wLT5uYW1lKTsgLy8gQ2xhc3MgaGFzIHByb3BlcnR5IGFuZCBwcm9w
ZXJ0eSBoYXMgZ2V0dGVyLgogICAgIGVsc2UgaWYgKG9iai0+Y2xzLT5kZWZhdWx0X3Byb3AuZGVs
KQotICAgICAgICBmYWlsID0gb2JqLT5jbHMtPmRlZmF1bHRfcHJvcC5kZWwob2JqLCBwcm9wX25h
bWUpOworCWZhaWwgPSBvYmotPmNscy0+ZGVmYXVsdF9wcm9wLmRlbChvYmosIHByb3BfbmFtZSk7
CiAgICAgZWxzZQotICAgICAgICBmYWlsID0gZWluYV9oYXNoX2RlbChvYmotPnByb3BlcnRpZXMs
IHByb3BfbmFtZSwgMCk7CisJZmFpbCA9IGVpbmFfaGFzaF9kZWwob2JqLT5wcm9wZXJ0aWVzLCBw
cm9wX25hbWUsIDApOwogCiAgICAgZnJlZShwcm9wX25hbWUpOwogICAgIHJldHVybiBmYWlsOwpA
QCAtMjIzLDEzICsyMjMsMTMgQEAgc3RhdGljIGJvb2wgZXdrX2pzX3Byb3BlcnRpZXNfZW51bWVy
YXRlKE5QT2JqZWN0KiBucF9vYmosIE5QSWRlbnRpZmllcioqIHZhbHVlLAogICAgICpjb3VudCA9
IGVpbmFfaGFzaF9wb3B1bGF0aW9uKG9iai0+cHJvcGVydGllcyk7CiAgICAgKnZhbHVlID0gc3Rh
dGljX2Nhc3Q8TlBJZGVudGlmaWVyKj4obWFsbG9jKHNpemVvZihOUElkZW50aWZpZXIpICogKmNv
dW50KSk7CiAgICAgaWYgKCEqdmFsdWUpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2Nh
dGUgbWVtb3J5IGZvciBOUElkZW50aWZpZXIiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworCUVS
UigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgTlBJZGVudGlmaWVyIik7CisJcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIGl0ID0gZWluYV9oYXNoX2l0ZXJhdG9yX2tleV9uZXcob2Jq
LT5wcm9wZXJ0aWVzKTsKICAgICBFSU5BX0lURVJBVE9SX0ZPUkVBQ0goaXQsIGtleSkKLSAgICAg
ICAgKCp2YWx1ZSlbaSsrXSA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihrZXkpOworCSgqdmFs
dWUpW2krK10gPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoa2V5KTsKIAogICAgIGVpbmFfaXRl
cmF0b3JfZnJlZShpdCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNDMsOCArMjQzLDggQEAgc3Rh
dGljIGJvb2wgZXdrX2pzX21ldGhvZF9oYXMoTlBPYmplY3QqIG5wX29iaiwgTlBJZGVudGlmaWVy
IG5hbWUpCiAgICAgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4ob2JqLCBmYWxzZSk7CiAKICAg
ICBpZiAoIV9OUE5fSWRlbnRpZmllcklzU3RyaW5nKG5hbWUpKSB7Ci0gICAgICAgIEVSUigiaW50
IE5QSWRlbnRpZmllciBpcyBub3Qgc3VwcG9ydGVkLiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7
CisJRVJSKCJpbnQgTlBJZGVudGlmaWVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7CisJcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICByZXR1cm4gZWluYV9oYXNoX2ZpbmQob2JqLT5jbHMtPm1ldGhvZHMs
IG5hbWUpOyAvLyBSZXR1cm5zIHBvaW50ZXIgaWYgZm91bmQodHJ1ZSksIDAoZmFsc2UpIG90aGVy
d2lzZS4KIH0KQEAgLTI2MCwyMiArMjYwLDIyIEBAIHN0YXRpYyBib29sIGV3a19qc19tZXRob2Rf
aW52b2tlKE5QT2JqZWN0KiBucF9vYmosIE5QSWRlbnRpZmllciBuYW1lLCBjb25zdCBOUFZhCiAg
ICAgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4ob2JqLCBmYWxzZSk7CiAKICAgICBpZiAoIV9O
UE5fSWRlbnRpZmllcklzU3RyaW5nKG5hbWUpKSB7Ci0gICAgICAgIEVSUigiaW50IE5QSWRlbnRp
ZmllciBpcyBub3Qgc3VwcG9ydGVkLiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisJRVJSKCJp
bnQgTlBJZGVudGlmaWVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7CisJcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIG1ldGhvZCA9IHN0YXRpY19jYXN0PEV3a19KU19NZXRob2QqPihlaW5hX2hhc2hf
ZmluZChvYmotPmNscy0+bWV0aG9kcywgbmFtZSkpOwogICAgIGlmICghbWV0aG9kKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisJcmV0dXJuIGZhbHNlOwogCiAgICAgYXJncyA9IHN0YXRpY19jYXN0
PEV3a19KU19WYXJpYW50Kj4obWFsbG9jKHNpemVvZihFd2tfSlNfVmFyaWFudCkgICpucF9hcmdf
Y291bnQpKTsKICAgICBpZiAoIWFyZ3MpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2Nh
dGUgbWVtb3J5IGZvciBld2tfanNfdmFyaWFudCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisJ
RVJSKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBld2tfanNfdmFyaWFudCIpOworCXJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbnBfYXJn
X2NvdW50OyBpKyspCi0gICAgICAgIGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudCgmYXJnc1tp
XSwgJm5wX2FyZ3NbaV0pOworCWV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudCgmYXJnc1tpXSwg
Jm5wX2FyZ3NbaV0pOwogICAgIHJldF92YWwgPSBtZXRob2QtPmludm9rZShvYmosIGFyZ3MsIG5w
X2FyZ19jb3VudCk7CiAgICAgZXdrX2pzX3ZhcmlhbnRfdG9fbnB2YXJpYW50KHJldF92YWwsIHJl
c3VsdCk7CiAKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgRWluYV9Cb29sIGV3a19qc19ucG9i
amVjdF9wcm9wZXJ0eV9nZXQoRXdrX0pTX09iamVjdCogb2JqLCBjb25zdCBjaGFyKiBuYQogICAg
IE5QVmFyaWFudCB2YXI7CiAgICAgYm9vbCBmYWlsID0gX05QTl9HZXRQcm9wZXJ0eSgwLCByZWlu
dGVycHJldF9jYXN0PE5QT2JqZWN0Kj4ob2JqKSwgaWQsICZ2YXIpOwogICAgIGlmICghZmFpbCkK
LSAgICAgICAgZmFpbCA9IGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudCh2YWx1ZSwgJnZhcik7
CisJZmFpbCA9IGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudCh2YWx1ZSwgJnZhcik7CiAgICAg
cmV0dXJuIGZhaWw7CiB9CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgRWluYV9Cb29sIGV3
a19qc19ucG9iamVjdF9wcm9wZXJ0eV9zZXQoRXdrX0pTX09iamVjdCogb2JqLCBjb25zdCBjaGFy
KiBuYQogICAgIE5QVmFyaWFudCB2YXI7CiAgICAgYm9vbCBmYWlsID0gZXdrX2pzX3ZhcmlhbnRf
dG9fbnB2YXJpYW50KHZhbHVlLCAmdmFyKTsKICAgICBpZiAoZmFpbCkKLSAgICAgICAgZmFpbCA9
IF9OUE5fU2V0UHJvcGVydHkoMCwgcmVpbnRlcnByZXRfY2FzdDxOUE9iamVjdCo+KG9iaiksIGlk
LCAmdmFyKTsKKwlmYWlsID0gX05QTl9TZXRQcm9wZXJ0eSgwLCByZWludGVycHJldF9jYXN0PE5Q
T2JqZWN0Kj4ob2JqKSwgaWQsICZ2YXIpOwogICAgIHJldHVybiBmYWlsOwogfQogCkBAIC0zMTQs
OSArMzE0LDkgQEAgc3RhdGljIHZvaWQgZXdrX2pzX3Byb3BlcnR5X2ZyZWUoRXdrX0pTX1Byb3Bl
cnR5KiBwcm9wKQogewogICAgIGZyZWUoY29uc3RfY2FzdDxjaGFyKj4ocHJvcC0+bmFtZSkpOwog
ICAgIGlmIChwcm9wLT52YWx1ZS50eXBlID09IEVXS19KU19WQVJJQU5UX1NUUklORykKLSAgICAg
ICAgZnJlZShwcm9wLT52YWx1ZS52YWx1ZS5zKTsKKwlmcmVlKHByb3AtPnZhbHVlLnZhbHVlLnMp
OwogICAgIGVsc2UgaWYgKHByb3AtPnZhbHVlLnR5cGUgPT0gRVdLX0pTX1ZBUklBTlRfT0JKRUNU
KQotICAgICAgICBld2tfanNfb2JqZWN0X2ZyZWUocHJvcC0+dmFsdWUudmFsdWUubyk7CisJZXdr
X2pzX29iamVjdF9mcmVlKHByb3AtPnZhbHVlLnZhbHVlLm8pOwogICAgIGZyZWUocHJvcCk7CiB9
CiAKQEAgLTMzNSw4ICszMzUsOCBAQCBFd2tfSlNfQ2xhc3MqIGV3a19qc19jbGFzc19uZXcoY29u
c3QgRXdrX0pTX0NsYXNzX01ldGEqIG1ldGEpCiAKICAgICBjbHMgPSBzdGF0aWNfY2FzdDxFd2tf
SlNfQ2xhc3MqPihtYWxsb2Moc2l6ZW9mKEV3a19KU19DbGFzcykpKTsKICAgICBpZiAoIWNscykg
ewotICAgICAgICBFUlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc19jbGFz
cyIpOwotICAgICAgICByZXR1cm4gMDsKKwlFUlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkg
Zm9yIGV3a19qc19jbGFzcyIpOworCXJldHVybiAwOwogICAgIH0KIAogICAgIGNscy0+bWV0YSA9
IG1ldGE7CkBAIC0zNDUsMTUgKzM0NSwxNSBAQCBFd2tfSlNfQ2xhc3MqIGV3a19qc19jbGFzc19u
ZXcoY29uc3QgRXdrX0pTX0NsYXNzX01ldGEqIG1ldGEpCiAgICAgLy8gRG9uJ3QgZnJlZSBtZXRo
b2RzIHNpbmNlIHRoZXkgcG9pbnQgdG8gbWV0YSBjbGFzcyBtZXRob2RzKHdpbGwgYmUgZnJlZWQg
d2hlbiBtZXRhIGNsYXNzIGlzIGZyZWVkKS4KICAgICBjbHMtPm1ldGhvZHMgPSBlaW5hX2hhc2hf
cG9pbnRlcl9uZXcoMCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IG1ldGEtPm1ldGhvZHMgJiYgbWV0
YS0+bWV0aG9kc1tpXS5uYW1lOyBpKyspIHsKLSAgICAgICAgTlBJZGVudGlmaWVyIGlkID0gX05Q
Tl9HZXRTdHJpbmdJZGVudGlmaWVyKG1ldGEtPm1ldGhvZHNbaV0ubmFtZSk7Ci0gICAgICAgIGVp
bmFfaGFzaF9hZGQoY2xzLT5tZXRob2RzLCBpZCwgJm1ldGEtPm1ldGhvZHNbaV0pOworCU5QSWRl
bnRpZmllciBpZCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihtZXRhLT5tZXRob2RzW2ldLm5h
bWUpOworCWVpbmFfaGFzaF9hZGQoY2xzLT5tZXRob2RzLCBpZCwgJm1ldGEtPm1ldGhvZHNbaV0p
OwogICAgIH0KIAogICAgIC8vIERvbid0IGZyZWUgcHJvcGVydGllcyBzaW5jZSB0aGV5IHBvaW50
IHRvIG1ldGEgY2xhc3MgcHJvcGVydGllcyh3aWxsIGJlIGZyZWVkIHdoZW4gbWV0YSBjbGFzcyBp
cyBmcmVlZCkuCiAgICAgY2xzLT5wcm9wZXJ0aWVzID0gZWluYV9oYXNoX3BvaW50ZXJfbmV3KDAp
OwogICAgIGZvciAoaW50IGkgPSAwOyBtZXRhLT5wcm9wZXJ0aWVzICYmIG1ldGEtPnByb3BlcnRp
ZXNbaV0ubmFtZTsgaSsrKSB7Ci0gICAgICAgIE5QSWRlbnRpZmllciBpZCA9IF9OUE5fR2V0U3Ry
aW5nSWRlbnRpZmllcihtZXRhLT5wcm9wZXJ0aWVzW2ldLm5hbWUpOwotICAgICAgICBlaW5hX2hh
c2hfYWRkKGNscy0+cHJvcGVydGllcywgaWQsICZtZXRhLT5wcm9wZXJ0aWVzW2ldKTsKKwlOUElk
ZW50aWZpZXIgaWQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIobWV0YS0+cHJvcGVydGllc1tp
XS5uYW1lKTsKKwllaW5hX2hhc2hfYWRkKGNscy0+cHJvcGVydGllcywgaWQsICZtZXRhLT5wcm9w
ZXJ0aWVzW2ldKTsKICAgICB9CiAKICAgICByZXR1cm4gY2xzOwpAQCAtMzk5LDQ3ICszOTksNDcg
QEAgc3RhdGljIEV3a19KU19PYmplY3QqIGV3a19qc19ucG9iamVjdF90b19vYmplY3QoTlBPYmpl
Y3QqIG5wX29iaikKICAgICBKYXZhU2NyaXB0T2JqZWN0KiBqc287CiAKICAgICBpZiAoRUlOQV9N
QUdJQ19DSEVDSyhyZWludGVycHJldF9jYXN0PEV3a19KU19PYmplY3QqPihucF9vYmopLCBFV0tf
SlNfT0JKRUNUX01BR0lDKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXdrX0pT
X09iamVjdCo+KG5wX29iaik7CisJcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXdrX0pTX09iamVj
dCo+KG5wX29iaik7CiAKICAgICBpZiAoIV9OUE5fRW51bWVyYXRlKDAsIG5wX29iaiwgJnZhbHVl
cywgJm5wX3Byb3BzX2NvdW50KSkKLSAgICAgICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiAKICAg
ICBjbHMgPSBzdGF0aWNfY2FzdDxFd2tfSlNfQ2xhc3MqPihtYWxsb2Moc2l6ZW9mKEV3a19KU19D
bGFzcykpKTsKICAgICBpZiAoIWNscykgewotICAgICAgICBFUlIoIkNvdWxkIG5vdCBhbGxvY2F0
ZSBtZW1vcnkgZm9yIGV3a19qc19jbGFzcyIpOwotICAgICAgICByZXR1cm4gMDsKKwlFUlIoIkNv
dWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc19jbGFzcyIpOworCXJldHVybiAwOwog
ICAgIH0KIAogICAgIGNscy0+bWV0YSA9IDA7CiAgICAgRXdrX0pTX0RlZmF1bHQgZGVmID0gewot
ICAgICAgICBld2tfanNfbnBvYmplY3RfcHJvcGVydHlfc2V0LAotICAgICAgICBld2tfanNfbnBv
YmplY3RfcHJvcGVydHlfZ2V0LAotICAgICAgICBld2tfanNfbnBvYmplY3RfcHJvcGVydHlfZGVs
CisJZXdrX2pzX25wb2JqZWN0X3Byb3BlcnR5X3NldCwKKwlld2tfanNfbnBvYmplY3RfcHJvcGVy
dHlfZ2V0LAorCWV3a19qc19ucG9iamVjdF9wcm9wZXJ0eV9kZWwKICAgICB9OwogICAgIGNscy0+
ZGVmYXVsdF9wcm9wID0gZGVmOwogICAgIGNscy0+bWV0aG9kcyA9IGVpbmFfaGFzaF9wb2ludGVy
X25ldygwKTsKICAgICBjbHMtPnByb3BlcnRpZXMgPSBlaW5hX2hhc2hfcG9pbnRlcl9uZXcocmVp
bnRlcnByZXRfY2FzdDxFaW5hX0ZyZWVfQ2I+KGV3a19qc19wcm9wZXJ0eV9mcmVlKSk7CiAgICAg
Zm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG5wX3Byb3BzX2NvdW50OyBpKyspIHsKLSAgICAgICAg
aWYgKF9OUE5fSGFzUHJvcGVydHkoMCwgbnBfb2JqLCB2YWx1ZXNbaV0pKSB7Ci0gICAgICAgICAg
ICBOUFZhcmlhbnQgdmFyOwotICAgICAgICAgICAgRXdrX0pTX1Byb3BlcnR5KiBwcm9wID0gc3Rh
dGljX2Nhc3Q8RXdrX0pTX1Byb3BlcnR5Kj4oY2FsbG9jKHNpemVvZihFd2tfSlNfUHJvcGVydHkp
LCAxKSk7Ci0gICAgICAgICAgICBpZiAoIXByb3ApIHsKLSAgICAgICAgICAgICAgICBFUlIoIkNv
dWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc19wcm9wZXJ0eSIpOwotICAgICAgICAg
ICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIF9OUE5fR2V0
UHJvcGVydHkoMCwgbnBfb2JqLCB2YWx1ZXNbaV0sICZ2YXIpOwotICAgICAgICAgICAgZXdrX2pz
X25wdmFyaWFudF90b192YXJpYW50KCYocHJvcC0+dmFsdWUpLCAmdmFyKTsKLSAgICAgICAgICAg
IHByb3AtPm5hbWUgPSBfTlBOX1VURjhGcm9tSWRlbnRpZmllcih2YWx1ZXNbaV0pOwotICAgICAg
ICAgICAgZWluYV9oYXNoX2FkZChjbHMtPnByb3BlcnRpZXMsIHZhbHVlc1tpXSwgcHJvcCk7Ci0g
ICAgICAgIH0KKwlpZiAoX05QTl9IYXNQcm9wZXJ0eSgwLCBucF9vYmosIHZhbHVlc1tpXSkpIHsK
KwkgICAgTlBWYXJpYW50IHZhcjsKKwkgICAgRXdrX0pTX1Byb3BlcnR5KiBwcm9wID0gc3RhdGlj
X2Nhc3Q8RXdrX0pTX1Byb3BlcnR5Kj4oY2FsbG9jKHNpemVvZihFd2tfSlNfUHJvcGVydHkpLCAx
KSk7CisJICAgIGlmICghcHJvcCkgeworCQlFUlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkg
Zm9yIGV3a19qc19wcm9wZXJ0eSIpOworCQlnb3RvIGVycm9yOworCSAgICB9CisKKwkgICAgX05Q
Tl9HZXRQcm9wZXJ0eSgwLCBucF9vYmosIHZhbHVlc1tpXSwgJnZhcik7CisJICAgIGV3a19qc19u
cHZhcmlhbnRfdG9fdmFyaWFudCgmKHByb3AtPnZhbHVlKSwgJnZhcik7CisJICAgIHByb3AtPm5h
bWUgPSBfTlBOX1VURjhGcm9tSWRlbnRpZmllcih2YWx1ZXNbaV0pOworCSAgICBlaW5hX2hhc2hf
YWRkKGNscy0+cHJvcGVydGllcywgdmFsdWVzW2ldLCBwcm9wKTsKKwl9CiAgICAgfQogCiAgICAg
Ly8gQ2FuJ3QgdXNlIGV3a19qc19vYmplY3RfbmV3KGNscykgYmVjYXVzZSBpdCBleHBlY3RzIGNs
cy0+bWV0YSB0byBleGlzdC4KICAgICBvYmogPSBzdGF0aWNfY2FzdDxFd2tfSlNfT2JqZWN0Kj4o
bWFsbG9jKHNpemVvZihFd2tfSlNfT2JqZWN0KSkpOwogICAgIGlmICghb2JqKSB7Ci0gICAgICAg
IEVSUigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgZXdrX2pzX29iamVjdCIpOwotICAg
ICAgICBnb3RvIGVycm9yOworCUVSUigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgZXdr
X2pzX29iamVjdCIpOworCWdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgZnJlZSh2YWx1ZXMpOwpA
QCAtNDUwLDIyICs0NTAsMjIgQEAgc3RhdGljIEV3a19KU19PYmplY3QqIGV3a19qc19ucG9iamVj
dF90b19vYmplY3QoTlBPYmplY3QqIG5wX29iaikKIAogICAgIGpzbyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8SmF2YVNjcmlwdE9iamVjdCo+KG5wX29iaik7CiAgICAgaWYgKCFzdHJjbXAoIkFycmF5Iiwg
anNvLT5pbXAtPmNsYXNzTmFtZSgpLmFzY2lpKCkuZGF0YSgpKSkKLSAgICAgICAgb2JqLT50eXBl
ID0gRVdLX0pTX09CSkVDVF9BUlJBWTsKKwlvYmotPnR5cGUgPSBFV0tfSlNfT0JKRUNUX0FSUkFZ
OwogICAgIGVsc2UgaWYgKCFzdHJjbXAoIkZ1bmN0aW9uIiwganNvLT5pbXAtPmNsYXNzTmFtZSgp
LmFzY2lpKCkuZGF0YSgpKSkKLSAgICAgICAgb2JqLT50eXBlID0gRVdLX0pTX09CSkVDVF9GVU5D
VElPTjsKKwlvYmotPnR5cGUgPSBFV0tfSlNfT0JKRUNUX0ZVTkNUSU9OOwogICAgIGVsc2UKLSAg
ICAgICAgb2JqLT50eXBlID0gRVdLX0pTX09CSkVDVF9PQkpFQ1Q7CisJb2JqLT50eXBlID0gRVdL
X0pTX09CSkVDVF9PQkpFQ1Q7CiAKICAgICBpZiAoZWluYV9oYXNoX3BvcHVsYXRpb24oY2xzLT5w
cm9wZXJ0aWVzKSA8IDI1KQotICAgICAgICBvYmotPnByb3BlcnRpZXMgPSBlaW5hX2hhc2hfc3Ry
aW5nX3NtYWxsX25ldygwKTsKKwlvYmotPnByb3BlcnRpZXMgPSBlaW5hX2hhc2hfc3RyaW5nX3Nt
YWxsX25ldygwKTsKICAgICBlbHNlCi0gICAgICAgIG9iai0+cHJvcGVydGllcyA9IGVpbmFfaGFz
aF9zdHJpbmdfc3VwZXJmYXN0X25ldygwKTsKKwlvYmotPnByb3BlcnRpZXMgPSBlaW5hX2hhc2hf
c3RyaW5nX3N1cGVyZmFzdF9uZXcoMCk7CiAKICAgICBpdCA9IGVpbmFfaGFzaF9pdGVyYXRvcl9k
YXRhX25ldyhjbHMtPnByb3BlcnRpZXMpOwogICAgIEVJTkFfSVRFUkFUT1JfRk9SRUFDSChpdCwg
cHJvcCkgewotICAgICAgICBjb25zdCBjaGFyKiBrZXkgPSBwcm9wLT5uYW1lOwotICAgICAgICBF
d2tfSlNfVmFyaWFudCogdmFsdWUgPSAmcHJvcC0+dmFsdWU7Ci0gICAgICAgIGVpbmFfaGFzaF9h
ZGQob2JqLT5wcm9wZXJ0aWVzLCBrZXksIHZhbHVlKTsKKwljb25zdCBjaGFyKiBrZXkgPSBwcm9w
LT5uYW1lOworCUV3a19KU19WYXJpYW50KiB2YWx1ZSA9ICZwcm9wLT52YWx1ZTsKKwllaW5hX2hh
c2hfYWRkKG9iai0+cHJvcGVydGllcywga2V5LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgZWluYV9p
dGVyYXRvcl9mcmVlKGl0KTsKQEAgLTQ4Niw0MCArNDg2LDQwIEBAIHN0YXRpYyBFaW5hX0Jvb2wg
ZXdrX2pzX25wdmFyaWFudF90b192YXJpYW50KEV3a19KU19WYXJpYW50KiBkYXRhLCBjb25zdCBO
UFZhcmlhCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlc3VsdCwgRUlOQV9G
QUxTRSk7CiAgICAgc3dpdGNoIChyZXN1bHQtPnR5cGUpIHsKICAgICBjYXNlIE5QVmFyaWFudFR5
cGVfVm9pZDoKLSAgICAgICAgZGF0YS0+dHlwZSA9IEVXS19KU19WQVJJQU5UX1ZPSUQ7Ci0gICAg
ICAgIGRhdGEtPnZhbHVlLm8gPSAwOwotICAgICAgICBicmVhazsKKwlkYXRhLT50eXBlID0gRVdL
X0pTX1ZBUklBTlRfVk9JRDsKKwlkYXRhLT52YWx1ZS5vID0gMDsKKwlicmVhazsKICAgICBjYXNl
IE5QVmFyaWFudFR5cGVfTnVsbDoKLSAgICAgICAgZGF0YS0+dHlwZSA9IEVXS19KU19WQVJJQU5U
X05VTEw7Ci0gICAgICAgIGRhdGEtPnZhbHVlLm8gPSAwOwotICAgICAgICBicmVhazsKKwlkYXRh
LT50eXBlID0gRVdLX0pTX1ZBUklBTlRfTlVMTDsKKwlkYXRhLT52YWx1ZS5vID0gMDsKKwlicmVh
azsKICAgICBjYXNlIE5QVmFyaWFudFR5cGVfSW50MzI6Ci0gICAgICAgIGRhdGEtPnR5cGUgPSBF
V0tfSlNfVkFSSUFOVF9JTlQzMjsKLSAgICAgICAgZGF0YS0+dmFsdWUuaSA9IE5QVkFSSUFOVF9U
T19JTlQzMigqcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7CisJZGF0YS0+dHlwZSA9IEVXS19KU19W
QVJJQU5UX0lOVDMyOworCWRhdGEtPnZhbHVlLmkgPSBOUFZBUklBTlRfVE9fSU5UMzIoKnJlc3Vs
dCk7CisJYnJlYWs7CiAgICAgY2FzZSBOUFZhcmlhbnRUeXBlX0RvdWJsZToKLSAgICAgICAgZGF0
YS0+dHlwZSA9IEVXS19KU19WQVJJQU5UX0RPVUJMRTsKLSAgICAgICAgZGF0YS0+dmFsdWUuZCA9
IE5QVkFSSUFOVF9UT19ET1VCTEUoKnJlc3VsdCk7Ci0gICAgICAgIGJyZWFrOworCWRhdGEtPnR5
cGUgPSBFV0tfSlNfVkFSSUFOVF9ET1VCTEU7CisJZGF0YS0+dmFsdWUuZCA9IE5QVkFSSUFOVF9U
T19ET1VCTEUoKnJlc3VsdCk7CisJYnJlYWs7CiAgICAgY2FzZSBOUFZhcmlhbnRUeXBlX1N0cmlu
ZzoKLSAgICAgICAgc3ogPSBOUFZBUklBTlRfVE9fU1RSSU5HKCpyZXN1bHQpLlVURjhMZW5ndGg7
Ci0gICAgICAgIGRhdGEtPnZhbHVlLnMgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKHNpemVv
ZihjaGFyKSAqIChzeiArIDEpKSk7Ci0gICAgICAgIGlmICghZGF0YS0+dmFsdWUucykKLSAgICAg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwotICAgICAgICBtZW1jcHkoZGF0YS0+dmFsdWUucywg
TlBWQVJJQU5UX1RPX1NUUklORygqcmVzdWx0KS5VVEY4Q2hhcmFjdGVycywgc3opOwotICAgICAg
ICBkYXRhLT52YWx1ZS5zW3N6XSA9ICdcMCc7Ci0gICAgICAgIGRhdGEtPnR5cGUgPSBFV0tfSlNf
VkFSSUFOVF9TVFJJTkc7Ci0gICAgICAgIGJyZWFrOworCXN6ID0gTlBWQVJJQU5UX1RPX1NUUklO
RygqcmVzdWx0KS5VVEY4TGVuZ3RoOworCWRhdGEtPnZhbHVlLnMgPSBzdGF0aWNfY2FzdDxjaGFy
Kj4obWFsbG9jKHNpemVvZihjaGFyKSAqIChzeiArIDEpKSk7CisJaWYgKCFkYXRhLT52YWx1ZS5z
KQorCSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwltZW1jcHkoZGF0YS0+dmFsdWUucywgTlBWQVJJ
QU5UX1RPX1NUUklORygqcmVzdWx0KS5VVEY4Q2hhcmFjdGVycywgc3opOworCWRhdGEtPnZhbHVl
LnNbc3pdID0gJ1wwJzsKKwlkYXRhLT50eXBlID0gRVdLX0pTX1ZBUklBTlRfU1RSSU5HOworCWJy
ZWFrOwogICAgIGNhc2UgTlBWYXJpYW50VHlwZV9Cb29sOgotICAgICAgICBkYXRhLT50eXBlID0g
RVdLX0pTX1ZBUklBTlRfQk9PTDsKLSAgICAgICAgZGF0YS0+dmFsdWUuYiA9IE5QVkFSSUFOVF9U
T19CT09MRUFOKCpyZXN1bHQpOwotICAgICAgICBicmVhazsKKwlkYXRhLT50eXBlID0gRVdLX0pT
X1ZBUklBTlRfQk9PTDsKKwlkYXRhLT52YWx1ZS5iID0gTlBWQVJJQU5UX1RPX0JPT0xFQU4oKnJl
c3VsdCk7CisJYnJlYWs7CiAgICAgY2FzZSBOUFZhcmlhbnRUeXBlX09iamVjdDoKLSAgICAgICAg
ZGF0YS0+dHlwZSA9IEVXS19KU19WQVJJQU5UX09CSkVDVDsKLSAgICAgICAgZGF0YS0+dmFsdWUu
byA9IGV3a19qc19ucG9iamVjdF90b19vYmplY3QoTlBWQVJJQU5UX1RPX09CSkVDVCgqcmVzdWx0
KSk7Ci0gICAgICAgIGJyZWFrOworCWRhdGEtPnR5cGUgPSBFV0tfSlNfVkFSSUFOVF9PQkpFQ1Q7
CisJZGF0YS0+dmFsdWUubyA9IGV3a19qc19ucG9iamVjdF90b19vYmplY3QoTlBWQVJJQU5UX1RP
X09CSkVDVCgqcmVzdWx0KSk7CisJYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKQEAgLTUzMyw4ICs1MzMsOCBAQCBFd2tfSlNfT2JqZWN0KiBld2tfanNfb2JqZWN0
X25ldyhjb25zdCBFd2tfSlNfQ2xhc3NfTWV0YSogbWV0YV9jbHMpCiAKICAgICBvYmogPSBzdGF0
aWNfY2FzdDxFd2tfSlNfT2JqZWN0Kj4obWFsbG9jKHNpemVvZihFd2tfSlNfT2JqZWN0KSkpOwog
ICAgIGlmICghb2JqKSB7Ci0gICAgICAgIEVSUigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBm
b3IgZXdrX2pzX29iamVjdCIpOwotICAgICAgICByZXR1cm4gMDsKKwlFUlIoIkNvdWxkIG5vdCBh
bGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc19vYmplY3QiKTsKKwlyZXR1cm4gMDsKICAgICB9CiAK
ICAgICBFSU5BX01BR0lDX1NFVChvYmosIEVXS19KU19PQkpFQ1RfTUFHSUMpOwpAQCAtNTQ0LDQ1
ICs1NDQsNDUgQEAgRXdrX0pTX09iamVjdCogZXdrX2pzX29iamVjdF9uZXcoY29uc3QgRXdrX0pT
X0NsYXNzX01ldGEqIG1ldGFfY2xzKQogICAgIG9iai0+dHlwZSA9IEVXS19KU19PQkpFQ1RfT0JK
RUNUOwogCiAgICAgaWYgKGVpbmFfaGFzaF9wb3B1bGF0aW9uKG9iai0+Y2xzLT5wcm9wZXJ0aWVz
KSA8IDI1KQotICAgICAgICBvYmotPnByb3BlcnRpZXMgPSBlaW5hX2hhc2hfc3RyaW5nX3NtYWxs
X25ldyhyZWludGVycHJldF9jYXN0PEVpbmFfRnJlZV9DYj4oZXdrX2pzX3ZhcmlhbnRfZnJlZSkp
OworCW9iai0+cHJvcGVydGllcyA9IGVpbmFfaGFzaF9zdHJpbmdfc21hbGxfbmV3KHJlaW50ZXJw
cmV0X2Nhc3Q8RWluYV9GcmVlX0NiPihld2tfanNfdmFyaWFudF9mcmVlKSk7CiAgICAgZWxzZQot
ICAgICAgICBvYmotPnByb3BlcnRpZXMgPSBlaW5hX2hhc2hfc3RyaW5nX3N1cGVyZmFzdF9uZXco
cmVpbnRlcnByZXRfY2FzdDxFaW5hX0ZyZWVfQ2I+KGV3a19qc192YXJpYW50X2ZyZWUpKTsKKwlv
YmotPnByb3BlcnRpZXMgPSBlaW5hX2hhc2hfc3RyaW5nX3N1cGVyZmFzdF9uZXcocmVpbnRlcnBy
ZXRfY2FzdDxFaW5hX0ZyZWVfQ2I+KGV3a19qc192YXJpYW50X2ZyZWUpKTsKIAogICAgIGZvciAo
aW50IGkgPSAwOyBvYmotPmNscy0+bWV0YS0+cHJvcGVydGllcyAmJiBvYmotPmNscy0+bWV0YS0+
cHJvcGVydGllc1tpXS5uYW1lOyBpKyspIHsKLSAgICAgICAgRXdrX0pTX1Byb3BlcnR5IHByb3Ag
PSBvYmotPmNscy0+bWV0YS0+cHJvcGVydGllc1tpXTsKLSAgICAgICAgY29uc3QgY2hhcioga2V5
ID0gb2JqLT5jbHMtPm1ldGEtPnByb3BlcnRpZXNbaV0ubmFtZTsKLSAgICAgICAgRXdrX0pTX1Zh
cmlhbnQqIHZhbHVlID0gc3RhdGljX2Nhc3Q8RXdrX0pTX1ZhcmlhbnQqPihtYWxsb2Moc2l6ZW9m
KEV3a19KU19WYXJpYW50KSkpOwotICAgICAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgICAgICBF
UlIoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV3a19qc192YXJpYW50Iik7Ci0gICAg
ICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9wLmdldCkKLSAg
ICAgICAgICAgIHByb3AuZ2V0KG9iaiwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgdmFsdWUtPnR5cGUgPSBwcm9wLnZhbHVlLnR5cGU7Ci0gICAgICAgICAgICBzd2l0
Y2ggKHZhbHVlLT50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIEVXS19KU19WQVJJQU5UX1ZPSUQ6
Ci0gICAgICAgICAgICBjYXNlIEVXS19KU19WQVJJQU5UX05VTEw6Ci0gICAgICAgICAgICAgICAg
dmFsdWUtPnZhbHVlLm8gPSAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBFV0tfSlNfVkFSSUFOVF9TVFJJTkc6Ci0gICAgICAgICAgICAgICAgdmFsdWUtPnZhbHVl
LnMgPSBzdHJkdXAocHJvcC52YWx1ZS52YWx1ZS5zKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfQk9PTDoKLSAgICAgICAgICAgICAgICB2
YWx1ZS0+dmFsdWUuYiA9IHByb3AudmFsdWUudmFsdWUuYjsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfSU5UMzI6Ci0gICAgICAgICAgICAg
ICAgdmFsdWUtPnZhbHVlLmkgPSBwcm9wLnZhbHVlLnZhbHVlLmk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEVXS19KU19WQVJJQU5UX0RPVUJMRToKLSAgICAgICAg
ICAgICAgICB2YWx1ZS0+dmFsdWUuZCA9IHByb3AudmFsdWUudmFsdWUuZDsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfT0JKRUNUOgotICAg
ICAgICAgICAgICAgIHZhbHVlLT52YWx1ZS5vID0gcHJvcC52YWx1ZS52YWx1ZS5vOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVpbmFf
aGFzaF9hZGQob2JqLT5wcm9wZXJ0aWVzLCBrZXksIHZhbHVlKTsKKwlFd2tfSlNfUHJvcGVydHkg
cHJvcCA9IG9iai0+Y2xzLT5tZXRhLT5wcm9wZXJ0aWVzW2ldOworCWNvbnN0IGNoYXIqIGtleSA9
IG9iai0+Y2xzLT5tZXRhLT5wcm9wZXJ0aWVzW2ldLm5hbWU7CisJRXdrX0pTX1ZhcmlhbnQqIHZh
bHVlID0gc3RhdGljX2Nhc3Q8RXdrX0pTX1ZhcmlhbnQqPihtYWxsb2Moc2l6ZW9mKEV3a19KU19W
YXJpYW50KSkpOworCWlmICghdmFsdWUpIHsKKwkgICAgRVJSKCJDb3VsZCBub3QgYWxsb2NhdGUg
bWVtb3J5IGZvciBld2tfanNfdmFyaWFudCIpOworCSAgICBnb3RvIGVycm9yOworCX0KKwlpZiAo
cHJvcC5nZXQpCisJICAgIHByb3AuZ2V0KG9iaiwga2V5LCB2YWx1ZSk7CisJZWxzZSB7CisJICAg
IHZhbHVlLT50eXBlID0gcHJvcC52YWx1ZS50eXBlOworCSAgICBzd2l0Y2ggKHZhbHVlLT50eXBl
KSB7CisJICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfVk9JRDoKKwkgICAgY2FzZSBFV0tfSlNfVkFS
SUFOVF9OVUxMOgorCQl2YWx1ZS0+dmFsdWUubyA9IDA7CisJCWJyZWFrOworCSAgICBjYXNlIEVX
S19KU19WQVJJQU5UX1NUUklORzoKKwkJdmFsdWUtPnZhbHVlLnMgPSBzdHJkdXAocHJvcC52YWx1
ZS52YWx1ZS5zKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfQk9PTDoKKwkJ
dmFsdWUtPnZhbHVlLmIgPSBwcm9wLnZhbHVlLnZhbHVlLmI7CisJCWJyZWFrOworCSAgICBjYXNl
IEVXS19KU19WQVJJQU5UX0lOVDMyOgorCQl2YWx1ZS0+dmFsdWUuaSA9IHByb3AudmFsdWUudmFs
dWUuaTsKKwkJYnJlYWs7CisJICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfRE9VQkxFOgorCQl2YWx1
ZS0+dmFsdWUuZCA9IHByb3AudmFsdWUudmFsdWUuZDsKKwkJYnJlYWs7CisJICAgIGNhc2UgRVdL
X0pTX1ZBUklBTlRfT0JKRUNUOgorCQl2YWx1ZS0+dmFsdWUubyA9IHByb3AudmFsdWUudmFsdWUu
bzsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisJZWluYV9oYXNoX2FkZChvYmotPnByb3BlcnRpZXMs
IGtleSwgdmFsdWUpOwogICAgIH0KIAogICAgIG9iai0+YmFzZS5vYmplY3QucmVmZXJlbmNlQ291
bnQgPSAxOwpAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQgZXdrX2pzX29iamVjdF9mcmVlKEV3a19K
U19PYmplY3QqIG9iaikKICAgICBFSU5BX01BR0lDX1NFVChvYmosIEVJTkFfTUFHSUNfTk9ORSk7
CiAKICAgICBpZiAoc2NyaXB0X29iaikKLSAgICAgICAgZnJlZShvYmopOworCWZyZWUob2JqKTsK
IH0KIAogRWluYV9IYXNoKiBld2tfanNfb2JqZWN0X3Byb3BlcnRpZXNfZ2V0KGNvbnN0IEV3a19K
U19PYmplY3QqIG9iaikKQEAgLTYzMywyNCArNjMzLDI0IEBAIEVpbmFfQm9vbCBld2tfanNfb2Jq
ZWN0X2ludm9rZShFd2tfSlNfT2JqZWN0KiBvYmosIEV3a19KU19WYXJpYW50KiBhcmdzLCBpbnQg
YXJnCiAKICAgICBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihvYmosIEVJTkFfRkFMU0UpOwog
ICAgIGlmIChld2tfanNfb2JqZWN0X3R5cGVfZ2V0KG9iaikgIT0gRVdLX0pTX09CSkVDVF9GVU5D
VElPTikKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAg
ICAgaWYgKGFyZ19jb3VudCkKLSAgICAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGFyZ3MsIEVJTkFfRkFMU0UpOworCUVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmdz
LCBFSU5BX0ZBTFNFKTsKIAogICAgIG5wX2FyZ3MgPSBzdGF0aWNfY2FzdDxOUFZhcmlhbnQqPiht
YWxsb2Moc2l6ZW9mKE5QVmFyaWFudCkgICphcmdfY291bnQpKTsKICAgICBpZiAoIW5wX2FyZ3Mp
IHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IHRvIG1ldGhvZCBhcmd1
bWVudHMiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJRVJSKCJDb3VsZCBub3QgYWxs
b2NhdGUgbWVtb3J5IHRvIG1ldGhvZCBhcmd1bWVudHMiKTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsK
ICAgICB9CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ19jb3VudDsgaSsrKQotICAgICAg
ICBpZiAoIWV3a19qc192YXJpYW50X3RvX25wdmFyaWFudCgmYXJnc1tpXSwgJm5wX2FyZ3NbaV0p
KQotICAgICAgICAgICAgZ290byBlbmQ7CisJaWYgKCFld2tfanNfdmFyaWFudF90b19ucHZhcmlh
bnQoJmFyZ3NbaV0sICZucF9hcmdzW2ldKSkKKwkgICAgZ290byBlbmQ7CiAKICAgICBpZiAoIShm
YWlsID0gX05QTl9JbnZva2VEZWZhdWx0KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TlBPYmplY3QqPihv
YmopLCBucF9hcmdzLCBhcmdfY291bnQsICZucF9yZXN1bHQpKSkKLSAgICAgICAgZ290byBlbmQ7
CisJZ290byBlbmQ7CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZmFpbCA9IGV3a19qc19ucHZh
cmlhbnRfdG9fdmFyaWFudChyZXN1bHQsICZucF9yZXN1bHQpOworCWZhaWwgPSBld2tfanNfbnB2
YXJpYW50X3RvX3ZhcmlhbnQocmVzdWx0LCAmbnBfcmVzdWx0KTsKIAogZW5kOgogICAgIGZyZWUo
bnBfYXJncyk7CkBAIC02NzcsOSArNjc3LDkgQEAgdm9pZCBld2tfanNfdmFyaWFudF9mcmVlKEV3
a19KU19WYXJpYW50KiB2YXIpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4odmFy
KTsKICAgICBpZiAodmFyLT50eXBlID09IEVXS19KU19WQVJJQU5UX1NUUklORykKLSAgICAgICAg
ZnJlZSh2YXItPnZhbHVlLnMpOworCWZyZWUodmFyLT52YWx1ZS5zKTsKICAgICBlbHNlIGlmICh2
YXItPnR5cGUgPT0gRVdLX0pTX1ZBUklBTlRfT0JKRUNUKQotICAgICAgICBld2tfanNfb2JqZWN0
X2ZyZWUodmFyLT52YWx1ZS5vKTsKKwlld2tfanNfb2JqZWN0X2ZyZWUodmFyLT52YWx1ZS5vKTsK
ICAgICBmcmVlKHZhcik7CiB9CiAKQEAgLTY4NywxMCArNjg3LDEwIEBAIHZvaWQgZXdrX2pzX3Zh
cmlhbnRfYXJyYXlfZnJlZShFd2tfSlNfVmFyaWFudCogdmFyLCBpbnQgY291bnQpCiB7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4odmFyKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKLSAgICAgICAgaWYgKHZhcltpXS50eXBlID09IEVXS19KU19WQVJJQU5U
X1NUUklORykKLSAgICAgICAgICAgIGZyZWUodmFyW2ldLnZhbHVlLnMpOwotICAgICAgICBlbHNl
IGlmICh2YXJbaV0udHlwZSA9PSBFV0tfSlNfVkFSSUFOVF9PQkpFQ1QpCi0gICAgICAgICAgICBl
d2tfanNfb2JqZWN0X2ZyZWUodmFyW2ldLnZhbHVlLm8pOworCWlmICh2YXJbaV0udHlwZSA9PSBF
V0tfSlNfVkFSSUFOVF9TVFJJTkcpCisJICAgIGZyZWUodmFyW2ldLnZhbHVlLnMpOworCWVsc2Ug
aWYgKHZhcltpXS50eXBlID09IEVXS19KU19WQVJJQU5UX09CSkVDVCkKKwkgICAgZXdrX2pzX29i
amVjdF9mcmVlKHZhcltpXS52YWx1ZS5vKTsKICAgICB9CiAgICAgZnJlZSh2YXIpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKaW5kZXggYWI1NTY3Yi4uMzM3MTJkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX21haW4uY3BwCkBAIC03MCw0MCArNzAsNDAgQEAgc3RhdGljIEVpbmFfQm9v
bCBfZXdrX2luaXRfYm9keSh2b2lkKTsKIGludCBld2tfaW5pdCh2b2lkKQogewogICAgIGlmIChf
ZXdrX2luaXRfY291bnQpCi0gICAgICAgIHJldHVybiArK19ld2tfaW5pdF9jb3VudDsKKwlyZXR1
cm4gKytfZXdrX2luaXRfY291bnQ7CiAKICAgICBpZiAoIWVpbmFfaW5pdCgpKQotICAgICAgICBn
b3RvIGVycm9yX2VpbmE7CisJZ290byBlcnJvcl9laW5hOwogCiAgICAgX2V3a19sb2dfZG9tID0g
ZWluYV9sb2dfZG9tYWluX3JlZ2lzdGVyKCJld2Via2l0IiwgRUlOQV9DT0xPUl9PUkFOR0UpOwog
ICAgIGlmIChfZXdrX2xvZ19kb20gPCAwKSB7Ci0gICAgICAgIEVJTkFfTE9HX0NSSVQoImNvdWxk
IG5vdCByZWdpc3RlciBsb2cgZG9tYWluICdld2Via2l0JyIpOwotICAgICAgICBnb3RvIGVycm9y
X2xvZ19kb21haW47CisJRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IHJlZ2lzdGVyIGxvZyBkb21h
aW4gJ2V3ZWJraXQnIik7CisJZ290byBlcnJvcl9sb2dfZG9tYWluOwogICAgIH0KIAogICAgIGlm
ICghZXZhc19pbml0KCkpIHsKLSAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGV2YXMu
Iik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXZhczsKKwlDUklUSUNBTCgiY291bGQgbm90IGluaXQg
ZXZhcy4iKTsKKwlnb3RvIGVycm9yX2V2YXM7CiAgICAgfQogCiAgICAgaWYgKCFlY29yZV9pbml0
KCkpIHsKLSAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGVjb3JlLiIpOwotICAgICAg
ICBnb3RvIGVycm9yX2Vjb3JlOworCUNSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZS4iKTsK
Kwlnb3RvIGVycm9yX2Vjb3JlOwogICAgIH0KIAogICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkp
IHsKLSAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGVjb3JlX2V2YXMuIik7Ci0gICAg
ICAgIGdvdG8gZXJyb3JfZWNvcmVfZXZhczsKKwlDUklUSUNBTCgiY291bGQgbm90IGluaXQgZWNv
cmVfZXZhcy4iKTsKKwlnb3RvIGVycm9yX2Vjb3JlX2V2YXM7CiAgICAgfQogCiAgICAgaWYgKCFl
ZGplX2luaXQoKSkgewotICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGluaXQgZWRqZS4iKTsK
LSAgICAgICAgZ290byBlcnJvcl9lZGplOworCUNSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlZGpl
LiIpOworCWdvdG8gZXJyb3JfZWRqZTsKICAgICB9CiAKICAgICBpZiAoIV9ld2tfaW5pdF9ib2R5
KCkpIHsKLSAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGJvZHkiKTsKLSAgICAgICAg
Z290byBlcnJvcl9lZGplOworCUNSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBib2R5Iik7CisJZ290
byBlcnJvcl9lZGplOwogICAgIH0KIAogICAgIHJldHVybiArK19ld2tfaW5pdF9jb3VudDsKQEAg
LTEyNyw3ICsxMjcsNyBAQCBpbnQgZXdrX3NodXRkb3duKHZvaWQpCiB7CiAgICAgX2V3a19pbml0
X2NvdW50LS07CiAgICAgaWYgKF9ld2tfaW5pdF9jb3VudCkKLSAgICAgICAgcmV0dXJuIF9ld2tf
aW5pdF9jb3VudDsKKwlyZXR1cm4gX2V3a19pbml0X2NvdW50OwogCiAgICAgZWNvcmVfZXZhc19z
aHV0ZG93bigpOwogICAgIGVjb3JlX3NodXRkb3duKCk7CkBAIC0xNDYsMTcgKzE0NiwxNyBAQCBF
aW5hX0Jvb2wgX2V3a19pbml0X2JvZHkodm9pZCkKICAgICBnX3R5cGVfaW5pdCgpOwogCiAgICAg
aWYgKCFnX3RocmVhZF9zdXBwb3J0ZWQoKSkKLSAgICAgICAgZ190aHJlYWRfaW5pdCgwKTsKKwln
X3RocmVhZF9pbml0KDApOwogCiAjaWZkZWYgRU5BQkxFX0dUS19QTFVHSU5TX1NVUFBPUlQKICAg
ICBnZGtfdGhyZWFkc19pbml0KCk7CiAgICAgaWYgKCFndGtfaW5pdF9jaGVjaygwLCAwKSkKLSAg
ICAgICAgV1JOKCJDb3VsZCBub3QgaW5pdGlhbGl6ZSBHVEsgc3VwcG9ydC4iKTsKKwlXUk4oIkNv
dWxkIG5vdCBpbml0aWFsaXplIEdUSyBzdXBwb3J0LiIpOwogI2VuZGlmCiAKICAgICBpZiAoIWVj
b3JlX21haW5fbG9vcF9nbGliX2ludGVncmF0ZSgpKQotICAgICAgICBXUk4oIkVjb3JlIHdhcyBu
b3QgY29tcGlsZWQgd2l0aCBHTGliIHN1cHBvcnQsIHNvbWUgcGx1Z2lucyB3aWxsIG5vdCAiCi0g
ICAgICAgICAgICAid29yayAoaWU6IEFkb2JlIEZsYXNoKSIpOworCVdSTigiRWNvcmUgd2FzIG5v
dCBjb21waWxlZCB3aXRoIEdMaWIgc3VwcG9ydCwgc29tZSBwbHVnaW5zIHdpbGwgbm90ICIKKwkg
ICAgIndvcmsgKGllOiBBZG9iZSBGbGFzaCkiKTsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwpAQCAtMTczLDMwICsxNzMsMzAg
QEAgRWluYV9Cb29sIF9ld2tfaW5pdF9ib2R5KHZvaWQpCiAgICAgc3RydWN0IHN0YXQgc3RhdGU7
CiAgICAgLy8gY2hlY2sgaG9tZSBkaXJlY3RvcnkgZmlyc3QKICAgICBpZiAoc3RhdChob21lLnV0
ZjgoKS5kYXRhKCksICZzdGF0ZSkgPT0gLTEpIHsKLSAgICAgICAgLy8gRXhpdCBub3cgLSBvdGhl
cndpc2UgeW91IG1heSBoYXZlIHNvbWUgY3Jhc2ggbGF0ZXIKLSAgICAgICAgaW50IGVycm5vd2Fz
ID0gZXJybm87Ci0gICAgICAgIENSSVRJQ0FMKCJDYW4ndCBhY2Nlc3MgSE9NRSBkaXIgKG9yIC90
bXApIC0gbm8gcGxhY2UgdG8gc2F2ZSBkYXRhYmFzZXM6ICVzIiwgc3RyZXJyb3IoZXJybm93YXMp
KTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJLy8gRXhpdCBub3cgLSBvdGhlcndpc2Ug
eW91IG1heSBoYXZlIHNvbWUgY3Jhc2ggbGF0ZXIKKwlpbnQgZXJybm93YXMgPSBlcnJubzsKKwlD
UklUSUNBTCgiQ2FuJ3QgYWNjZXNzIEhPTUUgZGlyIChvciAvdG1wKSAtIG5vIHBsYWNlIHRvIHNh
dmUgZGF0YWJhc2VzOiAlcyIsIHN0cmVycm9yKGVycm5vd2FzKSk7CisJcmV0dXJuIEVJTkFfRkFM
U0U7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgd2tkaXIgPSBob21lICsgIi8ud2Via2l0IjsK
ICAgICBpZiAoV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKHdrZGlyKSkgewotICAgICAgICBl
d2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KHdrZGlyLnV0ZjgoKS5kYXRhKCkpOwor
CWV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQod2tkaXIudXRmOCgpLmRhdGEoKSk7
CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAgICAgICBld2tfc2V0
dGluZ3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfc2V0KHdrZGlyLnV0ZjgoKS5kYXRhKCkpOworCWV3
a19zZXR0aW5nc19jYWNoZV9kaXJlY3RvcnlfcGF0aF9zZXQod2tkaXIudXRmOCgpLmRhdGEoKSk7
CiAjZW5kaWYKICAgICB9CiAKICAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNv
cmUsIGFscmVhZHkgcmVwb3J0ZWQgdG8gd2Via2l0LWd0ayBmb2xrczoKICNpZiBVU0UoU09VUCkK
ICAgICBpZiAoMSkgewotICAgICAgICBTb3VwU2Vzc2lvbiAqc2Vzc2lvbiA9IFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgICAgICBzb3VwX3Nlc3Npb25fYWRk
X2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09OVEVOVF9TTklGRkVSKTsKLSAg
ICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwgU09VUF9UWVBF
X0NPTlRFTlRfREVDT0RFUik7CisJU291cFNlc3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKwlzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVf
YnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09OVEVOVF9TTklGRkVSKTsKKwlzb3VwX3Nlc3Np
b25fYWRkX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09OVEVOVF9ERUNPREVS
KTsKIAotICAgICAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIGF1dGhfZGlhbG9nID0gc3RhdGljX2Nh
c3Q8U291cFNlc3Npb25GZWF0dXJlKj4oZ19vYmplY3RfbmV3KEVXS19UWVBFX1NPVVBfQVVUSF9E
SUFMT0csIDApKTsKLSAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1
dGhfZGlhbG9nKTsKKwlTb3VwU2Vzc2lvbkZlYXR1cmUqIGF1dGhfZGlhbG9nID0gc3RhdGljX2Nh
c3Q8U291cFNlc3Npb25GZWF0dXJlKj4oZ19vYmplY3RfbmV3KEVXS19UWVBFX1NPVVBfQVVUSF9E
SUFMT0csIDApKTsKKwlzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aF9kaWFs
b2cpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25ldHdvcmsuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcApp
bmRleCA1Yzc4OTIzLi41NGU1ZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25ldHdvcmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5j
cHAKQEAgLTMwLDE4ICszMCwxOCBAQAogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2VuZGlm
CiAKLXZvaWQgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChjb25zdCBjaGFyICpwcm94eSkKK3Zv
aWQgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChjb25zdCBjaGFyKiBwcm94eSkKIHsKICNpZiBV
U0UoU09VUCkKLSAgICBTb3VwU2Vzc2lvbiAqc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CiAKICAgICBpZiAoIXByb3h5KSB7
Ci0gICAgICAgIEVSUigibm8gcHJveHkgdXJpLiByZW1vdmUgcHJveHkgZmVhdHVyZSBpbiBzb3Vw
LiIpOwotICAgICAgICBzb3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9u
LCBTT1VQX1RZUEVfUFJPWFlfUkVTT0xWRVIpOwotICAgICAgICByZXR1cm47CisJRVJSKCJubyBw
cm94eSB1cmkuIHJlbW92ZSBwcm94eSBmZWF0dXJlIGluIHNvdXAuIik7CisJc291cF9zZXNzaW9u
X3JlbW92ZV9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwgU09VUF9UWVBFX1BST1hZX1JFU09MVkVS
KTsKKwlyZXR1cm47CiAgICAgfQogCi0gICAgU291cFVSSSAqdXJpID0gc291cF91cmlfbmV3KHBy
b3h5KTsKKyAgICBTb3VwVVJJKiB1cmkgPSBzb3VwX3VyaV9uZXcocHJveHkpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHVyaSk7CiAKICAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwg
U09VUF9TRVNTSU9OX1BST1hZX1VSSSwgdXJpLCBOVUxMKTsKQEAgLTUxLDE2ICs1MSwxNiBAQCB2
b2lkIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQoY29uc3QgY2hhciAqcHJveHkpCiAjZW5kaWYK
IH0KIAotY29uc3QgY2hhciAqZXdrX25ldHdvcmtfcHJveHlfdXJpX2dldCh2b2lkKQorY29uc3Qg
Y2hhciogZXdrX25ldHdvcmtfcHJveHlfdXJpX2dldCh2b2lkKQogewogI2lmIFVTRShTT1VQKQot
ICAgIFNvdXBVUkkgKnVyaTsKLSAgICBTb3VwU2Vzc2lvbiAqc2Vzc2lvbiA9IFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBVUkkqIHVyaTsKKyAgICBT
b3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vz
c2lvbigpOwogICAgIGdfb2JqZWN0X2dldChzZXNzaW9uLCBTT1VQX1NFU1NJT05fUFJPWFlfVVJJ
LCAmdXJpLCBOVUxMKTsKIAogICAgIGlmICghdXJpKSB7Ci0gICAgICAgIEVSUigibm8gcHJveHkg
dXJpIik7Ci0gICAgICAgIHJldHVybiAwOworCUVSUigibm8gcHJveHkgdXJpIik7CisJcmV0dXJu
IDA7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgcHJveHkgPSBzb3VwX3VyaV90b19zdHJpbmco
dXJpLCBFSU5BX0ZBTFNFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJv
dG9jb2xfaGFuZGxlcl9zb3VwLmNwcAppbmRleCBhZDNmOTIxLi44MzA1NWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9m
aW5hbGl6ZShHT2JqZWN0KiBvYmopCiAgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSogcHJp
diAgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBFV0tfVFlQRV9DVVNUT01fUFJP
VE9DT0xfSEFORExFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlKTsKICAg
ICBpZiAocHJpdikKLSAgICAgICAgZnJlZShwcml2LT5taW1lKTsKKwlmcmVlKHByaXYtPm1pbWUp
OwogCiAgICAgR19PQkpFQ1RfQ0xBU1MoZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3BhcmVu
dF9jbGFzcyktPmZpbmFsaXplKG9iaik7CiB9CkBAIC05NiwxNCArOTYsMTQgQEAgc3RhdGljIEdJ
bnB1dFN0cmVhbSogZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NlbmQoU291cFJlcXVlc3Qq
IHJlcXVlc3QsIEdDYW4KIAogCiAgICAgaWYgKHVyaS0+cGF0aFswXSA9PSAnLycpIHsKLSAgICAg
ICAgYnVmZmVyID0gZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9yZXNvdXJjZV9nZXQoZnJhbWVM
b2FkZXJDbGllbnQtPndlYlZpZXcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzUmVhZCwgJm1pbWUsIHVyaS0+cGF0aCArIDEp
OyAvLyBUaGUgcGF0aCBpcyBhbHdheXMgaW5pdGlhbGl6ZWQgd2l0aCAvLgorCWJ1ZmZlciA9IGV3
a192aWV3X3Byb3RvY29sX2hhbmRsZXJfcmVzb3VyY2VfZ2V0KGZyYW1lTG9hZGVyQ2xpZW50LT53
ZWJWaWV3KCksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmJ5dGVzUmVhZCwgJm1pbWUsIHVyaS0+cGF0aCArIDEpOyAvLyBUaGUgcGF0aCBpcyBhbHdh
eXMgaW5pdGlhbGl6ZWQgd2l0aCAvLgogICAgIH0gZWxzZQotICAgICAgICBidWZmZXIgPSBld2tf
dmlld19wcm90b2NvbF9oYW5kbGVyX3Jlc291cmNlX2dldChmcmFtZUxvYWRlckNsaWVudC0+d2Vi
VmlldygpLCAmYnl0ZXNSZWFkLCAmbWltZSwgdXJpLT5ob3N0KTsKKwlidWZmZXIgPSBld2tfdmll
d19wcm90b2NvbF9oYW5kbGVyX3Jlc291cmNlX2dldChmcmFtZUxvYWRlckNsaWVudC0+d2ViVmll
dygpLCAmYnl0ZXNSZWFkLCAmbWltZSwgdXJpLT5ob3N0KTsKIAogICAgIHByaXYtPmJ5dGVzUmVh
ZCA9IGJ5dGVzUmVhZDsKICAgICBpZiAobWltZSkKLSAgICAgICAgcHJpdi0+bWltZSA9IHN0cmR1
cChtaW1lKTsKKwlwcml2LT5taW1lID0gc3RyZHVwKG1pbWUpOwogCiAgICAgcmV0dXJuIGdfbWVt
b3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRhKGJ1ZmZlciwgYnl0ZXNSZWFkLCBmcmVlKTsK
IH0KQEAgLTE1MiwxOSArMTUyLDE5IEBAIEVpbmFfQm9vbCBld2tfY3VzdG9tX3Byb3RvY29sX2hh
bmRsZXJfc291cF9zZXQoY29uc3QgY2hhcioqIHByb3RvY29scykKIAogICAgIHJlcXVlc3RlciA9
IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfUkVRVUVTVEVSKTsK
ICAgICBpZiAoIXJlcXVlc3RlcikgewotICAgICAgICByZXF1ZXN0ZXIgPSBTT1VQX1NFU1NJT05f
RkVBVFVSRShzb3VwX3JlcXVlc3Rlcl9uZXcoKSk7Ci0gICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRf
ZmVhdHVyZShzZXNzaW9uLCByZXF1ZXN0ZXIpOwotICAgICAgICBnX29iamVjdF91bnJlZihyZXF1
ZXN0ZXIpOworCXJlcXVlc3RlciA9IFNPVVBfU0VTU0lPTl9GRUFUVVJFKHNvdXBfcmVxdWVzdGVy
X25ldygpKTsKKwlzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgcmVxdWVzdGVyKTsK
KwlnX29iamVjdF91bnJlZihyZXF1ZXN0ZXIpOwogICAgIH0KIAogICAgIGlmIChzb3VwX3Nlc3Np
b25fZmVhdHVyZV9oYXNfZmVhdHVyZShyZXF1ZXN0ZXIsIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NP
TF9IQU5ETEVSKSkgewotICAgICAgICBjdXN0b21Qcm90b2NvbEFkZGVkQ291bnQrKzsKLSAgICAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKwljdXN0b21Qcm90b2NvbEFkZGVkQ291bnQrKzsKKwlyZXR1
cm4gRUlOQV9UUlVFOwogICAgIH0KIAogICAgIHNjaGVtZXMgPSBnX3N0cmR1cHYoY29uc3RfY2Fz
dDxnY2hhcioqPihwcm90b2NvbHMpKTsKICAgICBpZiAoIShzY2hlbWVzICYmIHNvdXBfc2Vzc2lv
bl9mZWF0dXJlX2FkZF9mZWF0dXJlKHJlcXVlc3RlciwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09M
X0hBTkRMRVIpKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFM
U0U7CiAKICAgICBjdXN0b21Qcm90b2NvbEFkZGVkQ291bnQrKzsKICAgICByZXR1cm4gRUlOQV9U
UlVFOwpAQCAtMTc2LDIwICsxNzYsMjAgQEAgRWluYV9Cb29sIGV3a19jdXN0b21fcHJvdG9jb2xf
aGFuZGxlcl9zb3VwX2FsbF91bnNldCgpCiAgICAgU291cFNlc3Npb25GZWF0dXJlKiByZXF1ZXN0
ZXI7CiAKICAgICBpZiAoIWN1c3RvbVByb3RvY29sQWRkZWRDb3VudCkKLSAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAKICAgICByZXF1ZXN0ZXIgPSBzb3Vw
X3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX1JFUVVFU1RFUik7CiAgICAg
aWYgKCFyZXF1ZXN0ZXIpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCXJldHVybiBFSU5B
X0ZBTFNFOwogCiAgICAgaWYgKCFzb3VwX3Nlc3Npb25fZmVhdHVyZV9oYXNfZmVhdHVyZShyZXF1
ZXN0ZXIsIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSKSkKLSAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAKICAgICBpZiAoY3VzdG9tUHJvdG9j
b2xBZGRlZENvdW50ID09IDEpIHsKLSAgICAgICAgaWYgKHNvdXBfc2Vzc2lvbl9mZWF0dXJlX3Jl
bW92ZV9mZWF0dXJlKHJlcXVlc3RlciwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIp
KQotICAgICAgICAgICAgZ19zdHJmcmVldihzY2hlbWVzKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJaWYgKHNvdXBfc2Vzc2lvbl9mZWF0dXJlX3JlbW92
ZV9mZWF0dXJlKHJlcXVlc3RlciwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIpKQor
CSAgICBnX3N0cmZyZWV2KHNjaGVtZXMpOworCWVsc2UKKwkgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CiAgICAgfQogCiAgICAgY3VzdG9tUHJvdG9jb2xBZGRlZENvdW50LS07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDgxNWNmZDIuLmIwNjlhNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCkBAIC03Myw5ICs3Myw5IEBAIHN0YXRpYyBXVEY6
OlN0cmluZyBfZXdrX3NldHRpbmdzX3dlYmtpdF9vc192ZXJzaW9uX2dldCgpCiAgICAgc3RydWN0
IHV0c25hbWUgbmFtZTsKIAogICAgIGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCi0gICAgICAgIHVh
X29zX3ZlcnNpb24gPSBtYWtlU3RyaW5nKG5hbWUuc3lzbmFtZSwgJyAnLCBuYW1lLm1hY2hpbmUp
OworCXVhX29zX3ZlcnNpb24gPSBtYWtlU3RyaW5nKG5hbWUuc3lzbmFtZSwgJyAnLCBuYW1lLm1h
Y2hpbmUpOwogICAgIGVsc2UKLSAgICAgICAgdWFfb3NfdmVyc2lvbiA9ICJVbmtub3duIjsKKwl1
YV9vc192ZXJzaW9uID0gIlVua25vd24iOwogCiAgICAgcmV0dXJuIHVhX29zX3ZlcnNpb247CiB9
CkBAIC04OSwyMCArODksMjAgQEAgdWludDY0X3QgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9k
ZWZhdWx0X3F1b3RhX2dldCh2b2lkKQogI2VuZGlmCiB9CiAKLXZvaWQgZXdrX3NldHRpbmdzX3dl
Yl9kYXRhYmFzZV9wYXRoX3NldChjb25zdCBjaGFyICpwYXRoKQordm9pZCBld2tfc2V0dGluZ3Nf
d2ViX2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIqIHBhdGgpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKICAgICBXVEY6OlN0cmluZyBjb3JlUGF0aCA9IFdURjo6U3RyaW5nOjpmcm9t
VVRGOChwYXRoKTsKICAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRE
YXRhYmFzZURpcmVjdG9yeVBhdGgoY29yZVBhdGgpOwogICAgIGlmICghX2V3a19kZWZhdWx0X3dl
Yl9kYXRhYmFzZV9wYXRoKQotICAgICAgICBfZXdrX2RlZmF1bHRfd2ViX2RhdGFiYXNlX3BhdGgg
PSBlaW5hX3N0cmluZ3NoYXJlX2FkZChjb3JlUGF0aC51dGY4KCkuZGF0YSgpKTsKKwlfZXdrX2Rl
ZmF1bHRfd2ViX2RhdGFiYXNlX3BhdGggPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChjb3JlUGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICBlbHNlCi0gICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFj
ZSgmX2V3a19kZWZhdWx0X3dlYl9kYXRhYmFzZV9wYXRoLCBjb3JlUGF0aC51dGY4KCkuZGF0YSgp
KTsKKwllaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJl9ld2tfZGVmYXVsdF93ZWJfZGF0YWJhc2Vf
cGF0aCwgY29yZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAKICNlbmRpZgogfQogCi1jb25zdCBjaGFy
ICpld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfZ2V0KHZvaWQpCitjb25zdCBjaGFyKiBl
d2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfZ2V0KHZvaWQpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKICAgICByZXR1cm4gX2V3a19kZWZhdWx0X3dlYl9kYXRhYmFzZV9wYXRoOwpA
QCAtMTExLDU3ICsxMTEsNTcgQEAgY29uc3QgY2hhciAqZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFz
ZV9wYXRoX2dldCh2b2lkKQogI2VuZGlmCiB9CiAKLUVpbmFfQm9vbCBld2tfc2V0dGluZ3NfaWNv
bl9kYXRhYmFzZV9wYXRoX3NldChjb25zdCBjaGFyICpkaXJlY3RvcnkpCitFaW5hX0Jvb2wgZXdr
X3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQoY29uc3QgY2hhciogZGlyZWN0b3J5KQog
ewogICAgIFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKIAog
ICAgIGlmIChkaXJlY3RvcnkpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6Omljb25EYXRhYmFzZSgp
LmlzRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBFUlIoIkljb25EYXRhYmFzZSBpcyBhbHJlYWR5
IG9wZW46ICVzIiwgX2V3a19pY29uX2RhdGFiYXNlX3BhdGgpOwotICAgICAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKLQotICAg
ICAgICBpZiAoc3RhdChkaXJlY3RvcnksICZzdCkpIHsKLSAgICAgICAgICAgIEVSUigiY291bGQg
bm90IHN0YXQoJXMpOiAlcyIsIGRpcmVjdG9yeSwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFTX0lTRElS
KHN0LnN0X21vZGUpKSB7Ci0gICAgICAgICAgICBFUlIoIm5vdCBhIGRpcmVjdG9yeTogJXMiLCBk
aXJlY3RvcnkpOwotICAgICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoYWNjZXNzKGRpcmVjdG9yeSwgUl9PSyB8IFdfT0spKSB7Ci0gICAgICAgICAg
ICBFUlIoImNvdWxkIG5vdCBhY2Nlc3MgZGlyZWN0b3J5ICclcycgZm9yIHJlYWQgYW5kIHdyaXRl
OiAlcyIsCi0gICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBzdHJlcnJvcihlcnJubykpOwotICAg
ICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7Ci0gICAgICAgIH0KLQotICAgICAgICBXZWJDb3Jl
OjppY29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKHRydWUpOwotICAgICAgICBXZWJDb3JlOjppY29u
RGF0YWJhc2UoKS5vcGVuKFdURjo6U3RyaW5nOjpmcm9tVVRGOChkaXJlY3RvcnkpLCBXZWJDb3Jl
OjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkpOwotICAgICAgICBpZiAo
IV9ld2tfaWNvbl9kYXRhYmFzZV9wYXRoKQotICAgICAgICAgICAgX2V3a19pY29uX2RhdGFiYXNl
X3BhdGggPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChkaXJlY3RvcnkpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJl9ld2tfaWNvbl9kYXRhYmFzZV9w
YXRoLCBkaXJlY3RvcnkpOworCWlmIChXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pc0VuYWJsZWQo
KSkgeworCSAgICBFUlIoIkljb25EYXRhYmFzZSBpcyBhbHJlYWR5IG9wZW46ICVzIiwgX2V3a19p
Y29uX2RhdGFiYXNlX3BhdGgpOworCSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwl9CisKKwlzdHJ1
Y3Qgc3RhdCBzdDsKKworCWlmIChzdGF0KGRpcmVjdG9yeSwgJnN0KSkgeworCSAgICBFUlIoImNv
dWxkIG5vdCBzdGF0KCVzKTogJXMiLCBkaXJlY3RvcnksIHN0cmVycm9yKGVycm5vKSk7CisJICAg
IHJldHVybiBFSU5BX0ZBTFNFOworCX0KKworCWlmICghU19JU0RJUihzdC5zdF9tb2RlKSkgewor
CSAgICBFUlIoIm5vdCBhIGRpcmVjdG9yeTogJXMiLCBkaXJlY3RvcnkpOworCSAgICByZXR1cm4g
RUlOQV9GQUxTRTsKKwl9CisKKwlpZiAoYWNjZXNzKGRpcmVjdG9yeSwgUl9PSyB8IFdfT0spKSB7
CisJICAgIEVSUigiY291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgJyVzJyBmb3IgcmVhZCBhbmQg
d3JpdGU6ICVzIiwKKwkgICAgICAgIGRpcmVjdG9yeSwgc3RyZXJyb3IoZXJybm8pKTsKKwkgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisJfQorCisJV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc2V0RW5h
YmxlZCh0cnVlKTsKKwlXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5vcGVuKFdURjo6U3RyaW5nOjpm
cm9tVVRGOChkaXJlY3RvcnkpLCBXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFz
ZUZpbGVuYW1lKCkpOworCWlmICghX2V3a19pY29uX2RhdGFiYXNlX3BhdGgpCisJICAgIF9ld2tf
aWNvbl9kYXRhYmFzZV9wYXRoID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoZGlyZWN0b3J5KTsKKwll
bHNlCisJICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmX2V3a19pY29uX2RhdGFiYXNlX3Bh
dGgsIGRpcmVjdG9yeSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFi
YXNlKCkuc2V0RW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgp
LmNsb3NlKCk7Ci0gICAgICAgIGlmIChfZXdrX2ljb25fZGF0YWJhc2VfcGF0aCkgewotICAgICAg
ICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoX2V3a19pY29uX2RhdGFiYXNlX3BhdGgpOwotICAg
ICAgICAgICAgX2V3a19pY29uX2RhdGFiYXNlX3BhdGggPSAwOwotICAgICAgICB9CisJV2ViQ29y
ZTo6aWNvbkRhdGFiYXNlKCkuc2V0RW5hYmxlZChmYWxzZSk7CisJV2ViQ29yZTo6aWNvbkRhdGFi
YXNlKCkuY2xvc2UoKTsKKwlpZiAoX2V3a19pY29uX2RhdGFiYXNlX3BhdGgpIHsKKwkgICAgZWlu
YV9zdHJpbmdzaGFyZV9kZWwoX2V3a19pY29uX2RhdGFiYXNlX3BhdGgpOworCSAgICBfZXdrX2lj
b25fZGF0YWJhc2VfcGF0aCA9IDA7CisJfQogICAgIH0KICAgICByZXR1cm4gRUlOQV9UUlVFOwog
fQogCi1jb25zdCBjaGFyICpld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCh2b2lk
KQorY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQodm9pZCkK
IHsKICAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgpLmlzRW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKICAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgp
LmlzT3BlbigpKQotICAgICAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKIAogICAgIHJldHVybiBf
ZXdrX2ljb25fZGF0YWJhc2VfcGF0aDsKIH0KQEAgLTE2OSw0MSArMTY5LDQxIEBAIGNvbnN0IGNo
YXIgKmV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0KHZvaWQpCiBFaW5hX0Jvb2wg
ZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfY2xlYXIodm9pZCkKIHsKICAgICBpZiAoIVdlYkNv
cmU6Omljb25EYXRhYmFzZSgpLmlzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKICAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgp
LmlzT3BlbigpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlyZXR1cm4gRUlOQV9GQUxT
RTsKIAogICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnJlbW92ZUFsbEljb25zKCk7CiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY2Fpcm9fc3VyZmFjZV90ICpld2tfc2V0dGluZ3NfaWNv
bl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KGNvbnN0IGNoYXIgKnVybCkKK2NhaXJvX3N1cmZh
Y2VfdCogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldChjb25zdCBj
aGFyKiB1cmwpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgMCk7
CiAKICAgICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6
ZnJvbVVURjgodXJsKSk7Ci0gICAgV2ViQ29yZTo6SW1hZ2UgKmljb24gPSBXZWJDb3JlOjppY29u
RGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGt1cmwuc3RyaW5nKCksIFdlYkNv
cmU6OkludFNpemUoMTYsIDE2KSk7CisgICAgV2ViQ29yZTo6SW1hZ2UqIGljb24gPSBXZWJDb3Jl
OjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGt1cmwuc3RyaW5nKCks
IFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7CiAKICAgICBpZiAoIWljb24pIHsKLSAgICAgICAg
RVJSKCJubyBpY29uIGZvciB1cmwgJXMiLCB1cmwpOwotICAgICAgICByZXR1cm4gMDsKKwlFUlIo
Im5vIGljb24gZm9yIHVybCAlcyIsIHVybCk7CisJcmV0dXJuIDA7CiAgICAgfQogCiAgICAgcmV0
dXJuIGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiB9CiAKLUV2YXNfT2JqZWN0
ICpld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9hZGQoY29uc3QgY2hhciAq
dXJsLCBFdmFzICpjYW52YXMpCitFdmFzX09iamVjdCogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJh
c2VfaWNvbl9vYmplY3RfYWRkKGNvbnN0IGNoYXIqIHVybCwgRXZhcyogY2FudmFzKQogewogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cmwsIDApOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogCiAgICAgV2ViQ29yZTo6S1VSTCBrdXJs
KFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVybCkpOwotICAgIFdlYkNv
cmU6OkltYWdlICppY29uID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29u
Rm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwotICAg
IGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKKyAgICBXZWJDb3JlOjpJbWFnZSogaWNvbiA9IFdl
YkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoa3VybC5zdHJp
bmcoKSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2U7CiAKICAgICBpZiAoIWljb24pIHsKLSAgICAgICAgRVJSKCJubyBpY29uIGZvciB1cmwg
JXMiLCB1cmwpOwotICAgICAgICByZXR1cm4gMDsKKwlFUlIoIm5vIGljb24gZm9yIHVybCAlcyIs
IHVybCk7CisJcmV0dXJuIDA7CiAgICAgfQogCiAgICAgc3VyZmFjZSA9IGljb24tPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBld2tfc2V0dGlu
Z3NfY2FjaGVfZW5hYmxlX3NldChFaW5hX0Jvb2wgc2V0KQogICAgIFdlYkNvcmU6Ok1lbW9yeUNh
Y2hlKiBjYWNoZSA9IFdlYkNvcmU6Om1lbW9yeUNhY2hlKCk7CiAgICAgc2V0ID0gIXNldDsKICAg
ICBpZiAoY2FjaGUtPmRpc2FibGVkKCkgIT0gc2V0KQotICAgICAgICBjYWNoZS0+c2V0RGlzYWJs
ZWQoc2V0KTsKKwljYWNoZS0+c2V0RGlzYWJsZWQoc2V0KTsKIH0KIAogdm9pZCBld2tfc2V0dGlu
Z3NfY2FjaGVfY2FwYWNpdHlfc2V0KHVuc2lnbmVkIGNhcGFjaXR5KQpAQCAtMjQ1LDcgKzI0NSw3
IEBAIHZvaWQgZXdrX3NldHRpbmdzX3JlcGFpbnRfdGhyb3R0bGluZ19zZXQoZG91YmxlIGRlZmVy
cmVkX3JlcGFpbnRfZGVsYXksIGRvdWJsZSBpCiAgKgogICogQHJldHVybiBhIHBvaW50ZXIgdG8g
YW4gZWluYV9zdHJpbmdzaGFyZSBjb250YWluaW5nIHRoZSB1c2VyIGFnZW50IHN0cmluZwogICov
Ci1jb25zdCBjaGFyICpld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCh2b2lkKQor
Y29uc3QgY2hhciogZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQodm9pZCkKIHsK
ICAgICBXVEY6OlN0cmluZyB1YV92ZXJzaW9uID0gbWFrZVN0cmluZyhTdHJpbmc6Om51bWJlcihX
RUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9OKSwgJy4nLCBTdHJpbmc6Om51bWJlcihXRUJL
SVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OKSwgJysnKTsKICAgICBXVEY6OlN0cmluZyBzdGF0
aWNfdWEgPSBtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoIiwgX2V3a19zZXR0aW5nc193ZWJraXRf
cGxhdGZvcm1fZ2V0KCksICI7ICIsIF9ld2tfc2V0dGluZ3Nfd2Via2l0X29zX3ZlcnNpb25fZ2V0
KCksICIpIEFwcGxlV2ViS2l0LyIsIHVhX3ZlcnNpb24pICsgbWFrZVN0cmluZygiIChLSFRNTCwg
bGlrZSBHZWNrbykgVmVyc2lvbi81LjAgU2FmYXJpLyIsIHVhX3ZlcnNpb24pOwpAQCAtMjUzLDI0
ICsyNTMsMjQgQEAgY29uc3QgY2hhciAqZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9n
ZXQodm9pZCkKICAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc3RhdGljX3VhLnV0Zjgo
KS5kYXRhKCkpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3NldHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9w
YXRoX3NldChjb25zdCBjaGFyICpwYXRoKQorRWluYV9Cb29sIGV3a19zZXR0aW5nc19jYWNoZV9k
aXJlY3RvcnlfcGF0aF9zZXQoY29uc3QgY2hhciogcGF0aCkKIHsKICNpZiBFTkFCTEUoT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKQogICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAKICAgICBXZWJDb3JlOjpjYWNoZVN0b3JhZ2Uo
KS5zZXRDYWNoZURpcmVjdG9yeShXVEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwogICAgIGlm
ICghX2V3a19jYWNoZV9kaXJlY3RvcnlfcGF0aCkKLSAgICAgICAgX2V3a19jYWNoZV9kaXJlY3Rv
cnlfcGF0aCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHBhdGgpOworCV9ld2tfY2FjaGVfZGlyZWN0
b3J5X3BhdGggPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChwYXRoKTsKICAgICBlbHNlCi0gICAgICAg
IGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmX2V3a19jYWNoZV9kaXJlY3RvcnlfcGF0aCwgcGF0
aCk7CisJZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZfZXdrX2NhY2hlX2RpcmVjdG9yeV9wYXRo
LCBwYXRoKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogI2Vsc2UKICAgICBFSU5BX1NBRkVUWV9P
Tl9UUlVFX1JFVFVSTl9WQUwoMSwgRUlOQV9GQUxTRSk7CiAjZW5kaWYKIH0KIAotY29uc3QgY2hh
ciAqZXdrX3NldHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9wYXRoX2dldCgpCitjb25zdCBjaGFyKiBl
d2tfc2V0dGluZ3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfZ2V0KCkKIHsKICNpZiBFTkFCTEUoT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIHJldHVybiBfZXdrX2NhY2hlX2RpcmVjdG9yeV9w
YXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKaW5kZXggMDhiM2MwMy4uZjYwZmUzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCkBAIC0zOCw1NyArMzgsNTcgQEAKICAqIEBw
YXJhbSBzdXJmYWNlIGNhaXJvIHJlcHJlc2VudGF0aW9uIG9mIGFuIGltYWdlCiAgKiBAcmV0dXJu
IGNvbnZlcnRlZCBjYWlyb19zdXJmYWNlIG9iamVjdCB0byB0aGUgRXZhc19PYmplY3QKICAqLwot
RXZhc19PYmplY3QgKmV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoRXZhcyAq
Y2FudmFzLCBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2UpCitFdmFzX09iamVjdCogZXdrX3V0aWxf
aW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZChFdmFzKiBjYW52YXMsIGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSkKIHsKICAgICBjYWlyb19zdGF0dXNfdCBzdGF0dXM7CiAgICAgY2Fpcm9fc3Vy
ZmFjZV90eXBlX3QgdHlwZTsKICAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7CiAgICAgaW50IHcs
IGgsIHN0cmlkZTsKLSAgICBFdmFzX09iamVjdCAqaW1hZ2U7Ci0gICAgY29uc3Qgdm9pZCAqc3Jj
OwotICAgIHZvaWQgKmRzdDsKKyAgICBFdmFzX09iamVjdCogaW1hZ2U7CisgICAgY29uc3Qgdm9p
ZCogc3JjOworICAgIHZvaWQqIGRzdDsKIAogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzdXJm
YWNlLCAwKTsKIAogICAgIHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpOwog
ICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKLSAgICAgICAgRVJSKCJj
YWlybyBzdXJmYWNlIGlzIGludmFsaWQ6ICVzIiwgY2Fpcm9fc3RhdHVzX3RvX3N0cmluZyhzdGF0
dXMpKTsKLSAgICAgICAgcmV0dXJuIDA7CisJRVJSKCJjYWlybyBzdXJmYWNlIGlzIGludmFsaWQ6
ICVzIiwgY2Fpcm9fc3RhdHVzX3RvX3N0cmluZyhzdGF0dXMpKTsKKwlyZXR1cm4gMDsKICAgICB9
CiAKICAgICB0eXBlID0gY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlKTsKICAgICBpZiAo
dHlwZSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpIHsKLSAgICAgICAgRVJSKCJ1bmtub3du
IHN1cmZhY2UgdHlwZSAlZCwgcmVxdWlyZWQgJWQgKENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSku
IiwKLSAgICAgICAgICAgIHR5cGUsIENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7Ci0gICAgICAg
IHJldHVybiAwOworCUVSUigidW5rbm93biBzdXJmYWNlIHR5cGUgJWQsIHJlcXVpcmVkICVkIChD
QUlST19TVVJGQUNFX1RZUEVfSU1BR0UpLiIsCisJICAgIHR5cGUsIENBSVJPX1NVUkZBQ0VfVFlQ
RV9JTUFHRSk7CisJcmV0dXJuIDA7CiAgICAgfQogCiAgICAgZm9ybWF0ID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfZm9ybWF0KHN1cmZhY2UpOwogICAgIGlmIChmb3JtYXQgIT0gQ0FJUk9fRk9S
TUFUX0FSR0IzMiAmJiBmb3JtYXQgIT0gQ0FJUk9fRk9STUFUX1JHQjI0KSB7Ci0gICAgICAgIEVS
UigidW5rbm93biBzdXJmYWNlIGZvcm1hdCAlZCwgZXhwZWN0ZWQgJWQgb3IgJWQuIiwKLSAgICAg
ICAgICAgIGZvcm1hdCwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgQ0FJUk9fRk9STUFUX1JHQjI0KTsK
LSAgICAgICAgcmV0dXJuIDA7CisJRVJSKCJ1bmtub3duIHN1cmZhY2UgZm9ybWF0ICVkLCBleHBl
Y3RlZCAlZCBvciAlZC4iLAorCSAgICBmb3JtYXQsIENBSVJPX0ZPUk1BVF9BUkdCMzIsIENBSVJP
X0ZPUk1BVF9SR0IyNCk7CisJcmV0dXJuIDA7CiAgICAgfQogCiAgICAgdyA9IGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOwogICAgIGggPSBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9oZWlnaHQoc3VyZmFjZSk7CiAgICAgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfc3RyaWRlKHN1cmZhY2UpOwogICAgIGlmICh3IDw9IDAgfHwgaCA8PSAwIHx8IHN0cmlkZSA8
PSAwKSB7Ci0gICAgICAgIEVSUigiaW52YWxpZCBpbWFnZSBzaXplICVkeCVkLCBzdHJpZGU9JWQi
LCB3LCBoLCBzdHJpZGUpOwotICAgICAgICByZXR1cm4gMDsKKwlFUlIoImludmFsaWQgaW1hZ2Ug
c2l6ZSAlZHglZCwgc3RyaWRlPSVkIiwgdywgaCwgc3RyaWRlKTsKKwlyZXR1cm4gMDsKICAgICB9
CiAKICAgICBzcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpOwogICAg
IGlmICghc3JjKSB7Ci0gICAgICAgIEVSUigiY291bGQgbm90IGdldCBzb3VyY2UgZGF0YS4iKTsK
LSAgICAgICAgcmV0dXJuIDA7CisJRVJSKCJjb3VsZCBub3QgZ2V0IHNvdXJjZSBkYXRhLiIpOwor
CXJldHVybiAwOwogICAgIH0KIAogICAgIGltYWdlID0gZXZhc19vYmplY3RfaW1hZ2VfZmlsbGVk
X2FkZChjYW52YXMpOwogICAgIGlmICghaW1hZ2UpIHsKLSAgICAgICAgRVJSKCJjb3VsZCBub3Qg
YWRkIGltYWdlIHRvIGNhbnZhcy4iKTsKLSAgICAgICAgcmV0dXJuIDA7CisJRVJSKCJjb3VsZCBu
b3QgYWRkIGltYWdlIHRvIGNhbnZhcy4iKTsKKwlyZXR1cm4gMDsKICAgICB9CiAKICAgICBldmFz
X29iamVjdF9pbWFnZV9jb2xvcnNwYWNlX3NldChpbWFnZSwgRVZBU19DT0xPUlNQQUNFX0FSR0I4
ODg4KTsKQEAgLTk2LDEwICs5NiwxMCBAQCBFdmFzX09iamVjdCAqZXdrX3V0aWxfaW1hZ2VfZnJv
bV9jYWlyb19zdXJmYWNlX2FkZChFdmFzICpjYW52YXMsIGNhaXJvX3N1cmZhY2VfdAogICAgIGV2
YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChpbWFnZSwgZm9ybWF0ID09IENBSVJPX0ZPUk1BVF9B
UkdCMzIpOwogCiAgICAgaWYgKGV2YXNfb2JqZWN0X2ltYWdlX3N0cmlkZV9nZXQoaW1hZ2UpICE9
IHN0cmlkZSkgewotICAgICAgICBFUlIoImV2YXMnIHN0cmlkZSAlZCBkaXZlcmdlcyBmcm9tIGNh
aXJvJ3MgJWQuIiwKLSAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX3N0cmlkZV9nZXQoaW1h
Z2UpLCBzdHJpZGUpOwotICAgICAgICBldmFzX29iamVjdF9kZWwoaW1hZ2UpOwotICAgICAgICBy
ZXR1cm4gMDsKKwlFUlIoImV2YXMnIHN0cmlkZSAlZCBkaXZlcmdlcyBmcm9tIGNhaXJvJ3MgJWQu
IiwKKwkgICAgZXZhc19vYmplY3RfaW1hZ2Vfc3RyaWRlX2dldChpbWFnZSksIHN0cmlkZSk7CisJ
ZXZhc19vYmplY3RfZGVsKGltYWdlKTsKKwlyZXR1cm4gMDsKICAgICB9CiAKICAgICBkc3QgPSBl
dmFzX29iamVjdF9pbWFnZV9kYXRhX2dldChpbWFnZSwgRUlOQV9UUlVFKTsKQEAgLTE2Nyw4ICsx
NjcsOCBAQCB1bnNpZ25lZCBld2tfdXRpbF93b3JrZXJfdGhyZWFkX2NvdW50KCkKIGludCBld2tf
dXRpbF9kcGlfZ2V0KHZvaWQpCiB7CiAjaWZkZWYgSEFWRV9FQ09SRV9YCi0gICAgIHJldHVybiBl
Y29yZV94X2RwaV9nZXQoKTsKKyAgICByZXR1cm4gZWNvcmVfeF9kcGlfZ2V0KCk7CiAjZWxzZQot
ICAgICByZXR1cm4gMTYwOworICAgIHJldHVybiAxNjA7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCmluZGV4IGNlNTU1ZmQuLjIzNTViZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmNwcApAQCAtODgsOTEgKzg4LDkxIEBAIHN0YXRpYyBjb25zdCBzaXplX3QgRVdL
X1ZJRVdfU0NST0xMU19TSVpFX01BWF9GUkVFID0gMzI7CiAgKiBAaW50ZXJuYWwKICAqLwogc3Ry
dWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewotICAgIFdlYkNvcmU6OlBhZ2UgKnBhZ2U7Ci0g
ICAgV2ViQ29yZTo6U2V0dGluZ3MgKnBhZ2Vfc2V0dGluZ3M7Ci0gICAgV2ViQ29yZTo6RnJhbWUg
Km1haW5fZnJhbWU7CisgICAgV2ViQ29yZTo6UGFnZSogcGFnZTsKKyAgICBXZWJDb3JlOjpTZXR0
aW5ncyogcGFnZV9zZXR0aW5nczsKKyAgICBXZWJDb3JlOjpGcmFtZSogbWFpbl9mcmFtZTsKICAg
ICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydF9hcmd1bWVudHM7Ci0gICAgRXdr
X0hpc3RvcnkgKmhpc3Rvcnk7CisgICAgRXdrX0hpc3RvcnkqIGhpc3Rvcnk7CiAgICAgc3RydWN0
IHsKLSAgICAgICAgdm9pZCogY29udGV4dDsKLSAgICAgICAgRXdrX1ZpZXdfUmVzb3VyY2VfSGFu
ZGxlcl9DYiBmdW5jdGlvbjsKKwl2b2lkKiBjb250ZXh0OworCUV3a19WaWV3X1Jlc291cmNlX0hh
bmRsZXJfQ2IgZnVuY3Rpb247CiAgICAgfSBjdXN0b21fcmVzb3VyY2VfaGFuZGxlcjsKICAgICBz
dHJ1Y3QgewotICAgICAgICBFd2tfTWVudSBtZW51OwotICAgICAgICBXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQgKm1lbnVfY2xpZW50OworCUV3a19NZW51IG1lbnU7CisJV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KiBtZW51X2NsaWVudDsKICAgICB9IHBvcHVwOwogICAgIHN0cnVjdCB7Ci0gICAg
ICAgIEVpbmFfUmVjdGFuZ2xlICphcnJheTsKLSAgICAgICAgc2l6ZV90IGNvdW50OwotICAgICAg
ICBzaXplX3QgYWxsb2NhdGVkOworCUVpbmFfUmVjdGFuZ2xlKiBhcnJheTsKKwlzaXplX3QgY291
bnQ7CisJc2l6ZV90IGFsbG9jYXRlZDsKICAgICB9IHJlcGFpbnRzOwogICAgIHN0cnVjdCB7Ci0g
ICAgICAgIEV3a19TY3JvbGxfUmVxdWVzdCAqYXJyYXk7Ci0gICAgICAgIHNpemVfdCBjb3VudDsK
LSAgICAgICAgc2l6ZV90IGFsbG9jYXRlZDsKKwlFd2tfU2Nyb2xsX1JlcXVlc3QqIGFycmF5Owor
CXNpemVfdCBjb3VudDsKKwlzaXplX3QgYWxsb2NhdGVkOwogICAgIH0gc2Nyb2xsczsKICAgICB1
bnNpZ25lZCBpbnQgaW1oOyAvKio8IGlucHV0IG1ldGhvZCBoaW50cyAqLwogICAgIHN0cnVjdCB7
Ci0gICAgICAgIEVpbmFfQm9vbCB2aWV3X2NsZWFyZWQ6MTsKLSAgICAgICAgRWluYV9Cb29sIG5l
ZWRfdG91Y2hfZXZlbnRzOjE7CisJRWluYV9Cb29sIHZpZXdfY2xlYXJlZCA6IDE7CisJRWluYV9C
b29sIG5lZWRfdG91Y2hfZXZlbnRzIDogMTsKICAgICB9IGZsYWdzOwogICAgIHN0cnVjdCB7Ci0g
ICAgICAgIGNvbnN0IGNoYXIgKnVzZXJfYWdlbnQ7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnVzZXJf
c3R5bGVzaGVldDsKLSAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmdfZGVmYXVsdDsKLSAgICAg
ICAgY29uc3QgY2hhciAqZW5jb2RpbmdfY3VzdG9tOwotICAgICAgICBjb25zdCBjaGFyICp0aGVt
ZTsKLSAgICAgICAgY29uc3QgY2hhciAqbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoOwotICAg
ICAgICBpbnQgZm9udF9taW5pbXVtX3NpemU7Ci0gICAgICAgIGludCBmb250X21pbmltdW1fbG9n
aWNhbF9zaXplOwotICAgICAgICBpbnQgZm9udF9kZWZhdWx0X3NpemU7Ci0gICAgICAgIGludCBm
b250X21vbm9zcGFjZV9zaXplOwotICAgICAgICBjb25zdCBjaGFyICpmb250X3N0YW5kYXJkOwot
ICAgICAgICBjb25zdCBjaGFyICpmb250X2N1cnNpdmU7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZv
bnRfbW9ub3NwYWNlOwotICAgICAgICBjb25zdCBjaGFyICpmb250X2ZhbnRhc3k7Ci0gICAgICAg
IGNvbnN0IGNoYXIgKmZvbnRfc2VyaWY7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfc2Fuc19z
ZXJpZjsKLSAgICAgICAgRWluYV9Cb29sIGF1dG9fbG9hZF9pbWFnZXM6MTsKLSAgICAgICAgRWlu
YV9Cb29sIGF1dG9fc2hyaW5rX2ltYWdlczoxOwotICAgICAgICBFaW5hX0Jvb2wgZW5hYmxlX2F1
dG9fcmVzaXplX3dpbmRvdzoxOwotICAgICAgICBFaW5hX0Jvb2wgZW5hYmxlX2RldmVsb3Blcl9l
eHRyYXM6MTsKLSAgICAgICAgRWluYV9Cb29sIGVuYWJsZV9zY3JpcHRzOjE7Ci0gICAgICAgIEVp
bmFfQm9vbCBlbmFibGVfcGx1Z2luczoxOwotICAgICAgICBFaW5hX0Jvb2wgZW5hYmxlX2ZyYW1l
X2ZsYXR0ZW5pbmc6MTsKLSAgICAgICAgRWluYV9Cb29sIGVuY29kaW5nX2RldGVjdG9yOjE7Ci0g
ICAgICAgIEVpbmFfQm9vbCBzY3JpcHRzX3dpbmRvd19vcGVuOjE7Ci0gICAgICAgIEVpbmFfQm9v
bCBzY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzOjE7Ci0gICAgICAgIEVpbmFfQm9vbCByZXNpemFi
bGVfdGV4dGFyZWFzOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBwcml2YXRlX2Jyb3dzaW5nOjE7Ci0g
ICAgICAgIEVpbmFfQm9vbCBjYXJldF9icm93c2luZzoxOwotICAgICAgICBFaW5hX0Jvb2wgc3Bh
dGlhbF9uYXZpZ2F0aW9uOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBsb2NhbF9zdG9yYWdlOjE7Ci0g
ICAgICAgIEVpbmFfQm9vbCBvZmZsaW5lX2FwcF9jYWNoZTogMTsKLSAgICAgICAgRWluYV9Cb29s
IHBhZ2VfY2FjaGU6IDE7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBmbG9hdCBtaW5f
c2NhbGU7Ci0gICAgICAgICAgICBmbG9hdCBtYXhfc2NhbGU7Ci0gICAgICAgICAgICBFaW5hX0Jv
b2wgdXNlcl9zY2FsYWJsZToxOwotICAgICAgICB9IHpvb21fcmFuZ2U7Ci0gICAgICAgIGZsb2F0
IGRldmljZV9waXhlbF9yYXRpbzsKLSAgICAgICAgZG91YmxlIGRvbV90aW1lcl9pbnRlcnZhbDsK
Kwljb25zdCBjaGFyKiB1c2VyX2FnZW50OworCWNvbnN0IGNoYXIqIHVzZXJfc3R5bGVzaGVldDsK
Kwljb25zdCBjaGFyKiBlbmNvZGluZ19kZWZhdWx0OworCWNvbnN0IGNoYXIqIGVuY29kaW5nX2N1
c3RvbTsKKwljb25zdCBjaGFyKiB0aGVtZTsKKwljb25zdCBjaGFyKiBsb2NhbF9zdG9yYWdlX2Rh
dGFiYXNlX3BhdGg7CisJaW50IGZvbnRfbWluaW11bV9zaXplOworCWludCBmb250X21pbmltdW1f
bG9naWNhbF9zaXplOworCWludCBmb250X2RlZmF1bHRfc2l6ZTsKKwlpbnQgZm9udF9tb25vc3Bh
Y2Vfc2l6ZTsKKwljb25zdCBjaGFyKiBmb250X3N0YW5kYXJkOworCWNvbnN0IGNoYXIqIGZvbnRf
Y3Vyc2l2ZTsKKwljb25zdCBjaGFyKiBmb250X21vbm9zcGFjZTsKKwljb25zdCBjaGFyKiBmb250
X2ZhbnRhc3k7CisJY29uc3QgY2hhciogZm9udF9zZXJpZjsKKwljb25zdCBjaGFyKiBmb250X3Nh
bnNfc2VyaWY7CisJRWluYV9Cb29sIGF1dG9fbG9hZF9pbWFnZXMgOiAxOworCUVpbmFfQm9vbCBh
dXRvX3Nocmlua19pbWFnZXMgOiAxOworCUVpbmFfQm9vbCBlbmFibGVfYXV0b19yZXNpemVfd2lu
ZG93IDogMTsKKwlFaW5hX0Jvb2wgZW5hYmxlX2RldmVsb3Blcl9leHRyYXMgOiAxOworCUVpbmFf
Qm9vbCBlbmFibGVfc2NyaXB0cyA6IDE7CisJRWluYV9Cb29sIGVuYWJsZV9wbHVnaW5zIDogMTsK
KwlFaW5hX0Jvb2wgZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgOiAxOworCUVpbmFfQm9vbCBlbmNv
ZGluZ19kZXRlY3RvciA6IDE7CisJRWluYV9Cb29sIHNjcmlwdHNfd2luZG93X29wZW4gOiAxOwor
CUVpbmFfQm9vbCBzY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzIDogMTsKKwlFaW5hX0Jvb2wgcmVz
aXphYmxlX3RleHRhcmVhcyA6IDE7CisJRWluYV9Cb29sIHByaXZhdGVfYnJvd3NpbmcgOiAxOwor
CUVpbmFfQm9vbCBjYXJldF9icm93c2luZyA6IDE7CisJRWluYV9Cb29sIHNwYXRpYWxfbmF2aWdh
dGlvbiA6IDE7CisJRWluYV9Cb29sIGxvY2FsX3N0b3JhZ2UgOiAxOworCUVpbmFfQm9vbCBvZmZs
aW5lX2FwcF9jYWNoZSA6IDE7CisJRWluYV9Cb29sIHBhZ2VfY2FjaGUgOiAxOworCXN0cnVjdCB7
CisJICAgIGZsb2F0IG1pbl9zY2FsZTsKKwkgICAgZmxvYXQgbWF4X3NjYWxlOworCSAgICBFaW5h
X0Jvb2wgdXNlcl9zY2FsYWJsZSA6IDE7CisJfSB6b29tX3JhbmdlOworCWZsb2F0IGRldmljZV9w
aXhlbF9yYXRpbzsKKwlkb3VibGUgZG9tX3RpbWVyX2ludGVydmFsOwogICAgIH0gc2V0dGluZ3M7
CiAgICAgc3RydWN0IHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGRvdWJsZSBzdGFy
dDsKLSAgICAgICAgICAgIGRvdWJsZSBlbmQ7Ci0gICAgICAgICAgICBkb3VibGUgZHVyYXRpb247
Ci0gICAgICAgIH0gdGltZTsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGZsb2F0IHN0
YXJ0OwotICAgICAgICAgICAgZmxvYXQgZW5kOwotICAgICAgICAgICAgZmxvYXQgcmFuZ2U7Ci0g
ICAgICAgIH0gem9vbTsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIEV2YXNfQ29vcmQg
eCwgeTsKLSAgICAgICAgfSBjZW50ZXI7Ci0gICAgICAgIEVjb3JlX0FuaW1hdG9yICphbmltYXRv
cjsKKwlzdHJ1Y3QgeworCSAgICBkb3VibGUgc3RhcnQ7CisJICAgIGRvdWJsZSBlbmQ7CisJICAg
IGRvdWJsZSBkdXJhdGlvbjsKKwl9IHRpbWU7CisJc3RydWN0IHsKKwkgICAgZmxvYXQgc3RhcnQ7
CisJICAgIGZsb2F0IGVuZDsKKwkgICAgZmxvYXQgcmFuZ2U7CisJfSB6b29tOworCXN0cnVjdCB7
CisJICAgIEV2YXNfQ29vcmQgeCwgeTsKKwl9IGNlbnRlcjsKKwlFY29yZV9BbmltYXRvciogYW5p
bWF0b3I7CiAgICAgfSBhbmltYXRlZF96b29tOwogfTsKIApAQCAtMTgxLDQxICsxODEsNDEgQEAg
c3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogI2Vsc2UKICNkZWZpbmUgRVdLX1ZJRVdf
VFlQRV9DSEVDSyhvLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY29uc3QgY2hhciAqX3RtcF9vdHlwZSA9IGV2YXNf
b2JqZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgY29uc3QgRXZhc19T
bWFydCAqX3RtcF9zID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KG8pOyAgICAgIFwKLSAg
ICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfcykpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAoIiVwICgl
cykgaXMgbm90IGEgc21hcnQgb2JqZWN0ISIsIG8sICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
Y29uc3QgRXZhc19TbWFydF9DbGFzcyAqX3RtcF9zYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KF90
bXBfcyk7IFwKLSAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfc2MpKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg
ICAgICAoIiVwICglcykgaXMgbm90IGEgc21hcnQgb2JqZWN0ISIsIG8sICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwp
Iik7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoX3RtcF9zYy0+ZGF0YSAhPSBFV0tfVklFV19U
WVBFX1NUUikpIHsgICAgICAgIFwKLSAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAo
IiVwICglcykgaXMgbm90IG9mIGFuIGV3a192aWV3IChuZWVkICVwLCBnb3QgJXApISIsICAgIFwK
LSAgICAgICAgICAgICAgICAgbywgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIiwg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgRVdLX1ZJRVdfVFlQRV9TVFIsIF90
bXBfc2MtPmRhdGEpOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBf
X1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKwljb25zdCBjaGFyKiBfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlw
ZV9nZXQobyk7ICAgICAgICAgICAgICAgXAorCWNvbnN0IEV2YXNfU21hcnQqIF90bXBfcyA9IGV2
YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsgICAgICBcCisJaWYgKEVJTkFfVU5MSUtFTFko
IV90bXBfcykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkgICAgRUlO
QV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorCSAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAg
ICAgICAgICAgICBcCisJICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCki
KTsgICAgICAgICAgICAgICAgICAgXAorCSAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwljb25zdCBFdmFz
X1NtYXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFydF9jbGFzc19nZXQoX3RtcF9zKTsgXAor
CWlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3NjKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisJICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKwkgICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBv
YmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXAorCSAgICAgICAgX3RtcF9vdHlwZSA/IF90
bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAgICAgICAgIFwKKwkgICAgcmV0dXJuIF9f
VkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCX0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisJaWYgKEVJTkFfVU5MSUtFTFkoX3RtcF9zYy0+ZGF0YSAhPSBFV0tfVklFV19UWVBF
X1NUUikpIHsgICAgICAgIFwKKwkgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBv
ZiBhbiBld2tfdmlldyAobmVlZCAlcCwgZ290ICVwKSEiLCAgICBcCisJICAgICAgICBvLCBfdG1w
X290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiLCAgICAgICAgICAgICAgICAgXAorCSAgICAg
ICAgRVdLX1ZJRVdfVFlQRV9TVFIsIF90bXBfc2MtPmRhdGEpOyAgICAgICAgICAgICAgICAgICAg
IFwKKwkgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKICNlbmRpZgogCiAjZGVm
aW5lIEVXS19WSUVXX1NEX0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfVmlld19TbWFydF9EYXRh
ICopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKKyAgICBFd2tfVmlld19TbWFydF9EYXRh
ICpwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQo
bykKIAogI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwgLi4uKSAgICAg
ICAgICBcCiAgICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAg
ICAgICAgIFwKICAgICBFV0tfVklFV19TRF9HRVQobywgcHRyKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIGlmICghcHRyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIENSSVRJQ0FMKCJubyBzbWFydCBkYXRhIGZvciBvYmplY3Qg
JXAgKCVzKSIsICAgIFwKLSAgICAgICAgICAgICAgICAgbywgZXZhc19vYmplY3RfdHlwZV9nZXQo
bykpOyAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisJQ1JJVElDQUwoIm5vIHNtYXJ0IGRhdGEgZm9yIG9iamVjdCAl
cCAoJXMpIiwgICAgXAorCSAgICAgICAgIG8sIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pKTsgICAg
ICAgICAgIFwKKwlyZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgfQogCiAjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwdHIpICAgICAgICAg
ICAgICBcCkBAIC0yMjQsNDQgKzIyNCw0NCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSB7CiAjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHRyLCAuLi4pICAg
ICAgICAgICAgICAgXAogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwdHIpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENSSVRJQ0FMKCJubyBw
cml2YXRlIGRhdGEgZm9yIG9iamVjdCAlcCAoJXMpIiwgICAgICAgICAgXAotICAgICAgICAgICAg
ICAgICBzZC0+c2VsZiwgZXZhc19vYmplY3RfdHlwZV9nZXQoc2QtPnNlbGYpKTsgICAgIFwKLSAg
ICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisJQ1JJVElDQUwoIm5vIHByaXZhdGUgZGF0YSBmb3Igb2JqZWN0ICVwICglcykiLCAg
ICAgICAgICBcCisJICAgICAgICAgc2QtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNkLT5z
ZWxmKSk7ICAgICBcCisJcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hh
bmdlZChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIGlmIChzZC0+Y2hhbmdl
ZC5hbnkpCi0gICAgICAgIHJldHVybjsKKwlyZXR1cm47CiAgICAgc2QtPmNoYW5nZWQuYW55ID0g
RUlOQV9UUlVFOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NoYW5nZWQoc2QtPnNlbGYpOwogfQog
Ci1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19yZXBhaW50c19yZXNpemUoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2LCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3JlcGFpbnRzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCBzaXpl
KQogewotICAgIHZvaWQgKnRtcCA9IHJlYWxsb2MocHJpdi0+cmVwYWludHMuYXJyYXksIHNpemUg
KiBzaXplb2YoRWluYV9SZWN0YW5nbGUpKTsKKyAgICB2b2lkKiB0bXAgPSByZWFsbG9jKHByaXYt
PnJlcGFpbnRzLmFycmF5LCBzaXplICogc2l6ZW9mKEVpbmFfUmVjdGFuZ2xlKSk7CiAgICAgaWYg
KCF0bXApIHsKLSAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCByZWFsbG9jIHJlcGFpbnRzIGFy
cmF5IHRvICV6dSBlbGVtZW50cy4iLCBzaXplKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisJQ1JJVElDQUwoImNvdWxkIG5vdCByZWFsbG9jIHJlcGFpbnRzIGFycmF5IHRvICV6dSBlbGVt
ZW50cy4iLCBzaXplKTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJpdi0+cmVw
YWludHMuYWxsb2NhdGVkID0gc2l6ZTsKLSAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5h
X1JlY3RhbmdsZSAqKXRtcDsKKyAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5hX1JlY3Rh
bmdsZSopdG1wOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tf
dmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQg
eCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNf
Q29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKLSAg
ICBFaW5hX1JlY3RhbmdsZSAqcjsKKyAgICBFaW5hX1JlY3RhbmdsZSogcjsKIAogICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiPj4+IHJlcGFpbnQgcmVxdWVzdGVkOiAlZCwlZCslZHglZFxuIiwgeCwg
eSwgdywgaCk7CiAgICAgaWYgKHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA9PSBwcml2LT5yZXBh
aW50cy5jb3VudCkgewotICAgICAgICBzaXplX3Qgc2l6ZTsKLSAgICAgICAgaWYgKCFwcml2LT5y
ZXBhaW50cy5hbGxvY2F0ZWQpCi0gICAgICAgICAgICBzaXplID0gRVdLX1ZJRVdfUkVQQUlOVFNf
U0laRV9JTklUSUFMOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaXplID0gcHJpdi0+cmVw
YWludHMuYWxsb2NhdGVkICsgRVdLX1ZJRVdfUkVQQUlOVFNfU0laRV9TVEVQOwotICAgICAgICBp
ZiAoIV9ld2tfdmlld19yZXBhaW50c19yZXNpemUocHJpdiwgc2l6ZSkpCi0gICAgICAgICAgICBy
ZXR1cm47CisJc2l6ZV90IHNpemU7CisJaWYgKCFwcml2LT5yZXBhaW50cy5hbGxvY2F0ZWQpCisJ
ICAgIHNpemUgPSBFV0tfVklFV19SRVBBSU5UU19TSVpFX0lOSVRJQUw7CisJZWxzZQorCSAgICBz
aXplID0gcHJpdi0+cmVwYWludHMuYWxsb2NhdGVkICsgRVdLX1ZJRVdfUkVQQUlOVFNfU0laRV9T
VEVQOworCWlmICghX2V3a192aWV3X3JlcGFpbnRzX3Jlc2l6ZShwcml2LCBzaXplKSkKKwkgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIHIgPSBwcml2LT5yZXBhaW50cy5hcnJheSArIHByaXYtPnJl
cGFpbnRzLmNvdW50OwpAQCAtMjc1LDYwICsyNzUsNjAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3
X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCB4LCBF
dmEKICAgICBEQkcoImFkZCByZXBhaW50ICVkLCAlZCslZHglZCIsIHgsIHksIHcsIGgpOwogfQog
Ci1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2goRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpwcml2KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBwcml2LT5yZXBhaW50cy5jb3VudCA9IDA7CiAg
ICAgaWYgKHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA8PSBFV0tfVklFV19SRVBBSU5UU19TSVpF
X01BWF9GUkVFKQotICAgICAgICByZXR1cm47CisJcmV0dXJuOwogICAgIF9ld2tfdmlld19yZXBh
aW50c19yZXNpemUocHJpdiwgRVdLX1ZJRVdfUkVQQUlOVFNfU0laRV9NQVhfRlJFRSk7CiB9CiAK
LXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Njcm9sbHNfcmVzaXplKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSAqcHJpdiwgc2l6ZV90IHNpemUpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
Y3JvbGxzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCBzaXplKQog
ewotICAgIHZvaWQgKnRtcCA9IHJlYWxsb2MocHJpdi0+c2Nyb2xscy5hcnJheSwgc2l6ZSAqIHNp
emVvZihFd2tfU2Nyb2xsX1JlcXVlc3QpKTsKKyAgICB2b2lkKiB0bXAgPSByZWFsbG9jKHByaXYt
PnNjcm9sbHMuYXJyYXksIHNpemUgKiBzaXplb2YoRXdrX1Njcm9sbF9SZXF1ZXN0KSk7CiAgICAg
aWYgKCF0bXApIHsKLSAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCByZWFsbG9jIHNjcm9sbHMg
YXJyYXkgdG8gJXp1IGVsZW1lbnRzLiIsIHNpemUpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKwlDUklUSUNBTCgiY291bGQgbm90IHJlYWxsb2Mgc2Nyb2xscyBhcnJheSB0byAlenUgZWxl
bWVudHMuIiwgc2l6ZSk7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIHByaXYtPnNj
cm9sbHMuYWxsb2NhdGVkID0gc2l6ZTsKLSAgICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19T
Y3JvbGxfUmVxdWVzdCAqKXRtcDsKKyAgICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3Jv
bGxfUmVxdWVzdCopdG1wOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19zY3JvbGxfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19D
b29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNf
Q29vcmQgdywgRXZhc19Db29yZCBoLCBFaW5hX0Jvb2wgbWFpbl9zY3JvbGwpCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc2Nyb2xsX2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNf
Q29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFz
X0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgRWluYV9Cb29sIG1haW5fc2Nyb2xsKQogewotICAgIEV3
a19TY3JvbGxfUmVxdWVzdCAqcjsKLSAgICBFd2tfU2Nyb2xsX1JlcXVlc3QgKnJfZW5kOworICAg
IEV3a19TY3JvbGxfUmVxdWVzdCogcjsKKyAgICBFd2tfU2Nyb2xsX1JlcXVlc3QqIHJfZW5kOwog
ICAgIEV2YXNfQ29vcmQgeDIgPSB4ICsgdywgeTIgPSB5ICsgaDsKIAogICAgIHIgPSBwcml2LT5z
Y3JvbGxzLmFycmF5OwogICAgIHJfZW5kID0gciArIHByaXYtPnNjcm9sbHMuY291bnQ7CiAgICAg
Zm9yICg7IHIgPCByX2VuZDsgcisrKSB7Ci0gICAgICAgIGlmIChyLT54ID09IHggJiYgci0+eSA9
PSB5ICYmIHItPncgPT0gdyAmJiByLT5oID09IGgpIHsKLSAgICAgICAgICAgIERCRygicmVnaW9u
IGFscmVhZHkgc2Nyb2xsZWQgJWQsJWQrJWR4JWQgJSswM2QsJSswM2QgYWRkICIKLSAgICAgICAg
ICAgICAgICAiJSswM2QsJSswM2QiLAotICAgICAgICAgICAgICAgIHItPngsIHItPnksIHItPncs
IHItPmgsIHItPmR4LCByLT5keSwgZHgsIGR5KTsKLSAgICAgICAgICAgIHItPmR4ICs9IGR4Owot
ICAgICAgICAgICAgci0+ZHkgKz0gZHk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKCh4IDw9IHItPnggJiYgeDIgPj0gci0+eDIpICYmICh5IDw9IHItPnkgJiYg
eTIgPj0gci0+eTIpKSB7Ci0gICAgICAgICAgICBEQkcoIm9sZCB2aWV3cG9ydCAoJWQsJWQrJWR4
JWQgJSswM2QsJSswM2QpIHdhcyBzY3JvbGxlZCBpdHNlbGYsICIKLSAgICAgICAgICAgICAgICAi
YWRkICUrMDNkLCUrMDNkIiwKLSAgICAgICAgICAgICAgICByLT54LCByLT55LCByLT53LCByLT5o
LCByLT5keCwgci0+ZHksIGR4LCBkeSk7Ci0gICAgICAgICAgICByLT54ICs9IGR4OwotICAgICAg
ICAgICAgci0+eSArPSBkeTsKLSAgICAgICAgfQorCWlmIChyLT54ID09IHggJiYgci0+eSA9PSB5
ICYmIHItPncgPT0gdyAmJiByLT5oID09IGgpIHsKKwkgICAgREJHKCJyZWdpb24gYWxyZWFkeSBz
Y3JvbGxlZCAlZCwlZCslZHglZCAlKzAzZCwlKzAzZCBhZGQgIgorCSAgICAgICAgIiUrMDNkLCUr
MDNkIiwKKwkgICAgICAgIHItPngsIHItPnksIHItPncsIHItPmgsIHItPmR4LCByLT5keSwgZHgs
IGR5KTsKKwkgICAgci0+ZHggKz0gZHg7CisJICAgIHItPmR5ICs9IGR5OworCSAgICByZXR1cm47
CisJfQorCWlmICgoeCA8PSByLT54ICYmIHgyID49IHItPngyKSAmJiAoeSA8PSByLT55ICYmIHky
ID49IHItPnkyKSkgeworCSAgICBEQkcoIm9sZCB2aWV3cG9ydCAoJWQsJWQrJWR4JWQgJSswM2Qs
JSswM2QpIHdhcyBzY3JvbGxlZCBpdHNlbGYsICIKKwkgICAgICAgICJhZGQgJSswM2QsJSswM2Qi
LAorCSAgICAgICAgci0+eCwgci0+eSwgci0+dywgci0+aCwgci0+ZHgsIHItPmR5LCBkeCwgZHkp
OworCSAgICByLT54ICs9IGR4OworCSAgICByLT55ICs9IGR5OworCX0KICAgICB9CiAKICAgICBp
ZiAocHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPT0gcHJpdi0+c2Nyb2xscy5jb3VudCkgewotICAg
ICAgICBzaXplX3Qgc2l6ZTsKLSAgICAgICAgaWYgKCFwcml2LT5zY3JvbGxzLmFsbG9jYXRlZCkK
LSAgICAgICAgICAgIHNpemUgPSBFV0tfVklFV19TQ1JPTExTX1NJWkVfSU5JVElBTDsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc2l6ZSA9IHByaXYtPnNjcm9sbHMuYWxsb2NhdGVkICsgRVdL
X1ZJRVdfU0NST0xMU19TSVpFX1NURVA7Ci0gICAgICAgIGlmICghX2V3a192aWV3X3Njcm9sbHNf
cmVzaXplKHByaXYsIHNpemUpKQotICAgICAgICAgICAgcmV0dXJuOworCXNpemVfdCBzaXplOwor
CWlmICghcHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQpCisJICAgIHNpemUgPSBFV0tfVklFV19TQ1JP
TExTX1NJWkVfSU5JVElBTDsKKwllbHNlCisJICAgIHNpemUgPSBwcml2LT5zY3JvbGxzLmFsbG9j
YXRlZCArIEVXS19WSUVXX1NDUk9MTFNfU0laRV9TVEVQOworCWlmICghX2V3a192aWV3X3Njcm9s
bHNfcmVzaXplKHByaXYsIHNpemUpKQorCSAgICByZXR1cm47CiAgICAgfQogCiAgICAgciA9IHBy
aXYtPnNjcm9sbHMuYXJyYXkgKyBwcml2LT5zY3JvbGxzLmNvdW50OwpAQCAtMzQ1LDMxICszNDUs
MzEgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpwcml2LCBFdmFzX0Nvb3JkIGR4LCBFdmEKICAgICByLT5tYWluX3Njcm9sbCA9IG1haW5f
c2Nyb2xsOwogICAgIERCRygiYWRkIHNjcm9sbCBpbiByZWdpb246ICVkLCAlZCslZHglZCAlKzAz
ZCwgJSswM2QiLCB4LCB5LCB3LCBoLCBkeCwgZHkpOwogCi0gICAgRWluYV9SZWN0YW5nbGUgKnBy
OwotICAgIEVpbmFfUmVjdGFuZ2xlICpwcl9lbmQ7CisgICAgRWluYV9SZWN0YW5nbGUqIHByOwor
ICAgIEVpbmFfUmVjdGFuZ2xlKiBwcl9lbmQ7CiAgICAgc2l6ZV90IGNvdW50OwogICAgIHByID0g
cHJpdi0+cmVwYWludHMuYXJyYXk7CiAgICAgY291bnQgPSBwcml2LT5yZXBhaW50cy5jb3VudDsK
ICAgICBwcl9lbmQgPSBwciArIGNvdW50OwogICAgIGZvciAoOyBwciA8IHByX2VuZDsgcHIrKykg
ewotICAgICAgICBwci0+eCArPSBkeDsKLSAgICAgICAgcHItPnkgKz0gZHk7CisJcHItPnggKz0g
ZHg7CisJcHItPnkgKz0gZHk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Ny
b2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYpCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc2Nyb2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiB7CiAgICAg
cHJpdi0+c2Nyb2xscy5jb3VudCA9IDA7CiAgICAgaWYgKHByaXYtPnNjcm9sbHMuYWxsb2NhdGVk
IDw9IEVXS19WSUVXX1NDUk9MTFNfU0laRV9NQVhfRlJFRSkKLSAgICAgICAgcmV0dXJuOworCXJl
dHVybjsKICAgICBfZXdrX3ZpZXdfc2Nyb2xsc19yZXNpemUocHJpdiwgRVdLX1ZJRVdfU0NST0xM
U19TSVpFX01BWF9GUkVFKTsKIH0KIAogLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZyAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1zdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zbWFydF9mb2N1c19pbihFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkKQogewogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKLSAgICBXZWJDb3JlOjpG
b2N1c0NvbnRyb2xsZXIgKmZjID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCk7CisgICAg
V2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpOwogICAgIERCRygibz0lcCwgZmM9JXAiLCBzZC0+c2VsZiwgZmMpOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChmYywgRUlOQV9GQUxTRSk7CiAKQEAgLTM3OCwxMCArMzc4
LDEwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
K3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7Ci0gICAgV2Vi
Q29yZTo6Rm9jdXNDb250cm9sbGVyICpmYyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
OworICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciogZmMgPSBwcml2LT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKTsKICAgICBEQkcoIm89JXAsIGZjPSVwIiwgc2QtPnNlbGYsIGZjKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZmMsIEVJTkFfRkFMU0UpOwogCkBAIC0zOTAs
MTYwICszOTAsMTYwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291
dChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1z
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqZXYpCitzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCiB7CiAgICAgcmV0dXJuIGV3a19m
cmFtZV9mZWVkX21vdXNlX3doZWVsKHNkLT5tYWluX2ZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpCitzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBF
dmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQogewogICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9t
b3VzZV9kb3duKHNkLT5tYWluX2ZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX1VwICpldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1Vw
KiBldikKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXAoc2QtPm1haW5fZnJh
bWUsIGV2KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92
ZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpl
dikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmUoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYpCiB7CiAgICAg
cmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUoc2QtPm1haW5fZnJhbWUsIGV2KTsKIH0K
IAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KQorc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNv
bnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQogewotICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9
IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KHNkLT5zZWxmKTsKKyAgICBFdmFzX09iamVjdCog
ZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChzZC0+c2VsZik7CiAKICAgICBpZiAo
IWZyYW1lKQotICAgICAgICBmcmFtZSA9IHNkLT5tYWluX2ZyYW1lOworCWZyYW1lID0gc2QtPm1h
aW5fZnJhbWU7CiAKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24oZnJhbWUsIGV2
KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpCitzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNv
bnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldikKIHsKLSAgICBFdmFzX09iamVjdCAqZnJhbWUgPSBl
d2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChzZC0+c2VsZik7CisgICAgRXZhc19PYmplY3QqIGZy
YW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoc2QtPnNlbGYpOwogCiAgICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgZnJhbWUgPSBzZC0+bWFpbl9mcmFtZTsKKwlmcmFtZSA9IHNkLT5tYWlu
X2ZyYW1lOwogCiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX2tleV91cChmcmFtZSwgZXYpOwog
fQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVfbWVzc2FnZShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgdW5zaWduZWQgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IGNoYXIgKnNvdXJjZUlEKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X2FkZF9jb25zb2xlX21lc3NhZ2UoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IGNo
YXIqIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3VyY2VJ
RCkKIHsKICAgICBJTkYoImNvbnNvbGUgbWVzc2FnZTogJXMgQCVkOiAlc1xuIiwgc291cmNlSUQs
IGxpbmVOdW1iZXIsIG1lc3NhZ2UpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
cnVuX2phdmFzY3JpcHRfYWxlcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfT2JqZWN0
ICpmcmFtZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9ydW5famF2YXNjcmlwdF9hbGVydChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19PYmpl
Y3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIElORigiamF2YXNjcmlwdCBh
bGVydDogJXNcbiIsIG1lc3NhZ2UpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFz
X09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCitzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgSU5G
KCJqYXZhc2NyaXB0IGNvbmZpcm06ICVzIiwgbWVzc2FnZSk7CiAgICAgSU5GKCJqYXZhc2NyaXB0
IGNvbmZpcm0gKEhBUkQgQ09ERUQpPyBZRVMiKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
Ci1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9zaG91bGRfaW50ZXJydXB0X2phdmFz
Y3JpcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QpCiB7CiAgICAgSU5GKCJzaG91bGQgaW50ZXJydXB0IGphdmFzY3JpcHQ/XG4iCi0gICAgICAg
ICAgICAiXHQoSEFSRCBDT0RFRCkgTk8iKTsKKyAgICAgICAgIlx0KEhBUkQgQ09ERUQpIE5PIik7
CiAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZh
c19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlLCBjb25zdCBjaGFyICpkZWZhdWx0
VmFsdWUsIGNoYXIgKip2YWx1ZSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1
bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19PYmplY3Qq
IGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNo
YXIqKiB2YWx1ZSkKIHsKICAgICAqdmFsdWUgPSBzdHJkdXAoInRlc3QiKTsKICAgICBFaW5hX0Jv
b2wgcmV0ID0gRUlOQV9UUlVFOwogICAgIElORigiamF2YXNjcmlwdCBwcm9tcHQ6XG4iCi0gICAg
ICAgICAgICAiXHQgICAgICBtZXNzYWdlOiAlc1xuIgotICAgICAgICAgICAgIlx0ZGVmYXVsdCB2
YWx1ZTogJXNcbiIKLSAgICAgICAgICAgICJcdGdpdmluZyBhbnN3ZXI6ICVzXG4iCi0gICAgICAg
ICAgICAiXHQgICAgICAgYnV0dG9uOiAlcyIsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgKnZhbHVl
LCByZXQ/Im9rIjoiY2FuY2VsIik7CisgICAgICAgICJcdCAgICAgIG1lc3NhZ2U6ICVzXG4iCisg
ICAgICAgICJcdGRlZmF1bHQgdmFsdWU6ICVzXG4iCisgICAgICAgICJcdGdpdmluZyBhbnN3ZXI6
ICVzXG4iCisgICAgICAgICJcdCAgICAgICBidXR0b246ICVzIiwgbWVzc2FnZSwgZGVmYXVsdFZh
bHVlLCAqdmFsdWUsIHJldCA/ICJvayIgOiAiY2FuY2VsIik7CiAKICAgICByZXR1cm4gcmV0Owog
fQogCiAvLyBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2
b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFz
X09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRh
ICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGktPmZvY3VzX2luKTsKICAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7CiB9CiAKLXN0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19P
YmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9j
dXNfb3V0KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9p
bmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKilkYXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfb3V0KTsKICAgICBz
ZC0+YXBpLT5mb2N1c19vdXQoc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91
c2Vfd2hlZWwodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50
X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwodm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19F
dmVudF9Nb3VzZV9XaGVlbCAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqKWV2ZW50X2lu
Zm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
KWRhdGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYgPSAoRXZhc19FdmVudF9Nb3Vz
ZV9XaGVlbCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tf
Vmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3do
ZWVsKTsKICAgICBzZC0+YXBpLT5tb3VzZV93aGVlbChzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVj
dCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9k
b3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZv
KQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9E
b3duICopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gKEV2
YXNfRXZlbnRfTW91c2VfRG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRh
KiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGktPm1vdXNlX2Rvd24pOwogICAgIHNkLT5hcGktPm1vdXNlX2Rvd24oc2QsIGV2KTsKIH0KIAot
c3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2
YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29u
X21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVu
dF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2ID0gKEV2YXNfRXZlbnRfTW91
c2VfVXAgKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ID0gKEV2
YXNfRXZlbnRfTW91c2VfVXAqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
LT5tb3VzZV91cCk7CiAgICAgc2QtPmFwaS0+bW91c2VfdXAoc2QsIGV2KTsKIH0KIAotc3RhdGlj
IHZvaWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19P
YmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91
c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRf
aW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2ID0gKEV2YXNfRXZlbnRfTW91
c2VfTW92ZSAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldiA9
IChFdmFzX0V2ZW50X01vdXNlX01vdmUqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpLT5tb3VzZV9tb3ZlKTsKICAgICBzZC0+YXBpLT5tb3VzZV9tb3ZlKHNkLCBldik7CiB9
CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfZG93bih2b2lkICpkYXRhLCBFdmFzICpl
LCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9rZXlfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCog
ZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X0tleV9Eb3duICpldiA9IChFdmFzX0V2ZW50
X0tleV9Eb3duICopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChF
d2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9Eb3duKiBldiA9
IChFdmFzX0V2ZW50X0tleV9Eb3duKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2Qt
PmFwaS0+a2V5X2Rvd24pOwogICAgIHNkLT5hcGktPmtleV9kb3duKHNkLCBldik7CiB9CiAKLXN0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfdXAodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19P
YmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5
X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZv
KQogewotICAgIEV2YXNfRXZlbnRfS2V5X1VwICpldiA9IChFdmFzX0V2ZW50X0tleV9VcCAqKWV2
ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqKWRhdGE7CisgICAgRXZhc19FdmVudF9LZXlfVXAqIGV2ID0gKEV2YXNfRXZlbnRfS2V5
X1VwKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5X3VwKTsKICAg
ICBzZC0+YXBpLT5rZXlfdXAoc2QsIGV2KTsKIH0KIAotc3RhdGljIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCAqb3duZXIpCitzdGF0aWMgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1l
PiBfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lcikKIHsKLSAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAqZmxjID0gbmV3IFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKHNkLT5zZWxmKTsKKyAgICBXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbCogZmxjID0gbmV3IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
KHNkLT5zZWxmKTsKICAgICBpZiAoIWZsYykgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90
IGNyZWF0ZSBmcmFtZSBsb2FkZXIgY2xpZW50LiIpOwotICAgICAgICByZXR1cm4gMDsKKwlDUklU
SUNBTCgiQ291bGQgbm90IGNyZWF0ZSBmcmFtZSBsb2FkZXIgY2xpZW50LiIpOworCXJldHVybiAw
OwogICAgIH0KICAgICBmbGMtPnNldEN1c3RvbVVzZXJBZ2VudChTdHJpbmc6OmZyb21VVEY4KHBy
aXYtPnNldHRpbmdzLnVzZXJfYWdlbnQpKTsKIApAQCAtNTUyLDE2ICs1NTIsMTYgQEAgc3RhdGlj
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3
KEV3a19WaWV3X1NtYXJ0X0QKIAogc3RhdGljIEV2YXNfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9
IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCi1zdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMg
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QpCiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2ID0KLSAgICAgICAg
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKSk7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0KKyAgICAgICAgKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0Rh
dGEpKTsKICAgICBBdG9taWNTdHJpbmcgczsKICAgICBXZWJDb3JlOjpLVVJMIHVybDsKIAogICAg
IGlmICghcHJpdikgewotICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSIpOwotICAgICAgICByZXR1cm4gMDsKKwlDUklUSUNBTCgiY291bGQg
bm90IGFsbG9jYXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOworCXJldHVybiAwOwogICAgIH0K
IAogICAgIFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOwpAQCAtNTc1LDE0
ICs1NzUsMTQgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqX2V3a192aWV3X3ByaXZf
bmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogI2VuZGlmCiAgICAgcHJpdi0+cGFnZSA9IG5l
dyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGllbnRzKTsKICAgICBpZiAoIXByaXYtPnBhZ2UpIHsKLSAg
ICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgV2ViS2l0IFBhZ2UiKTsKLSAgICAgICAg
Z290byBlcnJvcl9wYWdlOworCUNSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIFdlYktpdCBQYWdl
Iik7CisJZ290byBlcnJvcl9wYWdlOwogICAgIH0KIAogICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3Mg
PSBwcml2LT5wYWdlLT5zZXR0aW5ncygpOwogICAgIGlmICghcHJpdi0+cGFnZV9zZXR0aW5ncykg
ewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGdldCBwYWdlIHNldHRpbmdzLiIpOwotICAg
ICAgICBnb3RvIGVycm9yX3NldHRpbmdzOworCUNSSVRJQ0FMKCJDb3VsZCBub3QgZ2V0IHBhZ2Ug
c2V0dGluZ3MuIik7CisJZ290byBlcnJvcl9zZXR0aW5nczsKICAgICB9CiAKICAgICBwcml2LT52
aWV3cG9ydF9hcmd1bWVudHMud2lkdGggPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFs
dWVBdXRvOwpAQCAtNjExLDcgKzYxMSw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEg
Kl9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICBwcml2LT5z
ZXR0aW5ncy51c2VyX3N0eWxlc2hlZXQgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZCh1cmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ19kZWZhdWx0
ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQKLSAgICAgICAgKHByaXYtPnBhZ2Vfc2V0dGluZ3MtPmRl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpdi0+cGFnZV9zZXR0aW5ncy0+ZGVmYXVsdFRl
eHRFbmNvZGluZ05hbWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICBwcml2LT5zZXR0aW5ncy5lbmNv
ZGluZ19jdXN0b20gPSAwOwogCiAgICAgcyA9IHByaXYtPnBhZ2Vfc2V0dGluZ3MtPmxvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCgpOwpAQCAtNjY3LDE0ICs2NjcsMTQgQEAgc3RhdGljIEV3a19WaWV3
X1ByaXZhdGVfRGF0YSAqX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KQogCiAgICAgcHJpdi0+bWFpbl9mcmFtZSA9IF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyhzZCwg
cHJpdiwgMCkuZ2V0KCk7CiAgICAgaWYgKCFwcml2LT5tYWluX2ZyYW1lKSB7Ci0gICAgICAgIENS
SVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIG1haW4gZnJhbWUuIik7Ci0gICAgICAgIGdvdG8gZXJy
b3JfbWFpbl9mcmFtZTsKKwlDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBtYWluIGZyYW1lLiIp
OworCWdvdG8gZXJyb3JfbWFpbl9mcmFtZTsKICAgICB9CiAKLSAgICBwcml2LT5oaXN0b3J5ID0g
ZXdrX2hpc3RvcnlfbmV3KHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwg
Kj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpKTsKKyAgICBwcml2LT5oaXN0b3J5ID0g
ZXdrX2hpc3RvcnlfbmV3KHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwq
Pihwcml2LT5wYWdlLT5iYWNrRm9yd2FyZExpc3QoKSkpOwogICAgIGlmICghcHJpdi0+aGlzdG9y
eSkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBoaXN0b3J5IGluc3RhbmNl
IGZvciB2aWV3LiIpOwotICAgICAgICBnb3RvIGVycm9yX2hpc3Rvcnk7CisJQ1JJVElDQUwoIkNv
dWxkIG5vdCBjcmVhdGUgaGlzdG9yeSBpbnN0YW5jZSBmb3Igdmlldy4iKTsKKwlnb3RvIGVycm9y
X2hpc3Rvcnk7CiAgICAgfQogCiAgICAgcmV0dXJuIHByaXY7CkBAIC02ODksMTAgKzY4OSwxMCBA
QCBlcnJvcl9wYWdlOgogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
cHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQorc3RhdGljIHZvaWQgX2V3a192
aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBpZiAoIXBy
aXYpCi0gICAgICAgIHJldHVybjsKKwlyZXR1cm47CiAKICAgICAvKiBkbyBub3QgZGVsZXRlIHBy
aXYtPm1haW5fZnJhbWUgKi8KIApAQCAtNzEyLDcgKzcxMiw3IEBAIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYpCiAgICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwocHJpdi0+c2V0dGluZ3MubG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoKTsK
IAogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQotICAgICAgICBlY29yZV9h
bmltYXRvcl9kZWwocHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvcik7CisJZWNvcmVfYW5pbWF0
b3JfZGVsKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpOwogCiAgICAgZXdrX2hpc3Rvcnlf
ZnJlZShwcml2LT5oaXN0b3J5KTsKIApAQCAtNzIwLDIxICs3MjAsMjEgQEAgc3RhdGljIHZvaWQg
X2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKICAgICBmcmVl
KHByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0
ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKIHsK
LSAgICBjb25zdCBFdmFzX1NtYXJ0ICpzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dl
dChvKTsKLSAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzICpzYyA9IGV2YXNfc21hcnRfY2xhc3Nf
Z2V0KHNtYXJ0KTsKLSAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpID0gKGNvbnN0
IEV3a19WaWV3X1NtYXJ0X0NsYXNzICopc2M7CisgICAgY29uc3QgRXZhc19TbWFydCogc21hcnQg
PSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7CisgICAgY29uc3QgRXZhc19TbWFydF9D
bGFzcyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChzbWFydCk7CisgICAgY29uc3QgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyopc2M7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXBpLT5iYWNraW5nX3N0b3JlX2FkZCk7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2QpIHsKLSAgICAgICAgc2Qg
PSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRf
RGF0YSkpOwotICAgICAgICBpZiAoIXNkKSB7Ci0gICAgICAgICAgICBDUklUSUNBTCgiY291bGQg
bm90IGFsbG9jYXRlIEV3a19WaWV3X1NtYXJ0X0RhdGEiKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCBzZCk7CisJ
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19TbWFy
dF9EYXRhKSk7CisJaWYgKCFzZCkgeworCSAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRl
IEV3a19WaWV3X1NtYXJ0X0RhdGEiKTsKKwkgICAgcmV0dXJuOworCX0KKwlldmFzX29iamVjdF9z
bWFydF9kYXRhX3NldChvLCBzZCk7CiAgICAgfQogCiAgICAgc2QtPmJnX2NvbG9yLnIgPSAyNTU7
CkBAIC03NDksMTQgKzc0OSwxNCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2
YXNfT2JqZWN0ICpvKQogICAgIF9wYXJlbnRfc2MuYWRkKG8pOwogCiAgICAgaWYgKCFzZC0+X3By
aXYpCi0gICAgICAgIHJldHVybjsKKwlyZXR1cm47CiAKICAgICBFV0tfVklFV19QUklWX0dFVChz
ZCwgcHJpdik7CiAKICAgICBzZC0+YmFja2luZ19zdG9yZSA9IGFwaS0+YmFja2luZ19zdG9yZV9h
ZGQoc2QpOwogICAgIGlmICghc2QtPmJhY2tpbmdfc3RvcmUpIHsKLSAgICAgICAgRVJSKCJDb3Vs
ZCBub3QgY3JlYXRlIGJhY2tpbmcgc3RvcmUgb2JqZWN0LiIpOwotICAgICAgICByZXR1cm47CisJ
RVJSKCJDb3VsZCBub3QgY3JlYXRlIGJhY2tpbmcgc3RvcmUgb2JqZWN0LiIpOworCXJldHVybjsK
ICAgICB9CiAKICAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNkLT5iYWNraW5nX3N0
b3JlLCBvKTsKQEAgLTc3MCwxOCArNzcwLDE4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9hZGQoRXZhc19PYmplY3QgKm8pCiAKICAgICBzZC0+bWFpbl9mcmFtZSA9IGV3a19mcmFtZV9h
ZGQoc2QtPmJhc2UuZXZhcyk7CiAgICAgaWYgKCFzZC0+bWFpbl9mcmFtZSkgewotICAgICAgICBF
UlIoIkNvdWxkIG5vdCBjcmVhdGUgbWFpbiBmcmFtZSBvYmplY3QuIik7Ci0gICAgICAgIHJldHVy
bjsKKwlFUlIoIkNvdWxkIG5vdCBjcmVhdGUgbWFpbiBmcmFtZSBvYmplY3QuIik7CisJcmV0dXJu
OwogICAgIH0KIAogICAgIGlmICghZXdrX2ZyYW1lX2luaXQoc2QtPm1haW5fZnJhbWUsIG8sIHBy
aXYtPm1haW5fZnJhbWUpKSB7Ci0gICAgICAgIEVSUigiQ291bGQgbm90IGluaXRpYWxpemUgbWFp
biBmcm1lIG9iamVjdC4iKTsKLSAgICAgICAgZXZhc19vYmplY3RfZGVsKHNkLT5tYWluX2ZyYW1l
KTsKLSAgICAgICAgc2QtPm1haW5fZnJhbWUgPSAwOworCUVSUigiQ291bGQgbm90IGluaXRpYWxp
emUgbWFpbiBmcm1lIG9iamVjdC4iKTsKKwlldmFzX29iamVjdF9kZWwoc2QtPm1haW5fZnJhbWUp
OworCXNkLT5tYWluX2ZyYW1lID0gMDsKIAotICAgICAgICBkZWxldGUgcHJpdi0+bWFpbl9mcmFt
ZTsKLSAgICAgICAgcHJpdi0+bWFpbl9mcmFtZSA9IDA7Ci0gICAgICAgIHJldHVybjsKKwlkZWxl
dGUgcHJpdi0+bWFpbl9mcmFtZTsKKwlwcml2LT5tYWluX2ZyYW1lID0gMDsKKwlyZXR1cm47CiAg
ICAgfQogCiAgICAgZXZhc19vYmplY3RfbmFtZV9zZXQoc2QtPm1haW5fZnJhbWUsICJFV0tfRnJh
bWU6bWFpbiIpOwpAQCAtODAwLDE3ICs4MDAsMTcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X2FkZChFdmFzX09iamVjdCAqbykKICN1bmRlZiBDT05ORUNUCiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9kZWwoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBz
ZCk7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2ID0gc2QgPyBzZC0+X3ByaXYgOiAw
OworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IHNkID8gc2QtPl9wcml2IDogMDsK
IAogICAgIGV3a192aWV3X3N0b3Aobyk7CiAgICAgX3BhcmVudF9zYy5kZWwobyk7CiAgICAgX2V3
a192aWV3X3ByaXZfZGVsKHByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
cmVzaXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qp
OwogCkBAIC04MjEsMTQgKzgyMSwxNCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVz
aXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKICAgICBfZXdr
X3ZpZXdfc21hcnRfY2hhbmdlZChzZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9tb3ZlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgs
IEV2YXNfQ29vcmQgeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsK
ICAgICBzZC0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfVFJVRTsKICAgICBfZXdrX3ZpZXdfc21h
cnRfY2hhbmdlZChzZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxh
dGUoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QgKm8pCiAgICAgc2QtPmNoYW5n
ZWQuYW55ID0gRUlOQV9GQUxTRTsKIAogICAgIGlmICghc2QtPm1haW5fZnJhbWUgfHwgIXByaXYt
Pm1haW5fZnJhbWUpCi0gICAgICAgIHJldHVybjsKKwlyZXR1cm47CiAKICAgICBldmFzX29iamVj
dF9nZW9tZXRyeV9nZXQobywgJngsICZ5LCAmdywgJmgpOwogCkBAIC04NTAsNjAgKzg1MCw2MCBA
QCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0ICpvKQog
ICAgICAgICBwcml2LT5zY3JvbGxzLmNvdW50LCBwcml2LT5yZXBhaW50cy5jb3VudCk7CiAKICAg
ICBpZiAoc2QtPmNoYW5nZWQuc2l6ZSAmJiAoKHcgIT0gc2QtPnZpZXcudykgfHwgKGggIT0gc2Qt
PnZpZXcuaCkpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHByaXYtPm1h
aW5fZnJhbWUtPnZpZXcoKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHZpZXct
PnJlc2l6ZSh3LCBoKTsKLSAgICAgICAgICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7Ci0gICAgICAg
ICAgICB2aWV3LT5hZGp1c3RWaWV3U2l6ZSgpOwotICAgICAgICB9Ci0gICAgICAgIGV2YXNfb2Jq
ZWN0X3Jlc2l6ZShzZC0+bWFpbl9mcmFtZSwgdywgaCk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X3Jl
c2l6ZShzZC0+ZXZlbnRzX3JlY3QsIHcsIGgpOwotICAgICAgICBzZC0+Y2hhbmdlZC5mcmFtZV9y
ZWN0ID0gRUlOQV9UUlVFOwotICAgICAgICBzZC0+dmlldy53ID0gdzsKLSAgICAgICAgc2QtPnZp
ZXcuaCA9IGg7Ci0KLSAgICAgICAgX2V3a192aWV3X3JlcGFpbnRfYWRkKHByaXYsIDAsIDAsIHcs
IGgpOwotCi0gICAgICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgYSBnb29kIHBsYWNlIGUuZy4gdG8g
Y2hhbmdlIGZpeGVkIGxheW91dCBzaXplIChld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQp
LgotICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ2aWV3LHJlc2l6
ZWQiLCAwKTsKKwlXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52
aWV3KCk7CisJaWYgKHZpZXcpIHsKKwkgICAgdmlldy0+cmVzaXplKHcsIGgpOworCSAgICB2aWV3
LT5mb3JjZUxheW91dCgpOworCSAgICB2aWV3LT5hZGp1c3RWaWV3U2l6ZSgpOworCX0KKwlldmFz
X29iamVjdF9yZXNpemUoc2QtPm1haW5fZnJhbWUsIHcsIGgpOworCWV2YXNfb2JqZWN0X3Jlc2l6
ZShzZC0+ZXZlbnRzX3JlY3QsIHcsIGgpOworCXNkLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5B
X1RSVUU7CisJc2QtPnZpZXcudyA9IHc7CisJc2QtPnZpZXcuaCA9IGg7CisKKwlfZXdrX3ZpZXdf
cmVwYWludF9hZGQocHJpdiwgMCwgMCwgdywgaCk7CisKKwkvLyBUaGlzIGNhbGxiYWNrIGlzIGEg
Z29vZCBwbGFjZSBlLmcuIHRvIGNoYW5nZSBmaXhlZCBsYXlvdXQgc2l6ZSAoZXdrX3ZpZXdfZml4
ZWRfbGF5b3V0X3NpemVfc2V0KS4KKwlldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8s
ICJ2aWV3LHJlc2l6ZWQiLCAwKTsKICAgICB9CiAgICAgc2QtPmNoYW5nZWQuc2l6ZSA9IEVJTkFf
RkFMU0U7CiAKICAgICBpZiAoc2QtPmNoYW5nZWQucG9zaXRpb24gJiYgKCh4ICE9IHNkLT52aWV3
LngpIHx8ICh5ICE9IHNkLT52aWV3LnkpKSkgewotICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNk
LT5tYWluX2ZyYW1lLCB4LCB5KTsKLSAgICAgICAgZXZhc19vYmplY3RfbW92ZShzZC0+YmFja2lu
Z19zdG9yZSwgeCwgeSk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc2QtPmV2ZW50c19yZWN0
LCB4LCB5KTsKLSAgICAgICAgc2QtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IEVJTkFfVFJVRTsKLSAg
ICAgICAgc2QtPnZpZXcueCA9IHg7Ci0gICAgICAgIHNkLT52aWV3LnkgPSB5OworCWV2YXNfb2Jq
ZWN0X21vdmUoc2QtPm1haW5fZnJhbWUsIHgsIHkpOworCWV2YXNfb2JqZWN0X21vdmUoc2QtPmJh
Y2tpbmdfc3RvcmUsIHgsIHkpOworCWV2YXNfb2JqZWN0X21vdmUoc2QtPmV2ZW50c19yZWN0LCB4
LCB5KTsKKwlzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlOQV9UUlVFOworCXNkLT52aWV3Lngg
PSB4OworCXNkLT52aWV3LnkgPSB5OwogICAgIH0KICAgICBzZC0+Y2hhbmdlZC5wb3NpdGlvbiA9
IEVJTkFfRkFMU0U7CiAKICAgICBpZiAoIXNkLT5hcGktPnNjcm9sbHNfcHJvY2VzcyhzZCkpCi0g
ICAgICAgIEVSUigiZmFpbGVkIHRvIHByb2Nlc3Mgc2Nyb2xscy4iKTsKKwlFUlIoImZhaWxlZCB0
byBwcm9jZXNzIHNjcm9sbHMuIik7CiAgICAgX2V3a192aWV3X3Njcm9sbHNfZmx1c2gocHJpdik7
CiAKICAgICBpZiAoIXNkLT5hcGktPnJlcGFpbnRzX3Byb2Nlc3Moc2QpKQotICAgICAgICBFUlIo
ImZhaWxlZCB0byBwcm9jZXNzIHJlcGFpbnRzLiIpOworCUVSUigiZmFpbGVkIHRvIHByb2Nlc3Mg
cmVwYWludHMuIik7CiAgICAgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKHByaXYpOwogCiAgICAg
aWYgKHNkLT5jaGFuZ2VkLmZyYW1lX3JlY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3
ICp2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwotICAgICAgICB2aWV3LT5mcmFtZVJl
Y3RzQ2hhbmdlZCgpOyAvKiBmb3JjZSB0cmVlIHRvIGdldCBwb3NpdGlvbiBmcm9tIHJvb3QgKi8K
LSAgICAgICAgc2QtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IEVJTkFfRkFMU0U7CisJV2ViQ29yZTo6
RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOworCXZpZXctPmZyYW1l
UmVjdHNDaGFuZ2VkKCk7IC8qIGZvcmNlIHRyZWUgdG8gZ2V0IHBvc2l0aW9uIGZyb20gcm9vdCAq
LworCXNkLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5BX0ZBTFNFOwogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Nob3coRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKIAogICAgIGlmIChldmFzX29iamVjdF9jbGlwZWVzX2dl
dChzZC0+YmFzZS5jbGlwcGVyKSkKLSAgICAgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFzZS5j
bGlwcGVyKTsKKwlldmFzX29iamVjdF9zaG93KHNkLT5iYXNlLmNsaXBwZXIpOwogICAgIGV2YXNf
b2JqZWN0X3Nob3coc2QtPmJhY2tpbmdfc3RvcmUpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfaGlkZShFdmFzX09iamVjdCAqbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9oaWRlKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QpOwogCkBAIC05MTEsMTIgKzkxMSwxMiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfaGlkZShFdmFzX09iamVjdCAqbykKICAgICBldmFzX29iamVjdF9oaWRlKHNkLT5iYWNraW5n
X3N0b3JlKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNf
cmVzaXplKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBpbnQgdywgaW50IGgpCitzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19zbWFydF9jb250ZW50c19yZXNpemUoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QsIGludCB3LCBpbnQgaCkKIHsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRh
ICpzZCwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKK3N0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
LCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIGRvdWJs
ZSBweCwgcHk7CiAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOwpAQCAtOTI2LDE0ICs5MjYsMTQg
QEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEUKICAgICBld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQo
c2QtPm1haW5fZnJhbWUsICZ4LCAmeSk7CiAKICAgICBpZiAodyArIHNkLT52aWV3LncgPiAwKQot
ICAgICAgICBweCA9IChkb3VibGUpKHggKyBjeCkgLyAodyArIHNkLT52aWV3LncpOworCXB4ID0g
KGRvdWJsZSkoeCArIGN4KSAvICh3ICsgc2QtPnZpZXcudyk7CiAgICAgZWxzZQotICAgICAgICBw
eCA9IDAuMDsKKwlweCA9IDAuMDsKIAogICAgIGlmIChoICsgc2QtPnZpZXcuaCA+IDApCi0gICAg
ICAgIHB5ID0gKGRvdWJsZSkoeSArIGN5KSAvIChoICsgc2QtPnZpZXcuaCk7CisJcHkgPSAoZG91
YmxlKSh5ICsgY3kpIC8gKGggKyBzZC0+dmlldy5oKTsKICAgICBlbHNlCi0gICAgICAgIHB5ID0g
MC4wOworCXB5ID0gMC4wOwogCiAgICAgcmV0ID0gZXdrX2ZyYW1lX3pvb21fc2V0KHNkLT5tYWlu
X2ZyYW1lLCB6b29tKTsKIApAQCAtOTQ0LDQwICs5NDQsNDAgQEAgc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGZsb2F0IHpv
b20sIEUKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
Zmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKICAgICBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2gocHJp
dik7CiAgICAgX2V3a192aWV3X3Njcm9sbHNfZmx1c2gocHJpdik7CiB9CiAKLXN0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nv
b3JkIGgsIGZsb2F0IHpvb20pCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVf
cmVuZGVyX3JlZ2lvbihFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQogewogICAg
IFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNkPSVwIGFyZWE9JWQsJWQrJWR4JWQsIHpv
b209JWYiLAogICAgICAgICBzZCwgeCwgeSwgdywgaCwgem9vbSk7CiAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJf
cmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCB1bnNpZ25lZCBpbnQgbiwg
ZmxvYXQgem9vbSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJf
cmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCB1bnNpZ25lZCBpbnQgbiwg
ZmxvYXQgem9vbSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzZD0lcCwg
bj0ldSB6b29tPSVmIiwKICAgICAgICAgc2QsIG4sIHpvb20pOwogICAgIHJldHVybiBFSU5BX0ZB
TFNFOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWwo
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcHJl
X3JlbmRlcl9jYW5jZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgV1JOKCJub3Qg
c3VwcG9ydGVkIGJ5IGVuZ2luZS4gc2Q9JXAiLCBzZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tf
dmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCkKIHsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gMC4wOwog
ICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uZW5kID0gMC4wOwogICAgIHNkLT5hbmltYXRlZF96
b29tLnpvb20uY3VycmVudCA9IDAuMDsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3pvb21f
YW5pbWF0ZWRfZmluaXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIHZvaWQgX2V3
a192aWV3X3pvb21fYW5pbWF0ZWRfZmluaXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewog
ICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKICAgICBlY29yZV9hbmltYXRvcl9kZWwo
cHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvcik7CkBAIC05ODYsMTUgKzk4NiwxNSBAQCBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9maW5pc2goRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChzZC0+c2VsZiwgInpv
b20sYW5pbWF0ZWQsZW5kIiwgMCk7CiB9CiAKLXN0YXRpYyBmbG9hdCBfZXdrX3ZpZXdfem9vbV9h
bmltYXRlZF9jdXJyZW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKK3N0YXRpYyBmbG9h
dCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdikKIHsKICAgICBkb3VibGUgbm93ID0gZWNvcmVfbG9vcF90aW1lX2dldCgpOwogICAgIGRv
dWJsZSBkZWx0YSA9IG5vdyAtIHByaXYtPmFuaW1hdGVkX3pvb20udGltZS5zdGFydDsKIAogICAg
IGlmIChkZWx0YSA+IHByaXYtPmFuaW1hdGVkX3pvb20udGltZS5kdXJhdGlvbikKLSAgICAgICAg
ZGVsdGEgPSBwcml2LT5hbmltYXRlZF96b29tLnRpbWUuZHVyYXRpb247CisJZGVsdGEgPSBwcml2
LT5hbmltYXRlZF96b29tLnRpbWUuZHVyYXRpb247CiAgICAgaWYgKGRlbHRhIDwgMC4wKSAvLyB0
aW1lIHdlbnQgYmFjaywgY2xvY2sgYWRqdXN0ZWQ/Ci0gICAgICAgIGRlbHRhID0gMC4wOworCWRl
bHRhID0gMC4wOwogCiAgICAgZGVsdGEgLz0gcHJpdi0+YW5pbWF0ZWRfem9vbS50aW1lLmR1cmF0
aW9uOwogCkBAIC0xMDAyLDkgKzEwMDIsOSBAQCBzdGF0aWMgZmxvYXQgX2V3a192aWV3X3pvb21f
YW5pbWF0ZWRfY3VycmVudChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYpCiAgICAgICAgICAg
ICArIHByaXYtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydCk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2Iodm9pZCAqZGF0YSkKK3N0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2Iodm9pZCogZGF0YSkKIHsKLSAgICBFd2tfVmll
d19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEV2
YXNfQ29vcmQgY3gsIGN5OwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKICAgICBk
b3VibGUgbm93ID0gZWNvcmVfbG9vcF90aW1lX2dldCgpOwpAQCAtMTAxNCwxNiArMTAxNCwxNiBA
QCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQgKmRhdGEp
CiAKICAgICAvLyBUT0RPOiBwcm9ncmVzc2l2ZWx5IGNlbnRlciAoY3gsIGN5KSAtPiAodmlldy54
ICsgdmlldy5oLzIsIHZpZXcueSArIHZpZXcuaC8yKQogICAgIGlmIChjeCA+PSBzZC0+dmlldy53
KQotICAgICAgICBjeCA9IHNkLT52aWV3LncgLSAxOworCWN4ID0gc2QtPnZpZXcudyAtIDE7CiAg
ICAgaWYgKGN5ID49IHNkLT52aWV3LmgpCi0gICAgICAgIGN5ID0gc2QtPnZpZXcuaCAtIDE7CisJ
Y3kgPSBzZC0+dmlldy5oIC0gMTsKIAogICAgIGlmICgobm93ID49IHByaXYtPmFuaW1hdGVkX3pv
b20udGltZS5lbmQpCiAgICAgICAgIHx8IChub3cgPCBwcml2LT5hbmltYXRlZF96b29tLnRpbWUu
c3RhcnQpKSB7Ci0gICAgICAgIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChzZCk7Ci0g
ICAgICAgIGV3a192aWV3X3pvb21fc2V0KHNkLT5zZWxmLCBwcml2LT5hbmltYXRlZF96b29tLnpv
b20uZW5kLCBjeCwgY3kpOwotICAgICAgICBzZC0+YXBpLT5zYy5jYWxjdWxhdGUoc2QtPnNlbGYp
OwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9m
aW5pc2goc2QpOworCWV3a192aWV3X3pvb21fc2V0KHNkLT5zZWxmLCBwcml2LT5hbmltYXRlZF96
b29tLnpvb20uZW5kLCBjeCwgY3kpOworCXNkLT5hcGktPnNjLmNhbGN1bGF0ZShzZC0+c2VsZik7
CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9v
bS5jdXJyZW50ID0gX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChwcml2KTsKQEAgLTEw
MzEsMTYgKzEwMzEsMTYgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRv
cl9jYih2b2lkICpkYXRhKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFydChFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFydChFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYp
OwogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQotICAgICAgICByZXR1cm47
CisJcmV0dXJuOwogICAgIHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IgPSBlY29yZV9hbmlt
YXRvcl9hZGQKLSAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiLCBzZCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0
b3JfY2IsIHNkKTsKIH0KIAotc3RhdGljIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBfZXdr
X3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKGNvbnN0IEV2YXNfT2JqZWN0ICpvKQor
c3RhdGljIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0
cmlidXRlc19jb21wdXRlKGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVChvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwpAQCAtMTA2MCwz
MSArMTA2MCwzMSBAQCBzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmll
d192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRQogICAgIHJldHVybiBhdHRyaWJ1
dGVzOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9kaXNhYmxlX3JlbmRl
cihFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Nt
YXJ0X2Rpc2FibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIFdSTigi
bm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNkPSVwIiwgc2QpOwogICAgIHJldHVybiBFSU5BX0ZB
TFNFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9lbmFibGVfcmVuZGVy
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfZW5hYmxlX3JlbmRlcihFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBXUk4oIm5v
dCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzZD0lcCIsIHNkKTsKICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0
X0NsYXNzICphcGkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1ZpZXdf
U21hcnRfQ2xhc3MqIGFwaSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
YXBpLCBFSU5BX0ZBTFNFKTsKIAogICAgIGlmIChhcGktPnZlcnNpb24gIT0gRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfVkVSU0lPTikgewotICAgICAgICBFSU5BX0xPR19DUklUCi0gICAgICAgICAgICAo
IkV3a19WaWV3X1NtYXJ0X0NsYXNzICVwIGlzIHZlcnNpb24gJWx1IHdoaWxlICVsdSB3YXMgZXhw
ZWN0ZWQuIiwKLSAgICAgICAgICAgICBhcGksIGFwaS0+dmVyc2lvbiwgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfVkVSU0lPTik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCUVJTkFfTE9HX0NS
SVQKKwkgICAgKCJFd2tfVmlld19TbWFydF9DbGFzcyAlcCBpcyB2ZXJzaW9uICVsdSB3aGlsZSAl
bHUgd2FzIGV4cGVjdGVkLiIsCisJICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tfVklFV19TTUFS
VF9DTEFTU19WRVJTSU9OKTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKICAgICBpZiAo
RUlOQV9VTkxJS0VMWSghX3BhcmVudF9zYy5hZGQpKQotICAgICAgICBldmFzX29iamVjdF9zbWFy
dF9jbGlwcGVkX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CisJZXZhc19vYmplY3Rfc21hcnRfY2xp
cHBlZF9zbWFydF9zZXQoJl9wYXJlbnRfc2MpOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2xp
cHBlZF9zbWFydF9zZXQoJmFwaS0+c2MpOwogICAgIGFwaS0+c2MuYWRkID0gX2V3a192aWV3X3Nt
YXJ0X2FkZDsKQEAgLTExMjMsMTM3ICsxMTIzLDEzNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFz
ZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSkKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCi12b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldChFdmFzX09iamVj
dCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit2b2lkIGV3a192aWV3X2ZpeGVkX2xh
eW91dF9zaXplX3NldChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKIAotICAgIFdlYkNvcmU6OkZyYW1lVmlldyAq
dmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcq
IHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKHcgPD0gMCAmJiBoIDw9
IDApIHsKLSAgICAgICAgaWYgKCF2aWV3LT51c2VGaXhlZExheW91dCgpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB2aWV3LT5zZXRVc2VGaXhlZExheW91dChFSU5BX0ZBTFNFKTsKKwlp
ZiAoIXZpZXctPnVzZUZpeGVkTGF5b3V0KCkpCisJICAgIHJldHVybjsKKwl2aWV3LT5zZXRVc2VG
aXhlZExheW91dChFSU5BX0ZBTFNFKTsKICAgICB9IGVsc2UgewotICAgICAgICBXZWJDb3JlOjpJ
bnRTaXplIHNpemUgPSB2aWV3LT5maXhlZExheW91dFNpemUoKTsKLSAgICAgICAgaWYgKHNpemUu
d2lkdGgoKSA9PSB3ICYmIHNpemUuaGVpZ2h0KCkgPT0gaCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKHZpZXcpCi0gICAgICAgICAgICB2aWV3LT5zZXRGaXhlZExheW91dFNpemUo
V2ViQ29yZTo6SW50U2l6ZSh3LCBoKSk7CisJV2ViQ29yZTo6SW50U2l6ZSBzaXplID0gdmlldy0+
Zml4ZWRMYXlvdXRTaXplKCk7CisJaWYgKHNpemUud2lkdGgoKSA9PSB3ICYmIHNpemUuaGVpZ2h0
KCkgPT0gaCkKKwkgICAgcmV0dXJuOworCWlmICh2aWV3KQorCSAgICB2aWV3LT5zZXRGaXhlZExh
eW91dFNpemUoV2ViQ29yZTo6SW50U2l6ZSh3LCBoKSk7CiAgICAgfQogCiAgICAgaWYgKCF2aWV3
KQotICAgICAgICByZXR1cm47CisJcmV0dXJuOwogICAgIHZpZXctPnNldFVzZUZpeGVkTGF5b3V0
KEVJTkFfVFJVRSk7CiAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKIH0KIAotdm9pZCBld2tfdmll
d19maXhlZF9sYXlvdXRfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQg
KncsIEV2YXNfQ29vcmQgKmgpCit2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldChj
b25zdCBFdmFzX09iamVjdCogbywgRXZhc19Db29yZCogdywgRXZhc19Db29yZCogaCkKIHsKICAg
ICBpZiAodykKLSAgICAgICAgKncgPSAwOworCSp3ID0gMDsKICAgICBpZiAoaCkKLSAgICAgICAg
KmggPSAwOworCSpoID0gMDsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwogICAgIFdlYkNvcmU6
OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAodmll
dy0+dXNlRml4ZWRMYXlvdXQoKSkgewotICAgICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUgPSB2
aWV3LT5maXhlZExheW91dFNpemUoKTsKLSAgICAgICAgaWYgKHcpCi0gICAgICAgICAgICAqdyA9
IHNpemUud2lkdGgoKTsKLSAgICAgICAgaWYgKGgpCi0gICAgICAgICAgICAqaCA9IHNpemUuaGVp
Z2h0KCk7CisJV2ViQ29yZTo6SW50U2l6ZSBzaXplID0gdmlldy0+Zml4ZWRMYXlvdXRTaXplKCk7
CisJaWYgKHcpCisJICAgICp3ID0gc2l6ZS53aWR0aCgpOworCWlmIChoKQorCSAgICAqaCA9IHNp
emUuaGVpZ2h0KCk7CiAgICAgfQogfQogCi12b2lkIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqcGF0aCkKK3ZvaWQgZXdrX3ZpZXdfdGhlbWVfc2V0KEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBjaGFyKiBwYXRoKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7
CiAgICAgaWYgKCFlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLnRoZW1l
LCBwYXRoKSkKLSAgICAgICAgcmV0dXJuOworCXJldHVybjsKIAotICAgIFdlYkNvcmU6OkZyYW1l
VmlldyAqdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFt
ZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKHZpZXcpIHsK
LSAgICAgICAgdmlldy0+c2V0RWRqZVRoZW1lKFdURjo6U3RyaW5nKHBhdGgpKTsKLSAgICAgICAg
cHJpdi0+cGFnZS0+dGhlbWUoKS0+dGhlbWVDaGFuZ2VkKCk7CisJdmlldy0+c2V0RWRqZVRoZW1l
KFdURjo6U3RyaW5nKHBhdGgpKTsKKwlwcml2LT5wYWdlLT50aGVtZSgpLT50aGVtZUNoYW5nZWQo
KTsKICAgICB9CiAKIH0KIAotY29uc3QgY2hhciogZXdrX3ZpZXdfdGhlbWVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfdGhlbWVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJu
IHByaXYtPnNldHRpbmdzLnRoZW1lOwogfQogCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVf
bWFpbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFdmFzX09iamVjdCogZXdrX3ZpZXdfZnJh
bWVfbWFpbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIHNkLT5tYWluX2ZyYW1lOwogfQogCi1F
dmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pCitFdmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKIAotICAgIFdlYkNv
cmU6OkZyYW1lICpjb3JlID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRG
cmFtZSgpOworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpOwogICAgIGlmICghY29yZSkKLSAgICAgICAgcmV0dXJu
IDA7CisJcmV0dXJuIDA7CiAKICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogY2xp
ZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqPihjb3JlLT5s
b2FkZXIoKS0+Y2xpZW50KCkpOwogICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsK
KwlyZXR1cm4gMDsKICAgICByZXR1cm4gY2xpZW50LT53ZWJGcmFtZSgpOwogfQogCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfdXJpX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXJpKQorRWlu
YV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHVyaSkK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICByZXR1cm4gZXdrX2ZyYW1lX3VyaV9zZXQoc2QtPm1haW5fZnJhbWUsIHVyaSk7CiB9CiAKLWNv
bnN0IGNoYXIgKmV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBj
aGFyKiBld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIHJldHVybiBld2tfZnJhbWVfdXJp
X2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3RpdGxlX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChj
b25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCAwKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RpdGxlX2dldChzZC0+bWFpbl9mcmFtZSk7
CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19lZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBv
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIHJldHVybiBld2tfZnJhbWVfZWRpdGFibGVfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAot
dm9pZCBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywg
aW50IGIsIGludCBhKQordm9pZCBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QqIG8s
IGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmJnX2NvbG9yX3NldCk7CiAK
ICAgICBpZiAoYSA8IDApIHsKLSAgICAgICAgV1JOKCJBbHBoYSBsZXNzIHRoYW4gemVybyAoJWQp
LiIsIGEpOwotICAgICAgICBhID0gMDsKKwlXUk4oIkFscGhhIGxlc3MgdGhhbiB6ZXJvICglZCku
IiwgYSk7CisJYSA9IDA7CiAgICAgfSBlbHNlIGlmIChhID4gMjU1KSB7Ci0gICAgICAgIFdSTigi
QWxwaGEgaXMgbGFyZ2VyIHRoYW4gMjU1ICglZCkuIiwgYSk7Ci0gICAgICAgIGEgPSAyNTU7CisJ
V1JOKCJBbHBoYSBpcyBsYXJnZXIgdGhhbiAyNTUgKCVkKS4iLCBhKTsKKwlhID0gMjU1OwogICAg
IH0KIAogI2RlZmluZSBDSEVDS19QUkVNVUxfQ09MT1IoYywgYSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmIChjIDwgMCkgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBXUk4oIkNv
bG9yIGNvbXBvbmVudCAiI2MiIGlzIGxlc3MgdGhhbiB6ZXJvICglZCkuIiwgYyk7ICAgICAgICAg
XAotICAgICAgICBjID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorCVdSTigiQ29sb3IgY29tcG9uZW50ICIgI2MgIiBpcyBsZXNz
IHRoYW4gemVybyAoJWQpLiIsIGMpOyAgICAgICAgIFwKKwljID0gMDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gZWxzZSBp
ZiAoYyA+IGEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAiI2MiIGlzIGdyZWF0ZXIgdGhhbiBh
bHBoYSAoJWQsIGFscGhhPSVkKS4iLCBcCi0gICAgICAgICAgICBjLCBhKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGMgPSBh
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisJV1JOKCJDb2xvciBjb21wb25lbnQgIiAjYyAiIGlzIGdyZWF0ZXIgdGhhbiBhbHBoYSAo
JWQsIGFscGhhPSVkKS4iLCBcCisJICAgIGMsIGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwljID0gYTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KICAgICBDSEVD
S19QUkVNVUxfQ09MT1IociwgYSk7CiAgICAgQ0hFQ0tfUFJFTVVMX0NPTE9SKGcsIGEpOwpAQCAt
MTI2Nyw0MyArMTI2Nyw0MyBAQCB2b2lkIGV3a192aWV3X2JnX2NvbG9yX3NldChFdmFzX09iamVj
dCAqbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiAKICAgICBzZC0+YXBpLT5iZ19jb2xv
cl9zZXQoc2QsIHIsIGcsIGIsIGEpOwogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3ID0g
c2QtPl9wcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2
aWV3ID0gc2QtPl9wcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKHZpZXcpIHsKLSAg
ICAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3I7CisJV2ViQ29yZTo6Q29sb3IgY29sb3I7CiAKLSAg
ICAgICAgaWYgKCFhKQotICAgICAgICAgICAgY29sb3IgPSBXZWJDb3JlOjpDb2xvcigwLCAwLCAw
LCAwKTsKLSAgICAgICAgZWxzZSBpZiAoYSA9PSAyNTUpCi0gICAgICAgICAgICBjb2xvciA9IFdl
YkNvcmU6OkNvbG9yKHIsIGcsIGIsIGEpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2xv
ciA9IFdlYkNvcmU6OkNvbG9yKHIgKiAyNTUgLyBhLCBnICogMjU1IC8gYSwgYiAqIDI1NSAvIGEs
IGEpOworCWlmICghYSkKKwkgICAgY29sb3IgPSBXZWJDb3JlOjpDb2xvcigwLCAwLCAwLCAwKTsK
KwllbHNlIGlmIChhID09IDI1NSkKKwkgICAgY29sb3IgPSBXZWJDb3JlOjpDb2xvcihyLCBnLCBi
LCBhKTsKKwllbHNlCisJICAgIGNvbG9yID0gV2ViQ29yZTo6Q29sb3IociAqIDI1NSAvIGEsIGcg
KiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSk7CiAKLSAgICAgICAgdmlldy0+dXBkYXRlQmFja2dy
b3VuZFJlY3Vyc2l2ZWx5KGNvbG9yLCAhYSk7CisJdmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vy
c2l2ZWx5KGNvbG9yLCAhYSk7CiAgICAgfQogfQogCi12b2lkIGV3a192aWV3X2JnX2NvbG9yX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQgKmcsIGludCAqYiwgaW50ICphKQor
dm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCogciwg
aW50KiBnLCBpbnQqIGIsIGludCogYSkKIHsKICAgICBpZiAocikKLSAgICAgICAgKnIgPSAwOwor
CSpyID0gMDsKICAgICBpZiAoZykKLSAgICAgICAgKmcgPSAwOworCSpnID0gMDsKICAgICBpZiAo
YikKLSAgICAgICAgKmIgPSAwOworCSpiID0gMDsKICAgICBpZiAoYSkKLSAgICAgICAgKmEgPSAw
OworCSphID0gMDsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBp
ZiAocikKLSAgICAgICAgKnIgPSBzZC0+YmdfY29sb3IucjsKKwkqciA9IHNkLT5iZ19jb2xvci5y
OwogICAgIGlmIChnKQotICAgICAgICAqZyA9IHNkLT5iZ19jb2xvci5nOworCSpnID0gc2QtPmJn
X2NvbG9yLmc7CiAgICAgaWYgKGIpCi0gICAgICAgICpiID0gc2QtPmJnX2NvbG9yLmI7CisJKmIg
PSBzZC0+YmdfY29sb3IuYjsKICAgICBpZiAoYSkKLSAgICAgICAgKmEgPSBzZC0+YmdfY29sb3Iu
YTsKKwkqYSA9IHNkLT5iZ19jb2xvci5hOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9z
ZWFyY2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywgRWluYV9Cb29s
IGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWluYV9Cb29sIHdyYXApCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QqIG8sIGNvbnN0IGNo
YXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwg
RWluYV9Cb29sIHdyYXApCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKQEAgLTEzMTIsMTQgKzEzMTIsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3Rl
eHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFf
Qm8KICAgICBXZWJDb3JlOjpGaW5kRGlyZWN0aW9uIGRpcmVjdGlvbjsKIAogICAgIGlmIChjYXNl
X3NlbnNpdGl2ZSkKLSAgICAgICAgc2Vuc2l0aXZlID0gV1RGOjpUZXh0Q2FzZVNlbnNpdGl2ZTsK
KwlzZW5zaXRpdmUgPSBXVEY6OlRleHRDYXNlU2Vuc2l0aXZlOwogICAgIGVsc2UKLSAgICAgICAg
c2Vuc2l0aXZlID0gV1RGOjpUZXh0Q2FzZUluc2Vuc2l0aXZlOworCXNlbnNpdGl2ZSA9IFdURjo6
VGV4dENhc2VJbnNlbnNpdGl2ZTsKIAogICAgIGlmIChmb3J3YXJkKQotICAgICAgICBkaXJlY3Rp
b24gPSBXZWJDb3JlOjpGaW5kRGlyZWN0aW9uRm9yd2FyZDsKKwlkaXJlY3Rpb24gPSBXZWJDb3Jl
OjpGaW5kRGlyZWN0aW9uRm9yd2FyZDsKICAgICBlbHNlCi0gICAgICAgIGRpcmVjdGlvbiA9IFdl
YkNvcmU6OkZpbmREaXJlY3Rpb25CYWNrd2FyZDsKKwlkaXJlY3Rpb24gPSBXZWJDb3JlOjpGaW5k
RGlyZWN0aW9uQmFja3dhcmQ7CiAKICAgICByZXR1cm4gcHJpdi0+cGFnZS0+ZmluZFN0cmluZyhT
dHJpbmc6OmZyb21VVEY4KHN0cmluZyksIHNlbnNpdGl2ZSwgZGlyZWN0aW9uLCB3cmFwKTsKIH0K
QEAgLTEzMzUsNyArMTMzNSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X3NlYXJjaChjb25z
dCBFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5hX0JvCiAgKgogICogQHJl
dHVybiBudW1iZXIgb2YgbWF0Y2hlcy4KICAqLwotdW5zaWduZWQgaW50IGV3a192aWV3X3RleHRf
bWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm9v
bCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0
KQordW5zaWduZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29s
IGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgMCk7CkBAIC0xMzQzLDE0ICsxMzQzLDE0IEBAIHVuc2lnbmVkIGludCBld2tfdmlld190
ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5h
CiAgICAgV1RGOjpUZXh0Q2FzZVNlbnNpdGl2aXR5IHNlbnNpdGl2ZTsKIAogICAgIGlmIChjYXNl
X3NlbnNpdGl2ZSkKLSAgICAgICAgc2Vuc2l0aXZlID0gV1RGOjpUZXh0Q2FzZVNlbnNpdGl2ZTsK
KwlzZW5zaXRpdmUgPSBXVEY6OlRleHRDYXNlU2Vuc2l0aXZlOwogICAgIGVsc2UKLSAgICAgICAg
c2Vuc2l0aXZlID0gV1RGOjpUZXh0Q2FzZUluc2Vuc2l0aXZlOworCXNlbnNpdGl2ZSA9IFdURjo6
VGV4dENhc2VJbnNlbnNpdGl2ZTsKIAogICAgIHJldHVybiBwcml2LT5wYWdlLT5tYXJrQWxsTWF0
Y2hlc0ZvclRleHQoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLCBzZW5zaXRpdmUsIGhpZ2hsaWdo
dCwgbGltaXQpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3VubWFya19h
bGwoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3VubWFy
a19hbGwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKQEAgLTEzNTgsNjcgKzEzNTgsNjcgQEAgRWluYV9Cb29sIGV3a192
aWV3X3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhpZ2hsaWdodCkKK0VpbmFfQm9vbCBld2tf
dmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IGhpZ2hsaWdodCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0
KHNkLT5tYWluX2ZyYW1lLCBoaWdobGlnaHQpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4
dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChzZC0+bWFpbl9m
cmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19lZGl0YWJsZV9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19lZGl0YWJsZV9zZXQo
RXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2Vk
aXRhYmxlX3NldChzZC0+bWFpbl9mcmFtZSwgZWRpdGFibGUpOwogfQogCi1jaGFyICpld2tfdmll
d19zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY2hhciogZXdrX3ZpZXdfc2Vs
ZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIDApOwogICAgIENTdHJpbmcgcyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsK
ICAgICBpZiAocy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiAgICAg
cmV0dXJuIHN0cmR1cChzLmRhdGEoKSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X2VkaXRvcl9jb21tYW5kKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY29uc3QgY2hhciAq
Y29tbWFuZCwgY29uc3QgY2hhciAqdmFsdWUgPSAwKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfZWRpdG9yX2NvbW1hbmQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjb25zdCBjaGFy
KiBjb21tYW5kLCBjb25zdCBjaGFyKiB2YWx1ZSA9IDApCiB7CiAgICAgcmV0dXJuIHByaXYtPnBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNv
bW1hbmQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KGNvbW1hbmQpKS5leGVjdXRlKHZhbHVlKTsKIH0K
IAotRWluYV9Cb29sIGV3a192aWV3X2V4ZWN1dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IEV3a19FZGl0b3JfQ29tbWFuZCBjb21tYW5kLCBjb25zdCBjaGFyICp2YWx1ZSkK
K0VpbmFfQm9vbCBld2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBFd2tfRWRpdG9yX0NvbW1hbmQgY29tbWFuZCwgY29uc3QgY2hhciogdmFsdWUpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKIAogICAg
IHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9J
TUFHRToKLSAgICAgICAgcmV0dXJuIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChwcml2LCAiSW5z
ZXJ0SW1hZ2UiLCB2YWx1ZSk7CisJcmV0dXJuIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChwcml2
LCAiSW5zZXJ0SW1hZ2UiLCB2YWx1ZSk7CiAgICAgY2FzZSBFV0tfRURJVE9SX0NPTU1BTkRfSU5T
RVJUX1RFWFQ6Ci0gICAgICAgIHJldHVybiBfZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQocHJpdiwg
Ikluc2VydFRleHQiLCB2YWx1ZSk7CisJcmV0dXJuIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChw
cml2LCAiSW5zZXJ0VGV4dCIsIHZhbHVlKTsKICAgICBjYXNlIEVXS19FRElUT1JfQ09NTUFORF9T
RUxFQ1RfTk9ORToKLSAgICAgICAgcmV0dXJuIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChwcml2
LCAiVW5zZWxlY3QiKTsKKwlyZXR1cm4gX2V3a192aWV3X2VkaXRvcl9jb21tYW5kKHByaXYsICJV
bnNlbGVjdCIpOwogICAgIGNhc2UgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9BTEw6Ci0gICAg
ICAgIHJldHVybiBfZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQocHJpdiwgIlNlbGVjdEFsbCIpOwor
CXJldHVybiBfZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQocHJpdiwgIlNlbGVjdEFsbCIpOwogICAg
IGNhc2UgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9QQVJBR1JBUEg6Ci0gICAgICAgIHJldHVy
biBfZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQocHJpdiwgIlNlbGVjdFBhcmFncmFwaCIpOworCXJl
dHVybiBfZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQocHJpdiwgIlNlbGVjdFBhcmFncmFwaCIpOwog
ICAgIGNhc2UgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9TRU5URU5DRToKLSAgICAgICAgcmV0
dXJuIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChwcml2LCAiU2VsZWN0U2VudGVuY2UiKTsKKwly
ZXR1cm4gX2V3a192aWV3X2VkaXRvcl9jb21tYW5kKHByaXYsICJTZWxlY3RTZW50ZW5jZSIpOwog
ICAgIGNhc2UgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9MSU5FOgotICAgICAgICByZXR1cm4g
X2V3a192aWV3X2VkaXRvcl9jb21tYW5kKHByaXYsICJTZWxlY3RMaW5lIik7CisJcmV0dXJuIF9l
d2tfdmlld19lZGl0b3JfY29tbWFuZChwcml2LCAiU2VsZWN0TGluZSIpOwogICAgIGNhc2UgRVdL
X0VESVRPUl9DT01NQU5EX1NFTEVDVF9XT1JEOgotICAgICAgICByZXR1cm4gX2V3a192aWV3X2Vk
aXRvcl9jb21tYW5kKHByaXYsICJTZWxlY3RXb3JkIik7CisJcmV0dXJuIF9ld2tfdmlld19lZGl0
b3JfY29tbWFuZChwcml2LCAiU2VsZWN0V29yZCIpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBFSU5BX0ZBTFNFOworCXJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIH0KIAotRWluYV9C
b29sIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2KQorRWluYV9Cb29sIGV3a192aWV3X2NvbnRl
eHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX0Rvd24qIGV2KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwpAQCAtMTQyNiwyNiArMTQyNiwy
NiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19P
YmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTQogICAgIEVpbmFfQm9vbCBtb3VzZV9wcmVzc19o
YW5kbGVkID0gRUlOQV9GQUxTRTsKIAogICAgIHByaXYtPnBhZ2UtPmNvbnRleHRNZW51Q29udHJv
bGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7Ci0gICAgV2ViQ29yZTo6RnJhbWUgKm1haW5fZnJh
bWUgPSBwcml2LT5wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBXZWJDb3JlOjpGcmFtZSogbWFpbl9m
cmFtZSA9IHByaXYtPnBhZ2UtPm1haW5GcmFtZSgpOwogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAg
ICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPnNlbGYsICZ4LCAmeSwgMCwgMCk7CiAKICAg
ICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoZXYsIFdlYkNvcmU6OkludFBvaW50
KHgsIHkpKTsKIAogICAgIGlmIChtYWluX2ZyYW1lLT52aWV3KCkpIHsKLSAgICAgICAgbW91c2Vf
cHJlc3NfaGFuZGxlZCA9Ci0gICAgICAgICAgICBtYWluX2ZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKKwltb3VzZV9wcmVzc19oYW5kbGVkID0KKwkg
ICAgbWFpbl9mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVu
dCk7CiAgICAgfQogCiAgICAgaWYgKG1haW5fZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29u
dGV4dE1lbnVFdmVudChldmVudCkpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCXJldHVy
biBFSU5BX0ZBTFNFOwogCiAgICAgV2ViQ29yZTo6Q29udGV4dE1lbnUqIGNvcmVNZW51ID0KICAg
ICAgICAgcHJpdi0+cGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNvbnRleHRNZW51KCk7
CiAgICAgaWYgKCFjb3JlTWVudSkgewotICAgICAgICAvLyBXZWJDb3JlIGRlY2lkZWQgbm90IHRv
IGNyZWF0ZSBhIGNvbnRleHQgbWVudSwgcmV0dXJuIHRydWUgaWYgZXZlbnQKLSAgICAgICAgLy8g
d2FzIGhhbmRsZWQgYnkgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQKLSAgICAgICAgcmV0dXJuIG1v
dXNlX3ByZXNzX2hhbmRsZWQ7CisJLy8gV2ViQ29yZSBkZWNpZGVkIG5vdCB0byBjcmVhdGUgYSBj
b250ZXh0IG1lbnUsIHJldHVybiB0cnVlIGlmIGV2ZW50CisJLy8gd2FzIGhhbmRsZWQgYnkgaGFu
ZGxlTW91c2VSZWxlYXNlRXZlbnQKKwlyZXR1cm4gbW91c2VfcHJlc3NfaGFuZGxlZDsKICAgICB9
CiAKICAgICByZXR1cm4gRUlOQV9UUlVFOwpAQCAtMTQ1NCw3NSArMTQ1NCw3NSBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IEV2YXNfRXZlbnRfTQogI2VuZGlmCiB9CiAKLWRvdWJsZSBld2tfdmlld19sb2FkX3Byb2dy
ZXNzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2RvdWJsZSBld2tfdmlld19sb2FkX3Byb2dy
ZXNzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAtMS4wKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIC0xLjApOwogICAgIHJldHVybiBwcml2LT5wYWdlLT5wcm9ncmVzcygpLT5lc3RpbWF0
ZWRQcm9ncmVzcygpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCAq
bykKK0VpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tf
ZnJhbWVfc3RvcChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19yZWxv
YWQoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2JqZWN0
KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIHJldHVybiBld2tfZnJhbWVfcmVsb2FkKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3
a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfcmVs
b2FkX2Z1bGwoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfYmFjayhF
dmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19iYWNrKEV2YXNfT2JqZWN0KiBvKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IHJldHVybiBld2tfZnJhbWVfYmFjayhzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfdmlld19mb3J3YXJkKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2Zvcndh
cmQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mb3J3YXJkKHNkLT5tYWluX2Zy
YW1lKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRlKEV2YXNfT2JqZWN0ICpvLCBp
bnQgc3RlcHMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGUoRXZhc19PYmplY3QqIG8sIGlu
dCBzdGVwcykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX25hdmlnYXRlKHNkLT5tYWluX2ZyYW1lLCBzdGVw
cyk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpv
KQorRWluYV9Cb29sIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QqIG8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0
dXJuIGV3a19mcmFtZV9iYWNrX3Bvc3NpYmxlKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2Zy
YW1lX2ZvcndhcmRfcG9zc2libGUoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcykKK0VpbmFf
Qm9vbCBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBz
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoc2QtPm1haW5fZnJhbWUsIHN0
ZXBzKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0Zvcndh
cmRMaXN0SW1wbCo+KHByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+ZW5hYmxlZCgpOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3Nl
dChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTUzMCwyNCArMTUzMCwyNCBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgZW5hYmxlKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUV3a19IaXN0b3J5KiBl
d2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0V3a19IaXN0b3J5KiBl
d2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIDApOwogICAgIGlmICghc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0Zv
cndhcmRMaXN0SW1wbCo+KHByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+ZW5hYmxlZCgp
KSB7Ci0gICAgICAgIEVSUigiYXNrZWQgaGlzdG9yeSwgYnV0IGl0J3MgZGlzYWJsZWQhIFJldHVy
bmluZyAwISIpOwotICAgICAgICByZXR1cm4gMDsKKwlFUlIoImFza2VkIGhpc3RvcnksIGJ1dCBp
dCdzIGRpc2FibGVkISBSZXR1cm5pbmcgMCEiKTsKKwlyZXR1cm4gMDsKICAgICB9CiAgICAgcmV0
dXJuIHByaXYtPmhpc3Rvcnk7CiB9CiAKLWZsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7CiAgICAg
cmV0dXJuIGV3a19mcmFtZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19Db29y
ZCBjeCwgRXZhc19Db29yZCBjeSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09i
amVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tf
VklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0xNTU2LDQyICsxNTU2LDQyIEBAIEVpbmFfQm9v
bCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19Db29y
ZCBjeCwgRXZhc19Db29yCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5h
cGktPnpvb21fc2V0LCBFSU5BX0ZBTFNFKTsKIAogICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9v
bV9yYW5nZS51c2VyX3NjYWxhYmxlKSB7Ci0gICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZh
bHNlIik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCVdSTigidXNlclNjYWxhYmxlIGlz
IGZhbHNlIik7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgaWYgKHpvb20gPCBw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20g
bGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1p
bl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJV1JO
KCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAg
fQogICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsK
LSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0
dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7Ci0gICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOworCVdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXBy
aXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOworCXJldHVy
biBFSU5BX0ZBTFNFOwogICAgIH0KIAogICAgIF9ld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtf
c3RvcChzZCk7CiAgICAgcmV0dXJuIHNkLT5hcGktPnpvb21fc2V0KHNkLCB6b29tLCBjeCwgY3kp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9z
Y2FsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT56b29tX3dlYWtfc21v
b3RoX3NjYWxlOwogfQogCi12b2lkIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQordm9pZCBld2tfdmlld196
b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNtb290
aF9zY2FsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBz
bW9vdGhfc2NhbGUgPSAhIXNtb290aF9zY2FsZTsKICAgICBpZiAoc2QtPnpvb21fd2Vha19zbW9v
dGhfc2NhbGUgPT0gc21vb3RoX3NjYWxlKQotICAgICAgICByZXR1cm47CisJcmV0dXJuOwogICAg
IHNkLT56b29tX3dlYWtfc21vb3RoX3NjYWxlID0gc21vb3RoX3NjYWxlOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGktPnpvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KTsKICAgICBzZC0+YXBpLT56
b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChzZCwgc21vb3RoX3NjYWxlKTsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2
YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFr
X3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29y
ZCBjeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0xNjAwLDE3ICsxNjAwLDE3
IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9h
dCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNkLT5hcGktPnpvb21fd2Vha19zZXQsIEVJTkFfRkFMU0UpOwogCiAgICAgaWYgKCFw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGUpIHsKLSAgICAgICAgV1JOKCJ1
c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJV1JO
KCJ1c2VyU2NhbGFibGUgaXMgZmFsc2UiKTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAK
ICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7Ci0g
ICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRp
bmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOwotICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKKwlXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKwlyZXR1cm4g
RUlOQV9GQUxTRTsKICAgICB9CiAgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLm1heF9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwg
KGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29t
KTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJV1JOKCJ6b29tIGxldmVsIGlzID4gJWYg
OiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3Vi
bGUpem9vbSk7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgc2QtPmFuaW1hdGVk
X3pvb20uem9vbS5zdGFydCA9IGV3a19mcmFtZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CkBA
IC0xNjE5LDM1ICsxNjE5LDM1IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2
YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgcmV0dXJu
IHNkLT5hcGktPnpvb21fd2Vha19zZXQoc2QsIHpvb20sIGN4LCBjeSk7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RhcnQoRXZhc19PYmplY3QgKm8sIGZsb2F0
IHpvb20pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0YXJ0KEV2YXNf
T2JqZWN0KiBvLCBmbG9hdCB6b29tKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSB6
b29tOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29t
X2FuaW1hdGVkX21hcmtfZW5kKEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKQorRWluYV9Cb29s
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpv
b20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwogICAgIHJldHVybiBFSU5B
X1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVu
dChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX2Fu
aW1hdGVkX21hcmtfY3VycmVudChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBzZC0+YW5p
bWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPSB6b29tOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9
CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFdmFzX09iamVj
dCAqbykKK0VpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFdmFzX09i
amVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3Aoc2QpOwogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX3Nl
dChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sIEV2YXNfQ29vcmQg
Y3gsIEV2YXNfQ29vcmQgY3kpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQo
RXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLCBFdmFzX0Nvb3JkIGN4
LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIGRvdWJsZSBub3c7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0xNjU2LDMwICsxNjU2LDMwIEBAIEVp
bmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQg
em9vbSwgZmxvYXQgZHVyYXRpb24sCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5hcGktPnpvb21fd2Vha19zZXQsIEVJTkFfRkFMU0UpOwogCiAgICAgaWYgKCFwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGUpIHsKLSAgICAgICAgV1JOKCJ1c2VyU2Nh
bGFibGUgaXMgZmFsc2UiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJV1JOKCJ1c2Vy
U2NhbGFibGUgaXMgZmFsc2UiKTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKICAgICBp
ZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7Ci0gICAgICAg
IFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpv
b21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOwotICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKwlXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0
aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKwlyZXR1cm4gRUlOQV9G
QUxTRTsKICAgICB9CiAgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1h
eF9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJs
ZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKLSAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIs
IChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9v
bSk7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgaWYgKHByaXYtPmFuaW1hdGVk
X3pvb20uYW5pbWF0b3IpCi0gICAgICAgIHByaXYtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydCA9
IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQocHJpdik7CisJcHJpdi0+YW5pbWF0ZWRf
em9vbS56b29tLnN0YXJ0ID0gX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChwcml2KTsK
ICAgICBlbHNlIHsKLSAgICAgICAgcHJpdi0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gZXdr
X2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKLSAgICAgICAgX2V3a192aWV3X3pvb21f
YW5pbWF0aW9uX3N0YXJ0KHNkKTsKKwlwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBl
d2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworCV9ld2tfdmlld196b29tX2FuaW1h
dGlvbl9zdGFydChzZCk7CiAgICAgfQogCiAgICAgaWYgKGN4IDwgMCkKLSAgICAgICAgY3ggPSAw
OworCWN4ID0gMDsKICAgICBpZiAoY3kgPCAwKQotICAgICAgICBjeSA9IDA7CisJY3kgPSAwOwog
CiAgICAgbm93ID0gZWNvcmVfbG9vcF90aW1lX2dldCgpOwogICAgIHByaXYtPmFuaW1hdGVkX3pv
b20udGltZS5zdGFydCA9IG5vdzsKQEAgLTE2OTYsMTkgKzE2OTYsMTkgQEAgRWluYV9Cb29sIGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBmbG9h
dCBkdXJhdGlvbiwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3
a192aWV3X3pvb21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4g
ZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBzZXR0aW5nKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sIHNldHRpbmcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV96b29tX3RleHRf
b25seV9zZXQoc2QtPm1haW5fZnJhbWUsIHNldHRpbmcpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc19D
b29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKK0VpbmFfQm9v
bCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0x
NzIwLDM4ICsxNzIwLDM4IEBAIEVpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihF
dmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksCiAgICAgICogd291bGQg
c2NyZXcgdXAgcGFyYW1ldGVycyB0aGF0IGFuaW1hdGlvbiBpcyBjdXJyZW50bHkgdXNpbmcKICAg
ICAgKi8KICAgICBpZiAocHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvcikKLSAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAKICAgICBjdXJfem9vbSA9IGV3
a19mcmFtZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiAKICAgICBpZiAoY3VyX3pvb20gPCAw
LjAwMDAxKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsK
ICAgICBpZiAoIWV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChzZC0+bWFpbl9mcmFtZSwgJmN3
LCAmY2gpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsK
IAogICAgIGN3ICo9IHpvb20gLyBjdXJfem9vbTsKICAgICBjaCAqPSB6b29tIC8gY3VyX3pvb207
CiAgICAgREJHKCJyZWdpb24gJWQsJWQrJWR4JWQgQCAlZiBjb250ZW50cz0lZHglZCIsIHgsIHks
IHcsIGgsIHpvb20sIGN3LCBjaCk7CiAKICAgICBpZiAoeCArIHcgPiBjdykKLSAgICAgICAgdyA9
IGN3IC0geDsKKwl3ID0gY3cgLSB4OwogCiAgICAgaWYgKHkgKyBoID4gY2gpCi0gICAgICAgIGgg
PSBjaCAtIHk7CisJaCA9IGNoIC0geTsKIAogICAgIGlmICh4IDwgMCkgewotICAgICAgICB3ICs9
IHg7Ci0gICAgICAgIHggPSAwOworCXcgKz0geDsKKwl4ID0gMDsKICAgICB9CiAgICAgaWYgKHkg
PCAwKSB7Ci0gICAgICAgIGggKz0geTsKLSAgICAgICAgeSA9IDA7CisJaCArPSB5OworCXkgPSAw
OwogICAgIH0KIAogICAgIHJldHVybiBzZC0+YXBpLT5wcmVfcmVuZGVyX3JlZ2lvbihzZCwgeCwg
eSwgdywgaCwgem9vbSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlbGF0
aXZlX3JhZGl1cyhFdmFzX09iamVjdCAqbywgdW5zaWduZWQgaW50IG4pCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIG8sIHVuc2lnbmVk
IGludCBuKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CkBAIC0xNzU5LDEyMiArMTc1OSwxMjIgQEAgRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5k
ZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbikKICAgICBm
bG9hdCBjdXJfem9vbTsKIAogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQot
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKIAogICAgIGN1
cl96b29tID0gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKICAgICByZXR1cm4g
c2QtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoc2QsIG4sIGN1cl96b29tKTsKIH0K
IAotdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCit1
bnNpZ25lZCBpbnQgZXdrX3ZpZXdfaW1oX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5pbWg7CiB9CiAK
LXZvaWQgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3
a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGktPnByZV9yZW5kZXJfY2FuY2VsKTsKICAgICBzZC0+YXBpLT5wcmVfcmVuZGVyX2Nh
bmNlbChzZCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19lbmFibGVfcmVuZGVyKGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2VuYWJsZV9yZW5kZXIoY29uc3QgRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGktPmVu
YWJsZV9yZW5kZXIsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBzZC0+YXBpLT5lbmFibGVfcmVu
ZGVyKHNkKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2Rpc2FibGVfcmVuZGVyKGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2Rpc2FibGVfcmVuZGVyKGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT5k
aXNhYmxlX3JlbmRlciwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT5hcGktPmRpc2FibGVf
cmVuZGVyKHNkKTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50
X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdf
dXNlcl9hZ2VudF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MudXNlcl9hZ2VudDsKIH0K
IAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9zZXQoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IGNoYXIgKnVzZXJfYWdlbnQpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191
c2VyX2FnZW50X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXNlcl9hZ2VudCkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIGlm
IChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLnVzZXJfYWdlbnQsIHVz
ZXJfYWdlbnQpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBjbGll
bnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCo+KHByaXYtPm1h
aW5fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSk7Ci0gICAgICAgIGNsaWVudC0+c2V0Q3VzdG9t
VXNlckFnZW50KFN0cmluZzo6ZnJvbVVURjgodXNlcl9hZ2VudCkpOworCVdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsKiBjbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbCo+KHByaXYtPm1haW5fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSk7CisJY2xp
ZW50LT5zZXRDdXN0b21Vc2VyQWdlbnQoU3RyaW5nOjpmcm9tVVRGOCh1c2VyX2FnZW50KSk7CiAg
ICAgfQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3Nl
dHRpbmdfdXNlcl9zdHlsZXNoZWV0X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNo
YXIqIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2
LT5zZXR0aW5ncy51c2VyX3N0eWxlc2hlZXQ7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVyaSkK
K0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmpl
Y3QqIG8sIGNvbnN0IGNoYXIqIHVyaSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIEVJTkFfRkFMU0UpOwogICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnBy
aXYtPnNldHRpbmdzLnVzZXJfc3R5bGVzaGVldCwgdXJpKSkgewotICAgICAgICBXZWJDb3JlOjpL
VVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwotICAgICAg
ICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGt1cmwpOwor
CVdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJp
KSk7CisJcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihrdXJs
KTsKICAgICB9CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFM
U0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5hdXRvX2xvYWRfaW1hZ2VzOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX3NldChFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGF1dG9tYXRpYykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1
dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAg
YXV0b21hdGljID0gISFhdXRvbWF0aWM7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmF1dG9fbG9h
ZF9pbWFnZXMgIT0gYXV0b21hdGljKSB7Ci0gICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNl
dExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShhdXRvbWF0aWMpOwotICAgICAgICBwcml2LT5zZXR0
aW5ncy5hdXRvX2xvYWRfaW1hZ2VzID0gYXV0b21hdGljOworCXByaXYtPnBhZ2Vfc2V0dGluZ3Mt
PnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShhdXRvbWF0aWMpOworCXByaXYtPnNldHRpbmdz
LmF1dG9fbG9hZF9pbWFnZXMgPSBhdXRvbWF0aWM7CiAgICAgfQogICAgIHJldHVybiBFSU5BX1RS
VUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRv
X3Nocmlua19pbWFnZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLmF1dG9fc2hyaW5rX2ltYWdlczsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfYXV0b19zaHJpbmtfaW1hZ2VzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGF1dG9t
YXRpYykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQo
RXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhdXRvbWF0aWMpCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBhdXRvbWF0aWMgPSAhIWF1dG9t
YXRpYzsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuYXV0b19zaHJpbmtfaW1hZ2VzICE9IGF1dG9t
YXRpYykgewotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRTaHJpbmtzU3RhbmRhbG9u
ZUltYWdlc1RvRml0KGF1dG9tYXRpYyk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmF1dG9fc2hy
aW5rX2ltYWdlcyA9IGF1dG9tYXRpYzsKKwlwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRTaHJpbmtz
U3RhbmRhbG9uZUltYWdlc1RvRml0KGF1dG9tYXRpYyk7CisJcHJpdi0+c2V0dGluZ3MuYXV0b19z
aHJpbmtfaW1hZ2VzID0gYXV0b21hdGljOwogICAgIH0KICAgICByZXR1cm4gRUlOQV9UUlVFOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93
X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Vu
YWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJu
IHByaXYtPnNldHRpbmdzLmVuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3c7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgcmVzaXphYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
ZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBy
ZXNpemFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZB
TFNFKTsKQEAgLTE4ODIsMTc5ICsxODgyLDE3OSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cbwog
ICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Vu
YWJsZV9zY3JpcHRzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVy
biBwcml2LT5zZXR0aW5ncy5lbmFibGVfc2NyaXB0czsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5h
YmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNf
T2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYg
KHByaXYtPnNldHRpbmdzLmVuYWJsZV9zY3JpcHRzICE9IGVuYWJsZSkgewotICAgICAgICBwcml2
LT5wYWdlX3NldHRpbmdzLT5zZXRKYXZhU2NyaXB0RW5hYmxlZChlbmFibGUpOwotICAgICAgICBw
cml2LT5zZXR0aW5ncy5lbmFibGVfc2NyaXB0cyA9IGVuYWJsZTsKKwlwcml2LT5wYWdlX3NldHRp
bmdzLT5zZXRKYXZhU2NyaXB0RW5hYmxlZChlbmFibGUpOworCXByaXYtPnNldHRpbmdzLmVuYWJs
ZV9zY3JpcHRzID0gZW5hYmxlOwogICAgIH0KICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlX3BsdWdp
bnM7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAg
IGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5lbmFibGVfcGx1Z2lu
cyAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0UGx1Z2luc0Vu
YWJsZWQoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlX3BsdWdpbnMgPSBl
bmFibGU7CisJcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0UGx1Z2luc0VuYWJsZWQoZW5hYmxlKTsK
Kwlwcml2LT5zZXR0aW5ncy5lbmFibGVfcGx1Z2lucyA9IGVuYWJsZTsKICAgICB9CiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Zy
YW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZV9mcmFtZV9mbGF0dGVuaW5nOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZB
TFNFKTsKICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5h
YmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgIT0gZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2Vfc2V0
dGluZ3MtPnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+
c2V0dGluZ3MuZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgPSBlbmFibGU7CisJcHJpdi0+cGFnZV9z
ZXR0aW5ncy0+c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChlbmFibGUpOworCXByaXYtPnNldHRp
bmdzLmVuYWJsZV9mcmFtZV9mbGF0dGVuaW5nID0gZW5hYmxlOwogICAgIH0KICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRv
d19vcGVuX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX3NjcmlwdHNfd2luZG93X29wZW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJu
IHByaXYtPnNldHRpbmdzLnNjcmlwdHNfd2luZG93X29wZW47CiB9CiAKLUVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgYWxsb3cpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19v
cGVuX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGFsbG93KQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgYWxsb3cgPSAhIWFsbG93
OwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5zY3JpcHRzX3dpbmRvd19vcGVuICE9IGFsbG93KSB7
Ci0gICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93
c0F1dG9tYXRpY2FsbHkoYWxsb3cpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzX3dp
bmRvd19vcGVuID0gYWxsb3c7CisJcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0SmF2YVNjcmlwdENh
bk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShhbGxvdyk7CisJcHJpdi0+c2V0dGluZ3Muc2NyaXB0
c193aW5kb3dfb3BlbiA9IGFsbG93OwogICAgIH0KICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Njcmlw
dHNfY2FuX2Nsb3NlX3dpbmRvd3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLnNjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3M7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3Nfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgYWxsb3cpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRz
X2Nhbl9jbG9zZV93aW5kb3dzX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGFsbG93KQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAg
YWxsb3cgPSAhIWFsbG93OwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5zY3JpcHRzX2Nhbl9jbG9z
ZV93aW5kb3dzICE9IGFsbG93KSB7Ci0gICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEFs
bG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKGFsbG93KTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3Mu
c2NyaXB0c19jYW5fY2xvc2Vfd2luZG93cyA9IGFsbG93OworCXByaXYtPnBhZ2Vfc2V0dGluZ3Mt
PnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKGFsbG93KTsKKwlwcml2LT5zZXR0aW5ncy5z
Y3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzID0gYWxsb3c7CiAgICAgfQogICAgIHJldHVybiBFSU5B
X1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJl
YXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
cmVzaXphYmxlX3RleHRhcmVhc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJp
di0+c2V0dGluZ3MucmVzaXphYmxlX3RleHRhcmVhczsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFz
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxl
OwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5yZXNpemFibGVfdGV4dGFyZWFzICE9IGVuYWJsZSkg
ewotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUo
ZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MucmVzaXphYmxlX3RleHRhcmVhcyA9IGVu
YWJsZTsKKwlwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoZW5h
YmxlKTsKKwlwcml2LT5zZXR0aW5ncy5yZXNpemFibGVfdGV4dGFyZWFzID0gZW5hYmxlOwogICAg
IH0KICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19wcml2YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3NpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBv
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAg
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnByaXZhdGVfYnJvd3Npbmc7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93
c2luZ19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBlbmFibGUgPSAhIWVu
YWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MucHJpdmF0ZV9icm93c2luZyAhPSBlbmFibGUp
IHsKLSAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChlbmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5nID0gZW5h
YmxlOworCXByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5h
YmxlKTsKKwlwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5nID0gZW5hYmxlOwogICAgIH0K
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19v
ZmZsaW5lX2FwcF9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAg
ICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mub2ZmbGluZV9hcHBfY2FjaGU7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBw
X2NhY2hlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIGVuYWJsZSA9ICEh
ZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5vZmZsaW5lX2FwcF9jYWNoZSAhPSBlbmFi
bGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0T2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLm9mZmxpbmVf
YXBwX2NhY2hlID0gZW5hYmxlOworCXByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldE9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZChlbmFibGUpOworCXByaXYtPnNldHRpbmdzLm9mZmxpbmVf
YXBwX2NhY2hlID0gZW5hYmxlOwogICAgIH0KICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCiAK
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX2dldChjb25zdCBFdmFz
X09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX2dl
dChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5jYXJldF9icm93
c2luZzsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxl
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAg
ICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmNhcmV0X2Jyb3dz
aW5nICE9IGVuYWJsZSkgewotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRDYXJldEJy
b3dzaW5nRW5hYmxlZChlbmFibGUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5jYXJldF9icm93
c2luZyA9IGVuYWJsZTsKKwlwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5h
YmxlZChlbmFibGUpOworCXByaXYtPnNldHRpbmdzLmNhcmV0X2Jyb3dzaW5nID0gZW5hYmxlOwog
ICAgIH0KICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyICpld2tfdmlld19z
ZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBj
aGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTIwNjQsMzAyICsy
MDY0LDMwMiBAQCBjb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgU3RyaW5nIG92ZXJyaWRlRW5jb2RpbmcgPSBj
b3JlX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+b3ZlcnJpZGVFbmNvZGluZygp
OwogCiAgICAgaWYgKG92ZXJyaWRlRW5jb2RpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
MDsKKwlyZXR1cm4gMDsKIAogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0
dGluZ3MuZW5jb2RpbmdfY3VzdG9tLCBvdmVycmlkZUVuY29kaW5nLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ19jdXN0b207CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKmVuY29kaW5nKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2Rpbmdf
Y3VzdG9tX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZW5jb2RpbmcpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBFdmFzX09i
amVjdCogbWFpbl9mcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOwogICAgIFdlYkNv
cmU6OkZyYW1lKiBjb3JlX2ZyYW1lID0gZXdrX2ZyYW1lX2NvcmVfZ2V0KG1haW5fZnJhbWUpOwot
REJHKCIlcyIsIGVuY29kaW5nKTsKKyAgICBEQkcoIiVzIiwgZW5jb2RpbmcpOwogICAgIGVpbmFf
c3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdfY3VzdG9tLCBlbmNv
ZGluZyk7CiAgICAgY29yZV9mcmFtZS0+bG9hZGVyKCktPnJlbG9hZFdpdGhPdmVycmlkZUVuY29k
aW5nKFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpKTsKIAogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29k
aW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuY29kaW5nX2RlZmF1
bHQ7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplbmNvZGluZykKK0VpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFy
KiBlbmNvZGluZykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFf
RkFMU0UpOwogICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdz
LmVuY29kaW5nX2RlZmF1bHQsIGVuY29kaW5nKSkKLSAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5n
cy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoU3RyaW5nOjpmcm9tVVRGOChlbmNvZGluZykp
OworCXByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKFN0cmlu
Zzo6ZnJvbVVURjgoZW5jb2RpbmcpKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGlu
Z19kZXRlY3Rvcl9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBlbmFibGUg
PSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdfZGV0ZWN0b3IgIT0g
ZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFVzZXNFbmNvZGluZ0Rl
dGVjdG9yKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmVuY29kaW5nX2RldGVjdG9y
ID0gZW5hYmxlOworCXByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFVzZXNFbmNvZGluZ0RldGVjdG9y
KGVuYWJsZSk7CisJcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdfZGV0ZWN0b3IgPSBlbmFibGU7CiAg
ICAgfQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0Up
OwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ19kZXRlY3RvcjsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVs
b3Blcl9leHRyYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRp
bmdzLmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4
dHJhc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBlbmFibGUgPSAhIWVu
YWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5hYmxlX2RldmVsb3Blcl9leHRyYXMgIT0g
ZW5hYmxlKSB7Ci0gICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldERldmVsb3BlckV4dHJh
c0VuYWJsZWQoZW5hYmxlKTsKLSAgICAgICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlX2RldmVsb3Bl
cl9leHRyYXMgPSBlbmFibGU7CisJcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0RGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZChlbmFibGUpOworCXByaXYtPnNldHRpbmdzLmVuYWJsZV9kZXZlbG9wZXJfZXh0
cmFzID0gZW5hYmxlOwogICAgIH0KICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1pbnQgZXdr
X3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
CitpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4g
cHJpdi0+c2V0dGluZ3MuZm9udF9taW5pbXVtX3NpemU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUp
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19P
YmplY3QqIG8sIGludCBzaXplKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRfbWluaW11bV9zaXpl
ICE9IHNpemUpIHsKLSAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0TWluaW11bUZvbnRT
aXplKHNpemUpOwotICAgICAgICBwcml2LT5zZXR0aW5ncy5mb250X21pbmltdW1fc2l6ZSA9IHNp
emU7CisJcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0TWluaW11bUZvbnRTaXplKHNpemUpOworCXBy
aXYtPnNldHRpbmdzLmZvbnRfbWluaW11bV9zaXplID0gc2l6ZTsKICAgICB9CiAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2lj
YWxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21pbmltdW1fbG9naWNhbF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5m
b250X21pbmltdW1fbG9naWNhbF9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUp
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3Nl
dChFdmFzX09iamVjdCogbywgaW50IHNpemUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZm9udF9taW5p
bXVtX2xvZ2ljYWxfc2l6ZSAhPSBzaXplKSB7Ci0gICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3Mt
PnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoc2l6ZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdz
LmZvbnRfbWluaW11bV9sb2dpY2FsX3NpemUgPSBzaXplOworCXByaXYtPnBhZ2Vfc2V0dGluZ3Mt
PnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoc2l6ZSk7CisJcHJpdi0+c2V0dGluZ3MuZm9udF9t
aW5pbXVtX2xvZ2ljYWxfc2l6ZSA9IHNpemU7CiAgICAgfQogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKLWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKK2ludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dl
dChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDAp
OwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X2RlZmF1bHRfc2l6ZTsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfc2V0KEV2YXNfT2JqZWN0
ICpvLCBpbnQgc2l6ZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9z
aXplX3NldChFdmFzX09iamVjdCogbywgaW50IHNpemUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZm9u
dF9kZWZhdWx0X3NpemUgIT0gc2l6ZSkgewotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5z
ZXREZWZhdWx0Rm9udFNpemUoc2l6ZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmZvbnRfZGVm
YXVsdF9zaXplID0gc2l6ZTsKKwlwcml2LT5wYWdlX3NldHRpbmdzLT5zZXREZWZhdWx0Rm9udFNp
emUoc2l6ZSk7CisJcHJpdi0+c2V0dGluZ3MuZm9udF9kZWZhdWx0X3NpemUgPSBzaXplOwogICAg
IH0KICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1pbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250
X21vbm9zcGFjZV9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2ludCBld2tfdmlld19z
ZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdz
LmZvbnRfbW9ub3NwYWNlX3NpemU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Zv
bnRfbW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6ZSkKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0KiBv
LCBpbnQgc2l6ZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFf
RkFMU0UpOwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5mb250X21vbm9zcGFjZV9zaXplICE9IHNp
emUpIHsKLSAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0RGVmYXVsdEZpeGVkRm9udFNp
emUoc2l6ZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlX3NpemUgPSBz
aXplOworCXByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldERlZmF1bHRGaXhlZEZvbnRTaXplKHNpemUp
OworCXByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlX3NpemUgPSBzaXplOwogICAgIH0KICAg
ICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyICpld2tfdmlld19mb250X2ZhbWls
eV9uYW1lX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRfZmFt
aWx5KQorY29uc3QgY2hhciogZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8sIEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSkKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIDApOwogCiAgICAgc3dpdGNoIChmb250X2ZhbWlseSkgewogICAgIGNh
c2UgRVdLX0ZPTlRfRkFNSUxZX1NUQU5EQVJEOgotICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MuZm9udF9zdGFuZGFyZDsKKwlyZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zdGFuZGFyZDsK
ICAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9DVVJTSVZFOgotICAgICAgICByZXR1cm4gcHJpdi0+
c2V0dGluZ3MuZm9udF9jdXJzaXZlOworCXJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X2N1cnNp
dmU7CiAgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfRkFOVEFTWToKLSAgICAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLmZvbnRfZmFudGFzeTsKKwlyZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9m
YW50YXN5OwogICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX01PTk9TUEFDRToKLSAgICAgICAgcmV0
dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlOworCXJldHVybiBwcml2LT5zZXR0aW5n
cy5mb250X21vbm9zcGFjZTsKICAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9TRVJJRjoKLSAgICAg
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWY7CisJcmV0dXJuIHByaXYtPnNldHRp
bmdzLmZvbnRfc2VyaWY7CiAgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfU0FOU19TRVJJRjoKLSAg
ICAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc2Fuc19zZXJpZjsKKwlyZXR1cm4gcHJp
di0+c2V0dGluZ3MuZm9udF9zYW5zX3NlcmlmOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
d2tfRm9udF9GYW1pbHkgZm9udF9mYW1pbHksIGNvbnN0IGNoYXIgKm5hbWUpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19Gb250X0Zh
bWlseSBmb250X2ZhbWlseSwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogCiAgICAgc3dpdGNoIChmb250X2ZhbWls
eSkgewogICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NUQU5EQVJEOgotICAgICAgICBpZiAoZWlu
YV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250X3N0YW5kYXJkLCBuYW1l
KSkKLSAgICAgICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWls
eShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKLSAgICAgICAgYnJlYWs7CisJaWYgKGVp
bmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9zdGFuZGFyZCwgbmFt
ZSkpCisJICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseShBdG9t
aWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKKwlicmVhazsKICAgICBjYXNlIEVXS19GT05UX0ZB
TUlMWV9DVVJTSVZFOgotICAgICAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2
LT5zZXR0aW5ncy5mb250X2N1cnNpdmUsIG5hbWUpKQotICAgICAgICAgICAgcHJpdi0+cGFnZV9z
ZXR0aW5ncy0+c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChuYW1l
KSk7Ci0gICAgICAgIGJyZWFrOworCWlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYt
PnNldHRpbmdzLmZvbnRfY3Vyc2l2ZSwgbmFtZSkpCisJICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3Mt
PnNldEN1cnNpdmVGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOworCWJy
ZWFrOwogICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX0ZBTlRBU1k6Ci0gICAgICAgIGlmIChlaW5h
X3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfZmFudGFzeSwgbmFtZSkp
Ci0gICAgICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRGYW50YXN5Rm9udEZhbWlseShB
dG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKLSAgICAgICAgYnJlYWs7CisJaWYgKGVpbmFf
c3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5LCBuYW1lKSkK
KwkgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoQXRvbWljU3Ry
aW5nOjpmcm9tVVRGOChuYW1lKSk7CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlf
TU9OT1NQQUNFOgotICAgICAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5z
ZXR0aW5ncy5mb250X21vbm9zcGFjZSwgbmFtZSkpCi0gICAgICAgICAgICBwcml2LT5wYWdlX3Nl
dHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChuYW1lKSk7
Ci0gICAgICAgIGJyZWFrOworCWlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNl
dHRpbmdzLmZvbnRfbW9ub3NwYWNlLCBuYW1lKSkKKwkgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+
c2V0Rml4ZWRGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOworCWJyZWFr
OwogICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NFUklGOgotICAgICAgICBpZiAoZWluYV9zdHJp
bmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250X3NlcmlmLCBuYW1lKSkKLSAgICAg
ICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFNlcmlmRm9udEZhbWlseShBdG9taWNTdHJp
bmc6OmZyb21VVEY4KG5hbWUpKTsKLSAgICAgICAgYnJlYWs7CisJaWYgKGVpbmFfc3RyaW5nc2hh
cmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9zZXJpZiwgbmFtZSkpCisJICAgIHByaXYt
PnBhZ2Vfc2V0dGluZ3MtPnNldFNlcmlmRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4
KG5hbWUpKTsKKwlicmVhazsKICAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9TQU5TX1NFUklGOgot
ICAgICAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250
X3NhbnNfc2VyaWYsIG5hbWUpKQotICAgICAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0
U2Fuc1NlcmlmRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKLSAgICAg
ICAgYnJlYWs7CisJaWYgKGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3Mu
Zm9udF9zYW5zX3NlcmlmLCBuYW1lKSkKKwkgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0U2Fu
c1NlcmlmRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKKwlicmVhazsK
ICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlyZXR1cm4gRUlOQV9G
QUxTRTsKICAgICB9CiAKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5zcGF0aWFsX25hdmlnYXRp
b247CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wg
ZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLnNwYXRp
YWxfbmF2aWdhdGlvbiAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+
c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRp
bmdzLnNwYXRpYWxfbmF2aWdhdGlvbiA9IGVuYWJsZTsKKwlwcml2LT5wYWdlX3NldHRpbmdzLT5z
ZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlKTsKKwlwcml2LT5zZXR0aW5ncy5zcGF0
aWFsX25hdmlnYXRpb24gPSBlbmFibGU7CiAgICAgfQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9
CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MubG9jYWxfc3Rv
cmFnZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAg
IGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5sb2NhbF9zdG9yYWdl
ICE9IGVuYWJsZSkgewotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRMb2NhbFN0b3Jh
Z2VFbmFibGVkKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLmxvY2FsX3N0b3JhZ2Ug
PSBlbmFibGU7CisJcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0TG9jYWxTdG9yYWdlRW5hYmxlZChl
bmFibGUpOworCXByaXYtPnNldHRpbmdzLmxvY2FsX3N0b3JhZ2UgPSBlbmFibGU7CiAgICAgfQog
ICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Bh
Z2VfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfcGFnZV9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+
c2V0dGluZ3MucGFnZV9jYWNoZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcGFn
ZV9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFM
U0UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5wYWdl
X2NhY2hlICE9IGVuYWJsZSkgewotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRVc2Vz
UGFnZUNhY2hlKGVuYWJsZSk7Ci0gICAgICAgIHByaXYtPnNldHRpbmdzLnBhZ2VfY2FjaGUgPSBl
bmFibGU7CisJcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0VXNlc1BhZ2VDYWNoZShlbmFibGUpOwor
CXByaXYtPnNldHRpbmdzLnBhZ2VfY2FjaGUgPSBlbmFibGU7CiAgICAgfQogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFn
ZV9kYXRhYmFzZV9wYXRoX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3
a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX2dldChjb25zdCBFdmFz
X09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVy
biBwcml2LT5zZXR0aW5ncy5sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGg7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQoRXZh
c19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBj
aGFyKiBwYXRoKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CiAgICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3Mu
bG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoLCBwYXRoKSkKLSAgICAgICAgcHJpdi0+cGFnZV9z
ZXR0aW5ncy0+c2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0
aCkpOworCXByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChT
dHJpbmc6OmZyb21VVEY4KHBhdGgpKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFsX3NldChFdmFzX09i
amVjdCAqbywgZG91YmxlIGludGVydmFsKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbWlu
aW11bV90aW1lcl9pbnRlcnZhbF9zZXQoRXZhc19PYmplY3QqIG8sIGRvdWJsZSBpbnRlcnZhbCkK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAg
IGlmIChmYWJzKHByaXYtPnNldHRpbmdzLmRvbV90aW1lcl9pbnRlcnZhbCAtIGludGVydmFsKSA+
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSkgewotICAgICAgICBwcml2
LT5wYWdlX3NldHRpbmdzLT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsKTsKLSAgICAg
ICAgcHJpdi0+c2V0dGluZ3MuZG9tX3RpbWVyX2ludGVydmFsID0gaW50ZXJ2YWw7CisJcHJpdi0+
cGFnZV9zZXR0aW5ncy0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7CisJcHJpdi0+
c2V0dGluZ3MuZG9tX3RpbWVyX2ludGVydmFsID0gaW50ZXJ2YWw7CiAgICAgfQogICAgIHJldHVy
biBFSU5BX1RSVUU7CiB9CiAKLWRvdWJsZSBld2tfdmlld19zZXR0aW5nX21pbmltdW1fdGltZXJf
aW50ZXJ2YWxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorZG91YmxlIGV3a192aWV3X3NldHRp
bmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1
cm4gcHJpdi0+c2V0dGluZ3MuZG9tX3RpbWVyX2ludGVydmFsOwogfQogCi1Fd2tfVmlld19TbWFy
dF9EYXRhICpld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0V3
a19WaWV3X1NtYXJ0X0RhdGEqIGV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAg
IHJldHVybiBzZDsKQEAgLTIzODIsMTQgKzIzODIsMTQgQEAgRXdrX1ZpZXdfU21hcnRfRGF0YSAq
ZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgKiBAbm90ZSB0
aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3
YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLWNv
bnN0IEVpbmFfUmVjdGFuZ2xlICpld2tfdmlld19yZXBhaW50c19nZXQoY29uc3QgRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhICpwcml2LCBzaXplX3QgKmNvdW50KQorY29uc3QgRWluYV9SZWN0YW5nbGUq
IGV3a192aWV3X3JlcGFpbnRzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYs
IHNpemVfdCogY291bnQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNv
dW50LCAwKTsKICAgICBpZiAoY291bnQpCi0gICAgICAgICpjb3VudCA9IDA7CisJKmNvdW50ID0g
MDsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgMCk7CiAgICAgaWYg
KGNvdW50KQotICAgICAgICAqY291bnQgPSBwcml2LT5yZXBhaW50cy5jb3VudDsKKwkqY291bnQg
PSBwcml2LT5yZXBhaW50cy5jb3VudDsKICAgICByZXR1cm4gcHJpdi0+cmVwYWludHMuYXJyYXk7
CiB9CiAKQEAgLTI0MTAsMTQgKzI0MTAsMTQgQEAgY29uc3QgRWluYV9SZWN0YW5nbGUgKmV3a192
aWV3X3JlcGFpbnRzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIHMKICAq
IEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3Nl
cyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4K
ICAqLwotY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0ICpld2tfdmlld19zY3JvbGxfcmVxdWVzdHNf
Z2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgc2l6ZV90ICpjb3VudCkKK2Nv
bnN0IEV3a19TY3JvbGxfUmVxdWVzdCogZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldChjb25z
dCBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCogY291bnQpCiB7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvdW50LCAwKTsKICAgICBpZiAoY291bnQpCi0g
ICAgICAgICpjb3VudCA9IDA7CisJKmNvdW50ID0gMDsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwocHJpdiwgMCk7CiAgICAgaWYgKGNvdW50KQotICAgICAgICAqY291bnQgPSBw
cml2LT5zY3JvbGxzLmNvdW50OworCSpjb3VudCA9IHByaXYtPnNjcm9sbHMuY291bnQ7CiAgICAg
cmV0dXJuIHByaXYtPnNjcm9sbHMuYXJyYXk7CiB9CiAKQEAgLTI0MzUsNyArMjQzNSw3IEBAIGNv
bnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldChjb25z
dCBFd2tfVmlld19Qcml2YXRlX0RhCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1
c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUg
dGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfcmVwYWludF9hZGQo
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwg
RXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit2b2lkIGV3a192aWV3X3JlcGFpbnRfYWRkKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2
YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHByaXYpOwogICAgIF9ld2tfdmlld19yZXBhaW50X2FkZChwcml2LCB4LCB5LCB3LCBoKTsK
QEAgLTI0NDksMjQgKzI0NDksMjQgQEAgdm9pZCBld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmll
d19Qcml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZAogICogQG5vdGUg
dGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQg
d2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCi12
b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSAqcHJpdikKK3ZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHByaXYpOwogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2ID0gcHJpdi0+bWFpbl9mcmFt
ZS0+dmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdiA9IHByaXYtPm1haW5fZnJhbWUt
PnZpZXcoKTsKICAgICBpZiAoIXYpIHsKLSAgICAgICAgRVJSKCJubyBtYWluIGZyYW1lIHZpZXci
KTsKLSAgICAgICAgcmV0dXJuOworCUVSUigibm8gbWFpbiBmcmFtZSB2aWV3Iik7CisJcmV0dXJu
OwogICAgIH0KICAgICB2LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7
CiB9CiAKLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKQordm9pZCBld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CiAgICAgaWYgKCFzZC0+YXBpLT5zY3JvbGxz
X3Byb2Nlc3Moc2QpKQotICAgICAgICBFUlIoImZhaWxlZCB0byBwcm9jZXNzIHNjcm9sbHMuIik7
CisJRVJSKCJmYWlsZWQgdG8gcHJvY2VzcyBzY3JvbGxzLiIpOwogICAgIF9ld2tfdmlld19zY3Jv
bGxzX2ZsdXNoKHByaXYpOwogfQogCkBAIC0yNDc5LDMyICsyNDc5LDMyIEBAIHZvaWQgZXdrX3Zp
ZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICogICAgICAgdG8g
ZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCiBzdHJ1Y3QgX0V3a19WaWV3X1Bh
aW50X0NvbnRleHQgewotICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCAqZ2M7Ci0gICAgV2Vi
Q29yZTo6RnJhbWVWaWV3ICp2aWV3OwotICAgIGNhaXJvX3QgKmNyOworICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCogZ2M7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3OworICAgIGNh
aXJvX3QqIGNyOwogfTsKIAotRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjcikKK0V3
a19WaWV3X1BhaW50X0NvbnRleHQqIGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9fdCogY3IpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHByaXYsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChjciwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPm1h
aW5fZnJhbWUsIDApOwotICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHByaXYtPm1haW5f
ZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWlu
X2ZyYW1lLT52aWV3KCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcs
IDApOwotICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQgPSAoRXdrX1ZpZXdfUGFpbnRf
Q29udGV4dCAqKW1hbGxvYyhzaXplb2YoKmN0eHQpKTsKKyAgICBFd2tfVmlld19QYWludF9Db250
ZXh0KiBjdHh0ID0gKEV3a19WaWV3X1BhaW50X0NvbnRleHQqKW1hbGxvYyhzaXplb2YoKmN0eHQp
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3R4dCwgMCk7CiAKICAgICBj
dHh0LT5nYyA9IG5ldyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQoY3IpOwogICAgIGlmICghY3R4
dC0+Z2MpIHsKLSAgICAgICAgZnJlZShjdHh0KTsKLSAgICAgICAgcmV0dXJuIDA7CisJZnJlZShj
dHh0KTsKKwlyZXR1cm4gMDsKICAgICB9CiAgICAgY3R4dC0+dmlldyA9IHZpZXc7CiAgICAgY3R4
dC0+Y3IgPSBjYWlyb19yZWZlcmVuY2UoY3IpOwogICAgIHJldHVybiBjdHh0OwogfQogCi12b2lk
IGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0
KQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2ZyZWUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4
dCogY3R4dCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBk
ZWxldGUgY3R4dC0+Z2M7CkBAIC0yNTEyLDI4ICsyNTEyLDI4IEBAIHZvaWQgZXdrX3ZpZXdfcGFp
bnRfY29udGV4dF9mcmVlKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQpCiAgICAgZnJlZShj
dHh0KTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NhdmUoRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCAqY3R4dCkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKEV3a19W
aWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oY3R4dCk7CiAgICAgY2Fpcm9fc2F2ZShjdHh0LT5jcik7CiAgICAgY3R4dC0+Z2MtPnNhdmUo
KTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCAqY3R4dCkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3
a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oY3R4dCk7CiAgICAgY3R4dC0+Z2MtPnJlc3RvcmUoKTsKICAgICBjYWlyb19yZXN0b3Jl
KGN0eHQtPmNyKTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoRXdrX1Zp
ZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCit2b2lk
IGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0
LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihjdHh0KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKICAg
ICBjdHh0LT5nYy0+Y2xpcChXZWJDb3JlOjpJbnRSZWN0KGFyZWEtPngsIGFyZWEtPnksIGFyZWEt
PncsIGFyZWEtPmgpKTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KEV3
a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKQor
dm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQq
IGN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKGN0eHQpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEp
OwpAQCAtMjU0MSwxMSArMjU0MSwxMSBAQCB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFp
bnQoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YQogICAgIFdl
YkNvcmU6OkludFJlY3QgcmVjdChhcmVhLT54LCBhcmVhLT55LCBhcmVhLT53LCBhcmVhLT5oKTsK
IAogICAgIGlmIChjdHh0LT52aWV3LT5pc1RyYW5zcGFyZW50KCkpCi0gICAgICAgIGN0eHQtPmdj
LT5jbGVhclJlY3QocmVjdCk7CisJY3R4dC0+Z2MtPmNsZWFyUmVjdChyZWN0KTsKICAgICBjdHh0
LT52aWV3LT5wYWludChjdHh0LT5nYywgcmVjdCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9wYWludF9jb250ZW50cyhFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25z
dCBFaW5hX1JlY3RhbmdsZSAqYXJlYSkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWlu
dF9jb250ZW50cyhFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3Rh
bmdsZSogYXJlYSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKQEAgLTI1NTMsMjYgKzI1NTMsMjYg
QEAgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEUKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoYXJl
YS0+eCwgYXJlYS0+eSwgYXJlYS0+dywgYXJlYS0+aCk7CiAKICAgICBpZiAoY3R4dC0+dmlldy0+
aXNUcmFuc3BhcmVudCgpKQotICAgICAgICBjdHh0LT5nYy0+Y2xlYXJSZWN0KHJlY3QpOworCWN0
eHQtPmdjLT5jbGVhclJlY3QocmVjdCk7CiAKICAgICBjdHh0LT52aWV3LT5wYWludENvbnRlbnRz
KGN0eHQtPmdjLCByZWN0KTsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxl
KEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0IHNjYWxl
X3kpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdfUGFpbnRfQ29u
dGV4dCogY3R4dCwgZmxvYXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVfeSkKIHsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKIAogICAgIGN0eHQtPmdjLT5zY2FsZShXZWJDb3Jl
OjpGbG9hdFNpemUoc2NhbGVfeCwgc2NhbGVfeSkpOwogfQogCi12b2lkIGV3a192aWV3X3BhaW50
X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGZsb2F0IHgs
IGZsb2F0IHkpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3
X1BhaW50X0NvbnRleHQqIGN0eHQsIGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAKICAgICBjdHh0LT5nYy0+dHJhbnNsYXRlKHgsIHkp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpw
cml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwg
Y29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHByaXYsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChjciwgRUlOQV9GQUxTRSk7CkBAIC0yNTgxLDcgKzI1ODEsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwg
Y29uc3QgRWluYV9SZQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBF
SU5BX0ZBTFNFKTsKIAogICAgIGlmICh2aWV3LT5uZWVkc0xheW91dCgpKQotICAgICAgICB2aWV3
LT5mb3JjZUxheW91dCgpOworCXZpZXctPmZvcmNlTGF5b3V0KCk7CiAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0IGdjKGNyKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoYXJlYS0+eCwg
YXJlYS0+eSwgYXJlYS0+dywgYXJlYS0+aCk7CiAKQEAgLTI1ODksNyArMjU4OSw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3Qg
KmNyLCBjb25zdCBFaW5hX1JlCiAgICAgZ2Muc2F2ZSgpOwogICAgIGdjLmNsaXAocmVjdCk7CiAg
ICAgaWYgKHZpZXctPmlzVHJhbnNwYXJlbnQoKSkKLSAgICAgICAgZ2MuY2xlYXJSZWN0KHJlY3Qp
OworCWdjLmNsZWFyUmVjdChyZWN0KTsKICAgICB2aWV3LT5wYWludCgmZ2MsIHJlY3QpOwogICAg
IGdjLnJlc3RvcmUoKTsKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKQEAgLTI1OTcsNyArMjU5Nyw3
IEBAIEVpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYs
IGNhaXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAq
cHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKQorRWluYV9Cb29s
IGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fp
cm9fdCogY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoY3IsIEVJTkFfRkFMU0UpOwpAQCAtMjYxMiw3ICsyNjEyLDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAq
cHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnMKICAgICBnYy5zYXZlKCk7CiAgICAgZ2MuY2xpcChyZWN0
KTsKICAgICBpZiAodmlldy0+aXNUcmFuc3BhcmVudCgpKQotICAgICAgICBnYy5jbGVhclJlY3Qo
cmVjdCk7CisJZ2MuY2xlYXJSZWN0KHJlY3QpOwogICAgIHZpZXctPnBhaW50Q29udGVudHMoJmdj
LCAgcmVjdCk7CiAgICAgZ2MucmVzdG9yZSgpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwpAQCAt
MjYyOCw3ICsyNjI4LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnMKICAqCiAgKiBFbWl0cyBz
aWduYWw6ICJyZWFkeSIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X3Jl
YWR5KEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19yZWFkeShFdmFzX09iamVjdCogbykK
IHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG8sICJyZWFkeSIsIDApOwpAQCAtMjY0Miw3ICsyNjQyLDcgQEAgdm9pZCBld2tfdmlld19y
ZWFkeShFdmFzX09iamVjdCAqbykKICAqIEVtaXRzIHNpZ25hbDogImlucHV0bWV0aG9kLGNoYW5n
ZWQiIHdpdGggYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpdCdzCiAgKiBlbmFibGVkIG9y
IG5vdC4KICAqLwotdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgYWN0aXZlKQordm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3Rh
dGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYWN0aXZlKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2
KTsKQEAgLTI2NTMsMjUgKzI2NTMsMjUgQEAgdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3Rh
dGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWN0aXZlKQogICAgICAgICAmJiBmb2N1
c2VkRnJhbWUtPmRvY3VtZW50KCkKICAgICAgICAgJiYgZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpCiAgICAgICAgICYmIGZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKS0+Zm9j
dXNlZE5vZGUoKS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OmlucHV0VGFnKSkgewot
ICAgICAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQ7CisJV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50OwogCi0gICAgICAgIGlucHV0RWxlbWVu
dCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqPihmb2N1c2VkRnJhbWUt
PmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkpOwotICAgICAgICBpZiAoaW5wdXRFbGVtZW50KSB7
Ci0gICAgICAgICAgICAvLyBmb3IgcGFzc3dvcmQgZmllbGRzLCBhY3RpdmUgPT0gZmFsc2UKLSAg
ICAgICAgICAgIGlmICghYWN0aXZlKSB7Ci0gICAgICAgICAgICAgICAgYWN0aXZlID0gaW5wdXRF
bGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKTsKLSAgICAgICAgICAgICAgICBwcml2LT5pbWggPSBp
bnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICogRVdLX0lNSF9QQVNTV09SRDsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gU2V0IGlucHV0IG1ldGhvZCBoaW50
cyBmb3IgIm51bWJlciIsICJ0ZWwiLCAiZW1haWwiLCBhbmQgInVybCIgaW5wdXQgZWxlbWVudHMu
Ci0gICAgICAgICAgICAgICAgcHJpdi0+aW1oIHw9IGlucHV0RWxlbWVudC0+aXNUZWxlcGhvbmVG
aWVsZCgpICogRVdLX0lNSF9URUxFUEhPTkU7Ci0gICAgICAgICAgICAgICAgcHJpdi0+aW1oIHw9
IGlucHV0RWxlbWVudC0+aXNOdW1iZXJGaWVsZCgpICogRVdLX0lNSF9OVU1CRVI7Ci0gICAgICAg
ICAgICAgICAgcHJpdi0+aW1oIHw9IGlucHV0RWxlbWVudC0+aXNFbWFpbEZpZWxkKCkgKiBFV0tf
SU1IX0VNQUlMOwotICAgICAgICAgICAgICAgIHByaXYtPmltaCB8PSBpbnB1dEVsZW1lbnQtPmlz
VVJMRmllbGQoKSAqIEVXS19JTUhfVVJMOwotICAgICAgICAgICAgfQotICAgICAgICB9CisJaW5w
dXRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCo+KGZvY3Vz
ZWRGcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSk7CisJaWYgKGlucHV0RWxlbWVudCkg
eworCSAgICAvLyBmb3IgcGFzc3dvcmQgZmllbGRzLCBhY3RpdmUgPT0gZmFsc2UKKwkgICAgaWYg
KCFhY3RpdmUpIHsKKwkJYWN0aXZlID0gaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKTsK
KwkJcHJpdi0+aW1oID0gaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKSAqIEVXS19JTUhf
UEFTU1dPUkQ7CisJICAgIH0gZWxzZSB7CisJCS8vIFNldCBpbnB1dCBtZXRob2QgaGludHMgZm9y
ICJudW1iZXIiLCAidGVsIiwgImVtYWlsIiwgYW5kICJ1cmwiIGlucHV0IGVsZW1lbnRzLgorCQlw
cml2LT5pbWggfD0gaW5wdXRFbGVtZW50LT5pc1RlbGVwaG9uZUZpZWxkKCkgKiBFV0tfSU1IX1RF
TEVQSE9ORTsKKwkJcHJpdi0+aW1oIHw9IGlucHV0RWxlbWVudC0+aXNOdW1iZXJGaWVsZCgpICog
RVdLX0lNSF9OVU1CRVI7CisJCXByaXYtPmltaCB8PSBpbnB1dEVsZW1lbnQtPmlzRW1haWxGaWVs
ZCgpICogRVdLX0lNSF9FTUFJTDsKKwkJcHJpdi0+aW1oIHw9IGlucHV0RWxlbWVudC0+aXNVUkxG
aWVsZCgpICogRVdLX0lNSF9VUkw7CisJICAgIH0KKwl9CiAgICAgfQogCi0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiaW5wdXRtZXRob2QsY2hhbmdlZCIsICh2b2lkICop
YWN0aXZlKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJpbnB1dG1l
dGhvZCxjaGFuZ2VkIiwgKHZvaWQqKWFjdGl2ZSk7CiB9CiAKIC8qKgpAQCAtMjY4MCwxMCArMjY4
MCwxMCBAQCB2b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBhY3RpdmUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidGl0bGUsY2hhbmdl
ZCIgd2l0aCBwb2ludGVyIHRvIG5ldyB0aXRsZSBzdHJpbmcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
dGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0aXRsZSkKK3ZvaWQgZXdrX3Zp
ZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0aXRsZSkKIHsKICAgICBE
QkcoIm89JXAsIHRpdGxlPSVzIiwgbywgdGl0bGUgPyB0aXRsZSA6ICIobnVsbCkiKTsKLSAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQg
Kil0aXRsZSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidGl0bGUs
Y2hhbmdlZCIsICh2b2lkKil0aXRsZSk7CiB9CiAKIC8qKgpAQCAtMjY5MiwxMiArMjY5MiwxMiBA
QCB2b2lkIGV3a192aWV3X3RpdGxlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGl0
bGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidXJpLGNoYW5nZWQiIHdpdGggcG9pbnRlciB0byB0
aGUgbmV3IHVyaSBzdHJpbmcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZhc19P
YmplY3QgKm8pCit2b2lkIGV3a192aWV3X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwotICAgIGNvbnN0IGNoYXIgKnVy
aSA9IGV3a19mcmFtZV91cmlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBjb25zdCBjaGFyKiB1
cmkgPSBld2tfZnJhbWVfdXJpX2dldChzZC0+bWFpbl9mcmFtZSk7CiAgICAgREJHKCJvPSVwLCB1
cmk9JXMiLCBvLCB1cmkgPyB1cmkgOiAiKG51bGwpIik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChvLCAidXJpLGNoYW5nZWQiLCAodm9pZCAqKXVyaSk7CisgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidXJpLGNoYW5nZWQiLCAodm9pZCopdXJpKTsK
IH0KIAogLyoqCkBAIC0yNzA4LDcgKzI3MDgsNyBAQCB2b2lkIGV3a192aWV3X3VyaV9jaGFuZ2Vk
KEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQsc3RhcnRlZCIgd2l0
aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09i
amVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIERCRygibz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bywgImxvYWQsc3RhcnRlZCIsIDApOwpAQCAtMjcyMSwxMCArMjcyMSwxMCBAQCB2b2lkIGV3a192
aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJs
b2FkLHN0YXJ0ZWQiIG9uIG1haW4gZnJhbWUgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lk
IGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBl
d2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogbykKIHsKICAgICBE
QkcoIm89JXAiLCBvKTsKLSAgICBFdmFzX09iamVjdCAqZnJhbWUgPSBld2tfdmlld19mcmFtZV9t
YWluX2dldChvKTsKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWlu
X2dldChvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGZyYW1lLCAibG9h
ZCxzdGFydGVkIiwgMCk7CiB9CiAKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgZXdrX3ZpZXdf
ZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2ln
bmFsOiAibG9hZCxwcm92aXNpb25hbCIgb24gVmlldyB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdr
X3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCogbykKIHsKICAgICBEQkcoIm89JXAi
LCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLHByb3Zp
c2lvbmFsIiwgMCk7CkBAIC0yNzUwLDcgKzI3NTAsNyBAQCB2b2lkIGV3a192aWV3X2xvYWRfcHJv
dmlzaW9uYWwoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxuZXd3
aW5kb3csc2hvdyIgb24gdmlldyB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3Zp
ZXdfbG9hZF9zaG93KEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxuZXd3aW5kb3csc2hvdyIsIDApOwpAQCAtMjc2Myw3
ICsyNzYzLDcgQEAgdm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmplY3QgKm8pCiAgKgog
ICogQHBhcmFtIG8gVmlldy4KICAqLwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQo
RXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZChFdmFzX09i
amVjdCogbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkKTsKQEAgLTI3NzksMTAgKzI3NzksMTAgQEAgdm9pZCBld2tfdmlld19mcmFt
ZV9tYWluX2NsZWFyZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAiaWNv
bixyZWNlaXZlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2ZyYW1l
X21haW5faWNvbl9yZWNlaXZlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfZnJhbWVf
bWFpbl9pY29uX3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIERCRygibz0lcCIsIG8p
OwotICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOwor
ICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOwogICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZnJhbWUsICJpY29uLHJlY2VpdmVkIiwg
MCk7CiB9CiAKQEAgLTI3OTYsMTAgKzI3OTYsMTAgQEAgdm9pZCBld2tfdmlld19mcmFtZV9tYWlu
X2ljb25fcmVjZWl2ZWQoRXZhc19PYmplY3QgKm8pCiAgKiBAbm90ZSB0aGVyZSBzaG91bGQgbm90
IGJlIGFueSBlcnJvciBzdHVmZiBoZXJlLCBidXQgdHJ5aW5nIHRvIGJlCiAgKiAgICAgICBjb21w
YXRpYmxlIHdpdGggcHJldmlvdXMgV2ViS2l0LgogICovCi12b2lkIGV3a192aWV3X2xvYWRfZmlu
aXNoZWQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yICplcnJvcikK
K3ZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogbywgY29uc3QgRXdrX0Zy
YW1lX0xvYWRfRXJyb3IqIGVycm9yKQogewogICAgIERCRygibz0lcCwgZXJyb3I9JXAiLCBvLCBl
cnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxmaW5p
c2hlZCIsICh2b2lkICopZXJyb3IpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobywgImxvYWQsZmluaXNoZWQiLCAodm9pZCopZXJyb3IpOwogfQogCiAvKioKQEAgLTI4MDgs
MTAgKzI4MDgsMTAgQEAgdm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciAqZXJyb3IpCiAgKgogICogRW1pdHMgc2lnbmFs
OiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgogICov
Ci12b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFt
ZV9Mb2FkX0Vycm9yICplcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVj
dCogbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQogewogICAgIERCRygibz0l
cCwgZXJyb3I9JXAiLCBvLCBlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChvLCAibG9hZCxlcnJvciIsICh2b2lkICopZXJyb3IpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsZXJyb3IiLCAodm9pZCopZXJyb3IpOwogfQogCiAv
KioKQEAgLTI4MjAsNyArMjgyMCw3IEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09i
amVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgKmVycm9yKQogICoKICAqIEVtaXRz
IHNpZ25hbDogImxvYWQscHJvZ3Jlc3MiIHdpdGggcG9pbnRlciB0byBhIGRvdWJsZSBmcm9tIDAu
MCB0byAxLjAuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNf
T2JqZWN0ICpvKQordm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKQEAgLTI4NDIsNyArMjg0Miw3IEBA
IHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQogICoK
ICAqIEVtaXRzIHNpZ25hbDogInJlc3RvcmUiIHdpdGggZnJhbWUuCiAgKi8KLXZvaWQgZXdrX3Zp
ZXdfcmVzdG9yZV9zdGF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lKQordm9p
ZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJh
bWUpCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVzdG9yZSIs
IGZyYW1lKTsKIH0KQEAgLTI4NjgsMTYgKzI4NjgsMTYgQEAgdm9pZCBld2tfdmlld19yZXN0b3Jl
X3N0YXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUpCiAgKgogICogQHNlZSBl
d2tfd2luZG93X2ZlYXR1cmVzX3JlZigpLgogICovCi1FdmFzX09iamVjdCAqZXdrX3ZpZXdfd2lu
ZG93X2NyZWF0ZShFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0IFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzICpjb3JlRmVhdHVyZXMpCitFdmFzX09iamVjdCogZXdrX3Zp
ZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNv
bnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVyZXMpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAKICAgICBpZiAoIXNkLT5hcGktPndpbmRv
d19jcmVhdGUpCi0gICAgICAgIHJldHVybiBvOworCXJldHVybiBvOwogCi0gICAgRXdrX1dpbmRv
d19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzID0gZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJv
bV9jb3JlKGNvcmVGZWF0dXJlcyk7CisgICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2Zl
YXR1cmVzID0gZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvcmVGZWF0dXJlcyk7
CiAgICAgaWYgKCF3aW5kb3dfZmVhdHVyZXMpCi0gICAgICAgIHJldHVybiAwOworCXJldHVybiAw
OwogCiAgICAgRXZhc19PYmplY3QqIHZpZXcgPSBzZC0+YXBpLT53aW5kb3dfY3JlYXRlKHNkLCBq
YXZhc2NyaXB0LCB3aW5kb3dfZmVhdHVyZXMpOwogICAgIGV3a193aW5kb3dfZmVhdHVyZXNfdW5y
ZWYod2luZG93X2ZlYXR1cmVzKTsKQEAgLTI4OTYsMTMgKzI4OTYsMTMgQEAgRXZhc19PYmplY3Qg
KmV3a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBqYXZhc2Ny
aXB0LCBjb25zdAogICoKICAqIEBwYXJhbSBvIFZpZXcgdG8gYmUgY2xvc2VkLgogICovCi12b2lk
IGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfd2lu
ZG93X2Nsb3NlKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QpOwogCiAgICAgZXdrX3ZpZXdfc3RvcChvKTsKICAgICBpZiAoIXNkLT5hcGktPndp
bmRvd19jbG9zZSkKLSAgICAgICAgcmV0dXJuOworCXJldHVybjsKICAgICBzZC0+YXBpLT53aW5k
b3dfY2xvc2Uoc2QpOwogfQogCkBAIC0yOTEyLDcgKzI5MTIsNyBAQCB2b2lkIGV3a192aWV3X3dp
bmRvd19jbG9zZShFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsaW5rLGhv
dmVyLGluIgogICovCi12b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4oRXZhc19PYmpl
Y3QgKm8sIHZvaWQgKmRhdGEpCit2b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4oRXZh
c19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChvLCAibGluayxob3ZlcixpbiIsIGRhdGEpOwogfQpAQCAtMjkyMyw3ICsyOTIzLDcg
QEAgdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0ICpvLCB2b2lk
ICpkYXRhKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxpbmssaG92ZXIsb3V0IgogICovCi12b2lk
IGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tf
dmlld19tb3VzZV9saW5rX2hvdmVyX291dChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsaW5rLGhvdmVyLG91dCIsIDApOwogfQpAQCAt
MjkzNCw3ICsyOTM0LDcgQEAgdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291dChFdmFz
X09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ0b29sYmFycyx2aXNpYmxlLHNldCIg
d2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X3Rvb2xiYXJz
X3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKK3ZvaWQgZXdr
X3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB2aXNp
YmxlKQogewogICAgIERCRygibz0lcCAodmlzaWJsZT0lZCkiLCBvLCAhIXZpc2libGUpOwogICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRvb2xiYXJzLHZpc2libGUsc2V0
IiwgJnZpc2libGUpOwpAQCAtMjk1MSw3ICsyOTUxLDcgQEAgdm9pZCBld2tfdmlld190b29sYmFy
c192aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCiAgKgogICog
RW1pdHMgc2lnbmFsOiAidG9vbGJhcnMsdmlzaWJsZSxnZXQiIHdpdGggYSBwb2ludGVyIHRvIGEg
Ym9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQordm9pZCBld2tfdmlld190b29sYmFyc192aXNp
YmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogewogICAgIERCRygi
JXMsIG89JXAiLCBfX2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZBTFNFOwpAQCAt
Mjk2Nyw3ICsyOTY3LDcgQEAgdm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInN0
YXR1c2Jhcix2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12
b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJHKCJvPSVwICh2aXNpYmxlPSVk
KSIsIG8sICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChv
LCAic3RhdHVzYmFyLHZpc2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMjk4NCw3ICsyOTg0LDcg
QEAgdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInN0YXR1c2Jhcix2aXNpYmxl
LGdldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X3N0
YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQor
dm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIG8sIEVpbmFf
Qm9vbCogdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5jX18sIG8pOwogICAg
ICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKQEAgLTMwMDAsMTEgKzMwMDAsMTEgQEAgdm9pZCBld2tf
dmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlz
aWJsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJzdGF0dXNiYXIsdGV4dCxzZXQiIHdpdGggYSBz
dHJpbmcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICp0ZXh0KQordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdGV4dF9zZXQo
RXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRleHQpCiB7CiAgICAgREJHKCJvPSVwICh0ZXh0
PSVzKSIsIG8sIHRleHQpOwogICAgIElORigic3RhdHVzIGJhciB0ZXh0IHNldDogJXMiLCB0ZXh0
KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJzdGF0dXNiYXIsdGV4
dCxzZXQiLCAodm9pZCAqKXRleHQpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobywgInN0YXR1c2Jhcix0ZXh0LHNldCIsICh2b2lkKil0ZXh0KTsKIH0KIAogLyoqCkBAIC0z
MDE2LDcgKzMwMTYsNyBAQCB2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3NldChFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqdGV4dCkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJzY3JvbGxi
YXJzLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29s
IHZpc2libGUpCit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmpl
Y3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKQogewogICAgIERCRygibz0lcCAodmlzaWJsZT0lZCki
LCBvLCAhIXZpc2libGUpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
InNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBAIC0zMDMzLDcgKzMwMzMsNyBA
QCB2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInNjcm9sbGJhcnMsdmlzaWJs
ZSxnZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19z
Y3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUp
Cit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCogdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5jX18sIG8pOwog
ICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKQEAgLTMwNDksNyArMzA0OSw3IEBAIHZvaWQgZXdr
X3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2
aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogIm1lbnViYXIsdmlzaWJsZSxzZXQiIHdpdGgg
YSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2li
bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdf
bWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUpCiB7
CiAgICAgREJHKCJvPSVwICh2aXNpYmxlPSVkKSIsIG8sICEhdmlzaWJsZSk7CiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibWVudWJhcix2aXNpYmxlLHNldCIsICZ2aXNp
YmxlKTsKQEAgLTMwNjYsNyArMzA2Niw3IEBAIHZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxl
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCiAgKgogICogRW1pdHMgc2ln
bmFsOiAibWVudWJhcix2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgog
ICovCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCAqdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldChFdmFz
X09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogewogICAgIERCRygiJXMsIG89JXAiLCBf
X2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZBTFNFOwpAQCAtMzA4MywxMCArMzA4
MywxMCBAQCB2b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCAqdmlzaWJsZSkKICAqIEVtaXRzIHNpZ25hbDogInRvb2x0aXAsdGV4dCxzZXQi
IHdpdGggYSBzdHJpbmcuIElmIHRvb2x0aXAgbXVzdCBiZSBhY3R1YWxseQogICogcmVtb3ZlZCwg
dGV4dCB3aWxsIGJlIDAgb3IgJ1wwJwogICovCi12b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9z
ZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQpCit2b2lkIGV3a192aWV3X3Rvb2x0
aXBfdGV4dF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRleHQpCiB7CiAgICAgREJH
KCJvPSVwIHRleHQ9JXMiLCBvLCB0ZXh0KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG8sICJ0b29sdGlwLHRleHQsc2V0IiwgKHZvaWQgKil0ZXh0KTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ0b29sdGlwLHRleHQsc2V0IiwgKHZvaWQqKXRl
eHQpOwogfQogCiAvKioKQEAgLTMwOTgsNyArMzA5OCw3IEBAIHZvaWQgZXdrX3ZpZXdfdG9vbHRp
cF90ZXh0X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCkKICAqIEBzb3VyY2VJ
RCBTb3VyY2UgaWQuCiAgKgogICovCi12b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2Uo
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVt
YmVyLCBjb25zdCBjaGFyICpzb3VyY2VJRCkKK3ZvaWQgZXdrX3ZpZXdfYWRkX2NvbnNvbGVfbWVz
c2FnZShFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IGNoYXIqIHNvdXJjZUlEKQogewogICAgIERCRygibz0lcCBtZXNzYWdl
PSVzIGxpbmVOdW1iZXI9JXUgc291cmNlSUQ9JXMiLCBvLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBz
b3VyY2VJRCk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0zMTA3
LDM4ICszMTA3LDM4IEBAIHZvaWQgZXdrX3ZpZXdfYWRkX2NvbnNvbGVfbWVzc2FnZShFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqbWVzc2FnZSwgdW5zaWduZWQKICAgICBzZC0+YXBpLT5hZGRf
Y29uc29sZV9tZXNzYWdlKHNkLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CiB9CiAK
LXZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3QgKm8sIEV2YXNf
T2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3ZvaWQgZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3Qg
Y2hhciogbWVzc2FnZSkKIHsKICAgICBEQkcoIm89JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIG8s
IGZyYW1lLCBtZXNzYWdlKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKIAogICAgIGlmICghc2Qt
PmFwaS0+cnVuX2phdmFzY3JpcHRfYWxlcnQpCi0gICAgICAgIHJldHVybjsKKwlyZXR1cm47CiAK
ICAgICBzZC0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydChzZCwgZnJhbWUsIG1lc3NhZ2UpOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVj
dCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQorRWluYV9Cb29s
IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIG8sIEV2YXNfT2Jq
ZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBEQkcoIm89JXAgZnJhbWU9
JXAgbWVzc2FnZT0lcyIsIG8sIGZyYW1lLCBtZXNzYWdlKTsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc2QtPmFwaSwgRUlOQV9GQUxTRSk7CiAKICAgICBpZiAoIXNkLT5hcGktPnJ1bl9q
YXZhc2NyaXB0X2NvbmZpcm0pCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCXJldHVybiBF
SU5BX0ZBTFNFOwogCiAgICAgcmV0dXJuIHNkLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2NvbmZpcm0o
c2QsIGZyYW1lLCBtZXNzYWdlKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2Ny
aXB0X3Byb21wdChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFy
ICptZXNzYWdlLCBjb25zdCBjaGFyICpkZWZhdWx0VmFsdWUsIGNoYXIgKip2YWx1ZSkKK0VpbmFf
Qm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIG8sIEV2YXNf
T2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZh
bHVlLCBjaGFyKiogdmFsdWUpCiB7CiAgICAgREJHKCJvPSVwIGZyYW1lPSVwIG1lc3NhZ2U9JXMi
LCBvLCBmcmFtZSwgbWVzc2FnZSk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5h
cGksIEVJTkFfRkFMU0UpOwogCiAgICAgaWYgKCFzZC0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9t
cHQpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCXJldHVybiBFSU5BX0ZBTFNFOwogCiAg
ICAgcmV0dXJuIHNkLT5hcGktPnJ1bl9qYXZhc2NyaXB0X3Byb21wdChzZCwgZnJhbWUsIG1lc3Nh
Z2UsIGRlZmF1bHRWYWx1ZSwgdmFsdWUpOwogfQpAQCAtMzE1NCwxNCArMzE1NCwxNCBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0ICpvLCBFdmFz
X09iamVjdCAqZnJhbWUsIGNvbgogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHNjcmlw
dCBzaG91bGQgYmUgc3RvcHBlZDsgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwotRWluYV9C
b29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFdmFzX09iamVjdCAqbykK
K0VpbmFfQm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOwogCiAgICAgaWYgKCFzZC0+YXBpLT5zaG91bGRfaW50
ZXJydXB0X2phdmFzY3JpcHQpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCXJldHVybiBF
SU5BX0ZBTFNFOwogCiAgICAgcmV0dXJuIHNkLT5hcGktPnNob3VsZF9pbnRlcnJ1cHRfamF2YXNj
cmlwdChzZCk7CiB9CkBAIC0zMTgwLDE1ICszMTgwLDE1IEBAIEVpbmFfQm9vbCBld2tfdmlld19z
aG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QgKm8pCiAgKiBAcGFyYW0gZXhw
ZWN0ZWRfc2l6ZSBUaGUgZXhwZWN0ZWQgc2l6ZSBvZiB0aGlzIGRhdGFiYXNlIGluIG9yZGVyIHRv
IGZ1bGZpbGwKICAqIHNpdGUncyByZXF1aXJlbWVudC4KICAqLwotdWludDY0X3QgZXdrX3ZpZXdf
ZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFt
ZSwgY29uc3QgY2hhciAqZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50X3NpemUsIHVpbnQ2
NF90IGV4cGVjdGVkX3NpemUpCit1aW50NjRfdCBld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9x
dW90YShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBkYXRh
YmFzZU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRfc2l6ZSwgdWludDY0X3QgZXhwZWN0ZWRfc2l6ZSkK
IHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmFwaSwgMCk7
CiAgICAgaWYgKCFzZC0+YXBpLT5leGNlZWRlZF9kYXRhYmFzZV9xdW90YSkKLSAgICAgICAgcmV0
dXJuIDA7CisJcmV0dXJuIDA7CiAKLSAgICBJTkYoImN1cnJlbnRfc2l6ZT0lIlBSSXU2NCIgZXhw
ZWN0ZWRfc2l6ZT0lIlBSSXU2NCwgY3VycmVudF9zaXplLCBleHBlY3RlZF9zaXplKTsKKyAgICBJ
TkYoImN1cnJlbnRfc2l6ZT0lIlBSSXUgNjQgIiBleHBlY3RlZF9zaXplPSUiUFJJdSA2NCwgY3Vy
cmVudF9zaXplLCBleHBlY3RlZF9zaXplKTsKICAgICByZXR1cm4gc2QtPmFwaS0+ZXhjZWVkZWRf
ZGF0YWJhc2VfcXVvdGEoc2QsIGZyYW1lLCBkYXRhYmFzZU5hbWUsIGN1cnJlbnRfc2l6ZSwgZXhw
ZWN0ZWRfc2l6ZSk7CiB9CiAKQEAgLTMyMDUsNyArMzIwNSw3IEBAIHVpbnQ2NF90IGV3a192aWV3
X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJh
bWUsIGNvCiAgKgogICogQHJldHVybiBARUlOQV9GQUxTRSBpZiB1c2VyIGNhbmNlbGVkIGZpbGUg
c2VsZWN0aW9uOyBARUlOQV9UUlVFIGlmIGNvbmZpcm1lZC4KICAqLwotRWluYV9Cb29sIGV3a192
aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIEVp
bmFfQm9vbCBhbGxvd3NfbXVsdGlwbGVfZmlsZXMsIGNvbnN0IGNoYXIgKmFjY2VwdF90eXBlcywg
RWluYV9MaXN0ICoqc2VsZWN0ZWRfZmlsZW5hbWVzKQorRWluYV9Cb29sIGV3a192aWV3X3J1bl9v
cGVuX3BhbmVsKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIEVpbmFfQm9vbCBh
bGxvd3NfbXVsdGlwbGVfZmlsZXMsIGNvbnN0IGNoYXIqIGFjY2VwdF90eXBlcywgRWluYV9MaXN0
Kiogc2VsZWN0ZWRfZmlsZW5hbWVzKQogewogICAgIERCRygibz0lcCBmcmFtZT0lcCBhbGxvd3Nf
bXVsdGlwbGVfZmlsZXM9JWQiLCBvLCBmcmFtZSwgYWxsb3dzX211bHRpcGxlX2ZpbGVzKTsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTMyMTMs
MzkgKzMyMTMsMzkgQEAgRWluYV9Cb29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIEVpbmFfQm9vbAogICAgIEVpbmFfQm9vbCBjb25m
aXJtOwogCiAgICAgaWYgKCFzZC0+YXBpLT5ydW5fb3Blbl9wYW5lbCkKLSAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAKICAgICAqc2VsZWN0ZWRfZmlsZW5h
bWVzID0gMDsKIAogICAgIGNvbmZpcm0gPSBzZC0+YXBpLT5ydW5fb3Blbl9wYW5lbChzZCwgZnJh
bWUsIGFsbG93c19tdWx0aXBsZV9maWxlcywgYWNjZXB0X3R5cGVzLCBzZWxlY3RlZF9maWxlbmFt
ZXMpOwogICAgIGlmICghY29uZmlybSAmJiAqc2VsZWN0ZWRfZmlsZW5hbWVzKQotICAgICAgICBF
UlIoIkNhbmNlbGVkIGZpbGUgc2VsZWN0aW9uLCBidXQgc2VsZWN0ZWQgZmlsZW5hbWVzICE9IDAu
IEZyZWUgbmFtZXMgYmVmb3JlIHJldHVybi4iKTsKKwlFUlIoIkNhbmNlbGVkIGZpbGUgc2VsZWN0
aW9uLCBidXQgc2VsZWN0ZWQgZmlsZW5hbWVzICE9IDAuIEZyZWUgbmFtZXMgYmVmb3JlIHJldHVy
bi4iKTsKICAgICByZXR1cm4gY29uZmlybTsKIH0KIAotdm9pZCBld2tfdmlld19yZXBhaW50KEV2
YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgpCit2b2lkIGV3a192aWV3X3JlcGFpbnQoRXZhc19PYmplY3QqIG8sIEV2YXNf
Q29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAg
ICBEQkcoIm89JXAsIHJlZ2lvbj0lZCwlZCArICVkeCVkIiwgbywgeCwgeSwgdywgaCk7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2KTsKIAogICAgIGlmICghcHJpdi0+bWFpbl9mcmFtZS0+Y29udGVu
dFJlbmRlcmVyKCkpIHsKLSAgICAgICAgRVJSKCJubyBtYWluIGZyYW1lIGNvbnRlbnQgcmVuZGVy
ZXIuIik7Ci0gICAgICAgIHJldHVybjsKKwlFUlIoIm5vIG1haW4gZnJhbWUgY29udGVudCByZW5k
ZXJlci4iKTsKKwlyZXR1cm47CiAgICAgfQogCiAgICAgX2V3a192aWV3X3JlcGFpbnRfYWRkKHBy
aXYsIHgsIHksIHcsIGgpOwogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0KIAot
dm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNf
Q29vcmQgZHksIEV2YXNfQ29vcmQgc3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3csIEV2
YXNfQ29vcmQgc2gsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgY3cs
IEV2YXNfQ29vcmQgY2gsIEVpbmFfQm9vbCBtYWluX2ZyYW1lKQordm9pZCBld2tfdmlld19zY3Jv
bGwoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29v
cmQgc3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3csIEV2YXNfQ29vcmQgc2gsIEV2YXNf
Q29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgY3csIEV2YXNfQ29vcmQgY2gsIEVp
bmFfQm9vbCBtYWluX2ZyYW1lKQogewogICAgIERCRygibz0lcCwgZGVsdGE6ICVkLCVkLCBzY3Jv
bGw6ICVkLCVkKyVkeCVkLCBjbGlwOiAlZCwlZCslZHglZCIsCiAgICAgICAgIG8sIGR4LCBkeSwg
c3gsIHN5LCBzdywgc2gsIGN4LCBjeSwgY3csIGNoKTsKIAogICAgIGlmICgoc3ggIT0gY3gpIHx8
IChzeSAhPSBjeSkgfHwgKHN3ICE9IGN3KSB8fCAoc2ggIT0gY2gpKQotICAgICAgICBXUk4oInNj
cm9sbCByZWdpb24gYW5kIGNsaXAgYXJlIGRpZmZlcmVudCEgJWQsJWQrJWR4JWQgYW5kICVkLCVk
KyVkeCVkIiwKLSAgICAgICAgICAgIHN4LCBzeSwgc3csIHNoLCBjeCwgY3ksIGN3LCBjaCk7CisJ
V1JOKCJzY3JvbGwgcmVnaW9uIGFuZCBjbGlwIGFyZSBkaWZmZXJlbnQhICVkLCVkKyVkeCVkIGFu
ZCAlZCwlZCslZHglZCIsCisJICAgIHN4LCBzeSwgc3csIHNoLCBjeCwgY3ksIGN3LCBjaCk7CiAK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwpAQCAtMzI1Niw3ICszMjU2LDcgQEAgdm9pZCBld2tf
dmlld19zY3JvbGwoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHks
IEV2YXNfQ29vcmQgc3gKICAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzZCk7CiB9CiAKLVdl
YkNvcmU6OlBhZ2UqIGV3a192aWV3X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
CitXZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0zMjY4LDcgKzMyNjgs
NyBAQCBXZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQogICoKICAqIEVtaXRzICJmcmFtZSxjcmVhdGVkIiB3aXRoIHRoZSBuZXcgZnJhbWUg
b2JqZWN0IG9uIHN1Y2Nlc3MuCiAgKi8KLVdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4g
ZXdrX3ZpZXdfZnJhbWVfY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUs
IGNvbnN0IFdURjo6U3RyaW5nICZuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQg
Km93bmVyRWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyAmcmVmZXJyZXIpCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2Zy
YW1lX2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXVEY6
OlN0cmluZyAmbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsIGNvbnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpTdHJpbmcgJnJlZmVycmVy
KQogewogICAgIERCRygibz0lcCwgZnJhbWU9JXAsIG5hbWU9JXMsIG93bmVyRWxlbWVudD0lcCwg
dXJsPSVzLCByZWZlcnJlcj0lcyIsCiAgICAgICAgIG8sIGZyYW1lLCBuYW1lLnV0ZjgoKS5kYXRh
KCksIG93bmVyRWxlbWVudCwKQEAgLTMyNzgsMjAgKzMyNzgsMjAgQEAgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3QgKm8sIEV2
YXNfT2JqZWMKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwog
CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNmID0gX2V3a192aWV3X2NvcmVfZnJh
bWVfbmV3Ci0gICAgICAgIChzZCwgcHJpdiwgb3duZXJFbGVtZW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNkLCBwcml2LCBvd25lckVsZW1lbnQpOwogICAg
IGlmICghY2YpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGNoaWxkIGNvcmUgZnJh
bWUgJyVzJyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiAwOworCUVSUigi
Q291bGQgbm90IGNyZWF0ZSBjaGlsZCBjb3JlIGZyYW1lICclcyciLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworCXJldHVybiAwOwogICAgIH0KIAogICAgIGlmICghZXdrX2ZyYW1lX2NoaWxkX2FkZChm
cmFtZSwgY2YsIG5hbWUsIHVybCwgcmVmZXJyZXIpKSB7Ci0gICAgICAgIEVSUigiQ291bGQgbm90
IGNyZWF0ZSBjaGlsZCBmcmFtZSBvYmplY3QgJyVzJyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgICAgIHJldHVybiAwOworCUVSUigiQ291bGQgbm90IGNyZWF0ZSBjaGlsZCBmcmFtZSBvYmpl
Y3QgJyVzJyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisJcmV0dXJuIDA7CiAgICAgfQogCiAgICAg
Ly8gVGhlIGNyZWF0aW9uIG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSByZW1vdmVkIGl0c2VsZiBhbHJl
YWR5LgogICAgIGlmICghY2YtPnBhZ2UoKSB8fCAhY2YtPnRyZWUoKSB8fCAhY2YtPnRyZWUoKS0+
cGFyZW50KCkpCi0gICAgICAgIHJldHVybiAwOworCXJldHVybiAwOwogCiAgICAgc2QtPmNoYW5n
ZWQuZnJhbWVfcmVjdCA9IEVJTkFfVFJVRTsKICAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChz
ZCk7CkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+
IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmplYwogICAgIHJl
dHVybiBjZi5yZWxlYXNlKCk7CiB9CiAKLVdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+
IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFt
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJ
bkVsZW1lbnQgKmVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4gJnBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyAmbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KQorV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1
Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxl
bWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4gJnBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiAmcGFyYW1W
YWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nICZtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7
CiAgICAgREJHKCJvPSVwLCBmcmFtZT0lcCwgc2l6ZT0lZHglZCwgZWxlbWVudD0lcCwgdXJsPSVz
LCBtaW1lVHlwZT0lcyIsCiAgICAgICAgIG8sIGZyYW1lLCBwbHVnaW5TaXplLndpZHRoKCksIHBs
dWdpblNpemUuaGVpZ2h0KCksIGVsZW1lbnQsCkBAIC0zMzExLDggKzMzMTEsOCBAQCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX09iagogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIAogICAg
IHJldHVybiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZQotICAgICAgICAoZnJhbWUsIHBsdWdpblNp
emUsIGVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsCi0gICAgICAgICBtaW1l
VHlwZSwgbG9hZE1hbnVhbGx5KTsKKyAgICAgICAgICAgICAgIChmcmFtZSwgcGx1Z2luU2l6ZSwg
ZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywKKyAgICAgICAgICAgICAgIG1p
bWVUeXBlLCBsb2FkTWFudWFsbHkpOwogfQogCiAvKioKQEAgLTMzMjYsMzAgKzMzMjYsMzAgQEAg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShF
dmFzX09iamVjdCAqbywgRXZhc19PYmoKICAqCiAgKiBFbWl0czogInBvcHVwLGNyZWF0ZSIgd2l0
aCBhIGxpc3Qgb2YgRXdrX01lbnUgY29udGFpbmluZyBlYWNoIGl0ZW0ncyBkYXRhCiAgKi8KLXZv
aWQgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0ICpvLCBXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQgKmNsaWVudCwgaW50IHNlbGVjdGVkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0ICZyZWN0
KQordm9pZCBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QqIG8sIFdlYkNvcmU6OlBvcHVw
TWVudUNsaWVudCogY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qg
JnJlY3QpCiB7CiAgICAgSU5GKCJvPSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsK
IAogICAgIGlmIChwcml2LT5wb3B1cC5tZW51X2NsaWVudCkKLSAgICAgICAgZXdrX3ZpZXdfcG9w
dXBfZGVzdHJveShvKTsKKwlld2tfdmlld19wb3B1cF9kZXN0cm95KG8pOwogCiAgICAgcHJpdi0+
cG9wdXAubWVudV9jbGllbnQgPSBjbGllbnQ7CiAKICAgICAvLyBwb3B1bGF0ZSBpdGVtcwogICAg
IGNvbnN0IGludCBzaXplID0gY2xpZW50LT5saXN0U2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEV3a19NZW51X0l0ZW0gKml0ZW0gPSAoRXdrX01l
bnVfSXRlbSAqKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7Ci0gICAgICAgIGlmIChjbGllbnQtPml0
ZW1Jc1NlcGFyYXRvcihpKSkKLSAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVOVV9TRVBB
UkFUT1I7Ci0gICAgICAgIGVsc2UgaWYgKGNsaWVudC0+aXRlbUlzTGFiZWwoaSkpCi0gICAgICAg
ICAgICBpdGVtLT50eXBlID0gRVdLX01FTlVfR1JPVVA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVOVV9PUFRJT047Ci0gICAgICAgIGl0ZW0tPnRleHQgPSBl
aW5hX3N0cmluZ3NoYXJlX2FkZChjbGllbnQtPml0ZW1UZXh0KGkpLnV0ZjgoKS5kYXRhKCkpOwor
CUV3a19NZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRlbSopIG1hbGxvYyhzaXplb2YoKml0
ZW0pKTsKKwlpZiAoY2xpZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkpCisJICAgIGl0ZW0tPnR5cGUg
PSBFV0tfTUVOVV9TRVBBUkFUT1I7CisJZWxzZSBpZiAoY2xpZW50LT5pdGVtSXNMYWJlbChpKSkK
KwkgICAgaXRlbS0+dHlwZSA9IEVXS19NRU5VX0dST1VQOworCWVsc2UKKwkgICAgaXRlbS0+dHlw
ZSA9IEVXS19NRU5VX09QVElPTjsKKwlpdGVtLT50ZXh0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQo
Y2xpZW50LT5pdGVtVGV4dChpKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBwcml2LT5wb3B1
cC5tZW51Lml0ZW1zID0gZWluYV9saXN0X2FwcGVuZChwcml2LT5wb3B1cC5tZW51Lml0ZW1zLCBp
dGVtKTsKKwlwcml2LT5wb3B1cC5tZW51Lml0ZW1zID0gZWluYV9saXN0X2FwcGVuZChwcml2LT5w
b3B1cC5tZW51Lml0ZW1zLCBpdGVtKTsKICAgICB9CiAKICAgICBwcml2LT5wb3B1cC5tZW51Lngg
PSByZWN0LngoKTsKQEAgLTMzNTksMjIgKzMzNTksMjIgQEAgdm9pZCBld2tfdmlld19wb3B1cF9u
ZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCAqY2xpZW50LCBpbnQg
c2UKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJwb3B1cCxjcmVhdGUi
LCAmcHJpdi0+cG9wdXAubWVudSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0
cm95KEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3koRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgSU5GKCJvPSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKIAogICAgIGlmICghcHJpdi0+cG9wdXAubWVu
dV9jbGllbnQpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCXJldHVybiBFSU5BX0ZBTFNF
OwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicG9wdXAsd2lsbGRl
bGV0ZSIsICZwcml2LT5wb3B1cC5tZW51KTsKIAogICAgIHZvaWQqIGl0ZW12OwogICAgIEVJTkFf
TElTVF9GUkVFKHByaXYtPnBvcHVwLm1lbnUuaXRlbXMsIGl0ZW12KSB7Ci0gICAgICAgIEV3a19N
ZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRlbSAqKWl0ZW12OwotICAgICAgICBlaW5hX3N0
cmluZ3NoYXJlX2RlbChpdGVtLT50ZXh0KTsKLSAgICAgICAgZnJlZShpdGVtKTsKKwlFd2tfTWVu
dV9JdGVtKiBpdGVtID0gKEV3a19NZW51X0l0ZW0qKWl0ZW12OworCWVpbmFfc3RyaW5nc2hhcmVf
ZGVsKGl0ZW0tPnRleHQpOworCWZyZWUoaXRlbSk7CiAgICAgfQogICAgIHByaXYtPnBvcHVwLm1l
bnVfY2xpZW50LT5wb3B1cERpZEhpZGUoKTsKICAgICBwcml2LT5wb3B1cC5tZW51X2NsaWVudCA9
IDA7CkBAIC0zMzgyLDcgKzMzODIsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJv
eShFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi12b2lkIGV3a192
aWV3X3BvcHVwX3NlbGVjdGVkX3NldChFdmFzX09iamVjdCAqbywgaW50IGluZGV4KQordm9pZCBl
d2tfdmlld19wb3B1cF9zZWxlY3RlZF9zZXQoRXZhc19PYmplY3QqIG8sIGludCBpbmRleCkKIHsK
ICAgICBJTkYoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
KTsKQEAgLTM0MDIsNyArMzQwMiw3IEBAIHZvaWQgZXdrX3ZpZXdfcG9wdXBfc2VsZWN0ZWRfc2V0
KEV2YXNfT2JqZWN0ICpvLCBpbnQgaW5kZXgpCiAgKiBFbWl0czogImRvd25sb2FkLHJlcXVlc3Qi
IHdpdGggYW4gRXdrX0Rvd25sb2FkIGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlCiAgKiBy
ZXF1ZXN0ZWQgZG93bmxvYWQuIFRoZSBkb3dubG9hZCBwZXIgc2UgbXVzdCBiZSBoYW5kbGVkIG91
dHNpZGUgb2Ygd2Via2l0LgogICovCi12b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZh
c19PYmplY3QgKm8sIEV3a19Eb3dubG9hZCAqZG93bmxvYWQpCit2b2lkIGV3a192aWV3X2Rvd25s
b2FkX3JlcXVlc3QoRXZhc19PYmplY3QqIG8sIEV3a19Eb3dubG9hZCogZG93bmxvYWQpCiB7CiAg
ICAgREJHKCJ2aWV3PSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChvLCAiZG93bmxvYWQscmVxdWVzdCIsIGRvd25sb2FkKTsKQEAgLTM0MTUsNyArMzQxNSw3IEBA
IHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCAqbywgRXdrX0Rvd25s
b2FkICpkb3dubG9hZCkKICAqIEBwYXJhbSBvIHZpZXcuCiAgKiBAcGFyYW0gZnJhbWUgdGhlIGZy
YW1lLgogICovCi12b2lkIGV3a192aWV3X2pzX3dpbmRvd19vYmplY3RfY2xlYXIoRXZhc19PYmpl
Y3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSkKK3ZvaWQgZXdrX3ZpZXdfanNfd2luZG93X29iamVj
dF9jbGVhcihFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lKQogewogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImpzLHdpbmRvd29iamVjdCxjbGVhciIsIGZy
YW1lKTsKIH0KQEAgLTM0MjgsNDMgKzM0MjgsNDMgQEAgdm9pZCBld2tfdmlld19qc193aW5kb3df
b2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUpCiAgKgogICog
RW1pdHMgc2lnbmFsOiAidmlld3BvcnQsY2hhbmdlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICov
Ci12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyAmYXJndW1lbnRzKQordm9pZCBld2tfdmll
d192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChFdmFzX09iamVjdCogbywgY29uc3QgV2ViQ29yZTo6
Vmlld3BvcnRBcmd1bWVudHMgJmFyZ3VtZW50cykKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywg
c2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKLSAgICAKKwogICAgIHByaXYt
PnZpZXdwb3J0X2FyZ3VtZW50cyA9IGFyZ3VtZW50czsKICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG8sICJ2aWV3cG9ydCxjaGFuZ2VkIiwgMCk7CiB9CiAKLXZvaWQgZXdrX3Zp
ZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGZsb2F0ICp3
LCBmbG9hdCAqaCwgZmxvYXQgKmluaXRfc2NhbGUsIGZsb2F0ICptYXhfc2NhbGUsIGZsb2F0ICpt
aW5fc2NhbGUsIGZsb2F0ICpkZXZpY2VfcGl4ZWxfcmF0aW8sIEVpbmFfQm9vbCAqdXNlcl9zY2Fs
YWJsZSkKK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8sIGZsb2F0KiB3LCBmbG9hdCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBt
YXhfc2NhbGUsIGZsb2F0KiBtaW5fc2NhbGUsIGZsb2F0KiBkZXZpY2VfcGl4ZWxfcmF0aW8sIEVp
bmFfQm9vbCogdXNlcl9zY2FsYWJsZSkKIHsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0
ZXMgYXR0cmlidXRlcyA9IF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUobyk7
CiAKICAgICBpZiAodykKLSAgICAgICAgKncgPSBhdHRyaWJ1dGVzLmxheW91dFNpemUud2lkdGgo
KTsKKwkqdyA9IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS53aWR0aCgpOwogICAgIGlmIChoKQotICAg
ICAgICAqaCA9IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS5oZWlnaHQoKTsKKwkqaCA9IGF0dHJpYnV0
ZXMubGF5b3V0U2l6ZS5oZWlnaHQoKTsKICAgICBpZiAoaW5pdF9zY2FsZSkKLSAgICAgICAgKmlu
aXRfc2NhbGUgPSBhdHRyaWJ1dGVzLmluaXRpYWxTY2FsZTsKKwkqaW5pdF9zY2FsZSA9IGF0dHJp
YnV0ZXMuaW5pdGlhbFNjYWxlOwogICAgIGlmIChtYXhfc2NhbGUpCi0gICAgICAgICptYXhfc2Nh
bGUgPSBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZTsKKwkqbWF4X3NjYWxlID0gYXR0cmlidXRlcy5t
YXhpbXVtU2NhbGU7CiAgICAgaWYgKG1pbl9zY2FsZSkKLSAgICAgICAgKm1pbl9zY2FsZSA9IGF0
dHJpYnV0ZXMubWluaW11bVNjYWxlOworCSptaW5fc2NhbGUgPSBhdHRyaWJ1dGVzLm1pbmltdW1T
Y2FsZTsKICAgICBpZiAoZGV2aWNlX3BpeGVsX3JhdGlvKQotICAgICAgICAqZGV2aWNlX3BpeGVs
X3JhdGlvID0gYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvOworCSpkZXZpY2VfcGl4ZWxfcmF0
aW8gPSBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CiAgICAgaWYgKHVzZXJfc2NhbGFibGUp
Ci0gICAgICAgICp1c2VyX3NjYWxhYmxlID0gc3RhdGljX2Nhc3Q8Ym9vbD4oYXR0cmlidXRlcy51
c2VyU2NhbGFibGUpOworCSp1c2VyX3NjYWxhYmxlID0gc3RhdGljX2Nhc3Q8Ym9vbD4oYXR0cmli
dXRlcy51c2VyU2NhbGFibGUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9z
ZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlKQorRWlu
YV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5f
c2NhbGUsIGZsb2F0IG1heF9zY2FsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIEVJTkFfRkFMU0UpOwogCiAgICAgaWYgKG1heF9zY2FsZSA8IG1pbl9zY2FsZSkgewot
ICAgICAgICBXUk4oIm1pbl9zY2FsZSBpcyBsYXJnZXIgdGhhbiBtYXhfc2NhbGUiKTsKLSAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJV1JOKCJtaW5fc2NhbGUgaXMgbGFyZ2VyIHRoYW4gbWF4
X3NjYWxlIik7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgcHJpdi0+c2V0dGlu
Z3Muem9vbV9yYW5nZS5taW5fc2NhbGUgPSBtaW5fc2NhbGU7CkBAIC0zNDczLDcgKzM0NzMsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0
IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWZs
b2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2Zs
b2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAtMS4wKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIC0xLjApOwpAQCAtMzQ4MSw3ICszNDgxLDcg
QEAgZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZTsKIH0KIAot
ZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQor
ZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgLTEuMCk7CkBAIC0zNDg5LDcgKzM0ODks
NyBAQCBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pCiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCB1c2VyX3NjYWxhYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVf
c2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMzQ5OSw3ICszNDk5
LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsK
QEAgLTM1MDcsNyArMzUwNyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS51c2VyX3NjYWxhYmxlOwogfQogCi1mbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0
aW9fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorZmxvYXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVs
X3JhdGlvX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCAtMS4wKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIC0xLjApOwpAQCAtMzUxNSwxNCArMzUxNSwxNCBAQCBmbG9hdCBld2tfdmlld19k
ZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy5kZXZpY2VfcGl4ZWxfcmF0aW87CiB9CiAKLXZvaWQgZXdrX3ZpZXdfZGlk
X2ZpcnN0X3Zpc3VhbGx5X25vbmVtcHR5X2xheW91dChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdr
X3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5X25vbmVtcHR5X2xheW91dChFdmFzX09iamVjdCogbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwogICAgIGlmICghcHJpdi0+ZmxhZ3Mudmlld19j
bGVhcmVkKSB7Ci0gICAgICAgIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZChvKTsKLSAgICAg
ICAgZXdrX3ZpZXdfZW5hYmxlX3JlbmRlcihvKTsKLSAgICAgICAgcHJpdi0+ZmxhZ3Mudmlld19j
bGVhcmVkID0gRUlOQV9UUlVFOworCWV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZChvKTsKKwll
d2tfdmlld19lbmFibGVfcmVuZGVyKG8pOworCXByaXYtPmZsYWdzLnZpZXdfY2xlYXJlZCA9IEVJ
TkFfVFJVRTsKICAgICB9CiB9CiAKQEAgLTM1MzIsNyArMzUzMiw3IEBAIHZvaWQgZXdrX3ZpZXdf
ZGlkX2ZpcnN0X3Zpc3VhbGx5X25vbmVtcHR5X2xheW91dChFdmFzX09iamVjdCAqbykKICAqCiAg
KiBAcGFyYW0gbyB2aWV3LgogICovCi12b2lkIGV3a192aWV3X2Rpc3BhdGNoX2RpZF9maW5pc2hf
bG9hZGluZyhFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfZGlzcGF0Y2hfZGlkX2Zpbmlz
aF9sb2FkaW5nKEV2YXNfT2JqZWN0KiBvKQogewogICAgIC8qIElmIHdlIHJlYWNoIHRoaXMgcG9p
bnQgYW5kIHJlbmRlcmluZyBpcyBzdGlsbCBkaXNhYmxlZCwgV2ViQ29yZSB3aWxsIG5vdAogICAg
ICAqIHRyaWdnZXIgdGhlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBzaWduYWwgYW55
bW9yZS4gU28sIHdlCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCB2b2lkIGV3a192aWV3X2Rpc3BhdGNo
X2RpZF9maW5pc2hfbG9hZGluZyhFdmFzX09iamVjdCAqbykKICAgICBld2tfdmlld19kaWRfZmly
c3RfdmlzdWFsbHlfbm9uZW1wdHlfbGF5b3V0KG8pOwogfQogCi12b2lkIGV3a192aWV3X3RyYW5z
aXRpb25fdG9fY29tbWl0ZWRfZm9yX25ld3BhZ2UoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192
aWV3X3RyYW5zaXRpb25fdG9fY29tbWl0ZWRfZm9yX25ld3BhZ2UoRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKQEAgLTM1NjAsNDAgKzM1NjAsNDAgQEAgdm9pZCBl
d2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVkX2Zvcl9uZXdwYWdlKEV2YXNfT2JqZWN0ICpv
KQogICogQHBhcmFtIG8gVmlldyB0byBsb2FkCiAgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHdo
aWNoIGNvbnRhaW4gdXJsIHRvIG5hdmlnYXRlCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCAqbywgRXdrX0ZyYW1lX1Jlc291cmNl
X1JlcXVlc3QgKnJlcXVlc3QpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lf
ZGVjaXNpb24oRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1
ZXN0KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfVFJVRSk7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfVFJVRSk7
CiAKICAgICBpZiAoIXNkLT5hcGktPm5hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKQotICAgICAg
ICByZXR1cm4gRUlOQV9UUlVFOworCXJldHVybiBFSU5BX1RSVUU7CiAKICAgICByZXR1cm4gc2Qt
PmFwaS0+bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oc2QsIHJlcXVlc3QpOwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfanNfb2JqZWN0X2FkZChFdmFzX09iamVjdCAqbywgRXdrX0pTX09iamVj
dCAqb2JqLCBjb25zdCBjaGFyICpvYmpfbmFtZSkKK0VpbmFfQm9vbCBld2tfdmlld19qc19vYmpl
Y3RfYWRkKEV2YXNfT2JqZWN0KiBvLCBFd2tfSlNfT2JqZWN0KiBvYmosIGNvbnN0IGNoYXIqIG9i
al9uYW1lKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChvYmot
PnZpZXcpIC8vIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIGFub3RoZXIgZXdrX3Zp
ZXcKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAg
b2JqLT5uYW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQob2JqX25hbWUpOwogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAKICAgICBKU0M6OkpTTG9jayBs
b2NrKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBXZWJDb3JlOjpKU0RPTVdpbmRv
dyAqd2luZG93ID0gdG9KU0RPTVdpbmRvdyhwcml2LT5tYWluX2ZyYW1lLCBXZWJDb3JlOjptYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSk7Ci0gICAgSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9v
dDsKKyAgICBXZWJDb3JlOjpKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhwcml2
LT5tYWluX2ZyYW1lLCBXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgSlND
OjpCaW5kaW5nczo6Um9vdE9iamVjdCogcm9vdDsKICAgICByb290ID0gcHJpdi0+bWFpbl9mcmFt
ZS0+c2NyaXB0KCktPmJpbmRpbmdSb290T2JqZWN0KCk7CiAKICAgICBpZiAoIXdpbmRvdykgewot
ICAgICAgICBFUlIoIldhcm5pbmc6IGNvdWxkbid0IGdldCB3aW5kb3cgb2JqZWN0Iik7Ci0gICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOworCUVSUigiV2FybmluZzogY291bGRuJ3QgZ2V0IHdpbmRv
dyBvYmplY3QiKTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKICAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFsRXhlYygpOwogCiAgICAgb2JqLT52aWV3ID0gbzsK
LSAgICBKU0M6OkpTT2JqZWN0ICpydW50aW1lT2JqZWN0ID0gKEpTQzo6SlNPYmplY3QqKUpTQzo6
QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKChOUE9iamVjdCopb2JqLCByb290KS0+Y3JlYXRl
UnVudGltZU9iamVjdChleGVjKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBydW50aW1lT2JqZWN0ID0g
KEpTQzo6SlNPYmplY3QqKUpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKChOUE9iamVj
dCopb2JqLCByb290KS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKICAgICBKU0M6OklkZW50
aWZpZXIgaWQgPSBKU0M6OklkZW50aWZpZXIoZXhlYywgb2JqX25hbWUpOwogCiAgICAgSlNDOjpQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTM2MTAsNyArMzYxMCw3IEBAIEVpbmFfQm9vbCBld2tf
dmlld19wcm90b2NvbF9oYW5kbGVyX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhcioqIHBy
b3RvY29scywKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CiAKICAgICBpZiAoIWhh
bmRsZXIpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCXJldHVybiBFSU5BX0ZBTFNFOwog
CiAgICAgcHJpdi0+Y3VzdG9tX3Jlc291cmNlX2hhbmRsZXIuZnVuY3Rpb24gPSBoYW5kbGVyOwog
ICAgIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmNvbnRleHQgPSBjb250ZXh0OwpAQCAt
MzYyNSw4ICszNjI1LDggQEAgRWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5z
ZXQoRXZhc19PYmplY3QqIG8pCiAgICAgRWluYV9Cb29sIHJldCA9IGV3a19jdXN0b21fcHJvdG9j
b2xfaGFuZGxlcl9hbGxfdW5zZXQoKTsKIAogICAgIGlmIChyZXQpIHsKLSAgICAgICAgcHJpdi0+
Y3VzdG9tX3Jlc291cmNlX2hhbmRsZXIuZnVuY3Rpb24gPSAwOwotICAgICAgICBwcml2LT5jdXN0
b21fcmVzb3VyY2VfaGFuZGxlci5jb250ZXh0ID0gMDsKKwlwcml2LT5jdXN0b21fcmVzb3VyY2Vf
aGFuZGxlci5mdW5jdGlvbiA9IDA7CisJcHJpdi0+Y3VzdG9tX3Jlc291cmNlX2hhbmRsZXIuY29u
dGV4dCA9IDA7CiAgICAgfQogCiAgICAgcmV0dXJuIHJldDsKQEAgLTM2MzksNyArMzYzOSw3IEBA
IHZvaWQqIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfcmVzb3VyY2VfZ2V0KEV2YXNfT2JqZWN0
KiBvLCBzaXplX3QqIGJ5dGVzUmVhZCwKIAogICAgIEV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXJf
Q2IgZnVuY3Rpb24gPSBwcml2LT5jdXN0b21fcmVzb3VyY2VfaGFuZGxlci5mdW5jdGlvbjsKICAg
ICBpZiAoZnVuY3Rpb24pCi0gICAgICAgIHJldHVybiBmdW5jdGlvbihmaWxlLCBieXRlc1JlYWQs
IG1pbWUsIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmNvbnRleHQpOworCXJldHVybiBm
dW5jdGlvbihmaWxlLCBieXRlc1JlYWQsIG1pbWUsIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5k
bGVyLmNvbnRleHQpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zNjUzLDI1ICszNjUzLDI1IEBA
IHZvaWQqIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfcmVzb3VyY2VfZ2V0KEV2YXNfT2JqZWN0
KiBvLCBzaXplX3QqIGJ5dGVzUmVhZCwKICAqIEBwYXJhbSB3IG5ldyBjb250ZW50IHdpZHRoLgog
ICogQHBhcmFtIGggbmV3IGNvbnRlbnQgaGVpZ2h0LgogICovCi12b2lkIGV3a192aWV3X2NvbnRl
bnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCAqbywgaW50IHcsIGludCBoKQordm9pZCBld2tf
dmlld19jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19PYmplY3QqIG8sIGludCB3LCBpbnQgaCkK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5jb250ZW50c19yZXNpemUpOwogCiAgICAgaWYgKCFzZC0+YXBpLT5jb250ZW50
c19yZXNpemUoc2QsIHcsIGgpKQotICAgICAgICBFUlIoImZhaWxlZCB0byByZXNpemUgY29udGVu
dHMgdG8gJWR4JWQiLCB3LCBoKTsKKwlFUlIoImZhaWxlZCB0byByZXNpemUgY29udGVudHMgdG8g
JWR4JWQiLCB3LCBoKTsKIH0KIAogLyoqCiAgKiBAaW50ZXJuYWwKLSAqIEdldHMgcGFnZSBzaXpl
IGZyb20gZnJhbWV2aWV3LiAKKyAqIEdldHMgcGFnZSBzaXplIGZyb20gZnJhbWV2aWV3LgogICoK
ICAqIEBwYXJhbSBvIHZpZXcuCiAgKgogICogQHJldHVybiBwYWdlIHNpemUuCiAgKi8KLVdlYkNv
cmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQorV2ViQ29yZTo6RmxvYXRSZWN0IGV3a192aWV3X3BhZ2VfcmVjdF9nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVChzZCwgcHJpdik7CkBAIC0zNjgxLDcgKzM2ODEsNyBAQCBXZWJDb3JlOjpGbG9hdFJl
Y3QgZXdrX3ZpZXdfcGFnZV9yZWN0X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIH0KIAogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCi12b2lkIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX3Nl
dChFdmFzX09iamVjdCAqbywgYm9vbCBuZWVkZWQpCit2b2lkIGV3a192aWV3X25lZWRfdG91Y2hf
ZXZlbnRzX3NldChFdmFzX09iamVjdCogbywgYm9vbCBuZWVkZWQpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0zNjg5
LDcgKzM2ODksNyBAQCB2b2lkIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX3NldChFdmFzX09i
amVjdCAqbywgYm9vbCBuZWVkZWQpCiAgICAgcHJpdi0+ZmxhZ3MubmVlZF90b3VjaF9ldmVudHMg
PSBuZWVkZWQ7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVu
dHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0zNjk3LDYwICszNjk3LDYwIEBAIEVpbmFfQm9v
bCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB9
CiAjZW5kaWYKIAotRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
d2tfVmlld19Nb2RlIHZpZXdfbW9kZSkKK0VpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChFdmFz
X09iamVjdCogbywgRXdrX1ZpZXdfTW9kZSB2aWV3X21vZGUpCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKIAogICAgIHN3aXRjaCAodmlld19tb2Rl
KSB7CiAgICAgY2FzZSBFV0tfVklFV19NT0RFX1dJTkRPV0VEOgotICAgICAgICBwcml2LT5wYWdl
LT5zZXRWaWV3TW9kZShXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZVdpbmRvd2VkKTsKLSAgICAgICAg
YnJlYWs7CisJcHJpdi0+cGFnZS0+c2V0Vmlld01vZGUoV2ViQ29yZTo6UGFnZTo6Vmlld01vZGVX
aW5kb3dlZCk7CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfVklFV19NT0RFX0ZMT0FUSU5HOgotICAg
ICAgICBwcml2LT5wYWdlLT5zZXRWaWV3TW9kZShXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZUZsb2F0
aW5nKTsKLSAgICAgICAgYnJlYWs7CisJcHJpdi0+cGFnZS0+c2V0Vmlld01vZGUoV2ViQ29yZTo6
UGFnZTo6Vmlld01vZGVGbG9hdGluZyk7CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfVklFV19NT0RF
X0ZVTExTQ1JFRU46Ci0gICAgICAgIHByaXYtPnBhZ2UtPnNldFZpZXdNb2RlKFdlYkNvcmU6OlBh
Z2U6OlZpZXdNb2RlRnVsbHNjcmVlbik7Ci0gICAgICAgIGJyZWFrOworCXByaXYtPnBhZ2UtPnNl
dFZpZXdNb2RlKFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlRnVsbHNjcmVlbik7CisJYnJlYWs7CiAg
ICAgY2FzZSBFV0tfVklFV19NT0RFX01BWElNSVpFRDoKLSAgICAgICAgcHJpdi0+cGFnZS0+c2V0
Vmlld01vZGUoV2ViQ29yZTo6UGFnZTo6Vmlld01vZGVNYXhpbWl6ZWQpOwotICAgICAgICBicmVh
azsKKwlwcml2LT5wYWdlLT5zZXRWaWV3TW9kZShXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZU1heGlt
aXplZCk7CisJYnJlYWs7CiAgICAgY2FzZSBFV0tfVklFV19NT0RFX01JTklNSVpFRDoKLSAgICAg
ICAgcHJpdi0+cGFnZS0+c2V0Vmlld01vZGUoV2ViQ29yZTo6UGFnZTo6Vmlld01vZGVNaW5pbWl6
ZWQpOwotICAgICAgICBicmVhazsKKwlwcml2LT5wYWdlLT5zZXRWaWV3TW9kZShXZWJDb3JlOjpQ
YWdlOjpWaWV3TW9kZU1pbmltaXplZCk7CisJYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotRXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK0V3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9kZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRXdrX1ZpZXdfTW9kZSBtb2RlID0gRVdLX1ZJRVdfTU9E
RV9XSU5ET1dFRDsKIAogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAgICAgaWYgKCFzZCkK
LSAgICAgICAgcmV0dXJuIG1vZGU7CisJcmV0dXJuIG1vZGU7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVQoc2QsIHByaXYpOwogICAgIGlmICghcHJpdikKLSAgICAgICAgcmV0dXJuIG1vZGU7CisJcmV0
dXJuIG1vZGU7CiAKICAgICBzd2l0Y2ggKHByaXYtPnBhZ2UtPnZpZXdNb2RlKCkpIHsKICAgICBj
YXNlIFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlRmxvYXRpbmc6Ci0gICAgICAgIG1vZGUgPSBFV0tf
VklFV19NT0RFX0ZMT0FUSU5HOwotICAgICAgICBicmVhazsKKwltb2RlID0gRVdLX1ZJRVdfTU9E
RV9GTE9BVElORzsKKwlicmVhazsKICAgICBjYXNlIFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlRnVs
bHNjcmVlbjoKLSAgICAgICAgbW9kZSA9IEVXS19WSUVXX01PREVfRlVMTFNDUkVFTjsKLSAgICAg
ICAgYnJlYWs7CisJbW9kZSA9IEVXS19WSUVXX01PREVfRlVMTFNDUkVFTjsKKwlicmVhazsKICAg
ICBjYXNlIFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlTWF4aW1pemVkOgotICAgICAgICBtb2RlID0g
RVdLX1ZJRVdfTU9ERV9NQVhJTUlaRUQ7Ci0gICAgICAgIGJyZWFrOworCW1vZGUgPSBFV0tfVklF
V19NT0RFX01BWElNSVpFRDsKKwlicmVhazsKICAgICBjYXNlIFdlYkNvcmU6OlBhZ2U6OlZpZXdN
b2RlTWluaW1pemVkOgotICAgICAgICBtb2RlID0gRVdLX1ZJRVdfTU9ERV9NSU5JTUlaRUQ7Ci0g
ICAgICAgIGJyZWFrOworCW1vZGUgPSBFV0tfVklFV19NT0RFX01JTklNSVpFRDsKKwlicmVhazsK
ICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKKwlicmVhazsKICAgICB9CiAKICAgICByZXR1
cm4gbW9kZTsKQEAgLTM3NjQsNyArMzc2NCw3IEBAIEV3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9k
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAiZWRpdG9y
Y2xpZW50c2VsZWN0aW9uLGNoYW5nZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBl
d2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQor
dm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBvKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImVkaXRvcmNs
aWVudCxzZWxlY3Rpb24sY2hhbmdlZCIsIDApOwogfQpAQCAtMzc3Nyw3ICszNzc3LDcgQEAgdm9p
ZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpv
KQogICoKICAqIEVtaXRzIHNpZ25hbDogImVkaXRvcmNsaWVudCxjb250ZW50cyxjaGFuZ2VkIiB3
aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9jb250
ZW50c19jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50
X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAiZWRpdG9yY2xpZW50LGNvbnRlbnRzLGNoYW5nZWQiLCAwKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKaW5kZXggOGJhZjgw
NS4uMzE0NzZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3Np
bmdsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAK
QEAgLTMxLDIzICszMSwyMyBAQAogCiBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgX3BhcmVu
dF9zYyA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAotc3RhdGljIHZvaWQgX2V3
a192aWV3X3NpbmdsZV9vbl9kZWwodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8s
IHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX29uX2RlbCh2
b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsK
LSAgICBFdmFzX09iamVjdCAqY2xpcCA9IChFdmFzX09iamVjdCopZGF0YTsKKyAgICBFdmFzX09i
amVjdCogY2xpcCA9IChFdmFzX09iamVjdCopZGF0YTsKICAgICBldmFzX29iamVjdF9kZWwoY2xp
cCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYWRkKEV2YXNfT2Jq
ZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9hZGQoRXZhc19PYmpl
Y3QqIG8pCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Q7CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2Q7CiAKICAgICBfcGFyZW50X3NjLnNjLmFkZChvKTsKIAotICAgIHNkID0gKEV3
a19WaWV3X1NtYXJ0X0RhdGEgKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKTsKKyAgICBz
ZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKTsK
ICAgICBpZiAoIXNkKQotICAgICAgICByZXR1cm47CisJcmV0dXJuOwogCi0gICAgRXZhc19PYmpl
Y3QgKmNsaXAgPSBldmFzX29iamVjdF9yZWN0YW5nbGVfYWRkKHNkLT5iYXNlLmV2YXMpOworICAg
IEV2YXNfT2JqZWN0KiBjbGlwID0gZXZhc19vYmplY3RfcmVjdGFuZ2xlX2FkZChzZC0+YmFzZS5l
dmFzKTsKICAgICBldmFzX29iamVjdF9jbGlwX3NldChzZC0+YmFja2luZ19zdG9yZSwgY2xpcCk7
CiAgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2FkZChjbGlwLCBvKTsKICAgICBldmFzX29i
amVjdF9zaG93KGNsaXApOwpAQCAtNTYsMTU0ICs1NiwxNTQgQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X3NpbmdsZV9zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiAgICAgICAgIChzZC0+YmFja2lu
Z19zdG9yZSwgRVZBU19DQUxMQkFDS19ERUwsIF9ld2tfdmlld19zaW5nbGVfb25fZGVsLCBjbGlw
KTsKIH0KIAotc3RhdGljIEV2YXNfT2JqZWN0ICpfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2JhY2tp
bmdfc3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEV2YXNfT2JqZWN0
KiBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2JhY2tpbmdfc3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkKQogewotICAgIEV2YXNfT2JqZWN0ICpicyA9IGV2YXNfb2JqZWN0X2ltYWdlX2Fk
ZChzZC0+YmFzZS5ldmFzKTsKKyAgICBFdmFzX09iamVjdCogYnMgPSBldmFzX29iamVjdF9pbWFn
ZV9hZGQoc2QtPmJhc2UuZXZhcyk7CiAgICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KGJz
LCBFSU5BX0ZBTFNFKTsKICAgICBldmFzX29iamVjdF9pbWFnZV9zbW9vdGhfc2NhbGVfc2V0KGJz
LCBzZC0+em9vbV93ZWFrX3Ntb290aF9zY2FsZSk7CiAKICAgICByZXR1cm4gYnM7CiB9CiAKLXN0
YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0ICpvLCBF
dmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVf
c21hcnRfcmVzaXplKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkK
IHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKill
dmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKTsK
ICAgICBfcGFyZW50X3NjLnNjLnJlc2l6ZShvLCB3LCBoKTsKIAogICAgIGlmICghc2QpCi0gICAg
ICAgIHJldHVybjsKKwlyZXR1cm47CiAKICAgICAvLyB0aGVzZSBzaG91bGQgYmUgcXVldWVkIGFu
ZCBwcm9jZXNzZWQgaW4gY2FsY3VsYXRlIGFzIHdlbGwhCiAgICAgZXZhc19vYmplY3RfaW1hZ2Vf
c2l6ZV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIHcsIGgpOwogICAgIGlmIChzZC0+YW5pbWF0ZWRf
em9vbS56b29tLmN1cnJlbnQgPCAwLjAwMDAxKSB7Ci0gICAgICAgIEV2YXNfT2JqZWN0ICpjbGlw
ID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOwotICAgICAgICBFdmFz
X0Nvb3JkIHgsIHksIGN3LCBjaDsKLSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQo
c2QtPmJhY2tpbmdfc3RvcmUsIDAsIDAsIHcsIGgpOwotICAgICAgICBldmFzX29iamVjdF9nZW9t
ZXRyeV9nZXQoc2QtPmJhY2tpbmdfc3RvcmUsICZ4LCAmeSwgMCwgMCk7Ci0gICAgICAgIGV2YXNf
b2JqZWN0X21vdmUoY2xpcCwgeCwgeSk7Ci0gICAgICAgIGV3a19mcmFtZV9jb250ZW50c19zaXpl
X2dldChzZC0+bWFpbl9mcmFtZSwgJmN3LCAmY2gpOwotICAgICAgICBpZiAodyA+IGN3KQotICAg
ICAgICAgICAgdyA9IGN3OwotICAgICAgICBpZiAoaCA+IGNoKQotICAgICAgICAgICAgaCA9IGNo
OwotICAgICAgICBldmFzX29iamVjdF9yZXNpemUoY2xpcCwgdywgaCk7CisJRXZhc19PYmplY3Qq
IGNsaXAgPSBldmFzX29iamVjdF9jbGlwX2dldChzZC0+YmFja2luZ19zdG9yZSk7CisJRXZhc19D
b29yZCB4LCB5LCBjdywgY2g7CisJZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoc2QtPmJhY2tp
bmdfc3RvcmUsIDAsIDAsIHcsIGgpOworCWV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzZC0+YmFj
a2luZ19zdG9yZSwgJngsICZ5LCAwLCAwKTsKKwlldmFzX29iamVjdF9tb3ZlKGNsaXAsIHgsIHkp
OworCWV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChzZC0+bWFpbl9mcmFtZSwgJmN3LCAmY2gp
OworCWlmICh3ID4gY3cpCisJICAgIHcgPSBjdzsKKwlpZiAoaCA+IGNoKQorCSAgICBoID0gY2g7
CisJZXZhc19vYmplY3RfcmVzaXplKGNsaXAsIHcsIGgpOwogICAgIH0KIH0KIAotc3RhdGljIGlu
bGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cCh1aW50MzJfdCAqaW1hZ2UsIHNp
emVfdCByb3dzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3LCBzaXplX3QgaCwgc2l6ZV90
IHJvd3NpemUpCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3Vw
KHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90IHJvd3MsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90
IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93c2l6ZSkKIHsKLSAgICB1aW50MzJfdCAqc3JjOwotICAg
IHVpbnQzMl90ICpkc3Q7CisgICAgdWludDMyX3QqIHNyYzsKKyAgICB1aW50MzJfdCogZHN0Owog
CiAgICAgZHN0ID0gaW1hZ2UgKyB4ICsgeSAqIHJvd3NpemU7CiAgICAgc3JjID0gZHN0ICsgcm93
cyAqIHJvd3NpemU7CiAgICAgaCAtPSByb3dzOwogCiAgICAgZm9yICg7IGggPiAwOyBoLS0sIGRz
dCArPSByb3dzaXplLCBzcmMgKz0gcm93c2l6ZSkKLSAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCB3
ICogNCk7CisJbWVtY3B5KGRzdCwgc3JjLCB3ICogNCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bih1aW50MzJfdCAqaW1hZ2UsIHNpemVfdCBy
b3dzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3LCBzaXplX3QgaCwgc2l6ZV90IHJvd3Np
emUpCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2Rvd24odWlu
dDMyX3QqIGltYWdlLCBzaXplX3Qgcm93cywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywg
c2l6ZV90IGgsIHNpemVfdCByb3dzaXplKQogewotICAgIHVpbnQzMl90ICpzcmM7Ci0gICAgdWlu
dDMyX3QgKmRzdDsKKyAgICB1aW50MzJfdCogc3JjOworICAgIHVpbnQzMl90KiBkc3Q7CiAKICAg
ICBoIC09IHJvd3M7CiAgICAgc3JjID0gaW1hZ2UgKyB4ICsgKHkgKyBoIC0gMSkgKiByb3dzaXpl
OwogICAgIGRzdCA9IHNyYyArIHJvd3MgKiByb3dzaXplOwogCiAgICAgZm9yICg7IGggPiAwOyBo
LS0sIGRzdCAtPSByb3dzaXplLCBzcmMgLT0gcm93c2l6ZSkKLSAgICAgICAgbWVtY3B5KGRzdCwg
c3JjLCB3ICogNCk7CisJbWVtY3B5KGRzdCwgc3JjLCB3ICogNCk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQodWludDMyX3QgKmRzdCwgY29uc3Qg
dWludDMyX3QgKnNyYywgc2l6ZV90IGNvdW50KQorc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmll
d180Yl9tb3ZlX2xpbmVfbGVmdCh1aW50MzJfdCogZHN0LCBjb25zdCB1aW50MzJfdCogc3JjLCBz
aXplX3QgY291bnQpCiB7Ci0gICAgdWludDMyX3QgKmRzdF9lbmQgPSBkc3QgKyBjb3VudDsKKyAg
ICB1aW50MzJfdCogZHN0X2VuZCA9IGRzdCArIGNvdW50OwogICAgIC8qIG5vIG1lbWNweSgpIGFz
IGl0IGRvZXMgbm90IGFsbG93IG92ZXJsYXBwaW5nIHJlZ2lvbnMgKi8KICAgICAvKiBubyBtZW1t
b3ZlKCkgYXMgaXQgd2lsbCBjb3B5IHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlciAqLwogICAgIC8qIFRP
RE86IGxvb3AgdW5yb2xsaW5nLCBjb3B5aW5nIHVwIHRvIHF1YWQtd29yZHMgd291bGQgaGVscCAq
LwogICAgIGZvciAoOyBkc3QgPCBkc3RfZW5kOyBkc3QrKywgc3JjKyspCi0gICAgICAgICpkc3Qg
PSAqc3JjOworCSpkc3QgPSAqc3JjOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3
XzRiX21vdmVfbGluZV9yaWdodCh1aW50MzJfdCAqZHN0LCB1aW50MzJfdCAqc3JjLCBzaXplX3Qg
Y291bnQpCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfbGluZV9yaWdodCh1
aW50MzJfdCogZHN0LCB1aW50MzJfdCogc3JjLCBzaXplX3QgY291bnQpCiB7Ci0gICAgdWludDMy
X3QgKmRzdF9lbmQgPSBkc3QgLSBjb3VudDsKKyAgICB1aW50MzJfdCogZHN0X2VuZCA9IGRzdCAt
IGNvdW50OwogICAgIC8qIG5vIG1lbWNweSgpIGFzIGl0IGRvZXMgbm90IGFsbG93IG92ZXJsYXBw
aW5nIHJlZ2lvbnMgKi8KICAgICAvKiBubyBtZW1tb3ZlKCkgYXMgaXQgd2lsbCBjb3B5IHRvIGEg
dGVtcG9yYXJ5IGJ1ZmZlciAqLwogICAgIC8qIFRPRE86IGxvb3AgdW5yb2xsaW5nLCBjb3B5aW5n
IHVwIHRvIHF1YWQtd29yZHMgd291bGQgaGVscCAqLwogICAgIGZvciAoOyBkc3QgPiBkc3RfZW5k
OyBkc3QtLSwgc3JjLS0pCi0gICAgICAgICpkc3QgPSAqc3JjOworCSpkc3QgPSAqc3JjOwogfQog
Ci1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2xlZnQodWludDMy
X3QgKmltYWdlLCBzaXplX3QgY29scywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6
ZV90IGgsIHNpemVfdCByb3dzaXplKQorc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9t
b3ZlX3JlZ2lvbl9sZWZ0KHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90IGNvbHMsIHNpemVfdCB4LCBz
aXplX3QgeSwgc2l6ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93c2l6ZSkKIHsKLSAgICB1aW50
MzJfdCAqc3JjOwotICAgIHVpbnQzMl90ICpkc3Q7CisgICAgdWludDMyX3QqIHNyYzsKKyAgICB1
aW50MzJfdCogZHN0OwogCiAgICAgZHN0ID0gaW1hZ2UgKyB4ICsgeSAqIHJvd3NpemU7CiAgICAg
c3JjID0gZHN0ICsgY29sczsKICAgICB3IC09IGNvbHM7CiAKICAgICBmb3IgKDsgaCA+IDA7IGgt
LSwgZHN0ICs9IHJvd3NpemUsIHNyYyArPSByb3dzaXplKQotICAgICAgICBfZXdrX3ZpZXdfNGJf
bW92ZV9saW5lX2xlZnQoZHN0LCBzcmMsIHcpOworCV9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVm
dChkc3QsIHNyYywgdyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92
ZV9yZWdpb25fcmlnaHQodWludDMyX3QgKmltYWdlLCBzaXplX3QgY29scywgc2l6ZV90IHgsIHNp
emVfdCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dzaXplKQorc3RhdGljIGlubGlu
ZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodCh1aW50MzJfdCogaW1hZ2UsIHNp
emVfdCBjb2xzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3LCBzaXplX3QgaCwgc2l6ZV90
IHJvd3NpemUpCiB7Ci0gICAgdWludDMyX3QgKnNyYzsKLSAgICB1aW50MzJfdCAqZHN0OworICAg
IHVpbnQzMl90KiBzcmM7CisgICAgdWludDMyX3QqIGRzdDsKIAogICAgIHcgLT0gY29sczsKICAg
ICBzcmMgPSBpbWFnZSArICh4ICsgdyAtIDEpICsgeSAqIHJvd3NpemU7CiAgICAgZHN0ID0gc3Jj
ICsgY29sczsKIAogICAgIGZvciAoOyBoID4gMDsgaC0tLCBkc3QgKz0gcm93c2l6ZSwgc3JjICs9
IHJvd3NpemUpCi0gICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfcmlnaHQoZHN0LCBzcmMs
IHcpOworCV9ld2tfdmlld180Yl9tb3ZlX2xpbmVfcmlnaHQoZHN0LCBzcmMsIHcpOwogfQogCiAv
KiBjYXRjaC1hbGwgZnVuY3Rpb24sIG5vdCBhcyBvcHRpbWl6ZWQgYXMgdGhlIG90aGVycywgYnV0
IGRvZXMgdGhlIHdvcmsuICovCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVf
cmVnaW9uKHVpbnQzMl90ICppbWFnZSwgaW50IGR4LCBpbnQgZHksIHNpemVfdCB4LCBzaXplX3Qg
eSwgc2l6ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93c2l6ZSkKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb24odWludDMyX3QqIGltYWdlLCBpbnQgZHgsIGludCBk
eSwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dzaXpl
KQogewotICAgIHVpbnQzMl90ICpzcmM7Ci0gICAgdWludDMyX3QgKmRzdDsKKyAgICB1aW50MzJf
dCogc3JjOworICAgIHVpbnQzMl90KiBkc3Q7CiAKICAgICBpZiAoZHkgPCAwKSB7Ci0gICAgICAg
IGggKz0gZHk7Ci0gICAgICAgIGRzdCA9IGltYWdlICsgeCArIHkgKiByb3dzaXplOwotICAgICAg
ICBzcmMgPSBkc3QgLSBkeSAqIHJvd3NpemU7Ci0gICAgICAgIGlmIChkeCA8PSAwKSB7Ci0gICAg
ICAgICAgICB3ICs9IGR4OwotICAgICAgICAgICAgc3JjIC09IGR4OwotICAgICAgICAgICAgZm9y
ICg7IGggPiAwOyBoLS0sIGRzdCArPSByb3dzaXplLCBzcmMgKz0gcm93c2l6ZSkKLSAgICAgICAg
ICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZHN0LCBzcmMsIHcpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgdyAtPSBkeDsKLSAgICAgICAgICAgIHNyYyArPSB3IC0g
MTsKLSAgICAgICAgICAgIGRzdCArPSB3ICsgZHggLTE7Ci0gICAgICAgICAgICBmb3IgKDsgaCA+
IDA7IGgtLSwgZHN0ICs9IHJvd3NpemUsIHNyYyArPSByb3dzaXplKQotICAgICAgICAgICAgICAg
IF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfcmlnaHQoZHN0LCBzcmMsIHcpOwotICAgICAgICB9CisJ
aCArPSBkeTsKKwlkc3QgPSBpbWFnZSArIHggKyB5ICogcm93c2l6ZTsKKwlzcmMgPSBkc3QgLSBk
eSAqIHJvd3NpemU7CisJaWYgKGR4IDw9IDApIHsKKwkgICAgdyArPSBkeDsKKwkgICAgc3JjIC09
IGR4OworCSAgICBmb3IgKDsgaCA+IDA7IGgtLSwgZHN0ICs9IHJvd3NpemUsIHNyYyArPSByb3dz
aXplKQorCQlfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZHN0LCBzcmMsIHcpOworCX0gZWxz
ZSB7CisJICAgIHcgLT0gZHg7CisJICAgIHNyYyArPSB3IC0gMTsKKwkgICAgZHN0ICs9IHcgKyBk
eCAtMTsKKwkgICAgZm9yICg7IGggPiAwOyBoLS0sIGRzdCArPSByb3dzaXplLCBzcmMgKz0gcm93
c2l6ZSkKKwkJX2V3a192aWV3XzRiX21vdmVfbGluZV9yaWdodChkc3QsIHNyYywgdyk7CisJfQog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGggLT0gZHk7Ci0gICAgICAgIHNyYyA9IGltYWdlICsgeCAr
ICh5ICsgaCAtIDEpICogcm93c2l6ZTsKLSAgICAgICAgZHN0ID0gc3JjICsgZHkgKiByb3dzaXpl
OwotICAgICAgICBpZiAoZHggPD0gMCkgewotICAgICAgICAgICAgdyArPSBkeDsKLSAgICAgICAg
ICAgIHNyYyAtPSBkeDsKLSAgICAgICAgICAgIGZvciAoOyBoID4gMDsgaC0tLCBkc3QgLT0gcm93
c2l6ZSwgc3JjIC09IHJvd3NpemUpCi0gICAgICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVf
bGluZV9sZWZ0KGRzdCwgc3JjLCB3KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHcg
LT0gZHg7Ci0gICAgICAgICAgICBzcmMgKz0gdyAtIDE7Ci0gICAgICAgICAgICBkc3QgKz0gdyAr
IGR4IC0gMTsKLSAgICAgICAgICAgIGZvciAoOyBoID4gMDsgaC0tLCBkc3QgLT0gcm93c2l6ZSwg
c3JjIC09IHJvd3NpemUpCi0gICAgICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfbGluZV9y
aWdodChkc3QsIHNyYywgdyk7Ci0gICAgICAgIH0KKwloIC09IGR5OworCXNyYyA9IGltYWdlICsg
eCArICh5ICsgaCAtIDEpICogcm93c2l6ZTsKKwlkc3QgPSBzcmMgKyBkeSAqIHJvd3NpemU7CisJ
aWYgKGR4IDw9IDApIHsKKwkgICAgdyArPSBkeDsKKwkgICAgc3JjIC09IGR4OworCSAgICBmb3Ig
KDsgaCA+IDA7IGgtLSwgZHN0IC09IHJvd3NpemUsIHNyYyAtPSByb3dzaXplKQorCQlfZXdrX3Zp
ZXdfNGJfbW92ZV9saW5lX2xlZnQoZHN0LCBzcmMsIHcpOworCX0gZWxzZSB7CisJICAgIHcgLT0g
ZHg7CisJICAgIHNyYyArPSB3IC0gMTsKKwkgICAgZHN0ICs9IHcgKyBkeCAtIDE7CisJICAgIGZv
ciAoOyBoID4gMDsgaC0tLCBkc3QgLT0gcm93c2l6ZSwgc3JjIC09IHJvd3NpemUpCisJCV9ld2tf
dmlld180Yl9tb3ZlX2xpbmVfcmlnaHQoZHN0LCBzcmMsIHcpOworCX0KICAgICB9CiB9CiAKLXN0
YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZShF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgdm9pZCAqcGl4ZWxzLCBFdmFzX0Nvb3JkIG93LCBFdmFz
X0Nvb3JkIG9oLCBjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QgKnNyKQorc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkLCB2b2lkKiBwaXhlbHMsIEV2YXNfQ29vcmQgb3csIEV2YXNfQ29vcmQgb2gsIGNv
bnN0IEV3a19TY3JvbGxfUmVxdWVzdCogc3IpCiB7CiAgICAgRXZhc19Db29yZCBzeCwgc3ksIHN3
LCBzaDsKIApAQCAtMjE2LDE4MyArMjE2LDE4MyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192
aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqcwog
ICAgIHNoID0gc3ItPmg7CiAKICAgICBpZiAoYWJzKHNyLT5keCkgPj0gc3cgfHwgYWJzKHNyLT5k
eSkgPj0gc2gpIHsKLSAgICAgICAgLyogZG91YnQgd2Via2l0IHdvdWxkIGJlIHNvIHN0dXBpZC4u
LiAqLwotICAgICAgICBEQkcoImZ1bGwgcGFnZSBzY3JvbGwgJSswM2QsJSswM2QuIGNvbnZlcnQg
dG8gcmVwYWludCAlZCwlZCArICVkeCVkIiwKLSAgICAgICAgICAgIHNyLT5keCwgc3ItPmR5LCBz
eCwgc3ksIHN3LCBzaCk7Ci0gICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwg
c3gsIHN5LCBzdywgc2gpOwotICAgICAgICByZXR1cm47CisJLyogZG91YnQgd2Via2l0IHdvdWxk
IGJlIHNvIHN0dXBpZC4uLiAqLworCURCRygiZnVsbCBwYWdlIHNjcm9sbCAlKzAzZCwlKzAzZC4g
Y29udmVydCB0byByZXBhaW50ICVkLCVkICsgJWR4JWQiLAorCSAgICBzci0+ZHgsIHNyLT5keSwg
c3gsIHN5LCBzdywgc2gpOworCWV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5
LCBzdywgc2gpOworCXJldHVybjsKICAgICB9CiAKICAgICBpZiAoc3ggPCAwKSB7Ci0gICAgICAg
IHN3ICs9IHN4OwotICAgICAgICBzeCA9IDA7CisJc3cgKz0gc3g7CisJc3ggPSAwOwogICAgIH0K
ICAgICBpZiAoc3kgPCAwKSB7Ci0gICAgICAgIHNoICs9IHN5OwotICAgICAgICBzeSA9IDA7CisJ
c2ggKz0gc3k7CisJc3kgPSAwOwogICAgIH0KIAogICAgIGlmIChzeCArIHN3ID4gb3cpCi0gICAg
ICAgIHN3ID0gb3cgLSBzeDsKKwlzdyA9IG93IC0gc3g7CiAgICAgaWYgKHN5ICsgc2ggPiBvaCkK
LSAgICAgICAgc2ggPSBvaCAtIHN5OworCXNoID0gb2ggLSBzeTsKIAogICAgIGlmIChzdyA8IDAp
Ci0gICAgICAgIHN3ID0gMDsKKwlzdyA9IDA7CiAgICAgaWYgKHNoIDwgMCkKLSAgICAgICAgc2gg
PSAwOworCXNoID0gMDsKIAogICAgIEVJTkFfU0FGRVRZX09OX1RSVUVfUkVUVVJOKCFzdyB8fCAh
c2gpOwogICAgIGlmICghc3ItPmR4KSB7Ci0gICAgICAgIGlmIChzci0+ZHkgPCAwKSB7Ci0gICAg
ICAgICAgICBEQkcoInNjcm9sbCB1cDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAi
Ci0gICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4JWQiLAotICAgICAgICAgICAgICAg
IHNyLT5keCwgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCArIHNyLT5keSwKLSAgICAgICAgICAgICAg
ICBzeCwgc3kgKyBzaCArIHNyLT5keSwgc3csIC1zci0+ZHkpOwotCi0gICAgICAgICAgICBfZXdr
X3ZpZXdfNGJfbW92ZV9yZWdpb25fdXAKLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhl
bHMsIC1zci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7Ci0gICAgICAgICAgICBldmFzX29iamVj
dF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3Rv
cmUsIHN4LCBzeSwgc3csIHNoICsgc3ItPmR5KTsKLQotICAgICAgICAgICAgZXdrX3ZpZXdfcmVw
YWludF9hZGQoc2QtPl9wcml2LCBzeCwgc3kgKyBzaCArIHNyLT5keSwgc3csIC1zci0+ZHkpOwot
ICAgICAgICB9IGVsc2UgaWYgKHNyLT5keSA+IDApIHsKLSAgICAgICAgICAgIERCRygic2Nyb2xs
IGRvd246ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwlZCslZHglZCwgIgotICAgICAgICAgICAgICAg
ICJyZXBhaW50PSVkLCVkKyVkeCVkIiwKLSAgICAgICAgICAgICAgICBzci0+ZHgsIHNyLT5keSwg
c3gsIHN5ICsgc3ItPmR5LCBzdywgc2ggLSBzci0+ZHksCi0gICAgICAgICAgICAgICAgc3gsIHN5
LCBzdywgc3ItPmR5KTsKLQotICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2Rv
d24KLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIHNyLT5keSwgc3gsIHN5LCBz
dywgc2gsIG93KTsKLSAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2Fk
ZAotICAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5ICsgc3ItPmR5LCBz
dywgc2ggLSBzci0+ZHkpOwotCi0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+
X3ByaXYsIHN4LCBzeSwgc3csIHNyLT5keSk7Ci0gICAgICAgIH0KKwlpZiAoc3ItPmR5IDwgMCkg
eworCSAgICBEQkcoInNjcm9sbCB1cDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAi
CisJICAgICAgICAicmVwYWludD0lZCwlZCslZHglZCIsCisJICAgICAgICBzci0+ZHgsIHNyLT5k
eSwgc3gsIHN5LCBzdywgc2ggKyBzci0+ZHksCisJICAgICAgICBzeCwgc3kgKyBzaCArIHNyLT5k
eSwgc3csIC1zci0+ZHkpOworCisJICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cAorCSAg
ICAgICAgKCh1aW50MzJfdCopcGl4ZWxzLCAtc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOwor
CSAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKKwkgICAgICAgIChzZC0+YmFj
a2luZ19zdG9yZSwgc3gsIHN5LCBzdywgc2ggKyBzci0+ZHkpOworCisJICAgIGV3a192aWV3X3Jl
cGFpbnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5ICsgc2ggKyBzci0+ZHksIHN3LCAtc3ItPmR5KTsK
Kwl9IGVsc2UgaWYgKHNyLT5keSA+IDApIHsKKwkgICAgREJHKCJzY3JvbGwgZG93bjogJSswM2Qs
JSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCisJICAgICAgICAicmVwYWludD0lZCwlZCslZHgl
ZCIsCisJICAgICAgICBzci0+ZHgsIHNyLT5keSwgc3gsIHN5ICsgc3ItPmR5LCBzdywgc2ggLSBz
ci0+ZHksCisJICAgICAgICBzeCwgc3ksIHN3LCBzci0+ZHkpOworCisJICAgIF9ld2tfdmlld180
Yl9tb3ZlX3JlZ2lvbl9kb3duCisJICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIHNyLT5keSwg
c3gsIHN5LCBzdywgc2gsIG93KTsKKwkgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVf
YWRkCisJICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHN4LCBzeSArIHNyLT5keSwgc3csIHNo
IC0gc3ItPmR5KTsKKworCSAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIHN4LCBz
eSwgc3csIHNyLT5keSk7CisJfQogICAgIH0gZWxzZSBpZiAoIXNyLT5keSkgewotICAgICAgICBp
ZiAoc3ItPmR4IDwgMCkgewotICAgICAgICAgICAgREJHKCJzY3JvbGwgbGVmdDogJSswM2QsJSsw
M2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0gICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQr
JWR4JWQiLAotICAgICAgICAgICAgICAgIHNyLT5keCwgc3ItPmR5LCBzeCwgc3ksIHN3ICsgc3It
PmR4LCBzaCwKLSAgICAgICAgICAgICAgICBzeCArIHN3ICsgc3ItPmR4LCBzeSwgLXNyLT5keCwg
c2gpOwotCi0gICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fbGVmdAotICAgICAg
ICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgLXNyLT5keCwgc3gsIHN5LCBzdywgc2gsIG93
KTsKLSAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAotICAgICAg
ICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5LCBzdyArIHNyLT5keCwgc2gpOwot
Ci0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIHN4ICsgc3cgKyBz
ci0+ZHgsIHN5LCAtc3ItPmR4LCBzaCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3ItPmR4ID4gMCkg
ewotICAgICAgICAgICAgREJHKCJzY3JvbGwgdXA6ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwlZCsl
ZHglZCwgIgotICAgICAgICAgICAgICAgICJyZXBhaW50PSVkLCVkKyVkeCVkIiwKLSAgICAgICAg
ICAgICAgICBzci0+ZHgsIHNyLT5keSwgc3ggKyBzci0+ZHgsIHN5LCBzdyAtIHNyLT5keCwgc2gs
Ci0gICAgICAgICAgICAgICAgc3gsIHN5LCBzci0+ZHgsIHNoKTsKLQotICAgICAgICAgICAgX2V3
a192aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0Ci0gICAgICAgICAgICAgICAgKCh1aW50MzJfdCop
cGl4ZWxzLCBzci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7Ci0gICAgICAgICAgICBldmFzX29i
amVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdf
c3RvcmUsIHN4ICsgc3ItPmR4LCBzeSwgc3cgLSBzci0+ZHgsIHNoKTsKLQotICAgICAgICAgICAg
ZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCBzeCwgc3ksIHNyLT5keCwgc2gpOwotICAg
ICAgICB9CisJaWYgKHNyLT5keCA8IDApIHsKKwkgICAgREJHKCJzY3JvbGwgbGVmdDogJSswM2Qs
JSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCisJICAgICAgICAicmVwYWludD0lZCwlZCslZHgl
ZCIsCisJICAgICAgICBzci0+ZHgsIHNyLT5keSwgc3gsIHN5LCBzdyArIHNyLT5keCwgc2gsCisJ
ICAgICAgICBzeCArIHN3ICsgc3ItPmR4LCBzeSwgLXNyLT5keCwgc2gpOworCisJICAgIF9ld2tf
dmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0CisJICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIC1z
ci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7CisJICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFf
dXBkYXRlX2FkZAorCSAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3ksIHN3ICsgc3It
PmR4LCBzaCk7CisKKwkgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCBzeCArIHN3
ICsgc3ItPmR4LCBzeSwgLXNyLT5keCwgc2gpOworCX0gZWxzZSBpZiAoc3ItPmR4ID4gMCkgewor
CSAgICBEQkcoInNjcm9sbCB1cDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCisJ
ICAgICAgICAicmVwYWludD0lZCwlZCslZHglZCIsCisJICAgICAgICBzci0+ZHgsIHNyLT5keSwg
c3ggKyBzci0+ZHgsIHN5LCBzdyAtIHNyLT5keCwgc2gsCisJICAgICAgICBzeCwgc3ksIHNyLT5k
eCwgc2gpOworCisJICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodAorCSAgICAgICAg
KCh1aW50MzJfdCopcGl4ZWxzLCBzci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7CisJICAgIGV2
YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAorCSAgICAgICAgKHNkLT5iYWNraW5nX3N0
b3JlLCBzeCArIHNyLT5keCwgc3ksIHN3IC0gc3ItPmR4LCBzaCk7CisKKwkgICAgZXdrX3ZpZXdf
cmVwYWludF9hZGQoc2QtPl9wcml2LCBzeCwgc3ksIHNyLT5keCwgc2gpOworCX0KICAgICB9IGVs
c2UgewotICAgICAgICBFdmFzX0Nvb3JkIG14LCBteSwgbXcsIG1oLCBheCwgYXksIGF3LCBhaCwg
YngsIGJ5LCBidywgYmg7Ci0KLSAgICAgICAgaWYgKHNyLT5keCA8IDApIHsKLSAgICAgICAgICAg
IG14ID0gc3g7Ci0gICAgICAgICAgICBtdyA9IHN3ICsgc3ItPmR4OwotICAgICAgICAgICAgYXgg
PSBteCArIG13OwotICAgICAgICAgICAgYXcgPSAtc3ItPmR4OwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgYXggPSBzeDsKLSAgICAgICAgICAgIGF3ID0gc3ItPmR4OwotICAgICAgICAg
ICAgbXggPSBheCArIGF3OwotICAgICAgICAgICAgbXcgPSBzdyAtIHNyLT5keDsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChzci0+ZHkgPCAwKSB7Ci0gICAgICAgICAgICBteSA9IHN5OwotICAg
ICAgICAgICAgbWggPSBzaCArIHNyLT5keTsKLSAgICAgICAgICAgIGJ5ID0gbXkgKyBtaDsKLSAg
ICAgICAgICAgIGJoID0gLXNyLT5keTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJ5
ID0gc3k7Ci0gICAgICAgICAgICBiaCA9IHNyLT5keTsKLSAgICAgICAgICAgIG15ID0gYnkgKyBi
aDsKLSAgICAgICAgICAgIG1oID0gc2ggLSBzci0+ZHk7Ci0gICAgICAgIH0KLQotICAgICAgICBh
eSA9IG15OwotICAgICAgICBhaCA9IG1oOwotICAgICAgICBieCA9IHN4OwotICAgICAgICBidyA9
IHN3OwotCi0gICAgICAgIERCRygic2Nyb2xsIGRpYWdvbmFsOiAlKzAzZCwlKzAzZCB1cGRhdGU9
JWQsJWQrJWR4JWQsICIKLSAgICAgICAgICAgICJyZXBhaW50czogaD0lZCwlZCslZHglZCB2PSVk
LCVkKyVkeCVkIiwKLSAgICAgICAgICAgIHNyLT5keCwgc3ItPmR5LCBteCwgbXksIG13LCBtaCwg
YXgsIGF5LCBhdywgYWgsIGJ4LCBieSwgYncsIGJoKTsKLQotICAgICAgICBfZXdrX3ZpZXdfNGJf
bW92ZV9yZWdpb24KLSAgICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgc3ItPmR4LCBzci0+
ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7Ci0KLSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0
YV91cGRhdGVfYWRkKHNkLT5iYWNraW5nX3N0b3JlLCBteCwgbXksIG13LCBtaCk7Ci0gICAgICAg
IGV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgYXgsIGF5LCBhdywgYWgpOwotICAgICAg
ICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIGJ4LCBieSwgYncsIGJoKTsKKwlFdmFz
X0Nvb3JkIG14LCBteSwgbXcsIG1oLCBheCwgYXksIGF3LCBhaCwgYngsIGJ5LCBidywgYmg7CisK
KwlpZiAoc3ItPmR4IDwgMCkgeworCSAgICBteCA9IHN4OworCSAgICBtdyA9IHN3ICsgc3ItPmR4
OworCSAgICBheCA9IG14ICsgbXc7CisJICAgIGF3ID0gLXNyLT5keDsKKwl9IGVsc2UgeworCSAg
ICBheCA9IHN4OworCSAgICBhdyA9IHNyLT5keDsKKwkgICAgbXggPSBheCArIGF3OworCSAgICBt
dyA9IHN3IC0gc3ItPmR4OworCX0KKworCWlmIChzci0+ZHkgPCAwKSB7CisJICAgIG15ID0gc3k7
CisJICAgIG1oID0gc2ggKyBzci0+ZHk7CisJICAgIGJ5ID0gbXkgKyBtaDsKKwkgICAgYmggPSAt
c3ItPmR5OworCX0gZWxzZSB7CisJICAgIGJ5ID0gc3k7CisJICAgIGJoID0gc3ItPmR5OworCSAg
ICBteSA9IGJ5ICsgYmg7CisJICAgIG1oID0gc2ggLSBzci0+ZHk7CisJfQorCisJYXkgPSBteTsK
KwlhaCA9IG1oOworCWJ4ID0gc3g7CisJYncgPSBzdzsKKworCURCRygic2Nyb2xsIGRpYWdvbmFs
OiAlKzAzZCwlKzAzZCB1cGRhdGU9JWQsJWQrJWR4JWQsICIKKwkgICAgInJlcGFpbnRzOiBoPSVk
LCVkKyVkeCVkIHY9JWQsJWQrJWR4JWQiLAorCSAgICBzci0+ZHgsIHNyLT5keSwgbXgsIG15LCBt
dywgbWgsIGF4LCBheSwgYXcsIGFoLCBieCwgYnksIGJ3LCBiaCk7CisKKwlfZXdrX3ZpZXdfNGJf
bW92ZV9yZWdpb24KKwkgICAgKCh1aW50MzJfdCopcGl4ZWxzLCBzci0+ZHgsIHNyLT5keSwgc3gs
IHN5LCBzdywgc2gsIG93KTsKKworCWV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChz
ZC0+YmFja2luZ19zdG9yZSwgbXgsIG15LCBtdywgbWgpOworCWV3a192aWV3X3JlcGFpbnRfYWRk
KHNkLT5fcHJpdiwgYXgsIGF5LCBhdywgYWgpOworCWV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5f
cHJpdiwgYngsIGJ5LCBidywgYmgpOwogICAgIH0KIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc2luZ2xlX3NtYXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpz
ZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nl
c3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7Ci0gICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1
ZXN0ICpzcjsKLSAgICBjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QgKnNyX2VuZDsKKyAgICBjb25z
dCBFd2tfU2Nyb2xsX1JlcXVlc3QqIHNyOworICAgIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCog
c3JfZW5kOwogICAgIEV2YXNfQ29vcmQgb3csIG9oOwogICAgIHNpemVfdCBjb3VudDsKLSAgICB2
b2lkICpwaXhlbHMgPSBldmFzX29iamVjdF9pbWFnZV9kYXRhX2dldChzZC0+YmFja2luZ19zdG9y
ZSwgMSk7CisgICAgdm9pZCogcGl4ZWxzID0gZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQoc2Qt
PmJhY2tpbmdfc3RvcmUsIDEpOwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KHNkLT5i
YWNraW5nX3N0b3JlLCAmb3csICZvaCk7CiAKICAgICBzciA9IGV3a192aWV3X3Njcm9sbF9yZXF1
ZXN0c19nZXQoc2QtPl9wcml2LCAmY291bnQpOwogICAgIHNyX2VuZCA9IHNyICsgY291bnQ7CiAg
ICAgZm9yICg7IHNyIDwgc3JfZW5kOyBzcisrKQotICAgICAgICBfZXdrX3ZpZXdfc2luZ2xlX3Nj
cm9sbF9wcm9jZXNzX3NpbmdsZShzZCwgcGl4ZWxzLCBvdywgb2gsIHNyKTsKKwlfZXdrX3ZpZXdf
c2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZShzZCwgcGl4ZWxzLCBvdywgb2gsIHNyKTsKIAog
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfc2V0KHNkLT5iYWNraW5nX3N0b3JlLCBwaXhlbHMp
OwogCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
CitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2Vz
cyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBFd2tfVmlld19QYWludF9Db250ZXh0
ICpjdHh0OworICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQ7CiAgICAgRXZhc19Db29y
ZCBvdywgb2g7Ci0gICAgdm9pZCAqcGl4ZWxzOwotICAgIEVpbmFfUmVjdGFuZ2xlICpyOwotICAg
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlICpwcjsKLSAgICBjb25zdCBFaW5hX1JlY3RhbmdsZSAqcHJf
ZW5kOwotICAgIEVpbmFfVGlsZXIgKnRpbGVyOwotICAgIEVpbmFfSXRlcmF0b3IgKml0cjsKKyAg
ICB2b2lkKiBwaXhlbHM7CisgICAgRWluYV9SZWN0YW5nbGUqIHI7CisgICAgY29uc3QgRWluYV9S
ZWN0YW5nbGUqIHByOworICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBwcl9lbmQ7CisgICAgRWlu
YV9UaWxlciogdGlsZXI7CisgICAgRWluYV9JdGVyYXRvciogaXRyOwogICAgIGNhaXJvX3N0YXR1
c190IHN0YXR1czsKLSAgICBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2U7CisgICAgY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlOwogICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1hdDsKLSAgICBjYWlyb190
ICpjYWlybzsKKyAgICBjYWlyb190KiBjYWlybzsKICAgICBzaXplX3QgY291bnQ7CiAgICAgRWlu
YV9Cb29sIHJldCA9IEVJTkFfVFJVRTsKIAogICAgIGlmIChzZC0+YW5pbWF0ZWRfem9vbS56b29t
LmN1cnJlbnQgPCAwLjAwMDAxKSB7Ci0gICAgICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gZXZhc19v
YmplY3RfY2xpcF9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOwotICAgICAgICBFdmFzX0Nvb3JkIHcs
IGgsIGN3LCBjaDsKLSAgICAgICAgLy8gcmVzZXQgZWZmZWN0cyBvZiB6b29tX3dlYWtfc2V0KCkK
LSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQKLSAgICAgICAgICAgIChzZC0+YmFj
a2luZ19zdG9yZSwgMCwgMCwgc2QtPnZpZXcudywgc2QtPnZpZXcuaCk7Ci0gICAgICAgIGV2YXNf
b2JqZWN0X21vdmUoY2xpcCwgc2QtPnZpZXcueCwgc2QtPnZpZXcueSk7Ci0KLSAgICAgICAgdyA9
IHNkLT52aWV3Lnc7Ci0gICAgICAgIGggPSBzZC0+dmlldy5oOwotCi0gICAgICAgIGV3a19mcmFt
ZV9jb250ZW50c19zaXplX2dldChzZC0+bWFpbl9mcmFtZSwgJmN3LCAmY2gpOwotICAgICAgICBp
ZiAodyA+IGN3KQotICAgICAgICAgICAgdyA9IGN3OwotICAgICAgICBpZiAoaCA+IGNoKQotICAg
ICAgICAgICAgaCA9IGNoOwotICAgICAgICBldmFzX29iamVjdF9yZXNpemUoY2xpcCwgdywgaCk7
CisJRXZhc19PYmplY3QqIGNsaXAgPSBldmFzX29iamVjdF9jbGlwX2dldChzZC0+YmFja2luZ19z
dG9yZSk7CisJRXZhc19Db29yZCB3LCBoLCBjdywgY2g7CisJLy8gcmVzZXQgZWZmZWN0cyBvZiB6
b29tX3dlYWtfc2V0KCkKKwlldmFzX29iamVjdF9pbWFnZV9maWxsX3NldAorCSAgICAoc2QtPmJh
Y2tpbmdfc3RvcmUsIDAsIDAsIHNkLT52aWV3LncsIHNkLT52aWV3LmgpOworCWV2YXNfb2JqZWN0
X21vdmUoY2xpcCwgc2QtPnZpZXcueCwgc2QtPnZpZXcueSk7CisKKwl3ID0gc2QtPnZpZXcudzsK
KwloID0gc2QtPnZpZXcuaDsKKworCWV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChzZC0+bWFp
bl9mcmFtZSwgJmN3LCAmY2gpOworCWlmICh3ID4gY3cpCisJICAgIHcgPSBjdzsKKwlpZiAoaCA+
IGNoKQorCSAgICBoID0gY2g7CisJZXZhc19vYmplY3RfcmVzaXplKGNsaXAsIHcsIGgpOwogICAg
IH0KIAogICAgIHBpeGVscyA9IGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KHNkLT5iYWNraW5n
X3N0b3JlLCAxKTsKQEAgLTQwMCw0NyArNDAwLDQ3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
CiAgICAgZm9ybWF0ID0gQ0FJUk9fRk9STUFUX0FSR0IzMjsKIAogICAgIHN1cmZhY2UgPSBjYWly
b19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YQotICAgICAgICAoKHVuc2lnbmVkIGNoYXIq
KXBpeGVscywgZm9ybWF0LCBvdywgb2gsIG93ICogNCk7CisgICAgICAgICAgICAgICAgICAoKHVu
c2lnbmVkIGNoYXIqKXBpeGVscywgZm9ybWF0LCBvdywgb2gsIG93ICogNCk7CiAgICAgc3RhdHVz
ID0gY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZSk7CiAgICAgaWYgKHN0YXR1cyAhPSBDQUlS
T19TVEFUVVNfU1VDQ0VTUykgewotICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgc3VyZmFj
ZSBmcm9tIGRhdGEgJWR4JWQ6ICVzIiwKLSAgICAgICAgICAgIG93LCBvaCwgY2Fpcm9fc3RhdHVz
X3RvX3N0cmluZyhzdGF0dXMpKTsKLSAgICAgICAgcmV0ID0gRUlOQV9GQUxTRTsKLSAgICAgICAg
Z290byBlcnJvcl9jYWlyb19zdXJmYWNlOworCUVSUigiY291bGQgbm90IGNyZWF0ZSBzdXJmYWNl
IGZyb20gZGF0YSAlZHglZDogJXMiLAorCSAgICBvdywgb2gsIGNhaXJvX3N0YXR1c190b19zdHJp
bmcoc3RhdHVzKSk7CisJcmV0ID0gRUlOQV9GQUxTRTsKKwlnb3RvIGVycm9yX2NhaXJvX3N1cmZh
Y2U7CiAgICAgfQogICAgIGNhaXJvID0gY2Fpcm9fY3JlYXRlKHN1cmZhY2UpOwogICAgIHN0YXR1
cyA9IGNhaXJvX3N0YXR1cyhjYWlybyk7CiAgICAgaWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNf
U1VDQ0VTUykgewotICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgY2Fpcm8gZnJvbSBzdXJm
YWNlICVkeCVkOiAlcyIsCi0gICAgICAgICAgICBvdywgb2gsIGNhaXJvX3N0YXR1c190b19zdHJp
bmcoc3RhdHVzKSk7Ci0gICAgICAgIHJldCA9IEVJTkFfRkFMU0U7Ci0gICAgICAgIGdvdG8gZXJy
b3JfY2Fpcm87CisJRVJSKCJjb3VsZCBub3QgY3JlYXRlIGNhaXJvIGZyb20gc3VyZmFjZSAlZHgl
ZDogJXMiLAorCSAgICBvdywgb2gsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7CisJ
cmV0ID0gRUlOQV9GQUxTRTsKKwlnb3RvIGVycm9yX2NhaXJvOwogICAgIH0KIAogICAgIGN0eHQg
PSBld2tfdmlld19wYWludF9jb250ZXh0X25ldyhzZC0+X3ByaXYsIGNhaXJvKTsKICAgICBpZiAo
IWN0eHQpIHsKLSAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHBhaW50IGNvbnRleHQiKTsK
LSAgICAgICAgcmV0ID0gRUlOQV9GQUxTRTsKLSAgICAgICAgZ290byBlcnJvcl9wYWludF9jb250
ZXh0OworCUVSUigiY291bGQgbm90IGNyZWF0ZSBwYWludCBjb250ZXh0Iik7CisJcmV0ID0gRUlO
QV9GQUxTRTsKKwlnb3RvIGVycm9yX3BhaW50X2NvbnRleHQ7CiAgICAgfQogCiAgICAgdGlsZXIg
PSBlaW5hX3RpbGVyX25ldyhvdywgb2gpOwogICAgIGlmICghdGlsZXIpIHsKLSAgICAgICAgRVJS
KCJjb3VsZCBub3QgY3JlYXRlIHRpbGVyICVkeCVkIiwgb3csIG9oKTsKLSAgICAgICAgcmV0ID0g
RUlOQV9GQUxTRTsKLSAgICAgICAgZ290byBlcnJvcl90aWxlcjsKKwlFUlIoImNvdWxkIG5vdCBj
cmVhdGUgdGlsZXIgJWR4JWQiLCBvdywgb2gpOworCXJldCA9IEVJTkFfRkFMU0U7CisJZ290byBl
cnJvcl90aWxlcjsKICAgICB9CiAKICAgICBwciA9IGV3a192aWV3X3JlcGFpbnRzX2dldChzZC0+
X3ByaXYsICZjb3VudCk7CiAgICAgcHJfZW5kID0gcHIgKyBjb3VudDsKICAgICBmb3IgKDsgcHIg
PCBwcl9lbmQ7IHByKyspCi0gICAgICAgIGVpbmFfdGlsZXJfcmVjdF9hZGQodGlsZXIsIHByKTsK
KwllaW5hX3RpbGVyX3JlY3RfYWRkKHRpbGVyLCBwcik7CiAKICAgICBpdHIgPSBlaW5hX3RpbGVy
X2l0ZXJhdG9yX25ldyh0aWxlcik7CiAgICAgaWYgKCFpdHIpIHsKLSAgICAgICAgRVJSKCJjb3Vs
ZCBub3QgZ2V0IGl0ZXJhdG9yIGZvciB0aWxlciIpOwotICAgICAgICByZXQgPSBFSU5BX0ZBTFNF
OwotICAgICAgICBnb3RvIGVycm9yX2l0ZXJhdG9yOworCUVSUigiY291bGQgbm90IGdldCBpdGVy
YXRvciBmb3IgdGlsZXIiKTsKKwlyZXQgPSBFSU5BX0ZBTFNFOworCWdvdG8gZXJyb3JfaXRlcmF0
b3I7CiAgICAgfQogCiAgICAgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoc2Qt
Pl9wcml2KTsKQEAgLTQ0OSwyMiArNDQ5LDIyIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkCiAg
ICAgZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmc3gsICZzeSk7CiAK
ICAgICBFSU5BX0lURVJBVE9SX0ZPUkVBQ0goaXRyLCByKSB7Ci0gICAgICAgIEVpbmFfUmVjdGFu
Z2xlIHNjcm9sbGVkX3JlY3QgPSB7Ci0gICAgICAgICAgICByLT54ICsgc3gsIHItPnkgKyBzeSwK
LSAgICAgICAgICAgIHItPncsIHItPmgKLSAgICAgICAgfTsKKwlFaW5hX1JlY3RhbmdsZSBzY3Jv
bGxlZF9yZWN0ID0geworCSAgICByLT54ICsgc3gsIHItPnkgKyBzeSwKKwkgICAgci0+dywgci0+
aAorCX07CiAKLSAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKGN0eHQpOworCWV3
a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZShjdHh0KTsKIAotICAgICAgICBpZiAoKHN4KSB8fCAo
c3kpKQotICAgICAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoY3R4dCwg
LXN4LCAtc3kpOworCWlmICgoc3gpIHx8IChzeSkpCisJICAgIGV3a192aWV3X3BhaW50X2NvbnRl
eHRfdHJhbnNsYXRlKGN0eHQsIC1zeCwgLXN5KTsKIAotICAgICAgICBld2tfdmlld19wYWludF9j
b250ZXh0X2NsaXAoY3R4dCwgJnNjcm9sbGVkX3JlY3QpOwotICAgICAgICBld2tfdmlld19wYWlu
dF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKGN0eHQsICZzY3JvbGxlZF9yZWN0KTsKKwlld2tfdmll
d19wYWludF9jb250ZXh0X2NsaXAoY3R4dCwgJnNjcm9sbGVkX3JlY3QpOworCWV3a192aWV3X3Bh
aW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoY3R4dCwgJnNjcm9sbGVkX3JlY3QpOwogCi0gICAg
ICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9yZShjdHh0KTsKLSAgICAgICAgZXZhc19v
YmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCi0gICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3Rv
cmUsIHItPngsIHItPnksIHItPncsIHItPmgpOworCWV3a192aWV3X3BhaW50X2NvbnRleHRfcmVz
dG9yZShjdHh0KTsKKwlldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKKwkgICAgKHNk
LT5iYWNraW5nX3N0b3JlLCByLT54LCByLT55LCByLT53LCByLT5oKTsKICAgICB9CiAgICAgZWlu
YV9pdGVyYXRvcl9mcmVlKGl0cik7CiAKQEAgLTQ4Miw2MCArNDgyLDYwIEBAIGVycm9yX2NhaXJv
X3N1cmZhY2U6CiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGZs
b2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCitzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3NldChFd2tfVmlld19TbWFydF9EYXRh
KiBzZCwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICAv
LyBUT0RPOiByZXZpZXcKICAgICBmbG9hdCBzY2FsZSA9IHpvb20gLyBzZC0+YW5pbWF0ZWRfem9v
bS56b29tLnN0YXJ0OwogICAgIEV2YXNfQ29vcmQgdyA9IHNkLT52aWV3LncgKiBzY2FsZTsKICAg
ICBFdmFzX0Nvb3JkIGggPSBzZC0+dmlldy5oICogc2NhbGU7CiAgICAgRXZhc19Db29yZCBkeCwg
ZHksIGN3LCBjaDsKLSAgICBFdmFzX09iamVjdCAqY2xpcCA9IGV2YXNfb2JqZWN0X2NsaXBfZ2V0
KHNkLT5iYWNraW5nX3N0b3JlKTsKKyAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0
X2NsaXBfZ2V0KHNkLT5iYWNraW5nX3N0b3JlKTsKIAogICAgIGV3a19mcmFtZV9jb250ZW50c19z
aXplX2dldChzZC0+bWFpbl9mcmFtZSwgJmN3LCAmY2gpOwogICAgIGlmIChzZC0+dmlldy53ID4g
MCAmJiBzZC0+dmlldy5oID4gMCkgewotICAgICAgICBkeCA9ICh3ICogKHNkLT52aWV3LncgLSBj
eCkpIC8gc2QtPnZpZXcudzsKLSAgICAgICAgZHkgPSAoaCAqIChzZC0+dmlldy5oIC0gY3kpKSAv
IHNkLT52aWV3Lmg7CisJZHggPSAodyAqIChzZC0+dmlldy53IC0gY3gpKSAvIHNkLT52aWV3Lnc7
CisJZHkgPSAoaCAqIChzZC0+dmlldy5oIC0gY3kpKSAvIHNkLT52aWV3Lmg7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgZHggPSAwOwotICAgICAgICBkeSA9IDA7CisJZHggPSAwOworCWR5ID0gMDsK
ICAgICB9CiAKICAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldChzZC0+YmFja2luZ19zdG9y
ZSwgY3ggKyBkeCwgY3kgKyBkeSwgdywgaCk7CiAKICAgICBpZiAoc2QtPnZpZXcudyA+IDAgJiYg
c2QtPnZpZXcuaCA+IDApIHsKLSAgICAgICAgZHggPSAoKHNkLT52aWV3LncgLSB3KSAqIGN4KSAv
IHNkLT52aWV3Lnc7Ci0gICAgICAgIGR5ID0gKChzZC0+dmlldy5oIC0gaCkgKiBjeSkgLyBzZC0+
dmlldy5oOworCWR4ID0gKChzZC0+dmlldy53IC0gdykgKiBjeCkgLyBzZC0+dmlldy53OworCWR5
ID0gKChzZC0+dmlldy5oIC0gaCkgKiBjeSkgLyBzZC0+dmlldy5oOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGR4ID0gMDsKLSAgICAgICAgZHkgPSAwOworCWR4ID0gMDsKKwlkeSA9IDA7CiAgICAg
fQogICAgIGV2YXNfb2JqZWN0X21vdmUoY2xpcCwgc2QtPnZpZXcueCArIGR4LCBzZC0+dmlldy55
ICsgZHkpOwogCiAgICAgaWYgKGN3IDwgc2QtPnZpZXcudykKLSAgICAgICAgdyA9IGN3ICogc2Nh
bGU7CisJdyA9IGN3ICogc2NhbGU7CiAgICAgaWYgKGNoIDwgc2QtPnZpZXcuaCkKLSAgICAgICAg
aCA9IGNoICogc2NhbGU7CisJaCA9IGNoICogc2NhbGU7CiAgICAgZXZhc19vYmplY3RfcmVzaXpl
KGNsaXAsIHcsIGgpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9l
d2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QsIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQogewogICAgIGV2YXNfb2JqZWN0
X2ltYWdlX3Ntb290aF9zY2FsZV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIHNtb290aF9zY2FsZSk7
CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmdfY29sb3Jfc2V0KEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCB1bnNpZ25lZCBjaGFyIHIsIHVuc2lnbmVkIGNoYXIgZywg
dW5zaWduZWQgY2hhciBiLCB1bnNpZ25lZCBjaGFyIGEpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
c2luZ2xlX3NtYXJ0X2JnX2NvbG9yX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgdW5zaWdu
ZWQgY2hhciByLCB1bnNpZ25lZCBjaGFyIGcsIHVuc2lnbmVkIGNoYXIgYiwgdW5zaWduZWQgY2hh
ciBhKQogewogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChzZC0+YmFja2luZ19zdG9y
ZSwgYSA8IDI1NSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zaW5nbGVfc21hcnRfc2V0KEV3
a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0
X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogewogICAgIGlmICghZXdrX3ZpZXdfYmFz
ZV9zbWFydF9zZXQoYXBpKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisJcmV0dXJuIEVJ
TkFfRkFMU0U7CiAKICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3BhcmVudF9zYy5zYy5hZGQpKQot
ICAgICAgICBld2tfdmlld19iYXNlX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CisJZXdrX3ZpZXdf
YmFzZV9zbWFydF9zZXQoJl9wYXJlbnRfc2MpOwogCiAgICAgYXBpLT5zYy5hZGQgPSBfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X2FkZDsKICAgICBhcGktPnNjLnJlc2l6ZSA9IF9ld2tfdmlld19zaW5n
bGVfc21hcnRfcmVzaXplOwpAQCAtNTUwLDIwICs1NTAsMjAgQEAgRWluYV9Cb29sIGV3a192aWV3
X3NpbmdsZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSkKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1zdGF0aWMgaW5saW5lIEV2YXNfU21hcnQgKl9ld2tfdmlld19zaW5n
bGVfc21hcnRfY2xhc3NfbmV3KHZvaWQpCitzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9ld2tf
dmlld19zaW5nbGVfc21hcnRfY2xhc3NfbmV3KHZvaWQpCiB7CiAgICAgc3RhdGljIEV3a19WaWV3
X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
KCJFd2tfVmlld19TaW5nbGUiKTsKLSAgICBzdGF0aWMgRXZhc19TbWFydCAqc21hcnQgPSAwOwor
ICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7CiAKICAgICBpZiAoRUlOQV9VTkxJS0VM
WSghc21hcnQpKSB7Ci0gICAgICAgIGV3a192aWV3X3NpbmdsZV9zbWFydF9zZXQoJmFwaSk7Ci0g
ICAgICAgIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJmFwaS5zYyk7CisJZXdrX3ZpZXdf
c2luZ2xlX3NtYXJ0X3NldCgmYXBpKTsKKwlzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZh
cGkuc2MpOwogICAgIH0KIAogICAgIHJldHVybiBzbWFydDsKIH0KIAotRXZhc19PYmplY3QgKmV3
a192aWV3X3NpbmdsZV9hZGQoRXZhcyAqZSkKK0V2YXNfT2JqZWN0KiBld2tfdmlld19zaW5nbGVf
YWRkKEV2YXMqIGUpCiB7CiAgICAgcmV0dXJuIGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChlLCBfZXdr
X3ZpZXdfc2luZ2xlX3NtYXJ0X2NsYXNzX25ldygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXdfdGlsZWQuY3BwCmluZGV4IGZjODQ1ZjcuLjdjYzI3N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApAQCAtMzAsMjQgKzMwLDI0IEBACiAKIHN0YXRp
YyBFd2tfVmlld19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVF9OVUxMOwogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2Io
dm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKQorc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKHZvaWQqIGRhdGEsIEV3a19U
aWxlKiB0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsKLSAgICBFd2tfVmlld19Qcml2
YXRlX0RhdGEgKnByaXYgPSAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKilkYXRhOworICAgIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWRhdGE7CiAg
ICAgRWluYV9SZWN0YW5nbGUgciA9IHthcmVhLT54ICsgdC0+eCwgYXJlYS0+eSArIHQtPnksIGFy
ZWEtPncsIGFyZWEtPmh9OwogCiAgICAgcmV0dXJuIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKHBy
aXYsIHQtPmNhaXJvLCAmcik7CiB9CiAKLXN0YXRpYyB2b2lkICpfZXdrX3ZpZXdfdGlsZWRfdXBk
YXRlc19wcm9jZXNzX3ByZSh2b2lkICpkYXRhLCBFdmFzX09iamVjdCAqbykKK3N0YXRpYyB2b2lk
KiBfZXdrX3ZpZXdfdGlsZWRfdXBkYXRlc19wcm9jZXNzX3ByZSh2b2lkKiBkYXRhLCBFdmFzX09i
amVjdCogbykKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYgPSAoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKilkYXRhOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IChF
d2tfVmlld19Qcml2YXRlX0RhdGEqKWRhdGE7CiAgICAgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRl
ZF9yZWN1cnNpdmUocHJpdik7CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBFdmFzX09iamVj
dCAqX2V3a192aWV3X3RpbGVkX3NtYXJ0X2JhY2tpbmdfc3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkKQorc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYmFj
a2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7Ci0gICAgRXZhc19PYmpl
Y3QgKmJzID0gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfYWRkKHNkLT5iYXNlLmV2YXMpOworICAg
IEV2YXNfT2JqZWN0KiBicyA9IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FkZChzZC0+YmFzZS5l
dmFzKTsKICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZW5kZXJfY2Jfc2V0CiAgICAgICAg
IChicywgX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYiwgc2QtPl9wcml2KTsKICAgICBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcHJlX3NldApAQCAtNTYsMjQgKzU2LDI0
IEBAIHN0YXRpYyBFdmFzX09iamVjdCAqX2V3a192aWV3X3RpbGVkX3NtYXJ0X2JhY2tpbmdfc3Rv
cmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEKIH0KIAogc3RhdGljIHZvaWQKLV9ld2tfdmlld190
aWxlZF9jb250ZW50c19zaXplX2NoYW5nZWRfY2Iodm9pZCAqZGF0YSwgRXZhc19PYmplY3QgKm8s
IHZvaWQgKmV2ZW50X2luZm8pCitfZXdrX3ZpZXdfdGlsZWRfY29udGVudHNfc2l6ZV9jaGFuZ2Vk
X2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAg
IEV2YXNfQ29vcmQgKnNpemUgPSAoRXZhc19Db29yZCopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmll
d19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNf
Q29vcmQqIHNpemUgPSAoRXZhc19Db29yZCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogCiAgICAgZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplCiAgICAgICAgIChzZC0+YmFja2luZ19zdG9y
ZSwgc2l6ZVswXSwgc2l6ZVsxXSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9z
bWFydF9hZGQoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfc21h
cnRfYWRkKEV2YXNfT2JqZWN0KiBvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkOwor
ICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkOwogCiAgICAgX3BhcmVudF9zYy5zYy5hZGQobyk7
CiAKICAgICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRh
X2dldChvKTsKICAgICBpZiAoIXNkKQotICAgICAgICByZXR1cm47CisJcmV0dXJuOwogCiAgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKAogICAgICAgICBzZC0+bWFpbl9mcmFtZSwg
ImNvbnRlbnRzLHNpemUsY2hhbmdlZCIsCkBAIC04MSwxMCArODEsMTAgQEAgc3RhdGljIHZvaWQg
X2V3a192aWV3X3RpbGVkX3NtYXJ0X2FkZChFdmFzX09iamVjdCAqbykKICAgICBld2tfZnJhbWVf
cGFpbnRfZnVsbF9zZXQoc2QtPm1haW5fZnJhbWUsIEVJTkFfVFJVRSk7CiB9CiAKLXN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19T
bWFydF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Nj
cm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBjb25zdCBFd2tf
U2Nyb2xsX1JlcXVlc3QgKnNyOwotICAgIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3JfZW5k
OworICAgIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCogc3I7CisgICAgY29uc3QgRXdrX1Njcm9s
bF9SZXF1ZXN0KiBzcl9lbmQ7CiAgICAgc2l6ZV90IGNvdW50OwogICAgIEV2YXNfQ29vcmQgdncs
IHZoOwogCkBAIC05Myw1MyArOTMsNTMgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGls
ZWRfc21hcnRfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICAgIHNy
ID0gZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldChzZC0+X3ByaXYsICZjb3VudCk7CiAgICAg
c3JfZW5kID0gc3IgKyBjb3VudDsKICAgICBmb3IgKDsgc3IgPCBzcl9lbmQ7IHNyKyspIHsKLSAg
ICAgICAgaWYgKHNyLT5tYWluX3Njcm9sbCkKLSAgICAgICAgICAgIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9hZGQKLSAgICAgICAgICAgICAgICAoc2QtPmJhY2tp
bmdfc3RvcmUsIHNyLT5keCwgc3ItPmR5KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBF
dmFzX0Nvb3JkIHN4LCBzeSwgc3csIHNoOwotCi0gICAgICAgICAgICBzeCA9IHNyLT54OwotICAg
ICAgICAgICAgc3kgPSBzci0+eTsKLSAgICAgICAgICAgIHN3ID0gc3ItPnc7Ci0gICAgICAgICAg
ICBzaCA9IHNyLT5oOwotCi0gICAgICAgICAgICBpZiAoYWJzKHNyLT5keCkgPj0gc3cgfHwgYWJz
KHNyLT5keSkgPj0gc2gpIHsKLSAgICAgICAgICAgICAgICAvKiBkb3VidCB3ZWJraXQgd291bGQg
YmUgc28gICAgIHN0dXBpZC4uLiAqLwotICAgICAgICAgICAgICAgIERCRygiZnVsbCBwYWdlIHNj
cm9sbCAlKzAzZCwlKzAzZC4gY29udmVydCB0byByZXBhaW50ICVkLCVkICsgJWR4JWQiLAotICAg
ICAgICAgICAgICAgICAgICBzci0+ZHgsIHNyLT5keSwgc3gsIHN5LCBzdywgc2gpOwotICAgICAg
ICAgICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5LCBzdywgc2gp
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoc3ggKyBzdyA+IHZ3KQotICAgICAgICAgICAgICAgIHN3ID0gdncgLSBzeDsKLSAgICAg
ICAgICAgIGlmIChzeSArIHNoID4gdmgpCi0gICAgICAgICAgICAgICAgc2ggPSB2aCAtIHN5Owot
Ci0gICAgICAgICAgICBpZiAoc3cgPCAwKQotICAgICAgICAgICAgICAgIHN3ID0gMDsKLSAgICAg
ICAgICAgIGlmIChzaCA8IDApCi0gICAgICAgICAgICAgICAgc2ggPSAwOwotCi0gICAgICAgICAg
ICBpZiAoIXN3IHx8ICFzaCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgc3ggLT0gYWJzKHNyLT5keCk7Ci0gICAgICAgICAgICBzeSAtPSBhYnMoc3ItPmR5KTsKLSAg
ICAgICAgICAgIHN3ICs9IGFicyhzci0+ZHgpOwotICAgICAgICAgICAgc2ggKz0gYWJzKHNyLT5k
eSk7Ci0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIHN4LCBzeSwg
c3csIHNoKTsKLSAgICAgICAgICAgIElORigidXNpbmcgcmVwYWludCBmb3IgaW5uZXIgZnJhbWUg
c2NvbGxpbmchIik7Ci0gICAgICAgIH0KKwlpZiAoc3ItPm1haW5fc2Nyb2xsKQorCSAgICBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfYWRkCisJICAgICAgICAoc2Qt
PmJhY2tpbmdfc3RvcmUsIHNyLT5keCwgc3ItPmR5KTsKKwllbHNlIHsKKwkgICAgRXZhc19Db29y
ZCBzeCwgc3ksIHN3LCBzaDsKKworCSAgICBzeCA9IHNyLT54OworCSAgICBzeSA9IHNyLT55Owor
CSAgICBzdyA9IHNyLT53OworCSAgICBzaCA9IHNyLT5oOworCisJICAgIGlmIChhYnMoc3ItPmR4
KSA+PSBzdyB8fCBhYnMoc3ItPmR5KSA+PSBzaCkgeworCQkvKiBkb3VidCB3ZWJraXQgd291bGQg
YmUgc28gICAgIHN0dXBpZC4uLiAqLworCQlEQkcoImZ1bGwgcGFnZSBzY3JvbGwgJSswM2QsJSsw
M2QuIGNvbnZlcnQgdG8gcmVwYWludCAlZCwlZCArICVkeCVkIiwKKwkJICAgIHNyLT5keCwgc3It
PmR5LCBzeCwgc3ksIHN3LCBzaCk7CisJCWV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwg
c3gsIHN5LCBzdywgc2gpOworCQljb250aW51ZTsKKwkgICAgfQorCisJICAgIGlmIChzeCArIHN3
ID4gdncpCisJCXN3ID0gdncgLSBzeDsKKwkgICAgaWYgKHN5ICsgc2ggPiB2aCkKKwkJc2ggPSB2
aCAtIHN5OworCisJICAgIGlmIChzdyA8IDApCisJCXN3ID0gMDsKKwkgICAgaWYgKHNoIDwgMCkK
KwkJc2ggPSAwOworCisJICAgIGlmICghc3cgfHwgIXNoKQorCQljb250aW51ZTsKKworCSAgICBz
eCAtPSBhYnMoc3ItPmR4KTsKKwkgICAgc3kgLT0gYWJzKHNyLT5keSk7CisJICAgIHN3ICs9IGFi
cyhzci0+ZHgpOworCSAgICBzaCArPSBhYnMoc3ItPmR5KTsKKwkgICAgZXdrX3ZpZXdfcmVwYWlu
dF9hZGQoc2QtPl9wcml2LCBzeCwgc3ksIHN3LCBzaCk7CisJICAgIElORigidXNpbmcgcmVwYWlu
dCBmb3IgaW5uZXIgZnJhbWUgc2NvbGxpbmchIik7CisJfQogICAgIH0KIAogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Jl
cGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld190aWxlZF9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkKQogewotICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICpwciwgKnByX2VuZDsKKyAgICBj
b25zdCBFaW5hX1JlY3RhbmdsZSogcHIsICogcHJfZW5kOwogICAgIHNpemVfdCBjb3VudDsKICAg
ICBpbnQgc3gsIHN5OwogCkBAIC0xNDgsMzIgKzE0OCwzMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld190aWxlZF9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKQogICAgIHByID0gZXdrX3ZpZXdfcmVwYWludHNfZ2V0KHNkLT5fcHJpdiwgJmNvdW50KTsK
ICAgICBwcl9lbmQgPSBwciArIGNvdW50OwogICAgIGZvciAoOyBwciA8IHByX2VuZDsgcHIrKykg
ewotICAgICAgICBFaW5hX1JlY3RhbmdsZSByOwotICAgICAgICByLnggPSBwci0+eCArIHN4Owot
ICAgICAgICByLnkgPSBwci0+eSArIHN5OwotICAgICAgICByLncgPSBwci0+dzsKLSAgICAgICAg
ci5oID0gcHItPmg7Ci0gICAgICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZShzZC0+
YmFja2luZ19zdG9yZSwgJnIpOworCUVpbmFfUmVjdGFuZ2xlIHI7CisJci54ID0gcHItPnggKyBz
eDsKKwlyLnkgPSBwci0+eSArIHN5OworCXIudyA9IHByLT53OworCXIuaCA9IHByLT5oOworCWV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZShzZC0+YmFja2luZ19zdG9yZSwgJnIpOwogICAg
IH0KICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3Moc2QtPmJhY2tp
bmdfc3RvcmUpOwogCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfY29udGVudHNfcmVzaXplKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBpbnQgdywgaW50IGgpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9z
bWFydF9jb250ZW50c19yZXNpemUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGludCB3LCBpbnQg
aCkKIHsKICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jb250ZW50c19yZXNpemUoc2QtPmJh
Y2tpbmdfc3RvcmUsIHcsIGgpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQorc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAg
ICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOwogICAgIEVpbmFfQm9vbCByOwogICAgIHIgPSBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldChzZC0+YmFja2luZ19zdG9yZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnpvb20sIGN4LCBjeSwgJngsICZ5KTsK
ICAgICBpZiAoIXIpCi0gICAgICAgIHJldHVybiByOworCXJldHVybiByOwogICAgIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIEVJ
TkFfVFJVRSk7CiAgICAgciA9IF9wYXJlbnRfc2Muem9vbV9zZXQoc2QsIHpvb20sIGN4LCBjeSk7
CiAgICAgZXdrX2ZyYW1lX3Njcm9sbF9zZXQoc2QtPm1haW5fZnJhbWUsIC14LCAteSk7CkBAIC0x
ODYsNTYgKzE4Niw1NiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF96
b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgZmxvYXQgegogICAgIHJldHVybiByOwog
fQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3dlYWtfc2V0
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFz
X0Nvb3JkIGN5KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfem9vbV93
ZWFrX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBj
eCwgRXZhc19Db29yZCBjeSkKIHsKICAgICByZXR1cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
em9vbV93ZWFrX3NldChzZC0+YmFja2luZ19zdG9yZSwgem9vbSwgY3gsIGN5KTsKIH0KIAotc3Rh
dGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQorc3RhdGlj
IHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQogewogICAgIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KHNkLT5iYWNr
aW5nX3N0b3JlLCBzbW9vdGhfc2NhbGUpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGls
ZWRfc21hcnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfdGlsZWRfc21hcnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goc2QtPmJhY2tpbmdfc3RvcmUpOwogICAgIF9w
YXJlbnRfc2MuZmx1c2goc2QpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxl
ZF9zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbihFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19D
b29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6
b29tKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9y
ZWdpb24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5
LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICByZXR1cm4g
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24KLSAgICAgICAgKHNkLT5i
YWNraW5nX3N0b3JlLCB4LCB5LCB3LCBoLCB6b29tKTsKKyAgICAgICAgICAgICAgIChzZC0+YmFj
a2luZ19zdG9yZSwgeCwgeSwgdywgaCwgem9vbSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkLCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSkKK3N0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkLCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSkKIHsKICAgICBy
ZXR1cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMK
LSAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBuLCB6b29tKTsKKyAgICAgICAgICAgICAgIChz
ZC0+YmFja2luZ19zdG9yZSwgbiwgem9vbSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld190
aWxlZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tfVmll
d19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX2NhbmNlbChzZC0+YmFja2luZ19zdG9yZSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3RpbGVkX3NtYXJ0X2Rpc2FibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZGlzYWJsZV9yZW5kZXIo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgcmV0dXJuIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX2Rpc2FibGVfcmVuZGVyKHNkLT5iYWNraW5nX3N0b3JlKTsKIH0KIAotc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZW5hYmxlX3JlbmRlcihFd2tfVmlld19TbWFy
dF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X2VuYWJs
ZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgcmV0dXJuIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIoc2QtPmJhY2tpbmdfc3RvcmUpOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICph
cGkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0Ns
YXNzKiBhcGkpCiB7CiAgICAgaWYgKCFld2tfdmlld19iYXNlX3NtYXJ0X3NldChhcGkpKQotICAg
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKwlyZXR1cm4gRUlOQV9GQUxTRTsKIAogICAgIGlmIChF
SU5BX1VOTElLRUxZKCFfcGFyZW50X3NjLnNjLmFkZCkpCi0gICAgICAgIGV3a192aWV3X2Jhc2Vf
c21hcnRfc2V0KCZfcGFyZW50X3NjKTsKKwlld2tfdmlld19iYXNlX3NtYXJ0X3NldCgmX3BhcmVu
dF9zYyk7CiAKICAgICBhcGktPnNjLmFkZCA9IF9ld2tfdmlld190aWxlZF9zbWFydF9hZGQ7CiAK
QEAgLTI1NSwzNCArMjU1LDM0IEBAIEVpbmFfQm9vbCBld2tfdmlld190aWxlZF9zbWFydF9zZXQo
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1z
dGF0aWMgaW5saW5lIEV2YXNfU21hcnQgKl9ld2tfdmlld190aWxlZF9zbWFydF9jbGFzc19uZXco
dm9pZCkKK3N0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3RpbGVkX3NtYXJ0X2Ns
YXNzX25ldyh2b2lkKQogewogICAgIHN0YXRpYyBFd2tfVmlld19TbWFydF9DbGFzcyBhcGkgPSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTigiRVdLX1ZpZXdfVGlsZWQiKTsK
LSAgICBzdGF0aWMgRXZhc19TbWFydCAqc21hcnQgPSAwOworICAgIHN0YXRpYyBFdmFzX1NtYXJ0
KiBzbWFydCA9IDA7CiAKICAgICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7Ci0gICAgICAg
IGV3a192aWV3X3RpbGVkX3NtYXJ0X3NldCgmYXBpKTsKLSAgICAgICAgc21hcnQgPSBldmFzX3Nt
YXJ0X2NsYXNzX25ldygmYXBpLnNjKTsKKwlld2tfdmlld190aWxlZF9zbWFydF9zZXQoJmFwaSk7
CisJc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmYXBpLnNjKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gc21hcnQ7CiB9CiAKLUV2YXNfT2JqZWN0ICpld2tfdmlld190aWxlZF9hZGQoRXZhcyAq
ZSkKK0V2YXNfT2JqZWN0KiBld2tfdmlld190aWxlZF9hZGQoRXZhcyogZSkKIHsKICAgICByZXR1
cm4gZXZhc19vYmplY3Rfc21hcnRfYWRkKGUsIF9ld2tfdmlld190aWxlZF9zbWFydF9jbGFzc19u
ZXcoKSk7CiB9CiAKLUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3ZpZXdfdGlsZWRfdW51c2Vk
X2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0V3a19UaWxlX1VudXNlZF9DYWNoZSog
ZXdrX3ZpZXdfdGlsZWRfdW51c2VkX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsK
LSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IGV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0KG8p
OworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQo
byk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLCAwKTsKICAgICByZXR1
cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfZ2V0KHNkLT5iYWNr
aW5nX3N0b3JlKTsKIH0KIAotdm9pZCBld2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmNhY2hlKQordm9pZCBld2tfdmll
d190aWxlZF91bnVzZWRfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFd2tfVGlsZV9VbnVzZWRf
Q2FjaGUqIGNhY2hlKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gZXdrX3ZpZXdf
c21hcnRfZGF0YV9nZXQobyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBld2tfdmll
d19zbWFydF9kYXRhX2dldChvKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZCk7
CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfc2V0KHNkLT5i
YWNraW5nX3N0b3JlLCBjYWNoZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dp
bmRvd19mZWF0dXJlcy5jcHAKaW5kZXggNGJiNmUwNi4uM2E3OGU3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcApAQCAtMzIsNjggKzMyLDY4IEBA
CiAgKi8KIHN0cnVjdCBfRXdrX1dpbmRvd19GZWF0dXJlcyB7CiAgICAgdW5zaWduZWQgaW50IF9f
cmVmOwotICAgIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzICpjb3JlOworICAgIFdlYkNvcmU6Oldp
bmRvd0ZlYXR1cmVzKiBjb3JlOwogfTsKIAotdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX3VucmVm
KEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRvd19mZWF0dXJlcykKK3ZvaWQgZXdrX3dpbmRvd19m
ZWF0dXJlc191bnJlZihFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dfZmVhdHVyZXMpCiB7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93X2ZlYXR1cmVzKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9GQUxTRV9SRVRVUk4od2luZG93X2ZlYXR1cmVzLT5fX3JlZiA+IDApOwogCiAg
ICAgaWYgKC0td2luZG93X2ZlYXR1cmVzLT5fX3JlZikKLSAgICAgICAgcmV0dXJuOworCXJldHVy
bjsKIAogICAgIGRlbGV0ZSB3aW5kb3dfZmVhdHVyZXMtPmNvcmU7CiAgICAgd2luZG93X2ZlYXR1
cmVzLT5jb3JlID0gMDsKICAgICBmcmVlKHdpbmRvd19mZWF0dXJlcyk7CiB9CiAKLXZvaWQgZXdr
X3dpbmRvd19mZWF0dXJlc19yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVz
KQordm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX3JlZihFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5k
b3dfZmVhdHVyZXMpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93X2Zl
YXR1cmVzKTsKICAgICB3aW5kb3dfZmVhdHVyZXMtPl9fcmVmKys7CiB9CiAKLXZvaWQgZXdrX3dp
bmRvd19mZWF0dXJlc19ib29sX3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVz
ICp3aW5kb3dfZmVhdHVyZXMsIEVpbmFfQm9vbCAqdG9vbGJhcl92aXNpYmxlLCBFaW5hX0Jvb2wg
KnN0YXR1c2Jhcl92aXNpYmxlLCBFaW5hX0Jvb2wgKnNjcm9sbGJhcnNfdmlzaWJsZSwgRWluYV9C
b29sICptZW51YmFyX3Zpc2libGUsIEVpbmFfQm9vbCAqbG9jYXRpb25iYXJfdmlzaWJsZSwgRWlu
YV9Cb29sICpmdWxsc2NyZWVuKQordm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX2Jvb2xfcHJvcGVy
dHlfZ2V0KGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcywgRWluYV9C
b29sKiB0b29sYmFyX3Zpc2libGUsIEVpbmFfQm9vbCogc3RhdHVzYmFyX3Zpc2libGUsIEVpbmFf
Qm9vbCogc2Nyb2xsYmFyc192aXNpYmxlLCBFaW5hX0Jvb2wqIG1lbnViYXJfdmlzaWJsZSwgRWlu
YV9Cb29sKiBsb2NhdGlvbmJhcl92aXNpYmxlLCBFaW5hX0Jvb2wqIGZ1bGxzY3JlZW4pCiB7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93X2ZlYXR1cmVzKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3dfZmVhdHVyZXMtPmNvcmUpOwogCiAgICAgaWYg
KHRvb2xiYXJfdmlzaWJsZSkKLSAgICAgICAgKnRvb2xiYXJfdmlzaWJsZSA9IHdpbmRvd19mZWF0
dXJlcy0+Y29yZS0+dG9vbEJhclZpc2libGU7CisJKnRvb2xiYXJfdmlzaWJsZSA9IHdpbmRvd19m
ZWF0dXJlcy0+Y29yZS0+dG9vbEJhclZpc2libGU7CiAKICAgICBpZiAoc3RhdHVzYmFyX3Zpc2li
bGUpCi0gICAgICAgICpzdGF0dXNiYXJfdmlzaWJsZSA9IHdpbmRvd19mZWF0dXJlcy0+Y29yZS0+
c3RhdHVzQmFyVmlzaWJsZTsKKwkqc3RhdHVzYmFyX3Zpc2libGUgPSB3aW5kb3dfZmVhdHVyZXMt
PmNvcmUtPnN0YXR1c0JhclZpc2libGU7CiAKICAgICBpZiAoc2Nyb2xsYmFyc192aXNpYmxlKQot
ICAgICAgICAqc2Nyb2xsYmFyc192aXNpYmxlID0gd2luZG93X2ZlYXR1cmVzLT5jb3JlLT5zY3Jv
bGxiYXJzVmlzaWJsZTsKKwkqc2Nyb2xsYmFyc192aXNpYmxlID0gd2luZG93X2ZlYXR1cmVzLT5j
b3JlLT5zY3JvbGxiYXJzVmlzaWJsZTsKIAogICAgIGlmIChtZW51YmFyX3Zpc2libGUpCi0gICAg
ICAgICptZW51YmFyX3Zpc2libGUgPSB3aW5kb3dfZmVhdHVyZXMtPmNvcmUtPm1lbnVCYXJWaXNp
YmxlOworCSptZW51YmFyX3Zpc2libGUgPSB3aW5kb3dfZmVhdHVyZXMtPmNvcmUtPm1lbnVCYXJW
aXNpYmxlOwogCiAgICAgaWYgKGxvY2F0aW9uYmFyX3Zpc2libGUpCi0gICAgICAgICpsb2NhdGlv
bmJhcl92aXNpYmxlID0gd2luZG93X2ZlYXR1cmVzLT5jb3JlLT5sb2NhdGlvbkJhclZpc2libGU7
CisJKmxvY2F0aW9uYmFyX3Zpc2libGUgPSB3aW5kb3dfZmVhdHVyZXMtPmNvcmUtPmxvY2F0aW9u
QmFyVmlzaWJsZTsKIAogICAgIGlmIChmdWxsc2NyZWVuKQotICAgICAgICAqZnVsbHNjcmVlbiA9
IHdpbmRvd19mZWF0dXJlcy0+Y29yZS0+ZnVsbHNjcmVlbjsKKwkqZnVsbHNjcmVlbiA9IHdpbmRv
d19mZWF0dXJlcy0+Y29yZS0+ZnVsbHNjcmVlbjsKIH0KIAotdm9pZCBld2tfd2luZG93X2ZlYXR1
cmVzX2ludF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2Zl
YXR1cmVzLCBpbnQgKngsIGludCAqeSwgaW50ICp3LCBpbnQgKmgpCit2b2lkIGV3a193aW5kb3df
ZmVhdHVyZXNfaW50X3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5k
b3dfZmVhdHVyZXMsIGludCogeCwgaW50KiB5LCBpbnQqIHcsIGludCogaCkKIHsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3dfZmVhdHVyZXMpOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHdpbmRvd19mZWF0dXJlcy0+Y29yZSk7CiAKICAgICBpZiAoeCkKLSAg
ICAgICAgKnggPSB3aW5kb3dfZmVhdHVyZXMtPmNvcmUtPnhTZXQgPyBzdGF0aWNfY2FzdDxpbnQ+
KHdpbmRvd19mZWF0dXJlcy0+Y29yZS0+eCkgOiAtMTsKKwkqeCA9IHdpbmRvd19mZWF0dXJlcy0+
Y29yZS0+eFNldCA/IHN0YXRpY19jYXN0PGludD4od2luZG93X2ZlYXR1cmVzLT5jb3JlLT54KSA6
IC0xOwogCiAgICAgaWYgKHkpCi0gICAgICAgICp5ID0gd2luZG93X2ZlYXR1cmVzLT5jb3JlLT55
U2V0ID8gc3RhdGljX2Nhc3Q8aW50Pih3aW5kb3dfZmVhdHVyZXMtPmNvcmUtPnkpIDogLTE7CisJ
KnkgPSB3aW5kb3dfZmVhdHVyZXMtPmNvcmUtPnlTZXQgPyBzdGF0aWNfY2FzdDxpbnQ+KHdpbmRv
d19mZWF0dXJlcy0+Y29yZS0+eSkgOiAtMTsKIAogICAgIGlmICh3KQotICAgICAgICAqdyA9IHdp
bmRvd19mZWF0dXJlcy0+Y29yZS0+d2lkdGhTZXQgPyBzdGF0aWNfY2FzdDxpbnQ+KHdpbmRvd19m
ZWF0dXJlcy0+Y29yZS0+d2lkdGgpIDogLTE7CisJKncgPSB3aW5kb3dfZmVhdHVyZXMtPmNvcmUt
PndpZHRoU2V0ID8gc3RhdGljX2Nhc3Q8aW50Pih3aW5kb3dfZmVhdHVyZXMtPmNvcmUtPndpZHRo
KSA6IC0xOwogCiAgICAgaWYgKGgpCi0gICAgICAgICpoID0gd2luZG93X2ZlYXR1cmVzLT5jb3Jl
LT5oZWlnaHRTZXQgPyBzdGF0aWNfY2FzdDxpbnQ+KHdpbmRvd19mZWF0dXJlcy0+Y29yZS0+aGVp
Z2h0KSA6IC0xOworCSpoID0gd2luZG93X2ZlYXR1cmVzLT5jb3JlLT5oZWlnaHRTZXQgPyBzdGF0
aWNfY2FzdDxpbnQ+KHdpbmRvd19mZWF0dXJlcy0+Y29yZS0+aGVpZ2h0KSA6IC0xOwogfQogCiAv
KiBpbnRlcm5hbCBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCkBAIC0xMDcsMTggKzEwNywxOCBAQCB2b2lkIGV3a193aW5kb3dfZmVh
dHVyZXNfaW50X3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3df
ZmVhdAogICogaXQgaXMgZW1iZWRkZWQgaW5zaWRlIHRoZSBFd2tfV2luZG93X0ZlYXR1cmVzIHdo
b3NlIHJlZiBjb3VudCBpcyBpbml0aWFsaXplZCwgaWYgY29yZSBpcyBAYyAwIGEgbmV3IG9uZSBp
cyBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgZmVhdHVyZXMuCiAgKiBAcmV0dXJuIGEgbmV3IGFs
bG9jYXRlZCB0aGUgRXdrX1dpbmRvd19GZWF0dXJlcyBvYmplY3Qgb24gc3VjZXNzIG9yIEBjIDAg
b24gZmFpbHVyZQogICovCi1Fd2tfV2luZG93X0ZlYXR1cmVzICpld2tfd2luZG93X2ZlYXR1cmVz
X25ld19mcm9tX2NvcmUoY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgKmNvcmUpCitFd2tf
V2luZG93X0ZlYXR1cmVzKiBld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUoY29uc3Qg
V2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmUpCiB7Ci0gICAgRXdrX1dpbmRvd19GZWF0dXJl
cyAqd2luZG93X2ZlYXR1cmVzID0gc3RhdGljX2Nhc3Q8RXdrX1dpbmRvd19GZWF0dXJlcyo+KG1h
bGxvYyhzaXplb2YoKndpbmRvd19mZWF0dXJlcykpKTsKKyAgICBFd2tfV2luZG93X0ZlYXR1cmVz
KiB3aW5kb3dfZmVhdHVyZXMgPSBzdGF0aWNfY2FzdDxFd2tfV2luZG93X0ZlYXR1cmVzKj4obWFs
bG9jKHNpemVvZigqd2luZG93X2ZlYXR1cmVzKSkpOwogICAgIGlmICghd2luZG93X2ZlYXR1cmVz
KSB7Ci0gICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUgRXdrX1dpbmRvd19GZWF0
dXJlcy4iKTsKLSAgICAgICAgcmV0dXJuIDA7CisJQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0
ZSBFd2tfV2luZG93X0ZlYXR1cmVzLiIpOworCXJldHVybiAwOwogICAgIH0KIAogICAgIGlmIChj
b3JlKQotICAgICAgICB3aW5kb3dfZmVhdHVyZXMtPmNvcmUgPSBuZXcgV2ViQ29yZTo6V2luZG93
RmVhdHVyZXMoKmNvcmUpOworCXdpbmRvd19mZWF0dXJlcy0+Y29yZSA9IG5ldyBXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcygqY29yZSk7CiAgICAgZWxzZQotICAgICAgICB3aW5kb3dfZmVhdHVyZXMt
PmNvcmUgPSBuZXcgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMoKTsKKwl3aW5kb3dfZmVhdHVyZXMt
PmNvcmUgPSBuZXcgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMoKTsKIAogICAgIHdpbmRvd19mZWF0
dXJlcy0+X19yZWYgPSAxOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107782</attachid>
            <date>2011-09-17 21:15:29 -0700</date>
            <delta_ts>2011-09-17 23:11:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68231-20110918131527.patch</filename>
            <type>text/plain</type>
            <size>226652</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUzODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA2OWM2MGEyMjVk
ODgyNmNkMTJjNTM1MzM5Yjk0YjEwODQ4YzA3MzA2Li5jY2VjNTJhMTFiN2E5NTVkYzEzMTJjMmM1
Mjg1NWJmNjkxZWZjMmNjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDY4IEBACisyMDEx
LTA5LTE3ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gUmV2ZXJ0IHBvaW50ZXIgb3BlcmF0b3IgY29kaW5nIHN0eWxlIGluIGV3aworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyBmb3IgcG9pbnRl
ciBvcGVyYXRvciBwbGFjZW1lbnQsIFdlYktpdCBjb2Rpbmcgc3R5bGUgaXMgYXBwbGllZCBpbnN0
ZWFkIG9mCisgICAgICAgIGVmbCBjb2Rpbmcgc3R5bGUuIEluIGFkZGl0aW9uLCB0cml2aWFsIG1p
c2NlbGxhbmVvdXMgaW5kZW50YXRpb24gcHJvYmxlbXMgYXJlIGZpeGVkLgorCisgICAgICAgICog
ZXdrL2V3a19hdXRoLmNwcDoKKyAgICAgICAgKGV3a19hdXRoX2NyZWRlbnRpYWxzX3NldCk6Cisg
ICAgICAgICogZXdrL2V3a19hdXRoX3NvdXAuY3BwOgorICAgICAgICAoX0V3a19BdXRoX0RhdGE6
OmV3a19hdXRoX3NvdXBfZGlhbG9nX2NsYXNzX2luaXQpOgorICAgICAgICAoX0V3a19BdXRoX0Rh
dGE6OmV3a19hdXRoX3NvdXBfZGlhbG9nX2luaXQpOgorICAgICAgICAoX0V3a19BdXRoX0RhdGE6
OmV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KToKKyAgICAgICAgKF9F
d2tfQXV0aF9EYXRhOjpld2tfYXV0aF9zb3VwX2NyZWRlbnRpYWxzX3NldCk6CisgICAgICAgIChf
RXdrX0F1dGhfRGF0YTo6c2Vzc2lvbl9hdXRoZW50aWNhdGUpOgorICAgICAgICAoX0V3a19BdXRo
X0RhdGE6OmZyZWVfYXV0aF9kYXRhKToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjphdHRhY2gp
OgorICAgICAgICAoX0V3a19BdXRoX0RhdGE6OmRldGFjaCk6CisgICAgICAgICogZXdrL2V3a19j
b250ZXh0bWVudS5jcHA6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X3JlZik6CisgICAgICAg
IChld2tfY29udGV4dF9tZW51X3VucmVmKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfZGVz
dHJveSk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fbGlzdF9nZXQpOgorICAgICAg
ICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51
X2l0ZW1fc2VsZWN0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlKToKKyAg
ICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldCk6CisgICAgICAgIChld2tfY29u
dGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVt
X2FjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQp
OgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldCk6CisgICAgICAgIChl
d2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21l
bnVfaXRlbV9jaGVja2VkX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fY2hl
Y2tlZF9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KToK
KyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldCk6CisgICAgICAgIChl
d2tfY29udGV4dF9tZW51X25ldyk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2ZyZWUpOgor
ICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZCk6CisgICAgICAgIChld2tfY29u
dGV4dF9tZW51X2N1c3RvbV9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9zaG93KToK
KyAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgorICAgICAgICAoZXdrX2Nvb2tpZXNfZmls
ZV9zZXQpOgorICAgICAgICAoZXdrX2Nvb2tpZXNfY2xlYXIpOgorICAgICAgICAoZXdrX2Nvb2tp
ZXNfZ2V0X2FsbCk6CisgICAgICAgIChld2tfY29va2llc19jb29raWVfZGVsKToKKyAgICAgICAg
KGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKToKKyAgICAgICAgKGV3a19jb29raWVzX3BvbGljeV9z
ZXQpOgorICAgICAgICAoZXdrX2Nvb2tpZXNfcG9saWN5X2dldCk6CisgICAgICAgICogZXdrL2V3
a19mcmFtZS5jcHA6CisgICAgICAgIChfZXdrX2ZyYW1lX2RlYnVnKToKKyAgICAgICAgKF9ld2tf
ZnJhbWVfbG9hZGVyX2VmbF9nZXQpOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKF9ld2tfZnJh
bWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChfZXdrX2ZyYW1lX2NoaWxkcmVu
X2l0ZXJhdG9yX2dldF9jb250YWluZXIpOgorICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9hZGQp
OgorICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9kZWwpOgorICAgICAgICAoX2V3a19mcmFtZV9z
bWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9zZXQpOgorICAgICAgICAo
X2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcpOgorICAgICAgICAoZXdrX2ZyYW1lX3ZpZXdfZ2V0
KToKKyAgICAgICAgKGV3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcpOgorICAgICAgICAo
ZXdrX2ZyYW1lX2NoaWxkX2ZpbmQpOgorICAgICAgICAoZXdrX2ZyYW1lX3VyaV9zZXQpOgorICAg
ICAgICAoZXdrX2ZyYW1lX3VyaV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3RpdGxlX2dldCk6
CisgICAgICAgIChld2tfZnJhbWVfbmFtZV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX2NvbnRl
bnRzX3NpemVfZ2V0KToKKyAgICAgICAgKF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFs
KToKKyAgICAgICAgKGV3a19mcmFtZV9jb250ZW50c19zZXQpOgorICAgICAgICAoZXdrX2ZyYW1l
X2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3NjcmlwdF9leGVj
dXRlKToKKyAgICAgICAgKGV3a19mcmFtZV9lZGl0YWJsZV9nZXQpOgorICAgICAgICAoZXdrX2Zy
YW1lX2VkaXRhYmxlX3NldCk6CisgICAgICAgIChld2tfZnJhbWVfc2VsZWN0aW9uX2dldCk6Cisg
ICAgICAgIChld2tfZnJhbWVfdGV4dF9zZWFyY2gpOgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRf
bWF0Y2hlc19tYXJrKToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2Fs
bCk6CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQpOgorICAg
ICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KToKKyAgICAgICAgKGV3
a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3N0
b3ApOgorICAgICAgICAoZXdrX2ZyYW1lX3JlbG9hZCk6CisgICAgICAgIChld2tfZnJhbWVfcmVs
b2FkX2Z1bGwpOgorICAgICAgICAoZXdrX2ZyYW1lX2JhY2spOgorICAgICAgICAoZXdrX2ZyYW1l
X2ZvcndhcmQpOgorICAgICAgICAoZXdrX2ZyYW1lX25hdmlnYXRlKToKKyAgICAgICAgKGV3a19m
cmFtZV9iYWNrX3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxl
KToKKyAgICAgICAgKGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZSk6CisgICAgICAgIChld2tf
ZnJhbWVfem9vbV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3pvb21fc2V0KToKKyAgICAgICAg
KGV3a19mcmFtZV96b29tX3RleHRfb25seV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3pvb21f
dGV4dF9vbmx5X3NldCk6CisgICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZSk6CisgICAg
ICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KToKKyAgICAgICAgKGV3a19mcmFtZV9zY3JvbGxf
YWRkKToKKyAgICAgICAgKGV3a19mcmFtZV9zY3JvbGxfc2V0KToKKyAgICAgICAgKGV3a19mcmFt
ZV9zY3JvbGxfc2l6ZV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KToK
KyAgICAgICAgKGV3a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KToKKyAgICAg
ICAgKGV3a19mcmFtZV9wYWludF9mdWxsX2dldCk6CisgICAgICAgIChld2tfZnJhbWVfcGFpbnRf
ZnVsbF9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4pOgorICAgICAgICAo
ZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfb3V0KToKKyAgICAgICAgKGV3a19mcmFtZV9mZWVkX21vdXNl
X3doZWVsKToKKyAgICAgICAgKGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24pOgorICAgICAgICAo
ZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXApOgorICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfbW91c2Vf
bW92ZSk6CisgICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudCk6CisgICAgICAgIChf
ZXdrX2ZyYW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKToKKyAgICAgICAgKGV3a19mcmFtZV9mZWVk
X2tleV9kb3duKToKKyAgICAgICAgKGV3a19mcmFtZV9mZWVkX2tleV91cCk6CisgICAgICAgIChl
d2tfZnJhbWVfdGV4dF9zZWxlY3Rpb25fdHlwZV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX2Fk
ZCk6CisgICAgICAgIChld2tfZnJhbWVfaW5pdCk6CisgICAgICAgIChld2tfZnJhbWVfY2hpbGRf
YWRkKToKKyAgICAgICAgKGV3a19mcmFtZV9jb3JlX2dvbmUpOgorICAgICAgICAoZXdrX2ZyYW1l
X2NvcmVfZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZCk6CisgICAg
ICAgIChld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcik6CisgICAgICAgIChld2tf
ZnJhbWVfZGlkX3BlcmZvcm1fZmlyc3RfbmF2aWdhdGlvbik6CisgICAgICAgIChld2tfZnJhbWVf
dmlld19zdGF0ZV9zYXZlKToKKyAgICAgICAgKGV3a19mcmFtZV9sb2FkX3N0YXJ0ZWQpOgorICAg
ICAgICAoZXdrX2ZyYW1lX2xvYWRfcHJvdmlzaW9uYWwpOgorICAgICAgICAoZXdrX2ZyYW1lX2xv
YWRfZmlyc3RsYXlvdXRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfZmlyc3Rs
YXlvdXRfbm9uZW1wdHlfZmluaXNoZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfZG9jdW1l
bnRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQpOgorICAgICAg
ICAoZXdrX2ZyYW1lX2xvYWRfZXJyb3IpOgorICAgICAgICAoZXdrX2ZyYW1lX2xvYWRfcHJvZ3Jl
c3NfY2hhbmdlZCk6CisgICAgICAgIChld2tfZnJhbWVfY29udGVudHNfc2l6ZV9jaGFuZ2VkKToK
KyAgICAgICAgKGV3a19mcmFtZV90aXRsZV9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3ZpZXdf
Y3JlYXRlX2Zvcl92aWV3KToKKyAgICAgICAgKGV3a19mcmFtZV9zb3VyY2VfZ2V0KToKKyAgICAg
ICAgKGV3a19mcmFtZV9yZXNvdXJjZXNfbG9jYXRpb25fZ2V0KToKKyAgICAgICAgKGV3a19mcmFt
ZV91cmlfY2hhbmdlZCk6CisgICAgICAgIChld2tfZnJhbWVfZm9yY2VfbGF5b3V0KToKKyAgICAg
ICAgKGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKToKKyAgICAgICAgKGV3a19mcmFtZV9lZGl0b3Jf
Y2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKToKKyAgICAgICAgKGV3a19mcmFtZV9lZGl0b3JfY2xp
ZW50X2NvbnRlbnRzX2NoYW5nZWQpOgorICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6Cisg
ICAgICAgIChfZXdrX2hpc3RvcnlfaXRlbV9uZXcpOgorICAgICAgICAoX2V3a19oaXN0b3J5X2l0
ZW1fbGlzdF9nZXQpOgorICAgICAgICAoZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2N1cnJlbnRf
Z2V0KToKKyAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldCk6CisgICAg
ICAgICogZXdrL2V3a19qcy5jcHA6CisgICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKKyAgICAg
ICAgKF9ld2tfaW5pdF9ib2R5KToKKyAgICAgICAgKiBld2svZXdrX25ldHdvcmsuY3BwOgorICAg
ICAgICAoZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldCk6CisgICAgICAgIChld2tfbmV0d29ya19w
cm94eV91cmlfZ2V0KToKKyAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKKyAgICAgICAg
KGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQpOgorICAgICAgICAoZXdrX3NldHRp
bmdzX3dlYl9kYXRhYmFzZV9wYXRoX2dldCk6CisgICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9k
YXRhYmFzZV9wYXRoX3NldCk6CisgICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9w
YXRoX2dldCk6CisgICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZh
Y2VfZ2V0KToKKyAgICAgICAgKGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0
X2FkZCk6CisgICAgICAgIChld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCk6Cisg
ICAgICAgIChld2tfc2V0dGluZ3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfc2V0KToKKyAgICAgICAg
KGV3a19zZXR0aW5nc19jYWNoZV9kaXJlY3RvcnlfcGF0aF9nZXQpOgorICAgICAgICAqIGV3ay9l
d2tfdXRpbC5jcHA6CisgICAgICAgIChld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2Vf
YWRkKToKKyAgICAgICAgKGV3a191dGlsX2RwaV9nZXQpOgorICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChfZXdr
X3ZpZXdfcmVwYWludHNfcmVzaXplKToKKyAgICAgICAgKF9ld2tfdmlld19yZXBhaW50X2FkZCk6
CisgICAgICAgIChfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2gpOgorICAgICAgICAoX2V3a192aWV3
X3Njcm9sbHNfcmVzaXplKToKKyAgICAgICAgKF9ld2tfdmlld19zY3JvbGxfYWRkKToKKyAgICAg
ICAgKF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9m
b2N1c19pbik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
bW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXApOgorICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9rZXlfdXApOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X2FkZF9jb25zb2xlX21lc3NhZ2UpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9y
dW5famF2YXNjcmlwdF9jb25maXJtKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG91bGRf
aW50ZXJydXB0X2phdmFzY3JpcHQpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZh
c2NyaXB0X3Byb21wdCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfaW4pOgorICAgICAg
ICAoX2V3a192aWV3X29uX2ZvY3VzX291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2Vf
d2hlZWwpOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3
a192aWV3X29uX21vdXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKToK
KyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25f
a2V5X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyk6CisgICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAgICAg
ICAgKF9ld2tfdmlld19zbWFydF9hZGQpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2RlbCk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcmVzaXplKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUpOgorICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X3Nob3cpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2hpZGUp
OgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZSk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZsdXNo
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbik6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKToKKyAgICAgICAgKF9ld2tfdmlld196
b29tX2FuaW1hdGVkX21hcmtfc3RvcCk6CisgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRl
ZF9maW5pc2gpOgorICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYik6CisgICAgICAgIChfZXdrX3ZpZXdf
em9vbV9hbmltYXRpb25fc3RhcnQpOgorICAgICAgICAoX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJp
YnV0ZXNfY29tcHV0ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5kZXIp
OgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2VuYWJsZV9yZW5kZXIpOgorICAgICAgICAoZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3Np
emVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldCk6CisgICAg
ICAgIChld2tfdmlld190aGVtZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGhlbWVfZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2Zy
YW1lX2ZvY3VzZWRfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3VyaV9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfdXJpX2dldCk6CisgICAgICAgIChld2tfdmlld190aXRsZV9nZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2JnX2NvbG9yX3Nl
dCk6CisgICAgICAgIChld2tfdmlld19iZ19jb2xvcl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
dGV4dF9zZWFyY2gpOgorICAgICAgICAoZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmspOgorICAg
ICAgICAoZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3VubWFya19hbGwpOgorICAgICAgICAoZXdrX3Zp
ZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGV4dF9t
YXRjaGVzX2hpZ2hsaWdodF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZWRpdGFibGVfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgorICAgICAgICAoX2V3a192aWV3X2Vk
aXRvcl9jb21tYW5kKToKKyAgICAgICAgKGV3a192aWV3X2V4ZWN1dGVfZWRpdG9yX2NvbW1hbmQp
OgorICAgICAgICAoZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQpOgorICAgICAg
ICAoZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc3RvcCk6
CisgICAgICAgIChld2tfdmlld19yZWxvYWQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkX2Z1
bGwpOgorICAgICAgICAoZXdrX3ZpZXdfYmFjayk6CisgICAgICAgIChld2tfdmlld19mb3J3YXJk
KToKKyAgICAgICAgKGV3a192aWV3X25hdmlnYXRlKToKKyAgICAgICAgKGV3a192aWV3X2JhY2tf
cG9zc2libGUpOgorICAgICAgICAoZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZSk6CisgICAgICAg
IChld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZSk6CisgICAgICAgIChld2tfdmlld19oaXN0b3J5
X2VuYWJsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X2hpc3RvcnlfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fZ2V0
KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21f
d2Vha19zbW9vdGhfc2NhbGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zbW9v
dGhfc2NhbGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0YXJ0KToKKyAgICAgICAgKGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfbWFya19lbmQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRl
ZF9tYXJrX2N1cnJlbnQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0
b3ApOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fdGV4dF9v
bmx5X3NldCk6CisgICAgICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbik6CisgICAgICAg
IChld2tfdmlld19wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6CisgICAgICAgIChld2tfdmll
d19pbWhfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKToKKyAgICAg
ICAgKGV3a192aWV3X2VuYWJsZV9yZW5kZXIpOgorICAgICAgICAoZXdrX3ZpZXdfZGlzYWJsZV9y
ZW5kZXIpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X2dldCk6CisgICAg
ICAgIChld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5n
X3VzZXJfc3R5bGVzaGVldF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xv
YWRfaW1hZ2VzX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFn
ZXNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dl
dCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldCk6
CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0
KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfZW5hYmxlX3BsdWdpbnNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxl
X2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxl
X2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0
c193aW5kb3dfb3Blbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dp
bmRvd19vcGVuX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2Ns
b3NlX3dpbmRvd3NfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5f
Y2xvc2Vfd2luZG93c19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVf
dGV4dGFyZWFzX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0
YXJlYXNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldCk6Cisg
ICAgICAgIChld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX2dldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX3NldCk6CisgICAgICAgIChld2tf
dmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX2NhcmV0X2Jyb3dzaW5nX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29k
aW5nX2N1c3RvbV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0
b21fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X3NldCk6CisgICAg
ICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldCk6CisgICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldCk6CisgICAgICAgIChld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX2dldCk6CisgICAgICAgIChld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldCk6CisgICAgICAgIChld2tfdmll
d19zZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX2ZvbnRfbWluaW11bV9zaXplX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2Zv
bnRfbWluaW11bV9sb2dpY2FsX3NpemVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdf
Zm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19mb250X2RlZmF1bHRfc2l6ZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250
X2RlZmF1bHRfc2l6ZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9z
cGFjZV9zaXplX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNl
X3NpemVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfZ2V0KToKKyAg
ICAgICAgKGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19s
b2NhbF9zdG9yYWdlX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3Jh
Z2Vfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldCk6CisgICAgICAgIChld2tfdmll
d19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9nZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KToKKyAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFsX2dldCk6CisgICAgICAgIChl
d2tfdmlld19zbWFydF9kYXRhX2dldCk6CisgICAgICAgIChld2tfdmlld19yZXBhaW50c19nZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldCk6CisgICAgICAgIChld2tf
dmlld19yZXBhaW50X2FkZCk6CisgICAgICAgIChld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3Jl
Y3Vyc2l2ZSk6CisgICAgICAgIChld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MpOgorICAgICAgICAo
ZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9mcmVlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZSk6CisgICAg
ICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUpOgorICAgICAgICAoZXdrX3ZpZXdf
cGFpbnRfY29udGV4dF9jbGlwKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFp
bnQpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyk6Cisg
ICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKToKKyAgICAgICAgKGV3a192aWV3
X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50KToKKyAg
ICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRlbnRzKToKKyAgICAgICAgKGV3a192aWV3X3JlYWR5
KToKKyAgICAgICAgKGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3VyaV9jaGFuZ2VkKToKKyAg
ICAgICAgKGV3a192aWV3X2xvYWRfc3RhcnRlZCk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9t
YWluX2xvYWRfc3RhcnRlZCk6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKToK
KyAgICAgICAgKGV3a192aWV3X2xvYWRfc2hvdyk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9t
YWluX2NsZWFyZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVk
KToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX3ZpZXdf
bG9hZF9lcnJvcik6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQpOgor
ICAgICAgICAoZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZSk6CisgICAgICAgIChld2tfdmlld193aW5k
b3dfY3JlYXRlKToKKyAgICAgICAgKGV3a192aWV3X3dpbmRvd19jbG9zZSk6CisgICAgICAgIChl
d2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKToKKyAgICAgICAgKGV3a192aWV3X21vdXNlX2xp
bmtfaG92ZXJfb3V0KToKKyAgICAgICAgKGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldCk6CisgICAgICAgIChld2tfdmlld19zdGF0dXNiYXJf
dmlzaWJsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldCk6CisgICAgICAgIChld2tfdmlld19tZW51YmFyX3Zp
c2libGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfdG9vbHRpcF90ZXh0X3NldCk6CisgICAgICAgIChld2tfdmlld19hZGRf
Y29uc29sZV9tZXNzYWdlKToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0
KToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAgICAo
ZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KToKKyAgICAgICAgKGV3a192aWV3X3Nob3Vs
ZF9pbnRlcnJ1cHRfamF2YXNjcmlwdCk6CisgICAgICAgIChld2tfdmlld19leGNlZWRlZF9kYXRh
YmFzZV9xdW90YSk6CisgICAgICAgIChld2tfdmlld19ydW5fb3Blbl9wYW5lbCk6CisgICAgICAg
IChld2tfdmlld19yZXBhaW50KToKKyAgICAgICAgKGV3a192aWV3X3Njcm9sbCk6CisgICAgICAg
IChld2tfdmlld19jb3JlX3BhZ2VfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZyYW1lX2NyZWF0
ZSk6CisgICAgICAgIChld2tfdmlld19wbHVnaW5fY3JlYXRlKToKKyAgICAgICAgKGV3a192aWV3
X3BvcHVwX25ldyk6CisgICAgICAgIChld2tfdmlld19wb3B1cF9kZXN0cm95KToKKyAgICAgICAg
KGV3a192aWV3X3BvcHVwX3NlbGVjdGVkX3NldCk6CisgICAgICAgIChld2tfdmlld19kb3dubG9h
ZF9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3X2pzX3dpbmRvd19vYmplY3RfY2xlYXIpOgor
ICAgICAgICAoZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9y
YW5nZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldCk6CisgICAgICAgIChld2tfdmlld191c2Vy
X3NjYWxhYmxlX3NldCk6CisgICAgICAgIChld2tfdmlld191c2VyX3NjYWxhYmxlX2dldCk6Cisg
ICAgICAgIChld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlvdXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2FkaW5nKToKKyAgICAgICAgKGV3a192aWV3X3RyYW5z
aXRpb25fdG9fY29tbWl0ZWRfZm9yX25ld3BhZ2UpOgorICAgICAgICAoZXdrX3ZpZXdfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb24pOgorICAgICAgICAoZXdrX3ZpZXdfanNfb2JqZWN0X2FkZCk6
CisgICAgICAgIChld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQpOgorICAgICAgICAoZXdr
X3ZpZXdfcGFnZV9yZWN0X2dldCk6CisgICAgICAgIChld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50
c19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X21vZGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X21vZGVfZ2V0KToKKyAg
ICAgICAgKGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQpOgorICAgICAg
ICAoZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2VkKToKKyAgICAgICAgKiBl
d2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfb25fZGVs
KToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tf
dmlld19zaW5nbGVfc21hcnRfYmFja2luZ19zdG9yZV9hZGQpOgorICAgICAgICAoX2V3a192aWV3
X3NpbmdsZV9zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3XzRiX21vdmVfcmVnaW9u
X3VwKToKKyAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9kb3duKToKKyAgICAgICAg
KF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVmdCk6CisgICAgICAgIChfZXdrX3ZpZXdfNGJfbW92
ZV9saW5lX3JpZ2h0KToKKyAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0KToK
KyAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodCk6CisgICAgICAgIChfZXdr
X3ZpZXdfNGJfbW92ZV9yZWdpb24pOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zY3JvbGxf
cHJvY2Vzc19zaW5nbGUpOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxz
X3Byb2Nlc3MpOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9j
ZXNzKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3NldCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0
KToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmdfY29sb3Jfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3NpbmdsZV9zbWFydF9zZXQpOgorICAgICAgICAoX2V3a192aWV3X3Npbmds
ZV9zbWFydF9jbGFzc19uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfc2luZ2xlX2FkZCk6CisgICAg
ICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9y
ZW5kZXJfY2IpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX3VwZGF0ZXNfcHJvY2Vzc19wcmUp
OgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2JhY2tpbmdfc3RvcmVfYWRkKToKKyAg
ICAgICAgKF9ld2tfdmlld190aWxlZF9jb250ZW50c19zaXplX2NoYW5nZWRfY2IpOgorICAgICAg
ICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRf
c21hcnRfc2Nyb2xsc19wcm9jZXNzKToKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9y
ZXBhaW50c19wcm9jZXNzKToKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9jb250ZW50
c19yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fc2V0KToKKyAg
ICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3dlYWtfc2V0KToKKyAgICAgICAgKF9l
d2tfdmlld190aWxlZF9zbWFydF96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6CisgICAgICAg
IChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZmx1c2gpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVk
X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKToKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFy
dF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRf
c21hcnRfcHJlX3JlbmRlcl9jYW5jZWwpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0
X2Rpc2FibGVfcmVuZGVyKToKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9lbmFibGVf
cmVuZGVyKToKKyAgICAgICAgKGV3a192aWV3X3RpbGVkX3NtYXJ0X3NldCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfdGlsZWRfc21hcnRfY2xhc3NfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3RpbGVk
X2FkZCk6CisgICAgICAgIChld2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9zZXQpOgorICAgICAgICAqIGV3ay9ld2tf
d2luZG93X2ZlYXR1cmVzLmNwcDoKKyAgICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNfdW5yZWYp
OgorICAgICAgICAoZXdrX3dpbmRvd19mZWF0dXJlc19yZWYpOgorICAgICAgICAoZXdrX3dpbmRv
d19mZWF0dXJlc19ib29sX3Byb3BlcnR5X2dldCk6CisgICAgICAgIChld2tfd2luZG93X2ZlYXR1
cmVzX2ludF9wcm9wZXJ0eV9nZXQpOgorICAgICAgICAoZXdrX3dpbmRvd19mZWF0dXJlc19uZXdf
ZnJvbV9jb3JlKToKKwogMjAxMS0wOS0xNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBGcmFtZUxvYWRlckNsaWVudCBCYWNrRm9yd2FyZExpc3QtcmVs
YXRlZCBtZXRob2RzIGFyZSB1bnN1ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfYXV0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGguY3BwCmluZGV4
IDJhNmI0YTc5NTYyMjA3NGZhZjBmMzdhYWZmYTg2YTUwOTE5Y2NmODQuLmE0Y2I5ZTZiN2Y3ZGY0
MDAwMTcyN2U4NDRiYzUzOGU5MWVlOThjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfYXV0aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNw
cApAQCAtMzEsNyArMzEsNyBAQCB2b2lkIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrX3Nl
dChFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBjYWxsYmFjaykKICNlbmRpZgogfQogCi12
b2lkIGV3a19hdXRoX2NyZWRlbnRpYWxzX3NldChjaGFyICp1c2VybmFtZSwgY2hhciAqcGFzc3dv
cmQsIHZvaWQgKmRhdGEpCit2b2lkIGV3a19hdXRoX2NyZWRlbnRpYWxzX3NldChjaGFyKiB1c2Vy
bmFtZSwgY2hhciogcGFzc3dvcmQsIHZvaWQqIGRhdGEpCiB7CiAjaWYgVVNFKFNPVVApCiAgICAg
ZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQodXNlcm5hbWUsIHBhc3N3b3JkLCBkYXRhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcAppbmRleCAzOTBlOGJkMTU3ZGI1
YWU2MWM1YzdkMjA5OGY1ZmE0MmUyY2ViNzAwLi4wOWYzZDBkYjFjNWQ3OGM4MTVkYTJlN2UzZDE4
NGE1NGNlOWFiZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhf
c291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCkBA
IC00MCw5ICs0MCw5IEBAIGV4dGVybiAiQyIgewogICovCiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tf
QXV0aF9EYXRhIHsKLSAgICBTb3VwTWVzc2FnZSAqbXNnOwotICAgIFNvdXBBdXRoICphdXRoOwot
ICAgIFNvdXBTZXNzaW9uICpzZXNzaW9uOworICAgIFNvdXBNZXNzYWdlKiBtc2c7CisgICAgU291
cEF1dGgqIGF1dGg7CisgICAgU291cFNlc3Npb24qIHNlc3Npb247CiB9IEV3a19BdXRoX0RhdGE7
CiAKIHN0YXRpYyBFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBld2tfYXV0aF9zaG93X2Rp
YWxvZ19jYWxsYmFjayA9IDA7CkBAIC01NSwxNSArNTUsMTUgQEAgc3RhdGljIHZvaWQgZnJlZV9h
dXRoX2RhdGEoRXdrX0F1dGhfRGF0YSopOwogR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoRXdrX1Nv
dXBfQXV0aF9EaWFsb2csIGV3a19hdXRoX3NvdXBfZGlhbG9nLCBHX1RZUEVfT0JKRUNULAogICAg
ICAgICAgICAgICAgICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFNPVVBfVFlQRV9TRVNT
SU9OX0ZFQVRVUkUsIGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KSkK
IAotc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfY2xhc3NfaW5pdChFd2tfU291cF9B
dXRoX0RpYWxvZ0NsYXNzICprbGFzcykKK3N0YXRpYyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9n
X2NsYXNzX2luaXQoRXdrX1NvdXBfQXV0aF9EaWFsb2dDbGFzcyoga2xhc3MpCiB7CiB9CiAKLXN0
YXRpYyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX2luaXQoRXdrX1NvdXBfQXV0aF9EaWFsb2cg
Kmluc3RhbmNlKQorc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfaW5pdChFd2tfU291
cF9BdXRoX0RpYWxvZyogaW5zdGFuY2UpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIGV3a19hdXRoX3Nv
dXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9uRmVhdHVyZUludGVyZmFj
ZSAqZmVhdHVyZV9pbnRlcmZhY2UsIGdwb2ludGVyIGludGVyZmFjZV9kYXRhKQorc3RhdGljIHZv
aWQgZXdrX2F1dGhfc291cF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQoU291cFNlc3Npb25G
ZWF0dXJlSW50ZXJmYWNlKiBmZWF0dXJlX2ludGVyZmFjZSwgZ3BvaW50ZXIgaW50ZXJmYWNlX2Rh
dGEpCiB7CiAgICAgZmVhdHVyZV9pbnRlcmZhY2UtPmF0dGFjaCA9IGF0dGFjaDsKICAgICBmZWF0
dXJlX2ludGVyZmFjZS0+ZGV0YWNoID0gZGV0YWNoOwpAQCAtNzQsMjcgKzc0LDI3IEBAIHZvaWQg
ZXdrX2F1dGhfc291cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hvd19EaWFs
b2dfQ2FsbGJhY2sgY2FsbGJhCiAgICAgZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2sgPSBj
YWxsYmFjazsKIH0KIAotdm9pZCBld2tfYXV0aF9zb3VwX2NyZWRlbnRpYWxzX3NldChjb25zdCBj
aGFyICp1c2VybmFtZSwgY29uc3QgY2hhciAqcGFzc3dvcmQsIHZvaWQgKmRhdGEpCit2b2lkIGV3
a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIqIHVzZXJuYW1lLCBjb25zdCBj
aGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEV3a19BdXRoX0RhdGEgKmF1dGhfZGF0YSA9IChFd2tfQXV0aF9EYXRhICop
ZGF0YTsKKyAgICBFd2tfQXV0aF9EYXRhKiBhdXRoX2RhdGEgPSAoRXdrX0F1dGhfRGF0YSopZGF0
YTsKICAgICBzb3VwX2F1dGhfYXV0aGVudGljYXRlKGF1dGhfZGF0YS0+YXV0aCwgdXNlcm5hbWUs
IHBhc3N3b3JkKTsKICAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGF1dGhfZGF0YS0+
c2Vzc2lvbiwgYXV0aF9kYXRhLT5tc2cpOwogICAgIGZyZWVfYXV0aF9kYXRhKGF1dGhfZGF0YSk7
CiB9CiAKLXN0YXRpYyB2b2lkIHNlc3Npb25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uICpzZXNz
aW9uLCBTb3VwTWVzc2FnZSAqbXNnLCBTb3VwQXV0aCAqYXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcs
IGdwb2ludGVyIC8qIHVzZXJfZGF0YSAqLykKK3N0YXRpYyB2b2lkIHNlc3Npb25fYXV0aGVudGlj
YXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbXNnLCBTb3VwQXV0aCogYXV0
aCwgZ2Jvb2xlYW4gcmV0cnlpbmcsIGdwb2ludGVyIC8qIHVzZXJfZGF0YSAqLykKIHsKLSAgICBT
b3VwVVJJICp1cmk7Ci0gICAgRXdrX0F1dGhfRGF0YSAqYXV0aF9kYXRhOwotICAgIGNvbnN0IGNo
YXIgKnJlYWxtOworICAgIFNvdXBVUkkqIHVyaTsKKyAgICBFd2tfQXV0aF9EYXRhKiBhdXRoX2Rh
dGE7CisgICAgY29uc3QgY2hhciogcmVhbG07CiAKICAgICBpZiAoIWV3a19hdXRoX3Nob3dfZGlh
bG9nX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRoX2RhdGEgPSAoRXdrX0F1
dGhfRGF0YSAqKWNhbGxvYygxLCBzaXplb2YoRXdrX0F1dGhfRGF0YSkpOworICAgIGF1dGhfZGF0
YSA9IChFd2tfQXV0aF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19BdXRoX0RhdGEpKTsKIAog
ICAgIGlmICghYXV0aF9kYXRhKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2Nh
dGUgRXdrX0F1dGhfRGF0YSIpOwpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyB2b2lkIHNlc3Np
b25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uICpzZXNzaW9uLCBTb3VwTWVzc2FnZSAqbXNnLCBT
b3VwQXV0CiAgICAgZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2socmVhbG0sIHNvdXBfdXJp
X3RvX3N0cmluZyh1cmksIFRSVUUpLCBhdXRoX2RhdGEpOwogfQogCi1zdGF0aWMgdm9pZCBmcmVl
X2F1dGhfZGF0YShFd2tfQXV0aF9EYXRhICphdXRoX2RhdGEpCitzdGF0aWMgdm9pZCBmcmVlX2F1
dGhfZGF0YShFd2tfQXV0aF9EYXRhKiBhdXRoX2RhdGEpCiB7CiAgICAgZ19vYmplY3RfdW5yZWYo
YXV0aF9kYXRhLT5tc2cpOwogICAgIGdfb2JqZWN0X3VucmVmKGF1dGhfZGF0YS0+c2Vzc2lvbik7
CkBAIC0xMjYsMTQgKzEyNiwxNCBAQCBzdGF0aWMgdm9pZCBmcmVlX2F1dGhfZGF0YShFd2tfQXV0
aF9EYXRhICphdXRoX2RhdGEpCiAgICAgZnJlZShhdXRoX2RhdGEpOwogfQogCi1zdGF0aWMgdm9p
ZCBhdHRhY2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lvbiAqc2Vzc2lv
bikKK3N0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIsIFNvdXBT
ZXNzaW9uKiBzZXNzaW9uKQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Vzc2lvbiwgImF1dGhl
bnRpY2F0ZSIsIEdfQ0FMTEJBQ0soc2Vzc2lvbl9hdXRoZW50aWNhdGUpLCBtYW5hZ2VyKTsKIH0K
IAotc3RhdGljIHZvaWQgZGV0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSAqbWFuYWdlciwgU291cFNl
c3Npb24gKnNlc3Npb24pCitzdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlKiBt
YW5hZ2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikKIHsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19k
aXNjb25uZWN0X2J5X2Z1bmMoc2Vzc2lvbiwgKHZvaWQgKilzZXNzaW9uX2F1dGhlbnRpY2F0ZSwg
bWFuYWdlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNlc3Np
b24sICh2b2lkKilzZXNzaW9uX2F1dGhlbnRpY2F0ZSwgbWFuYWdlcik7CiB9CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0
bWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAppbmRl
eCA2ZmFmZmM4ZTdmZjdhNjAxZTViNzg2Y2RiNTVhNjNlZDI2Y2FkMjBiLi4wZWFhZDlmY2ZkMzI3
M2M5MjQ5MDYzNzg4MTdmZmQxZGQxYmQ3MTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2NvbnRleHRtZW51LmNwcApAQCAtMzgsMTEgKzM4LDExIEBACiBzdHJ1Y3QgX0V3a19Db250ZXh0
X01lbnUgewogICAgIHVuc2lnbmVkIGludCBfX3JlZjsgLyoqPCB0aGUgcmVmZXJlbmNlIGNvdW50
IG9mIHRoZSBvYmplY3QgKi8KICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBXZWJDb3Jl
OjpDb250ZXh0TWVudUNvbnRyb2xsZXIgKmNvbnRyb2xsZXI7IC8qKjwgdGhlIFdlYkNvcmUncyBv
YmplY3Qgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHRoZSBjb250ZXh0IG1lbnUgKi8KKyAgICBX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXI7IC8qKjwgdGhlIFdlYkNv
cmUncyBvYmplY3Qgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHRoZSBjb250ZXh0IG1lbnUgKi8K
ICNlbmRpZgotICAgIEV2YXNfT2JqZWN0ICp2aWV3OyAvKio8IHRoZSB2aWV3IG9iamVjdCAqLwor
ICAgIEV2YXNfT2JqZWN0KiB2aWV3OyAvKio8IHRoZSB2aWV3IG9iamVjdCAqLwogCi0gICAgRWlu
YV9MaXN0ICppdGVtczsgLyoqPCB0aGUgbGlzdCBvZiBpdGVtcyAqLworICAgIEVpbmFfTGlzdCog
aXRlbXM7IC8qKjwgdGhlIGxpc3Qgb2YgaXRlbXMgKi8KIH07CiAKIC8qKgpAQCAtNTMsMjMgKzUz
LDIzIEBAIHN0cnVjdCBfRXdrX0NvbnRleHRfTWVudV9JdGVtIHsKICAgICBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSB0eXBlOyAvKio8IGNvbnRhaW5zIHRoZSB0eXBlIG9mIHRoZSBpdGVtICov
CiAgICAgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gYWN0aW9uOyAvKio8IGNvbnRhaW5zIHRoZSBh
Y3Rpb24gb2YgdGhlIGl0ZW0gKi8KIAotICAgIGNvbnN0IGNoYXIgKnRpdGxlOyAvKio8IGNvbnRh
aW5zIHRoZSB0aXRsZSBvZiB0aGUgaXRlbSAqLwotICAgIEV3a19Db250ZXh0X01lbnUgKnN1Ym1l
bnU7IC8qKjwgY29udGFpbnMgdGhlIHBvaW50ZXIgdG8gdGhlIHN1Ym1lbnUgb2YgdGhlIGl0ZW0g
Ki8KKyAgICBjb25zdCBjaGFyKiB0aXRsZTsgLyoqPCBjb250YWlucyB0aGUgdGl0bGUgb2YgdGhl
IGl0ZW0gKi8KKyAgICBFd2tfQ29udGV4dF9NZW51KiBzdWJtZW51OyAvKio8IGNvbnRhaW5zIHRo
ZSBwb2ludGVyIHRvIHRoZSBzdWJtZW51IG9mIHRoZSBpdGVtICovCiAKLSAgICBFaW5hX0Jvb2wg
Y2hlY2tlZDoxOwotICAgIEVpbmFfQm9vbCBlbmFibGVkOjE7CisgICAgRWluYV9Cb29sIGNoZWNr
ZWQgOiAxOworICAgIEVpbmFfQm9vbCBlbmFibGVkIDogMTsKIH07CiAKLXZvaWQgZXdrX2NvbnRl
eHRfbWVudV9yZWYoRXdrX0NvbnRleHRfTWVudSAqbWVudSkKK3ZvaWQgZXdrX2NvbnRleHRfbWVu
dV9yZWYoRXdrX0NvbnRleHRfTWVudSogbWVudSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihtZW51KTsKICAgICBtZW51LT5fX3JlZisrOwogfQogCi12b2lkIGV3a19jb250ZXh0
X21lbnVfdW5yZWYoRXdrX0NvbnRleHRfTWVudSAqbWVudSkKK3ZvaWQgZXdrX2NvbnRleHRfbWVu
dV91bnJlZihFd2tfQ29udGV4dF9NZW51KiBtZW51KQogewogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKG1lbnUpOwotICAgIHZvaWQgKml0ZW07CisgICAgdm9pZCogaXRlbTsKIAogICAg
IGlmICgtLW1lbnUtPl9fcmVmKQogICAgICAgICByZXR1cm47CkBAIC04MCwzMCArODAsMzAgQEAg
dm9pZCBld2tfY29udGV4dF9tZW51X3VucmVmKEV3a19Db250ZXh0X01lbnUgKm1lbnUpCiAgICAg
ZnJlZShtZW51KTsKIH0KIAotRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfZGVzdHJveShFd2tf
Q29udGV4dF9NZW51ICptZW51KQorRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfZGVzdHJveShF
d2tfQ29udGV4dF9NZW51KiBtZW51KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBFSU5BX0ZBTFNFKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJvbGxlciwgRUlOQV9GQUxT
RSk7CiAgICAgbWVudS0+Y29udHJvbGxlci0+Y2xlYXJDb250ZXh0TWVudSgpOwogICAgIHJldHVy
biBFSU5BX1RSVUU7Ci0jZWxzZSAKKyNlbHNlCiAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAjZW5k
aWYKIH0KIAotY29uc3QgRWluYV9MaXN0ICpld2tfY29udGV4dF9tZW51X2l0ZW1fbGlzdF9nZXQo
Y29uc3QgRXdrX0NvbnRleHRfTWVudSAqbykKK2NvbnN0IEVpbmFfTGlzdCogZXdrX2NvbnRleHRf
bWVudV9pdGVtX2xpc3RfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUqIG8pCiB7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG8sIDApOwogCiAgICAgcmV0dXJuIG8tPml0ZW1z
OwogfQogCi1Fd2tfQ29udGV4dF9NZW51X0l0ZW0gKmV3a19jb250ZXh0X21lbnVfaXRlbV9uZXco
RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwKLSAgICAgICAgRXdrX0NvbnRleHRfTWVu
dV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51ICpzdWJtZW51LAotICAgICAgICBjb25z
dCBjaGFyICp0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQorRXdr
X0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0
X01lbnVfSXRlbV9UeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4
dF9NZW51KiBzdWJtZW51LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29s
IGVuYWJsZWQpCiB7Ci0gICAgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtID0gKEV3a19Db250
ZXh0X01lbnVfSXRlbSAqKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CisgICAgRXdrX0NvbnRleHRf
TWVudV9JdGVtKiBpdGVtID0gKEV3a19Db250ZXh0X01lbnVfSXRlbSopIG1hbGxvYyhzaXplb2Yo
Kml0ZW0pKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMTcsNyAr
MTE3LDcgQEAgRXdrX0NvbnRleHRfTWVudV9JdGVtICpld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3
KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUKICAgICByZXR1cm4gaXRlbTsKIH0KIAot
RWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoRXdrX0NvbnRleHRfTWVudSAq
bWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKQorRWluYV9Cb29sIGV3a19jb250ZXh0
X21lbnVfaXRlbV9zZWxlY3QoRXdrX0NvbnRleHRfTWVudSogbWVudSwgRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBpdGVtKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBFSU5BX0ZBTFNFKTsKQEAgLTEzNCw3ICsxMzQs
NyBAQCBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdChFd2tfQ29udGV4dF9N
ZW51ICptZW51LCBFd2tfQ29udGV4dF9NZW51XwogI2VuZGlmCiB9CiAKLXZvaWQgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKQordm9pZCBld2tf
Y29udGV4dF9tZW51X2l0ZW1fZnJlZShFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCiB7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oaXRlbSk7CiAKQEAgLTE0Miw2NSArMTQyLDY1
IEBAIHZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVt
ICppdGVtKQogICAgIGZyZWUoaXRlbSk7CiB9CiAKLUV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBl
IGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0
ZW0gKm8pCitFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1f
dHlwZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvKQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCBFV0tfQUNUSU9OX1RZUEUpOwogICAgIHJldHVybiBv
LT50eXBlOwogfQogCi1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KEV3
a19Db250ZXh0X01lbnVfSXRlbSAqbywgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSkK
K0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQoRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBvLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKQogewogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCBFSU5BX0ZBTFNFKTsKICAgICBvLT50eXBlID0g
dHlwZTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1Fd2tfQ29udGV4dF9NZW51X0FjdGlv
biBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51
X0l0ZW0gKm8pCitFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBld2tfY29udGV4dF9tZW51X2l0ZW1f
YWN0aW9uX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG8pCiB7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG8sIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9f
QUNUSU9OKTsKICAgICByZXR1cm4gby0+YWN0aW9uOwogfQogCi1FaW5hX0Jvb2wgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFd2tfQ29u
dGV4dF9NZW51X0FjdGlvbiBhY3Rpb24pCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVt
X2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvLCBFd2tfQ29udGV4dF9NZW51X0Fj
dGlvbiBhY3Rpb24pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG8sIEVJ
TkFfRkFMU0UpOwogICAgIG8tPmFjdGlvbiA9IGFjdGlvbjsKICAgICByZXR1cm4gRUlOQV9UUlVF
OwogfQogCi1jb25zdCBjaGFyICpld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0
IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbykKK2NvbnN0IGNoYXIqIGV3a19jb250ZXh0X21lbnVf
aXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvKQogewogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCAwKTsKICAgICByZXR1cm4gby0+dGl0bGU7
CiB9CiAKLWNvbnN0IGNoYXIgKmV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQoRXdrX0Nv
bnRleHRfTWVudV9JdGVtICpvLCBjb25zdCBjaGFyICp0aXRsZSkKK2NvbnN0IGNoYXIqIGV3a19j
b250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvLCBjb25z
dCBjaGFyKiB0aXRsZSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywg
MCk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZvLT50aXRsZSwgdGl0bGUpOwogICAg
IHJldHVybiBvLT50aXRsZTsKIH0KIAotRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9j
aGVja2VkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pCitFaW5hX0Jvb2wgZXdr
X2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRl
bSogbykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgRUlOQV9GQUxT
RSk7CiAgICAgcmV0dXJuIG8tPmNoZWNrZWQ7CiB9CiAKLUVpbmFfQm9vbCBld2tfY29udGV4dF9t
ZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFaW5hX0Jvb2wg
Y2hlY2tlZCkKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdr
X0NvbnRleHRfTWVudV9JdGVtKiBvLCBFaW5hX0Jvb2wgY2hlY2tlZCkKIHsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgRUlOQV9GQUxTRSk7CiAgICAgby0+Y2hlY2tlZCA9
IGNoZWNrZWQ7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19jb250
ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8p
CitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KGNvbnN0IEV3a19D
b250ZXh0X01lbnVfSXRlbSogbykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwobywgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIG8tPmVuYWJsZWQ7CiB9CiAKLUVpbmFfQm9v
bCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVt
ICpvLCBFaW5hX0Jvb2wgZW5hYmxlZCkKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1f
ZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvLCBFaW5hX0Jvb2wgZW5hYmxlZCkK
IHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgRUlOQV9GQUxTRSk7CiAg
ICAgby0+ZW5hYmxlZCA9IGVuYWJsZWQ7CkBAIC0yMjIsNyArMjIyLDcgQEAgRWluYV9Cb29sIGV3
a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8s
IEVpbmFfQm9vbAogICoKICAqIEBub3RlIGVtaXRzIGEgc2lnbmFsICJjb250ZXh0bWVudSxuZXci
CiAgKi8KLUV3a19Db250ZXh0X01lbnUgKmV3a19jb250ZXh0X21lbnVfbmV3KEV2YXNfT2JqZWN0
ICp2aWV3LCBXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCitFd2tf
Q29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X25ldyhFdmFzX09iamVjdCogdmlldywgV2Vi
Q29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyKiBjb250cm9sbGVyKQogewogICAgIEV3a19Db250
ZXh0X01lbnUqIG1lbnU7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcs
IDApOwpAQCAtMjU2LDcgKzI1Niw3IEBAIEV3a19Db250ZXh0X01lbnUgKmV3a19jb250ZXh0X21l
bnVfbmV3KEV2YXNfT2JqZWN0ICp2aWV3LCBXZWJDb3JlOjpDb250ZXh0TWVudUNvCiAgKiBAc2Vl
IGV3a19jb250ZXh0X21lbnVfdW5yZWYKICAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9kZXN0cm95
CiAgKi8KLUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRfTWVudSAq
bykKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRfTWVudSogbykK
IHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgRUlOQV9GQUxTRSk7CiAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLT52aWV3LCAiY29udGV4dG1lbnUs
ZnJlZSIsIG8pOwpAQCAtMjc1LDE0ICsyNzUsMTQgQEAgRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfZnJlZShFd2tfQ29udGV4dF9NZW51ICpvKQogICoKICAqIEBzZWUgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX25ldwogICovCi12b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0Nv
bnRleHRfTWVudSAqbywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtICZjb3JlKQordm9pZCBld2tf
Y29udGV4dF9tZW51X2l0ZW1fYXBwZW5kKEV3a19Db250ZXh0X01lbnUqIG8sIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbSAmY29yZSkKIHsKICAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0
eXBlID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGU+KGNvcmUudHlwZSgp
KTsKICAgICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxFd2tf
Q29udGV4dF9NZW51X0FjdGlvbj4oY29yZS5hY3Rpb24oKSk7CiAKLSAgICBFd2tfQ29udGV4dF9N
ZW51X0l0ZW0gKm1lbnVfaXRlbSA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcKLSAgICAgICAg
KHR5cGUsIGFjdGlvbiwgMCwgY29yZS50aXRsZSgpLnV0ZjgoKS5kYXRhKCksIGNvcmUuY2hlY2tl
ZCgpLAotICAgICAgICAgY29yZS5lbmFibGVkKCkpOworICAgIEV3a19Db250ZXh0X01lbnVfSXRl
bSogbWVudV9pdGVtID0gZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlLCBhY3Rpb24sIDAsIGNvcmUudGl0bGUo
KS51dGY4KCkuZGF0YSgpLCBjb3JlLmNoZWNrZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb3JlLmVuYWJsZWQoKSk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4obWVudV9pdGVtKTsKIAogICAgIG8tPml0ZW1zID0gZWluYV9saXN0X2FwcGVu
ZChvLT5pdGVtcywgbWVudV9pdGVtKTsKQEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIGV3a19jb250
ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSAqbywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtCiAgKgogICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fbGlzdF9nZXQKICAq
LwotRXdrX0NvbnRleHRfTWVudSAqZXdrX2NvbnRleHRfbWVudV9jdXN0b21fZ2V0KGNvbnN0IEV3
a19Db250ZXh0X01lbnUgKm8pCitFd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X2N1
c3RvbV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSogbykKIHsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwobywgMCk7CiAKQEAgLTMxNiw3ICszMTYsNyBAQCBFd2tfQ29udGV4
dF9NZW51ICpld2tfY29udGV4dF9tZW51X2N1c3RvbV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVu
dSAqbykKICAqCiAgKiBAcGFyYW0gbyB0aGUgY29udGV4dCBtZW51IG9iamVjdAogICovCi12b2lk
IGV3a19jb250ZXh0X21lbnVfc2hvdyhjb25zdCBFd2tfQ29udGV4dF9NZW51ICpvKQordm9pZCBl
d2tfY29udGV4dF9tZW51X3Nob3coY29uc3QgRXdrX0NvbnRleHRfTWVudSogbykKIHsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihvKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19jb29raWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29v
a2llcy5jcHAKaW5kZXggNzlkNTUzZDNjOTgyM2E4ODY2MmNmODA0ZDlkMjM2YmZjZWJkOGQ0Ny4u
YWE5ZjJjODkxMThhOWYxNmI1MzFkMmM4YTgzMmY1MDY0MWRlYzM1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2Nvb2tpZXMuY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKIAotRWluYV9Cb29sIGV3a19jb29raWVzX2ZpbGVfc2V0KGNvbnN0
IGNoYXIgKmZpbGVuYW1lKQorRWluYV9Cb29sIGV3a19jb29raWVzX2ZpbGVfc2V0KGNvbnN0IGNo
YXIqIGZpbGVuYW1lKQogewogI2lmIFVTRShTT1VQKQotICAgIFNvdXBDb29raWVKYXIgKmNvb2tp
ZUphciA9IDA7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gMDsKICAgICBpZiAoZmls
ZW5hbWUpCiAgICAgICAgIGNvb2tpZUphciA9IHNvdXBfY29va2llX2phcl90ZXh0X25ldyhmaWxl
bmFtZSwgRkFMU0UpOwogICAgIGVsc2UKQEAgLTUwLDggKzUwLDggQEAgRWluYV9Cb29sIGV3a19j
b29raWVzX2ZpbGVfc2V0KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCiAgICAgc291cF9jb29raWVf
amFyX3NldF9hY2NlcHRfcG9saWN5KGNvb2tpZUphciwgU09VUF9DT09LSUVfSkFSX0FDQ0VQVF9O
T19USElSRF9QQVJUWSk7CiAKLSAgICBTb3VwU2Vzc2lvbiAqc2Vzc2lvbiA9IFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIFNvdXBTZXNzaW9uRmVhdHVyZSAq
b2xkamFyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DT09L
SUVfSkFSKTsKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogb2xkamFyID0g
c291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DT09LSUVfSkFSKTsK
ICAgICBpZiAob2xkamFyKQogICAgICAgICBzb3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1cmUoc2Vz
c2lvbiwgb2xkamFyKTsKIApAQCAtNjcsMzAgKzY3LDMwIEBAIEVpbmFfQm9vbCBld2tfY29va2ll
c19maWxlX3NldChjb25zdCBjaGFyICpmaWxlbmFtZSkKIHZvaWQgZXdrX2Nvb2tpZXNfY2xlYXIo
dm9pZCkKIHsKICNpZiBVU0UoU09VUCkKLSAgICBHU0xpc3QgKmw7Ci0gICAgR1NMaXN0ICpwOwot
ICAgIFNvdXBDb29raWVKYXIgKmNvb2tpZUphciA9IFdlYkNvcmU6OmRlZmF1bHRDb29raWVKYXIo
KTsKKyAgICBHU0xpc3QqIGw7CisgICAgR1NMaXN0KiBwOworICAgIFNvdXBDb29raWVKYXIqIGNv
b2tpZUphciA9IFdlYkNvcmU6OmRlZmF1bHRDb29raWVKYXIoKTsKIAogICAgIGwgPSBzb3VwX2Nv
b2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKTsKICAgICBmb3IgKHAgPSBsOyBwOyBwID0g
cC0+bmV4dCkKLSAgICAgICAgc291cF9jb29raWVfamFyX2RlbGV0ZV9jb29raWUoY29va2llSmFy
LCAoU291cENvb2tpZSAqKXAtPmRhdGEpOworICAgICAgICBzb3VwX2Nvb2tpZV9qYXJfZGVsZXRl
X2Nvb2tpZShjb29raWVKYXIsIChTb3VwQ29va2llKilwLT5kYXRhKTsKIAogICAgIHNvdXBfY29v
a2llc19mcmVlKGwpOwogI2VuZGlmCiB9CiAKLUVpbmFfTGlzdCAqZXdrX2Nvb2tpZXNfZ2V0X2Fs
bCh2b2lkKQorRWluYV9MaXN0KiBld2tfY29va2llc19nZXRfYWxsKHZvaWQpCiB7Ci0gICAgRWlu
YV9MaXN0ICplbCA9IDA7CisgICAgRWluYV9MaXN0KiBlbCA9IDA7CiAjaWYgVVNFKFNPVVApCi0g
ICAgR1NMaXN0ICpsOwotICAgIEdTTGlzdCAqcDsKLSAgICBTb3VwQ29va2llSmFyICpjb29raWVK
YXIgPSBXZWJDb3JlOjpkZWZhdWx0Q29va2llSmFyKCk7CisgICAgR1NMaXN0KiBsOworICAgIEdT
TGlzdCogcDsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBXZWJDb3JlOjpkZWZhdWx0
Q29va2llSmFyKCk7CiAKICAgICBsID0gc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tp
ZUphcik7CiAgICAgZm9yIChwID0gbDsgcDsgcCA9IHAtPm5leHQpIHsKLSAgICAgICAgU291cENv
b2tpZSAqY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KHAtPmRhdGEpOwotICAgICAg
ICBFd2tfQ29va2llICpjID0gc3RhdGljX2Nhc3Q8RXdrX0Nvb2tpZSo+KG1hbGxvYyhzaXplb2Yo
KmMpKSk7CisgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRpY19jYXN0PFNvdXBDb29r
aWUqPihwLT5kYXRhKTsKKyAgICAgICAgRXdrX0Nvb2tpZSogYyA9IHN0YXRpY19jYXN0PEV3a19D
b29raWUqPihtYWxsb2Moc2l6ZW9mKCpjKSkpOwogICAgICAgICBjLT5uYW1lID0gc3RyZHVwKGNv
b2tpZS0+bmFtZSk7CiAgICAgICAgIGMtPnZhbHVlID0gc3RyZHVwKGNvb2tpZS0+dmFsdWUpOwog
ICAgICAgICBjLT5kb21haW4gPSBzdHJkdXAoY29va2llLT5kb21haW4pOwpAQCAtMTA2LDE5ICsx
MDYsMTkgQEAgRWluYV9MaXN0ICpld2tfY29va2llc19nZXRfYWxsKHZvaWQpCiAgICAgcmV0dXJu
IGVsOwogfQogCi12b2lkIGV3a19jb29raWVzX2Nvb2tpZV9kZWwoRXdrX0Nvb2tpZSAqY29va2ll
KQordm9pZCBld2tfY29va2llc19jb29raWVfZGVsKEV3a19Db29raWUqIGNvb2tpZSkKIHsKICNp
ZiBVU0UoU09VUCkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb29raWUpOwogICAg
IEdTTGlzdCogbDsKICAgICBHU0xpc3QqIHA7Ci0gICAgU291cENvb2tpZUphciAqY29va2llSmFy
ID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tpZUphcigpOwotICAgIFNvdXBDb29raWUgKmMxID0gc291
cF9jb29raWVfbmV3KAorICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IFdlYkNvcmU6OmRl
ZmF1bHRDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llKiBjMSA9IHNvdXBfY29va2llX25ldygK
ICAgICAgICAgY29va2llLT5uYW1lLCBjb29raWUtPnZhbHVlLCBjb29raWUtPmRvbWFpbiwgY29v
a2llLT5wYXRoLCAtMSk7CiAKICAgICBsID0gc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNv
b2tpZUphcik7CiAgICAgZm9yIChwID0gbDsgcDsgcCA9IHAtPm5leHQpIHsKLSAgICAgICAgU291
cENvb2tpZSAqYzIgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4ocC0+ZGF0YSk7CisgICAgICAg
IFNvdXBDb29raWUqIGMyID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KHAtPmRhdGEpOwogICAg
ICAgICBpZiAoc291cF9jb29raWVfZXF1YWwoYzEsIGMyKSkgewogICAgICAgICAgICAgc291cF9j
b29raWVfamFyX2RlbGV0ZV9jb29raWUoY29va2llSmFyLCBjMik7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIGV3a19jb29raWVzX2Nvb2tpZV9kZWwoRXdrX0Nv
b2tpZSAqY29va2llKQogI2VuZGlmCiB9CiAKLXZvaWQgZXdrX2Nvb2tpZXNfY29va2llX2ZyZWUo
RXdrX0Nvb2tpZSAqY29va2llKQordm9pZCBld2tfY29va2llc19jb29raWVfZnJlZShFd2tfQ29v
a2llKiBjb29raWUpCiB7CiAjaWYgVVNFKFNPVVApCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oY29va2llKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIGV3a19jb29raWVzX2Nvb2tp
ZV9mcmVlKEV3a19Db29raWUgKmNvb2tpZSkKIHZvaWQgZXdrX2Nvb2tpZXNfcG9saWN5X3NldChF
d2tfQ29va2llX1BvbGljeSBwKQogewogI2lmIFVTRShTT1VQKQotICAgIFNvdXBDb29raWVKYXIg
KmNvb2tpZUphciA9IFdlYkNvcmU6OmRlZmF1bHRDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2ll
SmFyKiBjb29raWVKYXIgPSBXZWJDb3JlOjpkZWZhdWx0Q29va2llSmFyKCk7CiAgICAgU291cENv
b2tpZUphckFjY2VwdFBvbGljeSBwb2xpY3k7CiAKICAgICBwb2xpY3kgPSBTT1VQX0NPT0tJRV9K
QVJfQUNDRVBUX0FMV0FZUzsKQEAgLTE2OSw3ICsxNjksNyBAQCBFd2tfQ29va2llX1BvbGljeSBl
d2tfY29va2llc19wb2xpY3lfZ2V0KHZvaWQpCiB7CiAgICAgRXdrX0Nvb2tpZV9Qb2xpY3kgZXdr
X3BvbGljeSA9IEVXS19DT09LSUVfSkFSX0FDQ0VQVF9BTFdBWVM7CiAjaWYgVVNFKFNPVVApCi0g
ICAgU291cENvb2tpZUphciAqY29va2llSmFyID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tpZUphcigp
OworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IFdlYkNvcmU6OmRlZmF1bHRDb29raWVK
YXIoKTsKICAgICBTb3VwQ29va2llSmFyQWNjZXB0UG9saWN5IHBvbGljeTsKIAogICAgIHBvbGlj
eSA9IHNvdXBfY29va2llX2phcl9nZXRfYWNjZXB0X3BvbGljeShjb29raWVKYXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBkYTQzNDQwZWFiYzQ3NDQxZmNkZDk3ZTZiNzk5
ZTVmYjRiMzM5ZmFhLi42YzBlYjFjMGJlYjZiYzg2N2RjMzUzZTcyMDg4MDlkOGMzZmM2MWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNjMsMjUgKzYzLDI1IEBAIHN0YXRp
YyBjb25zdCBjaGFyIEVXS19GUkFNRV9UWVBFX1NUUltdID0gIkVXS19GcmFtZSI7CiAKIHN0cnVj
dCBFd2tfRnJhbWVfU21hcnRfRGF0YSB7CiAgICAgRXZhc19PYmplY3RfU21hcnRfQ2xpcHBlZF9E
YXRhIGJhc2U7Ci0gICAgRXZhc19PYmplY3QgKnNlbGY7Ci0gICAgRXZhc19PYmplY3QgKnZpZXc7
CisgICAgRXZhc19PYmplY3QqIHNlbGY7CisgICAgRXZhc19PYmplY3QqIHZpZXc7CiAjaWZkZWYg
RVdLX0ZSQU1FX0RFQlVHCi0gICAgRXZhc19PYmplY3QgKnJlZ2lvbjsKKyAgICBFdmFzX09iamVj
dCogcmVnaW9uOwogI2VuZGlmCi0gICAgV2ViQ29yZTo6RnJhbWUgKmZyYW1lOwotICAgIGNvbnN0
IGNoYXIgKnRpdGxlOwotICAgIGNvbnN0IGNoYXIgKnVyaTsKLSAgICBjb25zdCBjaGFyICpuYW1l
OworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZTsKKyAgICBjb25zdCBjaGFyKiB0aXRsZTsKKyAg
ICBjb25zdCBjaGFyKiB1cmk7CisgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBzdHJ1Y3Qgewog
ICAgICAgICBFdmFzX0Nvb3JkIHcsIGg7CiAgICAgfSBjb250ZW50c19zaXplOwotICAgIEVpbmFf
Qm9vbCB0ZXh0Wm9vbToxOwotICAgIEVpbmFfQm9vbCBlZGl0YWJsZToxOworICAgIEVpbmFfQm9v
bCB0ZXh0Wm9vbSA6IDE7CisgICAgRWluYV9Cb29sIGVkaXRhYmxlIDogMTsKIH07CiAKIHN0cnVj
dCBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSB7CiAgICAgRWluYV9JdGVyYXRvciBiYXNlOwotICAg
IEV2YXNfT2JqZWN0ICpvYmo7CisgICAgRXZhc19PYmplY3QqIG9iajsKICAgICB1bnNpZ25lZCBj
dXJyZW50SW5kZXg7CiB9OwogCkBAIC05MCwxOCArOTAsMTggQEAgc3RydWN0IEVpbmFfSXRlcmF0
b3JfRXdrX0ZyYW1lIHsKICNlbHNlCiAjZGVmaW5lIEVXS19GUkFNRV9UWVBFX0NIRUNLKG8sIC4u
LikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIGNvbnN0IGNoYXIgKl90bXBfb3R5cGUgPSBldmFzX29iamVjdF90eXBlX2dldChv
KTsgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGNoYXIqIF90bXBfb3R5cGUgPSBldmFz
X29iamVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChFSU5BX1VO
TElLRUxZKF90bXBfb3R5cGUgIT0gRVdLX0ZSQU1FX1RZUEVfU1RSKSkgeyAgICAgICAgICBcCiAg
ICAgICAgICAgICBFSU5BX0xPR19DUklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBvZiBhbiBl
d2tfZnJhbWUhIiwgbywgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgIF90bXBf
b3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdo
aWxlICgwKQogI2VuZGlmCiAKICNkZWZpbmUgRVdLX0ZSQU1FX1NEX0dFVChvLCBwdHIpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgKnB0
ciA9IChFd2tfRnJhbWVfU21hcnRfRGF0YSAqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8p
CisgICAgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfRnJhbWVfU21hcnRfRGF0YSop
ZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKIAogI2RlZmluZSBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICBcCiAgICAgRVdLX0ZSQU1FX1RZUEVfQ0hF
Q0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwKQEAgLTExNSw5ICsxMTUsOSBAQCBz
dHJ1Y3QgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUgewogc3RhdGljIEV2YXNfU21hcnRfQ2xhc3Mg
X3BhcmVudF9zYyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCiAjaWZkZWYgRVdLX0ZS
QU1FX0RFQlVHCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a19mcmFtZV9kZWJ1ZyhFdmFzX09iamVj
dCAqbykKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX2ZyYW1lX2RlYnVnKEV2YXNfT2JqZWN0KiBv
KQogewotICAgIEV2YXNfT2JqZWN0ICpjbGlwLCAqcGFyZW50OworICAgIEV2YXNfT2JqZWN0KiBj
bGlwLCAqIHBhcmVudDsKICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGgsIGN4LCBjeSwgY3csIGNo
OwogICAgIGludCByLCBnLCBiLCBhLCBjciwgY2csIGNiLCBjYTsKIApAQCAtMTQwLDIyICsxNDAs
MjIgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfZnJhbWVfZGVidWcoRXZhc19PYmplY3QgKm8p
CiB9CiAjZW5kaWYKIAotc3RhdGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsICpfZXdr
X2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KFdlYkNvcmU6OkZyYW1lICpmcmFtZSkKK3N0YXRpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChXZWJD
b3JlOjpGcmFtZSogZnJhbWUpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsKj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgRXZhc19PYmplY3QgKmtpdChXZWJDb3JlOjpGcmFtZSAqZnJhbWUpCitzdGF0
aWMgaW5saW5lIEV2YXNfT2JqZWN0KiBraXQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwotICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsICpmbCA9IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoZnJhbWUpOworICAgIFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBmbCA9IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9n
ZXQoZnJhbWUpOwogICAgIGlmICghZmwpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBm
bC0+d2ViRnJhbWUoKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NoaWxkcmVu
X2l0ZXJhdG9yX25leHQoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUgKml0LCBFdmFzX09iamVjdCAq
KmRhdGEpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4
dChFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQsIEV2YXNfT2JqZWN0KiogZGF0YSkKIHsKICAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihpdC0+b2JqLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7
CkBAIC0xNzEsMTIgKzE3MSwxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfZnJhbWVfY2hpbGRy
ZW5faXRlcmF0b3JfbmV4dChFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSAqaXQsCiAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CiB9CiAKLXN0YXRpYyBFdmFzX09iamVjdCAqX2V3a19mcmFtZV9jaGlsZHJl
bl9pdGVyYXRvcl9nZXRfY29udGFpbmVyKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lICppdCkKK3N0
YXRpYyBFdmFzX09iamVjdCogX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9nZXRfY29udGFp
bmVyKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKiBpdCkKIHsKICAgICByZXR1cm4gaXQtPm9iajsK
IH0KIAotc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCitz
dGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKIHsKICAgICBF
V0tfRlJBTUVfU0RfR0VUKG8sIHNkKTsKIApAQCAtMjMzLDE0ICsyMzMsMTQgQEAgc3RhdGljIHZv
aWQgX2V3a19mcmFtZV9zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiAjZW5kaWYKIH0KIAotc3Rh
dGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9kZWwoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9p
ZCBfZXdrX2ZyYW1lX3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykKIHsKICAgICBXUk4oIm89JXAi
LCBvKTsgLy8gWFhYIFJFTU9WRSBNRSBMQVRFUgogICAgIEVXS19GUkFNRV9TRF9HRVQobywgc2Qp
OwogCiAgICAgaWYgKHNkKSB7CiAgICAgICAgIGlmIChzZC0+ZnJhbWUpIHsKLSAgICAgICAgICAg
IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsICpmbGMgPSBfZXdrX2ZyYW1lX2xvYWRlcl9l
ZmxfZ2V0KHNkLT5mcmFtZSk7CisgICAgICAgICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbCogZmxjID0gX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChzZC0+ZnJhbWUpOwogICAgICAg
ICAgICAgZmxjLT5zZXRXZWJGcmFtZSgwKTsKICAgICAgICAgICAgIHNkLT5mcmFtZS0+bG9hZGVy
KCktPmNhbmNlbEFuZENsZWFyKCk7CiAgICAgICAgICAgICBzZC0+ZnJhbWUgPSAwOwpAQCAtMjU0
LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfZGVsKEV2YXNfT2JqZWN0
ICpvKQogICAgIF9wYXJlbnRfc2MuZGVsKG8pOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX2ZyYW1l
X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgp
CitzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogbywgRXZh
c19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVChvLCBzZCk7
CiAgICAgZXZhc19vYmplY3RfcmVzaXplKHNkLT5iYXNlLmNsaXBwZXIsIHcsIGgpOwpAQCAtMjY5
LDcgKzI2OSw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfcmVzaXplKEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKICNlbmRpZgogfQogCi1zdGF0aWMg
dm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X3NldChFdmFzX1NtYXJ0X0NsYXNzICphcGkpCitzdGF0aWMg
dm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X3NldChFdmFzX1NtYXJ0X0NsYXNzKiBhcGkpCiB7CiAgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9zZXQoYXBpKTsKICAgICBhcGktPmFkZCA9
IF9ld2tfZnJhbWVfc21hcnRfYWRkOwpAQCAtMjc3LDEwICsyNzcsMTAgQEAgc3RhdGljIHZvaWQg
X2V3a19mcmFtZV9zbWFydF9zZXQoRXZhc19TbWFydF9DbGFzcyAqYXBpKQogICAgIGFwaS0+cmVz
aXplID0gX2V3a19mcmFtZV9zbWFydF9yZXNpemU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRXZhc19T
bWFydCAqX2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcodm9pZCkKK3N0YXRpYyBpbmxpbmUgRXZh
c19TbWFydCogX2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcodm9pZCkKIHsKICAgICBzdGF0aWMg
RXZhc19TbWFydF9DbGFzcyBzYyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04o
RVdLX0ZSQU1FX1RZUEVfU1RSKTsKLSAgICBzdGF0aWMgRXZhc19TbWFydCAqc21hcnQgPSAwOwor
ICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7CiAKICAgICBpZiAoRUlOQV9VTkxJS0VM
WSghc21hcnQpKSB7CiAgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0
KCZfcGFyZW50X3NjKTsKQEAgLTI5MSwxNyArMjkxLDE3IEBAIHN0YXRpYyBpbmxpbmUgRXZhc19T
bWFydCAqX2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcodm9pZCkKICAgICByZXR1cm4gc21hcnQ7
CiB9CiAKLUV2YXNfT2JqZWN0ICpld2tfZnJhbWVfdmlld19nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pCitFdmFzX09iamVjdCogZXdrX2ZyYW1lX3ZpZXdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBv
KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICByZXR1
cm4gc2QtPnZpZXc7CiB9CiAKLUVpbmFfSXRlcmF0b3IgKmV3a19mcmFtZV9jaGlsZHJlbl9pdGVy
YXRvcl9uZXcoRXZhc19PYmplY3QgKm8pCitFaW5hX0l0ZXJhdG9yKiBld2tfZnJhbWVfY2hpbGRy
ZW5faXRlcmF0b3JfbmV3KEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCAwKTsKLSAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSAqaXQgPSAo
RWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUgKikKLSAgICAgICAgY2FsbG9jKDEsIHNpemVvZihFaW5h
X0l0ZXJhdG9yX0V3a19GcmFtZSkpOworICAgIEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKiBpdCA9
IChFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FsbG9jKDEsIHNpemVvZihFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSkpOwogICAgIGlm
ICghaXQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0zMTQsNyArMzE0LDcgQEAgRWluYV9JdGVy
YXRvciAqZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhFdmFzX09iamVjdCAqbykKICAg
ICByZXR1cm4gJml0LT5iYXNlOwogfQogCi1FdmFzX09iamVjdCAqZXdrX2ZyYW1lX2NoaWxkX2Zp
bmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKm5hbWUpCitFdmFzX09iamVjdCogZXdrX2Zy
YW1lX2NoaWxkX2ZpbmQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChuYW1lLCAwKTsKQEAgLTMyMywyOSArMzIzLDI5IEBAIEV2YXNfT2Jq
ZWN0ICpld2tfZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqbmFt
ZSkKICAgICByZXR1cm4ga2l0KHNkLT5mcmFtZS0+dHJlZSgpLT5maW5kKFdURjo6QXRvbWljU3Ry
aW5nKHMpKSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfdXJpX3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqdXJpKQorRWluYV9Cb29sIGV3a19mcmFtZV91cmlfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpL
VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxKGt1cmwpOwotICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyICpsb2FkZXIgPSBz
ZC0+ZnJhbWUtPmxvYWRlcigpOworICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyKiBsb2FkZXIgPSBz
ZC0+ZnJhbWUtPmxvYWRlcigpOwogICAgIGxvYWRlci0+bG9hZChyZXEsIGZhbHNlKTsKICAgICBy
ZXR1cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyICpld2tfZnJhbWVfdXJpX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a19mcmFtZV91cmlfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKICAgICByZXR1cm4gc2QtPnVyaTsKIH0KIAotY29uc3QgY2hhciAqZXdrX2ZyYW1lX3RpdGxl
X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a19mcmFtZV90aXRsZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIDApOwogICAgIHJldHVybiBzZC0+dGl0bGU7CiB9CiAKLWNvbnN0IGNoYXIgKmV3
a19mcmFtZV9uYW1lX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a19m
cmFtZV9uYW1lX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAKQEAgLTM2NCw3ICszNjQsNyBAQCBjb25zdCBjaGFy
ICpld2tfZnJhbWVfbmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHNk
LT5uYW1lOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkICp3LCBFdmFzX0Nvb3JkICpoKQorRWluYV9Cb29s
IGV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbywgRXZhc19D
b29yZCogdywgRXZhc19Db29yZCogaCkKIHsKICAgICBpZiAodykKICAgICAgICAgKncgPSAwOwpA
QCAtMzc4LDcgKzM3OCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgKncsIEV2YXNfCiAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9p
bnRlcm5hbChFd2tfRnJhbWVfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIgKmNvbnRlbnRzLCBz
aXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hhciAqbWltZV90eXBlLCBjb25zdCBjaGFyICpl
bmNvZGluZywgY29uc3QgY2hhciAqYmFzZV91cmksIGNvbnN0IGNoYXIgKnVucmVhY2hhYmxlX3Vy
aSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwoRXdr
X0ZyYW1lX1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBjaGFyKiBjb250ZW50cywgc2l6ZV90IGNvbnRl
bnRzX3NpemUsIGNvbnN0IGNoYXIqIG1pbWVfdHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNv
bnN0IGNoYXIqIGJhc2VfdXJpLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZV91cmkpCiB7CiAgICAg
c2l6ZV90IGxlbiA9IHN0cmxlbihjb250ZW50cyk7CiAgICAgaWYgKGNvbnRlbnRzX3NpemUgPCAx
IHx8IGNvbnRlbnRzX3NpemUgPiBsZW4pCkBAIC00MDAsMzYgKzQwMCwzNiBAQCBzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsKEV3a19GcmFtZV9TbWFydF9E
YXRhICpzZCwgY29ucwogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMsIGNvbnRlbnRzX3Np
emUpOwogICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhCiAgICAgICAg
IChidWZmZXIucmVsZWFzZSgpLAotICAgICAgICAgV1RGOjpTdHJpbmc6OmZyb21VVEY4KG1pbWVf
dHlwZSksCi0gICAgICAgICBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpLAotICAgICAg
ICAgYmFzZUtVUkwsIHVucmVhY2hhYmxlS1VSTCk7CisgICAgICAgIFdURjo6U3RyaW5nOjpmcm9t
VVRGOChtaW1lX3R5cGUpLAorICAgICAgICBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZW5jb2Rpbmcp
LAorICAgICAgICBiYXNlS1VSTCwgdW5yZWFjaGFibGVLVVJMKTsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdChiYXNlS1VSTCk7CiAKICAgICBzZC0+ZnJhbWUtPmxvYWRlcigp
LT5sb2FkKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19zZXQoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IGNoYXIgKmNvbnRlbnRzLCBzaXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hh
ciAqbWltZV90eXBlLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqYmFzZV91cmkp
CitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NldChFdmFzX09iamVjdCogbywgY29uc3Qg
Y2hhciogY29udGVudHMsIHNpemVfdCBjb250ZW50c19zaXplLCBjb25zdCBjaGFyKiBtaW1lX3R5
cGUsIGNvbnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBiYXNlX3VyaSkKIHsKICAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb250ZW50cywgRUlOQV9GQUxTRSk7CiAgICAg
cmV0dXJuIF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsCi0gICAgICAgIChzZCwgY29u
dGVudHMsIGNvbnRlbnRzX3NpemUsIG1pbWVfdHlwZSwgZW5jb2RpbmcsIGJhc2VfdXJpLCAwKTsK
KyAgICAgICAgICAgICAgIChzZCwgY29udGVudHMsIGNvbnRlbnRzX3NpemUsIG1pbWVfdHlwZSwg
ZW5jb2RpbmcsIGJhc2VfdXJpLCAwKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50
c19hbHRlcm5hdGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpjb250ZW50cywgc2l6
ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0IGNoYXIgKm1pbWVfdHlwZSwgY29uc3QgY2hhciAqZW5j
b2RpbmcsIGNvbnN0IGNoYXIgKmJhc2VfdXJpLCBjb25zdCBjaGFyICp1bnJlYWNoYWJsZV91cmkp
CitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQoRXZhc19PYmplY3Qq
IG8sIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hh
ciogbWltZV90eXBlLCBjb25zdCBjaGFyKiBlbmNvZGluZywgY29uc3QgY2hhciogYmFzZV91cmks
IGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlX3VyaSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVU
VVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChjb250ZW50cywgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHVucmVhY2hhYmxlX3VyaSwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIF9l
d2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsCi0gICAgICAgIChzZCwgY29udGVudHMsIGNv
bnRlbnRzX3NpemUsIG1pbWVfdHlwZSwgZW5jb2RpbmcsIGJhc2VfdXJpLAotICAgICAgICAgdW5y
ZWFjaGFibGVfdXJpKTsKKyAgICAgICAgICAgICAgIChzZCwgY29udGVudHMsIGNvbnRlbnRzX3Np
emUsIG1pbWVfdHlwZSwgZW5jb2RpbmcsIGJhc2VfdXJpLAorICAgICAgICAgICAgICAgdW5yZWFj
aGFibGVfdXJpKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZShFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqc2NyaXB0KQorRWluYV9Cb29sIGV3a19mcmFtZV9zY3Jp
cHRfZXhlY3V0ZShFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc2NyaXB0KQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9GQUxTRV9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC00Mzgs
MTQgKzQzOCwxNCBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBjaGFyICpzY3JpcHQpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAot
RWluYV9Cb29sIGV3a19mcmFtZV9lZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitF
aW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CiAg
ICAgcmV0dXJuIHNkLT5lZGl0YWJsZTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9lZGl0YWJs
ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKK0VpbmFfQm9vbCBld2tf
ZnJhbWVfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZWRpdGFibGUpCiB7
CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpA
QCAtNDU3LDcgKzQ1Nyw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZWRpdGFibGVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgZWRpdGFibGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0K
IAotY2hhciAqZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitj
aGFyKiBld2tfZnJhbWVfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgMCk7CkBAIC00NjcsNyArNDY3LDcgQEAgY2hh
ciAqZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0
dXJuIHN0cmR1cChzLmRhdGEoKSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9zZWFy
Y2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywgRWluYV9Cb29sIGNh
c2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWluYV9Cb29sIHdyYXApCitFaW5hX0Jv
b2wgZXdrX2ZyYW1lX3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFy
KiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGZvcndhcmQsIEVp
bmFfQm9vbCB3cmFwKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LCBFSU5BX0ZBTFNFKTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Rl
eHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFf
QgogICAgIHJldHVybiBzZC0+ZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5nKFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChzdHJpbmcpLCBmb3J3YXJkLCBjYXNlX3NlbnNpdGl2ZSwgd3JhcCwgdHJ1ZSk7
CiB9CiAKLXVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5h
X0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQgbGltaXQpCit1bnNpZ25lZCBpbnQgZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzdHJpbmcs
IEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQg
aW50IGxpbWl0KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNF
KTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB1bnNpZ25lZCBpbnQgZXdrX2ZyYW1lX3RleHRfbWF0Y2hl
c19tYXJrKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbgogICAgIHJldHVy
biBzZC0+ZnJhbWUtPmVkaXRvcigpLT5jb3VudE1hdGNoZXNGb3JUZXh0KFdURjo6U3RyaW5nOjpm
cm9tVVRGOChzdHJpbmcpLCBjYXNlX3NlbnNpdGl2ZSwgbGltaXQsIHRydWUpOwogfQogCi1FaW5h
X0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0ICpvKQor
RWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxT
RSk7CkBAIC00OTUsNyArNDk1LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNf
dW5tYXJrX2FsbChFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1F
aW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0KQorRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNo
ZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGhpZ2hsaWdodCkKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBA
IC01MDMsNyArNTAzLDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxp
Z2h0X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhpZ2hsaWcKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNo
ZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC01MjYsNyArNTI2LDcg
QEAgc3RhdGljIGJvb2wgX2V3a19mcmFtZV9yZWN0X2lzX25lZ2F0aXZlX3ZhbHVlKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QgJmkpCiAgICAgcmV0dXJuIChpLngoKSA8IDAgfHwgaS55KCkgPCAwKTsK
IH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8sIHNpemVfdCBuLCBpbnQgKngsIGludCAqeSkKK0VpbmFfQm9vbCBld2tf
ZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBzaXpl
X3QgbiwgaW50KiB4LCBpbnQqIHkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
ZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNTM3LDE4ICs1MzcsMTggQEAgRWluYV9Cb29sIGV3
a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIHNp
emVfdCBuLCBpbnQKICAgICBzdGQ6OnJlbW92ZV9pZihpbnRSZWN0cy5iZWdpbigpLCBpbnRSZWN0
cy5lbmQoKSwgX2V3a19mcmFtZV9yZWN0X2lzX25lZ2F0aXZlX3ZhbHVlKTsKIAogICAgIGlmIChp
bnRSZWN0cy5pc0VtcHR5KCkgfHwgbiA+IGludFJlY3RzLnNpemUoKSkKLSAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIAogICAgIHN0ZDo6c29ydChp
bnRSZWN0cy5iZWdpbigpLCBpbnRSZWN0cy5lbmQoKSwgX2V3a19mcmFtZV9yZWN0X2NtcF9sZXNz
X3RoYW4pOwogCiAgICAgaWYgKHgpCi0gICAgICAqeCA9IGludFJlY3RzW24gLSAxXS54KCk7Cisg
ICAgICAgICp4ID0gaW50UmVjdHNbbiAtIDFdLngoKTsKICAgICBpZiAoeSkKLSAgICAgICp5ID0g
aW50UmVjdHNbbiAtIDFdLnkoKTsKKyAgICAgICAgKnkgPSBpbnRSZWN0c1tuIC0gMV0ueSgpOwog
ICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfc3RvcChFdmFz
X09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfc3RvcChFdmFzX09iamVjdCogbykKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBA
IC01NTYsNyArNTU2LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9zdG9wKEV2YXNfT2JqZWN0ICpv
KQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfcmVsb2Fk
KEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV9yZWxvYWQoRXZhc19PYmplY3Qq
IG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFM
U0UpOwpAQCAtNTY0LDcgKzU2NCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfcmVsb2FkKEV2YXNf
T2JqZWN0ICpvKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJh
bWVfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3JlbG9h
ZF9mdWxsKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTU3MiwzOCArNTcyLDM4IEBAIEVpbmFfQm9vbCBl
d2tfZnJhbWVfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIEVJTkFfVFJV
RTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9iYWNrKEV2YXNfT2JqZWN0ICpvKQorRWluYV9C
b29sIGV3a19mcmFtZV9iYWNrKEV2YXNfT2JqZWN0KiBvKQogewogICAgIHJldHVybiBld2tfZnJh
bWVfbmF2aWdhdGUobywgLTEpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmQoRXZh
c19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmQoRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZShvLCAxKTsKIH0KIAotRWluYV9Cb29s
IGV3a19mcmFtZV9uYXZpZ2F0ZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBzKQorRWluYV9Cb29s
IGV3a19mcmFtZV9uYXZpZ2F0ZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBXZWJD
b3JlOjpQYWdlICpwYWdlID0gc2QtPmZyYW1lLT5wYWdlKCk7CisgICAgV2ViQ29yZTo6UGFnZSog
cGFnZSA9IHNkLT5mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZS0+Y2FuR29CYWNrT3JGb3J3
YXJkKHN0ZXBzKSkKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgcGFnZS0+Z29CYWNr
T3JGb3J3YXJkKHN0ZXBzKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wg
ZXdrX2ZyYW1lX2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2Zy
YW1lX2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgcmV0dXJuIGV3a19mcmFt
ZV9uYXZpZ2F0ZV9wb3NzaWJsZShvLCAtMSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZm9y
d2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfZm9yd2Fy
ZF9wb3NzaWJsZShFdmFzX09iamVjdCogbykKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1lX25hdmln
YXRlX3Bvc3NpYmxlKG8sIDEpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX25hdmlnYXRlX3Bv
c3NpYmxlKEV2YXNfT2JqZWN0ICpvLCBpbnQgc3RlcHMpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX25h
dmlnYXRlX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBvLCBpbnQgc3RlcHMpCiB7CiAgICAgRVdLX0ZS
QU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNjExLDcgKzYx
MSw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3Qg
Km8sIGludCBzdGVwcykKICAgICByZXR1cm4gcGFnZS0+Y2FuR29CYWNrT3JGb3J3YXJkKHN0ZXBz
KTsKIH0KIAotZmxvYXQgZXdrX2ZyYW1lX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQor
ZmxvYXQgZXdrX2ZyYW1lX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAtMS4wKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCAtMS4wKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBm
bG9hdCBld2tfZnJhbWVfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJu
IHNkLT5mcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV96
b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSkKK0VpbmFfQm9vbCBld2tfZnJhbWVf
em9vbV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNjMyLDEzICs2MzIsMTMg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9v
bSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21f
dGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVf
em9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gc2QtPnRl
eHRab29tOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21f
dGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNldHRpbmcpCiB7CiAgICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNjU0
LDcgKzY1NCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgc2V0dGluZykKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
Ci12b2lkIGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKEV3a19IaXRfVGVzdCAqaGl0X3Rlc3QpCit2
b2lkIGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKEV3a19IaXRfVGVzdCogaGl0X3Rlc3QpCiB7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oaGl0X3Rlc3QpOwogICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKGhpdF90ZXN0LT50aXRsZSk7CkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBld2tf
ZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QgKmhpdF90ZXN0KQogICAgIGZyZWUoaGl0
X3Rlc3QpOwogfQogCi1Fd2tfSGl0X1Rlc3QgKmV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3Qg
RXZhc19PYmplY3QgKm8sIGludCB4LCBpbnQgeSkKK0V3a19IaXRfVGVzdCogZXdrX2ZyYW1lX2hp
dF90ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCogbywgaW50IHgsIGludCB5KQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCAwKTsKQEAgLTY3NywxNSArNjc3LDE1IEBAIEV3a19I
aXRfVGVzdCAqZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCAqbywgaW50
IHgsIGludCB5KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUt
PmNvbnRlbnRSZW5kZXJlcigpLCAwKTsKIAogICAgIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gc2QtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQKLSAg
ICAgICAgKHZpZXctPndpbmRvd1RvQ29udGVudHMoV2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpLAot
ICAgICAgICAgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVDbGlwcGluZyov
IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2aWV3LT53
aW5kb3dUb0NvbnRlbnRzKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAv
Kmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CiAKICAgICBpZiAocmVzdWx0LnNjcm9sbGJhcigpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vZGUoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBFd2tfSGl0X1Rlc3QgKmhpdF90ZXN0ID0gKEV3a19IaXRfVGVzdCAq
KWNhbGxvYygxLCBzaXplb2YoRXdrX0hpdF9UZXN0KSk7CisgICAgRXdrX0hpdF9UZXN0KiBoaXRf
dGVzdCA9IChFd2tfSGl0X1Rlc3QqKWNhbGxvYygxLCBzaXplb2YoRXdrX0hpdF9UZXN0KSk7CiAg
ICAgaWYgKCFoaXRfdGVzdCkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRl
IG1lbW9yeSBmb3IgaGl0IHRlc3QuIik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNzQwLDcgKzc0
MCw3IEBAIEV3a19IaXRfVGVzdCAqZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyhjb25zdCBFdmFzX09i
amVjdCAqbywgaW50IHgsIGludCB5KQogfQogCiBFaW5hX0Jvb2wKLWV3a19mcmFtZV9zY3JvbGxf
YWRkKEV2YXNfT2JqZWN0ICpvLCBpbnQgZHgsIGludCBkeSkKK2V3a19mcmFtZV9zY3JvbGxfYWRk
KEV2YXNfT2JqZWN0KiBvLCBpbnQgZHgsIGludCBkeSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC03NTAsNyArNzUwLDcgQEAgZXdr
X2ZyYW1lX3Njcm9sbF9hZGQoRXZhc19PYmplY3QgKm8sIGludCBkeCwgaW50IGR5KQogfQogCiBF
aW5hX0Jvb2wKLWV3a19mcmFtZV9zY3JvbGxfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgeCwgaW50
IHkpCitld2tfZnJhbWVfc2Nyb2xsX3NldChFdmFzX09iamVjdCogbywgaW50IHgsIGludCB5KQog
ewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsK
QEAgLTc2MCw3ICs3NjAsNyBAQCBld2tfZnJhbWVfc2Nyb2xsX3NldChFdmFzX09iamVjdCAqbywg
aW50IHgsIGludCB5KQogfQogCiBFaW5hX0Jvb2wKLWV3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqdywgaW50ICpoKQorZXdrX2ZyYW1lX3Njcm9sbF9z
aXplX2dldChjb25zdCBFdmFzX09iamVjdCogbywgaW50KiB3LCBpbnQqIGgpCiB7CiAgICAgaWYg
KHcpCiAgICAgICAgICp3ID0gMDsKQEAgLTc3OCw3ICs3NzgsNyBAQCBld2tfZnJhbWVfc2Nyb2xs
X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKncsIGludCAqaCkKIH0KIAogRWlu
YV9Cb29sCi1ld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGlu
dCAqeCwgaW50ICp5KQorZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvLCBpbnQqIHgsIGludCogeSkKIHsKICAgICBpZiAoeCkKICAgICAgICAgKnggPSAwOwpAQCAt
Nzk1LDcgKzc5NSw3IEBAIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChjb25zdCBFdmFzX09iamVj
dCAqbywgaW50ICp4LCBpbnQgKnkpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9C
b29sIGV3a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgaW5jbHVkZV9zY3JvbGxiYXJzLCBpbnQgKngsIGludCAqeSwgaW50
ICp3LCBpbnQgKmgpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2libGVfY29udGVudF9nZW9tZXRy
eV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBpbmNsdWRlX3Njcm9sbGJhcnMs
IGludCogeCwgaW50KiB5LCBpbnQqIHcsIGludCogaCkKIHsKICAgICBpZiAoeCkKICAgICAgICAg
KnggPSAwOwpAQCAtODIwLDcgKzgyMCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdmlzaWJsZV9j
b250ZW50X2dlb21ldHJ5X2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRWluYV9Cb29sCiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9wYWludF9mdWxsX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfcGFpbnRfZnVsbF9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtODI4LDcgKzgyOCw3IEBAIEVpbmFfQm9vbCBl
d2tfZnJhbWVfcGFpbnRfZnVsbF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJu
IHNkLT5mcmFtZS0+dmlldygpLT5wYWludHNFbnRpcmVDb250ZW50cygpOwogfQogCi12b2lkIGV3
a19mcmFtZV9wYWludF9mdWxsX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGZsYWcpCit2
b2lkIGV3a19mcmFtZV9wYWludF9mdWxsX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGZs
YWcpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5mcmFtZSk7CkBAIC04MzYsNyArODM2LDcgQEAgdm9p
ZCBld2tfZnJhbWVfcGFpbnRfZnVsbF9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBmbGFn
KQogICAgIHNkLT5mcmFtZS0+dmlldygpLT5zZXRQYWludHNFbnRpcmVDb250ZW50cyhmbGFnKTsK
IH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2ZvY3VzX2luKEV2YXNfT2JqZWN0ICpvKQor
RWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2ZvY3VzX2luKEV2YXNfT2JqZWN0KiBvKQogewogICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTg0
NSwxNCArODQ1LDE0IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19pbihFdmFzX09i
amVjdCAqbykKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1l
X2ZlZWRfZm9jdXNfb3V0KEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV9mZWVk
X2ZvY3VzX291dChFdmFzX09iamVjdCogbykKIHsKICAgICAvLyBUT0RPOiB3aGF0IHRvIGRvIG9u
IGZvY3VzIG91dD8KICAgICBFUlIoIndoYXQgdG8gZG8/Iik7CiAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVj
dCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqZXYpCitFaW5hX0Jvb2wgZXdrX2Zy
YW1lX2ZlZWRfbW91c2Vfd2hlZWwoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfV2hlZWwqIGV2KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LCBFSU5BX0ZBTFNFKTsKQEAgLTg2Nyw3ICs4NjcsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2Zl
ZWRfbW91c2Vfd2hlZWwoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hl
ZQogICAgIHJldHVybiBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50
KGV2ZW50KTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24oRXZhc19P
YmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpCitFaW5hX0Jvb2wgZXdr
X2ZyYW1lX2ZlZWRfbW91c2VfZG93bihFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9N
b3VzZV9Eb3duKiBldikKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFt
ZSwgRUlOQV9GQUxTRSk7CkBAIC04ODUsMTMgKzg4NSwxMyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1l
X2ZlZWRfbW91c2VfZG93bihFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9E
b3duCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJl
c3NFdmVudChldmVudCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV91cChF
dmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCAqZXYpCitFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXAoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRf
TW91c2VfVXAqIGV2KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXYsIEVJ
TkFfRkFMU0UpOwogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3ID0gc2QtPmZyYW1lLT52
aWV3KCk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc2QtPmZyYW1lLT52aWV3KCk7
CiAgICAgREJHKCJvPSVwLCB2aWV3PSVwLCBidXR0b249JWQsIHBvcz0lZCwlZCIsCiAgICAgICAg
IG8sIHZpZXcsIGV2LT5idXR0b24sIGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgRUlOQV9GQUxTRSk7CkBAIC05MDMs
NyArOTAzLDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3VwKEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwICpldikKICAgICByZXR1cm4gc2QtPmZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZXZlbnQpOwogfQogCi1F
aW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCAqbywgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldikKK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3Vz
ZV9tb3ZlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2KQog
ewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsK
QEAgLTkyMiw3ICs5MjIsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92ZShF
dmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlCiAgICAgcmV0dXJuIHNk
LT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQoZXZlbnQpOwogfQogCi1FaW5hX0Jv
b2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QgKm8sIEV3a19Ub3VjaF9F
dmVudF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0ICpwb2ludHMsIGludCBtZXRhU3RhdGUpCitFaW5h
X0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIG8sIEV3a19Ub3Vj
aF9FdmVudF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0KiBwb2ludHMsIGludCBtZXRhU3RhdGUpCiB7
CiAgICAgRWluYV9Cb29sIHJldCA9IEVJTkFfRkFMU0U7CiAKQEAgLTkzMSw3ICs5MzEsNyBAQCBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QgKm8sIEV3a19U
b3VjaF9FdmVudF9UeXBlIGFjdGlvbgogICAgIEVXS19GUkFNRV9TRF9HRVQobywgc2QpOwogCiAg
ICAgaWYgKCFzZCB8fCAhc2QtPmZyYW1lIHx8ICFld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19n
ZXQoc2QtPnZpZXcpKSB7Ci0gICAgICAgIHZvaWQgKnBvaW50OworICAgICAgICB2b2lkKiBwb2lu
dDsKICAgICAgICAgRUlOQV9MSVNUX0ZSRUUocG9pbnRzLCBwb2ludCk7CiAgICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOwogICAgIH0KQEAgLTk2Myw3ICs5NjMsNyBAQCBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QgKm8sIEV3a19Ub3VjaF9FdmVudF9UeXBl
IGFjdGlvbgogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9l
d2tfZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmcoV2ViQ29yZTo6RnJhbWUgKmZyYW1lLCBjb25z
dCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQgJmV2ZW50KQorc3RhdGljIGlubGluZSBF
aW5hX0Jvb2wgX2V3a19mcmFtZV9oYW5kbGVfa2V5X3Njcm9sbGluZyhXZWJDb3JlOjpGcmFtZSog
ZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCAmZXZlbnQpCiB7CiAg
ICAgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eSBncmFudWxhcml0eTsKQEAgLTEwMTEsNyArMTAxMSw3IEBAIHN0YXRpYyBp
bmxpbmUgRWluYV9Cb29sIF9ld2tfZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmcoV2ViQ29yZTo6
RnJhbWUgKmZyYW1lLCBjCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVktfRE9XTjoKICAgICAg
ICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsRG93bjsKLSAgICAgICAgIGlmIChldmVudC5j
dHJsS2V5KCkpCisgICAgICAgIGlmIChldmVudC5jdHJsS2V5KCkpCiAgICAgICAgICAgICBncmFu
dWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5RG9jdW1lbnQ7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lOwpAQCAtMTAyNyw3ICsx
MDI3LDcgQEAgc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a19mcmFtZV9oYW5kbGVfa2V5X3Nj
cm9sbGluZyhXZWJDb3JlOjpGcmFtZSAqZnJhbWUsIGMKICAgICByZXR1cm4gRUlOQV9UUlVFOwog
fQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24oRXZhc19PYmplY3QgKm8sIGNv
bnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KQorRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tl
eV9kb3duKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBldikKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBA
IC0xMDQzLDcgKzEwNDMsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24oRXZh
c19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KQogICAgIHJldHVybiBf
ZXdrX2ZyYW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKHNkLT5mcmFtZSwgZXZlbnQpOwogfQogCi1F
aW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFz
X0V2ZW50X0tleV9VcCAqZXYpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXYpCiB7CiAgICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtMTA1NiwxMiArMTA1
NiwxMiBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmtleUV2ZW50KGV2ZW50KTsKIH0KIAotRXdrX1RleHRfU2VsZWN0aW9uX1R5cGUg
ZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQor
RXdrX1RleHRfU2VsZWN0aW9uX1R5cGUgZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFV0tfVEVYVF9TRUxFQ1RJT05fTk9ORSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRVdLX1RFWFRfU0VMRUNUSU9OX05PTkUpOwogCi0gICAg
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb24gKmNvbnRyb2xsZXIgPSBzZC0+ZnJhbWUtPnNlbGVjdGlv
bigpOworICAgIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uKiBjb250cm9sbGVyID0gc2QtPmZyYW1l
LT5zZWxlY3Rpb24oKTsKICAgICBpZiAoIWNvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybiBFV0tf
VEVYVF9TRUxFQ1RJT05fTk9ORTsKIApAQCAtMTA5MCw3ICsxMDkwLDcgQEAgRXdrX1RleHRfU2Vs
ZWN0aW9uX1R5cGUgZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKQogICoKICAqIEByZXR1cm4gYSBuZXcgZnJhbWUgb2JqZWN0IG9yIEBjIDAgb24g
ZmFpbHVyZQogICovCi1FdmFzX09iamVjdCAqZXdrX2ZyYW1lX2FkZChFdmFzICplKQorRXZhc19P
YmplY3QqIGV3a19mcmFtZV9hZGQoRXZhcyogZSkKIHsKICAgICByZXR1cm4gZXZhc19vYmplY3Rf
c21hcnRfYWRkKGUsIF9ld2tfZnJhbWVfc21hcnRfY2xhc3NfbmV3KCkpOwogfQpAQCAtMTEwMiw3
ICsxMTAyLDcgQEAgRXZhc19PYmplY3QgKmV3a19mcmFtZV9hZGQoRXZhcyAqZSkKICAqCiAgKiBU
aGlzIGlzIGludGVybmFsIGFuZCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGJ5IGV4dGVybmFsIHVz
ZXJzLgogICovCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QgKm8sIEV2YXNf
T2JqZWN0ICp2aWV3LCBXZWJDb3JlOjpGcmFtZSAqZnJhbWUpCitFaW5hX0Jvb2wgZXdrX2ZyYW1l
X2luaXQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpGcmFtZSog
ZnJhbWUpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIGlmICghc2QtPmZyYW1lKSB7CkBAIC0xMTI0LDExICsxMTI0LDExIEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfaW5pdChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKnZpZXcsIFdl
YkNvcmU6OkZyYW1lICpmcmFtCiAgKgogICogQWRkcyBjaGlsZCB0byB0aGUgZnJhbWUuCiAgKi8K
LUVpbmFfQm9vbCBld2tfZnJhbWVfY2hpbGRfYWRkKEV2YXNfT2JqZWN0ICpvLCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBXVEY6OlN0cmluZyAmbmFtZSwgY29u
c3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBjb25zdCBXVEY6OlN0cmluZyAmcmVmZXJyZXIpCitFaW5h
X0Jvb2wgZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogbywgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkZyYW1lPiBjaGlsZCwgY29uc3QgV1RGOjpTdHJpbmcgJm5hbWUsIGNvbnN0IFdl
YkNvcmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpTdHJpbmcgJnJlZmVycmVyKQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBjaGFyIGJ1ZlsyNTZdOwot
ICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsKKyAgICBFdmFzX09iamVjdCogZnJhbWU7CiAgICAgV2Vi
Q29yZTo6RnJhbWUqIGNmOwogCiAgICAgZnJhbWUgPSBld2tfZnJhbWVfYWRkKHNkLT5iYXNlLmV2
YXMpOwpAQCAtMTE5Myw3ICsxMTkzLDcgQEAgdm9pZCBld2tfZnJhbWVfdmlld19zZXQoRXZhc19P
YmplY3QqIG8sIEV2YXNfT2JqZWN0KiBuZXdQYXJlbnQpCiAgKiBAaW50ZXJuYWwKICAqIEZyYW1l
IHdhcyBkZXN0cm95ZWQgYnkgbG9hZGVyLCByZW1vdmUgaW50ZXJuYWwgcmVmZXJlbmNlLgogICov
Ci12b2lkIGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFt
ZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMTIwNyw3ICsxMjA3LDcgQEAg
dm9pZCBld2tfZnJhbWVfY29yZV9nb25lKEV2YXNfT2JqZWN0ICpvKQogICogQXZvaWQgdXNpbmcg
dGhpcyBjYWxsIGZyb20gb3V0c2lkZSwgYWRkIHNwZWNpZmljIGV3a19mcmFtZV8qCiAgKiBhY3Rp
b25zIGluc3RlYWQuCiAgKi8KLVdlYkNvcmU6OkZyYW1lKiBld2tfZnJhbWVfY29yZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitXZWJDb3JlOjpGcmFtZSogZXdrX2ZyYW1lX2NvcmVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCAwKTsKICAgICByZXR1cm4gc2QtPmZyYW1lOwpAQCAtMTIyNiw3ICsxMjI2LDcgQEAgV2Vi
Q29yZTo6RnJhbWUqIGV3a19mcmFtZV9jb3JlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAq
CiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIgogICovCi12b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCAqbywgRXdrX0ZyYW1lX1Jl
c291cmNlX1JlcXVlc3QgKnJlcXVlc3QpCit2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2Vu
ZChFdmFzX09iamVjdCogbywgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCiB7
CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVzb3VyY2UscmVxdWVz
dCx3aWxsc2VuZCIsIHJlcXVlc3QpOwogfQpAQCAtMTI0MCw5ICsxMjQwLDkgQEAgdm9pZCBld2tf
ZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QgKm8sIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0ICpyZXEKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LG5l
dyIKICAqLwotdm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09i
amVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgKnJlcXVlc3QpCit2b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2lnbl9pZGVudGlmaWVyKEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsICh2b2lkICop
cmVxdWVzdCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVzb3Vy
Y2UscmVxdWVzdCxuZXciLCAodm9pZCopcmVxdWVzdCk7CiB9CiAKIC8qKgpAQCAtMTI1Myw3ICsx
MjUzLDcgQEAgdm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09i
amVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmMKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJu
YXZpZ2F0aW9uLGZpcnN0IgogICovCi12b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9maXJzdF9u
YXZpZ2F0aW9uKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1fZmly
c3RfbmF2aWdhdGlvbihFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG8sICJuYXZpZ2F0aW9uLGZpcnN0IiwgMCk7CiB9CkBAIC0xMjY3LDcgKzEy
NjcsNyBAQCB2b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9maXJzdF9uYXZpZ2F0aW9uKEV2YXNf
T2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogInN0YXRlLHNhdmUiCiAgKi8KLXZvaWQg
ZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCAqbywgV2ViQ29yZTo6SGlzdG9y
eUl0ZW0gKml0ZW0pCit2b2lkIGV3a19mcmFtZV92aWV3X3N0YXRlX3NhdmUoRXZhc19PYmplY3Qq
IG8sIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobywgInN0YXRlLHNhdmUiLCAwKTsKIH0KQEAgLTEyNzgsOSArMTI3OCw5
IEBAIHZvaWQgZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCAqbywgV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0gKml0ZW0pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxzdGFydGVk
IiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChF
dmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCog
bykKIHsKLSAgICBFdmFzX09iamVjdCAqbWFpbl9mcmFtZTsKKyAgICBFdmFzX09iamVjdCogbWFp
bl9mcmFtZTsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8sICJsb2FkLHN0YXJ0ZWQiLCAwKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCk7CkBAIC0xMjk5LDcgKzEyOTksNyBAQCB2b2lkIGV3a19mcmFtZV9sb2Fk
X3N0YXJ0ZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92
aXNpb25hbCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX3By
b3Zpc2lvbmFsKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25h
bChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG8sICJsb2FkLHByb3Zpc2lvbmFsIiwgMCk7CiB9CkBAIC0xMzEyLDcgKzEzMTIsNyBAQCB2b2lk
IGV3a19mcmFtZV9sb2FkX3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRz
IHNpZ25hbDogImxvYWQsZmlyc3RsYXlvdXQsZmluaXNoZWQiIHdpdGggbm8gcGFyYW1ldGVycy4K
ICAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVj
dCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfZmluaXNoZWQoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxm
aXJzdGxheW91dCxmaW5pc2hlZCIsIDApOwogfQpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgdm9pZCBl
d2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVjdCAqbykKICAqCiAg
KiBFbWl0cyBzaWduYWw6ICJsb2FkLG5vbmVtcHR5bGF5b3V0LGZpbmlzaGVkIiB3aXRoIG5vIHBh
cmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfbm9uZW1wdHlf
ZmluaXNoZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0
X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsbm9uZW1wdHlsYXlvdXQsZmluaXNoZWQiLCAwKTsK
IH0KQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRf
bm9uZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
bG9hZCxkb2N1bWVudCxmaW5pc2hlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3
a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tf
ZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiwg
MCk7CiB9CkBAIC0xMzUzLDkgKzEzNTMsOSBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2RvY3VtZW50
X2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvKQogICogQG5vdGUgdGhlcmUgc2hvdWxkIG5vdGJlIGFu
eSBlcnJvciBzdHVmZiBoZXJlLCBidXQgdHJ5aW5nIHRvIGJlCiAgKiAgICAgICBjb21wYXRpYmxl
IHdpdGggcHJldmlvdXMgV2ViS2l0LgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVk
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplcnJvcl9kb21haW4sIGludCBlcnJvcl9jb2Rl
LCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyICplcnJvcl9kZXNjcmlwdGlv
biwgY29uc3QgY2hhciAqZmFpbGluZ191cmwpCit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVk
KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBlcnJvcl9kb21haW4sIGludCBlcnJvcl9jb2Rl
LCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvcl9kZXNjcmlwdGlv
biwgY29uc3QgY2hhciogZmFpbGluZ191cmwpCiB7Ci0gICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3Ig
YnVmLCAqZXJyb3I7CisgICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgYnVmLCAqIGVycm9yOwogICAg
IGlmICghZXJyb3JfZG9tYWluKSB7CiAgICAgICAgIERCRygibz0lcCwgc3VjY2Vzcy4iLCBvKTsK
ICAgICAgICAgZXJyb3IgPSAwOwpAQCAtMTM4Myw3ICsxMzgzLDcgQEAgdm9pZCBld2tfZnJhbWVf
bG9hZF9maW5pc2hlZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZXJyb3JfZG9tYWluLCBp
bnQgZXJyb3IKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIg
dG8gRXdrX0ZyYW1lX0xvYWRfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3Io
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUs
IEVpbmFfQm9vbCBpc19jYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIgKmVycm9yX2Rlc2NyaXB0aW9u
LCBjb25zdCBjaGFyICpmYWlsaW5nX3VybCkKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUsIEVp
bmFfQm9vbCBpc19jYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVycm9yX2Rlc2NyaXB0aW9uLCBj
b25zdCBjaGFyKiBmYWlsaW5nX3VybCkKIHsKICAgICBFd2tfRnJhbWVfTG9hZF9FcnJvciBlcnJv
cjsKIApAQCAtMTQxMCw3ICsxNDEwLDcgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9lcnJvcihFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqZXJyb3JfZG9tYWluLCBpbnQgZXJyb3JfY28KICAqCiAg
KiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb2dyZXNzIiB3aXRoIHBvaW50ZXIgdG8gYSBkb3VibGUg
ZnJvbSAwLjAgdG8gMS4wLgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5n
ZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQo
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qp
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5mcmFtZSk7CkBAIC0xNDMwLDcg
KzE0MzAsNyBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmpl
Y3QgKm8pCiAgKgogICogUmVwb3J0cyBjb250ZW50cyBzaXplIGNoYW5nZWQuCiAgKi8KLXZvaWQg
ZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCAqbywgRXZhc19Db29y
ZCB3LCBFdmFzX0Nvb3JkIGgpCit2b2lkIGV3a19mcmFtZV9jb250ZW50c19zaXplX2NoYW5nZWQo
RXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAgIERCRygi
bz0lcDogJWR4JWQiLCBvLCB3LCBoKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCk7CkBAIC0xNDQ5LDEzICsxNDQ5LDEzIEBAIHZvaWQgZXdrX2ZyYW1lX2NvbnRlbnRzX3Np
emVfY2hhbmdlZChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiAg
KgogICogUmVwb3J0cyB0aXRsZSBjaGFuZ2VkLgogICovCi12b2lkIGV3a19mcmFtZV90aXRsZV9z
ZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRpdGxlKQordm9pZCBld2tfZnJhbWVfdGl0
bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0aXRsZSkKIHsKICAgICBEQkcoIm89
JXAsIHRpdGxlPSVzIiwgbywgdGl0bGUgPyB0aXRsZSA6ICIobnVsbCkiKTsKICAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgaWYgKCFlaW5hX3N0cmluZ3NoYXJlX3Jl
cGxhY2UoJnNkLT50aXRsZSwgdGl0bGUpKQogICAgICAgICByZXR1cm47Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidGl0bGUsY2hhbmdlZCIsICh2b2lkICopc2QtPnRp
dGxlKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ0aXRsZSxjaGFu
Z2VkIiwgKHZvaWQqKXNkLT50aXRsZSk7CiB9CiAKIC8qKgpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAg
dm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0aXRs
ZSkKICAqCiAgKiBDcmVhdGVzIGEgdmlldy4KICAqLwotdm9pZCBld2tfZnJhbWVfdmlld19jcmVh
dGVfZm9yX3ZpZXcoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICp2aWV3KQordm9pZCBld2tf
ZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiB2
aWV3KQogewogICAgIERCRygibz0lcCwgdmlldz0lcCIsIG8sIHZpZXcpOwogICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTE0ODgsMTIgKzE0ODgsMTIgQEAgdm9pZCBl
d2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0
ICp2aWV3KQogICAgIGlmICghc2QtPmZyYW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNvbnN0IGNoYXIgKnRoZW1lID0gZXdrX3ZpZXdfdGhlbWVfZ2V0KHZpZXcpOworICAgIGNv
bnN0IGNoYXIqIHRoZW1lID0gZXdrX3ZpZXdfdGhlbWVfZ2V0KHZpZXcpOwogICAgIHNkLT5mcmFt
ZS0+dmlldygpLT5zZXRFZGplVGhlbWUodGhlbWUpOwogICAgIHNkLT5mcmFtZS0+dmlldygpLT5z
ZXRFdmFzT2JqZWN0KG8pOwogfQogCi1zc2l6ZV90IGV3a19mcmFtZV9zb3VyY2VfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvLCBjaGFyICoqZnJhbWVfc291cmNlKQorc3NpemVfdCBld2tfZnJhbWVf
c291cmNlX2dldChjb25zdCBFdmFzX09iamVjdCogbywgY2hhcioqIGZyYW1lX3NvdXJjZSkKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEpOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIC0xKTsKQEAgLTE1MTAsMTEgKzE1MTAs
MTEgQEAgc3NpemVfdCBld2tfZnJhbWVfc291cmNlX2dldChjb25zdCBFdmFzX09iamVjdCAqbywg
Y2hhciAqKmZyYW1lX3NvdXJjZSkKICAgICB9CiAKICAgICAvLyBMb29rIGZvciA8aHRtbD4gdGFn
LiBJZiBpdCBleGlzdHMsIHRoZSBub2RlIGNvbnRhdGlucyBhbGwgZG9jdW1lbnQncyBzb3VyY2Uu
Ci0gICAgV2ViQ29yZTo6Tm9kZSAqZG9jdW1lbnROb2RlID0gc2QtPmZyYW1lLT5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBXZWJDb3JlOjpOb2RlKiBkb2N1bWVudE5vZGUgPSBz
ZC0+ZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmIChkb2N1bWVu
dE5vZGUpCi0gICAgICAgIGZvciAoV2ViQ29yZTo6Tm9kZSAqbm9kZSA9IGRvY3VtZW50Tm9kZS0+
Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKSB7CisgICAg
ICAgIGZvciAoV2ViQ29yZTo6Tm9kZSogbm9kZSA9IGRvY3VtZW50Tm9kZS0+Zmlyc3RDaGlsZCgp
OyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6Omh0bWxUYWcpKSB7Ci0gICAgICAg
ICAgICAgICAgV2ViQ29yZTo6SFRNTEVsZW1lbnQgKmVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MRWxlbWVudCo+KG5vZGUpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxF
bGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQqPihub2Rl
KTsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkKICAgICAgICAgICAgICAgICAgICAgc291
cmNlID0gZWxlbWVudC0+b3V0ZXJIVE1MKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
NTQzLDI1ICsxNTQzLDI1IEBAIHNzaXplX3QgZXdrX2ZyYW1lX3NvdXJjZV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8sIGNoYXIgKipmcmFtZV9zb3VyY2UpCiAgICAgcmV0dXJuIHNvdXJjZV9sZW5n
dGg7CiB9CiAKLUVpbmFfTGlzdCAqZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlvbl9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0xpc3QqIGV3a19mcmFtZV9yZXNvdXJjZXNfbG9jYXRp
b25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Qt
PmZyYW1lLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LT5kb2N1bWVudCgpLCAwKTsKIAotICAgIEVpbmFfTGlzdCAqbGlzdE9mSW1hZ2VzTG9jYXRpb24g
PSAwOworICAgIEVpbmFfTGlzdCogbGlzdE9mSW1hZ2VzTG9jYXRpb24gPSAwOwogCiAgICAgLy8g
R2V0IHNyYyBhdHRpYnV0ZSBvZiBpbWFnZXMgYW5kIHNhdmVzIHRoZW0gdG8gdGhlIEVpbmFfTGlz
dC4KICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTENvbGxlY3Rpb24+IGltYWdlcyA9IHNkLT5mcmFt
ZS0+ZG9jdW1lbnQoKS0+aW1hZ2VzKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IGltYWdlcy0+bGVuZ3RoKCk7ICsraW5kZXgpIHsKLSAgICAgICAgV2ViQ29yZTo6SFRNTElt
YWdlRWxlbWVudCAqaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEltYWdl
RWxlbWVudCo+KGltYWdlcy0+aXRlbShpbmRleCkpOworICAgICAgICBXZWJDb3JlOjpIVE1MSW1h
Z2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50Kj4oaW1hZ2VzLT5pdGVtKGluZGV4KSk7CiAgICAgICAgIGlmICghaW1hZ2VFbGVtZW50
IHx8IGltYWdlRWxlbWVudC0+c3JjKCkuaXNOdWxsKCkgfHwgaW1hZ2VFbGVtZW50LT5zcmMoKS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBXVEY6OlN0cmluZyBp
bWFnZUxvY2F0aW9uID0gaW1hZ2VFbGVtZW50LT5zcmMoKS5zdHJpbmcoKTsKICAgICAgICAgLy8g
TG9vayBmb3IgZHVwbGljYXRlZCBsb2NhdGlvbi4KLSAgICAgICAgRWluYV9MaXN0ICpsaXN0SXRl
cmF0b3IgPSAwOwotICAgICAgICB2b2lkICpkYXRhID0gMDsKKyAgICAgICAgRWluYV9MaXN0KiBs
aXN0SXRlcmF0b3IgPSAwOworICAgICAgICB2b2lkKiBkYXRhID0gMDsKICAgICAgICAgRWluYV9C
b29sIGZvdW5kID0gRUlOQV9GQUxTRTsKICAgICAgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobGlzdE9m
SW1hZ2VzTG9jYXRpb24sIGxpc3RJdGVyYXRvciwgZGF0YSkKICAgICAgICAgICAgIGlmIChmb3Vu
ZCA9ICFzdHJjbXAoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpLCBpbWFnZUxvY2F0aW9uLnV0Zjgo
KS5kYXRhKCkpKQpAQCAtMTU2OSw3ICsxNTY5LDcgQEAgRWluYV9MaXN0ICpld2tfZnJhbWVfcmVz
b3VyY2VzX2xvY2F0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAgICAgICAgaWYgKGZv
dW5kKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgY2hhciAqaW1hZ2VMb2NhdGlv
bkNvcHkgPSBzdHJkdXAoaW1hZ2VMb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgY2hh
ciogaW1hZ2VMb2NhdGlvbkNvcHkgPSBzdHJkdXAoaW1hZ2VMb2NhdGlvbi51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgaWYgKCFpbWFnZUxvY2F0aW9uQ29weSkKICAgICAgICAgICAgIGdvdG8gb3V0
X29mX21lbW9yeV9oYW5kbGVyOwogICAgICAgICBsaXN0T2ZJbWFnZXNMb2NhdGlvbiA9IGVpbmFf
bGlzdF9hcHBlbmQobGlzdE9mSW1hZ2VzTG9jYXRpb24sIGltYWdlTG9jYXRpb25Db3B5KTsKQEAg
LTE1ODEsNyArMTU4MSw3IEBAIEVpbmFfTGlzdCAqZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlv
bl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAKIG91dF9vZl9tZW1vcnlfaGFuZGxlcjoKICAg
ICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeS4iKTsKLSAgICB2b2lkICpkYXRh
OworICAgIHZvaWQqIGRhdGE7CiAgICAgRUlOQV9MSVNUX0ZSRUUobGlzdE9mSW1hZ2VzTG9jYXRp
b24sIGRhdGEpCiAgICAgICAgIGZyZWUoZGF0YSk7CiAgICAgcmV0dXJuIDA7CkBAIC0xNTkzLDcg
KzE1OTMsNyBAQCBvdXRfb2ZfbWVtb3J5X2hhbmRsZXI6CiAgKgogICogRW1pdHMgc2lnbmFsOiAi
dXJpLGNoYW5nZWQiIHdpdGggbmV3IHVyaSBhcyBwYXJhbWV0ZXIuCiAgKi8KLUVpbmFfQm9vbCBl
d2tfZnJhbWVfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1l
X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTE2MTUsNyArMTYxNSw3IEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRm9yY2Vz
IGxheW91dCBmb3IgZnJhbWUuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFz
X09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFzX09iamVjdCogbykK
IHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCk7CkBAIC0xNjMwLDcgKzE2MzAsNyBAQCB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQo
RXZhc19PYmplY3QgKm8pCiAgKgogICogQ3JlYXRlcyBwbHVnaW4uCiAgKi8KLVdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplICZwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudCAqZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBjb25zdCBXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nPiAmcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nICZtaW1lVHlwZSwgYm9vbCBs
b2FkTWFudWFsbHkpCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVf
cGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSAmcGx1
Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNv
cmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbU5hbWVz
LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtVmFsdWVzLCBjb25zdCBXVEY6
OlN0cmluZyAmbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIHJldHVybiAwOwog
fQpAQCAtMTY0Myw3ICsxNjQzLDcgQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
ZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QgKm8sIGNvbnN0IFcKICAqCiAgKiBF
bWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnRzZWxlY3Rpb24sY2hhbmdlZCIgd2l0aCBubyBwYXJh
bWV0ZXJzLgogICovCi12b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFu
Z2VkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxlY3Rp
b25fY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8sICJlZGl0b3JjbGllbnQsc2VsZWN0aW9uLGNoYW5nZWQiLCAwKTsKICAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0xNjU4LDcgKzE2NTgsNyBAQCB2
b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0
ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImVkaXRvcmNsaWVudCxjb250ZW50cyxjaGFuZ2Vk
IiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRf
Y29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9j
bGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJlZGl0b3JjbGllbnQsY29udGVudHMsY2hhbmdlZCIs
IDApOwogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2hpc3RvcnkuY3BwCmluZGV4IDkxYzdjNWMxNWI3MzE1OWUzY2RiZWJkMjI3YTUy
ZThkMDBiMWE5ZTAuLjg3YmRhYzlmZTJiZTZkMTlmYTE0ZmY5ZmY0MjU0YjUyZTc5NGM4YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogc3RydWN0IF9Fd2tfSGlzdG9yeSB7Ci0gICAg
V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCAqY29yZTsKKyAgICBXZWJDb3JlOjpCYWNrRm9y
d2FyZExpc3RJbXBsKiBjb3JlOwogfTsKIAogI2RlZmluZSBFV0tfSElTVE9SWV9DT1JFX0dFVF9P
Ul9SRVRVUk4oaGlzdG9yeSwgY29yZV8sIC4uLikgICAgICBcCkBAIC01MCwxNiArNTAsMTYgQEAg
c3RydWN0IF9Fd2tfSGlzdG9yeSB7CiAgICAgICAgIEVSUigiaGlzdG9yeS0+Y29yZSBpcyBkaXNh
YmxlZCEuIik7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIF9fVkFfQVJH
U19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCAqY29yZV8gPSAoaGlzdG9yeSktPmNvcmUK
KyAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBjb3JlXyA9IChoaXN0b3J5KS0+Y29y
ZQogCiAKIHN0cnVjdCBfRXdrX0hpc3RvcnlfSXRlbSB7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0
ZW0gKmNvcmU7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGNvcmU7CiAKLSAgICBjb25zdCBj
aGFyICp0aXRsZTsKLSAgICBjb25zdCBjaGFyICphbHRlcm5hdGVfdGl0bGU7Ci0gICAgY29uc3Qg
Y2hhciAqdXJpOwotICAgIGNvbnN0IGNoYXIgKm9yaWdpbmFsX3VyaTsKKyAgICBjb25zdCBjaGFy
KiB0aXRsZTsKKyAgICBjb25zdCBjaGFyKiBhbHRlcm5hdGVfdGl0bGU7CisgICAgY29uc3QgY2hh
ciogdXJpOworICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFsX3VyaTsKIH07CiAKICNkZWZpbmUgRVdL
X0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZV8sIC4uLikgXApAQCAt
NzEsMTAgKzcxLDEwIEBAIHN0cnVjdCBfRXdrX0hpc3RvcnlfSXRlbSB7CiAgICAgICAgIENSSVRJ
Q0FMKCJpdGVtLT5jb3JlIGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmVfID0gKGl0ZW0pLT5jb3Jl
CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGNvcmVfID0gKGl0ZW0pLT5jb3JlCiAKIAotc3Rh
dGljIGlubGluZSBFd2tfSGlzdG9yeV9JdGVtICpfZXdrX2hpc3RvcnlfaXRlbV9uZXcoV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0gKmNvcmUpCitzdGF0aWMgaW5saW5lIEV3a19IaXN0b3J5X0l0ZW0qIF9l
d2tfaGlzdG9yeV9pdGVtX25ldyhXZWJDb3JlOjpIaXN0b3J5SXRlbSogY29yZSkKIHsKICAgICBF
d2tfSGlzdG9yeV9JdGVtKiBpdGVtOwogCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBpbmxpbmUg
RXdrX0hpc3RvcnlfSXRlbSAqX2V3a19oaXN0b3J5X2l0ZW1fbmV3KFdlYkNvcmU6Okhpc3RvcnlJ
dGVtICpjb3JlCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGl0ZW0gPSAoRXdrX0hp
c3RvcnlfSXRlbSAqKWNhbGxvYygxLCBzaXplb2YoRXdrX0hpc3RvcnlfSXRlbSkpOworICAgIGl0
ZW0gPSAoRXdrX0hpc3RvcnlfSXRlbSopY2FsbG9jKDEsIHNpemVvZihFd2tfSGlzdG9yeV9JdGVt
KSk7CiAgICAgaWYgKCFpdGVtKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2Nh
dGUgaXRlbSBtZW1vcnkuIik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtOTUsNyArOTUsNyBAQCBz
dGF0aWMgaW5saW5lIEV3a19IaXN0b3J5X0l0ZW0gKl9ld2tfaGlzdG9yeV9pdGVtX25ldyhXZWJD
b3JlOjpIaXN0b3J5SXRlbSAqY29yZQogICAgIHJldHVybiBpdGVtOwogfQogCi1zdGF0aWMgaW5s
aW5lIEVpbmFfTGlzdCAqX2V3a19oaXN0b3J5X2l0ZW1fbGlzdF9nZXQoY29uc3QgV2ViQ29yZTo6
SGlzdG9yeUl0ZW1WZWN0b3IgJmNvcmVfaXRlbXMpCitzdGF0aWMgaW5saW5lIEVpbmFfTGlzdCog
X2V3a19oaXN0b3J5X2l0ZW1fbGlzdF9nZXQoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0
b3IgJmNvcmVfaXRlbXMpCiB7CiAgICAgRWluYV9MaXN0KiByZXQgPSAwOwogICAgIHVuc2lnbmVk
IGludCBpLCBzaXplOwpAQCAtMTUzLDcgKzE1Myw3IEBAIEV3a19IaXN0b3J5X0l0ZW0qIGV3a19o
aXN0b3J5X2hpc3RvcnlfaXRlbV9iYWNrX2dldChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSkK
IEV3a19IaXN0b3J5X0l0ZW0qIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9jdXJyZW50X2dldChj
b25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSkKIHsKICAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9P
Ul9SRVRVUk4oaGlzdG9yeSwgY29yZSwgMCk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmN1
cnJlbnRJdGVtID0gY29yZS0+Y3VycmVudEl0ZW0oKTsKKyAgICBXZWJDb3JlOjpIaXN0b3J5SXRl
bSogY3VycmVudEl0ZW0gPSBjb3JlLT5jdXJyZW50SXRlbSgpOwogICAgIGlmIChjdXJyZW50SXRl
bSkKICAgICAgICAgcmV0dXJuIF9ld2tfaGlzdG9yeV9pdGVtX25ldyhjdXJyZW50SXRlbSk7CiAg
ICAgcmV0dXJuIDA7CkBAIC0zMjIsNyArMzIyLDcgQEAgZG91YmxlIGV3a19oaXN0b3J5X2l0ZW1f
dGltZV9sYXN0X3Zpc2l0ZWRfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiBjYWly
b19zdXJmYWNlX3QqIGV3a19oaXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldChjb25zdCBFd2tf
SGlzdG9yeV9JdGVtKiBpdGVtKQogewogICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1Jf
UkVUVVJOKGl0ZW0sIGNvcmUsIDApOwotICAgIAorCiAgICAgV2ViQ29yZTo6SW1hZ2UqIGljb24g
PSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvcmUt
PnVybCgpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogICAgIGlmICghaWNvbikgewogICAg
ICAgICBFUlIoImljb24gaXMgTlVMTC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfanMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKaW5kZXgg
NjJiM2FhNDljYTZjMTlhMjVjZGZmNDdhNzU5NWM4NWZjZGQwNzZlZi4uZmY4YzM4MzkwZjA5NzFl
Y2MwNDY2ODc4MmE5ZTVmZjQ2YWNjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19qcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKQEAg
LTMwLDggKzMwLDggQEAKIAogI2RlZmluZSBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihvLCAu
Li4pIFwKICAgICBpZiAoIUVJTkFfTUFHSUNfQ0hFQ0sob2JqLCBFV0tfSlNfT0JKRUNUX01BR0lD
KSkgeyBcCi0gICAgICAgRUlOQV9NQUdJQ19GQUlMKG9iaiwgRVdLX0pTX09CSkVDVF9NQUdJQyk7
IFwKLSAgICAgICByZXR1cm4gX19WQV9BUkdTX187IFwKKyAgICAgICAgRUlOQV9NQUdJQ19GQUlM
KG9iaiwgRVdLX0pTX09CSkVDVF9NQUdJQyk7IFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19f
OyBcCiAgICAgfQogCiBzdHJ1Y3QgX0V3a19KU19DbGFzcyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19t
YWluLmNwcAppbmRleCBhYjU1NjdiNjdlNDZmNzEyOWIxN2JmYWI1Mzg4ODM4YmE3Y2JiNzgwLi4x
ZTM2YWJkMmFjNDNmMWU1YmM5MWVjMzYyYWQ4MmRiYzA0NzgwYzg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbWFpbi5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBFaW5hX0Jvb2wgX2V3a19pbml0X2Jv
ZHkodm9pZCkKICAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUsIGFscmVh
ZHkgcmVwb3J0ZWQgdG8gd2Via2l0LWd0ayBmb2xrczoKICNpZiBVU0UoU09VUCkKICAgICBpZiAo
MSkgewotICAgICAgICBTb3VwU2Vzc2lvbiAqc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgICAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwogICAgICAgICBzb3VwX3Nl
c3Npb25fYWRkX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09OVEVOVF9TTklG
RkVSKTsKICAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwg
U09VUF9UWVBFX0NPTlRFTlRfREVDT0RFUik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfbmV0d29yay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdv
cmsuY3BwCmluZGV4IDVjNzg5MjM4MDgxMGZhMGUyMjllMWZlMjRmNTNjZWNlZGY3MmM3ZjUuLjI2
ZDUyY2JhYTU0OGQ3MjJmMTFkNTUyMjlkM2RiZTY3YTI1NzAyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19uZXR3b3JrLmNwcApAQCAtMzAsMTAgKzMwLDEwIEBACiAjaW5jbHVkZSA8bGlic291
cC9zb3VwLmg+CiAjZW5kaWYKIAotdm9pZCBld2tfbmV0d29ya19wcm94eV91cmlfc2V0KGNvbnN0
IGNoYXIgKnByb3h5KQordm9pZCBld2tfbmV0d29ya19wcm94eV91cmlfc2V0KGNvbnN0IGNoYXIq
IHByb3h5KQogewogI2lmIFVTRShTT1VQKQotICAgIFNvdXBTZXNzaW9uICpzZXNzaW9uID0gV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgU291cFNlc3Npb24q
IHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKIAog
ICAgIGlmICghcHJveHkpIHsKICAgICAgICAgRVJSKCJubyBwcm94eSB1cmkuIHJlbW92ZSBwcm94
eSBmZWF0dXJlIGluIHNvdXAuIik7CkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgZXdrX25ldHdvcmtf
cHJveHlfdXJpX3NldChjb25zdCBjaGFyICpwcm94eSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFNvdXBVUkkgKnVyaSA9IHNvdXBfdXJpX25ldyhwcm94eSk7CisgICAgU291cFVSSSog
dXJpID0gc291cF91cmlfbmV3KHByb3h5KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tih1cmkpOwogCiAgICAgZ19vYmplY3Rfc2V0KHNlc3Npb24sIFNPVVBfU0VTU0lPTl9QUk9YWV9V
UkksIHVyaSwgTlVMTCk7CkBAIC01MSwxMSArNTEsMTEgQEAgdm9pZCBld2tfbmV0d29ya19wcm94
eV91cmlfc2V0KGNvbnN0IGNoYXIgKnByb3h5KQogI2VuZGlmCiB9CiAKLWNvbnN0IGNoYXIgKmV3
a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQodm9pZCkKK2NvbnN0IGNoYXIqIGV3a19uZXR3b3JrX3By
b3h5X3VyaV9nZXQodm9pZCkKIHsKICNpZiBVU0UoU09VUCkKLSAgICBTb3VwVVJJICp1cmk7Ci0g
ICAgU291cFNlc3Npb24gKnNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVs
dFNlc3Npb24oKTsKKyAgICBTb3VwVVJJKiB1cmk7CisgICAgU291cFNlc3Npb24qIHNlc3Npb24g
PSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKICAgICBnX29iamVj
dF9nZXQoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX1BST1hZX1VSSSwgJnVyaSwgTlVMTCk7CiAKICAg
ICBpZiAoIXVyaSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcAppbmRleCA4
MTVjZmQyNzQ1NDJhYzdkMjczNzVjNGI4NGU0OWIwMDY5ZDdlMTJiLi5iNDEwZmRjMjVhNGMyZTQw
MTczZTZhMGU5NjNhYmQ3MmYzYmQ3NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRp
bmdzLmNwcApAQCAtODksNyArODksNyBAQCB1aW50NjRfdCBld2tfc2V0dGluZ3Nfd2ViX2RhdGFi
YXNlX2RlZmF1bHRfcXVvdGFfZ2V0KHZvaWQpCiAjZW5kaWYKIH0KIAotdm9pZCBld2tfc2V0dGlu
Z3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIgKnBhdGgpCit2b2lkIGV3a19zZXR0
aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQoY29uc3QgY2hhciogcGF0aCkKIHsKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQogICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0gV1RGOjpTdHJpbmc6
OmZyb21VVEY4KHBhdGgpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgZXdrX3NldHRpbmdzX3dl
Yl9kYXRhYmFzZV9wYXRoX3NldChjb25zdCBjaGFyICpwYXRoKQogI2VuZGlmCiB9CiAKLWNvbnN0
IGNoYXIgKmV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9nZXQodm9pZCkKK2NvbnN0IGNo
YXIqIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9nZXQodm9pZCkKIHsKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQogICAgIHJldHVybiBfZXdrX2RlZmF1bHRfd2ViX2RhdGFiYXNlX3Bh
dGg7CkBAIC0xMTEsNyArMTExLDcgQEAgY29uc3QgY2hhciAqZXdrX3NldHRpbmdzX3dlYl9kYXRh
YmFzZV9wYXRoX2dldCh2b2lkKQogI2VuZGlmCiB9CiAKLUVpbmFfQm9vbCBld2tfc2V0dGluZ3Nf
aWNvbl9kYXRhYmFzZV9wYXRoX3NldChjb25zdCBjaGFyICpkaXJlY3RvcnkpCitFaW5hX0Jvb2wg
ZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQoY29uc3QgY2hhciogZGlyZWN0b3J5
KQogewogICAgIFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsK
IApAQCAtMTU2LDcgKzE1Niw3IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFz
ZV9wYXRoX3NldChjb25zdCBjaGFyICpkaXJlY3RvcnkpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotY29uc3QgY2hhciAqZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQodm9p
ZCkKK2NvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfZ2V0KHZvaWQp
CiB7CiAgICAgaWYgKCFXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pc0VuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0xNzcsMTIgKzE3NywxMiBAQCBFaW5hX0Jvb2wgZXdrX3NldHRpbmdz
X2ljb25fZGF0YWJhc2VfY2xlYXIodm9pZCkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1j
YWlyb19zdXJmYWNlX3QgKmV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9n
ZXQoY29uc3QgY2hhciAqdXJsKQorY2Fpcm9fc3VyZmFjZV90KiBld2tfc2V0dGluZ3NfaWNvbl9k
YXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KGNvbnN0IGNoYXIqIHVybCkKIHsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKIAogICAgIFdlYkNvcmU6OktVUkwga3Vy
bChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKLSAgICBXZWJD
b3JlOjpJbWFnZSAqaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNv
bkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKKyAg
ICBXZWJDb3JlOjpJbWFnZSogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9u
b3VzSWNvbkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYp
KTsKIAogICAgIGlmICghaWNvbikgewogICAgICAgICBFUlIoIm5vIGljb24gZm9yIHVybCAlcyIs
IHVybCk7CkBAIC0xOTIsMTQgKzE5MiwxNCBAQCBjYWlyb19zdXJmYWNlX3QgKmV3a19zZXR0aW5n
c19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgY2hhciAqdXJsKQogICAgIHJl
dHVybiBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogfQogCi1FdmFzX09iamVj
dCAqZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfYWRkKGNvbnN0IGNoYXIg
KnVybCwgRXZhcyAqY2FudmFzKQorRXZhc19PYmplY3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFi
YXNlX2ljb25fb2JqZWN0X2FkZChjb25zdCBjaGFyKiB1cmwsIEV2YXMqIGNhbnZhcykKIHsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKIAogICAgIFdlYkNvcmU6OktVUkwga3Vy
bChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKLSAgICBXZWJD
b3JlOjpJbWFnZSAqaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNv
bkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKLSAg
ICBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2U7CisgICAgV2ViQ29yZTo6SW1hZ2UqIGljb24gPSBX
ZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGt1cmwuc3Ry
aW5nKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBz
dXJmYWNlOwogCiAgICAgaWYgKCFpY29uKSB7CiAgICAgICAgIEVSUigibm8gaWNvbiBmb3IgdXJs
ICVzIiwgdXJsKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIGV3a19zZXR0aW5nc19yZXBhaW50
X3Rocm90dGxpbmdfc2V0KGRvdWJsZSBkZWZlcnJlZF9yZXBhaW50X2RlbGF5LCBkb3VibGUgaQog
ICoKICAqIEByZXR1cm4gYSBwb2ludGVyIHRvIGFuIGVpbmFfc3RyaW5nc2hhcmUgY29udGFpbmlu
ZyB0aGUgdXNlciBhZ2VudCBzdHJpbmcKICAqLwotY29uc3QgY2hhciAqZXdrX3NldHRpbmdzX2Rl
ZmF1bHRfdXNlcl9hZ2VudF9nZXQodm9pZCkKK2NvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19kZWZh
dWx0X3VzZXJfYWdlbnRfZ2V0KHZvaWQpCiB7CiAgICAgV1RGOjpTdHJpbmcgdWFfdmVyc2lvbiA9
IG1ha2VTdHJpbmcoU3RyaW5nOjpudW1iZXIoV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lP
TiksICcuJywgU3RyaW5nOjpudW1iZXIoV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTiks
ICcrJyk7CiAgICAgV1RGOjpTdHJpbmcgc3RhdGljX3VhID0gbWFrZVN0cmluZygiTW96aWxsYS81
LjAgKCIsIF9ld2tfc2V0dGluZ3Nfd2Via2l0X3BsYXRmb3JtX2dldCgpLCAiOyAiLCBfZXdrX3Nl
dHRpbmdzX3dlYmtpdF9vc192ZXJzaW9uX2dldCgpLCAiKSBBcHBsZVdlYktpdC8iLCB1YV92ZXJz
aW9uKSArIG1ha2VTdHJpbmcoIiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wIFNhZmFy
aS8iLCB1YV92ZXJzaW9uKTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBjb25zdCBjaGFyICpld2tfc2V0
dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCh2b2lkKQogICAgIHJldHVybiBlaW5hX3N0cmlu
Z3NoYXJlX2FkZChzdGF0aWNfdWEudXRmOCgpLmRhdGEoKSk7CiB9CiAKLUVpbmFfQm9vbCBld2tf
c2V0dGluZ3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfc2V0KGNvbnN0IGNoYXIgKnBhdGgpCitFaW5h
X0Jvb2wgZXdrX3NldHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9wYXRoX3NldChjb25zdCBjaGFyKiBw
YXRoKQogewogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgaWYgKCFw
YXRoKQpAQCAtMjcwLDcgKzI3MCw3IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfY2FjaGVfZGly
ZWN0b3J5X3BhdGhfc2V0KGNvbnN0IGNoYXIgKnBhdGgpCiAjZW5kaWYKIH0KIAotY29uc3QgY2hh
ciAqZXdrX3NldHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9wYXRoX2dldCgpCitjb25zdCBjaGFyKiBl
d2tfc2V0dGluZ3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfZ2V0KCkKIHsKICNpZiBFTkFCTEUoT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIHJldHVybiBfZXdrX2NhY2hlX2RpcmVjdG9yeV9w
YXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKaW5kZXggMDhiM2MwM2VjOGFlM2MyOTMz
MWI0NDgwNmQyOGYyYzFjNmE2MjMyNS4uZDM1ODEwNjA3NzAyZmM4MmNjZDlhYTg1NGViMjM5YzIy
ZGI0MjhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCkBAIC0yMiw5ICsyMiw5IEBA
CiAjaW5jbHVkZSAiZXdrX3V0aWwuaCIKIAogI2luY2x1ZGUgImJpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAid29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaCIKIAotI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8ZWluYV9z
YWZldHlfY2hlY2tzLmg+CiAKICNpZmRlZiBIQVZFX0VDT1JFX1gKQEAgLTM4LDE1ICszOCwxNSBA
QAogICogQHBhcmFtIHN1cmZhY2UgY2Fpcm8gcmVwcmVzZW50YXRpb24gb2YgYW4gaW1hZ2UKICAq
IEByZXR1cm4gY29udmVydGVkIGNhaXJvX3N1cmZhY2Ugb2JqZWN0IHRvIHRoZSBFdmFzX09iamVj
dAogICovCi1FdmFzX09iamVjdCAqZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2Fk
ZChFdmFzICpjYW52YXMsIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZSkKK0V2YXNfT2JqZWN0KiBl
d2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKEV2YXMqIGNhbnZhcywgY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlKQogewogICAgIGNhaXJvX3N0YXR1c190IHN0YXR1czsKICAgICBj
YWlyb19zdXJmYWNlX3R5cGVfdCB0eXBlOwogICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1hdDsKICAg
ICBpbnQgdywgaCwgc3RyaWRlOwotICAgIEV2YXNfT2JqZWN0ICppbWFnZTsKLSAgICBjb25zdCB2
b2lkICpzcmM7Ci0gICAgdm9pZCAqZHN0OworICAgIEV2YXNfT2JqZWN0KiBpbWFnZTsKKyAgICBj
b25zdCB2b2lkKiBzcmM7CisgICAgdm9pZCogZHN0OwogCiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHN1cmZhY2UsIDApOwpAQCAtMTY3LDggKzE2Nyw4IEBAIHVuc2lnbmVkIGV3a191dGlsX3dv
cmtlcl90aHJlYWRfY291bnQoKQogaW50IGV3a191dGlsX2RwaV9nZXQodm9pZCkKIHsKICNpZmRl
ZiBIQVZFX0VDT1JFX1gKLSAgICAgcmV0dXJuIGVjb3JlX3hfZHBpX2dldCgpOworICAgIHJldHVy
biBlY29yZV94X2RwaV9nZXQoKTsKICNlbHNlCi0gICAgIHJldHVybiAxNjA7CisgICAgcmV0dXJu
IDE2MDsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggY2U1NTVm
ZGVkMjFlZDg4YjRkY2UxMzcxM2YyZGY4ZjE1ZTZlYThlNS4uMWUxNjZiNjg2OGY0YzkxNDY0ZDVi
MGU3YjYxM2I5YjI0NDExYTAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC04
OCw3MiArODgsNzIgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklFV19TQ1JPTExTX1NJWkVf
TUFYX0ZSRUUgPSAzMjsKICAqIEBpbnRlcm5hbAogICovCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZh
dGVfRGF0YSB7Ci0gICAgV2ViQ29yZTo6UGFnZSAqcGFnZTsKLSAgICBXZWJDb3JlOjpTZXR0aW5n
cyAqcGFnZV9zZXR0aW5nczsKLSAgICBXZWJDb3JlOjpGcmFtZSAqbWFpbl9mcmFtZTsKKyAgICBX
ZWJDb3JlOjpQYWdlKiBwYWdlOworICAgIFdlYkNvcmU6OlNldHRpbmdzKiBwYWdlX3NldHRpbmdz
OworICAgIFdlYkNvcmU6OkZyYW1lKiBtYWluX2ZyYW1lOwogICAgIFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzIHZpZXdwb3J0X2FyZ3VtZW50czsKLSAgICBFd2tfSGlzdG9yeSAqaGlzdG9yeTsK
KyAgICBFd2tfSGlzdG9yeSogaGlzdG9yeTsKICAgICBzdHJ1Y3QgewogICAgICAgICB2b2lkKiBj
b250ZXh0OwogICAgICAgICBFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyX0NiIGZ1bmN0aW9uOwog
ICAgIH0gY3VzdG9tX3Jlc291cmNlX2hhbmRsZXI7CiAgICAgc3RydWN0IHsKICAgICAgICAgRXdr
X01lbnUgbWVudTsKLSAgICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICptZW51X2NsaWVu
dDsKKyAgICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51X2NsaWVudDsKICAgICB9
IHBvcHVwOwogICAgIHN0cnVjdCB7Ci0gICAgICAgIEVpbmFfUmVjdGFuZ2xlICphcnJheTsKKyAg
ICAgICAgRWluYV9SZWN0YW5nbGUqIGFycmF5OwogICAgICAgICBzaXplX3QgY291bnQ7CiAgICAg
ICAgIHNpemVfdCBhbGxvY2F0ZWQ7CiAgICAgfSByZXBhaW50czsKICAgICBzdHJ1Y3QgewotICAg
ICAgICBFd2tfU2Nyb2xsX1JlcXVlc3QgKmFycmF5OworICAgICAgICBFd2tfU2Nyb2xsX1JlcXVl
c3QqIGFycmF5OwogICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0
ZWQ7CiAgICAgfSBzY3JvbGxzOwogICAgIHVuc2lnbmVkIGludCBpbWg7IC8qKjwgaW5wdXQgbWV0
aG9kIGhpbnRzICovCiAgICAgc3RydWN0IHsKLSAgICAgICAgRWluYV9Cb29sIHZpZXdfY2xlYXJl
ZDoxOwotICAgICAgICBFaW5hX0Jvb2wgbmVlZF90b3VjaF9ldmVudHM6MTsKKyAgICAgICAgRWlu
YV9Cb29sIHZpZXdfY2xlYXJlZCA6IDE7CisgICAgICAgIEVpbmFfQm9vbCBuZWVkX3RvdWNoX2V2
ZW50cyA6IDE7CiAgICAgfSBmbGFnczsKICAgICBzdHJ1Y3QgewotICAgICAgICBjb25zdCBjaGFy
ICp1c2VyX2FnZW50OwotICAgICAgICBjb25zdCBjaGFyICp1c2VyX3N0eWxlc2hlZXQ7Ci0gICAg
ICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nX2RlZmF1bHQ7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmVu
Y29kaW5nX2N1c3RvbTsKLSAgICAgICAgY29uc3QgY2hhciAqdGhlbWU7Ci0gICAgICAgIGNvbnN0
IGNoYXIgKmxvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aDsKKyAgICAgICAgY29uc3QgY2hhciog
dXNlcl9hZ2VudDsKKyAgICAgICAgY29uc3QgY2hhciogdXNlcl9zdHlsZXNoZWV0OworICAgICAg
ICBjb25zdCBjaGFyKiBlbmNvZGluZ19kZWZhdWx0OworICAgICAgICBjb25zdCBjaGFyKiBlbmNv
ZGluZ19jdXN0b207CisgICAgICAgIGNvbnN0IGNoYXIqIHRoZW1lOworICAgICAgICBjb25zdCBj
aGFyKiBsb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGg7CiAgICAgICAgIGludCBmb250X21pbmlt
dW1fc2l6ZTsKICAgICAgICAgaW50IGZvbnRfbWluaW11bV9sb2dpY2FsX3NpemU7CiAgICAgICAg
IGludCBmb250X2RlZmF1bHRfc2l6ZTsKICAgICAgICAgaW50IGZvbnRfbW9ub3NwYWNlX3NpemU7
Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfc3RhbmRhcmQ7Ci0gICAgICAgIGNvbnN0IGNoYXIg
KmZvbnRfY3Vyc2l2ZTsKLSAgICAgICAgY29uc3QgY2hhciAqZm9udF9tb25vc3BhY2U7Ci0gICAg
ICAgIGNvbnN0IGNoYXIgKmZvbnRfZmFudGFzeTsKLSAgICAgICAgY29uc3QgY2hhciAqZm9udF9z
ZXJpZjsKLSAgICAgICAgY29uc3QgY2hhciAqZm9udF9zYW5zX3NlcmlmOwotICAgICAgICBFaW5h
X0Jvb2wgYXV0b19sb2FkX2ltYWdlczoxOwotICAgICAgICBFaW5hX0Jvb2wgYXV0b19zaHJpbmtf
aW1hZ2VzOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBlbmFibGVfYXV0b19yZXNpemVfd2luZG93OjE7
Ci0gICAgICAgIEVpbmFfQm9vbCBlbmFibGVfZGV2ZWxvcGVyX2V4dHJhczoxOwotICAgICAgICBF
aW5hX0Jvb2wgZW5hYmxlX3NjcmlwdHM6MTsKLSAgICAgICAgRWluYV9Cb29sIGVuYWJsZV9wbHVn
aW5zOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBlbmFibGVfZnJhbWVfZmxhdHRlbmluZzoxOwotICAg
ICAgICBFaW5hX0Jvb2wgZW5jb2RpbmdfZGV0ZWN0b3I6MTsKLSAgICAgICAgRWluYV9Cb29sIHNj
cmlwdHNfd2luZG93X29wZW46MTsKLSAgICAgICAgRWluYV9Cb29sIHNjcmlwdHNfY2FuX2Nsb3Nl
X3dpbmRvd3M6MTsKLSAgICAgICAgRWluYV9Cb29sIHJlc2l6YWJsZV90ZXh0YXJlYXM6MTsKLSAg
ICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJvd3Npbmc6MTsKLSAgICAgICAgRWluYV9Cb29sIGNh
cmV0X2Jyb3dzaW5nOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBzcGF0aWFsX25hdmlnYXRpb246MTsK
LSAgICAgICAgRWluYV9Cb29sIGxvY2FsX3N0b3JhZ2U6MTsKLSAgICAgICAgRWluYV9Cb29sIG9m
ZmxpbmVfYXBwX2NhY2hlOiAxOwotICAgICAgICBFaW5hX0Jvb2wgcGFnZV9jYWNoZTogMTsKKyAg
ICAgICAgY29uc3QgY2hhciogZm9udF9zdGFuZGFyZDsKKyAgICAgICAgY29uc3QgY2hhciogZm9u
dF9jdXJzaXZlOworICAgICAgICBjb25zdCBjaGFyKiBmb250X21vbm9zcGFjZTsKKyAgICAgICAg
Y29uc3QgY2hhciogZm9udF9mYW50YXN5OworICAgICAgICBjb25zdCBjaGFyKiBmb250X3Nlcmlm
OworICAgICAgICBjb25zdCBjaGFyKiBmb250X3NhbnNfc2VyaWY7CisgICAgICAgIEVpbmFfQm9v
bCBhdXRvX2xvYWRfaW1hZ2VzIDogMTsKKyAgICAgICAgRWluYV9Cb29sIGF1dG9fc2hyaW5rX2lt
YWdlcyA6IDE7CisgICAgICAgIEVpbmFfQm9vbCBlbmFibGVfYXV0b19yZXNpemVfd2luZG93IDog
MTsKKyAgICAgICAgRWluYV9Cb29sIGVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzIDogMTsKKyAgICAg
ICAgRWluYV9Cb29sIGVuYWJsZV9zY3JpcHRzIDogMTsKKyAgICAgICAgRWluYV9Cb29sIGVuYWJs
ZV9wbHVnaW5zIDogMTsKKyAgICAgICAgRWluYV9Cb29sIGVuYWJsZV9mcmFtZV9mbGF0dGVuaW5n
IDogMTsKKyAgICAgICAgRWluYV9Cb29sIGVuY29kaW5nX2RldGVjdG9yIDogMTsKKyAgICAgICAg
RWluYV9Cb29sIHNjcmlwdHNfd2luZG93X29wZW4gOiAxOworICAgICAgICBFaW5hX0Jvb2wgc2Ny
aXB0c19jYW5fY2xvc2Vfd2luZG93cyA6IDE7CisgICAgICAgIEVpbmFfQm9vbCByZXNpemFibGVf
dGV4dGFyZWFzIDogMTsKKyAgICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJvd3NpbmcgOiAxOwor
ICAgICAgICBFaW5hX0Jvb2wgY2FyZXRfYnJvd3NpbmcgOiAxOworICAgICAgICBFaW5hX0Jvb2wg
c3BhdGlhbF9uYXZpZ2F0aW9uIDogMTsKKyAgICAgICAgRWluYV9Cb29sIGxvY2FsX3N0b3JhZ2Ug
OiAxOworICAgICAgICBFaW5hX0Jvb2wgb2ZmbGluZV9hcHBfY2FjaGUgOiAxOworICAgICAgICBF
aW5hX0Jvb2wgcGFnZV9jYWNoZSA6IDE7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBm
bG9hdCBtaW5fc2NhbGU7CiAgICAgICAgICAgICBmbG9hdCBtYXhfc2NhbGU7Ci0gICAgICAgICAg
ICBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZToxOworICAgICAgICAgICAgRWluYV9Cb29sIHVzZXJf
c2NhbGFibGUgOiAxOwogICAgICAgICB9IHpvb21fcmFuZ2U7CiAgICAgICAgIGZsb2F0IGRldmlj
ZV9waXhlbF9yYXRpbzsKICAgICAgICAgZG91YmxlIGRvbV90aW1lcl9pbnRlcnZhbDsKQEAgLTE3
Miw3ICsxNzIsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICBFdmFzX0Nvb3JkIHgsIHk7CiAgICAgICAgIH0gY2VudGVyOwot
ICAgICAgICBFY29yZV9BbmltYXRvciAqYW5pbWF0b3I7CisgICAgICAgIEVjb3JlX0FuaW1hdG9y
KiBhbmltYXRvcjsKICAgICB9IGFuaW1hdGVkX3pvb207CiB9OwogCkBAIC0xODEsMzMgKzE4MSwz
MyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAjZWxzZQogI2RlZmluZSBFV0tf
VklFV19UWVBFX0NIRUNLKG8sIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjb25zdCBjaGFyICpfdG1wX290eXBlID0g
ZXZhc19vYmplY3RfdHlwZV9nZXQobyk7ICAgICAgICAgICAgICAgXAotICAgICAgICBjb25zdCBF
dmFzX1NtYXJ0ICpfdG1wX3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAgICAg
XAorICAgICAgICBjb25zdCBjaGFyKiBfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlwZV9nZXQo
byk7ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFzX1NtYXJ0KiBfdG1wX3MgPSBl
dmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAgICAgXAogICAgICAgICBpZiAoRUlOQV9V
TkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBzbWFy
dCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICBfdG1w
X290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MgKl90bXBfc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChf
dG1wX3MpOyBcCisgICAgICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIF90bXBfc2MgPSBldmFz
X3NtYXJ0X2NsYXNzX2dldChfdG1wX3MpOyBcCiAgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFf
dG1wX3NjKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAg
ICBFSU5BX0xPR19DUklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICAgICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEi
LCBvLCAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBf
dG1wX290eXBlIDogIihudWxsKSIpOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKEVJTkFf
VU5MSUtFTFkoX3RtcF9zYy0+ZGF0YSAhPSBFV0tfVklFV19UWVBFX1NUUikpIHsgICAgICAgIFwK
ICAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAoIiVwICglcykgaXMgbm90IG9mIGFu
IGV3a192aWV3IChuZWVkICVwLCBnb3QgJXApISIsICAgIFwKLSAgICAgICAgICAgICAgICAgbywg
X3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIiwgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgICAgICAgICAgRVdLX1ZJRVdfVFlQRV9TVFIsIF90bXBfc2MtPmRhdGEpOyAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBvLCBfdG1wX290eXBlID8gX3RtcF9vdHlw
ZSA6ICIobnVsbCkiLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIEVXS19WSUVX
X1RZUEVfU1RSLCBfdG1wX3NjLT5kYXRhKTsgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
ICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKICNlbmRpZgogCiAj
ZGVmaW5lIEVXS19WSUVXX1NEX0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfVmlld19TbWFydF9E
YXRhICopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhICpwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9n
ZXQobykKIAogI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwgLi4uKSAg
ICAgICAgICBcCiAgICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAg
ICAgICAgICAgIFwKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVf
RGF0YSB7CiAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2No
YW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfY2hhbmdlZChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBpZiAoc2QtPmNoYW5n
ZWQuYW55KQogICAgICAgICByZXR1cm47CkBAIC0yMzcsMjEgKzIzNywyMSBAQCBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICBl
dmFzX29iamVjdF9zbWFydF9jaGFuZ2VkKHNkLT5zZWxmKTsKIH0KIAotc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwg
c2l6ZV90IHNpemUpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19yZXBhaW50c19yZXNpemUo
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICB2b2lkICp0
bXAgPSByZWFsbG9jKHByaXYtPnJlcGFpbnRzLmFycmF5LCBzaXplICogc2l6ZW9mKEVpbmFfUmVj
dGFuZ2xlKSk7CisgICAgdm9pZCogdG1wID0gcmVhbGxvYyhwcml2LT5yZXBhaW50cy5hcnJheSwg
c2l6ZSAqIHNpemVvZihFaW5hX1JlY3RhbmdsZSkpOwogICAgIGlmICghdG1wKSB7CiAgICAgICAg
IENSSVRJQ0FMKCJjb3VsZCBub3QgcmVhbGxvYyByZXBhaW50cyBhcnJheSB0byAlenUgZWxlbWVu
dHMuIiwgc2l6ZSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KICAgICBwcml2
LT5yZXBhaW50cy5hbGxvY2F0ZWQgPSBzaXplOwotICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0g
KEVpbmFfUmVjdGFuZ2xlICopdG1wOworICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0gKEVpbmFf
UmVjdGFuZ2xlKil0bXA7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIHZvaWQg
X2V3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19D
b29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQorc3RhdGlj
IHZvaWQgX2V3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQog
ewotICAgIEVpbmFfUmVjdGFuZ2xlICpyOworICAgIEVpbmFfUmVjdGFuZ2xlKiByOwogCiAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICI+Pj4gcmVwYWludCByZXF1ZXN0ZWQ6ICVkLCVkKyVkeCVkXG4i
LCB4LCB5LCB3LCBoKTsKICAgICBpZiAocHJpdi0+cmVwYWludHMuYWxsb2NhdGVkID09IHByaXYt
PnJlcGFpbnRzLmNvdW50KSB7CkBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCB4
LCBFdmEKICAgICBEQkcoImFkZCByZXBhaW50ICVkLCAlZCslZHglZCIsIHgsIHksIHcsIGgpOwog
fQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2goRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhICpwcml2KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBwcml2LT5yZXBhaW50cy5jb3VudCA9IDA7
CiAgICAgaWYgKHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA8PSBFV0tfVklFV19SRVBBSU5UU19T
SVpFX01BWF9GUkVFKQpAQCAtMjgzLDIyICsyODMsMjIgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3
X3JlcGFpbnRzX2ZsdXNoKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKICAgICBfZXdrX3Zp
ZXdfcmVwYWludHNfcmVzaXplKHByaXYsIEVXS19WSUVXX1JFUEFJTlRTX1NJWkVfTUFYX0ZSRUUp
OwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zY3JvbGxzX3Jlc2l6ZShFd2tfVmll
d19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVfdCBzaXplKQorc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc2Nyb2xsc19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3Qg
c2l6ZSkKIHsKLSAgICB2b2lkICp0bXAgPSByZWFsbG9jKHByaXYtPnNjcm9sbHMuYXJyYXksIHNp
emUgKiBzaXplb2YoRXdrX1Njcm9sbF9SZXF1ZXN0KSk7CisgICAgdm9pZCogdG1wID0gcmVhbGxv
Yyhwcml2LT5zY3JvbGxzLmFycmF5LCBzaXplICogc2l6ZW9mKEV3a19TY3JvbGxfUmVxdWVzdCkp
OwogICAgIGlmICghdG1wKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgcmVhbGxvYyBz
Y3JvbGxzIGFycmF5IHRvICV6dSBlbGVtZW50cy4iLCBzaXplKTsKICAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CiAgICAgfQogICAgIHByaXYtPnNjcm9sbHMuYWxsb2NhdGVkID0gc2l6ZTsKLSAg
ICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxfUmVxdWVzdCAqKXRtcDsKKyAgICBw
cml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxfUmVxdWVzdCopdG1wOwogICAgIHJldHVy
biBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRkKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBFaW5h
X0Jvb2wgbWFpbl9zY3JvbGwpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsX2FkZChFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgRWlu
YV9Cb29sIG1haW5fc2Nyb2xsKQogewotICAgIEV3a19TY3JvbGxfUmVxdWVzdCAqcjsKLSAgICBF
d2tfU2Nyb2xsX1JlcXVlc3QgKnJfZW5kOworICAgIEV3a19TY3JvbGxfUmVxdWVzdCogcjsKKyAg
ICBFd2tfU2Nyb2xsX1JlcXVlc3QqIHJfZW5kOwogICAgIEV2YXNfQ29vcmQgeDIgPSB4ICsgdywg
eTIgPSB5ICsgaDsKIAogICAgIHIgPSBwcml2LT5zY3JvbGxzLmFycmF5OwpAQCAtMzQ1LDggKzM0
NSw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRkKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSAqcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhCiAgICAgci0+bWFpbl9zY3JvbGwgPSBtYWlu
X3Njcm9sbDsKICAgICBEQkcoImFkZCBzY3JvbGwgaW4gcmVnaW9uOiAlZCwgJWQrJWR4JWQgJSsw
M2QsICUrMDNkIiwgeCwgeSwgdywgaCwgZHgsIGR5KTsKIAotICAgIEVpbmFfUmVjdGFuZ2xlICpw
cjsKLSAgICBFaW5hX1JlY3RhbmdsZSAqcHJfZW5kOworICAgIEVpbmFfUmVjdGFuZ2xlKiBwcjsK
KyAgICBFaW5hX1JlY3RhbmdsZSogcHJfZW5kOwogICAgIHNpemVfdCBjb3VudDsKICAgICBwciA9
IHByaXYtPnJlcGFpbnRzLmFycmF5OwogICAgIGNvdW50ID0gcHJpdi0+cmVwYWludHMuY291bnQ7
CkBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbF9hZGQoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIGR4LCBFdmEKICAgICB9CiB9CiAK
LXN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSAqcHJpdikKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBwcml2LT5zY3JvbGxzLmNvdW50ID0gMDsKICAgICBp
ZiAocHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPD0gRVdLX1ZJRVdfU0NST0xMU19TSVpFX01BWF9G
UkVFKQpAQCAtMzY2LDEwICszNjYsMTAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbHNf
Zmx1c2goRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQogfQogCiAvLyBEZWZhdWx0IEV2ZW50
IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4oRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYp
OwotICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciAqZmMgPSBwcml2LT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKTsKKyAgICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXIqIGZjID0gcHJpdi0+cGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCk7CiAgICAgREJHKCJvPSVwLCBmYz0lcCIsIHNkLT5zZWxmLCBm
Yyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGZjLCBFSU5BX0ZBTFNFKTsK
IApAQCAtMzc4LDEwICszNzgsMTAgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNf
b3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNk
LCBwcml2KTsKLSAgICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXIgKmZjID0gcHJpdi0+cGFnZS0+
Zm9jdXNDb250cm9sbGVyKCk7CisgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9IHBy
aXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpOwogICAgIERCRygibz0lcCwgZmM9JXAiLCBzZC0+
c2VsZiwgZmMpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmYywgRUlOQV9G
QUxTRSk7CiAKQEAgLTM5MCwyOSArMzkwLDI5IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVl
bChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAq
ZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmll
d19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCiB7CiAg
ICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX3doZWVsKHNkLT5tYWluX2ZyYW1lLCBldik7
CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpCitzdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQogewogICAgIHJldHVybiBl
d2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKHNkLT5tYWluX2ZyYW1lLCBldik7CiB9CiAKLXN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwICpldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX1VwKiBldikKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfbW91c2Vf
dXAoc2QtPm1haW5fZnJhbWUsIGV2KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfbW91c2VfbW92ZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Nb3ZlICpldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNl
X21vdmUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92
ZSogZXYpCiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUoc2QtPm1haW5f
ZnJhbWUsIGV2KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rv
d24oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2
KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQogewotICAgIEV2YXNf
T2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KHNkLT5zZWxmKTsKKyAg
ICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChzZC0+c2Vs
Zik7CiAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBmcmFtZSA9IHNkLT5tYWluX2ZyYW1lOwpA
QCAtNDIwLDkgKzQyMCw5IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV9k
b3duKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2CiAgICAgcmV0dXJuIGV3
a19mcmFtZV9mZWVkX2tleV9kb3duKGZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZh
c19FdmVudF9LZXlfVXAgKmV2KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXYp
CiB7Ci0gICAgRXZhc19PYmplY3QgKmZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQo
c2QtPnNlbGYpOworICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3Vz
ZWRfZ2V0KHNkLT5zZWxmKTsKIAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIGZyYW1lID0gc2Qt
Pm1haW5fZnJhbWU7CkBAIC00MzAsMTE3ICs0MzAsMTE3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19F
dmVuCiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX2tleV91cChmcmFtZSwgZXYpOwogfQogCi1z
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVfbWVzc2FnZShFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IGNoYXIgKnNvdXJjZUlEKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2Fk
ZF9jb25zb2xlX21lc3NhZ2UoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3VyY2VJRCkKIHsK
ICAgICBJTkYoImNvbnNvbGUgbWVzc2FnZTogJXMgQCVkOiAlc1xuIiwgc291cmNlSUQsIGxpbmVO
dW1iZXIsIG1lc3NhZ2UpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcnVuX2ph
dmFzY3JpcHRfYWxlcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfT2JqZWN0ICpmcmFt
ZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9ydW5f
amF2YXNjcmlwdF9hbGVydChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19PYmplY3QqIGZy
YW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIElORigiamF2YXNjcmlwdCBhbGVydDog
JXNcbiIsIG1lc3NhZ2UpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9y
dW5famF2YXNjcmlwdF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX09iamVj
dCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBF
dmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgSU5GKCJqYXZh
c2NyaXB0IGNvbmZpcm06ICVzIiwgbWVzc2FnZSk7CiAgICAgSU5GKCJqYXZhc2NyaXB0IGNvbmZp
cm0gKEhBUkQgQ09ERUQpPyBZRVMiKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQo
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFy
dF9zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7
CiAgICAgSU5GKCJzaG91bGQgaW50ZXJydXB0IGphdmFzY3JpcHQ/XG4iCi0gICAgICAgICAgICAi
XHQoSEFSRCBDT0RFRCkgTk8iKTsKKyAgICAgICAgIlx0KEhBUkQgQ09ERUQpIE5PIik7CiAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19PYmpl
Y3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlLCBjb25zdCBjaGFyICpkZWZhdWx0VmFsdWUs
IGNoYXIgKip2YWx1ZSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZh
c2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19PYmplY3QqIGZyYW1l
LCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2
YWx1ZSkKIHsKICAgICAqdmFsdWUgPSBzdHJkdXAoInRlc3QiKTsKICAgICBFaW5hX0Jvb2wgcmV0
ID0gRUlOQV9UUlVFOwogICAgIElORigiamF2YXNjcmlwdCBwcm9tcHQ6XG4iCi0gICAgICAgICAg
ICAiXHQgICAgICBtZXNzYWdlOiAlc1xuIgotICAgICAgICAgICAgIlx0ZGVmYXVsdCB2YWx1ZTog
JXNcbiIKLSAgICAgICAgICAgICJcdGdpdmluZyBhbnN3ZXI6ICVzXG4iCi0gICAgICAgICAgICAi
XHQgICAgICAgYnV0dG9uOiAlcyIsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgKnZhbHVlLCByZXQ/
Im9rIjoiY2FuY2VsIik7CisgICAgICAgICJcdCAgICAgIG1lc3NhZ2U6ICVzXG4iCisgICAgICAg
ICJcdGRlZmF1bHQgdmFsdWU6ICVzXG4iCisgICAgICAgICJcdGdpdmluZyBhbnN3ZXI6ICVzXG4i
CisgICAgICAgICJcdCAgICAgICBidXR0b246ICVzIiwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCAq
dmFsdWUsIHJldCA/ICJvayIgOiAiY2FuY2VsIik7CiAKICAgICByZXR1cm4gcmV0OwogfQogCiAv
LyBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkICpk
YXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVj
dCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9
IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkt
PmZvY3VzX2luKTsKICAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3Qg
Km8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0
KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQog
ewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilk
YXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEq
KWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfb3V0KTsKICAgICBzZC0+YXBp
LT5mb2N1c19vdXQoc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hl
ZWwodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8p
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwodm9pZCogZGF0YSwgRXZhcyog
ZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9N
b3VzZV9XaGVlbCAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqKWV2ZW50X2luZm87Ci0g
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7
CisgICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9XaGVl
bCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkp
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3doZWVsKTsK
ICAgICBzZC0+YXBpLT5tb3VzZV93aGVlbChzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fbW91c2VfZG93bih2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywg
dm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKHZv
aWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewot
ICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duICop
ZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFy
dF9EYXRhICopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gKEV2YXNfRXZl
bnRfTW91c2VfRG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9
IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1v
dXNlX2Rvd24pOwogICAgIHNkLT5hcGktPm1vdXNlX2Rvd24oc2QsIGV2KTsKIH0KIAotc3RhdGlj
IHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2Jq
ZWN0ICpvLCB2b2lkICpldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNl
X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZv
KQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2ID0gKEV2YXNfRXZlbnRfTW91c2VfVXAg
KilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ID0gKEV2YXNfRXZl
bnRfTW91c2VfVXAqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAo
RXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3Vz
ZV91cCk7CiAgICAgc2QtPmFwaS0+bW91c2VfdXAoc2QsIGV2KTsKIH0KIAotc3RhdGljIHZvaWQg
X2V3a192aWV3X29uX21vdXNlX21vdmUodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3Qg
Km8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92
ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykK
IHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2ID0gKEV2YXNfRXZlbnRfTW91c2VfTW92
ZSAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqKWRhdGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldiA9IChFdmFz
X0V2ZW50X01vdXNlX01vdmUqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
LT5tb3VzZV9tb3ZlKTsKICAgICBzZC0+YXBpLT5tb3VzZV9tb3ZlKHNkLCBldik7CiB9CiAKLXN0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfZG93bih2b2lkICpkYXRhLCBFdmFzICplLCBFdmFz
X09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9r
ZXlfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRf
aW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X0tleV9Eb3duICpldiA9IChFdmFzX0V2ZW50X0tleV9E
b3duICopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9Eb3duKiBldiA9IChFdmFz
X0V2ZW50X0tleV9Eb3duKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
ID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+
a2V5X2Rvd24pOwogICAgIHNkLT5hcGktPmtleV9kb3duKHNkLCBldik7CiB9CiAKLXN0YXRpYyB2
b2lkIF9ld2tfdmlld19vbl9rZXlfdXAodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3Qg
Km8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X3VwKHZv
aWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewot
ICAgIEV2YXNfRXZlbnRfS2V5X1VwICpldiA9IChFdmFzX0V2ZW50X0tleV9VcCAqKWV2ZW50X2lu
Zm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
KWRhdGE7CisgICAgRXZhc19FdmVudF9LZXlfVXAqIGV2ID0gKEV2YXNfRXZlbnRfS2V5X1VwKill
dmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5X3VwKTsKICAgICBzZC0+
YXBpLT5rZXlfdXAoc2QsIGV2KTsKIH0KIAotc3RhdGljIFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCAqb3duZXIpCitzdGF0aWMgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBfZXdr
X3ZpZXdfY29yZV9mcmFtZV9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lcikK
IHsKLSAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAqZmxjID0gbmV3IFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsKHNkLT5zZWxmKTsKKyAgICBXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbCogZmxjID0gbmV3IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKHNkLT5z
ZWxmKTsKICAgICBpZiAoIWZsYykgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0
ZSBmcmFtZSBsb2FkZXIgY2xpZW50LiIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTU1MiwxMCAr
NTUyLDEwIEBAIHN0YXRpYyBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IF9ld2tfdmll
d19jb3JlX2ZyYW1lX25ldyhFd2tfVmlld19TbWFydF9ECiAKIHN0YXRpYyBFdmFzX1NtYXJ0X0Ns
YXNzIF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAotc3RhdGljIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSAqX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkKQorc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAq
cHJpdiA9Ci0gICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEgKiljYWxsb2MoMSwgc2l6ZW9m
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJp
diA9CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKSk7CiAgICAgQXRvbWljU3RyaW5nIHM7CiAgICAgV2ViQ29yZTo6
S1VSTCB1cmw7CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgcHJp
di0+c2V0dGluZ3MudXNlcl9zdHlsZXNoZWV0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQodXJsLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdfZGVm
YXVsdCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkCi0gICAgICAgIChwcml2LT5wYWdlX3NldHRpbmdz
LT5kZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaXYtPnBhZ2Vfc2V0dGluZ3MtPmRlZmF1
bHRUZXh0RW5jb2RpbmdOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcHJpdi0+c2V0dGluZ3Mu
ZW5jb2RpbmdfY3VzdG9tID0gMDsKIAogICAgIHMgPSBwcml2LT5wYWdlX3NldHRpbmdzLT5sb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGgoKTsKQEAgLTY3MSw3ICs2NzEsNyBAQCBzdGF0aWMgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QpCiAgICAgICAgIGdvdG8gZXJyb3JfbWFpbl9mcmFtZTsKICAgICB9CiAKLSAgICBwcml2LT5o
aXN0b3J5ID0gZXdrX2hpc3RvcnlfbmV3KHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJk
TGlzdEltcGwgKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpKTsKKyAgICBwcml2LT5o
aXN0b3J5ID0gZXdrX2hpc3RvcnlfbmV3KHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJk
TGlzdEltcGwqPihwcml2LT5wYWdlLT5iYWNrRm9yd2FyZExpc3QoKSkpOwogICAgIGlmICghcHJp
di0+aGlzdG9yeSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBoaXN0b3J5
IGluc3RhbmNlIGZvciB2aWV3LiIpOwogICAgICAgICBnb3RvIGVycm9yX2hpc3Rvcnk7CkBAIC02
ODksNyArNjg5LDcgQEAgZXJyb3JfcGFnZToKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZv
aWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiB7
CiAgICAgaWYgKCFwcml2KQogICAgICAgICByZXR1cm47CkBAIC03MjAsMTYgKzcyMCwxNiBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2
KQogICAgIGZyZWUocHJpdik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQo
RXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2Jq
ZWN0KiBvKQogewotICAgIGNvbnN0IEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19vYmplY3Rfc21h
cnRfc21hcnRfZ2V0KG8pOwotICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MgKnNjID0gZXZhc19z
bWFydF9jbGFzc19nZXQoc21hcnQpOwotICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzICph
cGkgPSAoY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKilzYzsKKyAgICBjb25zdCBFdmFzX1Nt
YXJ0KiBzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsKKyAgICBjb25zdCBF
dmFzX1NtYXJ0X0NsYXNzKiBzYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KHNtYXJ0KTsKKyAgICBj
b25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gKGNvbnN0IEV3a19WaWV3X1NtYXJ0X0Ns
YXNzKilzYzsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcGktPmJhY2tpbmdfc3Rv
cmVfYWRkKTsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogCiAgICAgaWYgKCFzZCkgewot
ICAgICAgICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopY2FsbG9jKDEsIHNpemVvZihFd2tf
Vmlld19TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWNh
bGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOwogICAgICAgICBpZiAoIXNkKSB7
CiAgICAgICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3X1NtYXJ0
X0RhdGEiKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgwMCwxNyArODAwLDE3IEBAIHN0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiAjdW5kZWYgQ09OTkVD
VAogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0ICpvKQor
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykKIHsKICAgICBF
V0tfVklFV19TRF9HRVQobywgc2QpOwotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiA9
IHNkID8gc2QtPl9wcml2IDogMDsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBz
ZCA/IHNkLT5fcHJpdiA6IDA7CiAKICAgICBld2tfdmlld19zdG9wKG8pOwogICAgIF9wYXJlbnRf
c2MuZGVsKG8pOwogICAgIF9ld2tfdmlld19wcml2X2RlbChwcml2KTsKIH0KIAotc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVzaXplKEV2YXNfT2Jq
ZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkKTsKIApAQCAtODIxLDE0ICs4MjEsMTQgQEAgc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFz
X0Nvb3JkIGgpCiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCi1zdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBF
dmFzX0Nvb3JkIHkpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVj
dCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCk7CiAgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX1RSVUU7
CiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a192
aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9H
RVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTg1MCw3ICs4
NTAsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0
ICpvKQogICAgICAgICBwcml2LT5zY3JvbGxzLmNvdW50LCBwcml2LT5yZXBhaW50cy5jb3VudCk7
CiAKICAgICBpZiAoc2QtPmNoYW5nZWQuc2l6ZSAmJiAoKHcgIT0gc2QtPnZpZXcudykgfHwgKGgg
IT0gc2QtPnZpZXcuaCkpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHBy
aXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3
ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgICAgICBpZiAodmlldykgewogICAgICAg
ICAgICAgdmlldy0+cmVzaXplKHcsIGgpOwogICAgICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQo
KTsKQEAgLTg4OCwxMyArODg4LDEzIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxj
dWxhdGUoRXZhc19PYmplY3QgKm8pCiAgICAgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKHByaXYp
OwogCiAgICAgaWYgKHNkLT5jaGFuZ2VkLmZyYW1lX3JlY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6
RnJhbWVWaWV3ICp2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOworICAgICAgICBXZWJD
b3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgICAg
IHZpZXctPmZyYW1lUmVjdHNDaGFuZ2VkKCk7IC8qIGZvcmNlIHRyZWUgdG8gZ2V0IHBvc2l0aW9u
IGZyb20gcm9vdCAqLwogICAgICAgICBzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlOQV9GQUxT
RTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9zaG93KEV2YXNfT2Jq
ZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Nob3coRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAKQEAgLTkwMyw3ICs5
MDMsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09iamVjdCAqbykK
ICAgICBldmFzX29iamVjdF9zaG93KHNkLT5iYWNraW5nX3N0b3JlKTsKIH0KIAotc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfaGlkZShFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkKTsKIApAQCAtOTExLDEyICs5MTEsMTIgQEAgc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QgKm8pCiAgICAgZXZhc19vYmplY3RfaGlkZShz
ZC0+YmFja2luZ19zdG9yZSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X2NvbnRlbnRzX3Jlc2l6ZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgaW50IHcsIGludCBoKQor
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkLCBpbnQgdywgaW50IGgpCiB7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kp
CitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsK
ICAgICBkb3VibGUgcHgsIHB5OwogICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKQEAgLTk0NCw0
MCArOTQ0LDQwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFCiAgICAgcmV0dXJuIHJldDsKIH0K
IAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkKQogewogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CiAg
ICAgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKHByaXYpOwogICAgIF9ld2tfdmlld19zY3JvbGxz
X2ZsdXNoKHByaXYpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVf
cmVuZGVyX3JlZ2lvbihFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQorc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWdpb24oRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2
YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5n
aW5lLiBzZD0lcCBhcmVhPSVkLCVkKyVkeCVkLCB6b29tPSVmIiwKICAgICAgICAgc2QsIHgsIHks
IHcsIGgsIHpvb20pOwogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1zdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pCitzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19T
bWFydF9EYXRhKiBzZCwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pCiB7CiAgICAgV1JOKCJu
b3Qgc3VwcG9ydGVkIGJ5IGVuZ2luZS4gc2Q9JXAsIG49JXUgem9vbT0lZiIsCiAgICAgICAgIHNk
LCBuLCB6b29tKTsKICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQor
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNkPSVw
Iiwgc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0
b3AoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9h
bmltYXRlZF9tYXJrX3N0b3AoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgc2QtPmFu
aW1hdGVkX3pvb20uem9vbS5zdGFydCA9IDAuMDsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29t
LmVuZCA9IDAuMDsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPSAwLjA7CiB9
CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChFd2tfVmlld19T
bWFydF9EYXRhICpzZCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2Zpbmlz
aChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHJpdik7CiAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0
b3IpOwpAQCAtOTg2LDcgKzk4Niw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1h
dGVkX2ZpbmlzaChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKHNkLT5zZWxmLCAiem9vbSxhbmltYXRlZCxlbmQiLCAwKTsKIH0KIAot
c3RhdGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2KQorc3RhdGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1
cnJlbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogewogICAgIGRvdWJsZSBub3cgPSBl
Y29yZV9sb29wX3RpbWVfZ2V0KCk7CiAgICAgZG91YmxlIGRlbHRhID0gbm93IC0gcHJpdi0+YW5p
bWF0ZWRfem9vbS50aW1lLnN0YXJ0OwpAQCAtMTAwMiw5ICsxMDAyLDkgQEAgc3RhdGljIGZsb2F0
IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpw
cml2KQogICAgICAgICAgICAgKyBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQpOwogfQog
Ci1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQgKmRhdGEp
CitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQqIGRhdGEp
CiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
KWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0
YSopZGF0YTsKICAgICBFdmFzX0Nvb3JkIGN4LCBjeTsKICAgICBFV0tfVklFV19QUklWX0dFVChz
ZCwgcHJpdik7CiAgICAgZG91YmxlIG5vdyA9IGVjb3JlX2xvb3BfdGltZV9nZXQoKTsKQEAgLTEw
MzEsMTYgKzEwMzEsMTYgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRv
cl9jYih2b2lkICpkYXRhKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFydChFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFydChFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYp
OwogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQogICAgICAgICByZXR1cm47
CiAgICAgcHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvciA9IGVjb3JlX2FuaW1hdG9yX2FkZAot
ICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2IsIHNkKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYiwgc2Qp
OwogfQogCi1zdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRXZhc19PYmplY3QgKm8pCitzdGF0aWMgV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2Nv
bXB1dGUoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNk
KTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0xMDYwLDI2ICsxMDYwLDI2
IEBAIHN0YXRpYyBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgX2V3a192aWV3X3ZpZXdwb3J0
X2F0dHJpYnV0ZXNfY29tcHV0ZShjb25zdCBFCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9CiAK
LXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2Rpc2FibGVfcmVuZGVyKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZGlzYWJs
ZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgV1JOKCJub3Qgc3VwcG9y
dGVkIGJ5IGVuZ2luZS4gc2Q9JXAiLCBzZCk7CiAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiB9CiAK
LXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2VuYWJsZV9yZW5kZXIoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9lbmFibGVf
cmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIFdSTigibm90IHN1cHBvcnRl
ZCBieSBlbmdpbmUuIHNkPSVwIiwgc2QpOwogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFw
aSkKK0VpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFz
cyogYXBpKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcGksIEVJTkFf
RkFMU0UpOwogCiAgICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tfVklFV19TTUFSVF9DTEFTU19W
RVJTSU9OKSB7CiAgICAgICAgIEVJTkFfTE9HX0NSSVQKICAgICAgICAgICAgICgiRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgJXAgaXMgdmVyc2lvbiAlbHUgd2hpbGUgJWx1IHdhcyBleHBlY3RlZC4iLAot
ICAgICAgICAgICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OKTsKKyAgICAgICAgICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0xMTIz
LDEyICsxMTIzLDEyIEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmll
d19TbWFydF9DbGFzcyAqYXBpKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXZvaWQgZXdr
X3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHcs
IEV2YXNfQ29vcmQgaCkKK3ZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNf
T2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYpOwogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3ID0gcHJpdi0+bWFpbl9m
cmFtZS0+dmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5f
ZnJhbWUtPnZpZXcoKTsKICAgICBpZiAodyA8PSAwICYmIGggPD0gMCkgewogICAgICAgICBpZiAo
IXZpZXctPnVzZUZpeGVkTGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTQ3LDcg
KzExNDcsNyBAQCB2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldChFdmFzX09iamVj
dCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiAgICAgdmlldy0+Zm9yY2VMYXlvdXQo
KTsKIH0KIAotdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8sIEV2YXNfQ29vcmQgKncsIEV2YXNfQ29vcmQgKmgpCit2b2lkIGV3a192aWV3X2Zp
eGVkX2xheW91dF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbywgRXZhc19Db29yZCogdywg
RXZhc19Db29yZCogaCkKIHsKICAgICBpZiAodykKICAgICAgICAgKncgPSAwOwpAQCAtMTE2NSwx
NCArMTE2NSwxNCBAQCB2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldChjb25zdCBF
dmFzX09iamVjdCAqbywgRXZhc19Db29yZCAqdywgRXZhc19DbwogICAgIH0KIH0KIAotdm9pZCBl
d2tfdmlld190aGVtZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgpCit2b2lk
IGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogcGF0aCkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwogICAgIGlmICghZWluYV9zdHJpbmdzaGFyZV9yZXBs
YWNlKCZwcml2LT5zZXR0aW5ncy50aGVtZSwgcGF0aCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAg
ICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAg
ICAgaWYgKHZpZXcpIHsKICAgICAgICAgdmlldy0+c2V0RWRqZVRoZW1lKFdURjo6U3RyaW5nKHBh
dGgpKTsKICAgICAgICAgcHJpdi0+cGFnZS0+dGhlbWUoKS0+dGhlbWVDaGFuZ2VkKCk7CkBAIC0x
MTgwLDI1ICsxMTgwLDI1IEBAIHZvaWQgZXdrX3ZpZXdfdGhlbWVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICpwYXRoKQogCiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dldChj
b25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwog
ICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy50aGVtZTsKIH0KIAotRXZhc19PYmplY3QqIGV3a192
aWV3X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRXZhc19PYmplY3QqIGV3
a192aWV3X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIHJldHVybiBzZC0+bWFpbl9mcmFt
ZTsKIH0KIAotRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAK
LSAgICBXZWJDb3JlOjpGcmFtZSAqY29yZSA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkRnJhbWUoKTsKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZSA9IHByaXYtPnBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKTsKICAgICBpZiAoIWNvcmUpCiAgICAg
ICAgIHJldHVybiAwOwogCkBAIC0xMjA4LDMxICsxMjA4LDMxIEBAIEV2YXNfT2JqZWN0KiBld2tf
dmlld19mcmFtZV9mb2N1c2VkX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4g
Y2xpZW50LT53ZWJGcmFtZSgpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3NldChFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqdXJpKQorRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQo
RXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHVyaSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3VyaV9z
ZXQoc2QtPm1haW5fZnJhbWUsIHVyaSk7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3VyaV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBld2tfdmlld191cmlfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIDApOwogICAgIHJldHVybiBld2tfZnJhbWVfdXJpX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9
CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykK
K2NvbnN0IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICByZXR1cm4gZXdr
X2ZyYW1lX3RpdGxlX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19lZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
ZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfZWRp
dGFibGVfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotdm9pZCBld2tfdmlld19iZ19jb2xvcl9z
ZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQordm9pZCBld2tf
dmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QqIG8sIGludCByLCBpbnQgZywgaW50IGIsIGlu
dCBhKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwpAQCAtMTI0OCwxMCArMTI0OCwxMCBAQCB2
b2lkIGV3a192aWV3X2JnX2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgaW50IHIsIGludCBnLCBp
bnQgYiwgaW50IGEpCiAKICNkZWZpbmUgQ0hFQ0tfUFJFTVVMX0NPTE9SKGMsIGEpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoYyA8IDApIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgV1JOKCJDb2xvciBjb21wb25lbnQgIiNjIiBpcyBsZXNzIHRoYW4gemVybyAoJWQpLiIsIGMp
OyAgICAgICAgIFwKKyAgICAgICAgV1JOKCJDb2xvciBjb21wb25lbnQgIiAjYyAiIGlzIGxlc3Mg
dGhhbiB6ZXJvICglZCkuIiwgYyk7ICAgICAgICAgXAogICAgICAgICBjID0gMDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0g
ZWxzZSBpZiAoYyA+IGEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAiI2MiIGlzIGdyZWF0ZXIg
dGhhbiBhbHBoYSAoJWQsIGFscGhhPSVkKS4iLCBcCisgICAgICAgIFdSTigiQ29sb3IgY29tcG9u
ZW50ICIgI2MgIiBpcyBncmVhdGVyIHRoYW4gYWxwaGEgKCVkLCBhbHBoYT0lZCkuIiwgXAogICAg
ICAgICAgICAgYywgYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgICAgICBjID0gYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KQEAgLTEyNjcsNyArMTI2Nyw3
IEBAIHZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgciwgaW50
IGcsIGludCBiLCBpbnQgYSkKIAogICAgIHNkLT5hcGktPmJnX2NvbG9yX3NldChzZCwgciwgZywg
YiwgYSk7CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBzZC0+X3ByaXYtPm1haW5f
ZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzZC0+X3ByaXYt
Pm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAodmlldykgewogICAgICAgICBXZWJDb3JlOjpD
b2xvciBjb2xvcjsKIApAQCAtMTI4Miw3ICsxMjgyLDcgQEAgdm9pZCBld2tfdmlld19iZ19jb2xv
cl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQogICAgIH0K
IH0KIAotdm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGlu
dCAqciwgaW50ICpnLCBpbnQgKmIsIGludCAqYSkKK3ZvaWQgZXdrX3ZpZXdfYmdfY29sb3JfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHIsIGludCogZywgaW50KiBiLCBpbnQqIGEpCiB7
CiAgICAgaWYgKHIpCiAgICAgICAgICpyID0gMDsKQEAgLTEzMDMsNyArMTMwMyw3IEBAIHZvaWQg
ZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKnIsIGludCAq
ZywgaW50ICpiLCBpbnQgKmEpCiAgICAgICAgICphID0gc2QtPmJnX2NvbG9yLmE7CiB9CiAKLUVp
bmFfQm9vbCBld2tfdmlld190ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3Qg
Y2hhciAqc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJk
LCBFaW5hX0Jvb2wgd3JhcCkKK0VpbmFfQm9vbCBld2tfdmlld190ZXh0X3NlYXJjaChjb25zdCBF
dmFzX09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRp
dmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTMzNSw3ICsxMzM1LDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25z
dCBjaGFyICpzdHJpbmcsIEVpbmFfQm8KICAqCiAgKiBAcmV0dXJuIG51bWJlciBvZiBtYXRjaGVz
LgogICovCi11bnNpZ25lZCBpbnQgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5h
X0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQgbGltaXQpCit1bnNpZ25lZCBpbnQgZXdrX3Zp
ZXdfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHN0cmluZywg
RWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBp
bnQgbGltaXQpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTEzNTAsNyAr
MTM1MCw3IEBAIHVuc2lnbmVkIGludCBld2tfdmlld190ZXh0X21hdGNoZXNfbWFyayhFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5hCiAgICAgcmV0dXJuIHByaXYtPnBhZ2Ut
Pm1hcmtBbGxNYXRjaGVzRm9yVGV4dChTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIHNlbnNpdGl2
ZSwgaGlnaGxpZ2h0LCBsaW1pdCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNo
ZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld190ZXh0X21h
dGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTM1OCwyNSArMTM1OCwyNSBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QgKm8pCiAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hl
c19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0KQorRWlu
YV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0KiBv
LCBFaW5hX0Jvb2wgaGlnaGxpZ2h0KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hp
Z2hsaWdodF9zZXQoc2QtPm1haW5fZnJhbWUsIGhpZ2hsaWdodCk7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCAqbykK
K0VpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFz
X09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0
KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2VkaXRhYmxlX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVkaXRhYmxlKQorRWluYV9Cb29sIGV3a192aWV3X2Vk
aXRhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVkaXRhYmxlKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBl
d2tfZnJhbWVfZWRpdGFibGVfc2V0KHNkLT5tYWluX2ZyYW1lLCBlZGl0YWJsZSk7CiB9CiAKLWNo
YXIgKmV3a192aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjaGFyKiBl
d2tfdmlld19zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0xMzg2LDEyICsxMzg2LDEyIEBAIGNoYXIgKmV3a192
aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHN0cmR1
cChzLmRhdGEoKSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X2VkaXRvcl9jb21t
YW5kKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY29uc3QgY2hhciAqY29tbWFuZCwgY29u
c3QgY2hhciAqdmFsdWUgPSAwKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfZWRpdG9yX2Nv
bW1hbmQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjb25zdCBjaGFyKiBjb21tYW5kLCBj
b25zdCBjaGFyKiB2YWx1ZSA9IDApCiB7CiAgICAgcmV0dXJuIHByaXYtPnBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoV1RGOjpT
dHJpbmc6OmZyb21VVEY4KGNvbW1hbmQpKS5leGVjdXRlKHZhbHVlKTsKIH0KIAotRWluYV9Cb29s
IGV3a192aWV3X2V4ZWN1dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3
a19FZGl0b3JfQ29tbWFuZCBjb21tYW5kLCBjb25zdCBjaGFyICp2YWx1ZSkKK0VpbmFfQm9vbCBl
d2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFd2tf
RWRpdG9yX0NvbW1hbmQgY29tbWFuZCwgY29uc3QgY2hhciogdmFsdWUpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE0MTgsNyArMTQxOCw3
IEBAIEVpbmFfQm9vbCBld2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBFd2tfRWRpdG9yX0NvbW1hCiAgICAgfQogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNf
RXZlbnRfTW91c2VfRG93biAqZXYpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2Zv
cndhcmRfZXZlbnQoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biog
ZXYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IEV2YXNfRXZlbnRfTQogICAgIEVpbmFfQm9vbCBtb3VzZV9wcmVzc19oYW5kbGVkID0gRUlO
QV9GQUxTRTsKIAogICAgIHByaXYtPnBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVh
ckNvbnRleHRNZW51KCk7Ci0gICAgV2ViQ29yZTo6RnJhbWUgKm1haW5fZnJhbWUgPSBwcml2LT5w
YWdlLT5tYWluRnJhbWUoKTsKKyAgICBXZWJDb3JlOjpGcmFtZSogbWFpbl9mcmFtZSA9IHByaXYt
PnBhZ2UtPm1haW5GcmFtZSgpOwogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFzX29iamVj
dF9nZW9tZXRyeV9nZXQoc2QtPnNlbGYsICZ4LCAmeSwgMCwgMCk7CiAKQEAgLTE0NTQsNzUgKzE0
NTQsNzUgQEAgRWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2
YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X00KICNlbmRpZgogfQogCi1kb3VibGUgZXdr
X3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitkb3VibGUgZXdr
X3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCAtMS4wKTsKICAgICByZXR1cm4gcHJpdi0+cGFnZS0+cHJv
Z3Jlc3MoKS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3N0
b3AoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
ICAgICByZXR1cm4gZXdrX2ZyYW1lX3N0b3Aoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3Jl
bG9hZChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3JlbG9hZChzZC0+bWFpbl9m
cmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19yZWxvYWRfZnVsbChFdmFzX09iamVjdCAq
bykKK0VpbmFfQm9vbCBld2tfdmlld19yZWxvYWRfZnVsbChFdmFzX09iamVjdCogbykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1
cm4gZXdrX2ZyYW1lX3JlbG9hZF9mdWxsKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9Cb29s
IGV3a192aWV3X2JhY2soRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFjayhF
dmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2JhY2soc2QtPm1haW5fZnJhbWUpOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9v
bCBld2tfdmlld19mb3J3YXJkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfZm9y
d2FyZChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZShF
dmFzX09iamVjdCAqbywgaW50IHN0ZXBzKQorRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRlKEV2
YXNfT2JqZWN0KiBvLCBpbnQgc3RlcHMpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZShzZC0+
bWFpbl9mcmFtZSwgc3RlcHMpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfYmFja19wb3NzaWJs
ZShFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bvc3NpYmxlKEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfYmFja19wb3NzaWJsZShzZC0+bWFpbl9mcmFt
ZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0
ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgcmV0dXJuIGV3a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKHNkLT5tYWluX2ZyYW1lKTsKIH0K
IAotRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRlX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvLCBp
bnQgc3RlcHMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmpl
Y3QqIG8sIGludCBzdGVwcykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKHNk
LT5tYWluX2ZyYW1lLCBzdGVwcyk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2Vu
YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9y
eV9lbmFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqPihwcml2LT5wYWdlLT5iYWNrRm9yd2FyZExpc3Qo
KSktPmVuYWJsZWQoKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19o
aXN0b3J5X2VuYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE1MzAs
NyArMTUzMCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAot
RXdrX0hpc3RvcnkqIGV3a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQor
RXdrX0hpc3RvcnkqIGV3a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0xNTQxLDEzICsxNTQxLDEzIEBA
IEV3a19IaXN0b3J5KiBld2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCAqbykK
ICAgICByZXR1cm4gcHJpdi0+aGlzdG9yeTsKIH0KIAotZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitmbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFz
X09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAtMS4w
KTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBF
dmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTE1NzMsMTMgKzE1NzMsMTMgQEAg
RWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBF
dmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3IKICAgICByZXR1cm4gc2QtPmFwaS0+em9vbV9zZXQoc2Qs
IHpvb20sIGN4LCBjeSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc21vb3Ro
X3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld196b29t
X3dlYWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gc2Qt
Pnpvb21fd2Vha19zbW9vdGhfc2NhbGU7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Nt
b290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpCit2
b2lkIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBF
aW5hX0Jvb2wgc21vb3RoX3NjYWxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QpOwogICAgIHNtb290aF9zY2FsZSA9ICEhc21vb3RoX3NjYWxlOwpAQCAtMTU5MSw3ICsx
NTkxLDcgQEAgdm9pZCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2FsZSkKICAgICBzZC0+YXBpLT56b29tX3dlYWtf
c21vb3RoX3NjYWxlX3NldChzZCwgc21vb3RoX3NjYWxlKTsKIH0KIAotRWluYV9Cb29sIGV3a192
aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQg
Y3gsIEV2YXNfQ29vcmQgY3kpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3NldChFdmFz
X09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0xNjE5LDM1ICsxNjE5LDM1IEBAIEVpbmFf
Qm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBF
dmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgcmV0dXJuIHNkLT5hcGktPnpvb21fd2Vha19zZXQoc2Qs
IHpvb20sIGN4LCBjeSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21h
cmtfc3RhcnQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
em9vbV9hbmltYXRlZF9tYXJrX3N0YXJ0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHNk
LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSB6b29tOwogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKEV2YXNfT2Jq
ZWN0ICpvLCBmbG9hdCB6b29tKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFy
a19lbmQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9v
bS5lbmQgPSB6b29tOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tf
dmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudChFdmFzX09iamVjdCAqbywgZmxvYXQgem9v
bSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudChFdmFzX09i
amVjdCogbywgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPSB6
b29tOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29t
X2FuaW1hdGVkX21hcmtfc3RvcChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld196
b29tX2FuaW1hdGVkX21hcmtfc3RvcChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBfZXdrX3ZpZXdfem9vbV9h
bmltYXRlZF9tYXJrX3N0b3Aoc2QpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9v
bSwgZmxvYXQgZHVyYXRpb24sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20s
IGZsb2F0IGR1cmF0aW9uLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIGRv
dWJsZSBub3c7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CkBAIC0xNjk2LDE5ICsxNjk2LDE5IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1h
dGVkX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sCiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5
X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRf
b25seV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV96b29tX3Rl
eHRfb25seV9nZXQoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9v
bV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc2V0dGluZykKK0VpbmFf
Qm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCBzZXR0aW5nKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0KHNkLT5tYWlu
X2ZyYW1lLCBzZXR0aW5nKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVn
aW9uKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29y
ZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3Jl
bmRlcl9yZWdpb24oRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBF
dmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTc1MSw3ICsxNzUxLDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpvLCBFdmFz
X0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwKICAgICByZXR1cm4gc2QtPmFwaS0+cHJlX3JlbmRlcl9y
ZWdpb24oc2QsIHgsIHksIHcsIGgsIHpvb20pOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcHJl
X3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBuKQor
RWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0
KiBvLCB1bnNpZ25lZCBpbnQgbikKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwpAQCAtMTc2NSw0MiArMTc2NSw0MiBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGlu
dCBuKQogICAgIHJldHVybiBzZC0+YXBpLT5wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhzZCwg
biwgY3VyX3pvb20pOwogfQogCi11bnNpZ25lZCBpbnQgZXdrX3ZpZXdfaW1oX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKK3Vuc2lnbmVkIGludCBld2tfdmlld19pbWhfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJu
IHByaXYtPmltaDsKIH0KIAotdm9pZCBld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09i
amVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+cHJlX3JlbmRlcl9jYW5jZWwpOwogICAgIHNkLT5h
cGktPnByZV9yZW5kZXJfY2FuY2VsKHNkKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2VuYWJs
ZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZW5hYmxl
X3JlbmRlcihjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc2QtPmFwaS0+ZW5hYmxlX3JlbmRlciwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNk
LT5hcGktPmVuYWJsZV9yZW5kZXIoc2QpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZGlzYWJs
ZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZGlzYWJs
ZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNkLT5hcGktPmRpc2FibGVfcmVuZGVyLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4g
c2QtPmFwaS0+ZGlzYWJsZV9yZW5kZXIoc2QpOwogfQogCi1jb25zdCBjaGFyICpld2tfdmlld19z
ZXR0aW5nX3VzZXJfYWdlbnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciog
ZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5n
cy51c2VyX2FnZW50OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50
X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXNlcl9hZ2VudCkKK0VpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFy
KiB1c2VyX2FnZW50KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlO
QV9GQUxTRSk7CkBAIC0xODExLDE0ICsxODExLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp1c2VyX2FnZW50
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdfc2V0dGlu
Z191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciog
ZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBv
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLnVzZXJfc3R5bGVzaGVldDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
dXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXJpKQorRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09iamVjdCog
bywgY29uc3QgY2hhciogdXJpKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CkBAIC0xODI5LDE0ICsxODI5LDE0IEBAIEVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIg
KnVyaSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmF1dG9fbG9hZF9pbWFnZXM7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgYXV0b21hdGljKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19s
b2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhdXRvbWF0aWMpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE4NDgs
MTQgKzE4NDgsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdl
c19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhdXRvbWEKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0
b19zaHJpbmtfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy5hdXRvX3Nocmlua19pbWFnZXM7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhdXRv
bWF0aWMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0
KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xODY3LDE0ICsxODY3LDE0IEBA
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBhdXRvCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0
b19yZXNpemVfd2luZG93X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy5lbmFibGVfYXV0b19yZXNpemVfd2luZG93OwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIHJlc2l6YWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9h
dXRvX3Jlc2l6ZV93aW5kb3dfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgcmVzaXphYmxl
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBA
IC0xODgyLDE0ICsxODgyLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9h
dXRvX3Jlc2l6ZV93aW5kb3dfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0JvCiAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3Njcmlw
dHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
ZW5hYmxlX3NjcmlwdHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLmVuYWJsZV9zY3JpcHRzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfc2NyaXB0c19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQoRXZhc19PYmplY3QqIG8s
IEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKQEAgLTE5MDEsMTQgKzE5MDEsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5h
YmxlKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9wbHVnaW5zX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAg
IHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFibGVfcGx1Z2luczsKIH0KIAotRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0
KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xOTIwLDE0ICsxOTIwLDE0IEBAIEVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGVuYWJsZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxh
dHRlbmluZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mu
ZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmc7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVu
YWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5n
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTkzOSwxNCArMTkzOSwxNCBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3df
b3Blbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc2Ny
aXB0c193aW5kb3dfb3BlbjsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0
c193aW5kb3dfb3Blbl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhbGxvdykKK0VpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgYWxsb3cpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE5NTgsMTQgKzE5NTgsMTQgQEAgRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBhbGwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX2dldChjb25zdCBFdmFzX09iamVjdCAq
bykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3Nf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNjcmlwdHNf
Y2FuX2Nsb3NlX3dpbmRvd3M7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Njcmlw
dHNfY2FuX2Nsb3NlX3dpbmRvd3Nfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWxsb3cp
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX3Nl
dChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGFsbG93KQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xOTc3LDE0ICsxOTc3LDE0IEBAIEVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3Nfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFaW5hX0JvCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFz
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5yZXNpemFi
bGVfdGV4dGFyZWFzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVf
dGV4dGFyZWFzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0KiBv
LCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CkBAIC0xOTk2LDE0ICsxOTk2LDE0IEBAIEVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfcHJpdmF0ZV9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0Up
OwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5nOwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVf
YnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMDE1LDE0ICsy
MDE1LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9h
cHBfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdz
Lm9mZmxpbmVfYXBwX2NhY2hlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19vZmZs
aW5lX2FwcF9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9zZXQoRXZhc19PYmplY3Qq
IG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIwMzUsMTQgKzIwMzUsMTQgQEAgRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmwKIH0KIAogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2lu
Z19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19j
YXJldF9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0
dGluZ3MuY2FyZXRfYnJvd3Npbmc7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Nh
cmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwpAQCAtMjA1NCw3ICsyMDU0LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxl
KQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3NldHRp
bmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIq
IGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMjA3MCwyNyArMjA3MCwy
NyBAQCBjb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuY29kaW5nX2N1
c3RvbTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3Nl
dChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZW5jb2RpbmcpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFy
KiBlbmNvZGluZykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFf
RkFMU0UpOwogICAgIEV2YXNfT2JqZWN0KiBtYWluX2ZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFp
bl9nZXQobyk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVfZnJhbWUgPSBld2tfZnJhbWVfY29y
ZV9nZXQobWFpbl9mcmFtZSk7Ci1EQkcoIiVzIiwgZW5jb2RpbmcpOworICAgIERCRygiJXMiLCBl
bmNvZGluZyk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5l
bmNvZGluZ19jdXN0b20sIGVuY29kaW5nKTsKICAgICBjb3JlX2ZyYW1lLT5sb2FkZXIoKS0+cmVs
b2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoU3RyaW5nOjpmcm9tVVRGOChlbmNvZGluZykpOwogCiAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdfc2V0dGluZ19l
bmNvZGluZ19kZWZhdWx0X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3
a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0
dGluZ3MuZW5jb2RpbmdfZGVmYXVsdDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
ZW5jb2RpbmdfZGVmYXVsdF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVuY29kaW5n
KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIGVuY29kaW5nKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMDk5LDcgKzIwOTksNyBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X3NldChFdmFzX09iamVjdCAqbywg
Y29uc3QgY2hhciAqZW5jbwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVj
dG9yX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjExMSwyMSArMjExMSwy
MSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9zZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVj
dG9yX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmNv
ZGluZ19kZXRlY3RvcjsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Rl
dmVsb3Blcl9leHRyYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZB
TFNFKTsKQEAgLTIxMzcsMTQgKzIxMzcsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
ZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wKICAg
ICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1pbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmlt
dW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9taW5p
bXVtX3NpemU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9z
aXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19mb250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMTU1
LDE0ICsyMTU1LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9z
aXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1f
bG9naWNhbF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X21pbmltdW1f
bG9naWNhbF9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmlt
dW1fbG9naWNhbF9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3NldChFdmFzX09iamVj
dCogbywgaW50IHNpemUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKQEAgLTIxNzMsMTQgKzIxNzMsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBz
aXoKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1pbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250
X2RlZmF1bHRfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0
dGluZ19mb250X2RlZmF1bHRfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9u
dF9kZWZhdWx0X3NpemU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVm
YXVsdF9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXpl
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBA
IC0yMTkxLDE0ICsyMTkxLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVm
YXVsdF9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFj
ZV9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X21vbm9zcGFjZV9zaXpl
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX3Nl
dChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21vbm9zcGFjZV9zaXplX3NldChFdmFzX09iamVjdCogbywgaW50IHNpemUpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIyMDksNyAr
MjIwOSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVf
c2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6ZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
Ci1jb25zdCBjaGFyICpld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldChjb25zdCBFdmFzX09i
amVjdCAqbywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRfZmFtaWx5KQorY29uc3QgY2hhciogZXdrX3Zp
ZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIEV3a19Gb250X0Zh
bWlseSBmb250X2ZhbWlseSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAt
MjIzMSw3ICsyMjMxLDcgQEAgY29uc3QgY2hhciAqZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIEV3a19Gb250X0ZhbWlseQogICAgIHJldHVybiAwOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQoRXZhc19PYmplY3Qg
Km8sIEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSwgY29uc3QgY2hhciAqbmFtZSkKK0VpbmFf
Qm9vbCBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX3NldChFdmFzX09iamVjdCogbywgRXdrX0Zv
bnRfRmFtaWx5IGZvbnRfZmFtaWx5LCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMjY4LDE0ICsyMjY4LDE0
IEBAIEVpbmFfQm9vbCBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX3NldChFdmFzX09iamVjdCAq
bywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRfZmFtCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdh
dGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc3Bh
dGlhbF9uYXZpZ2F0aW9uOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFs
X25hdmlnYXRpb25fc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChFdmFzX09iamVjdCog
bywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwpAQCAtMjI4NywxNCArMjI4NywxNCBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYgogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAg
ICByZXR1cm4gcHJpdi0+c2V0dGluZ3MubG9jYWxfc3RvcmFnZTsKIH0KIAotRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChF
dmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjMwNiwxNCArMjMwNiwxNCBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGVuYWJsZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnBhZ2VfY2FjaGU7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
ZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQoRXZhc19P
YmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIzMjUsMTQgKzIzMjUsMTQgQEAgRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciogZXdrX3Zp
ZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFi
YXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmxvY2FsX3N0b3JhZ2VfZGF0
YWJhc2VfcGF0aDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFn
ZV9kYXRhYmFzZV9wYXRoX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0aCkKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQo
RXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHBhdGgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIzNDEsNyArMjM0MSw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQoRXZh
c19PYmplY3QgKm8sIGNvbnN0CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9zZXQoRXZhc19PYmplY3Qg
Km8sIGRvdWJsZSBpbnRlcnZhbCkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX21pbmltdW1f
dGltZXJfaW50ZXJ2YWxfc2V0KEV2YXNfT2JqZWN0KiBvLCBkb3VibGUgaW50ZXJ2YWwpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIzNTIs
MTQgKzIzNTIsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9p
bnRlcnZhbF9zZXQoRXZhc19PYmplY3QgKm8sIGRvdWJsZSBpbnQKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCi1kb3VibGUgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFs
X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2RvdWJsZSBld2tfdmlld19zZXR0aW5nX21pbmlt
dW1fdGltZXJfaW50ZXJ2YWxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLmRvbV90aW1lcl9pbnRlcnZhbDsKIH0KIAotRXdrX1ZpZXdfU21hcnRfRGF0YSAq
ZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFd2tfVmlld19T
bWFydF9EYXRhKiBld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICByZXR1cm4g
c2Q7CkBAIC0yMzgyLDcgKzIzODIsNyBAQCBFd2tfVmlld19TbWFydF9EYXRhICpld2tfdmlld19z
bWFydF9kYXRhX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAqIEBub3RlIHRoaXMgaXMgbm90
IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAg
ICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwotY29uc3QgRWluYV9S
ZWN0YW5nbGUgKmV3a192aWV3X3JlcGFpbnRzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0Rh
dGEgKnByaXYsIHNpemVfdCAqY291bnQpCitjb25zdCBFaW5hX1JlY3RhbmdsZSogZXdrX3ZpZXdf
cmVwYWludHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90KiBj
b3VudCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY291bnQsIDApOwog
ICAgIGlmIChjb3VudCkKQEAgLTI0MTAsNyArMjQxMCw3IEBAIGNvbnN0IEVpbmFfUmVjdGFuZ2xl
ICpld2tfdmlld19yZXBhaW50c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2
LCBzCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1
YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcg
c3RvcmUuCiAgKi8KLWNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqZXdrX3ZpZXdfc2Nyb2xsX3Jl
cXVlc3RzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVfdCAqY291
bnQpCitjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QqIGV3a192aWV3X3Njcm9sbF9yZXF1ZXN0c19n
ZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3QqIGNvdW50KQogewog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3VudCwgMCk7CiAgICAgaWYgKGNv
dW50KQpAQCAtMjQzNSw3ICsyNDM1LDcgQEAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0ICpld2tf
dmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGEKICAqIEBu
b3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0
aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAq
Lwotdm9pZCBld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYs
IEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkK
K3ZvaWQgZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBF
dmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdik7CiAgICAgX2V3a192aWV3X3Jl
cGFpbnRfYWRkKHByaXYsIHgsIHksIHcsIGgpOwpAQCAtMjQ0OSwxMSArMjQ0OSwxMSBAQCB2b2lk
IGV3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19D
b29yZCB4LCBFdmFzX0Nvb3JkCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2Ug
YnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhl
aXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRl
ZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQordm9pZCBld2tfdmlld19s
YXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiB7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdik7CiAKLSAgICBXZWJDb3JlOjpG
cmFtZVZpZXcgKnYgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgV2ViQ29yZTo6RnJh
bWVWaWV3KiB2ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgIGlmICghdikgewogICAg
ICAgICBFUlIoIm5vIG1haW4gZnJhbWUgdmlldyIpOwogICAgICAgICByZXR1cm47CkBAIC0yNDYx
LDcgKzI0NjEsNyBAQCB2b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKICAgICB2LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlm
TmVlZGVkUmVjdXJzaXZlKCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQordm9pZCBld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
c2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CkBAIC0yNDc5
LDE5ICsyNDc5LDE5IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkKQogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3Jl
LgogICovCiBzdHJ1Y3QgX0V3a19WaWV3X1BhaW50X0NvbnRleHQgewotICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCAqZ2M7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3OwotICAgIGNh
aXJvX3QgKmNyOworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCogZ2M7CisgICAgV2ViQ29y
ZTo6RnJhbWVWaWV3KiB2aWV3OworICAgIGNhaXJvX3QqIGNyOwogfTsKIAotRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCAqZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpwcml2LCBjYWlyb190ICpjcikKK0V3a19WaWV3X1BhaW50X0NvbnRleHQqIGV3a192aWV3
X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9fdCog
Y3IpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIDApOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgMCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPm1haW5fZnJhbWUsIDApOwotICAgIFdlYkNvcmU6OkZy
YW1lVmlldyAqdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpG
cmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIDApOwotICAgIEV3a19WaWV3X1BhaW50X0NvbnRl
eHQgKmN0eHQgPSAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqKW1hbGxvYyhzaXplb2YoKmN0eHQp
KTsKKyAgICBFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0ID0gKEV3a19WaWV3X1BhaW50X0Nv
bnRleHQqKW1hbGxvYyhzaXplb2YoKmN0eHQpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoY3R4dCwgMCk7CiAKICAgICBjdHh0LT5nYyA9IG5ldyBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQoY3IpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4
dCAqZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2
LAogICAgIHJldHVybiBjdHh0OwogfQogCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJl
ZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0KQordm9pZCBld2tfdmlld19wYWludF9jb250
ZXh0X2ZyZWUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCkKIHsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBkZWxldGUgY3R4dC0+Z2M7CkBAIC0yNTEyLDI4
ICsyNTEyLDI4IEBAIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQgKmN0eHQpCiAgICAgZnJlZShjdHh0KTsKIH0KIAotdm9pZCBld2tfdmlld19w
YWludF9jb250ZXh0X3NhdmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCkKK3ZvaWQgZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCiB7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgY2Fpcm9fc2F2ZShj
dHh0LT5jcik7CiAgICAgY3R4dC0+Z2MtPnNhdmUoKTsKIH0KIAotdm9pZCBld2tfdmlld19wYWlu
dF9jb250ZXh0X3Jlc3RvcmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCkKK3ZvaWQgZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQp
CiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgY3R4dC0+Z2Mt
PnJlc3RvcmUoKTsKICAgICBjYWlyb19yZXN0b3JlKGN0eHQtPmNyKTsKIH0KIAotdm9pZCBld2tf
dmlld19wYWludF9jb250ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29u
c3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xp
cChFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJl
YSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKICAgICBjdHh0LT5nYy0+Y2xpcChXZWJDb3JlOjpJ
bnRSZWN0KGFyZWEtPngsIGFyZWEtPnksIGFyZWEtPncsIGFyZWEtPmgpKTsKIH0KIAotdm9pZCBl
d2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQs
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0
X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xl
KiBhcmVhKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOwpAQCAtMjU0NSw3ICsyNTQ1LDcgQEAgdm9p
ZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0
eHQsIGNvbnN0IEVpbmFfUmVjdGEKICAgICBjdHh0LT52aWV3LT5wYWludChjdHh0LT5nYywgcmVj
dCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyhFd2tf
Vmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSkKK3Zv
aWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyhFd2tfVmlld19QYWludF9D
b250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihhcmVhKTsKQEAgLTI1NTgsMjEgKzI1NTgsMjEgQEAgdm9pZCBld2tfdmlld19wYWludF9jb250
ZXh0X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEUK
ICAgICBjdHh0LT52aWV3LT5wYWludENvbnRlbnRzKGN0eHQtPmdjLCByZWN0KTsKIH0KIAotdm9p
ZCBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0
eHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0IHNjYWxlX3kpCit2b2lkIGV3a192aWV3X3BhaW50X2Nv
bnRleHRfc2NhbGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwgZmxvYXQgc2NhbGVfeCwg
ZmxvYXQgc2NhbGVfeSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsK
IAogICAgIGN0eHQtPmdjLT5zY2FsZShXZWJDb3JlOjpGbG9hdFNpemUoc2NhbGVfeCwgc2NhbGVf
eSkpOwogfQogCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3
X1BhaW50X0NvbnRleHQgKmN0eHQsIGZsb2F0IHgsIGZsb2F0IHkpCit2b2lkIGV3a192aWV3X3Bh
aW50X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGZsb2F0
IHgsIGZsb2F0IHkpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAK
ICAgICBjdHh0LT5nYy0+dHJhbnNsYXRlKHgsIHkpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
cGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWlu
YV9SZWN0YW5nbGUgKmFyZWEpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEp
CiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJTkFfRkFMU0Up
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgRUlOQV9GQUxTRSk7CkBA
IC0yNTk3LDcgKzI1OTcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZQogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmll
d19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAq
YXJlYSkKK0VpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYsIGNhaXJvX3QqIGNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgRUlOQV9GQUxTRSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNyLCBFSU5BX0ZBTFNFKTsKQEAgLTI2
MjgsNyArMjYyOCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmll
d19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zCiAgKgogICogRW1pdHMgc2ln
bmFsOiAicmVhZHkiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBld2tfdmlld19yZWFk
eShFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfcmVhZHkoRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChvLCAicmVhZHkiLCAwKTsKQEAgLTI2NDIsNyArMjY0Miw3IEBAIHZvaWQgZXdrX3ZpZXdfcmVh
ZHkoRXZhc19PYmplY3QgKm8pCiAgKiBFbWl0cyBzaWduYWw6ICJpbnB1dG1ldGhvZCxjaGFuZ2Vk
IiB3aXRoIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaXQncwogICogZW5hYmxlZCBvciBu
b3QuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3NldChFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGFjdGl2ZSkKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRl
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGFjdGl2ZSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7
CkBAIC0yNjcxLDcgKzI2NzEsNyBAQCB2b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhY3RpdmUpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJpbnB1dG1ldGhvZCxjaGFu
Z2VkIiwgKHZvaWQgKilhY3RpdmUpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobywgImlucHV0bWV0aG9kLGNoYW5nZWQiLCAodm9pZCopYWN0aXZlKTsKIH0KIAogLyoqCkBA
IC0yNjgwLDEwICsyNjgwLDEwIEBAIHZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGFjdGl2ZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6
ICJ0aXRsZSxjaGFuZ2VkIiB3aXRoIHBvaW50ZXIgdG8gbmV3IHRpdGxlIHN0cmluZy4KICAqLwot
dm9pZCBld2tfdmlld190aXRsZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRpdGxl
KQordm9pZCBld2tfdmlld190aXRsZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRp
dGxlKQogewogICAgIERCRygibz0lcCwgdGl0bGU9JXMiLCBvLCB0aXRsZSA/IHRpdGxlIDogIihu
dWxsKSIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRpdGxlLGNo
YW5nZWQiLCAodm9pZCAqKXRpdGxlKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG8sICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQqKXRpdGxlKTsKIH0KIAogLyoqCkBAIC0yNjky
LDEyICsyNjkyLDEyIEBAIHZvaWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICp0aXRsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ1cmksY2hhbmdlZCIgd2l0
aCBwb2ludGVyIHRvIHRoZSBuZXcgdXJpIHN0cmluZy4KICAqLwotdm9pZCBld2tfdmlld191cmlf
Y2hhbmdlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7Ci0gICAg
Y29uc3QgY2hhciAqdXJpID0gZXdrX2ZyYW1lX3VyaV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAg
IGNvbnN0IGNoYXIqIHVyaSA9IGV3a19mcmFtZV91cmlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKICAg
ICBEQkcoIm89JXAsIHVyaT0lcyIsIG8sIHVyaSA/IHVyaSA6ICIobnVsbCkiKTsKLSAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ1cmksY2hhbmdlZCIsICh2b2lkICopdXJp
KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ1cmksY2hhbmdlZCIs
ICh2b2lkKil1cmkpOwogfQogCiAvKioKQEAgLTI3MDgsNyArMjcwOCw3IEBAIHZvaWQgZXdrX3Zp
ZXdfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9h
ZCxzdGFydGVkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9z
dGFydGVkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19sb2FkX3N0YXJ0ZWQoRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChvLCAibG9hZCxzdGFydGVkIiwgMCk7CkBAIC0yNzIxLDEwICsyNzIxLDEw
IEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVt
aXRzIHNpZ25hbDogImxvYWQsc3RhcnRlZCIgb24gbWFpbiBmcmFtZSB3aXRoIG5vIHBhcmFtZXRl
cnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZhc19PYmpl
Y3QgKm8pCit2b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0
KiBvKQogewogICAgIERCRygibz0lcCIsIG8pOwotICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9IGV3
a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOworICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192
aWV3X2ZyYW1lX21haW5fZ2V0KG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwoZnJhbWUsICJsb2FkLHN0YXJ0ZWQiLCAwKTsKIH0KIApAQCAtMjczNiw3ICsyNzM2LDcgQEAg
dm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCAqbykKICAq
CiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsIiBvbiBWaWV3IHdpdGggbm8gcGFy
YW1ldGVycy4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0
ICpvKQordm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIERCRygibz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bywgImxvYWQscHJvdmlzaW9uYWwiLCAwKTsKQEAgLTI3NTAsNyArMjc1MCw3IEBAIHZvaWQgZXdr
X3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWdu
YWw6ICJsb2FkLG5ld3dpbmRvdyxzaG93IiBvbiB2aWV3IHdpdGggbm8gcGFyYW1ldGVycy4KICAq
Lwotdm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3
X2xvYWRfc2hvdyhFdmFzX09iamVjdCogbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLG5ld3dpbmRvdyxzaG93Iiwg
MCk7CkBAIC0yNzYzLDcgKzI3NjMsNyBAQCB2b2lkIGV3a192aWV3X2xvYWRfc2hvdyhFdmFzX09i
amVjdCAqbykKICAqCiAgKiBAcGFyYW0gbyBWaWV3LgogICovCi12b2lkIGV3a192aWV3X2ZyYW1l
X21haW5fY2xlYXJlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9j
bGVhcmVkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMjc3OSwxMCArMjc3OSwxMCBAQCB2b2lk
IGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZChFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0
cyBzaWduYWw6ICJpY29uLHJlY2VpdmVkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBl
d2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVjZWl2ZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAg
REJHKCJvPSVwIiwgbyk7Ci0gICAgRXZhc19PYmplY3QgKmZyYW1lID0gZXdrX3ZpZXdfZnJhbWVf
bWFpbl9nZXQobyk7CisgICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFp
bl9nZXQobyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChmcmFtZSwgImlj
b24scmVjZWl2ZWQiLCAwKTsKIH0KIApAQCAtMjc5NiwxMCArMjc5NiwxMCBAQCB2b2lkIGV3a192
aWV3X2ZyYW1lX21haW5faWNvbl9yZWNlaXZlZChFdmFzX09iamVjdCAqbykKICAqIEBub3RlIHRo
ZXJlIHNob3VsZCBub3QgYmUgYW55IGVycm9yIHN0dWZmIGhlcmUsIGJ1dCB0cnlpbmcgdG8gYmUK
ICAqICAgICAgIGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyBXZWJLaXQuCiAgKi8KLXZvaWQgZXdr
X3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRf
RXJyb3IgKmVycm9yKQordm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpCiB7CiAgICAgREJHKCJvPSVwLCBl
cnJvcj0lcCIsIG8sIGVycm9yKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG8sICJsb2FkLGZpbmlzaGVkIiwgKHZvaWQgKillcnJvcik7CisgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxmaW5pc2hlZCIsICh2b2lkKillcnJvcik7CiB9CiAK
IC8qKgpAQCAtMjgwOCwxMCArMjgwOCwxMCBAQCB2b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yICplcnJvcikKICAqCiAg
KiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0ZyYW1lX0xv
YWRfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCAqbywg
Y29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgKmVycm9yKQordm9pZCBld2tfdmlld19sb2FkX2Vy
cm9yKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpCiB7
CiAgICAgREJHKCJvPSVwLCBlcnJvcj0lcCIsIG8sIGVycm9yKTsKLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLGVycm9yIiwgKHZvaWQgKillcnJvcik7CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxlcnJvciIsICh2b2lkKill
cnJvcik7CiB9CiAKIC8qKgpAQCAtMjgyMCw3ICsyODIwLDcgQEAgdm9pZCBld2tfdmlld19sb2Fk
X2Vycm9yKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciAqZXJyb3Ip
CiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm9ncmVzcyIgd2l0aCBwb2ludGVyIHRvIGEg
ZG91YmxlIGZyb20gMC4wIHRvIDEuMC4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNz
X2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hh
bmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwpAQCAtMjg0
Miw3ICsyODQyLDcgQEAgdm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19P
YmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzdG9yZSIgd2l0aCBmcmFtZS4KICAq
Lwotdm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVj
dCAqZnJhbWUpCit2b2lkIGV3a192aWV3X3Jlc3RvcmVfc3RhdGUoRXZhc19PYmplY3QqIG8sIEV2
YXNfT2JqZWN0KiBmcmFtZSkKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG8sICJyZXN0b3JlIiwgZnJhbWUpOwogfQpAQCAtMjg2OCwxNCArMjg2OCwxNCBAQCB2b2lkIGV3
a192aWV3X3Jlc3RvcmVfc3RhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSkK
ICAqCiAgKiBAc2VlIGV3a193aW5kb3dfZmVhdHVyZXNfcmVmKCkuCiAgKi8KLUV2YXNfT2JqZWN0
ICpld2tfdmlld193aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgamF2YXNj
cmlwdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgKmNvcmVGZWF0dXJlcykKK0V2YXNf
T2JqZWN0KiBld2tfdmlld193aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wg
amF2YXNjcmlwdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmVGZWF0dXJlcykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKIAogICAgIGlmICgh
c2QtPmFwaS0+d2luZG93X2NyZWF0ZSkKICAgICAgICAgcmV0dXJuIG87CiAKLSAgICBFd2tfV2lu
ZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMgPSBld2tfd2luZG93X2ZlYXR1cmVzX25ld19m
cm9tX2NvcmUoY29yZUZlYXR1cmVzKTsKKyAgICBFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3df
ZmVhdHVyZXMgPSBld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUoY29yZUZlYXR1cmVz
KTsKICAgICBpZiAoIXdpbmRvd19mZWF0dXJlcykKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTI4
OTYsNyArMjg5Niw3IEBAIEV2YXNfT2JqZWN0ICpld2tfdmlld193aW5kb3dfY3JlYXRlKEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgamF2YXNjcmlwdCwgY29uc3QKICAqCiAgKiBAcGFyYW0gbyBW
aWV3IHRvIGJlIGNsb3NlZC4KICAqLwotdm9pZCBld2tfdmlld193aW5kb3dfY2xvc2UoRXZhc19P
YmplY3QgKm8pCit2b2lkIGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCogbykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKIApAQCAtMjkxMiw3ICsyOTEy
LDcgQEAgdm9pZCBld2tfdmlld193aW5kb3dfY2xvc2UoRXZhc19PYmplY3QgKm8pCiAgKgogICog
RW1pdHMgc2lnbmFsOiAibGluayxob3ZlcixpbiIKICAqLwotdm9pZCBld2tfdmlld19tb3VzZV9s
aW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0ICpvLCB2b2lkICpkYXRhKQordm9pZCBld2tfdmlld19t
b3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBkYXRhKQogewogICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxpbmssaG92ZXIsaW4iLCBkYXRhKTsK
IH0KQEAgLTI5MjMsNyArMjkyMyw3IEBAIHZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9p
bihFdmFzX09iamVjdCAqbywgdm9pZCAqZGF0YSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsaW5r
LGhvdmVyLG91dCIKICAqLwotdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291dChFdmFz
X09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibGluayxo
b3ZlcixvdXQiLCAwKTsKIH0KQEAgLTI5MzQsNyArMjkzNCw3IEBAIHZvaWQgZXdrX3ZpZXdfbW91
c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
dG9vbGJhcnMsdmlzaWJsZSxzZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwot
dm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKIHsKICAgICBEQkcoIm89JXAgKHZpc2libGU9JWQp
IiwgbywgISF2aXNpYmxlKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8s
ICJ0b29sYmFycyx2aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsKQEAgLTI5NTEsNyArMjk1MSw3IEBA
IHZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInRvb2xiYXJzLHZpc2libGUsZ2V0
IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdG9vbGJh
cnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKK3ZvaWQg
ZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCog
dmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5jX18sIG8pOwogICAgICp2aXNp
YmxlID0gRUlOQV9GQUxTRTsKQEAgLTI5NjcsNyArMjk2Nyw3IEBAIHZvaWQgZXdrX3ZpZXdfdG9v
bGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKICAq
CiAgKiBFbWl0cyBzaWduYWw6ICJzdGF0dXNiYXIsdmlzaWJsZSxzZXQiIHdpdGggYSBwb2ludGVy
IHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxlKQordm9pZCBld2tfdmlld19zdGF0dXNi
YXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKQogewogICAg
IERCRygibz0lcCAodmlzaWJsZT0lZCkiLCBvLCAhIXZpc2libGUpOwogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInN0YXR1c2Jhcix2aXNpYmxlLHNldCIsICZ2aXNpYmxl
KTsKQEAgLTI5ODQsNyArMjk4NCw3IEBAIHZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKICAqCiAgKiBFbWl0cyBzaWdu
YWw6ICJzdGF0dXNiYXIsdmlzaWJsZSxnZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4K
ICAqLwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCAqdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0
KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpCiB7CiAgICAgREJHKCIlcywgbz0l
cCIsIF9fZnVuY19fLCBvKTsKICAgICAqdmlzaWJsZSA9IEVJTkFfRkFMU0U7CkBAIC0zMDAwLDEx
ICszMDAwLDExIEBAIHZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAic3RhdHVz
YmFyLHRleHQsc2V0IiB3aXRoIGEgc3RyaW5nLgogICovCi12b2lkIGV3a192aWV3X3N0YXR1c2Jh
cl90ZXh0X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCkKK3ZvaWQgZXdrX3Zp
ZXdfc3RhdHVzYmFyX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0ZXh0KQog
ewogICAgIERCRygibz0lcCAodGV4dD0lcykiLCBvLCB0ZXh0KTsKICAgICBJTkYoInN0YXR1cyBi
YXIgdGV4dCBzZXQ6ICVzIiwgdGV4dCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChvLCAic3RhdHVzYmFyLHRleHQsc2V0IiwgKHZvaWQgKil0ZXh0KTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJzdGF0dXNiYXIsdGV4dCxzZXQiLCAodm9pZCop
dGV4dCk7CiB9CiAKIC8qKgpAQCAtMzAxNiw3ICszMDE2LDcgQEAgdm9pZCBld2tfdmlld19zdGF0
dXNiYXJfdGV4dF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQpCiAgKgogICog
RW1pdHMgc2lnbmFsOiAic2Nyb2xsYmFycyx2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8g
YSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxlKQordm9pZCBld2tfdmlld19zY3JvbGxiYXJz
X3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKIHsKICAgICBE
QkcoIm89JXAgKHZpc2libGU9JWQpIiwgbywgISF2aXNpYmxlKTsKICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG8sICJzY3JvbGxiYXJzLHZpc2libGUsc2V0IiwgJnZpc2libGUp
OwpAQCAtMzAzMyw3ICszMDMzLDcgQEAgdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKICAqCiAgKiBFbWl0cyBzaWdu
YWw6ICJzY3JvbGxiYXJzLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4u
CiAgKi8KLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sICp2aXNpYmxlKQordm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVf
Z2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpCiB7CiAgICAgREJHKCIlcywg
bz0lcCIsIF9fZnVuY19fLCBvKTsKICAgICAqdmlzaWJsZSA9IEVJTkFfRkFMU0U7CkBAIC0zMDQ5
LDcgKzMwNDksNyBAQCB2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJtZW51
YmFyLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZp
c2libGUpCit2b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8s
IEVpbmFfQm9vbCB2aXNpYmxlKQogewogICAgIERCRygibz0lcCAodmlzaWJsZT0lZCkiLCBvLCAh
IXZpc2libGUpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgIm1lbnVi
YXIsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBAIC0zMDY2LDcgKzMwNjYsNyBAQCB2b2lkIGV3
a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNp
YmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogIm1lbnViYXIsdmlzaWJsZSxnZXQiIHdpdGggYSBw
b2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVf
Z2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCit2b2lkIGV3a192aWV3X21l
bnViYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCogdmlzaWJsZSkKIHsK
ICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5jX18sIG8pOwogICAgICp2aXNpYmxlID0gRUlOQV9G
QUxTRTsKQEAgLTMwODMsMTAgKzMwODMsMTAgQEAgdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2li
bGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCiAgKiBFbWl0cyBzaWdu
YWw6ICJ0b29sdGlwLHRleHQsc2V0IiB3aXRoIGEgc3RyaW5nLiBJZiB0b29sdGlwIG11c3QgYmUg
YWN0dWFsbHkKICAqIHJlbW92ZWQsIHRleHQgd2lsbCBiZSAwIG9yICdcMCcKICAqLwotdm9pZCBl
d2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0
KQordm9pZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBj
aGFyKiB0ZXh0KQogewogICAgIERCRygibz0lcCB0ZXh0PSVzIiwgbywgdGV4dCk7Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidG9vbHRpcCx0ZXh0LHNldCIsICh2b2lk
ICopdGV4dCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidG9vbHRp
cCx0ZXh0LHNldCIsICh2b2lkKil0ZXh0KTsKIH0KIAogLyoqCkBAIC0zMDk4LDcgKzMwOTgsNyBA
QCB2b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNo
YXIgKnRleHQpCiAgKiBAc291cmNlSUQgU291cmNlIGlkLgogICoKICAqLwotdm9pZCBld2tfdmll
d19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICptZXNzYWdl
LCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hhciAqc291cmNlSUQpCit2b2lkIGV3
a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIG1l
c3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3VyY2VJRCkKIHsK
ICAgICBEQkcoIm89JXAgbWVzc2FnZT0lcyBsaW5lTnVtYmVyPSV1IHNvdXJjZUlEPSVzIiwgbywg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QpOwpAQCAtMzEwNyw3ICszMTA3LDcgQEAgdm9pZCBld2tfdmlld19hZGRfY29u
c29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICptZXNzYWdlLCB1bnNpZ25l
ZAogICAgIHNkLT5hcGktPmFkZF9jb25zb2xlX21lc3NhZ2Uoc2QsIG1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIHNvdXJjZUlEKTsKIH0KIAotdm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChF
dmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQor
dm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogbywgRXZhc19P
YmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIERCRygibz0lcCBmcmFt
ZT0lcCBtZXNzYWdlPSVzIiwgbywgZnJhbWUsIG1lc3NhZ2UpOwogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzExOSw3ICszMTE5LDcgQEAgdm9pZCBld2tfdmlld19y
dW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBj
b25zdCBjaGEKICAgICBzZC0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydChzZCwgZnJhbWUsIG1l
c3NhZ2UpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShF
dmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQor
RWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIG8s
IEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBEQkcoIm89
JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIG8sIGZyYW1lLCBtZXNzYWdlKTsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTMxMzEsNyArMzEzMSw3
IEBAIEVpbmFfQm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0
ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvCiAgICAgcmV0dXJuIHNkLT5hcGktPnJ1bl9qYXZh
c2NyaXB0X2NvbmZpcm0oc2QsIGZyYW1lLCBtZXNzYWdlKTsKIH0KIAotRWluYV9Cb29sIGV3a192
aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZy
YW1lLCBjb25zdCBjaGFyICptZXNzYWdlLCBjb25zdCBjaGFyICpkZWZhdWx0VmFsdWUsIGNoYXIg
Kip2YWx1ZSkKK0VpbmFfQm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19P
YmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSwgY29uc3Qg
Y2hhciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUpCiB7CiAgICAgREJHKCJvPSVwIGZyYW1l
PSVwIG1lc3NhZ2U9JXMiLCBvLCBmcmFtZSwgbWVzc2FnZSk7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0ICpvLCBFdmFz
X09iamVjdCAqZnJhbWUsIGNvbgogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHNjcmlw
dCBzaG91bGQgYmUgc3RvcHBlZDsgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwotRWluYV9C
b29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFdmFzX09iamVjdCAqbykK
K0VpbmFfQm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0zMTgwLDcgKzMxODAsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KEV2YXNfT2JqZWN0ICpvKQogICog
QHBhcmFtIGV4cGVjdGVkX3NpemUgVGhlIGV4cGVjdGVkIHNpemUgb2YgdGhpcyBkYXRhYmFzZSBp
biBvcmRlciB0byBmdWxmaWxsCiAgKiBzaXRlJ3MgcmVxdWlyZW1lbnQuCiAgKi8KLXVpbnQ2NF90
IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09i
amVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKmRhdGFiYXNlTmFtZSwgdWludDY0X3QgY3VycmVudF9z
aXplLCB1aW50NjRfdCBleHBlY3RlZF9zaXplKQordWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRf
ZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3Qg
Y2hhciogZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50X3NpemUsIHVpbnQ2NF90IGV4cGVj
dGVkX3NpemUpCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgMCk7CkBAIC0zMTg4LDcgKzMxODgsNyBAQCB1aW50NjRfdCBld2tfdmll
d19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZy
YW1lLCBjbwogICAgIGlmICghc2QtPmFwaS0+ZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgSU5GKCJjdXJyZW50X3NpemU9JSJQUkl1NjQiIGV4cGVjdGVk
X3NpemU9JSJQUkl1NjQsIGN1cnJlbnRfc2l6ZSwgZXhwZWN0ZWRfc2l6ZSk7CisgICAgSU5GKCJj
dXJyZW50X3NpemU9JSJQUkl1NjQgIiBleHBlY3RlZF9zaXplPSUiUFJJdTY0LCBjdXJyZW50X3Np
emUsIGV4cGVjdGVkX3NpemUpOwogICAgIHJldHVybiBzZC0+YXBpLT5leGNlZWRlZF9kYXRhYmFz
ZV9xdW90YShzZCwgZnJhbWUsIGRhdGFiYXNlTmFtZSwgY3VycmVudF9zaXplLCBleHBlY3RlZF9z
aXplKTsKIH0KIApAQCAtMzIwNSw3ICszMjA1LDcgQEAgdWludDY0X3QgZXdrX3ZpZXdfZXhjZWVk
ZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY28K
ICAqCiAgKiBAcmV0dXJuIEBFSU5BX0ZBTFNFIGlmIHVzZXIgY2FuY2VsZWQgZmlsZSBzZWxlY3Rp
b247IEBFSU5BX1RSVUUgaWYgY29uZmlybWVkLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVu
X29wZW5fcGFuZWwoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgRWluYV9Cb29s
IGFsbG93c19tdWx0aXBsZV9maWxlcywgY29uc3QgY2hhciAqYWNjZXB0X3R5cGVzLCBFaW5hX0xp
c3QgKipzZWxlY3RlZF9maWxlbmFtZXMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX29wZW5fcGFu
ZWwoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgRWluYV9Cb29sIGFsbG93c19t
dWx0aXBsZV9maWxlcywgY29uc3QgY2hhciogYWNjZXB0X3R5cGVzLCBFaW5hX0xpc3QqKiBzZWxl
Y3RlZF9maWxlbmFtZXMpCiB7CiAgICAgREJHKCJvPSVwIGZyYW1lPSVwIGFsbG93c19tdWx0aXBs
ZV9maWxlcz0lZCIsIG8sIGZyYW1lLCBhbGxvd3NfbXVsdGlwbGVfZmlsZXMpOwogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwpAQCAtMzIyMyw3ICszMjIz
LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0ICpvLCBF
dmFzX09iamVjdCAqZnJhbWUsIEVpbmFfQm9vbAogICAgIHJldHVybiBjb25maXJtOwogfQogCi12
b2lkIGV3a192aWV3X3JlcGFpbnQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc19D
b29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3ZvaWQgZXdrX3ZpZXdfcmVwYWlu
dChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoKQogewogICAgIERCRygibz0lcCwgcmVnaW9uPSVkLCVkICsgJWR4JWQi
LCBvLCB4LCB5LCB3LCBoKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsK
QEAgLTMyMzgsNyArMzIzOCw3IEBAIHZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFzX09iamVjdCAq
bywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywKICAgICBfZXdrX3Zp
ZXdfc21hcnRfY2hhbmdlZChzZCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHN4LCBFdmFz
X0Nvb3JkIHN5LCBFdmFzX0Nvb3JkIHN3LCBFdmFzX0Nvb3JkIHNoLCBFdmFzX0Nvb3JkIGN4LCBF
dmFzX0Nvb3JkIGN5LCBFdmFzX0Nvb3JkIGN3LCBFdmFzX0Nvb3JkIGNoLCBFaW5hX0Jvb2wgbWFp
bl9mcmFtZSkKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3Jk
IGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHN4LCBFdmFzX0Nvb3JkIHN5LCBFdmFzX0Nv
b3JkIHN3LCBFdmFzX0Nvb3JkIHNoLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5LCBFdmFz
X0Nvb3JkIGN3LCBFdmFzX0Nvb3JkIGNoLCBFaW5hX0Jvb2wgbWFpbl9mcmFtZSkKIHsKICAgICBE
QkcoIm89JXAsIGRlbHRhOiAlZCwlZCwgc2Nyb2xsOiAlZCwlZCslZHglZCwgY2xpcDogJWQsJWQr
JWR4JWQiLAogICAgICAgICBvLCBkeCwgZHksIHN4LCBzeSwgc3csIHNoLCBjeCwgY3ksIGN3LCBj
aCk7CkBAIC0zMjU2LDcgKzMyNTYsNyBAQCB2b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVj
dCAqbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCBzeAogICAgIF9l
d2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0KIAotV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdf
Y29yZV9wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK1dlYkNvcmU6OlBhZ2UqIGV3a192
aWV3X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2LCAwKTsKQEAgLTMyNjgsNyArMzI2OCw3IEBAIFdlYkNvcmU6OlBhZ2UqIGV3
a192aWV3X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMg
ImZyYW1lLGNyZWF0ZWQiIHdpdGggdGhlIG5ldyBmcmFtZSBvYmplY3Qgb24gc3VjY2Vzcy4KICAq
LwotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9jcmVhdGUo
RXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgV1RGOjpTdHJpbmcgJm5h
bWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCAqb3duZXJFbGVtZW50LCBjb25zdCBX
ZWJDb3JlOjpLVVJMICZ1cmwsIGNvbnN0IFdURjo6U3RyaW5nICZyZWZlcnJlcikKK1dURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gZXdrX3ZpZXdfZnJhbWVfY3JlYXRlKEV2YXNfT2JqZWN0
KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdURjo6U3RyaW5nICZuYW1lLCBXZWJDb3Jl
OjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VS
TCAmdXJsLCBjb25zdCBXVEY6OlN0cmluZyAmcmVmZXJyZXIpCiB7CiAgICAgREJHKCJvPSVwLCBm
cmFtZT0lcCwgbmFtZT0lcywgb3duZXJFbGVtZW50PSVwLCB1cmw9JXMsIHJlZmVycmVyPSVzIiwK
ICAgICAgICAgbywgZnJhbWUsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3duZXJFbGVtZW50LApAQCAt
MzI3OCw3ICszMjc4LDcgQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmll
d19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWMKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogCiAgICAgV1RGOjpSZWZQdHI8V2ViQ29y
ZTo6RnJhbWU+IGNmID0gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3Ci0gICAgICAgIChzZCwgcHJp
diwgb3duZXJFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNkLCBwcml2LCBvd25lckVsZW1lbnQpOwogICAgIGlmICghY2YpIHsKICAgICAgICAgRVJS
KCJDb3VsZCBub3QgY3JlYXRlIGNoaWxkIGNvcmUgZnJhbWUgJyVzJyIsIG5hbWUudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMzMwMCw3ICszMzAwLDcgQEAgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3Qg
Km8sIEV2YXNfT2JqZWMKICAgICByZXR1cm4gY2YucmVsZWFzZSgpOwogfQogCi1XVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0
ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNp
emUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50ICplbGVtZW50LCBjb25zdCBXZWJDb3JlOjpL
VVJMICZ1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiAmcGFyYW1OYW1lcywgY29u
c3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJp
bmcgJm1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIG8sIEV2YXNfT2Jq
ZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29u
c3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4gJnBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyAmbWltZVR5cGUs
IGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIERCRygibz0lcCwgZnJhbWU9JXAsIHNpemU9JWR4
JWQsIGVsZW1lbnQ9JXAsIHVybD0lcywgbWltZVR5cGU9JXMiLAogICAgICAgICBvLCBmcmFtZSwg
cGx1Z2luU2l6ZS53aWR0aCgpLCBwbHVnaW5TaXplLmhlaWdodCgpLCBlbGVtZW50LApAQCAtMzMx
MSw4ICszMzExLDggQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdf
cGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmoKICAgICBfZXdrX3ZpZXdfc21h
cnRfY2hhbmdlZChzZCk7CiAKICAgICByZXR1cm4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUKLSAg
ICAgICAgKGZyYW1lLCBwbHVnaW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFt
VmFsdWVzLAotICAgICAgICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CisgICAgICAgICAgICAg
ICAoZnJhbWUsIHBsdWdpblNpemUsIGVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMsCisgICAgICAgICAgICAgICBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKIH0KIAogLyoqCkBA
IC0zMzI2LDcgKzMzMjYsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tf
dmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iagogICoKICAqIEVtaXRz
OiAicG9wdXAsY3JlYXRlIiB3aXRoIGEgbGlzdCBvZiBFd2tfTWVudSBjb250YWluaW5nIGVhY2gg
aXRlbSdzIGRhdGEKICAqLwotdm9pZCBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8s
IFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCAqY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QgJnJlY3QpCit2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVj
dCogbywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxlY3RlZCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCAmcmVjdCkKIHsKICAgICBJTkYoIm89JXAiLCBvKTsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTMzNDAsNyArMzM0MCw3IEBAIHZv
aWQgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0ICpvLCBXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQgKmNsaWVudCwgaW50IHNlCiAgICAgLy8gcG9wdWxhdGUgaXRlbXMKICAgICBjb25zdCBp
bnQgc2l6ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewotICAgICAgICBFd2tfTWVudV9JdGVtICppdGVtID0gKEV3a19NZW51X0l0ZW0g
KikgbWFsbG9jKHNpemVvZigqaXRlbSkpOworICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0g
KEV3a19NZW51X0l0ZW0qKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CiAgICAgICAgIGlmIChjbGll
bnQtPml0ZW1Jc1NlcGFyYXRvcihpKSkKICAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVO
VV9TRVBBUkFUT1I7CiAgICAgICAgIGVsc2UgaWYgKGNsaWVudC0+aXRlbUlzTGFiZWwoaSkpCkBA
IC0zMzU5LDcgKzMzNTksNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAq
bywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICpjbGllbnQsIGludCBzZQogICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInBvcHVwLGNyZWF0ZSIsICZwcml2LT5wb3B1cC5t
ZW51KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3koRXZhc19PYmplY3Qg
Km8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFzX09iamVjdCogbykKIHsK
ICAgICBJTkYoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKQEAgLTMzNzIsNyArMzM3Miw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19w
b3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0ICpvKQogCiAgICAgdm9pZCogaXRlbXY7CiAgICAgRUlO
QV9MSVNUX0ZSRUUocHJpdi0+cG9wdXAubWVudS5pdGVtcywgaXRlbXYpIHsKLSAgICAgICAgRXdr
X01lbnVfSXRlbSogaXRlbSA9IChFd2tfTWVudV9JdGVtICopaXRlbXY7CisgICAgICAgIEV3a19N
ZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRlbSopaXRlbXY7CiAgICAgICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKGl0ZW0tPnRleHQpOwogICAgICAgICBmcmVlKGl0ZW0pOwogICAgIH0KQEAg
LTMzODIsNyArMzM4Miw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNf
T2JqZWN0ICpvKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcG9w
dXBfc2VsZWN0ZWRfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgaW5kZXgpCit2b2lkIGV3a192aWV3
X3BvcHVwX3NlbGVjdGVkX3NldChFdmFzX09iamVjdCogbywgaW50IGluZGV4KQogewogICAgIElO
Rigibz0lcCIsIG8pOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAt
MzQwMiw3ICszNDAyLDcgQEAgdm9pZCBld2tfdmlld19wb3B1cF9zZWxlY3RlZF9zZXQoRXZhc19P
YmplY3QgKm8sIGludCBpbmRleCkKICAqIEVtaXRzOiAiZG93bmxvYWQscmVxdWVzdCIgd2l0aCBh
biBFd2tfRG93bmxvYWQgY29udGFpbmluZyB0aGUgZGV0YWlscyBvZiB0aGUKICAqIHJlcXVlc3Rl
ZCBkb3dubG9hZC4gVGhlIGRvd25sb2FkIHBlciBzZSBtdXN0IGJlIGhhbmRsZWQgb3V0c2lkZSBv
ZiB3ZWJraXQuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVj
dCAqbywgRXdrX0Rvd25sb2FkICpkb3dubG9hZCkKK3ZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVx
dWVzdChFdmFzX09iamVjdCogbywgRXdrX0Rvd25sb2FkKiBkb3dubG9hZCkKIHsKICAgICBEQkco
InZpZXc9JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJk
b3dubG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwpAQCAtMzQxNSw3ICszNDE1LDcgQEAgdm9pZCBl
d2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRG93bmxvYWQgKmRv
d25sb2FkKQogICogQHBhcmFtIG8gdmlldy4KICAqIEBwYXJhbSBmcmFtZSB0aGUgZnJhbWUuCiAg
Ki8KLXZvaWQgZXdrX3ZpZXdfanNfd2luZG93X29iamVjdF9jbGVhcihFdmFzX09iamVjdCAqbywg
RXZhc19PYmplY3QgKmZyYW1lKQordm9pZCBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFy
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUpCiB7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAianMsd2luZG93b2JqZWN0LGNsZWFyIiwgZnJhbWUpOwog
fQpAQCAtMzQyOCwxNiArMzQyOCwxNiBAQCB2b2lkIGV3a192aWV3X2pzX3dpbmRvd19vYmplY3Rf
Y2xlYXIoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSkKICAqCiAgKiBFbWl0cyBz
aWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzICZhcmd1bWVudHMpCit2b2lkIGV3a192aWV3X3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50cyAmYXJndW1lbnRzKQogewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwotICAgIAorCiAgICAgcHJpdi0+dmlld3Bv
cnRfYXJndW1lbnRzID0gYXJndW1lbnRzOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwobywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKIH0KIAotdm9pZCBld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgZmxvYXQgKncsIGZsb2F0
ICpoLCBmbG9hdCAqaW5pdF9zY2FsZSwgZmxvYXQgKm1heF9zY2FsZSwgZmxvYXQgKm1pbl9zY2Fs
ZSwgZmxvYXQgKmRldmljZV9waXhlbF9yYXRpbywgRWluYV9Cb29sICp1c2VyX3NjYWxhYmxlKQor
dm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVjdCog
bywgZmxvYXQqIHcsIGZsb2F0KiBoLCBmbG9hdCogaW5pdF9zY2FsZSwgZmxvYXQqIG1heF9zY2Fs
ZSwgZmxvYXQqIG1pbl9zY2FsZSwgZmxvYXQqIGRldmljZV9waXhlbF9yYXRpbywgRWluYV9Cb29s
KiB1c2VyX3NjYWxhYmxlKQogewogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRy
aWJ1dGVzID0gX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShvKTsKIApAQCAt
MzQ1Nyw3ICszNDU3LDcgQEAgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChj
b25zdCBFdmFzX09iamVjdCAqbywgZmxvYXQgKncsIGZsb2F0ICpoLAogICAgICAgICAqdXNlcl9z
Y2FsYWJsZSA9IHN0YXRpY19jYXN0PGJvb2w+KGF0dHJpYnV0ZXMudXNlclNjYWxhYmxlKTsKIH0K
IAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9h
dCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3Jh
bmdlX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAg
LTM0NzMsNyArMzQ3Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3JhbmdlX3NldChFdmFz
X09iamVjdCAqbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhCiAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKIH0KIAotZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0x
LjApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgLTEuMCk7CkBA
IC0zNDgxLDcgKzM0ODEsNyBAQCBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWluX3NjYWxlOwogfQogCi1mbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pCitmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
LTEuMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAtMS4wKTsK
QEAgLTM0ODksNyArMzQ4OSw3IEBAIGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5tYXhfc2NhbGU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxh
YmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CkBAIC0zNDk5LDcgKzM0OTksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKQogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChj
b25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwpAQCAtMzUwNyw3ICszNTA3LDcgQEAgRWluYV9Cb29sIGV3a192aWV3
X3VzZXJfc2NhbGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGU7CiB9CiAKLWZsb2F0IGV3a192aWV3
X2RldmljZV9waXhlbF9yYXRpb19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitmbG9hdCBld2tf
dmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgLTEuMCk7CkBAIC0zNTE1LDcgKzM1MTUsNyBAQCBm
bG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5kZXZpY2VfcGl4ZWxfcmF0aW87CiB9CiAKLXZv
aWQgZXdrX3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5X25vbmVtcHR5X2xheW91dChFdmFzX09iamVj
dCAqbykKK3ZvaWQgZXdrX3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5X25vbmVtcHR5X2xheW91dChF
dmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwpAQCAtMzUzMiw3ICsz
NTMyLDcgQEAgdm9pZCBld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlfbm9uZW1wdHlfbGF5b3V0
KEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEBwYXJhbSBvIHZpZXcuCiAgKi8KLXZvaWQgZXdrX3Zp
ZXdfZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2FkaW5nKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tf
dmlld19kaXNwYXRjaF9kaWRfZmluaXNoX2xvYWRpbmcoRXZhc19PYmplY3QqIG8pCiB7CiAgICAg
LyogSWYgd2UgcmVhY2ggdGhpcyBwb2ludCBhbmQgcmVuZGVyaW5nIGlzIHN0aWxsIGRpc2FibGVk
LCBXZWJDb3JlIHdpbGwgbm90CiAgICAgICogdHJpZ2dlciB0aGUgZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0IHNpZ25hbCBhbnltb3JlLiBTbywgd2UKQEAgLTM1NDEsNyArMzU0MSw3IEBA
IHZvaWQgZXdrX3ZpZXdfZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2FkaW5nKEV2YXNfT2JqZWN0ICpv
KQogICAgIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlvdXQobyk7CiB9
CiAKLXZvaWQgZXdrX3ZpZXdfdHJhbnNpdGlvbl90b19jb21taXRlZF9mb3JfbmV3cGFnZShFdmFz
X09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfdHJhbnNpdGlvbl90b19jb21taXRlZF9mb3JfbmV3
cGFnZShFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwpAQCAtMzU2
MCw3ICszNTYwLDcgQEAgdm9pZCBld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVkX2Zvcl9u
ZXdwYWdlKEV2YXNfT2JqZWN0ICpvKQogICogQHBhcmFtIG8gVmlldyB0byBsb2FkCiAgKiBAcGFy
YW0gcmVxdWVzdCBSZXF1ZXN0IHdoaWNoIGNvbnRhaW4gdXJsIHRvIG5hdmlnYXRlCiAgKi8KLUVp
bmFfQm9vbCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCAq
bywgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgKnJlcXVlc3QpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9S
ZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfVFJVRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5hcGksIEVJTkFfVFJVRSk7CkBAIC0zNTcxLDcgKzM1NzEsNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QgKm8sIEV3a19GcmFt
ZV9SZXNvdXJjZQogICAgIHJldHVybiBzZC0+YXBpLT5uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lv
bihzZCwgcmVxdWVzdCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19qc19vYmplY3RfYWRkKEV2
YXNfT2JqZWN0ICpvLCBFd2tfSlNfT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm9ial9uYW1lKQor
RWluYV9Cb29sIGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QqIG8sIEV3a19KU19P
YmplY3QqIG9iaiwgY29uc3QgY2hhciogb2JqX25hbWUpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgaWYgKG9iai0+dmlldykgLy8gb2JqZWN0IGhhcyBhbHJlYWR5IGJl
ZW4gYWRkZWQgdG8gYW5vdGhlciBld2tfdmlldwpAQCAtMzU4MSw4ICszNTgxLDggQEAgRWluYV9C
b29sIGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QgKm8sIEV3a19KU19PYmplY3Qg
Km9iaiwgY29uc3QgY2hhcgogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CiAKICAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKLSAgICBXZWJDb3JlOjpKU0RPTVdpbmRvdyAqd2luZG93ID0gdG9KU0RPTVdp
bmRvdyhwcml2LT5tYWluX2ZyYW1lLCBXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7
Ci0gICAgSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9vdDsKKyAgICBXZWJDb3JlOjpKU0RP
TVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhwcml2LT5tYWluX2ZyYW1lLCBXZWJDb3Jl
OjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgSlNDOjpCaW5kaW5nczo6Um9vdE9iamVj
dCogcm9vdDsKICAgICByb290ID0gcHJpdi0+bWFpbl9mcmFtZS0+c2NyaXB0KCktPmJpbmRpbmdS
b290T2JqZWN0KCk7CiAKICAgICBpZiAoIXdpbmRvdykgewpAQCAtMzU5Myw3ICszNTkzLDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QgKm8sIEV3a19KU19P
YmplY3QgKm9iaiwgY29uc3QgY2hhcgogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gd2luZG93
LT5nbG9iYWxFeGVjKCk7CiAKICAgICBvYmotPnZpZXcgPSBvOwotICAgIEpTQzo6SlNPYmplY3Qg
KnJ1bnRpbWVPYmplY3QgPSAoSlNDOjpKU09iamVjdCopSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNl
OjpjcmVhdGUoKE5QT2JqZWN0KilvYmosIHJvb3QpLT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMp
OworICAgIEpTQzo6SlNPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSAoSlNDOjpKU09iamVjdCopSlND
OjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUoKE5QT2JqZWN0KilvYmosIHJvb3QpLT5jcmVh
dGVSdW50aW1lT2JqZWN0KGV4ZWMpOwogICAgIEpTQzo6SWRlbnRpZmllciBpZCA9IEpTQzo6SWRl
bnRpZmllcihleGVjLCBvYmpfbmFtZSk7CiAKICAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90
OwpAQCAtMzY1Myw3ICszNjUzLDcgQEAgdm9pZCogZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9y
ZXNvdXJjZV9nZXQoRXZhc19PYmplY3QqIG8sIHNpemVfdCogYnl0ZXNSZWFkLAogICogQHBhcmFt
IHcgbmV3IGNvbnRlbnQgd2lkdGguCiAgKiBAcGFyYW0gaCBuZXcgY29udGVudCBoZWlnaHQuCiAg
Ki8KLXZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvLCBp
bnQgdywgaW50IGgpCit2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09i
amVjdCogbywgaW50IHcsIGludCBoKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwpAQCAtMzY2
NSwxMyArMzY2NSwxMyBAQCB2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFz
X09iamVjdCAqbywgaW50IHcsIGludCBoKQogCiAvKioKICAqIEBpbnRlcm5hbAotICogR2V0cyBw
YWdlIHNpemUgZnJvbSBmcmFtZXZpZXcuIAorICogR2V0cyBwYWdlIHNpemUgZnJvbSBmcmFtZXZp
ZXcuCiAgKgogICogQHBhcmFtIG8gdmlldy4KICAqCiAgKiBAcmV0dXJuIHBhZ2Ugc2l6ZS4KICAq
LwotV2ViQ29yZTo6RmxvYXRSZWN0IGV3a192aWV3X3BhZ2VfcmVjdF9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pCitXZWJDb3JlOjpGbG9hdFJlY3QgZXdrX3ZpZXdfcGFnZV9yZWN0X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTM2ODEsNyArMzY4MSw3IEBAIFdlYkNvcmU6
OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQog
fQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9l
dmVudHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBib29sIG5lZWRlZCkKK3ZvaWQgZXdrX3ZpZXdfbmVl
ZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29sIG5lZWRlZCkKIHsKICAgICBF
V0tfVklFV19TRF9HRVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsK
QEAgLTM2ODksNyArMzY4OSw3IEBAIHZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0
KEV2YXNfT2JqZWN0ICpvLCBib29sIG5lZWRlZCkKICAgICBwcml2LT5mbGFncy5uZWVkX3RvdWNo
X2V2ZW50cyA9IG5lZWRlZDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X25lZWRfdG91Y2hfZXZl
bnRzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19uZWVkX3Rv
dWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTM2OTcsNyArMzY5Nyw3IEBAIEVp
bmFfQm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pCiB9CiAjZW5kaWYKIAotRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFd2tfVmlld19Nb2RlIHZpZXdfbW9kZSkKK0VpbmFfQm9vbCBld2tfdmlld19tb2RlX3Nl
dChFdmFzX09iamVjdCogbywgRXdrX1ZpZXdfTW9kZSB2aWV3X21vZGUpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTM3MjUsNyArMzcyNSw3
IEBAIEVpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1ZpZXdf
TW9kZSB2aWV3X21vZGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRXdrX1ZpZXdfTW9k
ZSBld2tfdmlld19tb2RlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0V3a19WaWV3X01vZGUg
ZXdrX3ZpZXdfbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRXdrX1ZpZXdf
TW9kZSBtb2RlID0gRVdLX1ZJRVdfTU9ERV9XSU5ET1dFRDsKIApAQCAtMzc2NCw3ICszNzY0LDcg
QEAgRXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykK
ICAqCiAgKiBFbWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnRzZWxlY3Rpb24sY2hhbmdlZCIgd2l0
aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0
aW9uX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRf
c2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAiZWRpdG9yY2xpZW50LHNlbGVjdGlvbixjaGFuZ2VkIiwgMCk7
CiB9CkBAIC0zNzc3LDcgKzM3NzcsNyBAQCB2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2Vs
ZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAiZWRp
dG9yY2xpZW50LGNvbnRlbnRzLGNoYW5nZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwotdm9p
ZCBld2tfdmlld19lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QgKm8p
Cit2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVj
dCogbykKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJlZGl0b3Jj
bGllbnQsY29udGVudHMsY2hhbmdlZCIsIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXdfc2luZ2xlLmNwcAppbmRleCA4YmFmODA1NjA1ZmUyODRkNTQ3NGY2YjMwMjEyYjlhMmQ1
MGE4YTkwLi5iOTljOGFkNzkxNzUyY2FhODkxYTMwZWJlYTk0YTRkMGU3YTFkZjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAtMzEsMjMgKzMxLDIzIEBA
CiAKIHN0YXRpYyBFd2tfVmlld19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVF9OVUxMOwogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX29uX2Rl
bCh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfb25fZGVsKHZvaWQqIGRhdGEsIEV2YXMqIGUs
IEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfT2JqZWN0ICpj
bGlwID0gKEV2YXNfT2JqZWN0KilkYXRhOworICAgIEV2YXNfT2JqZWN0KiBjbGlwID0gKEV2YXNf
T2JqZWN0KilkYXRhOwogICAgIGV2YXNfb2JqZWN0X2RlbChjbGlwKTsKIH0KIAotc3RhdGljIHZv
aWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKIHsKLSAgICBFd2tf
Vmlld19TbWFydF9EYXRhICpzZDsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZDsKIAogICAg
IF9wYXJlbnRfc2Muc2MuYWRkKG8pOwogCi0gICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
KWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOworICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOwogICAgIGlmICghc2QpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gZXZhc19vYmplY3RfcmVjdGFu
Z2xlX2FkZChzZC0+YmFzZS5ldmFzKTsKKyAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2Jq
ZWN0X3JlY3RhbmdsZV9hZGQoc2QtPmJhc2UuZXZhcyk7CiAgICAgZXZhc19vYmplY3RfY2xpcF9z
ZXQoc2QtPmJhY2tpbmdfc3RvcmUsIGNsaXApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJl
cl9hZGQoY2xpcCwgbyk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhjbGlwKTsKQEAgLTU2LDE4ICs1
NiwxOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZChFdmFzX09iamVj
dCAqbykKICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBFVkFTX0NBTExCQUNLX0RFTCwgX2V3
a192aWV3X3NpbmdsZV9vbl9kZWwsIGNsaXApOwogfQogCi1zdGF0aWMgRXZhc19PYmplY3QgKl9l
d2tfdmlld19zaW5nbGVfc21hcnRfYmFja2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpCitzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmFja2lu
Z19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7Ci0gICAgRXZhc19PYmplY3Qg
KmJzID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKHNkLT5iYXNlLmV2YXMpOworICAgIEV2YXNfT2Jq
ZWN0KiBicyA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChzZC0+YmFzZS5ldmFzKTsKICAgICBldmFz
X29iamVjdF9pbWFnZV9hbHBoYV9zZXQoYnMsIEVJTkFfRkFMU0UpOwogICAgIGV2YXNfb2JqZWN0
X2ltYWdlX3Ntb290aF9zY2FsZV9zZXQoYnMsIHNkLT56b29tX3dlYWtfc21vb3RoX3NjYWxlKTsK
IAogICAgIHJldHVybiBiczsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFy
dF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQorc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2
YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
ID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOwor
ICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNf
b2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOwogICAgIF9wYXJlbnRfc2Muc2MucmVzaXplKG8sIHcs
IGgpOwogCiAgICAgaWYgKCFzZCkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X3NpbmdsZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZh
c19Db28KICAgICAvLyB0aGVzZSBzaG91bGQgYmUgcXVldWVkIGFuZCBwcm9jZXNzZWQgaW4gY2Fs
Y3VsYXRlIGFzIHdlbGwhCiAgICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9zZXQoc2QtPmJhY2tp
bmdfc3RvcmUsIHcsIGgpOwogICAgIGlmIChzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQg
PCAwLjAwMDAxKSB7Ci0gICAgICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gZXZhc19vYmplY3RfY2xp
cF9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOworICAgICAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2
YXNfb2JqZWN0X2NsaXBfZ2V0KHNkLT5iYWNraW5nX3N0b3JlKTsKICAgICAgICAgRXZhc19Db29y
ZCB4LCB5LCBjdywgY2g7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNkLT5i
YWNraW5nX3N0b3JlLCAwLCAwLCB3LCBoKTsKICAgICAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlf
Z2V0KHNkLT5iYWNraW5nX3N0b3JlLCAmeCwgJnksIDAsIDApOwpAQCAtOTAsMTAgKzkwLDEwIEBA
IHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0ICpv
LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQg
X2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3VwKHVpbnQzMl90ICppbWFnZSwgc2l6ZV90IHJvd3Ms
IHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93c2l6ZSkK
K3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fdXAodWludDMyX3Qq
IGltYWdlLCBzaXplX3Qgcm93cywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6ZV90
IGgsIHNpemVfdCByb3dzaXplKQogewotICAgIHVpbnQzMl90ICpzcmM7Ci0gICAgdWludDMyX3Qg
KmRzdDsKKyAgICB1aW50MzJfdCogc3JjOworICAgIHVpbnQzMl90KiBkc3Q7CiAKICAgICBkc3Qg
PSBpbWFnZSArIHggKyB5ICogcm93c2l6ZTsKICAgICBzcmMgPSBkc3QgKyByb3dzICogcm93c2l6
ZTsKQEAgLTEwMywxMCArMTAzLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJf
bW92ZV9yZWdpb25fdXAodWludDMyX3QgKmltYWdlLCBzaXplX3Qgcm93cywgc2l6CiAgICAgICAg
IG1lbWNweShkc3QsIHNyYywgdyAqIDQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192
aWV3XzRiX21vdmVfcmVnaW9uX2Rvd24odWludDMyX3QgKmltYWdlLCBzaXplX3Qgcm93cywgc2l6
ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dzaXplKQorc3Rh
dGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9kb3duKHVpbnQzMl90KiBp
bWFnZSwgc2l6ZV90IHJvd3MsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHcsIHNpemVfdCBo
LCBzaXplX3Qgcm93c2l6ZSkKIHsKLSAgICB1aW50MzJfdCAqc3JjOwotICAgIHVpbnQzMl90ICpk
c3Q7CisgICAgdWludDMyX3QqIHNyYzsKKyAgICB1aW50MzJfdCogZHN0OwogCiAgICAgaCAtPSBy
b3dzOwogICAgIHNyYyA9IGltYWdlICsgeCArICh5ICsgaCAtIDEpICogcm93c2l6ZTsKQEAgLTEx
Niw5ICsxMTYsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9u
X2Rvd24odWludDMyX3QgKmltYWdlLCBzaXplX3Qgcm93cywgcwogICAgICAgICBtZW1jcHkoZHN0
LCBzcmMsIHcgKiA0KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3Zl
X2xpbmVfbGVmdCh1aW50MzJfdCAqZHN0LCBjb25zdCB1aW50MzJfdCAqc3JjLCBzaXplX3QgY291
bnQpCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfbGluZV9sZWZ0KHVpbnQz
Ml90KiBkc3QsIGNvbnN0IHVpbnQzMl90KiBzcmMsIHNpemVfdCBjb3VudCkKIHsKLSAgICB1aW50
MzJfdCAqZHN0X2VuZCA9IGRzdCArIGNvdW50OworICAgIHVpbnQzMl90KiBkc3RfZW5kID0gZHN0
ICsgY291bnQ7CiAgICAgLyogbm8gbWVtY3B5KCkgYXMgaXQgZG9lcyBub3QgYWxsb3cgb3Zlcmxh
cHBpbmcgcmVnaW9ucyAqLwogICAgIC8qIG5vIG1lbW1vdmUoKSBhcyBpdCB3aWxsIGNvcHkgdG8g
YSB0ZW1wb3JhcnkgYnVmZmVyICovCiAgICAgLyogVE9ETzogbG9vcCB1bnJvbGxpbmcsIGNvcHlp
bmcgdXAgdG8gcXVhZC13b3JkcyB3b3VsZCBoZWxwICovCkBAIC0xMjYsOSArMTI2LDkgQEAgc3Rh
dGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVmdCh1aW50MzJfdCAqZHN0
LCBjb25zdCB1aW50MzJfdCAqc3IKICAgICAgICAgKmRzdCA9ICpzcmM7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KHVpbnQzMl90ICpkc3QsIHVp
bnQzMl90ICpzcmMsIHNpemVfdCBjb3VudCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdf
NGJfbW92ZV9saW5lX3JpZ2h0KHVpbnQzMl90KiBkc3QsIHVpbnQzMl90KiBzcmMsIHNpemVfdCBj
b3VudCkKIHsKLSAgICB1aW50MzJfdCAqZHN0X2VuZCA9IGRzdCAtIGNvdW50OworICAgIHVpbnQz
Ml90KiBkc3RfZW5kID0gZHN0IC0gY291bnQ7CiAgICAgLyogbm8gbWVtY3B5KCkgYXMgaXQgZG9l
cyBub3QgYWxsb3cgb3ZlcmxhcHBpbmcgcmVnaW9ucyAqLwogICAgIC8qIG5vIG1lbW1vdmUoKSBh
cyBpdCB3aWxsIGNvcHkgdG8gYSB0ZW1wb3JhcnkgYnVmZmVyICovCiAgICAgLyogVE9ETzogbG9v
cCB1bnJvbGxpbmcsIGNvcHlpbmcgdXAgdG8gcXVhZC13b3JkcyB3b3VsZCBoZWxwICovCkBAIC0x
MzYsMTAgKzEzNiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfbGlu
ZV9yaWdodCh1aW50MzJfdCAqZHN0LCB1aW50MzJfdCAqc3JjLCBzaQogICAgICAgICAqZHN0ID0g
KnNyYzsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9s
ZWZ0KHVpbnQzMl90ICppbWFnZSwgc2l6ZV90IGNvbHMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6
ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93c2l6ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdr
X3ZpZXdfNGJfbW92ZV9yZWdpb25fbGVmdCh1aW50MzJfdCogaW1hZ2UsIHNpemVfdCBjb2xzLCBz
aXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3LCBzaXplX3QgaCwgc2l6ZV90IHJvd3NpemUpCiB7
Ci0gICAgdWludDMyX3QgKnNyYzsKLSAgICB1aW50MzJfdCAqZHN0OworICAgIHVpbnQzMl90KiBz
cmM7CisgICAgdWludDMyX3QqIGRzdDsKIAogICAgIGRzdCA9IGltYWdlICsgeCArIHkgKiByb3dz
aXplOwogICAgIHNyYyA9IGRzdCArIGNvbHM7CkBAIC0xNDksMTAgKzE0OSwxMCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2xlZnQodWludDMyX3QgKmltYWdl
LCBzaXplX3QgY29scywgcwogICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZHN0
LCBzcmMsIHcpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVn
aW9uX3JpZ2h0KHVpbnQzMl90ICppbWFnZSwgc2l6ZV90IGNvbHMsIHNpemVfdCB4LCBzaXplX3Qg
eSwgc2l6ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93c2l6ZSkKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fcmlnaHQodWludDMyX3QqIGltYWdlLCBzaXplX3Qg
Y29scywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dz
aXplKQogewotICAgIHVpbnQzMl90ICpzcmM7Ci0gICAgdWludDMyX3QgKmRzdDsKKyAgICB1aW50
MzJfdCogc3JjOworICAgIHVpbnQzMl90KiBkc3Q7CiAKICAgICB3IC09IGNvbHM7CiAgICAgc3Jj
ID0gaW1hZ2UgKyAoeCArIHcgLSAxKSArIHkgKiByb3dzaXplOwpAQCAtMTYzLDEwICsxNjMsMTAg
QEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodCh1aW50
MzJfdCAqaW1hZ2UsIHNpemVfdCBjb2xzLAogfQogCiAvKiBjYXRjaC1hbGwgZnVuY3Rpb24sIG5v
dCBhcyBvcHRpbWl6ZWQgYXMgdGhlIG90aGVycywgYnV0IGRvZXMgdGhlIHdvcmsuICovCi1zdGF0
aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uKHVpbnQzMl90ICppbWFnZSwg
aW50IGR4LCBpbnQgZHksIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHcsIHNpemVfdCBoLCBz
aXplX3Qgcm93c2l6ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdp
b24odWludDMyX3QqIGltYWdlLCBpbnQgZHgsIGludCBkeSwgc2l6ZV90IHgsIHNpemVfdCB5LCBz
aXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dzaXplKQogewotICAgIHVpbnQzMl90ICpzcmM7
Ci0gICAgdWludDMyX3QgKmRzdDsKKyAgICB1aW50MzJfdCogc3JjOworICAgIHVpbnQzMl90KiBk
c3Q7CiAKICAgICBpZiAoZHkgPCAwKSB7CiAgICAgICAgIGggKz0gZHk7CkBAIC0yMDMsNyArMjAz
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbih1aW50MzJf
dCAqaW1hZ2UsIGludCBkeCwgaW50IGR5LCBzaXoKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUg
dm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgdm9pZCAqcGl4ZWxzLCBFdmFzX0Nvb3JkIG93LCBFdmFzX0Nvb3JkIG9oLCBj
b25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QgKnNyKQorc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmll
d19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCB2
b2lkKiBwaXhlbHMsIEV2YXNfQ29vcmQgb3csIEV2YXNfQ29vcmQgb2gsIGNvbnN0IEV3a19TY3Jv
bGxfUmVxdWVzdCogc3IpCiB7CiAgICAgRXZhc19Db29yZCBzeCwgc3ksIHN3LCBzaDsKIApAQCAt
MzQwLDEzICszNDAsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Ny
b2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnMKICAgICB9CiB9CiAKLXN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVf
c21hcnRfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewotICAgIGNv
bnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3I7Ci0gICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0
ICpzcl9lbmQ7CisgICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0KiBzcjsKKyAgICBjb25zdCBF
d2tfU2Nyb2xsX1JlcXVlc3QqIHNyX2VuZDsKICAgICBFdmFzX0Nvb3JkIG93LCBvaDsKICAgICBz
aXplX3QgY291bnQ7Ci0gICAgdm9pZCAqcGl4ZWxzID0gZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9n
ZXQoc2QtPmJhY2tpbmdfc3RvcmUsIDEpOworICAgIHZvaWQqIHBpeGVscyA9IGV2YXNfb2JqZWN0
X2ltYWdlX2RhdGFfZ2V0KHNkLT5iYWNraW5nX3N0b3JlLCAxKTsKICAgICBldmFzX29iamVjdF9p
bWFnZV9zaXplX2dldChzZC0+YmFja2luZ19zdG9yZSwgJm93LCAmb2gpOwogCiAgICAgc3IgPSBl
d2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KHNkLT5fcHJpdiwgJmNvdW50KTsKQEAgLTM1OSwy
NSArMzU5LDI1IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3Jv
bGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgcmV0dXJuIEVJTkFfVFJV
RTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRz
X3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCkKIHsKLSAgICBFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0OworICAgIEV3a19WaWV3X1Bh
aW50X0NvbnRleHQqIGN0eHQ7CiAgICAgRXZhc19Db29yZCBvdywgb2g7Ci0gICAgdm9pZCAqcGl4
ZWxzOwotICAgIEVpbmFfUmVjdGFuZ2xlICpyOwotICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICpw
cjsKLSAgICBjb25zdCBFaW5hX1JlY3RhbmdsZSAqcHJfZW5kOwotICAgIEVpbmFfVGlsZXIgKnRp
bGVyOwotICAgIEVpbmFfSXRlcmF0b3IgKml0cjsKKyAgICB2b2lkKiBwaXhlbHM7CisgICAgRWlu
YV9SZWN0YW5nbGUqIHI7CisgICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHByOworICAgIGNvbnN0
IEVpbmFfUmVjdGFuZ2xlKiBwcl9lbmQ7CisgICAgRWluYV9UaWxlciogdGlsZXI7CisgICAgRWlu
YV9JdGVyYXRvciogaXRyOwogICAgIGNhaXJvX3N0YXR1c190IHN0YXR1czsKLSAgICBjYWlyb19z
dXJmYWNlX3QgKnN1cmZhY2U7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlOwogICAgIGNh
aXJvX2Zvcm1hdF90IGZvcm1hdDsKLSAgICBjYWlyb190ICpjYWlybzsKKyAgICBjYWlyb190KiBj
YWlybzsKICAgICBzaXplX3QgY291bnQ7CiAgICAgRWluYV9Cb29sIHJldCA9IEVJTkFfVFJVRTsK
IAogICAgIGlmIChzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPCAwLjAwMDAxKSB7Ci0g
ICAgICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc2QtPmJhY2tp
bmdfc3RvcmUpOworICAgICAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X2NsaXBf
Z2V0KHNkLT5iYWNraW5nX3N0b3JlKTsKICAgICAgICAgRXZhc19Db29yZCB3LCBoLCBjdywgY2g7
CiAgICAgICAgIC8vIHJlc2V0IGVmZmVjdHMgb2Ygem9vbV93ZWFrX3NldCgpCiAgICAgICAgIGV2
YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QKICAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMyOwogCiAgICAgc3Vy
ZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhCi0gICAgICAgICgodW5z
aWduZWQgY2hhciopcGl4ZWxzLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsKKyAgICAgICAgICAg
ICAgICAgICgodW5zaWduZWQgY2hhciopcGl4ZWxzLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsK
ICAgICBzdGF0dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKTsKICAgICBpZiAoc3Rh
dHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGNy
ZWF0ZSBzdXJmYWNlIGZyb20gZGF0YSAlZHglZDogJXMiLApAQCAtNDgyLDE0ICs0ODIsMTQgQEAg
ZXJyb3JfY2Fpcm9fc3VyZmFjZToKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3NldChFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKK3N0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc2V0KEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5
KQogewogICAgIC8vIFRPRE86IHJldmlldwogICAgIGZsb2F0IHNjYWxlID0gem9vbSAvIHNkLT5h
bmltYXRlZF96b29tLnpvb20uc3RhcnQ7CiAgICAgRXZhc19Db29yZCB3ID0gc2QtPnZpZXcudyAq
IHNjYWxlOwogICAgIEV2YXNfQ29vcmQgaCA9IHNkLT52aWV3LmggKiBzY2FsZTsKICAgICBFdmFz
X0Nvb3JkIGR4LCBkeSwgY3csIGNoOwotICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gZXZhc19vYmpl
Y3RfY2xpcF9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOworICAgIEV2YXNfT2JqZWN0KiBjbGlwID0g
ZXZhc19vYmplY3RfY2xpcF9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOwogCiAgICAgZXdrX2ZyYW1l
X2NvbnRlbnRzX3NpemVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmY3csICZjaCk7CiAgICAgaWYgKHNk
LT52aWV3LncgPiAwICYmIHNkLT52aWV3LmggPiAwKSB7CkBAIC01MTksMTcgKzUxOSwxNyBAQCBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3NldChFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgZgogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRp
YyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQo
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpCitzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQogewogICAgIGV2
YXNfb2JqZWN0X2ltYWdlX3Ntb290aF9zY2FsZV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIHNtb290
aF9zY2FsZSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmdfY29s
b3Jfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCB1bnNpZ25lZCBjaGFyIHIsIHVuc2lnbmVk
IGNoYXIgZywgdW5zaWduZWQgY2hhciBiLCB1bnNpZ25lZCBjaGFyIGEpCitzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2JnX2NvbG9yX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCwgdW5zaWduZWQgY2hhciByLCB1bnNpZ25lZCBjaGFyIGcsIHVuc2lnbmVkIGNoYXIgYiwgdW5z
aWduZWQgY2hhciBhKQogewogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChzZC0+YmFj
a2luZ19zdG9yZSwgYSA8IDI1NSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zaW5nbGVfc21h
cnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogewogICAgIGlmICghZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQoYXBpKSkKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CkBA
IC01NTAsMTAgKzU1MCwxMCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3NldChF
d2tfVmlld19TbWFydF9DbGFzcyAqYXBpKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgRXZhc19TbWFydCAqX2V3a192aWV3X3NpbmdsZV9zbWFydF9jbGFzc19uZXco
dm9pZCkKK3N0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3NpbmdsZV9zbWFydF9j
bGFzc19uZXcodm9pZCkKIHsKICAgICBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgYXBpID0g
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04oIkV3a19WaWV3X1NpbmdsZSIp
OwotICAgIHN0YXRpYyBFdmFzX1NtYXJ0ICpzbWFydCA9IDA7CisgICAgc3RhdGljIEV2YXNfU21h
cnQqIHNtYXJ0ID0gMDsKIAogICAgIGlmIChFSU5BX1VOTElLRUxZKCFzbWFydCkpIHsKICAgICAg
ICAgZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3NldCgmYXBpKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBz
dGF0aWMgaW5saW5lIEV2YXNfU21hcnQgKl9ld2tfdmlld19zaW5nbGVfc21hcnRfY2xhc3NfbmV3
KHZvaWQpCiAgICAgcmV0dXJuIHNtYXJ0OwogfQogCi1FdmFzX09iamVjdCAqZXdrX3ZpZXdfc2lu
Z2xlX2FkZChFdmFzICplKQorRXZhc19PYmplY3QqIGV3a192aWV3X3NpbmdsZV9hZGQoRXZhcyog
ZSkKIHsKICAgICByZXR1cm4gZXZhc19vYmplY3Rfc21hcnRfYWRkKGUsIF9ld2tfdmlld19zaW5n
bGVfc21hcnRfY2xhc3NfbmV3KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3X3RpbGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190
aWxlZC5jcHAKaW5kZXggZmM4NDVmNzIwMjBlYjE4MzY1MDYxNTQ0NzIzNTNjY2Q3Mjc1MjY2Ni4u
NDk3NTFiZDlkOWU1ZjVhMzA4NmE1M2I0ODM0NmRiNTk3YmM0YzQ1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCkBAIC0zMCwyNCArMzAsMjQgQEAKIAogc3RhdGlj
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUX05VTEw7CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYih2
b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCitzdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2Iodm9pZCogZGF0YSwgRXdrX1Rp
bGUqIHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewotICAgIEV3a19WaWV3X1ByaXZh
dGVfRGF0YSAqcHJpdiA9IChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWRhdGE7CisgICAgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gKEV3a19WaWV3X1ByaXZhdGVfRGF0YSopZGF0YTsKICAg
ICBFaW5hX1JlY3RhbmdsZSByID0ge2FyZWEtPnggKyB0LT54LCBhcmVhLT55ICsgdC0+eSwgYXJl
YS0+dywgYXJlYS0+aH07CiAKICAgICByZXR1cm4gZXdrX3ZpZXdfcGFpbnRfY29udGVudHMocHJp
diwgdC0+Y2Fpcm8sICZyKTsKIH0KIAotc3RhdGljIHZvaWQgKl9ld2tfdmlld190aWxlZF91cGRh
dGVzX3Byb2Nlc3NfcHJlKHZvaWQgKmRhdGEsIEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQq
IF9ld2tfdmlld190aWxlZF91cGRhdGVzX3Byb2Nlc3NfcHJlKHZvaWQqIGRhdGEsIEV2YXNfT2Jq
ZWN0KiBvKQogewotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiA9IChFd2tfVmlld19Q
cml2YXRlX0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSopZGF0YTsKICAgICBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVk
X3JlY3Vyc2l2ZShwcml2KTsKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIEV2YXNfT2JqZWN0
ICpfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYmFja2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QpCitzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tfdmlld190aWxlZF9zbWFydF9iYWNr
aW5nX3N0b3JlX2FkZChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBFdmFzX09iamVj
dCAqYnMgPSBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9hZGQoc2QtPmJhc2UuZXZhcyk7CisgICAg
RXZhc19PYmplY3QqIGJzID0gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfYWRkKHNkLT5iYXNlLmV2
YXMpOwogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3JlbmRlcl9jYl9zZXQKICAgICAgICAg
KGJzLCBfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiLCBzZC0+X3ByaXYpOwogICAgIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vzc19wcmVfc2V0CkBAIC01NiwxOCArNTYsMTgg
QEAgc3RhdGljIEV2YXNfT2JqZWN0ICpfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYmFja2luZ19zdG9y
ZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YQogfQogCiBzdGF0aWMgdm9pZAotX2V3a192aWV3X3Rp
bGVkX2NvbnRlbnRzX3NpemVfY2hhbmdlZF9jYih2b2lkICpkYXRhLCBFdmFzX09iamVjdCAqbywg
dm9pZCAqZXZlbnRfaW5mbykKK19ld2tfdmlld190aWxlZF9jb250ZW50c19zaXplX2NoYW5nZWRf
Y2Iodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAg
RXZhc19Db29yZCAqc2l6ZSA9IChFdmFzX0Nvb3JkKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19D
b29yZCogc2l6ZSA9IChFdmFzX0Nvb3JkKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CiAKICAgICBld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9jb250ZW50c19yZXNpemUKICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3Jl
LCBzaXplWzBdLCBzaXplWzFdKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3Nt
YXJ0X2FkZChFdmFzX09iamVjdCAqbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFy
dF9hZGQoRXZhc19PYmplY3QqIG8pCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Q7Cisg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Q7CiAKICAgICBfcGFyZW50X3NjLnNjLmFkZChvKTsK
IApAQCAtODEsMTAgKzgxLDEwIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9h
ZGQoRXZhc19PYmplY3QgKm8pCiAgICAgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KHNkLT5tYWlu
X2ZyYW1lLCBFSU5BX1RSVUUpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxl
ZF9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QpCiB7Ci0gICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0ICpzcjsKLSAg
ICBjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QgKnNyX2VuZDsKKyAgICBjb25zdCBFd2tfU2Nyb2xs
X1JlcXVlc3QqIHNyOworICAgIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCogc3JfZW5kOwogICAg
IHNpemVfdCBjb3VudDsKICAgICBFdmFzX0Nvb3JkIHZ3LCB2aDsKIApAQCAtMTM3LDkgKzEzNyw5
IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJvY2Vz
cyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1z
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRf
c21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBj
b25zdCBFaW5hX1JlY3RhbmdsZSAqcHIsICpwcl9lbmQ7CisgICAgY29uc3QgRWluYV9SZWN0YW5n
bGUqIHByLCAqIHByX2VuZDsKICAgICBzaXplX3QgY291bnQ7CiAgICAgaW50IHN4LCBzeTsKIApA
QCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21h
cnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9j
b250ZW50c19yZXNpemUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGludCB3LCBpbnQgaCkKK3N0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZShFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCwgaW50IHcsIGludCBoKQogewogICAgIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2NvbnRlbnRzX3Jlc2l6ZShzZC0+YmFja2luZ19zdG9yZSwgdywgaCk7CiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRf
c21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNf
Q29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxl
ZF9zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRXZh
c19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGg7
CiAgICAgRWluYV9Cb29sIHI7CkBAIC0xODYsNTAgKzE4Niw1MCBAQCBzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
ZmxvYXQgegogICAgIHJldHVybiByOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190
aWxlZF9zbWFydF96b29tX3dlYWtfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6
b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQorc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfdGlsZWRfc21hcnRfem9vbV93ZWFrX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwg
ZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICByZXR1cm4g
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3NldChzZC0+YmFja2luZ19zdG9yZSwg
em9vbSwgY3gsIGN5KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pv
b21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX0Jv
b2wgc21vb3RoX3NjYWxlKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21f
d2Vha19zbW9vdGhfc2NhbGVfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFaW5hX0Jvb2wg
c21vb3RoX3NjYWxlKQogewogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19z
bW9vdGhfc2NhbGVfc2V0KHNkLT5iYWNraW5nX3N0b3JlLCBzbW9vdGhfc2NhbGUpOwogfQogCi1z
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZmx1c2goRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QpCiB7CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goc2Qt
PmJhY2tpbmdfc3RvcmUpOwogICAgIF9wYXJlbnRfc2MuZmx1c2goc2QpOwogfQogCi1zdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbihFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
dGlsZWRfc21hcnRfcHJlX3JlbmRlcl9yZWdpb24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxv
YXQgem9vbSkKIHsKICAgICByZXR1cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRl
cl9yZWdpb24KLSAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCB4LCB5LCB3LCBoLCB6b29tKTsK
KyAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgeCwgeSwgdywgaCwgem9vbSk7CiB9
CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVs
YXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCB1bnNpZ25lZCBpbnQgbiwgZmxv
YXQgem9vbSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5k
ZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCB1bnNpZ25lZCBpbnQg
biwgZmxvYXQgem9vbSkKIHsKICAgICByZXR1cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJl
X3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMKLSAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBuLCB6
b29tKTsKKyAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgbiwgem9vbSk7CiB9CiAK
LXN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tf
Vmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9w
cmVfcmVuZGVyX2NhbmNlbChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNlbChzZC0+YmFja2luZ19zdG9yZSk7CiB9
CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X2Rpc2FibGVfcmVuZGVy
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGls
ZWRfc21hcnRfZGlzYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAg
cmV0dXJuIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKHNkLT5iYWNraW5n
X3N0b3JlKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZW5h
YmxlX3JlbmRlcihFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3RpbGVkX3NtYXJ0X2VuYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qp
CiB7CiAgICAgcmV0dXJuIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIoc2Qt
PmJhY2tpbmdfc3RvcmUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0
KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21h
cnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiB7CiAgICAgaWYgKCFld2tfdmlld19i
YXNlX3NtYXJ0X3NldChhcGkpKQogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKQEAgLTI1NSwx
MCArMjU1LDEwIEBAIEVpbmFfQm9vbCBld2tfdmlld190aWxlZF9zbWFydF9zZXQoRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgKmFwaSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgaW5s
aW5lIEV2YXNfU21hcnQgKl9ld2tfdmlld190aWxlZF9zbWFydF9jbGFzc19uZXcodm9pZCkKK3N0
YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3RpbGVkX3NtYXJ0X2NsYXNzX25ldyh2
b2lkKQogewogICAgIHN0YXRpYyBFd2tfVmlld19TbWFydF9DbGFzcyBhcGkgPSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTigiRVdLX1ZpZXdfVGlsZWQiKTsKLSAgICBzdGF0
aWMgRXZhc19TbWFydCAqc21hcnQgPSAwOworICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9
IDA7CiAKICAgICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7CiAgICAgICAgIGV3a192aWV3
X3RpbGVkX3NtYXJ0X3NldCgmYXBpKTsKQEAgLTI2OCwyMSArMjY4LDIxIEBAIHN0YXRpYyBpbmxp
bmUgRXZhc19TbWFydCAqX2V3a192aWV3X3RpbGVkX3NtYXJ0X2NsYXNzX25ldyh2b2lkKQogICAg
IHJldHVybiBzbWFydDsKIH0KIAotRXZhc19PYmplY3QgKmV3a192aWV3X3RpbGVkX2FkZChFdmFz
ICplKQorRXZhc19PYmplY3QqIGV3a192aWV3X3RpbGVkX2FkZChFdmFzKiBlKQogewogICAgIHJl
dHVybiBldmFzX29iamVjdF9zbWFydF9hZGQoZSwgX2V3a192aWV3X3RpbGVkX3NtYXJ0X2NsYXNz
X25ldygpKTsKIH0KIAotRXdrX1RpbGVfVW51c2VkX0NhY2hlICpld2tfdmlld190aWxlZF91bnVz
ZWRfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRXdrX1RpbGVfVW51c2VkX0NhY2hl
KiBld2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQog
ewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQo
byk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBld2tfdmlld19zbWFydF9kYXRhX2dl
dChvKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QsIDApOwogICAgIHJl
dHVybiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9nZXQoc2QtPmJh
Y2tpbmdfc3RvcmUpOwogfQogCi12b2lkIGV3a192aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9zZXQo
RXZhc19PYmplY3QgKm8sIEV3a19UaWxlX1VudXNlZF9DYWNoZSAqY2FjaGUpCit2b2lkIGV3a192
aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19UaWxlX1VudXNl
ZF9DYWNoZSogY2FjaGUpCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSBld2tfdmll
d19zbWFydF9kYXRhX2dldChvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IGV3a192
aWV3X3NtYXJ0X2RhdGFfZ2V0KG8pOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
KTsKICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoc2Qt
PmJhY2tpbmdfc3RvcmUsIGNhY2hlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
d2luZG93X2ZlYXR1cmVzLmNwcAppbmRleCA0YmI2ZTA2YmY2ZDY3MDA5N2I4NWFmOTQyNzY1ZDk4
YjgwMTIxMmEzLi44MDlkMWU4NTMxYmZkMzNkNmVlNTRhMzQ0NDQwNmE0NGE5YWY2ODYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCkBAIC0zMiwx
MCArMzIsMTAgQEAKICAqLwogc3RydWN0IF9Fd2tfV2luZG93X0ZlYXR1cmVzIHsKICAgICB1bnNp
Z25lZCBpbnQgX19yZWY7Ci0gICAgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgKmNvcmU7CisgICAg
V2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmU7CiB9OwogCi12b2lkIGV3a193aW5kb3dfZmVh
dHVyZXNfdW5yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKQordm9pZCBl
d2tfd2luZG93X2ZlYXR1cmVzX3VucmVmKEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0
dXJlcykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3dfZmVhdHVyZXMp
OwogICAgIEVJTkFfU0FGRVRZX09OX0ZBTFNFX1JFVFVSTih3aW5kb3dfZmVhdHVyZXMtPl9fcmVm
ID4gMCk7CkBAIC00OCwxMyArNDgsMTMgQEAgdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX3VucmVm
KEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRvd19mZWF0dXJlcykKICAgICBmcmVlKHdpbmRvd19m
ZWF0dXJlcyk7CiB9CiAKLXZvaWQgZXdrX3dpbmRvd19mZWF0dXJlc19yZWYoRXdrX1dpbmRvd19G
ZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKQordm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX3JlZihF
d2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dfZmVhdHVyZXMpCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4od2luZG93X2ZlYXR1cmVzKTsKICAgICB3aW5kb3dfZmVhdHVyZXMtPl9f
cmVmKys7CiB9CiAKLXZvaWQgZXdrX3dpbmRvd19mZWF0dXJlc19ib29sX3Byb3BlcnR5X2dldChj
b25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMsIEVpbmFfQm9vbCAqdG9v
bGJhcl92aXNpYmxlLCBFaW5hX0Jvb2wgKnN0YXR1c2Jhcl92aXNpYmxlLCBFaW5hX0Jvb2wgKnNj
cm9sbGJhcnNfdmlzaWJsZSwgRWluYV9Cb29sICptZW51YmFyX3Zpc2libGUsIEVpbmFfQm9vbCAq
bG9jYXRpb25iYXJfdmlzaWJsZSwgRWluYV9Cb29sICpmdWxsc2NyZWVuKQordm9pZCBld2tfd2lu
ZG93X2ZlYXR1cmVzX2Jvb2xfcHJvcGVydHlfZ2V0KGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMq
IHdpbmRvd19mZWF0dXJlcywgRWluYV9Cb29sKiB0b29sYmFyX3Zpc2libGUsIEVpbmFfQm9vbCog
c3RhdHVzYmFyX3Zpc2libGUsIEVpbmFfQm9vbCogc2Nyb2xsYmFyc192aXNpYmxlLCBFaW5hX0Jv
b2wqIG1lbnViYXJfdmlzaWJsZSwgRWluYV9Cb29sKiBsb2NhdGlvbmJhcl92aXNpYmxlLCBFaW5h
X0Jvb2wqIGZ1bGxzY3JlZW4pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2lu
ZG93X2ZlYXR1cmVzKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3dfZmVh
dHVyZXMtPmNvcmUpOwpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIGV3a193aW5kb3dfZmVhdHVyZXNf
Ym9vbF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYQog
ICAgICAgICAqZnVsbHNjcmVlbiA9IHdpbmRvd19mZWF0dXJlcy0+Y29yZS0+ZnVsbHNjcmVlbjsK
IH0KIAotdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX2ludF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdr
X1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzLCBpbnQgKngsIGludCAqeSwgaW50ICp3
LCBpbnQgKmgpCit2b2lkIGV3a193aW5kb3dfZmVhdHVyZXNfaW50X3Byb3BlcnR5X2dldChjb25z
dCBFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dfZmVhdHVyZXMsIGludCogeCwgaW50KiB5LCBp
bnQqIHcsIGludCogaCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3df
ZmVhdHVyZXMpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHdpbmRvd19mZWF0dXJl
cy0+Y29yZSk7CkBAIC0xMDcsOSArMTA3LDkgQEAgdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX2lu
dF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXQKICAq
IGl0IGlzIGVtYmVkZGVkIGluc2lkZSB0aGUgRXdrX1dpbmRvd19GZWF0dXJlcyB3aG9zZSByZWYg
Y291bnQgaXMgaW5pdGlhbGl6ZWQsIGlmIGNvcmUgaXMgQGMgMCBhIG5ldyBvbmUgaXMgY3JlYXRl
ZCB3aXRoIHRoZSBkZWZhdWx0IGZlYXR1cmVzLgogICogQHJldHVybiBhIG5ldyBhbGxvY2F0ZWQg
dGhlIEV3a19XaW5kb3dfRmVhdHVyZXMgb2JqZWN0IG9uIHN1Y2VzcyBvciBAYyAwIG9uIGZhaWx1
cmUKICAqLwotRXdrX1dpbmRvd19GZWF0dXJlcyAqZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJv
bV9jb3JlKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzICpjb3JlKQorRXdrX1dpbmRvd19G
ZWF0dXJlcyogZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvbnN0IFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzKiBjb3JlKQogewotICAgIEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRv
d19mZWF0dXJlcyA9IHN0YXRpY19jYXN0PEV3a19XaW5kb3dfRmVhdHVyZXMqPihtYWxsb2Moc2l6
ZW9mKCp3aW5kb3dfZmVhdHVyZXMpKSk7CisgICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93
X2ZlYXR1cmVzID0gc3RhdGljX2Nhc3Q8RXdrX1dpbmRvd19GZWF0dXJlcyo+KG1hbGxvYyhzaXpl
b2YoKndpbmRvd19mZWF0dXJlcykpKTsKICAgICBpZiAoIXdpbmRvd19mZWF0dXJlcykgewogICAg
ICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIEV3a19XaW5kb3dfRmVhdHVyZXMuIik7
CiAgICAgICAgIHJldHVybiAwOwo=
</data>
<flag name="review"
          id="104562"
          type_id="1"
          status="-"
          setter="lucas.de.marchi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>107784</attachid>
            <date>2011-09-17 23:10:43 -0700</date>
            <delta_ts>2011-09-20 10:22:28 -0700</delta_ts>
            <desc>uncrustify.cfg</desc>
            <filename>uncrustify.cfg</filename>
            <type>text/plain</type>
            <size>3544</size>
            <attacher name="Lucas De Marchi">lucas.de.marchi</attacher>
            
              <data encoding="base64">c3BfYXJpdGg9aWdub3JlCnNwX2Fzc2lnbj1pZ25vcmUKc3BfYXNzaWduX2RlZmF1bHQ9aWdub3Jl
CnNwX2JlZm9yZV9hc3NpZ249aWdub3JlCnNwX2FmdGVyX2Fzc2lnbj1pZ25vcmUKc3BfZW51bV9h
c3NpZ249aWdub3JlCnNwX2VudW1fYmVmb3JlX2Fzc2lnbj1pZ25vcmUKc3BfZW51bV9hZnRlcl9h
c3NpZ249aWdub3JlCnNwX3BwX2NvbmNhdD1pZ25vcmUKc3BfcHBfc3RyaW5naWZ5PWlnbm9yZQpz
cF9ib29sPWlnbm9yZQpzcF9jb21wYXJlPWlnbm9yZQpzcF9pbnNpZGVfcGFyZW49aWdub3JlCnNw
X3BhcmVuX3BhcmVuPWlnbm9yZQpzcF9iYWxhbmNlX25lc3RlZF9wYXJlbnM9ZmFsc2UKc3BfcGFy
ZW5fYnJhY2U9aWdub3JlCnNwX2JlZm9yZV9wdHJfc3Rhcj1yZW1vdmUKc3BfYmVmb3JlX3VubmFt
ZWRfcHRyX3N0YXI9aWdub3JlCnNwX2JldHdlZW5fcHRyX3N0YXI9aWdub3JlCnNwX2FmdGVyX3B0
cl9zdGFyPWZvcmNlCnNwX2FmdGVyX3B0cl9zdGFyX2Z1bmM9Zm9yY2UKc3BfYmVmb3JlX3B0cl9z
dGFyX2Z1bmM9cmVtb3ZlCnNwX2JlZm9yZV9ieXJlZj1pZ25vcmUKc3BfYmVmb3JlX3VubmFtZWRf
YnlyZWY9aWdub3JlCnNwX2FmdGVyX2J5cmVmPWlnbm9yZQpzcF9hZnRlcl9ieXJlZl9mdW5jPWln
bm9yZQpzcF9iZWZvcmVfYnlyZWZfZnVuYz1pZ25vcmUKc3BfYWZ0ZXJfdHlwZT1pZ25vcmUKc3Bf
dGVtcGxhdGVfYW5nbGU9aWdub3JlCnNwX2JlZm9yZV9hbmdsZT1pZ25vcmUKc3BfaW5zaWRlX2Fu
Z2xlPWlnbm9yZQpzcF9hZnRlcl9hbmdsZT1pZ25vcmUKc3BfYW5nbGVfcGFyZW49aWdub3JlCnNw
X2FuZ2xlX3dvcmQ9aWdub3JlCnNwX2JlZm9yZV9zcGFyZW49aWdub3JlCnNwX2luc2lkZV9zcGFy
ZW49aWdub3JlCnNwX2luc2lkZV9zcGFyZW5fY2xvc2U9aWdub3JlCnNwX2FmdGVyX3NwYXJlbj1p
Z25vcmUKc3Bfc3BhcmVuX2JyYWNlPWlnbm9yZQpzcF9pbnZhcmlhbnRfcGFyZW49aWdub3JlCnNw
X2FmdGVyX2ludmFyaWFudF9wYXJlbj1pZ25vcmUKc3Bfc3BlY2lhbF9zZW1pPWlnbm9yZQpzcF9i
ZWZvcmVfc2VtaT1pZ25vcmUKc3BfYmVmb3JlX3NlbWlfZm9yPWlnbm9yZQpzcF9iZWZvcmVfc2Vt
aV9mb3JfZW1wdHk9aWdub3JlCnNwX2FmdGVyX3NlbWk9aWdub3JlCnNwX2FmdGVyX3NlbWlfZm9y
PWlnbm9yZQpzcF9hZnRlcl9zZW1pX2Zvcl9lbXB0eT1pZ25vcmUKc3BfYmVmb3JlX3NxdWFyZT1p
Z25vcmUKc3BfYmVmb3JlX3NxdWFyZXM9aWdub3JlCnNwX2luc2lkZV9zcXVhcmU9aWdub3JlCnNw
X2FmdGVyX2NvbW1hPWlnbm9yZQpzcF9iZWZvcmVfY29tbWE9aWdub3JlCnNwX2JlZm9yZV9lbGxp
cHNpcz1pZ25vcmUKc3BfYWZ0ZXJfY2xhc3NfY29sb249aWdub3JlCnNwX2JlZm9yZV9jbGFzc19j
b2xvbj1pZ25vcmUKc3BfYmVmb3JlX2Nhc2VfY29sb249cmVtb3ZlCnNwX2FmdGVyX29wZXJhdG9y
PWlnbm9yZQpzcF9hZnRlcl9vcGVyYXRvcl9zeW09aWdub3JlCnNwX2FmdGVyX2Nhc3Q9aWdub3Jl
CnNwX2luc2lkZV9wYXJlbl9jYXN0PWlnbm9yZQpzcF9jcHBfY2FzdF9wYXJlbj1pZ25vcmUKc3Bf
c2l6ZW9mX3BhcmVuPWlnbm9yZQpzcF9hZnRlcl90YWc9aWdub3JlCnNwX2luc2lkZV9icmFjZXNf
ZW51bT1pZ25vcmUKc3BfaW5zaWRlX2JyYWNlc19zdHJ1Y3Q9aWdub3JlCnNwX2luc2lkZV9icmFj
ZXM9aWdub3JlCnNwX2luc2lkZV9icmFjZXNfZW1wdHk9aWdub3JlCnNwX3R5cGVfZnVuYz1pZ25v
cmUKc3BfZnVuY19wcm90b19wYXJlbj1pZ25vcmUKc3BfZnVuY19kZWZfcGFyZW49aWdub3JlCnNw
X2luc2lkZV9mcGFyZW5zPWlnbm9yZQpzcF9pbnNpZGVfZnBhcmVuPWlnbm9yZQpzcF9zcXVhcmVf
ZnBhcmVuPWlnbm9yZQpzcF9mcGFyZW5fYnJhY2U9aWdub3JlCnNwX2Z1bmNfY2FsbF9wYXJlbj1p
Z25vcmUKc3BfZnVuY19jYWxsX3VzZXJfcGFyZW49aWdub3JlCnNwX2Z1bmNfY2xhc3NfcGFyZW49
aWdub3JlCnNwX3JldHVybl9wYXJlbj1pZ25vcmUKc3BfYXR0cmlidXRlX3BhcmVuPWlnbm9yZQpz
cF9kZWZpbmVkX3BhcmVuPWlnbm9yZQpzcF90aHJvd19wYXJlbj1pZ25vcmUKc3BfbWFjcm89aWdu
b3JlCnNwX21hY3JvX2Z1bmM9aWdub3JlCnNwX2Vsc2VfYnJhY2U9aWdub3JlCnNwX2JyYWNlX2Vs
c2U9aWdub3JlCnNwX2JyYWNlX3R5cGVkZWY9aWdub3JlCnNwX2NhdGNoX2JyYWNlPWlnbm9yZQpz
cF9icmFjZV9jYXRjaD1pZ25vcmUKc3BfZmluYWxseV9icmFjZT1pZ25vcmUKc3BfYnJhY2VfZmlu
YWxseT1pZ25vcmUKc3BfdHJ5X2JyYWNlPWlnbm9yZQpzcF9nZXRzZXRfYnJhY2U9aWdub3JlCnNw
X2JlZm9yZV9kYz1pZ25vcmUKc3BfYWZ0ZXJfZGM9aWdub3JlCnNwX2RfYXJyYXlfY29sb249aWdu
b3JlCnNwX25vdD1pZ25vcmUKc3BfaW52PWlnbm9yZQpzcF9hZGRyPWlnbm9yZQpzcF9tZW1iZXI9
aWdub3JlCnNwX2RlcmVmPWlnbm9yZQpzcF9zaWduPWlnbm9yZQpzcF9pbmNkZWM9aWdub3JlCnNw
X2JlZm9yZV9ubF9jb250PWlnbm9yZQpzcF9hZnRlcl9vY19zY29wZT1pZ25vcmUKc3BfYWZ0ZXJf
b2NfY29sb249aWdub3JlCnNwX2JlZm9yZV9vY19jb2xvbj1pZ25vcmUKc3BfYWZ0ZXJfc2VuZF9v
Y19jb2xvbj1pZ25vcmUKc3BfYmVmb3JlX3NlbmRfb2NfY29sb249aWdub3JlCnNwX2FmdGVyX29j
X3R5cGU9aWdub3JlCnNwX2FmdGVyX29jX3JldHVybl90eXBlPWlnbm9yZQpzcF9hZnRlcl9vY19h
dF9zZWw9aWdub3JlCnNwX2FmdGVyX29jX2F0X3NlbF9wYXJlbnM9aWdub3JlCnNwX2luc2lkZV9v
Y19hdF9zZWxfcGFyZW5zPWlnbm9yZQpzcF9iZWZvcmVfb2NfYmxvY2tfY2FyZXQ9aWdub3JlCnNw
X2FmdGVyX29jX2Jsb2NrX2NhcmV0PWlnbm9yZQpzcF9jb25kX2NvbG9uPWlnbm9yZQpzcF9jb25k
X3F1ZXN0aW9uPWlnbm9yZQpzcF9jYXNlX2xhYmVsPWlnbm9yZQpzcF9yYW5nZT1pZ25vcmUKc3Bf
Y210X2NwcF9zdGFydD1pZ25vcmUKc3BfZW5kaWZfY210PWlnbm9yZQpjbXRfaW5kZW50X211bHRp
PWZhbHNlCgppbmRlbnRfY2xhc3NfY29sb249ZmFsc2UKaW5kZW50X2NtdF93aXRoX3RhYnM9ZmFs
c2UKaW5kZW50X2NvbHVtbnM9NAppbmRlbnRfd2l0aF90YWJzPTAKYWxpZ25fdmFyX2RlZl9jb2xv
bj1mYWxzZQphbGlnbl92YXJfZGVmX3N0YXJfc3R5bGU9MQphbGlnbl92YXJfZGVmX2FtcF9zdHls
ZT0xCmFsaWduX2tlZXBfdGFicz1mYWxzZQphbGlnbl93aXRoX3RhYnM9ZmFsc2UKYWxpZ25fb25f
dGFic3RvcD1mYWxzZQoKc2V0IEZPUiBFSU5BX0xJU1RfRk9SRUFDSApzZXQgRk9SIEVJTkFfTElT
VF9SRVZFUlNFX0ZPUkVBQ0gKc2V0IEZPUiBFSU5BX0xJU1RfRk9SRUFDSF9TQUZFCnNldCBGT1Ig
RUlOQV9MSVNUX0ZSRUUKc2V0IEZPUiBFSU5BX0lURVJBVE9SX0ZPUkVBQ0gKc2V0IEZPUiBFSU5B
X0lOTElTVF9GT1JFQUNICnNldCBGT1IgRUlOQV9JTkxJU1RfUkVWRVJTRV9GT1JFQUNICnNldCBG
T1IgRUlOQV9JTkxJU1RfRk9SRUFDSF9TQUZFCnNldCBGT1IgdWRldl9saXN0X2VudHJ5X2ZvcmVh
Y2gKc2V0IFRZUEUgRUlOQV9NQUdJQwpzZXQgVFlQRSBFSU5BX0lOTElTVApzZXQgSUdOT1JFRCBf
X1VOVVNFRF9fCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107785</attachid>
            <date>2011-09-17 23:11:45 -0700</date>
            <delta_ts>2011-09-20 10:54:04 -0700</delta_ts>
            <desc>webkit-efl.patch</desc>
            <filename>webkit-efl.patch</filename>
            <type>text/plain</type>
            <size>212201</size>
            <attacher name="Lucas De Marchi">lucas.de.marchi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwCmluZGV4IGEzMGE4YjEuLjI0MzU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtNDAyLDggKzQwMiw4
IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAKICAgICBEYXRhYmFzZURldGFpbHMgZGV0YWls
cyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRh
dGFiYXNlTmFtZSwgb3JpZ2luKTsKICAgICBxdW90YSA9IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFi
YXNlX3F1b3RhKG1fdmlldywKLSAgICAgICAgICAgIGtpdChmcmFtZSksIGRhdGFiYXNlTmFtZS51
dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWls
cy5leHBlY3RlZFVzYWdlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga2l0KGZyYW1lKSwgZGF0YWJhc2VOYW1lLnV0ZjgoKS5kYXRhKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLmN1cnJlbnRVc2Fn
ZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CiAKICAgICAvKiBpZiBjbGllbnQgZGlkIG5v
dCBzZXQgcXVvdGEsIGFuZCBkYXRhYmFzZSBpcyBiZWluZyBjcmVhdGVkIG5vdywgdGhlCiAgICAg
ICogZGVmYXVsdCBxdW90YSBpcyBhcHBsaWVkCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBDaHJv
bWVDbGllbnRFZmw6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNo
b29zZXI+IHBycEZpbGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgRUlOQV9MSVNUX0ZSRUUoc2Vs
ZWN0ZWRGaWxlbmFtZXMsIGZpbGVuYW1lKSB7Ci0gICAgICAgIGZpbGVuYW1lcy5hcHBlbmQoKGNo
YXIgKilmaWxlbmFtZSk7CisgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQoKGNoYXIqKWZpbGVuYW1l
KTsKICAgICAgICAgZnJlZShmaWxlbmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAppbmRleCA2YTRhYzVl
Li5mZmNiNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHAKQEAgLTM4NSwyNyArMzg1LDI3IEBAIGJvb2wgRWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkK
ICAgICAgICAgc3dpdGNoIChrZXlFdmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAg
ICAgICAgY2FzZSBWS19MRUZUOgogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
Znkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVu
ZCA6IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwKLSAgICAgICAgICAgICAgICAgICAg
RGlyZWN0aW9uTGVmdCwKLSAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/
IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAotICAgICAgICAgICAgICAg
ICAgICBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERpcmVjdGlvbkxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrZXlFdmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVs
YXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyVHJpZ2dl
cmVkKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgog
ICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5
KCkgPyBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCA6IEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZSwKLSAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uUmlnaHQsCi0gICAg
ICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBD
aGFyYWN0ZXJHcmFudWxhcml0eSwKLSAgICAgICAgICAgICAgICAgICAgVXNlclRyaWdnZXJlZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb25SaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5
KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJUcmlnZ2VyZWQpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVktfVVA6CiAgICAgICAgICAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLAotICAgICAg
ICAgICAgICAgICAgICBEaXJlY3Rpb25CYWNrd2FyZCwKLSAgICAgICAgICAgICAgICAgICAga2V5
RXZlbnQtPmN0cmxLZXkoKSA/IFBhcmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5
LAotICAgICAgICAgICAgICAgICAgICBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbkJhY2t3YXJkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/IFBhcmFncmFwaEdy
YW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVXNlclRyaWdnZXJlZCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgY2FzZSBWS19ET1dOOgogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
Znkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVu
ZCA6IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwKLSAgICAgICAgICAgICAgICAgICAg
RGlyZWN0aW9uRm9yd2FyZCwKLSAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXko
KSA/IFBhcmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAotICAgICAgICAgICAg
ICAgICAgICBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERpcmVjdGlvbkZvcndhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXlFdmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5l
R3JhbnVsYXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2Vy
VHJpZ2dlcmVkKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwCmluZGV4IDQ1MmY2MjAuLjc1N2Q2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRnJhbWVMb2FkZXJDbGllbnRFZmw6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
KEV2YXNfT2JqZWN0ICp2aWV3KQorRnJhbWVMb2FkZXJDbGllbnRFZmw6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQogICAgIDogbV92aWV3KHZpZXcpCiAgICAgLCBtX2Zy
YW1lKDApCiAgICAgLCBtX3VzZXJBZ2VudCgiIikKQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldp
ZGdldCkKIH0KIAogUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IEtVUkwmIGJhc2VVUkwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OndpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiAgICAg
Ly8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxs
YmFjawogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVudExvYWRlciAqbCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZENoYW5nZVRpdGxl
KERvY3VtZW50TG9hZGVyKiBsKQogewogICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ljb25EYXRhYmFzZUNsaWVudEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRFZmwuY3BwCmlu
ZGV4IDY0ZTA0M2UuLmM5ZTQzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0ljb25EYXRhYmFzZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcApAQCAtMSw0ICsxLDQg
QEAKLS8qIAorLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAppbmRleCBi
OTVkMGE4Li4xNTEzM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAK
QEAgLTEsNCArMSw0IEBACi0vKiAKKy8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19hdXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAKaW5k
ZXggMmE2YjRhNy4uYTRjYjllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19hdXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGguY3BwCkBAIC0z
MSw3ICszMSw3IEBAIHZvaWQgZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19B
dXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGNhbGxiYWNrKQogI2VuZGlmCiB9CiAKLXZvaWQgZXdr
X2F1dGhfY3JlZGVudGlhbHNfc2V0KGNoYXIgKnVzZXJuYW1lLCBjaGFyICpwYXNzd29yZCwgdm9p
ZCAqZGF0YSkKK3ZvaWQgZXdrX2F1dGhfY3JlZGVudGlhbHNfc2V0KGNoYXIqIHVzZXJuYW1lLCBj
aGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSkKIHsKICNpZiBVU0UoU09VUCkKICAgICBld2tfYXV0
aF9zb3VwX2NyZWRlbnRpYWxzX3NldCh1c2VybmFtZSwgcGFzc3dvcmQsIGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCmluZGV4IDM5MGU4YmQuLjA5ZjNkMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKQEAgLTQwLDkgKzQwLDkgQEAg
ZXh0ZXJuICJDIiB7CiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgX0V3a19BdXRoX0RhdGEgewotICAg
IFNvdXBNZXNzYWdlICptc2c7Ci0gICAgU291cEF1dGggKmF1dGg7Ci0gICAgU291cFNlc3Npb24g
KnNlc3Npb247CisgICAgU291cE1lc3NhZ2UqIG1zZzsKKyAgICBTb3VwQXV0aCogYXV0aDsKKyAg
ICBTb3VwU2Vzc2lvbiogc2Vzc2lvbjsKIH0gRXdrX0F1dGhfRGF0YTsKIAogc3RhdGljIEV3a19B
dXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrID0g
MDsKQEAgLTU1LDE1ICs1NSwxNSBAQCBzdGF0aWMgdm9pZCBmcmVlX2F1dGhfZGF0YShFd2tfQXV0
aF9EYXRhKik7CiBHX0RFRklORV9UWVBFX1dJVEhfQ09ERShFd2tfU291cF9BdXRoX0RpYWxvZywg
ZXdrX2F1dGhfc291cF9kaWFsb2csIEdfVFlQRV9PQkpFQ1QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoU09VUF9UWVBFX1NFU1NJT05fRkVBVFVSRSwgZXdr
X2F1dGhfc291cF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQpKQogCi1zdGF0aWMgdm9pZCBl
d2tfYXV0aF9zb3VwX2RpYWxvZ19jbGFzc19pbml0KEV3a19Tb3VwX0F1dGhfRGlhbG9nQ2xhc3Mg
KmtsYXNzKQorc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfY2xhc3NfaW5pdChFd2tf
U291cF9BdXRoX0RpYWxvZ0NsYXNzKiBrbGFzcykKIHsKIH0KIAotc3RhdGljIHZvaWQgZXdrX2F1
dGhfc291cF9kaWFsb2dfaW5pdChFd2tfU291cF9BdXRoX0RpYWxvZyAqaW5zdGFuY2UpCitzdGF0
aWMgdm9pZCBld2tfYXV0aF9zb3VwX2RpYWxvZ19pbml0KEV3a19Tb3VwX0F1dGhfRGlhbG9nKiBp
bnN0YW5jZSkKIHsKIH0KIAotc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfc2Vzc2lv
bl9mZWF0dXJlX2luaXQoU291cFNlc3Npb25GZWF0dXJlSW50ZXJmYWNlICpmZWF0dXJlX2ludGVy
ZmFjZSwgZ3BvaW50ZXIgaW50ZXJmYWNlX2RhdGEpCitzdGF0aWMgdm9pZCBld2tfYXV0aF9zb3Vw
X2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJbnRlcmZhY2Uq
IGZlYXR1cmVfaW50ZXJmYWNlLCBncG9pbnRlciBpbnRlcmZhY2VfZGF0YSkKIHsKICAgICBmZWF0
dXJlX2ludGVyZmFjZS0+YXR0YWNoID0gYXR0YWNoOwogICAgIGZlYXR1cmVfaW50ZXJmYWNlLT5k
ZXRhY2ggPSBkZXRhY2g7CkBAIC03NCwyNyArNzQsMjcgQEAgdm9pZCBld2tfYXV0aF9zb3VwX3No
b3dfZGlhbG9nX2NhbGxiYWNrX3NldChFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBjYWxs
YmEKICAgICBld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayA9IGNhbGxiYWNrOwogfQogCi12
b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIgKnVzZXJuYW1lLCBj
b25zdCBjaGFyICpwYXNzd29yZCwgdm9pZCAqZGF0YSkKK3ZvaWQgZXdrX2F1dGhfc291cF9jcmVk
ZW50aWFsc19zZXQoY29uc3QgY2hhciogdXNlcm5hbWUsIGNvbnN0IGNoYXIqIHBhc3N3b3JkLCB2
b2lkKiBkYXRhKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXdr
X0F1dGhfRGF0YSAqYXV0aF9kYXRhID0gKEV3a19BdXRoX0RhdGEgKilkYXRhOworICAgIEV3a19B
dXRoX0RhdGEqIGF1dGhfZGF0YSA9IChFd2tfQXV0aF9EYXRhKilkYXRhOwogICAgIHNvdXBfYXV0
aF9hdXRoZW50aWNhdGUoYXV0aF9kYXRhLT5hdXRoLCB1c2VybmFtZSwgcGFzc3dvcmQpOwogICAg
IHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2UoYXV0aF9kYXRhLT5zZXNzaW9uLCBhdXRoX2Rh
dGEtPm1zZyk7CiAgICAgZnJlZV9hdXRoX2RhdGEoYXV0aF9kYXRhKTsKIH0KIAotc3RhdGljIHZv
aWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUoU291cFNlc3Npb24gKnNlc3Npb24sIFNvdXBNZXNzYWdl
ICptc2csIFNvdXBBdXRoICphdXRoLCBnYm9vbGVhbiByZXRyeWluZywgZ3BvaW50ZXIgLyogdXNl
cl9kYXRhICovKQorc3RhdGljIHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUoU291cFNlc3Npb24q
IHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtc2csIFNvdXBBdXRoKiBhdXRoLCBnYm9vbGVhbiByZXRy
eWluZywgZ3BvaW50ZXIgLyogdXNlcl9kYXRhICovKQogewotICAgIFNvdXBVUkkgKnVyaTsKLSAg
ICBFd2tfQXV0aF9EYXRhICphdXRoX2RhdGE7Ci0gICAgY29uc3QgY2hhciAqcmVhbG07CisgICAg
U291cFVSSSogdXJpOworICAgIEV3a19BdXRoX0RhdGEqIGF1dGhfZGF0YTsKKyAgICBjb25zdCBj
aGFyKiByZWFsbTsKIAogICAgIGlmICghZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2spCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dGhfZGF0YSA9IChFd2tfQXV0aF9EYXRhICopY2FsbG9j
KDEsIHNpemVvZihFd2tfQXV0aF9EYXRhKSk7CisgICAgYXV0aF9kYXRhID0gKEV3a19BdXRoX0Rh
dGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX0F1dGhfRGF0YSkpOwogCiAgICAgaWYgKCFhdXRoX2Rh
dGEpIHsKICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfQXV0aF9EYXRh
Iik7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUo
U291cFNlc3Npb24gKnNlc3Npb24sIFNvdXBNZXNzYWdlICptc2csIFNvdXBBdXQKICAgICBld2tf
YXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayhyZWFsbSwgc291cF91cmlfdG9fc3RyaW5nKHVyaSwg
VFJVRSksIGF1dGhfZGF0YSk7CiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKEV3a19B
dXRoX0RhdGEgKmF1dGhfZGF0YSkKK3N0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKEV3a19BdXRo
X0RhdGEqIGF1dGhfZGF0YSkKIHsKICAgICBnX29iamVjdF91bnJlZihhdXRoX2RhdGEtPm1zZyk7
CiAgICAgZ19vYmplY3RfdW5yZWYoYXV0aF9kYXRhLT5zZXNzaW9uKTsKQEAgLTEyNiwxNCArMTI2
LDE0IEBAIHN0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKEV3a19BdXRoX0RhdGEgKmF1dGhfZGF0
YSkKICAgICBmcmVlKGF1dGhfZGF0YSk7CiB9CiAKLXN0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vz
c2lvbkZlYXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKQorc3RhdGljIHZvaWQg
YXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlciwgU291cFNlc3Npb24qIHNlc3Npb24p
CiB7CiAgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiYXV0aGVudGljYXRlIiwgR19DQUxM
QkFDSyhzZXNzaW9uX2F1dGhlbnRpY2F0ZSksIG1hbmFnZXIpOwogfQogCi1zdGF0aWMgdm9pZCBk
ZXRhY2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lvbiAqc2Vzc2lvbikK
K3N0YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIsIFNvdXBTZXNz
aW9uKiBzZXNzaW9uKQogewotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
YyhzZXNzaW9uLCAodm9pZCAqKXNlc3Npb25fYXV0aGVudGljYXRlLCBtYW5hZ2VyKTsKKyAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoc2Vzc2lvbiwgKHZvaWQqKXNlc3Np
b25fYXV0aGVudGljYXRlLCBtYW5hZ2VyKTsKIH0KIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCmluZGV4IDZmYWZmYzguLjBlYWFk
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCkBAIC0zOCwx
MSArMzgsMTEgQEAKIHN0cnVjdCBfRXdrX0NvbnRleHRfTWVudSB7CiAgICAgdW5zaWduZWQgaW50
IF9fcmVmOyAvKio8IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG9iamVjdCAqLwogI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQotICAgIFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlciAq
Y29udHJvbGxlcjsgLyoqPCB0aGUgV2ViQ29yZSdzIG9iamVjdCB3aGljaCBpcyByZXNwb25zaWJs
ZSBmb3IgdGhlIGNvbnRleHQgbWVudSAqLworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJv
bGxlciogY29udHJvbGxlcjsgLyoqPCB0aGUgV2ViQ29yZSdzIG9iamVjdCB3aGljaCBpcyByZXNw
b25zaWJsZSBmb3IgdGhlIGNvbnRleHQgbWVudSAqLwogI2VuZGlmCi0gICAgRXZhc19PYmplY3Qg
KnZpZXc7IC8qKjwgdGhlIHZpZXcgb2JqZWN0ICovCisgICAgRXZhc19PYmplY3QqIHZpZXc7IC8q
KjwgdGhlIHZpZXcgb2JqZWN0ICovCiAKLSAgICBFaW5hX0xpc3QgKml0ZW1zOyAvKio8IHRoZSBs
aXN0IG9mIGl0ZW1zICovCisgICAgRWluYV9MaXN0KiBpdGVtczsgLyoqPCB0aGUgbGlzdCBvZiBp
dGVtcyAqLwogfTsKIAogLyoqCkBAIC01MywyMyArNTMsMjMgQEAgc3RydWN0IF9Fd2tfQ29udGV4
dF9NZW51X0l0ZW0gewogICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGU7IC8qKjwg
Y29udGFpbnMgdGhlIHR5cGUgb2YgdGhlIGl0ZW0gKi8KICAgICBFd2tfQ29udGV4dF9NZW51X0Fj
dGlvbiBhY3Rpb247IC8qKjwgY29udGFpbnMgdGhlIGFjdGlvbiBvZiB0aGUgaXRlbSAqLwogCi0g
ICAgY29uc3QgY2hhciAqdGl0bGU7IC8qKjwgY29udGFpbnMgdGhlIHRpdGxlIG9mIHRoZSBpdGVt
ICovCi0gICAgRXdrX0NvbnRleHRfTWVudSAqc3VibWVudTsgLyoqPCBjb250YWlucyB0aGUgcG9p
bnRlciB0byB0aGUgc3VibWVudSBvZiB0aGUgaXRlbSAqLworICAgIGNvbnN0IGNoYXIqIHRpdGxl
OyAvKio8IGNvbnRhaW5zIHRoZSB0aXRsZSBvZiB0aGUgaXRlbSAqLworICAgIEV3a19Db250ZXh0
X01lbnUqIHN1Ym1lbnU7IC8qKjwgY29udGFpbnMgdGhlIHBvaW50ZXIgdG8gdGhlIHN1Ym1lbnUg
b2YgdGhlIGl0ZW0gKi8KIAotICAgIEVpbmFfQm9vbCBjaGVja2VkOjE7Ci0gICAgRWluYV9Cb29s
IGVuYWJsZWQ6MTsKKyAgICBFaW5hX0Jvb2wgY2hlY2tlZCA6IDE7CisgICAgRWluYV9Cb29sIGVu
YWJsZWQgOiAxOwogfTsKIAotdm9pZCBld2tfY29udGV4dF9tZW51X3JlZihFd2tfQ29udGV4dF9N
ZW51ICptZW51KQordm9pZCBld2tfY29udGV4dF9tZW51X3JlZihFd2tfQ29udGV4dF9NZW51KiBt
ZW51KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG1lbnUpOwogICAgIG1lbnUt
Pl9fcmVmKys7CiB9CiAKLXZvaWQgZXdrX2NvbnRleHRfbWVudV91bnJlZihFd2tfQ29udGV4dF9N
ZW51ICptZW51KQordm9pZCBld2tfY29udGV4dF9tZW51X3VucmVmKEV3a19Db250ZXh0X01lbnUq
IG1lbnUpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4obWVudSk7Ci0gICAgdm9p
ZCAqaXRlbTsKKyAgICB2b2lkKiBpdGVtOwogCiAgICAgaWYgKC0tbWVudS0+X19yZWYpCiAgICAg
ICAgIHJldHVybjsKQEAgLTgwLDMwICs4MCwzMCBAQCB2b2lkIGV3a19jb250ZXh0X21lbnVfdW5y
ZWYoRXdrX0NvbnRleHRfTWVudSAqbWVudSkKICAgICBmcmVlKG1lbnUpOwogfQogCi1FaW5hX0Jv
b2wgZXdrX2NvbnRleHRfbWVudV9kZXN0cm95KEV3a19Db250ZXh0X01lbnUgKm1lbnUpCitFaW5h
X0Jvb2wgZXdrX2NvbnRleHRfbWVudV9kZXN0cm95KEV3a19Db250ZXh0X01lbnUqIG1lbnUpCiB7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKG1lbnUsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChtZW51LT5jb250cm9sbGVyLCBFSU5BX0ZBTFNFKTsKICAgICBtZW51LT5jb250cm9sbGVy
LT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKLSNlbHNlIAorI2Vs
c2UKICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICNlbmRpZgogfQogCi1jb25zdCBFaW5hX0xpc3Qg
KmV3a19jb250ZXh0X21lbnVfaXRlbV9saXN0X2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51ICpv
KQorY29uc3QgRWluYV9MaXN0KiBld2tfY29udGV4dF9tZW51X2l0ZW1fbGlzdF9nZXQoY29uc3Qg
RXdrX0NvbnRleHRfTWVudSogbykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwobywgMCk7CiAKICAgICByZXR1cm4gby0+aXRlbXM7CiB9CiAKLUV3a19Db250ZXh0X01lbnVf
SXRlbSAqZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlw
ZSB0eXBlLAotICAgICAgICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24sIEV3a19Db250
ZXh0X01lbnUgKnN1Ym1lbnUsCi0gICAgICAgIGNvbnN0IGNoYXIgKnRpdGxlLCBFaW5hX0Jvb2wg
Y2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCitFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGV3a19j
b250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFd2tfQ29udGV4
dF9NZW51X0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01lbnUqIHN1Ym1lbnUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGl0
bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCkKIHsKLSAgICBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0gKml0ZW0gPSAoRXdrX0NvbnRleHRfTWVudV9JdGVtICopIG1hbGxvYyhz
aXplb2YoKml0ZW0pKTsKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX0Nv
bnRleHRfTWVudV9JdGVtKikgbWFsbG9jKHNpemVvZigqaXRlbSkpOwogICAgIGlmICghaXRlbSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBFd2tfQ29udGV4dF9NZW51
X0l0ZW0gKmV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5
cGUgdHlwZQogICAgIHJldHVybiBpdGVtOwogfQogCi1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3NlbGVjdChFd2tfQ29udGV4dF9NZW51ICptZW51LCBFd2tfQ29udGV4dF9NZW51X0l0
ZW0gKml0ZW0pCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdChFd2tfQ29u
dGV4dF9NZW51KiBtZW51LCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1l
bnUsIEVJTkFfRkFMU0UpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIEVpbmFfQm9vbCBld2tfY29udGV4
dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUgKm1lbnUsIEV3a19Db250ZXh0X01l
bnVfCiAjZW5kaWYKIH0KIAotdm9pZCBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShFd2tfQ29u
dGV4dF9NZW51X0l0ZW0gKml0ZW0pCit2b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlKEV3
a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihpdGVtKTsKIApAQCAtMTQyLDY1ICsxNDIsNjUgQEAgdm9pZCBld2tfY29udGV4dF9tZW51
X2l0ZW1fZnJlZShFd2tfQ29udGV4dF9NZW51X0l0ZW0gKml0ZW0pCiAgICAgZnJlZShpdGVtKTsK
IH0KIAotRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5
cGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbykKK0V3a19Db250ZXh0X01lbnVf
SXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfQ29udGV4
dF9NZW51X0l0ZW0qIG8pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG8s
IEVXS19BQ1RJT05fVFlQRSk7CiAgICAgcmV0dXJuIG8tPnR5cGU7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBF
d2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKQorRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfaXRlbV90eXBlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG8sIEV3a19Db250ZXh0X01l
bnVfSXRlbV9UeXBlIHR5cGUpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KG8sIEVJTkFfRkFMU0UpOwogICAgIG8tPnR5cGUgPSB0eXBlOwogICAgIHJldHVybiBFSU5BX1RS
VUU7CiB9CiAKLUV3a19Db250ZXh0X01lbnVfQWN0aW9uIGV3a19jb250ZXh0X21lbnVfaXRlbV9h
Y3Rpb25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbykKK0V3a19Db250ZXh0X01l
bnVfQWN0aW9uIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19Db250
ZXh0X01lbnVfSXRlbSogbykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
bywgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT04pOwogICAgIHJldHVybiBvLT5h
Y3Rpb247CiB9CiAKLUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldChF
d2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGFjdGlvbikK
K0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9N
ZW51X0l0ZW0qIG8sIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGFjdGlvbikKIHsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgRUlOQV9GQUxTRSk7CiAgICAgby0+YWN0aW9u
ID0gYWN0aW9uOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a19j
b250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpv
KQorY29uc3QgY2hhciogZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIG8pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKG8sIDApOwogICAgIHJldHVybiBvLT50aXRsZTsKIH0KIAotY29uc3QgY2hhciAqZXdrX2Nv
bnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIGNvbnN0
IGNoYXIgKnRpdGxlKQorY29uc3QgY2hhciogZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3Nl
dChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG8sIGNvbnN0IGNoYXIqIHRpdGxlKQogewogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCAwKTsKICAgICBlaW5hX3N0cmluZ3NoYXJl
X3JlcGxhY2UoJm8tPnRpdGxlLCB0aXRsZSk7CiAgICAgcmV0dXJuIG8tPnRpdGxlOwogfQogCi1F
aW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19Db250
ZXh0X01lbnVfSXRlbSAqbykKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tl
ZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvKQogewogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChvLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gby0+Y2hlY2tl
ZDsKIH0KIAotRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChFd2tf
Q29udGV4dF9NZW51X0l0ZW0gKm8sIEVpbmFfQm9vbCBjaGVja2VkKQorRWluYV9Cb29sIGV3a19j
b250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG8sIEVp
bmFfQm9vbCBjaGVja2VkKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChv
LCBFSU5BX0ZBTFNFKTsKICAgICBvLT5jaGVja2VkID0gY2hlY2tlZDsKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0
KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbykKK0VpbmFfQm9vbCBld2tfY29udGV4dF9t
ZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvKQogewog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCBFSU5BX0ZBTFNFKTsKICAgICBy
ZXR1cm4gby0+ZW5hYmxlZDsKIH0KIAotRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9l
bmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEVpbmFfQm9vbCBlbmFibGVkKQor
RWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4dF9N
ZW51X0l0ZW0qIG8sIEVpbmFfQm9vbCBlbmFibGVkKQogewogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChvLCBFSU5BX0ZBTFNFKTsKICAgICBvLT5lbmFibGVkID0gZW5hYmxlZDsK
QEAgLTIyMiw3ICsyMjIsNyBAQCBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJs
ZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRWluYV9Cb29sCiAgKgogICogQG5vdGUg
ZW1pdHMgYSBzaWduYWwgImNvbnRleHRtZW51LG5ldyIKICAqLwotRXdrX0NvbnRleHRfTWVudSAq
ZXdrX2NvbnRleHRfbWVudV9uZXcoRXZhc19PYmplY3QgKnZpZXcsIFdlYkNvcmU6OkNvbnRleHRN
ZW51Q29udHJvbGxlciAqY29udHJvbGxlcikKK0V3a19Db250ZXh0X01lbnUqIGV3a19jb250ZXh0
X21lbnVfbmV3KEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIpCiB7CiAgICAgRXdrX0NvbnRleHRfTWVudSogbWVudTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgMCk7CkBAIC0yNTYsNyArMjU2LDcgQEAg
RXdrX0NvbnRleHRfTWVudSAqZXdrX2NvbnRleHRfbWVudV9uZXcoRXZhc19PYmplY3QgKnZpZXcs
IFdlYkNvcmU6OkNvbnRleHRNZW51Q28KICAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV91bnJlZgog
ICogQHNlZSBld2tfY29udGV4dF9tZW51X2Rlc3Ryb3kKICAqLwotRWluYV9Cb29sIGV3a19jb250
ZXh0X21lbnVfZnJlZShFd2tfQ29udGV4dF9NZW51ICpvKQorRWluYV9Cb29sIGV3a19jb250ZXh0
X21lbnVfZnJlZShFd2tfQ29udGV4dF9NZW51KiBvKQogewogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChvLCBFSU5BX0ZBTFNFKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8tPnZpZXcsICJjb250ZXh0bWVudSxmcmVlIiwgbyk7CkBAIC0yNzUsMTQgKzI3
NSwxNCBAQCBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9mcmVlKEV3a19Db250ZXh0X01lbnUg
Km8pCiAgKgogICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3CiAgKi8KLXZvaWQgZXdr
X2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZChFd2tfQ29udGV4dF9NZW51ICpvLCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW0gJmNvcmUpCit2b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQo
RXdrX0NvbnRleHRfTWVudSogbywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtICZjb3JlKQogewog
ICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxFd2tfQ29u
dGV4dF9NZW51X0l0ZW1fVHlwZT4oY29yZS50eXBlKCkpOwogICAgIEV3a19Db250ZXh0X01lbnVf
QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfQWN0aW9uPihjb3Jl
LmFjdGlvbigpKTsKIAotICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSAqbWVudV9pdGVtID0gZXdr
X2NvbnRleHRfbWVudV9pdGVtX25ldwotICAgICAgICAodHlwZSwgYWN0aW9uLCAwLCBjb3JlLnRp
dGxlKCkudXRmOCgpLmRhdGEoKSwgY29yZS5jaGVja2VkKCksCi0gICAgICAgICBjb3JlLmVuYWJs
ZWQoKSk7CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBtZW51X2l0ZW0gPSBld2tfY29udGV4
dF9tZW51X2l0ZW1fbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHR5cGUsIGFjdGlvbiwgMCwgY29yZS50aXRsZSgpLnV0ZjgoKS5kYXRhKCksIGNvcmUuY2hl
Y2tlZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUu
ZW5hYmxlZCgpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihtZW51X2l0ZW0pOwog
CiAgICAgby0+aXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKG8tPml0ZW1zLCBtZW51X2l0ZW0pOwpA
QCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZChFd2tf
Q29udGV4dF9NZW51ICpvLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0KICAqCiAgKiBAc2VlIGV3
a19jb250ZXh0X21lbnVfaXRlbV9saXN0X2dldAogICovCi1Fd2tfQ29udGV4dF9NZW51ICpld2tf
Y29udGV4dF9tZW51X2N1c3RvbV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSAqbykKK0V3a19D
b250ZXh0X01lbnUqIGV3a19jb250ZXh0X21lbnVfY3VzdG9tX2dldChjb25zdCBFd2tfQ29udGV4
dF9NZW51KiBvKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCAwKTsK
IApAQCAtMzE2LDcgKzMxNiw3IEBAIEV3a19Db250ZXh0X01lbnUgKmV3a19jb250ZXh0X21lbnVf
Y3VzdG9tX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51ICpvKQogICoKICAqIEBwYXJhbSBvIHRo
ZSBjb250ZXh0IG1lbnUgb2JqZWN0CiAgKi8KLXZvaWQgZXdrX2NvbnRleHRfbWVudV9zaG93KGNv
bnN0IEV3a19Db250ZXh0X01lbnUgKm8pCit2b2lkIGV3a19jb250ZXh0X21lbnVfc2hvdyhjb25z
dCBFd2tfQ29udGV4dF9NZW51KiBvKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KG8pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcAppbmRleCA3OWQ1NTNkLi5h
YTlmMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5jcHAKQEAgLTM2LDEwICsz
NiwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogCi1FaW5hX0Jvb2wgZXdr
X2Nvb2tpZXNfZmlsZV9zZXQoY29uc3QgY2hhciAqZmlsZW5hbWUpCitFaW5hX0Jvb2wgZXdrX2Nv
b2tpZXNfZmlsZV9zZXQoY29uc3QgY2hhciogZmlsZW5hbWUpCiB7CiAjaWYgVVNFKFNPVVApCi0g
ICAgU291cENvb2tpZUphciAqY29va2llSmFyID0gMDsKKyAgICBTb3VwQ29va2llSmFyKiBjb29r
aWVKYXIgPSAwOwogICAgIGlmIChmaWxlbmFtZSkKICAgICAgICAgY29va2llSmFyID0gc291cF9j
b29raWVfamFyX3RleHRfbmV3KGZpbGVuYW1lLCBGQUxTRSk7CiAgICAgZWxzZQpAQCAtNTAsOCAr
NTAsOCBAQCBFaW5hX0Jvb2wgZXdrX2Nvb2tpZXNfZmlsZV9zZXQoY29uc3QgY2hhciAqZmlsZW5h
bWUpCiAKICAgICBzb3VwX2Nvb2tpZV9qYXJfc2V0X2FjY2VwdF9wb2xpY3koY29va2llSmFyLCBT
T1VQX0NPT0tJRV9KQVJfQUNDRVBUX05PX1RISVJEX1BBUlRZKTsKIAotICAgIFNvdXBTZXNzaW9u
ICpzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0g
ICAgU291cFNlc3Npb25GZWF0dXJlICpvbGRqYXIgPSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUo
c2Vzc2lvbiwgU09VUF9UWVBFX0NPT0tJRV9KQVIpOworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9u
ID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgU291cFNl
c3Npb25GZWF0dXJlKiBvbGRqYXIgPSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwg
U09VUF9UWVBFX0NPT0tJRV9KQVIpOwogICAgIGlmIChvbGRqYXIpCiAgICAgICAgIHNvdXBfc2Vz
c2lvbl9yZW1vdmVfZmVhdHVyZShzZXNzaW9uLCBvbGRqYXIpOwogCkBAIC02NywzMCArNjcsMzAg
QEAgRWluYV9Cb29sIGV3a19jb29raWVzX2ZpbGVfc2V0KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQog
dm9pZCBld2tfY29va2llc19jbGVhcih2b2lkKQogewogI2lmIFVTRShTT1VQKQotICAgIEdTTGlz
dCAqbDsKLSAgICBHU0xpc3QgKnA7Ci0gICAgU291cENvb2tpZUphciAqY29va2llSmFyID0gV2Vi
Q29yZTo6ZGVmYXVsdENvb2tpZUphcigpOworICAgIEdTTGlzdCogbDsKKyAgICBHU0xpc3QqIHA7
CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tpZUph
cigpOwogCiAgICAgbCA9IHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpOwog
ICAgIGZvciAocCA9IGw7IHA7IHAgPSBwLT5uZXh0KQotICAgICAgICBzb3VwX2Nvb2tpZV9qYXJf
ZGVsZXRlX2Nvb2tpZShjb29raWVKYXIsIChTb3VwQ29va2llICopcC0+ZGF0YSk7CisgICAgICAg
IHNvdXBfY29va2llX2phcl9kZWxldGVfY29va2llKGNvb2tpZUphciwgKFNvdXBDb29raWUqKXAt
PmRhdGEpOwogCiAgICAgc291cF9jb29raWVzX2ZyZWUobCk7CiAjZW5kaWYKIH0KIAotRWluYV9M
aXN0ICpld2tfY29va2llc19nZXRfYWxsKHZvaWQpCitFaW5hX0xpc3QqIGV3a19jb29raWVzX2dl
dF9hbGwodm9pZCkKIHsKLSAgICBFaW5hX0xpc3QgKmVsID0gMDsKKyAgICBFaW5hX0xpc3QqIGVs
ID0gMDsKICNpZiBVU0UoU09VUCkKLSAgICBHU0xpc3QgKmw7Ci0gICAgR1NMaXN0ICpwOwotICAg
IFNvdXBDb29raWVKYXIgKmNvb2tpZUphciA9IFdlYkNvcmU6OmRlZmF1bHRDb29raWVKYXIoKTsK
KyAgICBHU0xpc3QqIGw7CisgICAgR1NMaXN0KiBwOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tp
ZUphciA9IFdlYkNvcmU6OmRlZmF1bHRDb29raWVKYXIoKTsKIAogICAgIGwgPSBzb3VwX2Nvb2tp
ZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKTsKICAgICBmb3IgKHAgPSBsOyBwOyBwID0gcC0+
bmV4dCkgewotICAgICAgICBTb3VwQ29va2llICpjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29v
a2llKj4ocC0+ZGF0YSk7Ci0gICAgICAgIEV3a19Db29raWUgKmMgPSBzdGF0aWNfY2FzdDxFd2tf
Q29va2llKj4obWFsbG9jKHNpemVvZigqYykpKTsKKyAgICAgICAgU291cENvb2tpZSogY29va2ll
ID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KHAtPmRhdGEpOworICAgICAgICBFd2tfQ29va2ll
KiBjID0gc3RhdGljX2Nhc3Q8RXdrX0Nvb2tpZSo+KG1hbGxvYyhzaXplb2YoKmMpKSk7CiAgICAg
ICAgIGMtPm5hbWUgPSBzdHJkdXAoY29va2llLT5uYW1lKTsKICAgICAgICAgYy0+dmFsdWUgPSBz
dHJkdXAoY29va2llLT52YWx1ZSk7CiAgICAgICAgIGMtPmRvbWFpbiA9IHN0cmR1cChjb29raWUt
PmRvbWFpbik7CkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBFaW5hX0xpc3QgKmV3a19jb29raWVzX2dl
dF9hbGwodm9pZCkKICAgICByZXR1cm4gZWw7CiB9CiAKLXZvaWQgZXdrX2Nvb2tpZXNfY29va2ll
X2RlbChFd2tfQ29va2llICpjb29raWUpCit2b2lkIGV3a19jb29raWVzX2Nvb2tpZV9kZWwoRXdr
X0Nvb2tpZSogY29va2llKQogewogI2lmIFVTRShTT1VQKQogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKGNvb2tpZSk7CiAgICAgR1NMaXN0KiBsOwogICAgIEdTTGlzdCogcDsKLSAgICBT
b3VwQ29va2llSmFyICpjb29raWVKYXIgPSBXZWJDb3JlOjpkZWZhdWx0Q29va2llSmFyKCk7Ci0g
ICAgU291cENvb2tpZSAqYzEgPSBzb3VwX2Nvb2tpZV9uZXcoCisgICAgU291cENvb2tpZUphciog
Y29va2llSmFyID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tpZUphcigpOworICAgIFNvdXBDb29raWUq
IGMxID0gc291cF9jb29raWVfbmV3KAogICAgICAgICBjb29raWUtPm5hbWUsIGNvb2tpZS0+dmFs
dWUsIGNvb2tpZS0+ZG9tYWluLCBjb29raWUtPnBhdGgsIC0xKTsKIAogICAgIGwgPSBzb3VwX2Nv
b2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKTsKICAgICBmb3IgKHAgPSBsOyBwOyBwID0g
cC0+bmV4dCkgewotICAgICAgICBTb3VwQ29va2llICpjMiA9IHN0YXRpY19jYXN0PFNvdXBDb29r
aWUqPihwLT5kYXRhKTsKKyAgICAgICAgU291cENvb2tpZSogYzIgPSBzdGF0aWNfY2FzdDxTb3Vw
Q29va2llKj4ocC0+ZGF0YSk7CiAgICAgICAgIGlmIChzb3VwX2Nvb2tpZV9lcXVhbChjMSwgYzIp
KSB7CiAgICAgICAgICAgICBzb3VwX2Nvb2tpZV9qYXJfZGVsZXRlX2Nvb2tpZShjb29raWVKYXIs
IGMyKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgZXdrX2Nv
b2tpZXNfY29va2llX2RlbChFd2tfQ29va2llICpjb29raWUpCiAjZW5kaWYKIH0KIAotdm9pZCBl
d2tfY29va2llc19jb29raWVfZnJlZShFd2tfQ29va2llICpjb29raWUpCit2b2lkIGV3a19jb29r
aWVzX2Nvb2tpZV9mcmVlKEV3a19Db29raWUqIGNvb2tpZSkKIHsKICNpZiBVU0UoU09VUCkKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb29raWUpOwpAQCAtMTQ1LDcgKzE0NSw3IEBA
IHZvaWQgZXdrX2Nvb2tpZXNfY29va2llX2ZyZWUoRXdrX0Nvb2tpZSAqY29va2llKQogdm9pZCBl
d2tfY29va2llc19wb2xpY3lfc2V0KEV3a19Db29raWVfUG9saWN5IHApCiB7CiAjaWYgVVNFKFNP
VVApCi0gICAgU291cENvb2tpZUphciAqY29va2llSmFyID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tp
ZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IFdlYkNvcmU6OmRlZmF1bHRD
b29raWVKYXIoKTsKICAgICBTb3VwQ29va2llSmFyQWNjZXB0UG9saWN5IHBvbGljeTsKIAogICAg
IHBvbGljeSA9IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfQUxXQVlTOwpAQCAtMTY5LDcgKzE2OSw3
IEBAIEV3a19Db29raWVfUG9saWN5IGV3a19jb29raWVzX3BvbGljeV9nZXQodm9pZCkKIHsKICAg
ICBFd2tfQ29va2llX1BvbGljeSBld2tfcG9saWN5ID0gRVdLX0NPT0tJRV9KQVJfQUNDRVBUX0FM
V0FZUzsKICNpZiBVU0UoU09VUCkKLSAgICBTb3VwQ29va2llSmFyICpjb29raWVKYXIgPSBXZWJD
b3JlOjpkZWZhdWx0Q29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0g
V2ViQ29yZTo6ZGVmYXVsdENvb2tpZUphcigpOwogICAgIFNvdXBDb29raWVKYXJBY2NlcHRQb2xp
Y3kgcG9saWN5OwogCiAgICAgcG9saWN5ID0gc291cF9jb29raWVfamFyX2dldF9hY2NlcHRfcG9s
aWN5KGNvb2tpZUphcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IGRhNDM0
NDAuLjJiOTZjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC02MywyNSAr
NjMsMjUgQEAgc3RhdGljIGNvbnN0IGNoYXIgRVdLX0ZSQU1FX1RZUEVfU1RSW10gPSAiRVdLX0Zy
YW1lIjsKIAogc3RydWN0IEV3a19GcmFtZV9TbWFydF9EYXRhIHsKICAgICBFdmFzX09iamVjdF9T
bWFydF9DbGlwcGVkX0RhdGEgYmFzZTsKLSAgICBFdmFzX09iamVjdCAqc2VsZjsKLSAgICBFdmFz
X09iamVjdCAqdmlldzsKKyAgICBFdmFzX09iamVjdCogc2VsZjsKKyAgICBFdmFzX09iamVjdCog
dmlldzsKICNpZmRlZiBFV0tfRlJBTUVfREVCVUcKLSAgICBFdmFzX09iamVjdCAqcmVnaW9uOwor
ICAgIEV2YXNfT2JqZWN0KiByZWdpb247CiAjZW5kaWYKLSAgICBXZWJDb3JlOjpGcmFtZSAqZnJh
bWU7Ci0gICAgY29uc3QgY2hhciAqdGl0bGU7Ci0gICAgY29uc3QgY2hhciAqdXJpOwotICAgIGNv
bnN0IGNoYXIgKm5hbWU7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lOworICAgIGNvbnN0IGNo
YXIqIHRpdGxlOworICAgIGNvbnN0IGNoYXIqIHVyaTsKKyAgICBjb25zdCBjaGFyKiBuYW1lOwog
ICAgIHN0cnVjdCB7CiAgICAgICAgIEV2YXNfQ29vcmQgdywgaDsKICAgICB9IGNvbnRlbnRzX3Np
emU7Ci0gICAgRWluYV9Cb29sIHRleHRab29tOjE7Ci0gICAgRWluYV9Cb29sIGVkaXRhYmxlOjE7
CisgICAgRWluYV9Cb29sIHRleHRab29tIDogMTsKKyAgICBFaW5hX0Jvb2wgZWRpdGFibGUgOiAx
OwogfTsKIAogc3RydWN0IEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lIHsKICAgICBFaW5hX0l0ZXJh
dG9yIGJhc2U7Ci0gICAgRXZhc19PYmplY3QgKm9iajsKKyAgICBFdmFzX09iamVjdCogb2JqOwog
ICAgIHVuc2lnbmVkIGN1cnJlbnRJbmRleDsKIH07CiAKQEAgLTkwLDE4ICs5MCwxOCBAQCBzdHJ1
Y3QgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUgewogI2Vsc2UKICNkZWZpbmUgRVdLX0ZSQU1FX1RZ
UEVfQ0hFQ0sobywgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgY29uc3QgY2hhciAqX3RtcF9vdHlwZSA9IGV2YXNfb2Jq
ZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgY2hhciogX3Rt
cF9vdHlwZSA9IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAgICAgICAgIFwKICAgICAg
ICAgaWYgKEVJTkFfVU5MSUtFTFkoX3RtcF9vdHlwZSAhPSBFV0tfRlJBTUVfVFlQRV9TVFIpKSB7
ICAgICAgICAgIFwKICAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAoIiVwICglcykg
aXMgbm90IG9mIGFuIGV3a19mcmFtZSEiLCBvLCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
ICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVs
bCkiKTsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19f
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIH0gd2hpbGUgKDApCiAjZW5kaWYKIAogI2RlZmluZSBFV0tfRlJBTUVfU0RfR0VU
KG8sIHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFd2tfRnJhbWVf
U21hcnRfRGF0YSAqcHRyID0gKEV3a19GcmFtZV9TbWFydF9EYXRhICopZXZhc19vYmplY3Rfc21h
cnRfZGF0YV9nZXQobykKKyAgICBFd2tfRnJhbWVfU21hcnRfRGF0YSAqcHRyID0gKEV3a19GcmFt
ZV9TbWFydF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKQogCiAjZGVmaW5lIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwgLi4uKSAgICAgICAgIFwKICAgICBFV0tf
RlJBTUVfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgXApAQCAtMTE1
LDkgKzExNSw5IEBAIHN0cnVjdCBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSB7CiBzdGF0aWMgRXZh
c19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAK
ICNpZmRlZiBFV0tfRlJBTUVfREVCVUcKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX2ZyYW1lX2Rl
YnVnKEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIGlubGluZSB2b2lkIF9ld2tfZnJhbWVfZGVidWco
RXZhc19PYmplY3QqIG8pCiB7Ci0gICAgRXZhc19PYmplY3QgKmNsaXAsICpwYXJlbnQ7CisgICAg
RXZhc19PYmplY3QqIGNsaXAsICogcGFyZW50OwogICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaCwg
Y3gsIGN5LCBjdywgY2g7CiAgICAgaW50IHIsIGcsIGIsIGEsIGNyLCBjZywgY2IsIGNhOwogCkBA
IC0xNDAsMjIgKzE0MCwyMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a19mcmFtZV9kZWJ1ZyhF
dmFzX09iamVjdCAqbykKIH0KICNlbmRpZgogCi1zdGF0aWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmwgKl9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoV2ViQ29yZTo6RnJhbWUgKmZyYW1l
KQorc3RhdGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBfZXdrX2ZyYW1lX2xvYWRl
cl9lZmxfZ2V0KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBFdmFzX09iamVjdCAqa2l0KFdlYkNvcmU6OkZyYW1l
ICpmcmFtZSkKK3N0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGtpdChXZWJDb3JlOjpGcmFtZSog
ZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwgKmZsID0gX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChm
cmFtZSk7CisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGZsID0gX2V3a19mcmFt
ZV9sb2FkZXJfZWZsX2dldChmcmFtZSk7CiAgICAgaWYgKCFmbCkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgcmV0dXJuIGZsLT53ZWJGcmFtZSgpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tf
ZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4dChFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSAqaXQs
IEV2YXNfT2JqZWN0ICoqZGF0YSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jaGlsZHJl
bl9pdGVyYXRvcl9uZXh0KEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKiBpdCwgRXZhc19PYmplY3Qq
KiBkYXRhKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGl0LT5vYmosIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LCBFSU5BX0ZBTFNFKTsKQEAgLTE3MSwxMiArMTcxLDEyIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXh0KEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lICpp
dCwKICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotc3RhdGljIEV2YXNfT2JqZWN0ICpfZXdr
X2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX2dldF9jb250YWluZXIoRWluYV9JdGVyYXRvcl9Fd2tf
RnJhbWUgKml0KQorc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJh
dG9yX2dldF9jb250YWluZXIoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqIGl0KQogewogICAgIHJl
dHVybiBpdC0+b2JqOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFz
X09iamVjdCAqbykKK3N0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2YXNfT2JqZWN0
KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVQobywgc2QpOwogCkBAIC0yMzMsMTQgKzIzMywx
NCBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFzX09iamVjdCAqbykKICNl
bmRpZgogfQogCi1zdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2RlbChFdmFzX09iamVjdCAq
bykKK3N0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfZGVsKEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIFdSTigibz0lcCIsIG8pOyAvLyBYWFggUkVNT1ZFIE1FIExBVEVSCiAgICAgRVdLX0ZSQU1F
X1NEX0dFVChvLCBzZCk7CiAKICAgICBpZiAoc2QpIHsKICAgICAgICAgaWYgKHNkLT5mcmFtZSkg
ewotICAgICAgICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwgKmZsYyA9IF9ld2tf
ZnJhbWVfbG9hZGVyX2VmbF9nZXQoc2QtPmZyYW1lKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsKiBmbGMgPSBfZXdrX2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KHNkLT5m
cmFtZSk7CiAgICAgICAgICAgICBmbGMtPnNldFdlYkZyYW1lKDApOwogICAgICAgICAgICAgc2Qt
PmZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIoKTsKICAgICAgICAgICAgIHNkLT5mcmFt
ZSA9IDA7CkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9k
ZWwoRXZhc19PYmplY3QgKm8pCiAgICAgX3BhcmVudF9zYy5kZWwobyk7CiB9CiAKLXN0YXRpYyB2
b2lkIF9ld2tfZnJhbWVfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHcs
IEV2YXNfQ29vcmQgaCkKK3N0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfcmVzaXplKEV2YXNf
T2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUKG8sIHNkKTsKICAgICBldmFzX29iamVjdF9yZXNpemUoc2QtPmJhc2UuY2xpcHBlciwg
dywgaCk7CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9y
ZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogI2VuZGlm
CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfc2V0KEV2YXNfU21hcnRfQ2xhc3Mg
KmFwaSkKK3N0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfc2V0KEV2YXNfU21hcnRfQ2xhc3Mq
IGFwaSkKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldChhcGkpOwog
ICAgIGFwaS0+YWRkID0gX2V3a19mcmFtZV9zbWFydF9hZGQ7CkBAIC0yNzcsMTAgKzI3NywxMCBA
QCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X3NldChFdmFzX1NtYXJ0X0NsYXNzICphcGkp
CiAgICAgYXBpLT5yZXNpemUgPSBfZXdrX2ZyYW1lX3NtYXJ0X3Jlc2l6ZTsKIH0KIAotc3RhdGlj
IGlubGluZSBFdmFzX1NtYXJ0ICpfZXdrX2ZyYW1lX3NtYXJ0X2NsYXNzX25ldyh2b2lkKQorc3Rh
dGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX2ZyYW1lX3NtYXJ0X2NsYXNzX25ldyh2b2lkKQog
ewogICAgIHN0YXRpYyBFdmFzX1NtYXJ0X0NsYXNzIHNjID0gRVZBU19TTUFSVF9DTEFTU19JTklU
X05BTUVfVkVSU0lPTihFV0tfRlJBTUVfVFlQRV9TVFIpOwotICAgIHN0YXRpYyBFdmFzX1NtYXJ0
ICpzbWFydCA9IDA7CisgICAgc3RhdGljIEV2YXNfU21hcnQqIHNtYXJ0ID0gMDsKIAogICAgIGlm
IChFSU5BX1VOTElLRUxZKCFzbWFydCkpIHsKICAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2xp
cHBlZF9zbWFydF9zZXQoJl9wYXJlbnRfc2MpOwpAQCAtMjkxLDE3ICsyOTEsMTcgQEAgc3RhdGlj
IGlubGluZSBFdmFzX1NtYXJ0ICpfZXdrX2ZyYW1lX3NtYXJ0X2NsYXNzX25ldyh2b2lkKQogICAg
IHJldHVybiBzbWFydDsKIH0KIAotRXZhc19PYmplY3QgKmV3a19mcmFtZV92aWV3X2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK0V2YXNfT2JqZWN0KiBld2tfZnJhbWVfdmlld19nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IDApOwogICAgIHJldHVybiBzZC0+dmlldzsKIH0KIAotRWluYV9JdGVyYXRvciAqZXdrX2ZyYW1l
X2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhFdmFzX09iamVjdCAqbykKK0VpbmFfSXRlcmF0b3IqIGV3
a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVpbmFfSXRlcmF0b3JfRXdr
X0ZyYW1lICppdCA9IChFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSAqKQotICAgICAgICBjYWxsb2Mo
MSwgc2l6ZW9mKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKSk7CisgICAgRWluYV9JdGVyYXRvcl9F
d2tfRnJhbWUqIGl0ID0gKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsb2MoMSwgc2l6ZW9mKEVpbmFfSXRlcmF0b3JfRXdrX0Zy
YW1lKSk7CiAgICAgaWYgKCFpdCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTMxNCw3ICszMTQs
NyBAQCBFaW5hX0l0ZXJhdG9yICpld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KEV2YXNf
T2JqZWN0ICpvKQogICAgIHJldHVybiAmaXQtPmJhc2U7CiB9CiAKLUV2YXNfT2JqZWN0ICpld2tf
ZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqbmFtZSkKK0V2YXNf
T2JqZWN0KiBld2tfZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciog
bmFtZSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG5hbWUsIDApOwpAQCAtMzIzLDI5ICszMjMs
MjkgQEAgRXZhc19PYmplY3QgKmV3a19mcmFtZV9jaGlsZF9maW5kKEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICpuYW1lKQogICAgIHJldHVybiBraXQoc2QtPmZyYW1lLT50cmVlKCktPmZpbmQo
V1RGOjpBdG9taWNTdHJpbmcocykpKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV91cmlfc2V0
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp1cmkpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Vy
aV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHVyaSkKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgV2ViQ29yZTo6S1VSTCBr
dXJsKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXEoa3VybCk7Ci0gICAgV2ViQ29yZTo6RnJhbWVMb2Fk
ZXIgKmxvYWRlciA9IHNkLT5mcmFtZS0+bG9hZGVyKCk7CisgICAgV2ViQ29yZTo6RnJhbWVMb2Fk
ZXIqIGxvYWRlciA9IHNkLT5mcmFtZS0+bG9hZGVyKCk7CiAgICAgbG9hZGVyLT5sb2FkKHJlcSwg
ZmFsc2UpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a19mcmFt
ZV91cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciogZXdrX2ZyYW1lX3Vy
aV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIDApOwogICAgIHJldHVybiBzZC0+dXJpOwogfQogCi1jb25zdCBjaGFyICpl
d2tfZnJhbWVfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciogZXdr
X2ZyYW1lX3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIHNkLT50aXRsZTsKIH0KIAot
Y29uc3QgY2hhciAqZXdrX2ZyYW1lX25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY29u
c3QgY2hhciogZXdrX2ZyYW1lX25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKIApAQCAtMzY0LDcgKzM2NCw3
IEBAIGNvbnN0IGNoYXIgKmV3a19mcmFtZV9uYW1lX2dldChjb25zdCBFdmFzX09iamVjdCAqbykK
ICAgICByZXR1cm4gc2QtPm5hbWU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNf
c2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgKncsIEV2YXNfQ29vcmQg
KmgpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvLCBFdmFzX0Nvb3JkKiB3LCBFdmFzX0Nvb3JkKiBoKQogewogICAgIGlmICh3KQogICAg
ICAgICAqdyA9IDA7CkBAIC0zNzgsNyArMzc4LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9jb250
ZW50c19zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCAqdywgRXZhc18K
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfZnJhbWVf
Y29udGVudHNfc2V0X2ludGVybmFsKEV3a19GcmFtZV9TbWFydF9EYXRhICpzZCwgY29uc3QgY2hh
ciAqY29udGVudHMsIHNpemVfdCBjb250ZW50c19zaXplLCBjb25zdCBjaGFyICptaW1lX3R5cGUs
IGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpiYXNlX3VyaSwgY29uc3QgY2hhciAq
dW5yZWFjaGFibGVfdXJpKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NvbnRlbnRzX3Nl
dF9pbnRlcm5hbChFd2tfRnJhbWVfU21hcnRfRGF0YSogc2QsIGNvbnN0IGNoYXIqIGNvbnRlbnRz
LCBzaXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hhciogbWltZV90eXBlLCBjb25zdCBjaGFy
KiBlbmNvZGluZywgY29uc3QgY2hhciogYmFzZV91cmksIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxl
X3VyaSkKIHsKICAgICBzaXplX3QgbGVuID0gc3RybGVuKGNvbnRlbnRzKTsKICAgICBpZiAoY29u
dGVudHNfc2l6ZSA8IDEgfHwgY29udGVudHNfc2l6ZSA+IGxlbikKQEAgLTQwMCwzNiArNDAwLDM2
IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwoRXdr
X0ZyYW1lX1NtYXJ0X0RhdGEgKnNkLCBjb25zCiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50
cywgY29udGVudHNfc2l6ZSk7CiAgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEKICAgICAgICAgKGJ1ZmZlci5yZWxlYXNlKCksCi0gICAgICAgICBXVEY6OlN0cmluZzo6
ZnJvbVVURjgobWltZV90eXBlKSwKLSAgICAgICAgIFdURjo6U3RyaW5nOjpmcm9tVVRGOChlbmNv
ZGluZyksCi0gICAgICAgICBiYXNlS1VSTCwgdW5yZWFjaGFibGVLVVJMKTsKKyAgICAgICAgV1RG
OjpTdHJpbmc6OmZyb21VVEY4KG1pbWVfdHlwZSksCisgICAgICAgIFdURjo6U3RyaW5nOjpmcm9t
VVRGOChlbmNvZGluZyksCisgICAgICAgIGJhc2VLVVJMLCB1bnJlYWNoYWJsZUtVUkwpOwogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGJhc2VLVVJMKTsKIAogICAgIHNkLT5m
cmFtZS0+bG9hZGVyKCktPmxvYWQocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEsIGZhbHNlKTsKICAg
ICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3Nl
dChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqY29udGVudHMsIHNpemVfdCBjb250ZW50c19z
aXplLCBjb25zdCBjaGFyICptaW1lX3R5cGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBj
aGFyICpiYXNlX3VyaSkKK0VpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBjb25zdCBjaGFyKiBjb250ZW50cywgc2l6ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0
IGNoYXIqIG1pbWVfdHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2Vf
dXJpKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9GQUxTRV9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9G
QUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRlbnRzLCBFSU5B
X0ZBTFNFKTsKICAgICByZXR1cm4gX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwKLSAg
ICAgICAgKHNkLCBjb250ZW50cywgY29udGVudHNfc2l6ZSwgbWltZV90eXBlLCBlbmNvZGluZywg
YmFzZV91cmksIDApOworICAgICAgICAgICAgICAgKHNkLCBjb250ZW50cywgY29udGVudHNfc2l6
ZSwgbWltZV90eXBlLCBlbmNvZGluZywgYmFzZV91cmksIDApOwogfQogCi1FaW5hX0Jvb2wgZXdr
X2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIg
KmNvbnRlbnRzLCBzaXplX3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hhciAqbWltZV90eXBlLCBj
b25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqYmFzZV91cmksIGNvbnN0IGNoYXIgKnVu
cmVhY2hhYmxlX3VyaSkKK0VpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfYWx0ZXJuYXRlX3Nl
dChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogY29udGVudHMsIHNpemVfdCBjb250ZW50c19z
aXplLCBjb25zdCBjaGFyKiBtaW1lX3R5cGUsIGNvbnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBj
aGFyKiBiYXNlX3VyaSwgY29uc3QgY2hhciogdW5yZWFjaGFibGVfdXJpKQogewogICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9GQUxTRV9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRlbnRzLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodW5yZWFjaGFibGVfdXJpLCBFSU5BX0ZBTFNFKTsK
ICAgICByZXR1cm4gX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwKLSAgICAgICAgKHNk
LCBjb250ZW50cywgY29udGVudHNfc2l6ZSwgbWltZV90eXBlLCBlbmNvZGluZywgYmFzZV91cmks
Ci0gICAgICAgICB1bnJlYWNoYWJsZV91cmkpOworICAgICAgICAgICAgICAgKHNkLCBjb250ZW50
cywgY29udGVudHNfc2l6ZSwgbWltZV90eXBlLCBlbmNvZGluZywgYmFzZV91cmksCisgICAgICAg
ICAgICAgICB1bnJlYWNoYWJsZV91cmkpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3Njcmlw
dF9leGVjdXRlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzY3JpcHQpCitFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzY3Jp
cHQpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVJTkFfU0FGRVRZX09OX0ZBTFNFX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZB
TFNFKTsKQEAgLTQzOCwxNCArNDM4LDE0IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfc2NyaXB0X2V4
ZWN1dGUoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnNjcmlwdCkKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChjb25zdCBFdmFz
X09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBF
SU5BX0ZBTFNFKTsKICAgICByZXR1cm4gc2QtPmVkaXRhYmxlOwogfQogCi1FaW5hX0Jvb2wgZXdr
X2ZyYW1lX2VkaXRhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVkaXRhYmxlKQor
RWluYV9Cb29sIGV3a19mcmFtZV9lZGl0YWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCBlZGl0YWJsZSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwg
RUlOQV9GQUxTRSk7CkBAIC00NTcsNyArNDU3LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9lZGl0
YWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1jaGFyICpld2tfZnJhbWVfc2VsZWN0aW9uX2dldChjb25zdCBFdmFz
X09iamVjdCAqbykKK2NoYXIqIGV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCAwKTsKQEAgLTQ2Nyw3
ICs0NjcsNyBAQCBjaGFyICpld2tfZnJhbWVfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVj
dCAqbykKICAgICByZXR1cm4gc3RyZHVwKHMuZGF0YSgpKTsKIH0KIAotRWluYV9Cb29sIGV3a19m
cmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5n
LCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wg
d3JhcCkKK0VpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3Qq
IG8sIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jv
b2wgZm9yd2FyZCwgRWluYV9Cb29sIHdyYXApCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNDc2LDcgKzQ3Niw3IEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIg
KnN0cmluZywgRWluYV9CCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJp
bmcoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIGZvcndhcmQsIGNhc2Vfc2Vuc2l0aXZl
LCB3cmFwLCB0cnVlKTsKIH0KIAotdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNf
bWFyayhFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9z
ZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKK3Vuc2ln
bmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QqIG8sIGNvbnN0
IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgaGlnaGxp
Z2h0LCB1bnNpZ25lZCBpbnQgbGltaXQpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJh
bWUsIEVJTkFfRkFMU0UpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHVuc2lnbmVkIGludCBld2tfZnJh
bWVfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywg
RWluCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQo
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIGNhc2Vfc2Vuc2l0aXZlLCBsaW1pdCwgdHJ1
ZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZh
c19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc191bm1hcmtfYWxs
KEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZy
YW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1l
X3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBFSU5B
X1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBoaWdobGlnaHQpCitFaW5hX0Jvb2wgZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wg
aGlnaGxpZ2h0KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBF
SU5BX0ZBTFNFKTsKQEAgLTUwMyw3ICs1MDMsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRf
bWF0Y2hlc19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgaGlnaGxpZwog
ICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRj
aGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAg
LTUyNiw3ICs1MjYsNyBAQCBzdGF0aWMgYm9vbCBfZXdrX2ZyYW1lX3JlY3RfaXNfbmVnYXRpdmVf
dmFsdWUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCAmaSkKICAgICByZXR1cm4gKGkueCgpIDwgMCB8
fCBpLnkoKSA8IDApOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhf
cG9zX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgc2l6ZV90IG4sIGludCAqeCwgaW50ICp5KQor
RWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8sIHNpemVfdCBuLCBpbnQqIHgsIGludCogeSkKIHsKICAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC01MzcsMTggKzUzNywxOCBA
QCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhfcG9zX2dldChjb25zdCBFdmFz
X09iamVjdCAqbywgc2l6ZV90IG4sIGludAogICAgIHN0ZDo6cmVtb3ZlX2lmKGludFJlY3RzLmJl
Z2luKCksIGludFJlY3RzLmVuZCgpLCBfZXdrX2ZyYW1lX3JlY3RfaXNfbmVnYXRpdmVfdmFsdWUp
OwogCiAgICAgaWYgKGludFJlY3RzLmlzRW1wdHkoKSB8fCBuID4gaW50UmVjdHMuc2l6ZSgpKQot
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogCiAg
ICAgc3RkOjpzb3J0KGludFJlY3RzLmJlZ2luKCksIGludFJlY3RzLmVuZCgpLCBfZXdrX2ZyYW1l
X3JlY3RfY21wX2xlc3NfdGhhbik7CiAKICAgICBpZiAoeCkKLSAgICAgICp4ID0gaW50UmVjdHNb
biAtIDFdLngoKTsKKyAgICAgICAgKnggPSBpbnRSZWN0c1tuIC0gMV0ueCgpOwogICAgIGlmICh5
KQotICAgICAgKnkgPSBpbnRSZWN0c1tuIC0gMV0ueSgpOworICAgICAgICAqeSA9IGludFJlY3Rz
W24gLSAxXS55KCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19m
cmFtZV9zdG9wKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV9zdG9wKEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBF
SU5BX0ZBTFNFKTsKQEAgLTU1Niw3ICs1NTYsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3N0b3Ao
RXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3
a19mcmFtZV9yZWxvYWQoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3JlbG9h
ZChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5m
cmFtZSwgRUlOQV9GQUxTRSk7CkBAIC01NjQsNyArNTY0LDcgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV9yZWxvYWQoRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWlu
YV9Cb29sIGV3a19mcmFtZV9yZWxvYWRfZnVsbChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBl
d2tfZnJhbWVfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNTcyLDM4ICs1NzIsMzgg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV9yZWxvYWRfZnVsbChFdmFzX09iamVjdCAqbykKICAgICBy
ZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2JhY2soRXZhc19PYmpl
Y3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2JhY2soRXZhc19PYmplY3QqIG8pCiB7CiAgICAg
cmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZShvLCAtMSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJh
bWVfZm9yd2FyZChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfZm9yd2FyZChF
dmFzX09iamVjdCogbykKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1lX25hdmlnYXRlKG8sIDEpOwog
fQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX25hdmlnYXRlKEV2YXNfT2JqZWN0ICpvLCBpbnQgc3Rl
cHMpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX25hdmlnYXRlKEV2YXNfT2JqZWN0KiBvLCBpbnQgc3Rl
cHMpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFM
U0UpOwotICAgIFdlYkNvcmU6OlBhZ2UgKnBhZ2UgPSBzZC0+ZnJhbWUtPnBhZ2UoKTsKKyAgICBX
ZWJDb3JlOjpQYWdlKiBwYWdlID0gc2QtPmZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlLT5j
YW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpKQogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAg
ICBwYWdlLT5nb0JhY2tPckZvcndhcmQoc3RlcHMpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9
CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfYmFja19wb3NzaWJsZShFdmFzX09iamVjdCAqbykKK0Vp
bmFfQm9vbCBld2tfZnJhbWVfYmFja19wb3NzaWJsZShFdmFzX09iamVjdCogbykKIHsKICAgICBy
ZXR1cm4gZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKG8sIC0xKTsKIH0KIAotRWluYV9Cb29s
IGV3a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3
a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBvKQogewogICAgIHJldHVybiBl
d2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUobywgMSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJh
bWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcykKK0VpbmFfQm9v
bCBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykK
IHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7
CkBAIC02MTEsNyArNjExLDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJs
ZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBzKQogICAgIHJldHVybiBwYWdlLT5jYW5Hb0JhY2tP
ckZvcndhcmQoc3RlcHMpOwogfQogCi1mbG9hdCBld2tfZnJhbWVfem9vbV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pCitmbG9hdCBld2tfZnJhbWVfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIC0xLjApOwpAQCAtNjIx
LDcgKzYyMSw3IEBAIGZsb2F0IGV3a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCAq
bykKICAgICByZXR1cm4gc2QtPmZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwogfQogCi1FaW5hX0Jv
b2wgZXdrX2ZyYW1lX3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKQorRWluYV9C
b29sIGV3a19mcmFtZV96b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKIHsKICAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC02
MzIsMTMgKzYzMiwxMyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fc2V0KEV2YXNfT2JqZWN0
ICpvLCBmbG9hdCB6b29tKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9C
b29sIGV3a19mcmFtZV96b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IHJldHVybiBzZC0+dGV4dFpvb207CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0
X29ubHlfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc2V0dGluZykKK0VpbmFfQm9vbCBl
d2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgc2V0
dGluZykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9G
QUxTRSk7CkBAIC02NTQsNyArNjU0LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3RleHRf
b25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5nKQogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKLXZvaWQgZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUoRXdrX0hpdF9UZXN0
ICpoaXRfdGVzdCkKK3ZvaWQgZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUoRXdrX0hpdF9UZXN0KiBo
aXRfdGVzdCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihoaXRfdGVzdCk7CiAg
ICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaGl0X3Rlc3QtPnRpdGxlKTsKQEAgLTY2Nyw3ICs2Njcs
NyBAQCB2b2lkIGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKEV3a19IaXRfVGVzdCAqaGl0X3Rlc3Qp
CiAgICAgZnJlZShoaXRfdGVzdCk7CiB9CiAKLUV3a19IaXRfVGVzdCAqZXdrX2ZyYW1lX2hpdF90
ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCAqbywgaW50IHgsIGludCB5KQorRXdrX0hpdF9UZXN0
KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQgeCwgaW50
IHkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIDApOwpAQCAtNjc3LDE1ICs2
NzcsMTUgQEAgRXdrX0hpdF9UZXN0ICpld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNf
T2JqZWN0ICpvLCBpbnQgeCwgaW50IHkpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5mcmFtZS0+Y29udGVudFJlbmRlcmVyKCksIDApOwogCiAgICAgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludAotICAgICAgICAodmlldy0+d2luZG93VG9Db250ZW50cyhXZWJDb3JlOjpJbnRQ
b2ludCh4LCB5KSksCi0gICAgICAgICAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmln
bm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHZpZXctPndpbmRvd1RvQ29udGVudHMoV2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qYWxsb3dTaGFkb3dDb250
ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKIAogICAgIGlmIChyZXN1bHQu
c2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghcmVzdWx0LmlubmVyTm9k
ZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEV3a19IaXRfVGVzdCAqaGl0X3Rlc3QgPSAo
RXdrX0hpdF9UZXN0ICopY2FsbG9jKDEsIHNpemVvZihFd2tfSGl0X1Rlc3QpKTsKKyAgICBFd2tf
SGl0X1Rlc3QqIGhpdF90ZXN0ID0gKEV3a19IaXRfVGVzdCopY2FsbG9jKDEsIHNpemVvZihFd2tf
SGl0X1Rlc3QpKTsKICAgICBpZiAoIWhpdF90ZXN0KSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3Vs
ZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBoaXQgdGVzdC4iKTsKICAgICAgICAgcmV0dXJuIDA7
CkBAIC03NDAsNyArNzQwLDcgQEAgRXdrX0hpdF9UZXN0ICpld2tfZnJhbWVfaGl0X3Rlc3RfbmV3
KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgeCwgaW50IHkpCiB9CiAKIEVpbmFfQm9vbAotZXdr
X2ZyYW1lX3Njcm9sbF9hZGQoRXZhc19PYmplY3QgKm8sIGludCBkeCwgaW50IGR5KQorZXdrX2Zy
YW1lX3Njcm9sbF9hZGQoRXZhc19PYmplY3QqIG8sIGludCBkeCwgaW50IGR5KQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTc1MCw3
ICs3NTAsNyBAQCBld2tfZnJhbWVfc2Nyb2xsX2FkZChFdmFzX09iamVjdCAqbywgaW50IGR4LCBp
bnQgZHkpCiB9CiAKIEVpbmFfQm9vbAotZXdrX2ZyYW1lX3Njcm9sbF9zZXQoRXZhc19PYmplY3Qg
Km8sIGludCB4LCBpbnQgeSkKK2V3a19mcmFtZV9zY3JvbGxfc2V0KEV2YXNfT2JqZWN0KiBvLCBp
bnQgeCwgaW50IHkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwpAQCAtNzYwLDcgKzc2MCw3IEBAIGV3a19mcmFtZV9zY3JvbGxfc2V0KEV2
YXNfT2JqZWN0ICpvLCBpbnQgeCwgaW50IHkpCiB9CiAKIEVpbmFfQm9vbAotZXdrX2ZyYW1lX3Nj
cm9sbF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICp3LCBpbnQgKmgpCitld2tf
ZnJhbWVfc2Nyb2xsX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHcsIGludCog
aCkKIHsKICAgICBpZiAodykKICAgICAgICAgKncgPSAwOwpAQCAtNzc4LDcgKzc3OCw3IEBAIGV3
a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqdywgaW50
ICpoKQogfQogCiBFaW5hX0Jvb2wKLWV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChjb25zdCBFdmFz
X09iamVjdCAqbywgaW50ICp4LCBpbnQgKnkpCitld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8sIGludCogeCwgaW50KiB5KQogewogICAgIGlmICh4KQogICAgICAg
ICAqeCA9IDA7CkBAIC03OTUsNyArNzk1LDcgQEAgZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKngsIGludCAqeSkKICAgICByZXR1cm4gRUlOQV9UUlVF
OwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2libGVfY29udGVudF9nZW9tZXRyeV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBpbmNsdWRlX3Njcm9sbGJhcnMsIGludCAq
eCwgaW50ICp5LCBpbnQgKncsIGludCAqaCkKK0VpbmFfQm9vbCBld2tfZnJhbWVfdmlzaWJsZV9j
b250ZW50X2dlb21ldHJ5X2dldChjb25zdCBFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGluY2x1
ZGVfc2Nyb2xsYmFycywgaW50KiB4LCBpbnQqIHksIGludCogdywgaW50KiBoKQogewogICAgIGlm
ICh4KQogICAgICAgICAqeCA9IDA7CkBAIC04MjAsNyArODIwLDcgQEAgRWluYV9Cb29sIGV3a19m
cmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1l
X3BhaW50X2Z1bGxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFt
ZV9wYWludF9mdWxsX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC04MjgsNyArODI4LDcg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV9wYWludF9mdWxsX2dldChjb25zdCBFdmFzX09iamVjdCAq
bykKICAgICByZXR1cm4gc2QtPmZyYW1lLT52aWV3KCktPnBhaW50c0VudGlyZUNvbnRlbnRzKCk7
CiB9CiAKLXZvaWQgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgZmxhZykKK3ZvaWQgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KEV2YXNfT2JqZWN0KiBv
LCBFaW5hX0Jvb2wgZmxhZykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmZyYW1lKTsKQEAgLTgzNiw3
ICs4MzYsNyBAQCB2b2lkIGV3a19mcmFtZV9wYWludF9mdWxsX3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGZsYWcpCiAgICAgc2QtPmZyYW1lLT52aWV3KCktPnNldFBhaW50c0VudGlyZUNv
bnRlbnRzKGZsYWcpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4oRXZh
c19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4oRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFf
RkFMU0UpOwpAQCAtODQ1LDE0ICs4NDUsMTQgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2Zv
Y3VzX2luKEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19vdXQoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfb3V0KEV2YXNfT2JqZWN0KiBvKQogewogICAgIC8vIFRPRE86
IHdoYXQgdG8gZG8gb24gZm9jdXMgb3V0PwogICAgIEVSUigid2hhdCB0byBkbz8iKTsKICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3do
ZWVsKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsICpldikKK0Vp
bmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVjdCogbywgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtODY3LDcgKzg2Nyw3IEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9XaGVlCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhh
bmRsZVdoZWVsRXZlbnQoZXZlbnQpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91
c2VfZG93bihFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldikK
K0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTg4NSwxMyArODg1LDEzIEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX0Rvd24KICAgICByZXR1cm4gc2QtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9m
ZWVkX21vdXNlX3VwKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwICpl
dikKK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV91cChFdmFzX09iamVjdCogbywgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChldiwgRUlOQV9GQUxTRSk7CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcg
PSBzZC0+ZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzZC0+
ZnJhbWUtPnZpZXcoKTsKICAgICBEQkcoIm89JXAsIHZpZXc9JXAsIGJ1dHRvbj0lZCwgcG9zPSVk
LCVkIiwKICAgICAgICAgbywgdmlldywgZXYtPmJ1dHRvbiwgZXYtPmNhbnZhcy54LCBldi0+Y2Fu
dmFzLnkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBFSU5BX0ZB
TFNFKTsKQEAgLTkwMyw3ICs5MDMsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2Vf
dXAoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2KQogICAgIHJl
dHVybiBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChl
dmVudCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KQorRWluYV9Cb29sIGV3a19m
cmFtZV9mZWVkX21vdXNlX21vdmUoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfTW92ZSogZXYpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwpAQCAtOTIyLDcgKzkyMiw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVl
ZF9tb3VzZV9tb3ZlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUK
ICAgICByZXR1cm4gc2QtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VNb3ZlZChldmVudCk7
CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChFdmFzX09iamVjdCAq
bywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCBFaW5hX0xpc3QgKnBvaW50cywgaW50IG1l
dGFTdGF0ZSkKK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChFdmFzX09iamVj
dCogbywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCBFaW5hX0xpc3QqIHBvaW50cywgaW50
IG1ldGFTdGF0ZSkKIHsKICAgICBFaW5hX0Jvb2wgcmV0ID0gRUlOQV9GQUxTRTsKIApAQCAtOTMx
LDggKzkzMSw4IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChFdmFzX09i
amVjdCAqbywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uCiAgICAgRVdLX0ZSQU1FX1NEX0dF
VChvLCBzZCk7CiAKICAgICBpZiAoIXNkIHx8ICFzZC0+ZnJhbWUgfHwgIWV3a192aWV3X25lZWRf
dG91Y2hfZXZlbnRzX2dldChzZC0+dmlldykpIHsKLSAgICAgICAgdm9pZCAqcG9pbnQ7Ci0gICAg
ICAgIEVJTkFfTElTVF9GUkVFKHBvaW50cywgcG9pbnQpOworICAgICAgICB2b2lkKiBwb2ludDsK
KyAgICAgICAgRUlOQV9MSVNUX0ZSRUUocG9pbnRzLCBwb2ludCkgOwogICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTk2Myw3ICs5NjMsNyBAQCBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QgKm8sIEV3a19Ub3VjaF9FdmVudF9UeXBl
IGFjdGlvbgogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9l
d2tfZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmcoV2ViQ29yZTo6RnJhbWUgKmZyYW1lLCBjb25z
dCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQgJmV2ZW50KQorc3RhdGljIGlubGluZSBF
aW5hX0Jvb2wgX2V3a19mcmFtZV9oYW5kbGVfa2V5X3Njcm9sbGluZyhXZWJDb3JlOjpGcmFtZSog
ZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCAmZXZlbnQpCiB7CiAg
ICAgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eSBncmFudWxhcml0eTsKQEAgLTEwMTEsNyArMTAxMSw3IEBAIHN0YXRpYyBp
bmxpbmUgRWluYV9Cb29sIF9ld2tfZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmcoV2ViQ29yZTo6
RnJhbWUgKmZyYW1lLCBjCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVktfRE9XTjoKICAgICAg
ICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsRG93bjsKLSAgICAgICAgIGlmIChldmVudC5j
dHJsS2V5KCkpCisgICAgICAgIGlmIChldmVudC5jdHJsS2V5KCkpCiAgICAgICAgICAgICBncmFu
dWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5RG9jdW1lbnQ7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lOwpAQCAtMTAyNyw3ICsx
MDI3LDcgQEAgc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a19mcmFtZV9oYW5kbGVfa2V5X3Nj
cm9sbGluZyhXZWJDb3JlOjpGcmFtZSAqZnJhbWUsIGMKICAgICByZXR1cm4gRUlOQV9UUlVFOwog
fQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24oRXZhc19PYmplY3QgKm8sIGNv
bnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KQorRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tl
eV9kb3duKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBldikKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBA
IC0xMDQzLDcgKzEwNDMsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24oRXZh
c19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KQogICAgIHJldHVybiBf
ZXdrX2ZyYW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKHNkLT5mcmFtZSwgZXZlbnQpOwogfQogCi1F
aW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFz
X0V2ZW50X0tleV9VcCAqZXYpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXYpCiB7CiAgICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtMTA1NiwxMiArMTA1
NiwxMiBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmtleUV2ZW50KGV2ZW50KTsKIH0KIAotRXdrX1RleHRfU2VsZWN0aW9uX1R5cGUg
ZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQor
RXdrX1RleHRfU2VsZWN0aW9uX1R5cGUgZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFV0tfVEVYVF9TRUxFQ1RJT05fTk9ORSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRVdLX1RFWFRfU0VMRUNUSU9OX05PTkUpOwogCi0gICAg
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb24gKmNvbnRyb2xsZXIgPSBzZC0+ZnJhbWUtPnNlbGVjdGlv
bigpOworICAgIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uKiBjb250cm9sbGVyID0gc2QtPmZyYW1l
LT5zZWxlY3Rpb24oKTsKICAgICBpZiAoIWNvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybiBFV0tf
VEVYVF9TRUxFQ1RJT05fTk9ORTsKIApAQCAtMTA5MCw3ICsxMDkwLDcgQEAgRXdrX1RleHRfU2Vs
ZWN0aW9uX1R5cGUgZXdrX2ZyYW1lX3RleHRfc2VsZWN0aW9uX3R5cGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKQogICoKICAqIEByZXR1cm4gYSBuZXcgZnJhbWUgb2JqZWN0IG9yIEBjIDAgb24g
ZmFpbHVyZQogICovCi1FdmFzX09iamVjdCAqZXdrX2ZyYW1lX2FkZChFdmFzICplKQorRXZhc19P
YmplY3QqIGV3a19mcmFtZV9hZGQoRXZhcyogZSkKIHsKICAgICByZXR1cm4gZXZhc19vYmplY3Rf
c21hcnRfYWRkKGUsIF9ld2tfZnJhbWVfc21hcnRfY2xhc3NfbmV3KCkpOwogfQpAQCAtMTEwMiw3
ICsxMTAyLDcgQEAgRXZhc19PYmplY3QgKmV3a19mcmFtZV9hZGQoRXZhcyAqZSkKICAqCiAgKiBU
aGlzIGlzIGludGVybmFsIGFuZCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGJ5IGV4dGVybmFsIHVz
ZXJzLgogICovCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QgKm8sIEV2YXNf
T2JqZWN0ICp2aWV3LCBXZWJDb3JlOjpGcmFtZSAqZnJhbWUpCitFaW5hX0Jvb2wgZXdrX2ZyYW1l
X2luaXQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpGcmFtZSog
ZnJhbWUpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIGlmICghc2QtPmZyYW1lKSB7CkBAIC0xMTI0LDExICsxMTI0LDExIEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfaW5pdChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKnZpZXcsIFdl
YkNvcmU6OkZyYW1lICpmcmFtCiAgKgogICogQWRkcyBjaGlsZCB0byB0aGUgZnJhbWUuCiAgKi8K
LUVpbmFfQm9vbCBld2tfZnJhbWVfY2hpbGRfYWRkKEV2YXNfT2JqZWN0ICpvLCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBXVEY6OlN0cmluZyAmbmFtZSwgY29u
c3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBjb25zdCBXVEY6OlN0cmluZyAmcmVmZXJyZXIpCitFaW5h
X0Jvb2wgZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogbywgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkZyYW1lPiBjaGlsZCwgY29uc3QgV1RGOjpTdHJpbmcgJm5hbWUsIGNvbnN0IFdl
YkNvcmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpTdHJpbmcgJnJlZmVycmVyKQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBjaGFyIGJ1ZlsyNTZdOwot
ICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsKKyAgICBFdmFzX09iamVjdCogZnJhbWU7CiAgICAgV2Vi
Q29yZTo6RnJhbWUqIGNmOwogCiAgICAgZnJhbWUgPSBld2tfZnJhbWVfYWRkKHNkLT5iYXNlLmV2
YXMpOwpAQCAtMTE5Myw3ICsxMTkzLDcgQEAgdm9pZCBld2tfZnJhbWVfdmlld19zZXQoRXZhc19P
YmplY3QqIG8sIEV2YXNfT2JqZWN0KiBuZXdQYXJlbnQpCiAgKiBAaW50ZXJuYWwKICAqIEZyYW1l
IHdhcyBkZXN0cm95ZWQgYnkgbG9hZGVyLCByZW1vdmUgaW50ZXJuYWwgcmVmZXJlbmNlLgogICov
Ci12b2lkIGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFt
ZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMTIwNyw3ICsxMjA3LDcgQEAg
dm9pZCBld2tfZnJhbWVfY29yZV9nb25lKEV2YXNfT2JqZWN0ICpvKQogICogQXZvaWQgdXNpbmcg
dGhpcyBjYWxsIGZyb20gb3V0c2lkZSwgYWRkIHNwZWNpZmljIGV3a19mcmFtZV8qCiAgKiBhY3Rp
b25zIGluc3RlYWQuCiAgKi8KLVdlYkNvcmU6OkZyYW1lKiBld2tfZnJhbWVfY29yZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitXZWJDb3JlOjpGcmFtZSogZXdrX2ZyYW1lX2NvcmVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCAwKTsKICAgICByZXR1cm4gc2QtPmZyYW1lOwpAQCAtMTIyNiw3ICsxMjI2LDcgQEAgV2Vi
Q29yZTo6RnJhbWUqIGV3a19mcmFtZV9jb3JlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAq
CiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIgogICovCi12b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCAqbywgRXdrX0ZyYW1lX1Jl
c291cmNlX1JlcXVlc3QgKnJlcXVlc3QpCit2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2Vu
ZChFdmFzX09iamVjdCogbywgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCiB7
CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVzb3VyY2UscmVxdWVz
dCx3aWxsc2VuZCIsIHJlcXVlc3QpOwogfQpAQCAtMTI0MCw5ICsxMjQwLDkgQEAgdm9pZCBld2tf
ZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QgKm8sIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0ICpyZXEKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LG5l
dyIKICAqLwotdm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09i
amVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgKnJlcXVlc3QpCit2b2lk
IGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2lnbl9pZGVudGlmaWVyKEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsICh2b2lkICop
cmVxdWVzdCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVzb3Vy
Y2UscmVxdWVzdCxuZXciLCAodm9pZCopcmVxdWVzdCk7CiB9CiAKIC8qKgpAQCAtMTI1Myw3ICsx
MjUzLDcgQEAgdm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09i
amVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmMKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJu
YXZpZ2F0aW9uLGZpcnN0IgogICovCi12b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9maXJzdF9u
YXZpZ2F0aW9uKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1fZmly
c3RfbmF2aWdhdGlvbihFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG8sICJuYXZpZ2F0aW9uLGZpcnN0IiwgMCk7CiB9CkBAIC0xMjY3LDcgKzEy
NjcsNyBAQCB2b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9maXJzdF9uYXZpZ2F0aW9uKEV2YXNf
T2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogInN0YXRlLHNhdmUiCiAgKi8KLXZvaWQg
ZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCAqbywgV2ViQ29yZTo6SGlzdG9y
eUl0ZW0gKml0ZW0pCit2b2lkIGV3a19mcmFtZV92aWV3X3N0YXRlX3NhdmUoRXZhc19PYmplY3Qq
IG8sIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobywgInN0YXRlLHNhdmUiLCAwKTsKIH0KQEAgLTEyNzgsOSArMTI3OCw5
IEBAIHZvaWQgZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCAqbywgV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0gKml0ZW0pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxzdGFydGVk
IiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChF
dmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCog
bykKIHsKLSAgICBFdmFzX09iamVjdCAqbWFpbl9mcmFtZTsKKyAgICBFdmFzX09iamVjdCogbWFp
bl9mcmFtZTsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8sICJsb2FkLHN0YXJ0ZWQiLCAwKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCk7CkBAIC0xMjk5LDcgKzEyOTksNyBAQCB2b2lkIGV3a19mcmFtZV9sb2Fk
X3N0YXJ0ZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92
aXNpb25hbCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX3By
b3Zpc2lvbmFsKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25h
bChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG8sICJsb2FkLHByb3Zpc2lvbmFsIiwgMCk7CiB9CkBAIC0xMzEyLDcgKzEzMTIsNyBAQCB2b2lk
IGV3a19mcmFtZV9sb2FkX3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRz
IHNpZ25hbDogImxvYWQsZmlyc3RsYXlvdXQsZmluaXNoZWQiIHdpdGggbm8gcGFyYW1ldGVycy4K
ICAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVj
dCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfZmluaXNoZWQoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxm
aXJzdGxheW91dCxmaW5pc2hlZCIsIDApOwogfQpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgdm9pZCBl
d2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVjdCAqbykKICAqCiAg
KiBFbWl0cyBzaWduYWw6ICJsb2FkLG5vbmVtcHR5bGF5b3V0LGZpbmlzaGVkIiB3aXRoIG5vIHBh
cmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfbm9uZW1wdHlf
ZmluaXNoZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0
X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsbm9uZW1wdHlsYXlvdXQsZmluaXNoZWQiLCAwKTsK
IH0KQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRf
bm9uZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
bG9hZCxkb2N1bWVudCxmaW5pc2hlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3
a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tf
ZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiwg
MCk7CiB9CkBAIC0xMzUzLDkgKzEzNTMsOSBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2RvY3VtZW50
X2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvKQogICogQG5vdGUgdGhlcmUgc2hvdWxkIG5vdGJlIGFu
eSBlcnJvciBzdHVmZiBoZXJlLCBidXQgdHJ5aW5nIHRvIGJlCiAgKiAgICAgICBjb21wYXRpYmxl
IHdpdGggcHJldmlvdXMgV2ViS2l0LgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVk
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplcnJvcl9kb21haW4sIGludCBlcnJvcl9jb2Rl
LCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyICplcnJvcl9kZXNjcmlwdGlv
biwgY29uc3QgY2hhciAqZmFpbGluZ191cmwpCit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVk
KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBlcnJvcl9kb21haW4sIGludCBlcnJvcl9jb2Rl
LCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvcl9kZXNjcmlwdGlv
biwgY29uc3QgY2hhciogZmFpbGluZ191cmwpCiB7Ci0gICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3Ig
YnVmLCAqZXJyb3I7CisgICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgYnVmLCAqIGVycm9yOwogICAg
IGlmICghZXJyb3JfZG9tYWluKSB7CiAgICAgICAgIERCRygibz0lcCwgc3VjY2Vzcy4iLCBvKTsK
ICAgICAgICAgZXJyb3IgPSAwOwpAQCAtMTM4Myw3ICsxMzgzLDcgQEAgdm9pZCBld2tfZnJhbWVf
bG9hZF9maW5pc2hlZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZXJyb3JfZG9tYWluLCBp
bnQgZXJyb3IKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIg
dG8gRXdrX0ZyYW1lX0xvYWRfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3Io
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUs
IEVpbmFfQm9vbCBpc19jYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIgKmVycm9yX2Rlc2NyaXB0aW9u
LCBjb25zdCBjaGFyICpmYWlsaW5nX3VybCkKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUsIEVp
bmFfQm9vbCBpc19jYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVycm9yX2Rlc2NyaXB0aW9uLCBj
b25zdCBjaGFyKiBmYWlsaW5nX3VybCkKIHsKICAgICBFd2tfRnJhbWVfTG9hZF9FcnJvciBlcnJv
cjsKIApAQCAtMTQxMCw3ICsxNDEwLDcgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9lcnJvcihFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqZXJyb3JfZG9tYWluLCBpbnQgZXJyb3JfY28KICAqCiAg
KiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb2dyZXNzIiB3aXRoIHBvaW50ZXIgdG8gYSBkb3VibGUg
ZnJvbSAwLjAgdG8gMS4wLgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5n
ZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQo
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qp
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5mcmFtZSk7CkBAIC0xNDMwLDcg
KzE0MzAsNyBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmpl
Y3QgKm8pCiAgKgogICogUmVwb3J0cyBjb250ZW50cyBzaXplIGNoYW5nZWQuCiAgKi8KLXZvaWQg
ZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCAqbywgRXZhc19Db29y
ZCB3LCBFdmFzX0Nvb3JkIGgpCit2b2lkIGV3a19mcmFtZV9jb250ZW50c19zaXplX2NoYW5nZWQo
RXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAgIERCRygi
bz0lcDogJWR4JWQiLCBvLCB3LCBoKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCk7CkBAIC0xNDQ5LDEzICsxNDQ5LDEzIEBAIHZvaWQgZXdrX2ZyYW1lX2NvbnRlbnRzX3Np
emVfY2hhbmdlZChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiAg
KgogICogUmVwb3J0cyB0aXRsZSBjaGFuZ2VkLgogICovCi12b2lkIGV3a19mcmFtZV90aXRsZV9z
ZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRpdGxlKQordm9pZCBld2tfZnJhbWVfdGl0
bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0aXRsZSkKIHsKICAgICBEQkcoIm89
JXAsIHRpdGxlPSVzIiwgbywgdGl0bGUgPyB0aXRsZSA6ICIobnVsbCkiKTsKICAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgaWYgKCFlaW5hX3N0cmluZ3NoYXJlX3Jl
cGxhY2UoJnNkLT50aXRsZSwgdGl0bGUpKQogICAgICAgICByZXR1cm47Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidGl0bGUsY2hhbmdlZCIsICh2b2lkICopc2QtPnRp
dGxlKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ0aXRsZSxjaGFu
Z2VkIiwgKHZvaWQqKXNkLT50aXRsZSk7CiB9CiAKIC8qKgpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAg
dm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0aXRs
ZSkKICAqCiAgKiBDcmVhdGVzIGEgdmlldy4KICAqLwotdm9pZCBld2tfZnJhbWVfdmlld19jcmVh
dGVfZm9yX3ZpZXcoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICp2aWV3KQordm9pZCBld2tf
ZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiB2
aWV3KQogewogICAgIERCRygibz0lcCwgdmlldz0lcCIsIG8sIHZpZXcpOwogICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTE0ODgsMTIgKzE0ODgsMTIgQEAgdm9pZCBl
d2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0
ICp2aWV3KQogICAgIGlmICghc2QtPmZyYW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNvbnN0IGNoYXIgKnRoZW1lID0gZXdrX3ZpZXdfdGhlbWVfZ2V0KHZpZXcpOworICAgIGNv
bnN0IGNoYXIqIHRoZW1lID0gZXdrX3ZpZXdfdGhlbWVfZ2V0KHZpZXcpOwogICAgIHNkLT5mcmFt
ZS0+dmlldygpLT5zZXRFZGplVGhlbWUodGhlbWUpOwogICAgIHNkLT5mcmFtZS0+dmlldygpLT5z
ZXRFdmFzT2JqZWN0KG8pOwogfQogCi1zc2l6ZV90IGV3a19mcmFtZV9zb3VyY2VfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvLCBjaGFyICoqZnJhbWVfc291cmNlKQorc3NpemVfdCBld2tfZnJhbWVf
c291cmNlX2dldChjb25zdCBFdmFzX09iamVjdCogbywgY2hhcioqIGZyYW1lX3NvdXJjZSkKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEpOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIC0xKTsKQEAgLTE1MTAsMTEgKzE1MTAs
MTEgQEAgc3NpemVfdCBld2tfZnJhbWVfc291cmNlX2dldChjb25zdCBFdmFzX09iamVjdCAqbywg
Y2hhciAqKmZyYW1lX3NvdXJjZSkKICAgICB9CiAKICAgICAvLyBMb29rIGZvciA8aHRtbD4gdGFn
LiBJZiBpdCBleGlzdHMsIHRoZSBub2RlIGNvbnRhdGlucyBhbGwgZG9jdW1lbnQncyBzb3VyY2Uu
Ci0gICAgV2ViQ29yZTo6Tm9kZSAqZG9jdW1lbnROb2RlID0gc2QtPmZyYW1lLT5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBXZWJDb3JlOjpOb2RlKiBkb2N1bWVudE5vZGUgPSBz
ZC0+ZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmIChkb2N1bWVu
dE5vZGUpCi0gICAgICAgIGZvciAoV2ViQ29yZTo6Tm9kZSAqbm9kZSA9IGRvY3VtZW50Tm9kZS0+
Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKSB7CisgICAg
ICAgIGZvciAoV2ViQ29yZTo6Tm9kZSogbm9kZSA9IGRvY3VtZW50Tm9kZS0+Zmlyc3RDaGlsZCgp
OyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6Omh0bWxUYWcpKSB7Ci0gICAgICAg
ICAgICAgICAgV2ViQ29yZTo6SFRNTEVsZW1lbnQgKmVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MRWxlbWVudCo+KG5vZGUpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxF
bGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQqPihub2Rl
KTsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkKICAgICAgICAgICAgICAgICAgICAgc291
cmNlID0gZWxlbWVudC0+b3V0ZXJIVE1MKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
NTQzLDI1ICsxNTQzLDI1IEBAIHNzaXplX3QgZXdrX2ZyYW1lX3NvdXJjZV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8sIGNoYXIgKipmcmFtZV9zb3VyY2UpCiAgICAgcmV0dXJuIHNvdXJjZV9sZW5n
dGg7CiB9CiAKLUVpbmFfTGlzdCAqZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlvbl9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0xpc3QqIGV3a19mcmFtZV9yZXNvdXJjZXNfbG9jYXRp
b25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Qt
PmZyYW1lLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LT5kb2N1bWVudCgpLCAwKTsKIAotICAgIEVpbmFfTGlzdCAqbGlzdE9mSW1hZ2VzTG9jYXRpb24g
PSAwOworICAgIEVpbmFfTGlzdCogbGlzdE9mSW1hZ2VzTG9jYXRpb24gPSAwOwogCiAgICAgLy8g
R2V0IHNyYyBhdHRpYnV0ZSBvZiBpbWFnZXMgYW5kIHNhdmVzIHRoZW0gdG8gdGhlIEVpbmFfTGlz
dC4KICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTENvbGxlY3Rpb24+IGltYWdlcyA9IHNkLT5mcmFt
ZS0+ZG9jdW1lbnQoKS0+aW1hZ2VzKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IGltYWdlcy0+bGVuZ3RoKCk7ICsraW5kZXgpIHsKLSAgICAgICAgV2ViQ29yZTo6SFRNTElt
YWdlRWxlbWVudCAqaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEltYWdl
RWxlbWVudCo+KGltYWdlcy0+aXRlbShpbmRleCkpOworICAgICAgICBXZWJDb3JlOjpIVE1MSW1h
Z2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50Kj4oaW1hZ2VzLT5pdGVtKGluZGV4KSk7CiAgICAgICAgIGlmICghaW1hZ2VFbGVtZW50
IHx8IGltYWdlRWxlbWVudC0+c3JjKCkuaXNOdWxsKCkgfHwgaW1hZ2VFbGVtZW50LT5zcmMoKS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBXVEY6OlN0cmluZyBp
bWFnZUxvY2F0aW9uID0gaW1hZ2VFbGVtZW50LT5zcmMoKS5zdHJpbmcoKTsKICAgICAgICAgLy8g
TG9vayBmb3IgZHVwbGljYXRlZCBsb2NhdGlvbi4KLSAgICAgICAgRWluYV9MaXN0ICpsaXN0SXRl
cmF0b3IgPSAwOwotICAgICAgICB2b2lkICpkYXRhID0gMDsKKyAgICAgICAgRWluYV9MaXN0KiBs
aXN0SXRlcmF0b3IgPSAwOworICAgICAgICB2b2lkKiBkYXRhID0gMDsKICAgICAgICAgRWluYV9C
b29sIGZvdW5kID0gRUlOQV9GQUxTRTsKICAgICAgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobGlzdE9m
SW1hZ2VzTG9jYXRpb24sIGxpc3RJdGVyYXRvciwgZGF0YSkKICAgICAgICAgICAgIGlmIChmb3Vu
ZCA9ICFzdHJjbXAoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpLCBpbWFnZUxvY2F0aW9uLnV0Zjgo
KS5kYXRhKCkpKQpAQCAtMTU2OSw3ICsxNTY5LDcgQEAgRWluYV9MaXN0ICpld2tfZnJhbWVfcmVz
b3VyY2VzX2xvY2F0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAgICAgICAgaWYgKGZv
dW5kKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgY2hhciAqaW1hZ2VMb2NhdGlv
bkNvcHkgPSBzdHJkdXAoaW1hZ2VMb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgY2hh
ciogaW1hZ2VMb2NhdGlvbkNvcHkgPSBzdHJkdXAoaW1hZ2VMb2NhdGlvbi51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgaWYgKCFpbWFnZUxvY2F0aW9uQ29weSkKICAgICAgICAgICAgIGdvdG8gb3V0
X29mX21lbW9yeV9oYW5kbGVyOwogICAgICAgICBsaXN0T2ZJbWFnZXNMb2NhdGlvbiA9IGVpbmFf
bGlzdF9hcHBlbmQobGlzdE9mSW1hZ2VzTG9jYXRpb24sIGltYWdlTG9jYXRpb25Db3B5KTsKQEAg
LTE1ODEsNyArMTU4MSw3IEBAIEVpbmFfTGlzdCAqZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlv
bl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAKIG91dF9vZl9tZW1vcnlfaGFuZGxlcjoKICAg
ICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeS4iKTsKLSAgICB2b2lkICpkYXRh
OworICAgIHZvaWQqIGRhdGE7CiAgICAgRUlOQV9MSVNUX0ZSRUUobGlzdE9mSW1hZ2VzTG9jYXRp
b24sIGRhdGEpCiAgICAgICAgIGZyZWUoZGF0YSk7CiAgICAgcmV0dXJuIDA7CkBAIC0xNTkzLDcg
KzE1OTMsNyBAQCBvdXRfb2ZfbWVtb3J5X2hhbmRsZXI6CiAgKgogICogRW1pdHMgc2lnbmFsOiAi
dXJpLGNoYW5nZWQiIHdpdGggbmV3IHVyaSBhcyBwYXJhbWV0ZXIuCiAgKi8KLUVpbmFfQm9vbCBl
d2tfZnJhbWVfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1l
X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTE2MTUsNyArMTYxNSw3IEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRm9yY2Vz
IGxheW91dCBmb3IgZnJhbWUuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFz
X09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFzX09iamVjdCogbykK
IHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCk7CkBAIC0xNjMwLDcgKzE2MzAsNyBAQCB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQo
RXZhc19PYmplY3QgKm8pCiAgKgogICogQ3JlYXRlcyBwbHVnaW4uCiAgKi8KLVdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplICZwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudCAqZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBjb25zdCBXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nPiAmcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nICZtaW1lVHlwZSwgYm9vbCBs
b2FkTWFudWFsbHkpCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVf
cGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSAmcGx1
Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNv
cmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbU5hbWVz
LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtVmFsdWVzLCBjb25zdCBXVEY6
OlN0cmluZyAmbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIHJldHVybiAwOwog
fQpAQCAtMTY0Myw3ICsxNjQzLDcgQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
ZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QgKm8sIGNvbnN0IFcKICAqCiAgKiBF
bWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnRzZWxlY3Rpb24sY2hhbmdlZCIgd2l0aCBubyBwYXJh
bWV0ZXJzLgogICovCi12b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFu
Z2VkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxlY3Rp
b25fY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8sICJlZGl0b3JjbGllbnQsc2VsZWN0aW9uLGNoYW5nZWQiLCAwKTsKICAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0xNjU4LDcgKzE2NTgsNyBAQCB2
b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0
ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImVkaXRvcmNsaWVudCxjb250ZW50cyxjaGFuZ2Vk
IiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRf
Y29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9j
bGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJlZGl0b3JjbGllbnQsY29udGVudHMsY2hhbmdlZCIs
IDApOwogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2hpc3RvcnkuY3BwCmluZGV4IDkxYzdjNWMuLjg3YmRhYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogc3RydWN0IF9Fd2tfSGlzdG9yeSB7Ci0gICAgV2ViQ29yZTo6
QmFja0ZvcndhcmRMaXN0SW1wbCAqY29yZTsKKyAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJ
bXBsKiBjb3JlOwogfTsKIAogI2RlZmluZSBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4o
aGlzdG9yeSwgY29yZV8sIC4uLikgICAgICBcCkBAIC01MCwxNiArNTAsMTYgQEAgc3RydWN0IF9F
d2tfSGlzdG9yeSB7CiAgICAgICAgIEVSUigiaGlzdG9yeS0+Y29yZSBpcyBkaXNhYmxlZCEuIik7
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgV2ViQ29y
ZTo6QmFja0ZvcndhcmRMaXN0SW1wbCAqY29yZV8gPSAoaGlzdG9yeSktPmNvcmUKKyAgICBXZWJD
b3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBjb3JlXyA9IChoaXN0b3J5KS0+Y29yZQogCiAKIHN0
cnVjdCBfRXdrX0hpc3RvcnlfSXRlbSB7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmU7
CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGNvcmU7CiAKLSAgICBjb25zdCBjaGFyICp0aXRs
ZTsKLSAgICBjb25zdCBjaGFyICphbHRlcm5hdGVfdGl0bGU7Ci0gICAgY29uc3QgY2hhciAqdXJp
OwotICAgIGNvbnN0IGNoYXIgKm9yaWdpbmFsX3VyaTsKKyAgICBjb25zdCBjaGFyKiB0aXRsZTsK
KyAgICBjb25zdCBjaGFyKiBhbHRlcm5hdGVfdGl0bGU7CisgICAgY29uc3QgY2hhciogdXJpOwor
ICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFsX3VyaTsKIH07CiAKICNkZWZpbmUgRVdLX0hJU1RPUllf
SVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZV8sIC4uLikgXApAQCAtNzEsMTAgKzcx
LDEwIEBAIHN0cnVjdCBfRXdrX0hpc3RvcnlfSXRlbSB7CiAgICAgICAgIENSSVRJQ0FMKCJpdGVt
LT5jb3JlIGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJu
IF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmVfID0gKGl0ZW0pLT5jb3JlCisgICAgV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qIGNvcmVfID0gKGl0ZW0pLT5jb3JlCiAKIAotc3RhdGljIGlubGlu
ZSBFd2tfSGlzdG9yeV9JdGVtICpfZXdrX2hpc3RvcnlfaXRlbV9uZXcoV2ViQ29yZTo6SGlzdG9y
eUl0ZW0gKmNvcmUpCitzdGF0aWMgaW5saW5lIEV3a19IaXN0b3J5X0l0ZW0qIF9ld2tfaGlzdG9y
eV9pdGVtX25ldyhXZWJDb3JlOjpIaXN0b3J5SXRlbSogY29yZSkKIHsKICAgICBFd2tfSGlzdG9y
eV9JdGVtKiBpdGVtOwogCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBpbmxpbmUgRXdrX0hpc3Rv
cnlfSXRlbSAqX2V3a19oaXN0b3J5X2l0ZW1fbmV3KFdlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3Jl
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGl0ZW0gPSAoRXdrX0hpc3RvcnlfSXRl
bSAqKWNhbGxvYygxLCBzaXplb2YoRXdrX0hpc3RvcnlfSXRlbSkpOworICAgIGl0ZW0gPSAoRXdr
X0hpc3RvcnlfSXRlbSopY2FsbG9jKDEsIHNpemVvZihFd2tfSGlzdG9yeV9JdGVtKSk7CiAgICAg
aWYgKCFpdGVtKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUgaXRlbSBt
ZW1vcnkuIik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgaW5s
aW5lIEV3a19IaXN0b3J5X0l0ZW0gKl9ld2tfaGlzdG9yeV9pdGVtX25ldyhXZWJDb3JlOjpIaXN0
b3J5SXRlbSAqY29yZQogICAgIHJldHVybiBpdGVtOwogfQogCi1zdGF0aWMgaW5saW5lIEVpbmFf
TGlzdCAqX2V3a19oaXN0b3J5X2l0ZW1fbGlzdF9nZXQoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0
ZW1WZWN0b3IgJmNvcmVfaXRlbXMpCitzdGF0aWMgaW5saW5lIEVpbmFfTGlzdCogX2V3a19oaXN0
b3J5X2l0ZW1fbGlzdF9nZXQoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3IgJmNvcmVf
aXRlbXMpCiB7CiAgICAgRWluYV9MaXN0KiByZXQgPSAwOwogICAgIHVuc2lnbmVkIGludCBpLCBz
aXplOwpAQCAtMTUzLDcgKzE1Myw3IEBAIEV3a19IaXN0b3J5X0l0ZW0qIGV3a19oaXN0b3J5X2hp
c3RvcnlfaXRlbV9iYWNrX2dldChjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSkKIEV3a19IaXN0
b3J5X0l0ZW0qIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9jdXJyZW50X2dldChjb25zdCBFd2tf
SGlzdG9yeSogaGlzdG9yeSkKIHsKICAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4o
aGlzdG9yeSwgY29yZSwgMCk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmN1cnJlbnRJdGVt
ID0gY29yZS0+Y3VycmVudEl0ZW0oKTsKKyAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogY3VycmVu
dEl0ZW0gPSBjb3JlLT5jdXJyZW50SXRlbSgpOwogICAgIGlmIChjdXJyZW50SXRlbSkKICAgICAg
ICAgcmV0dXJuIF9ld2tfaGlzdG9yeV9pdGVtX25ldyhjdXJyZW50SXRlbSk7CiAgICAgcmV0dXJu
IDA7CkBAIC0zMjIsNyArMzIyLDcgQEAgZG91YmxlIGV3a19oaXN0b3J5X2l0ZW1fdGltZV9sYXN0
X3Zpc2l0ZWRfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiBjYWlyb19zdXJmYWNl
X3QqIGV3a19oaXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldChjb25zdCBFd2tfSGlzdG9yeV9J
dGVtKiBpdGVtKQogewogICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0
ZW0sIGNvcmUsIDApOwotICAgIAorCiAgICAgV2ViQ29yZTo6SW1hZ2UqIGljb24gPSBXZWJDb3Jl
OjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvcmUtPnVybCgpLCBX
ZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogICAgIGlmICghaWNvbikgewogICAgICAgICBFUlIo
Imljb24gaXMgTlVMTC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
anMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKaW5kZXggNjJiM2FhNC4u
ZmY4YzM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAog
I2RlZmluZSBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVSTihvLCAuLi4pIFwKICAgICBpZiAoIUVJ
TkFfTUFHSUNfQ0hFQ0sob2JqLCBFV0tfSlNfT0JKRUNUX01BR0lDKSkgeyBcCi0gICAgICAgRUlO
QV9NQUdJQ19GQUlMKG9iaiwgRVdLX0pTX09CSkVDVF9NQUdJQyk7IFwKLSAgICAgICByZXR1cm4g
X19WQV9BUkdTX187IFwKKyAgICAgICAgRUlOQV9NQUdJQ19GQUlMKG9iaiwgRVdLX0pTX09CSkVD
VF9NQUdJQyk7IFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyBcCiAgICAgfQogCiBzdHJ1
Y3QgX0V3a19KU19DbGFzcyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X21haW4uY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAppbmRleCBhYjU1
NjdiLi4xZTM2YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKQEAgLTE5MSw3ICsx
OTEsNyBAQCBFaW5hX0Jvb2wgX2V3a19pbml0X2JvZHkodm9pZCkKICAgICAvLyBUT0RPOiB0aGlz
IHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUsIGFscmVhZHkgcmVwb3J0ZWQgdG8gd2Via2l0LWd0ayBm
b2xrczoKICNpZiBVU0UoU09VUCkKICAgICBpZiAoMSkgewotICAgICAgICBTb3VwU2Vzc2lvbiAq
c2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAg
ICAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZh
dWx0U2Vzc2lvbigpOwogICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVfYnlfdHlwZShz
ZXNzaW9uLCBTT1VQX1RZUEVfQ09OVEVOVF9TTklGRkVSKTsKICAgICAgICAgc291cF9zZXNzaW9u
X2FkZF9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwgU09VUF9UWVBFX0NPTlRFTlRfREVDT0RFUik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCmluZGV4IDVjNzg5MjMuLjI2ZDUy
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcApAQCAtMzAsMTAgKzMwLDEw
IEBACiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjZW5kaWYKIAotdm9pZCBld2tfbmV0d29y
a19wcm94eV91cmlfc2V0KGNvbnN0IGNoYXIgKnByb3h5KQordm9pZCBld2tfbmV0d29ya19wcm94
eV91cmlfc2V0KGNvbnN0IGNoYXIqIHByb3h5KQogewogI2lmIFVTRShTT1VQKQotICAgIFNvdXBT
ZXNzaW9uICpzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9u
KCk7CisgICAgU291cFNlc3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGVmYXVsdFNlc3Npb24oKTsKIAogICAgIGlmICghcHJveHkpIHsKICAgICAgICAgRVJSKCJubyBw
cm94eSB1cmkuIHJlbW92ZSBwcm94eSBmZWF0dXJlIGluIHNvdXAuIik7CkBAIC00MSw3ICs0MSw3
IEBAIHZvaWQgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChjb25zdCBjaGFyICpwcm94eSkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNvdXBVUkkgKnVyaSA9IHNvdXBfdXJpX25ldyhw
cm94eSk7CisgICAgU291cFVSSSogdXJpID0gc291cF91cmlfbmV3KHByb3h5KTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTih1cmkpOwogCiAgICAgZ19vYmplY3Rfc2V0KHNlc3Npb24s
IFNPVVBfU0VTU0lPTl9QUk9YWV9VUkksIHVyaSwgTlVMTCk7CkBAIC01MSwxMSArNTEsMTEgQEAg
dm9pZCBld2tfbmV0d29ya19wcm94eV91cmlfc2V0KGNvbnN0IGNoYXIgKnByb3h5KQogI2VuZGlm
CiB9CiAKLWNvbnN0IGNoYXIgKmV3a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQodm9pZCkKK2NvbnN0
IGNoYXIqIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQodm9pZCkKIHsKICNpZiBVU0UoU09VUCkK
LSAgICBTb3VwVVJJICp1cmk7Ci0gICAgU291cFNlc3Npb24gKnNlc3Npb24gPSBXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAgICBTb3VwVVJJKiB1cmk7CisgICAg
U291cFNlc3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNl
c3Npb24oKTsKICAgICBnX29iamVjdF9nZXQoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX1BST1hZX1VS
SSwgJnVyaSwgTlVMTCk7CiAKICAgICBpZiAoIXVyaSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3NldHRpbmdzLmNwcAppbmRleCA4MTVjZmQyLi5iNDEwZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NldHRpbmdzLmNwcApAQCAtODksNyArODksNyBAQCB1aW50NjRfdCBld2tfc2V0dGlu
Z3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRfcXVvdGFfZ2V0KHZvaWQpCiAjZW5kaWYKIH0KIAotdm9p
ZCBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIgKnBhdGgpCit2
b2lkIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQoY29uc3QgY2hhciogcGF0aCkK
IHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0g
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHBhdGgpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgZXdr
X3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRoX3NldChjb25zdCBjaGFyICpwYXRoKQogI2VuZGlm
CiB9CiAKLWNvbnN0IGNoYXIgKmV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9nZXQodm9p
ZCkKK2NvbnN0IGNoYXIqIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9nZXQodm9pZCkK
IHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIHJldHVybiBfZXdrX2RlZmF1bHRfd2Vi
X2RhdGFiYXNlX3BhdGg7CkBAIC0xMTEsNyArMTExLDcgQEAgY29uc3QgY2hhciAqZXdrX3NldHRp
bmdzX3dlYl9kYXRhYmFzZV9wYXRoX2dldCh2b2lkKQogI2VuZGlmCiB9CiAKLUVpbmFfQm9vbCBl
d2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3NldChjb25zdCBjaGFyICpkaXJlY3Rvcnkp
CitFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQoY29uc3QgY2hh
ciogZGlyZWN0b3J5KQogewogICAgIFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVsYXlEYXRhYmFz
ZUNsZWFudXAoKTsKIApAQCAtMTU2LDcgKzE1Niw3IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3Nf
aWNvbl9kYXRhYmFzZV9wYXRoX3NldChjb25zdCBjaGFyICpkaXJlY3RvcnkpCiAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2Vf
cGF0aF9nZXQodm9pZCkKK2NvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3Bh
dGhfZ2V0KHZvaWQpCiB7CiAgICAgaWYgKCFXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pc0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzcsMTIgKzE3NywxMiBAQCBFaW5hX0Jvb2wg
ZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfY2xlYXIodm9pZCkKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCi1jYWlyb19zdXJmYWNlX3QgKmV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2lj
b25fc3VyZmFjZV9nZXQoY29uc3QgY2hhciAqdXJsKQorY2Fpcm9fc3VyZmFjZV90KiBld2tfc2V0
dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KGNvbnN0IGNoYXIqIHVybCkKIHsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKIAogICAgIFdlYkNv
cmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwp
KTsKLSAgICBXZWJDb3JlOjpJbWFnZSAqaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5
bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50U2l6ZSgx
NiwgMTYpKTsKKyAgICBXZWJDb3JlOjpJbWFnZSogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFz
ZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50
U2l6ZSgxNiwgMTYpKTsKIAogICAgIGlmICghaWNvbikgewogICAgICAgICBFUlIoIm5vIGljb24g
Zm9yIHVybCAlcyIsIHVybCk7CkBAIC0xOTIsMTQgKzE5MiwxNCBAQCBjYWlyb19zdXJmYWNlX3Qg
KmV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgY2hhciAq
dXJsKQogICAgIHJldHVybiBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogfQog
Ci1FdmFzX09iamVjdCAqZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfYWRk
KGNvbnN0IGNoYXIgKnVybCwgRXZhcyAqY2FudmFzKQorRXZhc19PYmplY3QqIGV3a19zZXR0aW5n
c19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2FkZChjb25zdCBjaGFyKiB1cmwsIEV2YXMqIGNh
bnZhcykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKIAogICAgIFdlYkNv
cmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwp
KTsKLSAgICBXZWJDb3JlOjpJbWFnZSAqaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5
bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50U2l6ZSgx
NiwgMTYpKTsKLSAgICBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2U7CisgICAgV2ViQ29yZTo6SW1h
Z2UqIGljb24gPSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdl
VVJMKGt1cmwuc3RyaW5nKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7CisgICAgY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlOwogCiAgICAgaWYgKCFpY29uKSB7CiAgICAgICAgIEVSUigibm8g
aWNvbiBmb3IgdXJsICVzIiwgdXJsKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIGV3a19zZXR0
aW5nc19yZXBhaW50X3Rocm90dGxpbmdfc2V0KGRvdWJsZSBkZWZlcnJlZF9yZXBhaW50X2RlbGF5
LCBkb3VibGUgaQogICoKICAqIEByZXR1cm4gYSBwb2ludGVyIHRvIGFuIGVpbmFfc3RyaW5nc2hh
cmUgY29udGFpbmluZyB0aGUgdXNlciBhZ2VudCBzdHJpbmcKICAqLwotY29uc3QgY2hhciAqZXdr
X3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQodm9pZCkKK2NvbnN0IGNoYXIqIGV3a19z
ZXR0aW5nc19kZWZhdWx0X3VzZXJfYWdlbnRfZ2V0KHZvaWQpCiB7CiAgICAgV1RGOjpTdHJpbmcg
dWFfdmVyc2lvbiA9IG1ha2VTdHJpbmcoU3RyaW5nOjpudW1iZXIoV0VCS0lUX1VTRVJfQUdFTlRf
TUFKT1JfVkVSU0lPTiksICcuJywgU3RyaW5nOjpudW1iZXIoV0VCS0lUX1VTRVJfQUdFTlRfTUlO
T1JfVkVSU0lPTiksICcrJyk7CiAgICAgV1RGOjpTdHJpbmcgc3RhdGljX3VhID0gbWFrZVN0cmlu
ZygiTW96aWxsYS81LjAgKCIsIF9ld2tfc2V0dGluZ3Nfd2Via2l0X3BsYXRmb3JtX2dldCgpLCAi
OyAiLCBfZXdrX3NldHRpbmdzX3dlYmtpdF9vc192ZXJzaW9uX2dldCgpLCAiKSBBcHBsZVdlYktp
dC8iLCB1YV92ZXJzaW9uKSArIG1ha2VTdHJpbmcoIiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNp
b24vNS4wIFNhZmFyaS8iLCB1YV92ZXJzaW9uKTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBjb25zdCBj
aGFyICpld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCh2b2lkKQogICAgIHJldHVy
biBlaW5hX3N0cmluZ3NoYXJlX2FkZChzdGF0aWNfdWEudXRmOCgpLmRhdGEoKSk7CiB9CiAKLUVp
bmFfQm9vbCBld2tfc2V0dGluZ3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfc2V0KGNvbnN0IGNoYXIg
KnBhdGgpCitFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9wYXRoX3NldChj
b25zdCBjaGFyKiBwYXRoKQogewogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMp
CiAgICAgaWYgKCFwYXRoKQpAQCAtMjcwLDcgKzI3MCw3IEBAIEVpbmFfQm9vbCBld2tfc2V0dGlu
Z3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfc2V0KGNvbnN0IGNoYXIgKnBhdGgpCiAjZW5kaWYKIH0K
IAotY29uc3QgY2hhciAqZXdrX3NldHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9wYXRoX2dldCgpCitj
b25zdCBjaGFyKiBld2tfc2V0dGluZ3NfY2FjaGVfZGlyZWN0b3J5X3BhdGhfZ2V0KCkKIHsKICNp
ZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIHJldHVybiBfZXdrX2NhY2hl
X2RpcmVjdG9yeV9wYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191
dGlsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKaW5kZXggMDhiM2Mw
My4uNWMxMGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCkBAIC0zOCwxNSArMzgs
MTUgQEAKICAqIEBwYXJhbSBzdXJmYWNlIGNhaXJvIHJlcHJlc2VudGF0aW9uIG9mIGFuIGltYWdl
CiAgKiBAcmV0dXJuIGNvbnZlcnRlZCBjYWlyb19zdXJmYWNlIG9iamVjdCB0byB0aGUgRXZhc19P
YmplY3QKICAqLwotRXZhc19PYmplY3QgKmV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFj
ZV9hZGQoRXZhcyAqY2FudmFzLCBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2UpCitFdmFzX09iamVj
dCogZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZChFdmFzKiBjYW52YXMsIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKIHsKICAgICBjYWlyb19zdGF0dXNfdCBzdGF0dXM7CiAg
ICAgY2Fpcm9fc3VyZmFjZV90eXBlX3QgdHlwZTsKICAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7
CiAgICAgaW50IHcsIGgsIHN0cmlkZTsKLSAgICBFdmFzX09iamVjdCAqaW1hZ2U7Ci0gICAgY29u
c3Qgdm9pZCAqc3JjOwotICAgIHZvaWQgKmRzdDsKKyAgICBFdmFzX09iamVjdCogaW1hZ2U7Cisg
ICAgY29uc3Qgdm9pZCogc3JjOworICAgIHZvaWQqIGRzdDsKIAogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzdXJmYWNlLCAwKTsKQEAgLTE2Nyw4ICsxNjcsOCBAQCB1bnNpZ25lZCBld2tfdXRp
bF93b3JrZXJfdGhyZWFkX2NvdW50KCkKIGludCBld2tfdXRpbF9kcGlfZ2V0KHZvaWQpCiB7CiAj
aWZkZWYgSEFWRV9FQ09SRV9YCi0gICAgIHJldHVybiBlY29yZV94X2RwaV9nZXQoKTsKKyAgICBy
ZXR1cm4gZWNvcmVfeF9kcGlfZ2V0KCk7CiAjZWxzZQotICAgICByZXR1cm4gMTYwOworICAgIHJl
dHVybiAxNjA7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGNl
NTU1ZmQuLmQyZWUyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtODgsNzIg
Kzg4LDcyIEBAIHN0YXRpYyBjb25zdCBzaXplX3QgRVdLX1ZJRVdfU0NST0xMU19TSVpFX01BWF9G
UkVFID0gMzI7CiAgKiBAaW50ZXJuYWwKICAqLwogc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEgewotICAgIFdlYkNvcmU6OlBhZ2UgKnBhZ2U7Ci0gICAgV2ViQ29yZTo6U2V0dGluZ3MgKnBh
Z2Vfc2V0dGluZ3M7Ci0gICAgV2ViQ29yZTo6RnJhbWUgKm1haW5fZnJhbWU7CisgICAgV2ViQ29y
ZTo6UGFnZSogcGFnZTsKKyAgICBXZWJDb3JlOjpTZXR0aW5ncyogcGFnZV9zZXR0aW5nczsKKyAg
ICBXZWJDb3JlOjpGcmFtZSogbWFpbl9mcmFtZTsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50cyB2aWV3cG9ydF9hcmd1bWVudHM7Ci0gICAgRXdrX0hpc3RvcnkgKmhpc3Rvcnk7CisgICAg
RXdrX0hpc3RvcnkqIGhpc3Rvcnk7CiAgICAgc3RydWN0IHsKICAgICAgICAgdm9pZCogY29udGV4
dDsKICAgICAgICAgRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxlcl9DYiBmdW5jdGlvbjsKICAgICB9
IGN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyOwogICAgIHN0cnVjdCB7CiAgICAgICAgIEV3a19NZW51
IG1lbnU7Ci0gICAgICAgIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCAqbWVudV9jbGllbnQ7Cisg
ICAgICAgIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogbWVudV9jbGllbnQ7CiAgICAgfSBwb3B1
cDsKICAgICBzdHJ1Y3QgewotICAgICAgICBFaW5hX1JlY3RhbmdsZSAqYXJyYXk7CisgICAgICAg
IEVpbmFfUmVjdGFuZ2xlKiBhcnJheTsKICAgICAgICAgc2l6ZV90IGNvdW50OwogICAgICAgICBz
aXplX3QgYWxsb2NhdGVkOwogICAgIH0gcmVwYWludHM7CiAgICAgc3RydWN0IHsKLSAgICAgICAg
RXdrX1Njcm9sbF9SZXF1ZXN0ICphcnJheTsKKyAgICAgICAgRXdrX1Njcm9sbF9SZXF1ZXN0KiBh
cnJheTsKICAgICAgICAgc2l6ZV90IGNvdW50OwogICAgICAgICBzaXplX3QgYWxsb2NhdGVkOwog
ICAgIH0gc2Nyb2xsczsKICAgICB1bnNpZ25lZCBpbnQgaW1oOyAvKio8IGlucHV0IG1ldGhvZCBo
aW50cyAqLwogICAgIHN0cnVjdCB7Ci0gICAgICAgIEVpbmFfQm9vbCB2aWV3X2NsZWFyZWQ6MTsK
LSAgICAgICAgRWluYV9Cb29sIG5lZWRfdG91Y2hfZXZlbnRzOjE7CisgICAgICAgIEVpbmFfQm9v
bCB2aWV3X2NsZWFyZWQgOiAxOworICAgICAgICBFaW5hX0Jvb2wgbmVlZF90b3VjaF9ldmVudHMg
OiAxOwogICAgIH0gZmxhZ3M7CiAgICAgc3RydWN0IHsKLSAgICAgICAgY29uc3QgY2hhciAqdXNl
cl9hZ2VudDsKLSAgICAgICAgY29uc3QgY2hhciAqdXNlcl9zdHlsZXNoZWV0OwotICAgICAgICBj
b25zdCBjaGFyICplbmNvZGluZ19kZWZhdWx0OwotICAgICAgICBjb25zdCBjaGFyICplbmNvZGlu
Z19jdXN0b207Ci0gICAgICAgIGNvbnN0IGNoYXIgKnRoZW1lOwotICAgICAgICBjb25zdCBjaGFy
ICpsb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGg7CisgICAgICAgIGNvbnN0IGNoYXIqIHVzZXJf
YWdlbnQ7CisgICAgICAgIGNvbnN0IGNoYXIqIHVzZXJfc3R5bGVzaGVldDsKKyAgICAgICAgY29u
c3QgY2hhciogZW5jb2RpbmdfZGVmYXVsdDsKKyAgICAgICAgY29uc3QgY2hhciogZW5jb2Rpbmdf
Y3VzdG9tOworICAgICAgICBjb25zdCBjaGFyKiB0aGVtZTsKKyAgICAgICAgY29uc3QgY2hhciog
bG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoOwogICAgICAgICBpbnQgZm9udF9taW5pbXVtX3Np
emU7CiAgICAgICAgIGludCBmb250X21pbmltdW1fbG9naWNhbF9zaXplOwogICAgICAgICBpbnQg
Zm9udF9kZWZhdWx0X3NpemU7CiAgICAgICAgIGludCBmb250X21vbm9zcGFjZV9zaXplOwotICAg
ICAgICBjb25zdCBjaGFyICpmb250X3N0YW5kYXJkOwotICAgICAgICBjb25zdCBjaGFyICpmb250
X2N1cnNpdmU7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfbW9ub3NwYWNlOwotICAgICAgICBj
b25zdCBjaGFyICpmb250X2ZhbnRhc3k7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfc2VyaWY7
Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfc2Fuc19zZXJpZjsKLSAgICAgICAgRWluYV9Cb29s
IGF1dG9fbG9hZF9pbWFnZXM6MTsKLSAgICAgICAgRWluYV9Cb29sIGF1dG9fc2hyaW5rX2ltYWdl
czoxOwotICAgICAgICBFaW5hX0Jvb2wgZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvdzoxOwotICAg
ICAgICBFaW5hX0Jvb2wgZW5hYmxlX2RldmVsb3Blcl9leHRyYXM6MTsKLSAgICAgICAgRWluYV9C
b29sIGVuYWJsZV9zY3JpcHRzOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBlbmFibGVfcGx1Z2luczox
OwotICAgICAgICBFaW5hX0Jvb2wgZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmc6MTsKLSAgICAgICAg
RWluYV9Cb29sIGVuY29kaW5nX2RldGVjdG9yOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBzY3JpcHRz
X3dpbmRvd19vcGVuOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBzY3JpcHRzX2Nhbl9jbG9zZV93aW5k
b3dzOjE7Ci0gICAgICAgIEVpbmFfQm9vbCByZXNpemFibGVfdGV4dGFyZWFzOjE7Ci0gICAgICAg
IEVpbmFfQm9vbCBwcml2YXRlX2Jyb3dzaW5nOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBjYXJldF9i
cm93c2luZzoxOwotICAgICAgICBFaW5hX0Jvb2wgc3BhdGlhbF9uYXZpZ2F0aW9uOjE7Ci0gICAg
ICAgIEVpbmFfQm9vbCBsb2NhbF9zdG9yYWdlOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBvZmZsaW5l
X2FwcF9jYWNoZTogMTsKLSAgICAgICAgRWluYV9Cb29sIHBhZ2VfY2FjaGU6IDE7CisgICAgICAg
IGNvbnN0IGNoYXIqIGZvbnRfc3RhbmRhcmQ7CisgICAgICAgIGNvbnN0IGNoYXIqIGZvbnRfY3Vy
c2l2ZTsKKyAgICAgICAgY29uc3QgY2hhciogZm9udF9tb25vc3BhY2U7CisgICAgICAgIGNvbnN0
IGNoYXIqIGZvbnRfZmFudGFzeTsKKyAgICAgICAgY29uc3QgY2hhciogZm9udF9zZXJpZjsKKyAg
ICAgICAgY29uc3QgY2hhciogZm9udF9zYW5zX3NlcmlmOworICAgICAgICBFaW5hX0Jvb2wgYXV0
b19sb2FkX2ltYWdlcyA6IDE7CisgICAgICAgIEVpbmFfQm9vbCBhdXRvX3Nocmlua19pbWFnZXMg
OiAxOworICAgICAgICBFaW5hX0Jvb2wgZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvdyA6IDE7Cisg
ICAgICAgIEVpbmFfQm9vbCBlbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyA6IDE7CisgICAgICAgIEVp
bmFfQm9vbCBlbmFibGVfc2NyaXB0cyA6IDE7CisgICAgICAgIEVpbmFfQm9vbCBlbmFibGVfcGx1
Z2lucyA6IDE7CisgICAgICAgIEVpbmFfQm9vbCBlbmFibGVfZnJhbWVfZmxhdHRlbmluZyA6IDE7
CisgICAgICAgIEVpbmFfQm9vbCBlbmNvZGluZ19kZXRlY3RvciA6IDE7CisgICAgICAgIEVpbmFf
Qm9vbCBzY3JpcHRzX3dpbmRvd19vcGVuIDogMTsKKyAgICAgICAgRWluYV9Cb29sIHNjcmlwdHNf
Y2FuX2Nsb3NlX3dpbmRvd3MgOiAxOworICAgICAgICBFaW5hX0Jvb2wgcmVzaXphYmxlX3RleHRh
cmVhcyA6IDE7CisgICAgICAgIEVpbmFfQm9vbCBwcml2YXRlX2Jyb3dzaW5nIDogMTsKKyAgICAg
ICAgRWluYV9Cb29sIGNhcmV0X2Jyb3dzaW5nIDogMTsKKyAgICAgICAgRWluYV9Cb29sIHNwYXRp
YWxfbmF2aWdhdGlvbiA6IDE7CisgICAgICAgIEVpbmFfQm9vbCBsb2NhbF9zdG9yYWdlIDogMTsK
KyAgICAgICAgRWluYV9Cb29sIG9mZmxpbmVfYXBwX2NhY2hlIDogMTsKKyAgICAgICAgRWluYV9C
b29sIHBhZ2VfY2FjaGUgOiAxOwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZmxvYXQg
bWluX3NjYWxlOwogICAgICAgICAgICAgZmxvYXQgbWF4X3NjYWxlOwotICAgICAgICAgICAgRWlu
YV9Cb29sIHVzZXJfc2NhbGFibGU6MTsKKyAgICAgICAgICAgIEVpbmFfQm9vbCB1c2VyX3NjYWxh
YmxlIDogMTsKICAgICAgICAgfSB6b29tX3JhbmdlOwogICAgICAgICBmbG9hdCBkZXZpY2VfcGl4
ZWxfcmF0aW87CiAgICAgICAgIGRvdWJsZSBkb21fdGltZXJfaW50ZXJ2YWw7CkBAIC0xNzIsNyAr
MTcyLDcgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgRXZhc19Db29yZCB4LCB5OwogICAgICAgICB9IGNlbnRlcjsKLSAgICAg
ICAgRWNvcmVfQW5pbWF0b3IgKmFuaW1hdG9yOworICAgICAgICBFY29yZV9BbmltYXRvciogYW5p
bWF0b3I7CiAgICAgfSBhbmltYXRlZF96b29tOwogfTsKIApAQCAtMTgxLDMzICsxODEsMzMgQEAg
c3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogI2Vsc2UKICNkZWZpbmUgRVdLX1ZJRVdf
VFlQRV9DSEVDSyhvLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY29uc3QgY2hhciAqX3RtcF9vdHlwZSA9IGV2YXNf
b2JqZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgY29uc3QgRXZhc19T
bWFydCAqX3RtcF9zID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KG8pOyAgICAgIFwKKyAg
ICAgICAgY29uc3QgY2hhciogX3RtcF9vdHlwZSA9IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pOyAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgRXZhc19TbWFydCogX3RtcF9zID0gZXZhc19v
YmplY3Rfc21hcnRfc21hcnRfZ2V0KG8pOyAgICAgIFwKICAgICAgICAgaWYgKEVJTkFfVU5MSUtF
TFkoIV90bXBfcykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAoIiVwICglcykgaXMgbm90IGEgc21hcnQgb2Jq
ZWN0ISIsIG8sICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgX3RtcF9vdHlw
ZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjb25z
dCBFdmFzX1NtYXJ0X0NsYXNzICpfdG1wX3NjID0gZXZhc19zbWFydF9jbGFzc19nZXQoX3RtcF9z
KTsgXAorICAgICAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFy
dF9jbGFzc19nZXQoX3RtcF9zKTsgXAogICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9z
YykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgRUlO
QV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9v
dHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIF90
bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChFSU5BX1VOTElL
RUxZKF90bXBfc2MtPmRhdGEgIT0gRVdLX1ZJRVdfVFlQRV9TVFIpKSB7ICAgICAgICBcCiAgICAg
ICAgICAgICBFSU5BX0xPR19DUklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBvZiBhbiBld2tf
dmlldyAobmVlZCAlcCwgZ290ICVwKSEiLCAgICBcCi0gICAgICAgICAgICAgICAgIG8sIF90bXBf
b3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIsICAgICAgICAgICAgICAgICBcCi0gICAgICAg
ICAgICAgICAgIEVXS19WSUVXX1RZUEVfU1RSLCBfdG1wX3NjLT5kYXRhKTsgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgbywgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAi
KG51bGwpIiwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBFV0tfVklFV19UWVBF
X1NUUiwgX3RtcF9zYy0+ZGF0YSk7ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAg
cmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAjZW5kaWYKIAogI2RlZmlu
ZSBFV0tfVklFV19TRF9HRVQobywgcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
KWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAq
cHRyID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8p
CiAKICNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAg
ICAgXAogICAgIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAg
ICAgICBcCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2Vk
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2No
YW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgaWYgKHNkLT5jaGFuZ2VkLmFu
eSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM3LDIxICsyMzcsMjEgQEAgc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2hhbmdlZChzZC0+c2VsZik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3JlcGFpbnRzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVf
dCBzaXplKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90IHNpemUpCiB7Ci0gICAgdm9pZCAqdG1wID0g
cmVhbGxvYyhwcml2LT5yZXBhaW50cy5hcnJheSwgc2l6ZSAqIHNpemVvZihFaW5hX1JlY3Rhbmds
ZSkpOworICAgIHZvaWQqIHRtcCA9IHJlYWxsb2MocHJpdi0+cmVwYWludHMuYXJyYXksIHNpemUg
KiBzaXplb2YoRWluYV9SZWN0YW5nbGUpKTsKICAgICBpZiAoIXRtcCkgewogICAgICAgICBDUklU
SUNBTCgiY291bGQgbm90IHJlYWxsb2MgcmVwYWludHMgYXJyYXkgdG8gJXp1IGVsZW1lbnRzLiIs
IHNpemUpOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJpdi0+cmVw
YWludHMuYWxsb2NhdGVkID0gc2l6ZTsKLSAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5h
X1JlY3RhbmdsZSAqKXRtcDsKKyAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5hX1JlY3Rh
bmdsZSopdG1wOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tf
dmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQg
eCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNf
Q29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKLSAg
ICBFaW5hX1JlY3RhbmdsZSAqcjsKKyAgICBFaW5hX1JlY3RhbmdsZSogcjsKIAogICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiPj4+IHJlcGFpbnQgcmVxdWVzdGVkOiAlZCwlZCslZHglZFxuIiwgeCwg
eSwgdywgaCk7CiAgICAgaWYgKHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA9PSBwcml2LT5yZXBh
aW50cy5jb3VudCkgewpAQCAtMjc1LDcgKzI3NSw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19y
ZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQgeCwgRXZh
CiAgICAgREJHKCJhZGQgcmVwYWludCAlZCwgJWQrJWR4JWQiLCB4LCB5LCB3LCBoKTsKIH0KIAot
c3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSAqcHJpdikKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50c19mbHVzaChFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYpCiB7CiAgICAgcHJpdi0+cmVwYWludHMuY291bnQgPSAwOwogICAg
IGlmIChwcml2LT5yZXBhaW50cy5hbGxvY2F0ZWQgPD0gRVdLX1ZJRVdfUkVQQUlOVFNfU0laRV9N
QVhfRlJFRSkKQEAgLTI4MywyMiArMjgzLDIyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBh
aW50c19mbHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYpCiAgICAgX2V3a192aWV3X3Jl
cGFpbnRzX3Jlc2l6ZShwcml2LCBFV0tfVklFV19SRVBBSU5UU19TSVpFX01BWF9GUkVFKTsKIH0K
IAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2Nyb2xsc19yZXNpemUoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2LCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3Njcm9sbHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90IHNpemUp
CiB7Ci0gICAgdm9pZCAqdG1wID0gcmVhbGxvYyhwcml2LT5zY3JvbGxzLmFycmF5LCBzaXplICog
c2l6ZW9mKEV3a19TY3JvbGxfUmVxdWVzdCkpOworICAgIHZvaWQqIHRtcCA9IHJlYWxsb2MocHJp
di0+c2Nyb2xscy5hcnJheSwgc2l6ZSAqIHNpemVvZihFd2tfU2Nyb2xsX1JlcXVlc3QpKTsKICAg
ICBpZiAoIXRtcCkgewogICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IHJlYWxsb2Mgc2Nyb2xs
cyBhcnJheSB0byAlenUgZWxlbWVudHMuIiwgc2l6ZSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOwogICAgIH0KICAgICBwcml2LT5zY3JvbGxzLmFsbG9jYXRlZCA9IHNpemU7Ci0gICAgcHJp
di0+c2Nyb2xscy5hcnJheSA9IChFd2tfU2Nyb2xsX1JlcXVlc3QgKil0bXA7CisgICAgcHJpdi0+
c2Nyb2xscy5hcnJheSA9IChFd2tfU2Nyb2xsX1JlcXVlc3QqKXRtcDsKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsX2FkZChFd2tfVmlld19Q
cml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29v
cmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgRWluYV9Cb29s
IG1haW5fc2Nyb2xsKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbF9hZGQoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKiBwcml2LCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nv
b3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIEVpbmFfQm9v
bCBtYWluX3Njcm9sbCkKIHsKLSAgICBFd2tfU2Nyb2xsX1JlcXVlc3QgKnI7Ci0gICAgRXdrX1Nj
cm9sbF9SZXF1ZXN0ICpyX2VuZDsKKyAgICBFd2tfU2Nyb2xsX1JlcXVlc3QqIHI7CisgICAgRXdr
X1Njcm9sbF9SZXF1ZXN0KiByX2VuZDsKICAgICBFdmFzX0Nvb3JkIHgyID0geCArIHcsIHkyID0g
eSArIGg7CiAKICAgICByID0gcHJpdi0+c2Nyb2xscy5hcnJheTsKQEAgLTM0NSw4ICszNDUsOCBA
QCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsX2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEg
KnByaXYsIEV2YXNfQ29vcmQgZHgsIEV2YQogICAgIHItPm1haW5fc2Nyb2xsID0gbWFpbl9zY3Jv
bGw7CiAgICAgREJHKCJhZGQgc2Nyb2xsIGluIHJlZ2lvbjogJWQsICVkKyVkeCVkICUrMDNkLCAl
KzAzZCIsIHgsIHksIHcsIGgsIGR4LCBkeSk7CiAKLSAgICBFaW5hX1JlY3RhbmdsZSAqcHI7Ci0g
ICAgRWluYV9SZWN0YW5nbGUgKnByX2VuZDsKKyAgICBFaW5hX1JlY3RhbmdsZSogcHI7CisgICAg
RWluYV9SZWN0YW5nbGUqIHByX2VuZDsKICAgICBzaXplX3QgY291bnQ7CiAgICAgcHIgPSBwcml2
LT5yZXBhaW50cy5hcnJheTsKICAgICBjb3VudCA9IHByaXYtPnJlcGFpbnRzLmNvdW50OwpAQCAt
MzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRkKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhCiAgICAgfQogfQogCi1zdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnBy
aXYpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYpCiB7CiAgICAgcHJpdi0+c2Nyb2xscy5jb3VudCA9IDA7CiAgICAgaWYgKHBy
aXYtPnNjcm9sbHMuYWxsb2NhdGVkIDw9IEVXS19WSUVXX1NDUk9MTFNfU0laRV9NQVhfRlJFRSkK
QEAgLTM2NiwxMCArMzY2LDEwIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNo
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKIH0KIAogLy8gRGVmYXVsdCBFdmVudCBIYW5k
bGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1zdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9mb2N1c19pbihFd2tfVmlld19TbWFydF9EYXRh
ICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKLSAg
ICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXIgKmZjID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9s
bGVyKCk7CisgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9IHByaXYtPnBhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpOwogICAgIERCRygibz0lcCwgZmM9JXAiLCBzZC0+c2VsZiwgZmMpOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmYywgRUlOQV9GQUxTRSk7CiAKQEAg
LTM3OCwxMCArMzc4LDEwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X2luKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
LXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFy
dF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChF
d2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJp
dik7Ci0gICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyICpmYyA9IHByaXYtPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpOworICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciogZmMgPSBwcml2LT5w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKTsKICAgICBEQkcoIm89JXAsIGZjPSVwIiwgc2QtPnNlbGYs
IGZjKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZmMsIEVJTkFfRkFMU0Up
OwogCkBAIC0zOTAsMjkgKzM5MCwyOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFy
dF9mb2N1c19vdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgcmV0dXJuIEVJTkFfVFJV
RTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwgKmV2KQor
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2KQogewogICAgIHJl
dHVybiBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChzZC0+bWFpbl9mcmFtZSwgZXYpOwogfQog
Ci1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2KQorc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldikKIHsKICAgICByZXR1cm4gZXdrX2Zy
YW1lX2ZlZWRfbW91c2VfZG93bihzZC0+bWFpbl9mcmFtZSwgZXYpOwogfQogCi1zdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCAqZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9VcCogZXYpCiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX3VwKHNk
LT5tYWluX2ZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X21vdXNlX21vdmUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfTW92ZSAqZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3Zl
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2
KQogewogICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKHNkLT5tYWluX2ZyYW1l
LCBldik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duICpldikKK3N0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBldikKIHsKLSAgICBFdmFzX09iamVj
dCAqZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChzZC0+c2VsZik7CisgICAgRXZh
c19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoc2QtPnNlbGYpOwog
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgZnJhbWUgPSBzZC0+bWFpbl9mcmFtZTsKQEAgLTQy
MCw5ICs0MjAsOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9rZXlfZG93bihF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdgogICAgIHJldHVybiBld2tfZnJh
bWVfZmVlZF9rZXlfZG93bihmcmFtZSwgZXYpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZl
bnRfS2V5X1VwICpldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV91cChF
d2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIGV2KQogewot
ICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KHNkLT5z
ZWxmKTsKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dl
dChzZC0+c2VsZik7CiAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBmcmFtZSA9IHNkLT5tYWlu
X2ZyYW1lOwpAQCAtNDMwLDExNyArNDMwLDExNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbgog
ICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9rZXlfdXAoZnJhbWUsIGV2KTsKIH0KIAotc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZF9jb25zb2xlX21lc3NhZ2UoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBj
b25zdCBjaGFyICpzb3VyY2VJRCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGRfY29u
c29sZV9tZXNzYWdlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBjaGFyKiBtZXNzYWdl
LCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hhciogc291cmNlSUQpCiB7CiAgICAg
SU5GKCJjb25zb2xlIG1lc3NhZ2U6ICVzIEAlZDogJXNcbiIsIHNvdXJjZUlELCBsaW5lTnVtYmVy
LCBtZXNzYWdlKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2Ny
aXB0X2FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX09iamVjdCAqZnJhbWUsIGNv
bnN0IGNoYXIgKm1lc3NhZ2UpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFz
Y3JpcHRfYWxlcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV2YXNfT2JqZWN0KiBmcmFtZSwg
Y29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBJTkYoImphdmFzY3JpcHQgYWxlcnQ6ICVzXG4i
LCBtZXNzYWdlKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcnVuX2ph
dmFzY3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19PYmplY3QgKmZy
YW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfcnVuX2phdmFzY3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19P
YmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIElORigiamF2YXNjcmlw
dCBjb25maXJtOiAlcyIsIG1lc3NhZ2UpOwogICAgIElORigiamF2YXNjcmlwdCBjb25maXJtIChI
QVJEIENPREVEKT8gWUVTIik7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfc2hv
dWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAg
IElORigic2hvdWxkIGludGVycnVwdCBqYXZhc2NyaXB0P1xuIgotICAgICAgICAgICAgIlx0KEhB
UkQgQ09ERUQpIE5PIik7CisgICAgICAgICJcdChIQVJEIENPREVEKSBOTyIpOwogICAgIHJldHVy
biBFSU5BX0ZBTFNFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9ydW5f
amF2YXNjcmlwdF9wcm9tcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfT2JqZWN0ICpm
cmFtZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVmYXVsdFZhbHVlLCBjaGFy
ICoqdmFsdWUpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlw
dF9wcm9tcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29u
c3QgY2hhciogbWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUp
CiB7CiAgICAgKnZhbHVlID0gc3RyZHVwKCJ0ZXN0Iik7CiAgICAgRWluYV9Cb29sIHJldCA9IEVJ
TkFfVFJVRTsKICAgICBJTkYoImphdmFzY3JpcHQgcHJvbXB0OlxuIgotICAgICAgICAgICAgIlx0
ICAgICAgbWVzc2FnZTogJXNcbiIKLSAgICAgICAgICAgICJcdGRlZmF1bHQgdmFsdWU6ICVzXG4i
Ci0gICAgICAgICAgICAiXHRnaXZpbmcgYW5zd2VyOiAlc1xuIgotICAgICAgICAgICAgIlx0ICAg
ICAgIGJ1dHRvbjogJXMiLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUsICp2YWx1ZSwgcmV0PyJvayI6
ImNhbmNlbCIpOworICAgICAgICAiXHQgICAgICBtZXNzYWdlOiAlc1xuIgorICAgICAgICAiXHRk
ZWZhdWx0IHZhbHVlOiAlc1xuIgorICAgICAgICAiXHRnaXZpbmcgYW5zd2VyOiAlc1xuIgorICAg
ICAgICAiXHQgICAgICAgYnV0dG9uOiAlcyIsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgKnZhbHVl
LCByZXQgPyAib2siIDogImNhbmNlbCIpOwogCiAgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gRXZl
bnQgSGFuZGxpbmcgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCAqZGF0YSwg
RXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8s
IHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAo
RXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5mb2N1
c19pbik7CiAgICAgc2QtPmFwaS0+Zm9jdXNfaW4oc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2
b2lkICpldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lk
KiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAg
ICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsK
KyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRh
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmZvY3VzX291dCk7CiAgICAgc2QtPmFwaS0+Zm9j
dXNfb3V0KHNkKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZv
aWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9pbmZvKQorc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2
YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2Vf
V2hlZWwgKmV2ID0gKEV2YXNfRXZlbnRfTW91c2VfV2hlZWwgKilldmVudF9pbmZvOwotICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRhOworICAg
IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqKWV2
ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV93aGVlbCk7CiAgICAg
c2QtPmFwaS0+bW91c2Vfd2hlZWwoc2QsIGV2KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3
X29uX21vdXNlX2Rvd24odm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQg
KmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lkKiBk
YXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBF
dmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biAqKWV2ZW50
X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqKWRhdGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X01v
dXNlX0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdr
X1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9k
b3duKTsKICAgICBzZC0+YXBpLT5tb3VzZV9kb3duKHNkLCBldik7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAq
bywgdm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2
b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsK
LSAgICBFdmFzX0V2ZW50X01vdXNlX1VwICpldiA9IChFdmFzX0V2ZW50X01vdXNlX1VwICopZXZl
bnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9E
YXRhICopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiBldiA9IChFdmFzX0V2ZW50X01v
dXNlX1VwKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19W
aWV3X1NtYXJ0X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2Qt
PmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfdXAp
OwogICAgIHNkLT5hcGktPm1vdXNlX3VwKHNkLCBldik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tf
dmlld19vbl9tb3VzZV9tb3ZlKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2
b2lkICpldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9p
ZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0g
ICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldiA9IChFdmFzX0V2ZW50X01vdXNlX01vdmUgKill
dmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSAoRXZhc19FdmVu
dF9Nb3VzZV9Nb3ZlKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0g
KEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91
c2VfbW92ZSk7CiAgICAgc2QtPmFwaS0+bW91c2VfbW92ZShzZCwgZXYpOwogfQogCi1zdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmpl
Y3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rv
d24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8p
CiB7Ci0gICAgRXZhc19FdmVudF9LZXlfRG93biAqZXYgPSAoRXZhc19FdmVudF9LZXlfRG93biAq
KWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqKWRhdGE7CisgICAgRXZhc19FdmVudF9LZXlfRG93biogZXYgPSAoRXZhc19FdmVu
dF9LZXlfRG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChF
d2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV9k
b3duKTsKICAgICBzZC0+YXBpLT5rZXlfZG93bihzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfb25fa2V5X3VwKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2
b2lkICpldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBk
YXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBF
dmFzX0V2ZW50X0tleV9VcCAqZXYgPSAoRXZhc19FdmVudF9LZXlfVXAgKilldmVudF9pbmZvOwot
ICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRh
OworICAgIEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tleV9VcCopZXZlbnRf
aW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRh
KilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV91cCk7CiAgICAgc2QtPmFwaS0+
a2V5X3VwKHNkLCBldik7CiB9CiAKLXN0YXRpYyBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyhFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQg
Km93bmVyKQorc3RhdGljIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gX2V3a192aWV3
X2NvcmVfZnJhbWVfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIpCiB7Ci0g
ICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwgKmZsYyA9IG5ldyBXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbChzZC0+c2VsZik7CisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmwqIGZsYyA9IG5ldyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbChzZC0+c2VsZik7
CiAgICAgaWYgKCFmbGMpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgZnJh
bWUgbG9hZGVyIGNsaWVudC4iKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NTIsMTAgKzU1Miwx
MCBAQCBzdGF0aWMgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBfZXdrX3ZpZXdfY29y
ZV9mcmFtZV9uZXcoRXdrX1ZpZXdfU21hcnRfRAogCiBzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBf
cGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKLXN0YXRpYyBFd2tfVmll
d19Qcml2YXRlX0RhdGEgKl9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhICpz
ZCkKK3N0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYg
PQotICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICopY2FsbG9jKDEsIHNpemVvZihFd2tf
Vmlld19Qcml2YXRlX0RhdGEpKTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPQor
ICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSkpOwogICAgIEF0b21pY1N0cmluZyBzOwogICAgIFdlYkNvcmU6OktVUkwg
dXJsOwogCkBAIC02MTEsNyArNjExLDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAq
X2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICAgIHByaXYtPnNl
dHRpbmdzLnVzZXJfc3R5bGVzaGVldCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHVybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHByaXYtPnNldHRpbmdzLmVuY29kaW5nX2RlZmF1bHQg
PSBlaW5hX3N0cmluZ3NoYXJlX2FkZAotICAgICAgICAocHJpdi0+cGFnZV9zZXR0aW5ncy0+ZGVm
YXVsdFRleHRFbmNvZGluZ05hbWUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChwcml2LT5wYWdlX3NldHRpbmdzLT5kZWZhdWx0VGV4
dEVuY29kaW5nTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHByaXYtPnNldHRpbmdzLmVuY29k
aW5nX2N1c3RvbSA9IDA7CiAKICAgICBzID0gcHJpdi0+cGFnZV9zZXR0aW5ncy0+bG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoKCk7CkBAIC02NzEsNyArNjcxLDcgQEAgc3RhdGljIEV3a19WaWV3X1By
aXZhdGVfRGF0YSAqX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQog
ICAgICAgICBnb3RvIGVycm9yX21haW5fZnJhbWU7CiAgICAgfQogCi0gICAgcHJpdi0+aGlzdG9y
eSA9IGV3a19oaXN0b3J5X25ldyhzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJ
bXBsICo+KHByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKSk7CisgICAgcHJpdi0+aGlzdG9y
eSA9IGV3a19oaXN0b3J5X25ldyhzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJ
bXBsKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpKTsKICAgICBpZiAoIXByaXYtPmhp
c3RvcnkpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgaGlzdG9yeSBpbnN0
YW5jZSBmb3Igdmlldy4iKTsKICAgICAgICAgZ290byBlcnJvcl9oaXN0b3J5OwpAQCAtNjg5LDcg
KzY4OSw3IEBAIGVycm9yX3BhZ2U6CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIF9l
d2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYpCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogewogICAg
IGlmICghcHJpdikKICAgICAgICAgcmV0dXJuOwpAQCAtNzIwLDE2ICs3MjAsMTYgQEAgc3RhdGlj
IHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKICAg
ICBmcmVlKHByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNf
T2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCog
bykKIHsKLSAgICBjb25zdCBFdmFzX1NtYXJ0ICpzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3Nt
YXJ0X2dldChvKTsKLSAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzICpzYyA9IGV2YXNfc21hcnRf
Y2xhc3NfZ2V0KHNtYXJ0KTsKLSAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpID0g
KGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzICopc2M7CisgICAgY29uc3QgRXZhc19TbWFydCog
c21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7CisgICAgY29uc3QgRXZhc19T
bWFydF9DbGFzcyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChzbWFydCk7CisgICAgY29uc3Qg
RXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyop
c2M7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXBpLT5iYWNraW5nX3N0b3JlX2Fk
ZCk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2QpIHsKLSAgICAg
ICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdf
U21hcnRfRGF0YSkpOworICAgICAgICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKiljYWxsb2Mo
MSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKICAgICAgICAgaWYgKCFzZCkgewogICAg
ICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19TbWFydF9EYXRh
Iik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04MDAsMTcgKzgwMCwxNyBAQCBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0ICpvKQogI3VuZGVmIENPTk5FQ1QKIH0K
IAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCAqbykKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUKG8sIHNkKTsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYgPSBzZCA/
IHNkLT5fcHJpdiA6IDA7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gc2QgPyBz
ZC0+X3ByaXYgOiAwOwogCiAgICAgZXdrX3ZpZXdfc3RvcChvKTsKICAgICBfcGFyZW50X3NjLmRl
bChvKTsKICAgICBfZXdrX3ZpZXdfcHJpdl9kZWwocHJpdik7CiB9CiAKLXN0YXRpYyB2b2lkIF9l
d2tfdmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19D
b29yZCBoKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCog
bywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCk7CiAKQEAgLTgyMSwxNCArODIxLDE0IEBAIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29y
ZCBoKQogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0KIAotc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc19D
b29yZCB5KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3QqIG8s
IEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QpOwogICAgIHNkLT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9UUlVFOwogICAg
IF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCAqbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19z
bWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8s
IHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC04NTAsNyArODUwLDcg
QEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCAqbykK
ICAgICAgICAgcHJpdi0+c2Nyb2xscy5jb3VudCwgcHJpdi0+cmVwYWludHMuY291bnQpOwogCiAg
ICAgaWYgKHNkLT5jaGFuZ2VkLnNpemUgJiYgKCh3ICE9IHNkLT52aWV3LncpIHx8IChoICE9IHNk
LT52aWV3LmgpKSkgewotICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBwcml2LT5t
YWluX2ZyYW1lLT52aWV3KCk7CisgICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHBy
aXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKHZpZXcpIHsKICAgICAgICAgICAg
IHZpZXctPnJlc2l6ZSh3LCBoKTsKICAgICAgICAgICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7CkBA
IC04ODgsMTMgKzg4OCwxMyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KEV2YXNfT2JqZWN0ICpvKQogICAgIF9ld2tfdmlld19yZXBhaW50c19mbHVzaChwcml2KTsKIAog
ICAgIGlmIChzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1l
VmlldyAqdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgV2ViQ29yZTo6
RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgICAgICB2aWV3
LT5mcmFtZVJlY3RzQ2hhbmdlZCgpOyAvKiBmb3JjZSB0cmVlIHRvIGdldCBwb3NpdGlvbiBmcm9t
IHJvb3QgKi8KICAgICAgICAgc2QtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IEVJTkFfRkFMU0U7CiAg
ICAgfQogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09iamVjdCAq
bykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9zaG93KEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogCkBAIC05MDMsNyArOTAzLDcg
QEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Nob3coRXZhc19PYmplY3QgKm8pCiAgICAg
ZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFja2luZ19zdG9yZSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9l
d2tfdmlld19zbWFydF9oaWRlKEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCk7CiAKQEAgLTkxMSwxMiArOTExLDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9oaWRlKEV2YXNfT2JqZWN0ICpvKQogICAgIGV2YXNfb2JqZWN0X2hpZGUoc2QtPmJh
Y2tpbmdfc3RvcmUpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9jb250
ZW50c19yZXNpemUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGludCB3LCBpbnQgaCkKK3N0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZShFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCwgaW50IHcsIGludCBoKQogewogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
LXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQorc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAg
ZG91YmxlIHB4LCBweTsKICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGg7CkBAIC05NDQsNDAgKzk0
NCw0MCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgZmxvYXQgem9vbSwgRQogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9mbHVzaChFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9mbHVzaChFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwogICAgIF9l
d2tfdmlld19yZXBhaW50c19mbHVzaChwcml2KTsKICAgICBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVz
aChwcml2KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRl
cl9yZWdpb24oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29y
ZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKK3N0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nv
b3JkIGgsIGZsb2F0IHpvb20pCiB7CiAgICAgV1JOKCJub3Qgc3VwcG9ydGVkIGJ5IGVuZ2luZS4g
c2Q9JXAgYXJlYT0lZCwlZCslZHglZCwgem9vbT0lZiIsCiAgICAgICAgIHNkLCB4LCB5LCB3LCBo
LCB6b29tKTsKICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIHVuc2lnbmVkIGludCBuLCBmbG9hdCB6b29tKQorc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QsIHVuc2lnbmVkIGludCBuLCBmbG9hdCB6b29tKQogewogICAgIFdSTigibm90IHN1
cHBvcnRlZCBieSBlbmdpbmUuIHNkPSVwLCBuPSV1IHpvb209JWYiLAogICAgICAgICBzZCwgbiwg
em9vbSk7CiAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tfVmlld19TbWFydF9E
YXRhKiBzZCkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzZD0lcCIsIHNk
KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3pvb21fYW5pbWF0
ZWRfbWFya19zdG9wKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIHNkLT5hbmltYXRl
ZF96b29tLnpvb20uc3RhcnQgPSAwLjA7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQg
PSAwLjA7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50ID0gMC4wOwogfQogCi1z
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9maW5pc2goRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9maW5pc2goRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYp
OwogICAgIGVjb3JlX2FuaW1hdG9yX2RlbChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKTsK
QEAgLTk4Niw3ICs5ODYsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9m
aW5pc2goRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChzZC0+c2VsZiwgInpvb20sYW5pbWF0ZWQsZW5kIiwgMCk7CiB9CiAKLXN0YXRp
YyBmbG9hdCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KEV3a19WaWV3X1ByaXZhdGVf
RGF0YSAqcHJpdikKK3N0YXRpYyBmbG9hdCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBkb3VibGUgbm93ID0gZWNvcmVf
bG9vcF90aW1lX2dldCgpOwogICAgIGRvdWJsZSBkZWx0YSA9IG5vdyAtIHByaXYtPmFuaW1hdGVk
X3pvb20udGltZS5zdGFydDsKQEAgLTEwMDIsOSArMTAwMiw5IEBAIHN0YXRpYyBmbG9hdCBfZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikK
ICAgICAgICAgICAgICsgcHJpdi0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0KTsKIH0KIAotc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYih2b2lkICpkYXRhKQorc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYih2b2lkKiBkYXRhKQogewot
ICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRh
OworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRh
dGE7CiAgICAgRXZhc19Db29yZCBjeCwgY3k7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHBy
aXYpOwogICAgIGRvdWJsZSBub3cgPSBlY29yZV9sb29wX3RpbWVfZ2V0KCk7CkBAIC0xMDMxLDE2
ICsxMDMxLDE2IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2Io
dm9pZCAqZGF0YSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKICAg
ICBpZiAocHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvcikKICAgICAgICAgcmV0dXJuOwogICAg
IHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IgPSBlY29yZV9hbmltYXRvcl9hZGQKLSAgICAg
ICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiLCBzZCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2IsIHNkKTsKIH0K
IAotc3RhdGljIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBfZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19jb21wdXRlKGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIFdlYkNvcmU6
OlZpZXdwb3J0QXR0cmlidXRlcyBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRl
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwpAQCAtMTA2MCwyNiArMTA2MCwyNiBAQCBz
dGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRy
aWJ1dGVzX2NvbXB1dGUoY29uc3QgRQogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCi1zdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9kaXNhYmxlX3JlbmRlcihFd2tfVmlld19TbWFy
dF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2Rpc2FibGVfcmVu
ZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBi
eSBlbmdpbmUuIHNkPSVwIiwgc2QpOwogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1zdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9lbmFibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZW5hYmxlX3JlbmRl
cihFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkg
ZW5naW5lLiBzZD0lcCIsIHNkKTsKICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFw
aSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXBpLCBFSU5BX0ZBTFNF
KTsKIAogICAgIGlmIChhcGktPnZlcnNpb24gIT0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lP
TikgewogICAgICAgICBFSU5BX0xPR19DUklUCiAgICAgICAgICAgICAoIkV3a19WaWV3X1NtYXJ0
X0NsYXNzICVwIGlzIHZlcnNpb24gJWx1IHdoaWxlICVsdSB3YXMgZXhwZWN0ZWQuIiwKLSAgICAg
ICAgICAgICBhcGksIGFwaS0+dmVyc2lvbiwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTik7
CisgICAgICAgICAgICBhcGksIGFwaS0+dmVyc2lvbiwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTik7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMTEyMywxMiAr
MTEyMywxMiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21h
cnRfQ2xhc3MgKmFwaSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi12b2lkIGV3a192aWV3
X2ZpeGVkX2xheW91dF9zaXplX3NldChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFz
X0Nvb3JkIGgpCit2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldChFdmFzX09iamVj
dCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2KTsKIAotICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHByaXYtPm1haW5fZnJhbWUt
PnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1l
LT52aWV3KCk7CiAgICAgaWYgKHcgPD0gMCAmJiBoIDw9IDApIHsKICAgICAgICAgaWYgKCF2aWV3
LT51c2VGaXhlZExheW91dCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE0Nyw3ICsxMTQ3
LDcgQEAgdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8s
IEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7CiB9
CiAKLXZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvLCBFdmFzX0Nvb3JkICp3LCBFdmFzX0Nvb3JkICpoKQordm9pZCBld2tfdmlld19maXhlZF9s
YXlvdXRfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQqIHcsIEV2YXNf
Q29vcmQqIGgpCiB7CiAgICAgaWYgKHcpCiAgICAgICAgICp3ID0gMDsKQEAgLTExNjUsMTQgKzEx
NjUsMTQgQEAgdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8sIEV2YXNfQ29vcmQgKncsIEV2YXNfQ28KICAgICB9CiB9CiAKLXZvaWQgZXdrX3Zp
ZXdfdGhlbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpwYXRoKQordm9pZCBld2tf
dmlld190aGVtZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHBhdGgpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2KTsKICAgICBpZiAoIWVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgm
cHJpdi0+c2V0dGluZ3MudGhlbWUsIHBhdGgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJD
b3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgV2Vi
Q29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgIGlm
ICh2aWV3KSB7CiAgICAgICAgIHZpZXctPnNldEVkamVUaGVtZShXVEY6OlN0cmluZyhwYXRoKSk7
CiAgICAgICAgIHByaXYtPnBhZ2UtPnRoZW1lKCktPnRoZW1lQ2hhbmdlZCgpOwpAQCAtMTE4MCwy
NSArMTE4MCwyNSBAQCB2b2lkIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCAqbywgY29u
c3QgY2hhciAqcGF0aCkKIAogfQogCi1jb25zdCBjaGFyKiBld2tfdmlld190aGVtZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBld2tfdmlld190aGVtZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
MCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICBy
ZXR1cm4gcHJpdi0+c2V0dGluZ3MudGhlbWU7CiB9CiAKLUV2YXNfT2JqZWN0KiBld2tfdmlld19m
cmFtZV9tYWluX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0V2YXNfT2JqZWN0KiBld2tfdmll
d19mcmFtZV9tYWluX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICByZXR1cm4gc2QtPm1haW5fZnJhbWU7CiB9
CiAKLUV2YXNfT2JqZWN0KiBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChjb25zdCBFdmFzX09i
amVjdCAqbykKK0V2YXNfT2JqZWN0KiBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChjb25zdCBF
dmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogCi0gICAg
V2ViQ29yZTo6RnJhbWUgKmNvcmUgPSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZEZyYW1lKCk7CisgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmUgPSBwcml2LT5wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZEZyYW1lKCk7CiAgICAgaWYgKCFjb3JlKQogICAgICAgICBy
ZXR1cm4gMDsKIApAQCAtMTIwOCwzMSArMTIwOCwzMSBAQCBFdmFzX09iamVjdCogZXdrX3ZpZXdf
ZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIGNsaWVu
dC0+d2ViRnJhbWUoKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnVyaSkKK0VpbmFfQm9vbCBld2tfdmlld191cmlfc2V0KEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV91cmlfc2V0KHNk
LT5tYWluX2ZyYW1lLCB1cmkpOwogfQogCi1jb25zdCBjaGFyICpld2tfdmlld191cmlfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfdXJpX2dldChjb25zdCBF
dmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3VyaV9nZXQoc2QtPm1haW5fZnJhbWUpOwogfQogCi1j
b25zdCBjaGFyICpld2tfdmlld190aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25z
dCBjaGFyKiBld2tfdmlld190aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIGV3a19mcmFt
ZV90aXRsZV9nZXQoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZWRp
dGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2VkaXRh
YmxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2VkaXRhYmxl
X2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2
YXNfT2JqZWN0ICpvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3ZvaWQgZXdrX3ZpZXdf
YmdfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKQEAgLTEyNDgsMTAgKzEyNDgsMTAgQEAgdm9pZCBl
d2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIs
IGludCBhKQogCiAjZGVmaW5lIENIRUNLX1BSRU1VTF9DT0xPUihjLCBhKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKGMgPCAwKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFdS
TigiQ29sb3IgY29tcG9uZW50ICIjYyIgaXMgbGVzcyB0aGFuIHplcm8gKCVkKS4iLCBjKTsgICAg
ICAgICBcCisgICAgICAgIFdSTigiQ29sb3IgY29tcG9uZW50ICIgI2MgIiBpcyBsZXNzIHRoYW4g
emVybyAoJWQpLiIsIGMpOyAgICAgICAgIFwKICAgICAgICAgYyA9IDA7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IGVsc2Ug
aWYgKGMgPiBhKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgV1JOKCJDb2xvciBjb21wb25lbnQgIiNjIiBpcyBncmVhdGVyIHRoYW4g
YWxwaGEgKCVkLCBhbHBoYT0lZCkuIiwgXAorICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAi
ICNjICIgaXMgZ3JlYXRlciB0aGFuIGFscGhhICglZCwgYWxwaGE9JWQpLiIsIFwKICAgICAgICAg
ICAgIGMsIGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgYyA9IGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2
b2lkIGV3a192aWV3X2JnX2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgaW50IHIsIGludCBnLCBp
bnQgYiwgaW50IGEpCiAKICAgICBzZC0+YXBpLT5iZ19jb2xvcl9zZXQoc2QsIHIsIGcsIGIsIGEp
OwogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3ID0gc2QtPl9wcml2LT5tYWluX2ZyYW1l
LT52aWV3KCk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc2QtPl9wcml2LT5tYWlu
X2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKHZpZXcpIHsKICAgICAgICAgV2ViQ29yZTo6Q29sb3Ig
Y29sb3I7CiAKQEAgLTEyODIsNyArMTI4Miw3IEBAIHZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0
KEV2YXNfT2JqZWN0ICpvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKICAgICB9CiB9CiAK
LXZvaWQgZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKnIs
IGludCAqZywgaW50ICpiLCBpbnQgKmEpCit2b2lkIGV3a192aWV3X2JnX2NvbG9yX2dldChjb25z
dCBFdmFzX09iamVjdCogbywgaW50KiByLCBpbnQqIGcsIGludCogYiwgaW50KiBhKQogewogICAg
IGlmIChyKQogICAgICAgICAqciA9IDA7CkBAIC0xMzAzLDcgKzEzMDMsNyBAQCB2b2lkIGV3a192
aWV3X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQgKmcsIGlu
dCAqYiwgaW50ICphKQogICAgICAgICAqYSA9IHNkLT5iZ19jb2xvci5hOwogfQogCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIg
KnN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWlu
YV9Cb29sIHdyYXApCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBF
aW5hX0Jvb2wgZm9yd2FyZCwgRWluYV9Cb29sIHdyYXApCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTEzMzUsNyArMTMzNSw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld190ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgY2hh
ciAqc3RyaW5nLCBFaW5hX0JvCiAgKgogICogQHJldHVybiBudW1iZXIgb2YgbWF0Y2hlcy4KICAq
LwotdW5zaWduZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29s
IGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQordW5zaWduZWQgaW50IGV3a192aWV3X3Rl
eHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFf
Qm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxp
bWl0KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0xMzUwLDcgKzEzNTAs
NyBAQCB1bnNpZ25lZCBpbnQgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IGNoYXIgKnN0cmluZywgRWluYQogICAgIHJldHVybiBwcml2LT5wYWdlLT5tYXJr
QWxsTWF0Y2hlc0ZvclRleHQoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLCBzZW5zaXRpdmUsIGhp
Z2hsaWdodCwgbGltaXQpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3Vu
bWFya19hbGwoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVz
X3VubWFya19hbGwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTEzNTgsMjUgKzEzNTgsMjUgQEAgRWluYV9Cb29s
IGV3a192aWV3X3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0ICpvKQogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfaGln
aGxpZ2h0X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhpZ2hsaWdodCkKK0VpbmFfQm9v
bCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogbywgRWlu
YV9Cb29sIGhpZ2hsaWdodCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGln
aHRfc2V0KHNkLT5tYWluX2ZyYW1lLCBoaWdobGlnaHQpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChzZC0+
bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19lZGl0YWJsZV9zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19lZGl0YWJs
ZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2Zy
YW1lX2VkaXRhYmxlX3NldChzZC0+bWFpbl9mcmFtZSwgZWRpdGFibGUpOwogfQogCi1jaGFyICpl
d2tfdmlld19zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY2hhciogZXdrX3Zp
ZXdfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIDApOwpAQCAtMTM4NiwxMiArMTM4NiwxMiBAQCBjaGFyICpld2tfdmlld19z
ZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBzdHJkdXAocy5k
YXRhKCkpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChF
d2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNvbnN0IGNoYXIgKmNvbW1hbmQsIGNvbnN0IGNo
YXIgKnZhbHVlID0gMCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X2VkaXRvcl9jb21tYW5k
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3Qg
Y2hhciogdmFsdWUgPSAwKQogewogICAgIHJldHVybiBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChjb21tYW5kKSkuZXhlY3V0ZSh2YWx1ZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tf
dmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfRWRp
dG9yX0NvbW1hbmQgY29tbWFuZCwgY29uc3QgY2hhciAqdmFsdWUpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfZXhlY3V0ZV9lZGl0b3JfY29tbWFuZChFdmFzX09iamVjdCogbywgY29uc3QgRXdrX0VkaXRv
cl9Db21tYW5kIGNvbW1hbmQsIGNvbnN0IGNoYXIqIHZhbHVlKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xNDE4LDcgKzE0MTgsNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfZXhlY3V0ZV9lZGl0b3JfY29tbWFuZChFdmFzX09iamVjdCAqbywg
Y29uc3QgRXdrX0VkaXRvcl9Db21tYQogICAgIH0KIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2Nv
bnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50
X01vdXNlX0Rvd24gKmV2KQorRWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJk
X2V2ZW50KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQog
ewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwpAQCAtMTQyNiw3ICsxNDI2LDcgQEAgRWluYV9Cb29sIGV3
a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBF
dmFzX0V2ZW50X00KICAgICBFaW5hX0Jvb2wgbW91c2VfcHJlc3NfaGFuZGxlZCA9IEVJTkFfRkFM
U0U7CiAKICAgICBwcml2LT5wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250
ZXh0TWVudSgpOwotICAgIFdlYkNvcmU6OkZyYW1lICptYWluX2ZyYW1lID0gcHJpdi0+cGFnZS0+
bWFpbkZyYW1lKCk7CisgICAgV2ViQ29yZTo6RnJhbWUqIG1haW5fZnJhbWUgPSBwcml2LT5wYWdl
LT5tYWluRnJhbWUoKTsKICAgICBFdmFzX0Nvb3JkIHgsIHk7CiAgICAgZXZhc19vYmplY3RfZ2Vv
bWV0cnlfZ2V0KHNkLT5zZWxmLCAmeCwgJnksIDAsIDApOwogCkBAIC0xNDU0LDc1ICsxNDU0LDc1
IEBAIEVpbmFfQm9vbCBld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09i
amVjdCAqbywgY29uc3QgRXZhc19FdmVudF9NCiAjZW5kaWYKIH0KIAotZG91YmxlIGV3a192aWV3
X2xvYWRfcHJvZ3Jlc3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorZG91YmxlIGV3a192aWV3
X2xvYWRfcHJvZ3Jlc3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgLTEuMCk7CiAgICAgcmV0dXJuIHByaXYtPnBhZ2UtPnByb2dyZXNz
KCktPmVzdGltYXRlZFByb2dyZXNzKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2
YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
cmV0dXJuIGV3a19mcmFtZV9zdG9wKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9Cb29sIGV3
a192aWV3X3JlbG9hZChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19yZWxvYWQo
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9yZWxvYWQoc2QtPm1haW5fZnJhbWUp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QgKm8pCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3
a19mcmFtZV9yZWxvYWRfZnVsbChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tf
dmlld19iYWNrKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2JhY2soRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9iYWNrKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmQoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfZm9yd2FyZChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZvcndhcmQo
c2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGUoRXZhc19P
YmplY3QgKm8sIGludCBzdGVwcykKK0VpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZShFdmFzX09i
amVjdCogbywgaW50IHN0ZXBzKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGUoc2QtPm1haW5f
ZnJhbWUsIHN0ZXBzKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZh
c19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFja19wb3NzaWJsZShFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2JhY2tfcG9zc2libGUoc2QtPm1haW5fZnJhbWUpOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCAqbykK
K0VpbmFfQm9vbCBld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJl
dHVybiBld2tfZnJhbWVfZm9yd2FyZF9wb3NzaWJsZShzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVp
bmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50IHN0
ZXBzKQorRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRlX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBv
LCBpbnQgc3RlcHMpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShzZC0+bWFp
bl9mcmFtZSwgc3RlcHMpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5h
YmxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpCYWNrRm9yd2FyZExpc3RJbXBsKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpLT5l
bmFibGVkKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9y
eV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xNTMwLDcgKzE1
MzAsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUV3a19I
aXN0b3J5KiBld2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0V3a19I
aXN0b3J5KiBld2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMTU0MSwxMyArMTU0MSwxMyBAQCBFd2tf
SGlzdG9yeSogZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAg
cmV0dXJuIHByaXYtPmhpc3Rvcnk7CiB9CiAKLWZsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQorZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7CiAg
ICAgcmV0dXJuIGV3a19mcmFtZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19D
b29yZCBjeCwgRXZhc19Db29yZCBjeSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFz
X09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0xNTczLDEzICsxNTczLDEzIEBAIEVpbmFf
Qm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19D
b29yZCBjeCwgRXZhc19Db29yCiAgICAgcmV0dXJuIHNkLT5hcGktPnpvb21fc2V0KHNkLCB6b29t
LCBjeCwgY3kpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2Fs
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFr
X3Ntb290aF9zY2FsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT56b29t
X3dlYWtfc21vb3RoX3NjYWxlOwogfQogCi12b2lkIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhf
c2NhbGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQordm9pZCBl
d2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIHNtb290aF9zY2FsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
KTsKICAgICBzbW9vdGhfc2NhbGUgPSAhIXNtb290aF9zY2FsZTsKQEAgLTE1OTEsNyArMTU5MSw3
IEBAIHZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpCiAgICAgc2QtPmFwaS0+em9vbV93ZWFrX3Ntb290
aF9zY2FsZV9zZXQoc2QsIHNtb290aF9zY2FsZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196
b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBF
dmFzX0Nvb3JkIGN5KQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmpl
Y3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVQoc2QsIHByaXYpOwpAQCAtMTYxOSwzNSArMTYxOSwzNSBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19D
b29yZCBjeCwgRXZhcwogICAgIHJldHVybiBzZC0+YXBpLT56b29tX3dlYWtfc2V0KHNkLCB6b29t
LCBjeCwgY3kpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0
YXJ0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21f
YW5pbWF0ZWRfbWFya19zdGFydChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBzZC0+YW5p
bWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gem9vbTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZChFdmFzX09iamVjdCAq
bywgZmxvYXQgem9vbSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5k
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uZW5k
ID0gem9vbTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
em9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmplY3Qq
IG8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50ID0gem9vbTsK
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9tYXJrX3N0b3AoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9h
bmltYXRlZF9tYXJrX3N0b3AoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgX2V3a192aWV3X3pvb21fYW5pbWF0
ZWRfbWFya19zdG9wKHNkKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIGZs
b2F0IGR1cmF0aW9uLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQorRWluYV9Cb29sIGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9h
dCBkdXJhdGlvbiwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBkb3VibGUg
bm93OwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwpA
QCAtMTY5NiwxOSArMTY5NiwxOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9z
ZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLAogICAgIHJldHVy
biBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfem9vbV90ZXh0X29u
bHlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4
dF9vbmx5X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgc2V0
dGluZykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChzZC0+bWFpbl9mcmFt
ZSwgc2V0dGluZyk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihF
dmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQorRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJf
cmVnaW9uKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19D
b29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE3NTEsNyArMTc1MSw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCAqbywgRXZhc19Db29y
ZCB4LCBFdmFzX0Nvb3JkIHksCiAgICAgcmV0dXJuIHNkLT5hcGktPnByZV9yZW5kZXJfcmVnaW9u
KHNkLCB4LCB5LCB3LCBoLCB6b29tKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5k
ZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbikKK0VpbmFf
Qm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFdmFzX09iamVjdCogbywg
dW5zaWduZWQgaW50IG4pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKQEAgLTE3NjUsNDIgKzE3NjUsNDIgQEAgRWluYV9Cb29sIGV3a192aWV3X3By
ZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbikK
ICAgICByZXR1cm4gc2QtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoc2QsIG4sIGN1
cl96b29tKTsKIH0KIAotdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pCit1bnNpZ25lZCBpbnQgZXdrX3ZpZXdfaW1oX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2
LT5pbWg7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3Qg
Km8pCit2b2lkIGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGktPnByZV9yZW5kZXJfY2FuY2VsKTsKICAgICBzZC0+YXBpLT5w
cmVfcmVuZGVyX2NhbmNlbChzZCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19lbmFibGVfcmVu
ZGVyKGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2VuYWJsZV9yZW5k
ZXIoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNkLT5hcGktPmVuYWJsZV9yZW5kZXIsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBzZC0+YXBp
LT5lbmFibGVfcmVuZGVyKHNkKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2Rpc2FibGVfcmVu
ZGVyKGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2Rpc2FibGVfcmVu
ZGVyKGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzZC0+YXBpLT5kaXNhYmxlX3JlbmRlciwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT5h
cGktPmRpc2FibGVfcmVuZGVyKHNkKTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdfc2V0dGlu
Z191c2VyX2FnZW50X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192
aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MudXNl
cl9hZ2VudDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9zZXQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVzZXJfYWdlbnQpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ191c2VyX2FnZW50X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXNl
cl9hZ2VudCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFM
U0UpOwpAQCAtMTgxMSwxNCArMTgxMSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191
c2VyX2FnZW50X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXNlcl9hZ2VudAogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfdXNl
cl9zdHlsZXNoZWV0X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192
aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5n
cy51c2VyX3N0eWxlc2hlZXQ7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJf
c3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVyaSkKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QqIG8sIGNv
bnN0IGNoYXIqIHVyaSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwpAQCAtMTgyOSwxNCArMTgyOSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ191c2VyX3N0eWxlc2hlZXRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp1cmkp
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
YXV0b19sb2FkX2ltYWdlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAg
IHJldHVybiBwcml2LT5zZXR0aW5ncy5hdXRvX2xvYWRfaW1hZ2VzOwogfQogCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIGF1dG9tYXRpYykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9p
bWFnZXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xODQ4LDE0ICsx
ODQ4LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hy
aW5rX2ltYWdlc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MuYXV0b19zaHJpbmtfaW1hZ2VzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19h
dXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hdGlj
KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX3NldChFdmFz
X09iamVjdCogbywgRWluYV9Cb29sIGF1dG9tYXRpYykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTg2NywxNCArMTg2NywxNCBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgYXV0bwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVz
aXplX3dpbmRvd19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MuZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvdzsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCByZXNpemFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19y
ZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHJlc2l6YWJsZSkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTg4
MiwxNCArMTg4MiwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19y
ZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCAqbywgRWluYV9CbwogICAgIHJldHVybiBFSU5B
X1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJs
ZV9zY3JpcHRzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5n
cy5lbmFibGVfc2NyaXB0czsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxl
X3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlO
QV9GQUxTRSk7CkBAIC0xOTAxLDE0ICsxOTAxLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9zY3JpcHRzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkK
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfcGx1Z2luc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1
cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlX3BsdWdpbnM7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVu
YWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFz
X09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTkyMCwxNCArMTkyMCwxNCBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBlbmFibGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJs
ZV9mcmFtZV9mbGF0dGVuaW5nOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUp
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQo
RXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE5MzksMTQgKzE5MzksMTQgQEAgRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX2dldChjb25zdCBFdmFzX09i
amVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNjcmlwdHNf
d2luZG93X29wZW47CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2lu
ZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWxsb3cpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIGFsbG93KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
RUlOQV9GQUxTRSk7CkBAIC0xOTU4LDE0ICsxOTU4LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
YWxsCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX2dldChj
b25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5zY3JpcHRzX2Nhbl9j
bG9zZV93aW5kb3dzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nh
bl9jbG9zZV93aW5kb3dzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGFsbG93KQorRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93c19zZXQoRXZh
c19PYmplY3QqIG8sIEVpbmFfQm9vbCBhbGxvdykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTk3NywxNCArMTk3NywxNCBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9CbwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MucmVzaXphYmxlX3Rl
eHRhcmVhczsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRh
cmVhc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX3NldChFdmFzX09iamVjdCogbywgRWlu
YV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwpAQCAtMTk5NiwxNCArMTk5NiwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVu
YQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X3ByaXZhdGVfYnJvd3NpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAg
ICByZXR1cm4gcHJpdi0+c2V0dGluZ3MucHJpdmF0ZV9icm93c2luZzsKIH0KIAotRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dz
aW5nX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjAxNSwxNCArMjAxNSwx
NCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2Nh
Y2hlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5vZmZs
aW5lX2FwcF9jYWNoZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9h
cHBfY2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBF
aW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
RUlOQV9GQUxTRSk7CkBAIC0yMDM1LDE0ICsyMDM1LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVu
YWJsCiB9CiAKIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3NpbmdfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfY2FyZXRf
YnJvd3NpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdz
LmNhcmV0X2Jyb3dzaW5nOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9i
cm93c2luZ19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFf
Qm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5B
X0ZBTFNFKTsKQEAgLTIwNTQsNyArMjA1NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKICAg
ICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2Vu
Y29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBld2tf
dmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTIwNzAsMjcgKzIwNzAsMjcgQEAg
Y29uc3QgY2hhciAqZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ19jdXN0b207
CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQoRXZh
c19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVuY29kaW5nKQorRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZW5j
b2RpbmcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKICAgICBFdmFzX09iamVjdCogbWFpbl9mcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0
KG8pOwogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlX2ZyYW1lID0gZXdrX2ZyYW1lX2NvcmVfZ2V0
KG1haW5fZnJhbWUpOwotREJHKCIlcyIsIGVuY29kaW5nKTsKKyAgICBEQkcoIiVzIiwgZW5jb2Rp
bmcpOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZW5jb2Rp
bmdfY3VzdG9tLCBlbmNvZGluZyk7CiAgICAgY29yZV9mcmFtZS0+bG9hZGVyKCktPnJlbG9hZFdp
dGhPdmVycmlkZUVuY29kaW5nKFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpKTsKIAogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfZW5jb2Rp
bmdfZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdz
LmVuY29kaW5nX2RlZmF1bHQ7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29k
aW5nX2RlZmF1bHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplbmNvZGluZykKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2YXNfT2JqZWN0
KiBvLCBjb25zdCBjaGFyKiBlbmNvZGluZykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjA5OSw3ICsyMDk5LDcgQEAgRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKmVuY28KICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9z
ZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIxMTEsMjEgKzIxMTEsMjEgQEAg
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3Jfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5jb2Rpbmdf
ZGV0ZWN0b3I7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9w
ZXJfZXh0cmFzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAg
IHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFibGVfZGV2ZWxvcGVyX2V4dHJhczsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
ZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5h
YmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CkBAIC0yMTM3LDE0ICsyMTM3LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJs
ZV9kZXZlbG9wZXJfZXh0cmFzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sCiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3Np
emVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQoraW50IGV3a192aWV3X3NldHRpbmdfZm9udF9t
aW5pbXVtX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfbWluaW11bV9z
aXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9z
ZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
Zm9udF9taW5pbXVtX3NpemVfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgc2l6ZSkKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjE1NSwxNCAr
MjE1NSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9z
ZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
LWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3NpemVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQoraW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2lj
YWxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9taW5pbXVtX2xvZ2lj
YWxfc2l6ZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xv
Z2ljYWxfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKQorRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8s
IGludCBzaXplKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CkBAIC0yMTczLDE0ICsyMTczLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X2ZvbnRfbWluaW11bV9sb2dpY2FsX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6CiAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZh
dWx0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQoraW50IGV3a192aWV3X3NldHRpbmdf
Zm9udF9kZWZhdWx0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfZGVm
YXVsdF9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRf
c2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKQorRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZm9udF9kZWZhdWx0X3NpemVfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgc2l6ZSkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjE5
MSwxNCArMjE5MSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRf
c2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKQogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKLWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQoraW50IGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9tb25vc3BhY2Vfc2l6ZTsKIH0K
IAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQoRXZh
c19PYmplY3QgKm8sIGludCBzaXplKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9t
b25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMjA5LDcgKzIyMDks
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX3NldChF
dmFzX09iamVjdCAqbywgaW50IHNpemUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29u
c3QgY2hhciAqZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8sIEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSkKK2NvbnN0IGNoYXIqIGV3a192aWV3X2Zv
bnRfZmFtaWx5X25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBFd2tfRm9udF9GYW1pbHkg
Zm9udF9mYW1pbHkpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTIyMzEs
NyArMjIzMSw3IEBAIGNvbnN0IGNoYXIgKmV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkKICAgICByZXR1cm4gMDsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
d2tfRm9udF9GYW1pbHkgZm9udF9mYW1pbHksIGNvbnN0IGNoYXIgKm5hbWUpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19Gb250X0Zh
bWlseSBmb250X2ZhbWlseSwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjI2OCwxNCArMjI2OCwxNCBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3
a19Gb250X0ZhbWlseSBmb250X2ZhbQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNwYXRpYWxf
bmF2aWdhdGlvbjsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZp
Z2F0aW9uX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKQEAgLTIyODcsMTQgKzIyODcsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVu
YWIKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19sb2NhbF9zdG9yYWdlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0
dXJuIHByaXYtPnNldHRpbmdzLmxvY2FsX3N0b3JhZ2U7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5h
YmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQoRXZhc19P
YmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIzMDYsMTQgKzIzMDYsMTQgQEAgRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBlbmFibGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAg
IHJldHVybiBwcml2LT5zZXR0aW5ncy5wYWdlX2NhY2hlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJs
ZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMzI1LDE0ICsyMzI1LDE0IEBAIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5h
YmxlKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3Nl
dHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX2dldChjb25zdCBFdmFzX09iamVjdCAq
bykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9w
YXRoX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5sb2NhbF9zdG9yYWdlX2RhdGFiYXNl
X3BhdGg7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0
YWJhc2VfcGF0aF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgpCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBjaGFyKiBwYXRoKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX21pbmltdW1fdGltZXJfaW50ZXJ2YWxfc2V0KEV2YXNfT2JqZWN0ICpvLCBk
b3VibGUgaW50ZXJ2YWwpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVy
X2ludGVydmFsX3NldChFdmFzX09iamVjdCogbywgZG91YmxlIGludGVydmFsKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMzUyLDE0ICsy
MzUyLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX21pbmltdW1fdGltZXJfaW50ZXJ2
YWxfc2V0KEV2YXNfT2JqZWN0ICpvLCBkb3VibGUgaW50CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotZG91YmxlIGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitkb3VibGUgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3Rp
bWVyX2ludGVydmFsX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy5kb21fdGltZXJfaW50ZXJ2YWw7CiB9CiAKLUV3a19WaWV3X1NtYXJ0X0RhdGEgKmV3a192
aWV3X3NtYXJ0X2RhdGFfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRXdrX1ZpZXdfU21hcnRf
RGF0YSogZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIHNkOwpA
QCAtMjM4Miw3ICsyMzgyLDcgQEAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqZXdrX3ZpZXdfc21hcnRf
ZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3Ig
Z2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0
byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLWNvbnN0IEVpbmFfUmVjdGFu
Z2xlICpld2tfdmlld19yZXBhaW50c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpw
cml2LCBzaXplX3QgKmNvdW50KQorY29uc3QgRWluYV9SZWN0YW5nbGUqIGV3a192aWV3X3JlcGFp
bnRzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCogY291bnQp
CiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvdW50LCAwKTsKICAgICBp
ZiAoY291bnQpCkBAIC0yNDEwLDcgKzI0MTAsNyBAQCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqZXdr
X3ZpZXdfcmVwYWludHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgcwog
ICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFz
c2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3Jl
LgogICovCi1jb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QgKmV3a192aWV3X3Njcm9sbF9yZXF1ZXN0
c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBzaXplX3QgKmNvdW50KQor
Y29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0KiBld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNv
bnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90KiBjb3VudCkKIHsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY291bnQsIDApOwogICAgIGlmIChjb3VudCkK
QEAgLTI0MzUsNyArMjQzNSw3IEBAIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqZXdrX3ZpZXdf
c2Nyb2xsX3JlcXVlc3RzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhCiAgKiBAbm90ZSB0
aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3
YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZv
aWQgZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFz
X0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit2b2lk
IGV3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZhc19D
b29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHByaXYpOwogICAgIF9ld2tfdmlld19yZXBhaW50
X2FkZChwcml2LCB4LCB5LCB3LCBoKTsKQEAgLTI0NDksMTEgKzI0NDksMTEgQEAgdm9pZCBld2tf
dmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQg
eCwgRXZhc19Db29yZAogICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBq
dXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93
biBiYWNraW5nIHN0b3JlLgogICovCi12b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVj
dXJzaXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKK3ZvaWQgZXdrX3ZpZXdfbGF5b3V0
X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogewogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHByaXYpOwogCi0gICAgV2ViQ29yZTo6RnJhbWVW
aWV3ICp2ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmll
dyogdiA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXYpIHsKICAgICAgICAg
RVJSKCJubyBtYWluIGZyYW1lIHZpZXciKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2MSw3ICsy
NDYxLDcgQEAgdm9pZCBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmll
d19Qcml2YXRlX0RhdGEgKnByaXYpCiAgICAgdi0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRl
ZFJlY3Vyc2l2ZSgpOwogfQogCi12b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmll
d19TbWFydF9EYXRhICpzZCkKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwpAQCAtMjQ3OSwxOSAr
MjQ3OSwxOSBAQCB2b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9E
YXRhICpzZCkKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAq
Lwogc3RydWN0IF9Fd2tfVmlld19QYWludF9Db250ZXh0IHsKLSAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQgKmdjOwotICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldzsKLSAgICBjYWlyb190
ICpjcjsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqIGdjOworICAgIFdlYkNvcmU6OkZy
YW1lVmlldyogdmlldzsKKyAgICBjYWlyb190KiBjcjsKIH07CiAKLUV3a19WaWV3X1BhaW50X0Nv
bnRleHQgKmV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAq
cHJpdiwgY2Fpcm9fdCAqY3IpCitFd2tfVmlld19QYWludF9Db250ZXh0KiBld2tfdmlld19wYWlu
dF9jb250ZXh0X25ldyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIGNhaXJvX3QqIGNyKQog
ewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LCAwKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3IsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChwcml2LT5tYWluX2ZyYW1lLCAwKTsKLSAgICBXZWJDb3JlOjpGcmFtZVZp
ZXcgKnZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgV2ViQ29yZTo6RnJhbWVW
aWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTCh2aWV3LCAwKTsKLSAgICBFd2tfVmlld19QYWludF9Db250ZXh0ICpj
dHh0ID0gKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKiltYWxsb2Moc2l6ZW9mKCpjdHh0KSk7Cisg
ICAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCA9IChFd2tfVmlld19QYWludF9Db250ZXh0
KiltYWxsb2Moc2l6ZW9mKCpjdHh0KSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGN0eHQsIDApOwogCiAgICAgY3R4dC0+Z2MgPSBuZXcgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0KGNyKTsKQEAgLTI1MDQsNyArMjUwNCw3IEBAIEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmV3
a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwKICAg
ICByZXR1cm4gY3R4dDsKIH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2ZyZWUoRXdr
X1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9m
cmVlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgZGVsZXRlIGN0eHQtPmdjOwpAQCAtMjUxMiwyOCArMjUx
MiwyOCBAQCB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWludF9D
b250ZXh0ICpjdHh0KQogICAgIGZyZWUoY3R4dCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9zYXZlKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQpCit2b2lkIGV3a192aWV3
X3BhaW50X2NvbnRleHRfc2F2ZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0KQogewogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogICAgIGNhaXJvX3NhdmUoY3R4dC0+
Y3IpOwogICAgIGN0eHQtPmdjLT5zYXZlKCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9yZXN0b3JlKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQpCit2b2lkIGV3a192aWV3
X3BhaW50X2NvbnRleHRfcmVzdG9yZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0KQogewog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogICAgIGN0eHQtPmdjLT5yZXN0
b3JlKCk7CiAgICAgY2Fpcm9fcmVzdG9yZShjdHh0LT5jcik7CiB9CiAKLXZvaWQgZXdrX3ZpZXdf
cGFpbnRfY29udGV4dF9jbGlwKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVp
bmFfUmVjdGFuZ2xlICphcmVhKQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoRXdr
X1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oYXJlYSk7CiAgICAgY3R4dC0+Z2MtPmNsaXAoV2ViQ29yZTo6SW50UmVj
dChhcmVhLT54LCBhcmVhLT55LCBhcmVhLT53LCBhcmVhLT5oKSk7CiB9CiAKLXZvaWQgZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9wYWludChFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25z
dCBFaW5hX1JlY3RhbmdsZSAqYXJlYSkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWlu
dChFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJl
YSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9wYWludChFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBj
b25zdCBFaW5hX1JlY3RhCiAgICAgY3R4dC0+dmlldy0+cGFpbnQoY3R4dC0+Z2MsIHJlY3QpOwog
fQogCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdf
UGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCit2b2lkIGV3
a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUGFpbnRfQ29udGV4
dCogY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXJl
YSk7CkBAIC0yNTU4LDIxICsyNTU4LDIxIEBAIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9w
YWludF9jb250ZW50cyhFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFCiAgICAg
Y3R4dC0+dmlldy0+cGFpbnRDb250ZW50cyhjdHh0LT5nYywgcmVjdCk7CiB9CiAKLXZvaWQgZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9zY2FsZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBm
bG9hdCBzY2FsZV94LCBmbG9hdCBzY2FsZV95KQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0
X3NjYWxlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0
IHNjYWxlX3kpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAKICAg
ICBjdHh0LT5nYy0+c2NhbGUoV2ViQ29yZTo6RmxvYXRTaXplKHNjYWxlX3gsIHNjYWxlX3kpKTsK
IH0KIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShFd2tfVmlld19QYWlu
dF9Db250ZXh0ICpjdHh0LCBmbG9hdCB4LCBmbG9hdCB5KQordm9pZCBld2tfdmlld19wYWludF9j
b250ZXh0X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBmbG9hdCB4LCBm
bG9hdCB5KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogCiAgICAg
Y3R4dC0+Z2MtPnRyYW5zbGF0ZSh4LCB5KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3BhaW50
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlICphcmVhKQorRWluYV9Cb29sIGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LCBFSU5BX0ZBTFNFKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3IsIEVJTkFfRkFMU0UpOwpAQCAtMjU5
Nyw3ICsyNTk3LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVf
RGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFfUmUKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEp
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJTkFfRkFMU0UpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgRUlOQV9GQUxTRSk7CkBAIC0yNjI4LDcg
KzI2MjgsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29ucwogICoKICAqIEVtaXRzIHNpZ25hbDog
InJlYWR5IiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfcmVhZHkoRXZh
c19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X3JlYWR5KEV2YXNfT2JqZWN0KiBvKQogewogICAg
IERCRygibz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
InJlYWR5IiwgMCk7CkBAIC0yNjQyLDcgKzI2NDIsNyBAQCB2b2lkIGV3a192aWV3X3JlYWR5KEV2
YXNfT2JqZWN0ICpvKQogICogRW1pdHMgc2lnbmFsOiAiaW5wdXRtZXRob2QsY2hhbmdlZCIgd2l0
aCBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGl0J3MKICAqIGVuYWJsZWQgb3Igbm90Lgog
ICovCi12b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCBhY3RpdmUpCit2b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQo
RXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhY3RpdmUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwpAQCAt
MjY3MSw3ICsyNjcxLDcgQEAgdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYWN0aXZlKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiaW5wdXRtZXRob2QsY2hhbmdlZCIs
ICh2b2lkICopYWN0aXZlKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8s
ICJpbnB1dG1ldGhvZCxjaGFuZ2VkIiwgKHZvaWQqKWFjdGl2ZSk7CiB9CiAKIC8qKgpAQCAtMjY4
MCwxMCArMjY4MCwxMCBAQCB2b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCBhY3RpdmUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidGl0
bGUsY2hhbmdlZCIgd2l0aCBwb2ludGVyIHRvIG5ldyB0aXRsZSBzdHJpbmcuCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0aXRsZSkKK3Zv
aWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0aXRsZSkK
IHsKICAgICBEQkcoIm89JXAsIHRpdGxlPSVzIiwgbywgdGl0bGUgPyB0aXRsZSA6ICIobnVsbCki
KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ0aXRsZSxjaGFuZ2Vk
IiwgKHZvaWQgKil0aXRsZSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChv
LCAidGl0bGUsY2hhbmdlZCIsICh2b2lkKil0aXRsZSk7CiB9CiAKIC8qKgpAQCAtMjY5MiwxMiAr
MjY5MiwxMiBAQCB2b2lkIGV3a192aWV3X3RpdGxlX3NldChFdmFzX09iamVjdCAqbywgY29uc3Qg
Y2hhciAqdGl0bGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidXJpLGNoYW5nZWQiIHdpdGggcG9p
bnRlciB0byB0aGUgbmV3IHVyaSBzdHJpbmcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5n
ZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwotICAgIGNvbnN0
IGNoYXIgKnVyaSA9IGV3a19mcmFtZV91cmlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBjb25z
dCBjaGFyKiB1cmkgPSBld2tfZnJhbWVfdXJpX2dldChzZC0+bWFpbl9mcmFtZSk7CiAgICAgREJH
KCJvPSVwLCB1cmk9JXMiLCBvLCB1cmkgPyB1cmkgOiAiKG51bGwpIik7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidXJpLGNoYW5nZWQiLCAodm9pZCAqKXVyaSk7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidXJpLGNoYW5nZWQiLCAodm9p
ZCopdXJpKTsKIH0KIAogLyoqCkBAIC0yNzA4LDcgKzI3MDgsNyBAQCB2b2lkIGV3a192aWV3X3Vy
aV9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQsc3Rh
cnRlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2xvYWRfc3RhcnRl
ZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0
KiBvKQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobywgImxvYWQsc3RhcnRlZCIsIDApOwpAQCAtMjcyMSwxMCArMjcyMSwxMCBAQCB2
b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBz
aWduYWw6ICJsb2FkLHN0YXJ0ZWQiIG9uIG1haW4gZnJhbWUgd2l0aCBubyBwYXJhbWV0ZXJzLgog
ICovCi12b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpv
KQordm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogbykK
IHsKICAgICBEQkcoIm89JXAiLCBvKTsKLSAgICBFdmFzX09iamVjdCAqZnJhbWUgPSBld2tfdmll
d19mcmFtZV9tYWluX2dldChvKTsKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19m
cmFtZV9tYWluX2dldChvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGZy
YW1lLCAibG9hZCxzdGFydGVkIiwgMCk7CiB9CiAKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQg
ZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICog
RW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCIgb24gVmlldyB3aXRoIG5vIHBhcmFtZXRl
cnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCAqbykK
K3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCogbykKIHsKICAgICBE
QkcoIm89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJs
b2FkLHByb3Zpc2lvbmFsIiwgMCk7CkBAIC0yNzUwLDcgKzI3NTAsNyBAQCB2b2lkIGV3a192aWV3
X2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
bG9hZCxuZXd3aW5kb3csc2hvdyIgb24gdmlldyB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZv
aWQgZXdrX3ZpZXdfbG9hZF9zaG93KEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19sb2Fk
X3Nob3coRXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxuZXd3aW5kb3csc2hvdyIsIDApOwpA
QCAtMjc2Myw3ICsyNzYzLDcgQEAgdm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmplY3Qg
Km8pCiAgKgogICogQHBhcmFtIG8gVmlldy4KICAqLwotdm9pZCBld2tfdmlld19mcmFtZV9tYWlu
X2NsZWFyZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJl
ZChFdmFzX09iamVjdCogbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTI3NzksMTAgKzI3NzksMTAgQEAgdm9pZCBld2tf
dmlld19mcmFtZV9tYWluX2NsZWFyZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2ln
bmFsOiAiaWNvbixyZWNlaXZlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192
aWV3X2ZyYW1lX21haW5faWNvbl9yZWNlaXZlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3Zp
ZXdfZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIERCRygi
bz0lcCIsIG8pOwotICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5f
Z2V0KG8pOworICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0
KG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZnJhbWUsICJpY29uLHJl
Y2VpdmVkIiwgMCk7CiB9CiAKQEAgLTI3OTYsMTAgKzI3OTYsMTAgQEAgdm9pZCBld2tfdmlld19m
cmFtZV9tYWluX2ljb25fcmVjZWl2ZWQoRXZhc19PYmplY3QgKm8pCiAgKiBAbm90ZSB0aGVyZSBz
aG91bGQgbm90IGJlIGFueSBlcnJvciBzdHVmZiBoZXJlLCBidXQgdHJ5aW5nIHRvIGJlCiAgKiAg
ICAgICBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgV2ViS2l0LgogICovCi12b2lkIGV3a192aWV3
X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9y
ICplcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogbywgY29u
c3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQogewogICAgIERCRygibz0lcCwgZXJyb3I9
JXAiLCBvLCBlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAi
bG9hZCxmaW5pc2hlZCIsICh2b2lkICopZXJyb3IpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobywgImxvYWQsZmluaXNoZWQiLCAodm9pZCopZXJyb3IpOwogfQogCiAvKioK
QEAgLTI4MDgsMTAgKzI4MDgsMTAgQEAgdm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNf
T2JqZWN0ICpvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciAqZXJyb3IpCiAgKgogICogRW1p
dHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vy
cm9yLgogICovCi12b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QgKm8sIGNvbnN0
IEV3a19GcmFtZV9Mb2FkX0Vycm9yICplcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihF
dmFzX09iamVjdCogbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQogewogICAg
IERCRygibz0lcCwgZXJyb3I9JXAiLCBvLCBlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChvLCAibG9hZCxlcnJvciIsICh2b2lkICopZXJyb3IpOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsZXJyb3IiLCAodm9pZCopZXJyb3Ip
OwogfQogCiAvKioKQEAgLTI4MjAsNyArMjgyMCw3IEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJv
cihFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgKmVycm9yKQogICoK
ICAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvZ3Jlc3MiIHdpdGggcG9pbnRlciB0byBhIGRvdWJs
ZSBmcm9tIDAuMCB0byAxLjAuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFu
Z2VkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQo
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKQEAgLTI4NDIsNyAr
Mjg0Miw3IEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0
ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogInJlc3RvcmUiIHdpdGggZnJhbWUuCiAgKi8KLXZv
aWQgZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZy
YW1lKQordm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09i
amVjdCogZnJhbWUpCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAi
cmVzdG9yZSIsIGZyYW1lKTsKIH0KQEAgLTI4NjgsMTQgKzI4NjgsMTQgQEAgdm9pZCBld2tfdmll
d19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUpCiAgKgog
ICogQHNlZSBld2tfd2luZG93X2ZlYXR1cmVzX3JlZigpLgogICovCi1FdmFzX09iamVjdCAqZXdr
X3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGphdmFzY3JpcHQs
IGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzICpjb3JlRmVhdHVyZXMpCitFdmFzX09iamVj
dCogZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGphdmFz
Y3JpcHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVyZXMpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAKICAgICBpZiAoIXNkLT5h
cGktPndpbmRvd19jcmVhdGUpCiAgICAgICAgIHJldHVybiBvOwogCi0gICAgRXdrX1dpbmRvd19G
ZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzID0gZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9j
b3JlKGNvcmVGZWF0dXJlcyk7CisgICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2ZlYXR1
cmVzID0gZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvcmVGZWF0dXJlcyk7CiAg
ICAgaWYgKCF3aW5kb3dfZmVhdHVyZXMpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yODk2LDcg
KzI4OTYsNyBAQCBFdmFzX09iamVjdCAqZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0CiAgKgogICogQHBhcmFtIG8gVmlldyB0
byBiZSBjbG9zZWQuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0
ICpvKQordm9pZCBld2tfdmlld193aW5kb3dfY2xvc2UoRXZhc19PYmplY3QqIG8pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAKQEAgLTI5MTIsNyArMjkxMiw3IEBA
IHZvaWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRz
IHNpZ25hbDogImxpbmssaG92ZXIsaW4iCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19o
b3Zlcl9pbihFdmFzX09iamVjdCAqbywgdm9pZCAqZGF0YSkKK3ZvaWQgZXdrX3ZpZXdfbW91c2Vf
bGlua19ob3Zlcl9pbihFdmFzX09iamVjdCogbywgdm9pZCogZGF0YSkKIHsKICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsaW5rLGhvdmVyLGluIiwgZGF0YSk7CiB9CkBA
IC0yOTIzLDcgKzI5MjMsNyBAQCB2b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4oRXZh
c19PYmplY3QgKm8sIHZvaWQgKmRhdGEpCiAgKgogICogRW1pdHMgc2lnbmFsOiAibGluayxob3Zl
cixvdXQiCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmpl
Y3QgKm8pCit2b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0KiBv
KQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxpbmssaG92ZXIs
b3V0IiwgMCk7CiB9CkBAIC0yOTM0LDcgKzI5MzQsNyBAQCB2b2lkIGV3a192aWV3X21vdXNlX2xp
bmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogInRvb2xi
YXJzLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2
aXNpYmxlKQordm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCog
bywgRWluYV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJHKCJvPSVwICh2aXNpYmxlPSVkKSIsIG8s
ICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidG9v
bGJhcnMsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBAIC0yOTUxLDcgKzI5NTEsNyBAQCB2b2lk
IGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
dmlzaWJsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ0b29sYmFycyx2aXNpYmxlLGdldCIgd2l0
aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zp
c2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCit2b2lkIGV3a192
aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2li
bGUpCiB7CiAgICAgREJHKCIlcywgbz0lcCIsIF9fZnVuY19fLCBvKTsKICAgICAqdmlzaWJsZSA9
IEVJTkFfRkFMU0U7CkBAIC0yOTY3LDcgKzI5NjcsNyBAQCB2b2lkIGV3a192aWV3X3Rvb2xiYXJz
X3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCiAgKgogICog
RW1pdHMgc2lnbmFsOiAic3RhdHVzYmFyLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBh
IGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zp
c2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKIHsKICAgICBEQkco
Im89JXAgKHZpc2libGU9JWQpIiwgbywgISF2aXNpYmxlKTsKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG8sICJzdGF0dXNiYXIsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBA
IC0yOTg0LDcgKzI5ODQsNyBAQCB2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
c3RhdHVzYmFyLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgKnZpc2libGUpCit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFz
X09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogewogICAgIERCRygiJXMsIG89JXAiLCBf
X2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZBTFNFOwpAQCAtMzAwMCwxMSArMzAw
MCwxMSBAQCB2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sICp2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInN0YXR1c2Jhcix0
ZXh0LHNldCIgd2l0aCBhIHN0cmluZy4KICAqLwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdGV4
dF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQpCit2b2lkIGV3a192aWV3X3N0
YXR1c2Jhcl90ZXh0X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGV4dCkKIHsKICAg
ICBEQkcoIm89JXAgKHRleHQ9JXMpIiwgbywgdGV4dCk7CiAgICAgSU5GKCJzdGF0dXMgYmFyIHRl
eHQgc2V0OiAlcyIsIHRleHQpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bywgInN0YXR1c2Jhcix0ZXh0LHNldCIsICh2b2lkICopdGV4dCk7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAic3RhdHVzYmFyLHRleHQsc2V0IiwgKHZvaWQqKXRleHQp
OwogfQogCiAvKioKQEAgLTMwMTYsNyArMzAxNiw3IEBAIHZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFy
X3RleHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0KQogICoKICAqIEVtaXRz
IHNpZ25hbDogInNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9v
bGVhbi4KICAqLwotdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNp
YmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJHKCJv
PSVwICh2aXNpYmxlPSVkKSIsIG8sICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChvLCAic2Nyb2xsYmFycyx2aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsKQEAg
LTMwMzMsNyArMzAzMyw3IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
c2Nyb2xsYmFycyx2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICov
Ci12b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCAqdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChF
dmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogewogICAgIERCRygiJXMsIG89JXAi
LCBfX2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZBTFNFOwpAQCAtMzA0OSw3ICsz
MDQ5LDcgQEAgdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAibWVudWJhcix2
aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192
aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxl
KQordm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgdmlzaWJsZSkKIHsKICAgICBEQkcoIm89JXAgKHZpc2libGU9JWQpIiwgbywgISF2aXNp
YmxlKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJtZW51YmFyLHZp
c2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMzA2Niw3ICszMDY2LDcgQEAgdm9pZCBld2tfdmll
d19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkK
ICAqCiAgKiBFbWl0cyBzaWduYWw6ICJtZW51YmFyLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9pbnRl
ciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQordm9pZCBld2tfdmlld19tZW51YmFy
X3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpCiB7CiAgICAg
REJHKCIlcywgbz0lcCIsIF9fZnVuY19fLCBvKTsKICAgICAqdmlzaWJsZSA9IEVJTkFfRkFMU0U7
CkBAIC0zMDgzLDEwICszMDgzLDEwIEBAIHZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQogICogRW1pdHMgc2lnbmFsOiAi
dG9vbHRpcCx0ZXh0LHNldCIgd2l0aCBhIHN0cmluZy4gSWYgdG9vbHRpcCBtdXN0IGJlIGFjdHVh
bGx5CiAgKiByZW1vdmVkLCB0ZXh0IHdpbGwgYmUgMCBvciAnXDAnCiAgKi8KLXZvaWQgZXdrX3Zp
ZXdfdG9vbHRpcF90ZXh0X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCkKK3Zv
aWQgZXdrX3ZpZXdfdG9vbHRpcF90ZXh0X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciog
dGV4dCkKIHsKICAgICBEQkcoIm89JXAgdGV4dD0lcyIsIG8sIHRleHQpOwotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRvb2x0aXAsdGV4dCxzZXQiLCAodm9pZCAqKXRl
eHQpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRvb2x0aXAsdGV4
dCxzZXQiLCAodm9pZCopdGV4dCk7CiB9CiAKIC8qKgpAQCAtMzA5OCw3ICszMDk4LDcgQEAgdm9p
ZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0
ZXh0KQogICogQHNvdXJjZUlEIFNvdXJjZSBpZC4KICAqCiAgKi8KLXZvaWQgZXdrX3ZpZXdfYWRk
X2NvbnNvbGVfbWVzc2FnZShFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqbWVzc2FnZSwgdW5z
aWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IGNoYXIgKnNvdXJjZUlEKQordm9pZCBld2tfdmll
d19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBtZXNzYWdl
LCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hhciogc291cmNlSUQpCiB7CiAgICAg
REJHKCJvPSVwIG1lc3NhZ2U9JXMgbGluZU51bWJlcj0ldSBzb3VyY2VJRD0lcyIsIG8sIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkKTsKQEAgLTMxMDcsNyArMzEwNyw3IEBAIHZvaWQgZXdrX3ZpZXdfYWRkX2NvbnNvbGVf
bWVzc2FnZShFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqbWVzc2FnZSwgdW5zaWduZWQKICAg
ICBzZC0+YXBpLT5hZGRfY29uc29sZV9tZXNzYWdlKHNkLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBz
b3VyY2VJRCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19P
YmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3ZvaWQg
ZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0
KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBEQkcoIm89JXAgZnJhbWU9JXAg
bWVzc2FnZT0lcyIsIG8sIGZyYW1lLCBtZXNzYWdlKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkKTsKQEAgLTMxMTksNyArMzExOSw3IEBAIHZvaWQgZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3Qg
Y2hhCiAgICAgc2QtPmFwaS0+cnVuX2phdmFzY3JpcHRfYWxlcnQoc2QsIGZyYW1lLCBtZXNzYWdl
KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19P
YmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKK0VpbmFf
Qm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0KiBvLCBFdmFz
X09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgREJHKCJvPSVwIGZy
YW1lPSVwIG1lc3NhZ2U9JXMiLCBvLCBmcmFtZSwgbWVzc2FnZSk7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0zMTMxLDcgKzMxMzEsNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCAqbywg
RXZhc19PYmplY3QgKmZyYW1lLCBjbwogICAgIHJldHVybiBzZC0+YXBpLT5ydW5famF2YXNjcmlw
dF9jb25maXJtKHNkLCBmcmFtZSwgbWVzc2FnZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19y
dW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwg
Y29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVmYXVsdFZhbHVlLCBjaGFyICoqdmFs
dWUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0
KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIq
IGRlZmF1bHRWYWx1ZSwgY2hhcioqIHZhbHVlKQogewogICAgIERCRygibz0lcCBmcmFtZT0lcCBt
ZXNzYWdlPSVzIiwgbywgZnJhbWUsIG1lc3NhZ2UpOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwpAQCAtMzE1NCw3ICszMTU0LDcgQEAgRWluYV9Cb29s
IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCAqbywgRXZhc19PYmpl
Y3QgKmZyYW1lLCBjb24KICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzY3JpcHQgc2hv
dWxkIGJlIHN0b3BwZWQ7IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KLUVpbmFfQm9vbCBl
d2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QgKm8pCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KEV2YXNfT2JqZWN0KiBv
KQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwpAQCAtMzE4MCw3ICszMTgwLDcgQEAgRWluYV9Cb29sIGV3a192
aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFdmFzX09iamVjdCAqbykKICAqIEBwYXJh
bSBleHBlY3RlZF9zaXplIFRoZSBleHBlY3RlZCBzaXplIG9mIHRoaXMgZGF0YWJhc2UgaW4gb3Jk
ZXIgdG8gZnVsZmlsbAogICogc2l0ZSdzIHJlcXVpcmVtZW50LgogICovCi11aW50NjRfdCBld2tf
dmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3Qg
KmZyYW1lLCBjb25zdCBjaGFyICpkYXRhYmFzZU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRfc2l6ZSwg
dWludDY0X3QgZXhwZWN0ZWRfc2l6ZSkKK3VpbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFi
YXNlX3F1b3RhKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIq
IGRhdGFiYXNlTmFtZSwgdWludDY0X3QgY3VycmVudF9zaXplLCB1aW50NjRfdCBleHBlY3RlZF9z
aXplKQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIDApOwpAQCAtMzE4OCw3ICszMTg4LDcgQEAgdWludDY0X3QgZXdrX3ZpZXdfZXhj
ZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwg
Y28KICAgICBpZiAoIXNkLT5hcGktPmV4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIElORigiY3VycmVudF9zaXplPSUiUFJJdTY0IiBleHBlY3RlZF9zaXpl
PSUiUFJJdTY0LCBjdXJyZW50X3NpemUsIGV4cGVjdGVkX3NpemUpOworICAgIElORigiY3VycmVu
dF9zaXplPSUiIFBSSXU2NCAiIGV4cGVjdGVkX3NpemU9JSIgUFJJdTY0LCBjdXJyZW50X3NpemUs
IGV4cGVjdGVkX3NpemUpOwogICAgIHJldHVybiBzZC0+YXBpLT5leGNlZWRlZF9kYXRhYmFzZV9x
dW90YShzZCwgZnJhbWUsIGRhdGFiYXNlTmFtZSwgY3VycmVudF9zaXplLCBleHBlY3RlZF9zaXpl
KTsKIH0KIApAQCAtMzIwNSw3ICszMjA1LDcgQEAgdWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRf
ZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY28KICAq
CiAgKiBAcmV0dXJuIEBFSU5BX0ZBTFNFIGlmIHVzZXIgY2FuY2VsZWQgZmlsZSBzZWxlY3Rpb247
IEBFSU5BX1RSVUUgaWYgY29uZmlybWVkLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX29w
ZW5fcGFuZWwoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgRWluYV9Cb29sIGFs
bG93c19tdWx0aXBsZV9maWxlcywgY29uc3QgY2hhciAqYWNjZXB0X3R5cGVzLCBFaW5hX0xpc3Qg
KipzZWxlY3RlZF9maWxlbmFtZXMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwo
RXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgRWluYV9Cb29sIGFsbG93c19tdWx0
aXBsZV9maWxlcywgY29uc3QgY2hhciogYWNjZXB0X3R5cGVzLCBFaW5hX0xpc3QqKiBzZWxlY3Rl
ZF9maWxlbmFtZXMpCiB7CiAgICAgREJHKCJvPSVwIGZyYW1lPSVwIGFsbG93c19tdWx0aXBsZV9m
aWxlcz0lZCIsIG8sIGZyYW1lLCBhbGxvd3NfbXVsdGlwbGVfZmlsZXMpOwogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwpAQCAtMzIyMyw3ICszMjIzLDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0ICpvLCBFdmFz
X09iamVjdCAqZnJhbWUsIEVpbmFfQm9vbAogICAgIHJldHVybiBjb25maXJtOwogfQogCi12b2lk
IGV3a192aWV3X3JlcGFpbnQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29y
ZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3ZvaWQgZXdrX3ZpZXdfcmVwYWludChF
dmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoKQogewogICAgIERCRygibz0lcCwgcmVnaW9uPSVkLCVkICsgJWR4JWQiLCBv
LCB4LCB5LCB3LCBoKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAg
LTMyMzgsNyArMzIzOCw3IEBAIHZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFzX09iamVjdCAqbywg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywKICAgICBfZXdrX3ZpZXdf
c21hcnRfY2hhbmdlZChzZCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2JqZWN0
ICpvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHN4LCBFdmFzX0Nv
b3JkIHN5LCBFdmFzX0Nvb3JkIHN3LCBFdmFzX0Nvb3JkIHNoLCBFdmFzX0Nvb3JkIGN4LCBFdmFz
X0Nvb3JkIGN5LCBFdmFzX0Nvb3JkIGN3LCBFdmFzX0Nvb3JkIGNoLCBFaW5hX0Jvb2wgbWFpbl9m
cmFtZSkKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIGR4
LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHN4LCBFdmFzX0Nvb3JkIHN5LCBFdmFzX0Nvb3Jk
IHN3LCBFdmFzX0Nvb3JkIHNoLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5LCBFdmFzX0Nv
b3JkIGN3LCBFdmFzX0Nvb3JkIGNoLCBFaW5hX0Jvb2wgbWFpbl9mcmFtZSkKIHsKICAgICBEQkco
Im89JXAsIGRlbHRhOiAlZCwlZCwgc2Nyb2xsOiAlZCwlZCslZHglZCwgY2xpcDogJWQsJWQrJWR4
JWQiLAogICAgICAgICBvLCBkeCwgZHksIHN4LCBzeSwgc3csIHNoLCBjeCwgY3ksIGN3LCBjaCk7
CkBAIC0zMjU2LDcgKzMyNTYsNyBAQCB2b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVjdCAq
bywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCBzeAogICAgIF9ld2tf
dmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0KIAotV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29y
ZV9wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK1dlYkNvcmU6OlBhZ2UqIGV3a192aWV3
X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCAwKTsKQEAgLTMyNjgsNyArMzI2OCw3IEBAIFdlYkNvcmU6OlBhZ2UqIGV3a192
aWV3X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgImZy
YW1lLGNyZWF0ZWQiIHdpdGggdGhlIG5ldyBmcmFtZSBvYmplY3Qgb24gc3VjY2Vzcy4KICAqLwot
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9jcmVhdGUoRXZh
c19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgV1RGOjpTdHJpbmcgJm5hbWUs
IFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCAqb3duZXJFbGVtZW50LCBjb25zdCBXZWJD
b3JlOjpLVVJMICZ1cmwsIGNvbnN0IFdURjo6U3RyaW5nICZyZWZlcnJlcikKK1dURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpGcmFtZT4gZXdrX3ZpZXdfZnJhbWVfY3JlYXRlKEV2YXNfT2JqZWN0KiBv
LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdURjo6U3RyaW5nICZuYW1lLCBXZWJDb3JlOjpI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAm
dXJsLCBjb25zdCBXVEY6OlN0cmluZyAmcmVmZXJyZXIpCiB7CiAgICAgREJHKCJvPSVwLCBmcmFt
ZT0lcCwgbmFtZT0lcywgb3duZXJFbGVtZW50PSVwLCB1cmw9JXMsIHJlZmVycmVyPSVzIiwKICAg
ICAgICAgbywgZnJhbWUsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3duZXJFbGVtZW50LApAQCAtMzI3
OCw3ICszMjc4LDcgQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19m
cmFtZV9jcmVhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWMKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogCiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGNmID0gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3Ci0gICAgICAgIChzZCwgcHJpdiwg
b3duZXJFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHNkLCBwcml2LCBvd25lckVsZW1lbnQpOwogICAgIGlmICghY2YpIHsKICAgICAgICAgRVJSKCJD
b3VsZCBub3QgY3JlYXRlIGNoaWxkIGNvcmUgZnJhbWUgJyVzJyIsIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMzMwMCw3ICszMzAwLDcgQEAgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3QgKm8s
IEV2YXNfT2JqZWMKICAgICByZXR1cm4gY2YucmVsZWFzZSgpOwogfQogCi1XVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0ICpv
LCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUs
IFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50ICplbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJM
ICZ1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiAmcGFyYW1OYW1lcywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcg
Jm1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0
KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4gJnBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyAmbWltZVR5cGUsIGJv
b2wgbG9hZE1hbnVhbGx5KQogewogICAgIERCRygibz0lcCwgZnJhbWU9JXAsIHNpemU9JWR4JWQs
IGVsZW1lbnQ9JXAsIHVybD0lcywgbWltZVR5cGU9JXMiLAogICAgICAgICBvLCBmcmFtZSwgcGx1
Z2luU2l6ZS53aWR0aCgpLCBwbHVnaW5TaXplLmhlaWdodCgpLCBlbGVtZW50LApAQCAtMzMxMSw4
ICszMzExLDggQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1
Z2luX2NyZWF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmoKICAgICBfZXdrX3ZpZXdfc21hcnRf
Y2hhbmdlZChzZCk7CiAKICAgICByZXR1cm4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUKLSAgICAg
ICAgKGZyYW1lLCBwbHVnaW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFs
dWVzLAotICAgICAgICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CisgICAgICAgICAgICAgICAo
ZnJhbWUsIHBsdWdpblNpemUsIGVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMs
CisgICAgICAgICAgICAgICBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKIH0KIAogLyoqCkBAIC0z
MzI2LDcgKzMzMjYsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmll
d19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iagogICoKICAqIEVtaXRzOiAi
cG9wdXAsY3JlYXRlIiB3aXRoIGEgbGlzdCBvZiBFd2tfTWVudSBjb250YWluaW5nIGVhY2ggaXRl
bSdzIGRhdGEKICAqLwotdm9pZCBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCAqY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QgJnJlY3QpCit2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCog
bywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCAmcmVjdCkKIHsKICAgICBJTkYoIm89JXAiLCBvKTsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTMzNDAsNyArMzM0MCw3IEBAIHZvaWQg
ZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0ICpvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQgKmNsaWVudCwgaW50IHNlCiAgICAgLy8gcG9wdWxhdGUgaXRlbXMKICAgICBjb25zdCBpbnQg
c2l6ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBFd2tfTWVudV9JdGVtICppdGVtID0gKEV3a19NZW51X0l0ZW0gKikg
bWFsbG9jKHNpemVvZigqaXRlbSkpOworICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0gKEV3
a19NZW51X0l0ZW0qKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CiAgICAgICAgIGlmIChjbGllbnQt
Pml0ZW1Jc1NlcGFyYXRvcihpKSkKICAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVOVV9T
RVBBUkFUT1I7CiAgICAgICAgIGVsc2UgaWYgKGNsaWVudC0+aXRlbUlzTGFiZWwoaSkpCkBAIC0z
MzU5LDcgKzMzNTksNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAqbywg
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICpjbGllbnQsIGludCBzZQogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInBvcHVwLGNyZWF0ZSIsICZwcml2LT5wb3B1cC5tZW51
KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3koRXZhc19PYmplY3QgKm8p
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFzX09iamVjdCogbykKIHsKICAg
ICBJTkYoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKQEAgLTMzNzIsNyArMzM3Miw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1
cF9kZXN0cm95KEV2YXNfT2JqZWN0ICpvKQogCiAgICAgdm9pZCogaXRlbXY7CiAgICAgRUlOQV9M
SVNUX0ZSRUUocHJpdi0+cG9wdXAubWVudS5pdGVtcywgaXRlbXYpIHsKLSAgICAgICAgRXdrX01l
bnVfSXRlbSogaXRlbSA9IChFd2tfTWVudV9JdGVtICopaXRlbXY7CisgICAgICAgIEV3a19NZW51
X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRlbSopaXRlbXY7CiAgICAgICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKGl0ZW0tPnRleHQpOwogICAgICAgICBmcmVlKGl0ZW0pOwogICAgIH0KQEAgLTMz
ODIsNyArMzM4Miw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2Jq
ZWN0ICpvKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcG9wdXBf
c2VsZWN0ZWRfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgaW5kZXgpCit2b2lkIGV3a192aWV3X3Bv
cHVwX3NlbGVjdGVkX3NldChFdmFzX09iamVjdCogbywgaW50IGluZGV4KQogewogICAgIElORigi
bz0lcCIsIG8pOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzQw
Miw3ICszNDAyLDcgQEAgdm9pZCBld2tfdmlld19wb3B1cF9zZWxlY3RlZF9zZXQoRXZhc19PYmpl
Y3QgKm8sIGludCBpbmRleCkKICAqIEVtaXRzOiAiZG93bmxvYWQscmVxdWVzdCIgd2l0aCBhbiBF
d2tfRG93bmxvYWQgY29udGFpbmluZyB0aGUgZGV0YWlscyBvZiB0aGUKICAqIHJlcXVlc3RlZCBk
b3dubG9hZC4gVGhlIGRvd25sb2FkIHBlciBzZSBtdXN0IGJlIGhhbmRsZWQgb3V0c2lkZSBvZiB3
ZWJraXQuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCAq
bywgRXdrX0Rvd25sb2FkICpkb3dubG9hZCkKK3ZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVz
dChFdmFzX09iamVjdCogbywgRXdrX0Rvd25sb2FkKiBkb3dubG9hZCkKIHsKICAgICBEQkcoInZp
ZXc9JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJkb3du
bG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwpAQCAtMzQxNSw3ICszNDE1LDcgQEAgdm9pZCBld2tf
dmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRG93bmxvYWQgKmRvd25s
b2FkKQogICogQHBhcmFtIG8gdmlldy4KICAqIEBwYXJhbSBmcmFtZSB0aGUgZnJhbWUuCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfanNfd2luZG93X29iamVjdF9jbGVhcihFdmFzX09iamVjdCAqbywgRXZh
c19PYmplY3QgKmZyYW1lKQordm9pZCBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFyKEV2
YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUpCiB7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAianMsd2luZG93b2JqZWN0LGNsZWFyIiwgZnJhbWUpOwogfQpA
QCAtMzQyOCwxNiArMzQyOCwxNiBAQCB2b2lkIGV3a192aWV3X2pzX3dpbmRvd19vYmplY3RfY2xl
YXIoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSkKICAqCiAgKiBFbWl0cyBzaWdu
YWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdr
X3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzICZhcmd1bWVudHMpCit2b2lkIGV3a192aWV3X3ZpZXdwb3J0
X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50cyAmYXJndW1lbnRzKQogewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwotICAgIAorCiAgICAgcHJpdi0+dmlld3BvcnRf
YXJndW1lbnRzID0gYXJndW1lbnRzOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKIH0KIAotdm9pZCBld2tfdmlld192aWV3cG9y
dF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgZmxvYXQgKncsIGZsb2F0ICpo
LCBmbG9hdCAqaW5pdF9zY2FsZSwgZmxvYXQgKm1heF9zY2FsZSwgZmxvYXQgKm1pbl9zY2FsZSwg
ZmxvYXQgKmRldmljZV9waXhlbF9yYXRpbywgRWluYV9Cb29sICp1c2VyX3NjYWxhYmxlKQordm9p
ZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVjdCogbywg
ZmxvYXQqIHcsIGZsb2F0KiBoLCBmbG9hdCogaW5pdF9zY2FsZSwgZmxvYXQqIG1heF9zY2FsZSwg
ZmxvYXQqIG1pbl9zY2FsZSwgZmxvYXQqIGRldmljZV9waXhlbF9yYXRpbywgRWluYV9Cb29sKiB1
c2VyX3NjYWxhYmxlKQogewogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1
dGVzID0gX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShvKTsKIApAQCAtMzQ1
Nyw3ICszNDU3LDcgQEAgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChjb25z
dCBFdmFzX09iamVjdCAqbywgZmxvYXQgKncsIGZsb2F0ICpoLAogICAgICAgICAqdXNlcl9zY2Fs
YWJsZSA9IHN0YXRpY19jYXN0PGJvb2w+KGF0dHJpYnV0ZXMudXNlclNjYWxhYmxlKTsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBt
aW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3Jhbmdl
X3NldChFdmFzX09iamVjdCogbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTM0
NzMsNyArMzQ3Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3JhbmdlX3NldChFdmFzX09i
amVjdCAqbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhCiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKQorZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgLTEuMCk7CkBAIC0z
NDgxLDcgKzM0ODEsNyBAQCBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWlu
X3NjYWxlOwogfQogCi1mbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pCitmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEu
MCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAtMS4wKTsKQEAg
LTM0ODksNyArMzQ4OSw3IEBAIGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
YXhfc2NhbGU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
dXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxl
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBA
IC0zNDk5LDcgKzM0OTksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKQogICAgIHJldHVybiBFSU5B
X1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwpAQCAtMzUwNyw3ICszNTA3LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3Vz
ZXJfc2NhbGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLnVzZXJfc2NhbGFibGU7CiB9CiAKLWZsb2F0IGV3a192aWV3X2Rl
dmljZV9waXhlbF9yYXRpb19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitmbG9hdCBld2tfdmll
d19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgLTEuMCk7CkBAIC0zNTE1LDcgKzM1MTUsNyBAQCBmbG9h
dCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQog
ICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5kZXZpY2VfcGl4ZWxfcmF0aW87CiB9CiAKLXZvaWQg
ZXdrX3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5X25vbmVtcHR5X2xheW91dChFdmFzX09iamVjdCAq
bykKK3ZvaWQgZXdrX3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5X25vbmVtcHR5X2xheW91dChFdmFz
X09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwpAQCAtMzUzMiw3ICszNTMy
LDcgQEAgdm9pZCBld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlfbm9uZW1wdHlfbGF5b3V0KEV2
YXNfT2JqZWN0ICpvKQogICoKICAqIEBwYXJhbSBvIHZpZXcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
ZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2FkaW5nKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmll
d19kaXNwYXRjaF9kaWRfZmluaXNoX2xvYWRpbmcoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgLyog
SWYgd2UgcmVhY2ggdGhpcyBwb2ludCBhbmQgcmVuZGVyaW5nIGlzIHN0aWxsIGRpc2FibGVkLCBX
ZWJDb3JlIHdpbGwgbm90CiAgICAgICogdHJpZ2dlciB0aGUgZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IHNpZ25hbCBhbnltb3JlLiBTbywgd2UKQEAgLTM1NDEsNyArMzU0MSw3IEBAIHZv
aWQgZXdrX3ZpZXdfZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2FkaW5nKEV2YXNfT2JqZWN0ICpvKQog
ICAgIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlvdXQobyk7CiB9CiAK
LXZvaWQgZXdrX3ZpZXdfdHJhbnNpdGlvbl90b19jb21taXRlZF9mb3JfbmV3cGFnZShFdmFzX09i
amVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfdHJhbnNpdGlvbl90b19jb21taXRlZF9mb3JfbmV3cGFn
ZShFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwpAQCAtMzU2MCw3
ICszNTYwLDcgQEAgdm9pZCBld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVkX2Zvcl9uZXdw
YWdlKEV2YXNfT2JqZWN0ICpvKQogICogQHBhcmFtIG8gVmlldyB0byBsb2FkCiAgKiBAcGFyYW0g
cmVxdWVzdCBSZXF1ZXN0IHdoaWNoIGNvbnRhaW4gdXJsIHRvIG5hdmlnYXRlCiAgKi8KLUVpbmFf
Qm9vbCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCAqbywg
RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgKnJlcXVlc3QpCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfVFJVRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNk
LT5hcGksIEVJTkFfVFJVRSk7CkBAIC0zNTcxLDcgKzM1NzEsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QgKm8sIEV3a19GcmFtZV9S
ZXNvdXJjZQogICAgIHJldHVybiBzZC0+YXBpLT5uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihz
ZCwgcmVxdWVzdCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19qc19vYmplY3RfYWRkKEV2YXNf
T2JqZWN0ICpvLCBFd2tfSlNfT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm9ial9uYW1lKQorRWlu
YV9Cb29sIGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QqIG8sIEV3a19KU19PYmpl
Y3QqIG9iaiwgY29uc3QgY2hhciogb2JqX25hbWUpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAgICAgaWYgKG9iai0+dmlldykgLy8gb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4g
YWRkZWQgdG8gYW5vdGhlciBld2tfdmlldwpAQCAtMzU4MSw4ICszNTgxLDggQEAgRWluYV9Cb29s
IGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QgKm8sIEV3a19KU19PYmplY3QgKm9i
aiwgY29uc3QgY2hhcgogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
RUlOQV9GQUxTRSk7CiAKICAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKLSAgICBXZWJDb3JlOjpKU0RPTVdpbmRvdyAqd2luZG93ID0gdG9KU0RPTVdpbmRv
dyhwcml2LT5tYWluX2ZyYW1lLCBXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Ci0g
ICAgSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9vdDsKKyAgICBXZWJDb3JlOjpKU0RPTVdp
bmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhwcml2LT5tYWluX2ZyYW1lLCBXZWJDb3JlOjpt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdCog
cm9vdDsKICAgICByb290ID0gcHJpdi0+bWFpbl9mcmFtZS0+c2NyaXB0KCktPmJpbmRpbmdSb290
T2JqZWN0KCk7CiAKICAgICBpZiAoIXdpbmRvdykgewpAQCAtMzU5Myw3ICszNTkzLDcgQEAgRWlu
YV9Cb29sIGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QgKm8sIEV3a19KU19PYmpl
Y3QgKm9iaiwgY29uc3QgY2hhcgogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gd2luZG93LT5n
bG9iYWxFeGVjKCk7CiAKICAgICBvYmotPnZpZXcgPSBvOwotICAgIEpTQzo6SlNPYmplY3QgKnJ1
bnRpbWVPYmplY3QgPSAoSlNDOjpKU09iamVjdCopSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpj
cmVhdGUoKE5QT2JqZWN0KilvYmosIHJvb3QpLT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpOwor
ICAgIEpTQzo6SlNPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSAoSlNDOjpKU09iamVjdCopSlNDOjpC
aW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUoKE5QT2JqZWN0KilvYmosIHJvb3QpLT5jcmVhdGVS
dW50aW1lT2JqZWN0KGV4ZWMpOwogICAgIEpTQzo6SWRlbnRpZmllciBpZCA9IEpTQzo6SWRlbnRp
ZmllcihleGVjLCBvYmpfbmFtZSk7CiAKICAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90OwpA
QCAtMzY1Myw3ICszNjUzLDcgQEAgdm9pZCogZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9yZXNv
dXJjZV9nZXQoRXZhc19PYmplY3QqIG8sIHNpemVfdCogYnl0ZXNSZWFkLAogICogQHBhcmFtIHcg
bmV3IGNvbnRlbnQgd2lkdGguCiAgKiBAcGFyYW0gaCBuZXcgY29udGVudCBoZWlnaHQuCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvLCBpbnQg
dywgaW50IGgpCit2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVj
dCogbywgaW50IHcsIGludCBoKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwpAQCAtMzY2NSwx
MyArMzY2NSwxMyBAQCB2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09i
amVjdCAqbywgaW50IHcsIGludCBoKQogCiAvKioKICAqIEBpbnRlcm5hbAotICogR2V0cyBwYWdl
IHNpemUgZnJvbSBmcmFtZXZpZXcuIAorICogR2V0cyBwYWdlIHNpemUgZnJvbSBmcmFtZXZpZXcu
CiAgKgogICogQHBhcmFtIG8gdmlldy4KICAqCiAgKiBAcmV0dXJuIHBhZ2Ugc2l6ZS4KICAqLwot
V2ViQ29yZTo6RmxvYXRSZWN0IGV3a192aWV3X3BhZ2VfcmVjdF9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pCitXZWJDb3JlOjpGbG9hdFJlY3QgZXdrX3ZpZXdfcGFnZV9yZWN0X2dldChjb25zdCBF
dmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTM2ODEsNyArMzY4MSw3IEBAIFdlYkNvcmU6OkZs
b2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogfQog
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVu
dHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBib29sIG5lZWRlZCkKK3ZvaWQgZXdrX3ZpZXdfbmVlZF90
b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29sIG5lZWRlZCkKIHsKICAgICBFV0tf
VklFV19TRF9HRVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAg
LTM2ODksNyArMzY4OSw3IEBAIHZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2
YXNfT2JqZWN0ICpvLCBib29sIG5lZWRlZCkKICAgICBwcml2LT5mbGFncy5uZWVkX3RvdWNoX2V2
ZW50cyA9IG5lZWRlZDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRz
X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19uZWVkX3RvdWNo
X2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTM2OTcsNyArMzY5Nyw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
CiB9CiAjZW5kaWYKIAotRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFd2tfVmlld19Nb2RlIHZpZXdfbW9kZSkKK0VpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChF
dmFzX09iamVjdCogbywgRXdrX1ZpZXdfTW9kZSB2aWV3X21vZGUpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTM3MjUsNyArMzcyNSw3IEBA
IEVpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1ZpZXdfTW9k
ZSB2aWV3X21vZGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRXdrX1ZpZXdfTW9kZSBl
d2tfdmlld19tb2RlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0V3a19WaWV3X01vZGUgZXdr
X3ZpZXdfbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRXdrX1ZpZXdfTW9k
ZSBtb2RlID0gRVdLX1ZJRVdfTU9ERV9XSU5ET1dFRDsKIApAQCAtMzc2NCw3ICszNzY0LDcgQEAg
RXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAq
CiAgKiBFbWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnRzZWxlY3Rpb24sY2hhbmdlZCIgd2l0aCBu
byBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0aW9u
X2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2Vs
ZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChvLCAiZWRpdG9yY2xpZW50LHNlbGVjdGlvbixjaGFuZ2VkIiwgMCk7CiB9
CkBAIC0zNzc3LDcgKzM3NzcsNyBAQCB2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0
aW9uX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAiZWRpdG9y
Y2xpZW50LGNvbnRlbnRzLGNoYW5nZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBl
d2tfdmlld19lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCit2
b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCog
bykKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJlZGl0b3JjbGll
bnQsY29udGVudHMsY2hhbmdlZCIsIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfc2luZ2xlLmNwcAppbmRleCA4YmFmODA1Li5iOTljOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAtMzEsMjMgKzMxLDIzIEBACiAKIHN0YXRpYyBF
d2tfVmlld19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9OVUxMOwogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX29uX2RlbCh2b2lkICpkYXRh
LCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19zaW5nbGVfb25fZGVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0
KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gKEV2YXNf
T2JqZWN0KilkYXRhOworICAgIEV2YXNfT2JqZWN0KiBjbGlwID0gKEV2YXNfT2JqZWN0KilkYXRh
OwogICAgIGV2YXNfb2JqZWN0X2RlbChjbGlwKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3
X3NpbmdsZV9zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
c2luZ2xlX3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9E
YXRhICpzZDsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZDsKIAogICAgIF9wYXJlbnRfc2Mu
c2MuYWRkKG8pOwogCi0gICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KG8pOworICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNf
b2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOwogICAgIGlmICghc2QpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gZXZhc19vYmplY3RfcmVjdGFuZ2xlX2FkZChzZC0+
YmFzZS5ldmFzKTsKKyAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X3JlY3Rhbmds
ZV9hZGQoc2QtPmJhc2UuZXZhcyk7CiAgICAgZXZhc19vYmplY3RfY2xpcF9zZXQoc2QtPmJhY2tp
bmdfc3RvcmUsIGNsaXApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoY2xpcCwg
byk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhjbGlwKTsKQEAgLTU2LDE4ICs1NiwxOCBAQCBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZChFdmFzX09iamVjdCAqbykKICAgICAg
ICAgKHNkLT5iYWNraW5nX3N0b3JlLCBFVkFTX0NBTExCQUNLX0RFTCwgX2V3a192aWV3X3Npbmds
ZV9vbl9kZWwsIGNsaXApOwogfQogCi1zdGF0aWMgRXZhc19PYmplY3QgKl9ld2tfdmlld19zaW5n
bGVfc21hcnRfYmFja2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0
aWMgRXZhc19PYmplY3QqIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmFja2luZ19zdG9yZV9hZGQo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7Ci0gICAgRXZhc19PYmplY3QgKmJzID0gZXZhc19v
YmplY3RfaW1hZ2VfYWRkKHNkLT5iYXNlLmV2YXMpOworICAgIEV2YXNfT2JqZWN0KiBicyA9IGV2
YXNfb2JqZWN0X2ltYWdlX2FkZChzZC0+YmFzZS5ldmFzKTsKICAgICBldmFzX29iamVjdF9pbWFn
ZV9hbHBoYV9zZXQoYnMsIEVJTkFfRkFMU0UpOwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Ntb290
aF9zY2FsZV9zZXQoYnMsIHNkLT56b29tX3dlYWtfc21vb3RoX3NjYWxlKTsKIAogICAgIHJldHVy
biBiczsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUoRXZh
c19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQorc3RhdGljIHZvaWQgX2V3
a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOworICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0
X2RhdGFfZ2V0KG8pOwogICAgIF9wYXJlbnRfc2Muc2MucmVzaXplKG8sIHcsIGgpOwogCiAgICAg
aWYgKCFzZCkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9z
bWFydF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db28KICAgICAv
LyB0aGVzZSBzaG91bGQgYmUgcXVldWVkIGFuZCBwcm9jZXNzZWQgaW4gY2FsY3VsYXRlIGFzIHdl
bGwhCiAgICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIHcs
IGgpOwogICAgIGlmIChzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPCAwLjAwMDAxKSB7
Ci0gICAgICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc2QtPmJh
Y2tpbmdfc3RvcmUpOworICAgICAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X2Ns
aXBfZ2V0KHNkLT5iYWNraW5nX3N0b3JlKTsKICAgICAgICAgRXZhc19Db29yZCB4LCB5LCBjdywg
Y2g7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNkLT5iYWNraW5nX3N0b3Jl
LCAwLCAwLCB3LCBoKTsKICAgICAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNkLT5iYWNr
aW5nX3N0b3JlLCAmeCwgJnksIDAsIDApOwpAQCAtOTAsMTAgKzkwLDEwIEBAIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3Jk
IHcsIEV2YXNfQ29vCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRi
X21vdmVfcmVnaW9uX3VwKHVpbnQzMl90ICppbWFnZSwgc2l6ZV90IHJvd3MsIHNpemVfdCB4LCBz
aXplX3QgeSwgc2l6ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93c2l6ZSkKK3N0YXRpYyBpbmxp
bmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fdXAodWludDMyX3QqIGltYWdlLCBzaXpl
X3Qgcm93cywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCBy
b3dzaXplKQogewotICAgIHVpbnQzMl90ICpzcmM7Ci0gICAgdWludDMyX3QgKmRzdDsKKyAgICB1
aW50MzJfdCogc3JjOworICAgIHVpbnQzMl90KiBkc3Q7CiAKICAgICBkc3QgPSBpbWFnZSArIHgg
KyB5ICogcm93c2l6ZTsKICAgICBzcmMgPSBkc3QgKyByb3dzICogcm93c2l6ZTsKQEAgLTEwMywx
MCArMTAzLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25f
dXAodWludDMyX3QgKmltYWdlLCBzaXplX3Qgcm93cywgc2l6CiAgICAgICAgIG1lbWNweShkc3Qs
IHNyYywgdyAqIDQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVf
cmVnaW9uX2Rvd24odWludDMyX3QgKmltYWdlLCBzaXplX3Qgcm93cywgc2l6ZV90IHgsIHNpemVf
dCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dzaXplKQorc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9kb3duKHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90
IHJvd3MsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93
c2l6ZSkKIHsKLSAgICB1aW50MzJfdCAqc3JjOwotICAgIHVpbnQzMl90ICpkc3Q7CisgICAgdWlu
dDMyX3QqIHNyYzsKKyAgICB1aW50MzJfdCogZHN0OwogCiAgICAgaCAtPSByb3dzOwogICAgIHNy
YyA9IGltYWdlICsgeCArICh5ICsgaCAtIDEpICogcm93c2l6ZTsKQEAgLTExNiw5ICsxMTYsOSBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2Rvd24odWludDMy
X3QgKmltYWdlLCBzaXplX3Qgcm93cywgcwogICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHcgKiA0
KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVmdCh1
aW50MzJfdCAqZHN0LCBjb25zdCB1aW50MzJfdCAqc3JjLCBzaXplX3QgY291bnQpCitzdGF0aWMg
aW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfbGluZV9sZWZ0KHVpbnQzMl90KiBkc3QsIGNv
bnN0IHVpbnQzMl90KiBzcmMsIHNpemVfdCBjb3VudCkKIHsKLSAgICB1aW50MzJfdCAqZHN0X2Vu
ZCA9IGRzdCArIGNvdW50OworICAgIHVpbnQzMl90KiBkc3RfZW5kID0gZHN0ICsgY291bnQ7CiAg
ICAgLyogbm8gbWVtY3B5KCkgYXMgaXQgZG9lcyBub3QgYWxsb3cgb3ZlcmxhcHBpbmcgcmVnaW9u
cyAqLwogICAgIC8qIG5vIG1lbW1vdmUoKSBhcyBpdCB3aWxsIGNvcHkgdG8gYSB0ZW1wb3Jhcnkg
YnVmZmVyICovCiAgICAgLyogVE9ETzogbG9vcCB1bnJvbGxpbmcsIGNvcHlpbmcgdXAgdG8gcXVh
ZC13b3JkcyB3b3VsZCBoZWxwICovCkBAIC0xMjYsOSArMTI2LDkgQEAgc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVmdCh1aW50MzJfdCAqZHN0LCBjb25zdCB1aW50
MzJfdCAqc3IKICAgICAgICAgKmRzdCA9ICpzcmM7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBf
ZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KHVpbnQzMl90ICpkc3QsIHVpbnQzMl90ICpzcmMs
IHNpemVfdCBjb3VudCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9saW5l
X3JpZ2h0KHVpbnQzMl90KiBkc3QsIHVpbnQzMl90KiBzcmMsIHNpemVfdCBjb3VudCkKIHsKLSAg
ICB1aW50MzJfdCAqZHN0X2VuZCA9IGRzdCAtIGNvdW50OworICAgIHVpbnQzMl90KiBkc3RfZW5k
ID0gZHN0IC0gY291bnQ7CiAgICAgLyogbm8gbWVtY3B5KCkgYXMgaXQgZG9lcyBub3QgYWxsb3cg
b3ZlcmxhcHBpbmcgcmVnaW9ucyAqLwogICAgIC8qIG5vIG1lbW1vdmUoKSBhcyBpdCB3aWxsIGNv
cHkgdG8gYSB0ZW1wb3JhcnkgYnVmZmVyICovCiAgICAgLyogVE9ETzogbG9vcCB1bnJvbGxpbmcs
IGNvcHlpbmcgdXAgdG8gcXVhZC13b3JkcyB3b3VsZCBoZWxwICovCkBAIC0xMzYsMTAgKzEzNiwx
MCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfbGluZV9yaWdodCh1aW50
MzJfdCAqZHN0LCB1aW50MzJfdCAqc3JjLCBzaQogICAgICAgICAqZHN0ID0gKnNyYzsKIH0KIAot
c3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0KHVpbnQzMl90
ICppbWFnZSwgc2l6ZV90IGNvbHMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHcsIHNpemVf
dCBoLCBzaXplX3Qgcm93c2l6ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92
ZV9yZWdpb25fbGVmdCh1aW50MzJfdCogaW1hZ2UsIHNpemVfdCBjb2xzLCBzaXplX3QgeCwgc2l6
ZV90IHksIHNpemVfdCB3LCBzaXplX3QgaCwgc2l6ZV90IHJvd3NpemUpCiB7Ci0gICAgdWludDMy
X3QgKnNyYzsKLSAgICB1aW50MzJfdCAqZHN0OworICAgIHVpbnQzMl90KiBzcmM7CisgICAgdWlu
dDMyX3QqIGRzdDsKIAogICAgIGRzdCA9IGltYWdlICsgeCArIHkgKiByb3dzaXplOwogICAgIHNy
YyA9IGRzdCArIGNvbHM7CkBAIC0xNDksMTAgKzE0OSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
X2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2xlZnQodWludDMyX3QgKmltYWdlLCBzaXplX3QgY29s
cywgcwogICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZHN0LCBzcmMsIHcpOwog
fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0KHVp
bnQzMl90ICppbWFnZSwgc2l6ZV90IGNvbHMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHcs
IHNpemVfdCBoLCBzaXplX3Qgcm93c2l6ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdf
NGJfbW92ZV9yZWdpb25fcmlnaHQodWludDMyX3QqIGltYWdlLCBzaXplX3QgY29scywgc2l6ZV90
IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dzaXplKQogewotICAg
IHVpbnQzMl90ICpzcmM7Ci0gICAgdWludDMyX3QgKmRzdDsKKyAgICB1aW50MzJfdCogc3JjOwor
ICAgIHVpbnQzMl90KiBkc3Q7CiAKICAgICB3IC09IGNvbHM7CiAgICAgc3JjID0gaW1hZ2UgKyAo
eCArIHcgLSAxKSArIHkgKiByb3dzaXplOwpAQCAtMTYzLDEwICsxNjMsMTAgQEAgc3RhdGljIGlu
bGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodCh1aW50MzJfdCAqaW1hZ2Us
IHNpemVfdCBjb2xzLAogfQogCiAvKiBjYXRjaC1hbGwgZnVuY3Rpb24sIG5vdCBhcyBvcHRpbWl6
ZWQgYXMgdGhlIG90aGVycywgYnV0IGRvZXMgdGhlIHdvcmsuICovCi1zdGF0aWMgaW5saW5lIHZv
aWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uKHVpbnQzMl90ICppbWFnZSwgaW50IGR4LCBpbnQg
ZHksIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93c2l6
ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb24odWludDMyX3Qq
IGltYWdlLCBpbnQgZHgsIGludCBkeSwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6
ZV90IGgsIHNpemVfdCByb3dzaXplKQogewotICAgIHVpbnQzMl90ICpzcmM7Ci0gICAgdWludDMy
X3QgKmRzdDsKKyAgICB1aW50MzJfdCogc3JjOworICAgIHVpbnQzMl90KiBkc3Q7CiAKICAgICBp
ZiAoZHkgPCAwKSB7CiAgICAgICAgIGggKz0gZHk7CkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbih1aW50MzJfdCAqaW1hZ2UsIGlu
dCBkeCwgaW50IGR5LCBzaXoKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3Zp
ZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
dm9pZCAqcGl4ZWxzLCBFdmFzX0Nvb3JkIG93LCBFdmFzX0Nvb3JkIG9oLCBjb25zdCBFd2tfU2Ny
b2xsX1JlcXVlc3QgKnNyKQorc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Ny
b2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCB2b2lkKiBwaXhlbHMs
IEV2YXNfQ29vcmQgb3csIEV2YXNfQ29vcmQgb2gsIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCog
c3IpCiB7CiAgICAgRXZhc19Db29yZCBzeCwgc3ksIHN3LCBzaDsKIApAQCAtMzQwLDEzICszNDAs
MTMgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nf
c2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnMKICAgICB9CiB9CiAKLXN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfc2Nyb2xs
c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewotICAgIGNvbnN0IEV3a19TY3Jv
bGxfUmVxdWVzdCAqc3I7Ci0gICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0ICpzcl9lbmQ7Cisg
ICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0KiBzcjsKKyAgICBjb25zdCBFd2tfU2Nyb2xsX1Jl
cXVlc3QqIHNyX2VuZDsKICAgICBFdmFzX0Nvb3JkIG93LCBvaDsKICAgICBzaXplX3QgY291bnQ7
Ci0gICAgdm9pZCAqcGl4ZWxzID0gZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQoc2QtPmJhY2tp
bmdfc3RvcmUsIDEpOworICAgIHZvaWQqIHBpeGVscyA9IGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFf
Z2V0KHNkLT5iYWNraW5nX3N0b3JlLCAxKTsKICAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX2dl
dChzZC0+YmFja2luZ19zdG9yZSwgJm93LCAmb2gpOwogCiAgICAgc3IgPSBld2tfdmlld19zY3Jv
bGxfcmVxdWVzdHNfZ2V0KHNkLT5fcHJpdiwgJmNvdW50KTsKQEAgLTM1OSwyNSArMzU5LDI1IEBA
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3Mo
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVf
c21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBF
d2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0OworICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQq
IGN0eHQ7CiAgICAgRXZhc19Db29yZCBvdywgb2g7Ci0gICAgdm9pZCAqcGl4ZWxzOwotICAgIEVp
bmFfUmVjdGFuZ2xlICpyOwotICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICpwcjsKLSAgICBjb25z
dCBFaW5hX1JlY3RhbmdsZSAqcHJfZW5kOwotICAgIEVpbmFfVGlsZXIgKnRpbGVyOwotICAgIEVp
bmFfSXRlcmF0b3IgKml0cjsKKyAgICB2b2lkKiBwaXhlbHM7CisgICAgRWluYV9SZWN0YW5nbGUq
IHI7CisgICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHByOworICAgIGNvbnN0IEVpbmFfUmVjdGFu
Z2xlKiBwcl9lbmQ7CisgICAgRWluYV9UaWxlciogdGlsZXI7CisgICAgRWluYV9JdGVyYXRvciog
aXRyOwogICAgIGNhaXJvX3N0YXR1c190IHN0YXR1czsKLSAgICBjYWlyb19zdXJmYWNlX3QgKnN1
cmZhY2U7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlOwogICAgIGNhaXJvX2Zvcm1hdF90
IGZvcm1hdDsKLSAgICBjYWlyb190ICpjYWlybzsKKyAgICBjYWlyb190KiBjYWlybzsKICAgICBz
aXplX3QgY291bnQ7CiAgICAgRWluYV9Cb29sIHJldCA9IEVJTkFfVFJVRTsKIAogICAgIGlmIChz
ZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPCAwLjAwMDAxKSB7Ci0gICAgICAgIEV2YXNf
T2JqZWN0ICpjbGlwID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOwor
ICAgICAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X2NsaXBfZ2V0KHNkLT5iYWNr
aW5nX3N0b3JlKTsKICAgICAgICAgRXZhc19Db29yZCB3LCBoLCBjdywgY2g7CiAgICAgICAgIC8v
IHJlc2V0IGVmZmVjdHMgb2Ygem9vbV93ZWFrX3NldCgpCiAgICAgICAgIGV2YXNfb2JqZWN0X2lt
YWdlX2ZpbGxfc2V0CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QK
ICAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMyOwogCiAgICAgc3VyZmFjZSA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhCi0gICAgICAgICgodW5zaWduZWQgY2hhciop
cGl4ZWxzLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsKKyAgICAgICAgICAgICAgICAgICgodW5z
aWduZWQgY2hhciopcGl4ZWxzLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsKICAgICBzdGF0dXMg
PSBjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKTsKICAgICBpZiAoc3RhdHVzICE9IENBSVJP
X1NUQVRVU19TVUNDRVNTKSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBzdXJmYWNl
IGZyb20gZGF0YSAlZHglZDogJXMiLApAQCAtNDgyLDE0ICs0ODIsMTQgQEAgZXJyb3JfY2Fpcm9f
c3VyZmFjZToKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3NldChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgZmxv
YXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKK3N0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIC8v
IFRPRE86IHJldmlldwogICAgIGZsb2F0IHNjYWxlID0gem9vbSAvIHNkLT5hbmltYXRlZF96b29t
Lnpvb20uc3RhcnQ7CiAgICAgRXZhc19Db29yZCB3ID0gc2QtPnZpZXcudyAqIHNjYWxlOwogICAg
IEV2YXNfQ29vcmQgaCA9IHNkLT52aWV3LmggKiBzY2FsZTsKICAgICBFdmFzX0Nvb3JkIGR4LCBk
eSwgY3csIGNoOwotICAgIEV2YXNfT2JqZWN0ICpjbGlwID0gZXZhc19vYmplY3RfY2xpcF9nZXQo
c2QtPmJhY2tpbmdfc3RvcmUpOworICAgIEV2YXNfT2JqZWN0KiBjbGlwID0gZXZhc19vYmplY3Rf
Y2xpcF9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOwogCiAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3Np
emVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmY3csICZjaCk7CiAgICAgaWYgKHNkLT52aWV3LncgPiAw
ICYmIHNkLT52aWV3LmggPiAwKSB7CkBAIC01MTksMTcgKzUxOSwxNyBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3NldChFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgZgogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tf
dmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QsIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQogewogICAgIGV2YXNfb2JqZWN0X2lt
YWdlX3Ntb290aF9zY2FsZV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIHNtb290aF9zY2FsZSk7CiB9
CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmdfY29sb3Jfc2V0KEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCB1bnNpZ25lZCBjaGFyIHIsIHVuc2lnbmVkIGNoYXIgZywgdW5z
aWduZWQgY2hhciBiLCB1bnNpZ25lZCBjaGFyIGEpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X2JnX2NvbG9yX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgdW5zaWduZWQg
Y2hhciByLCB1bnNpZ25lZCBjaGFyIGcsIHVuc2lnbmVkIGNoYXIgYiwgdW5zaWduZWQgY2hhciBh
KQogewogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChzZC0+YmFja2luZ19zdG9yZSwg
YSA8IDI1NSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zaW5nbGVfc21hcnRfc2V0KEV3a19W
aWV3X1NtYXJ0X0NsYXNzICphcGkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Nl
dChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogewogICAgIGlmICghZXdrX3ZpZXdfYmFzZV9z
bWFydF9zZXQoYXBpKSkKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CkBAIC01NTAsMTAgKzU1
MCwxMCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3NldChFd2tfVmlld19TbWFy
dF9DbGFzcyAqYXBpKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
RXZhc19TbWFydCAqX2V3a192aWV3X3NpbmdsZV9zbWFydF9jbGFzc19uZXcodm9pZCkKK3N0YXRp
YyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3NpbmdsZV9zbWFydF9jbGFzc19uZXcodm9p
ZCkKIHsKICAgICBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgYXBpID0gRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04oIkV3a19WaWV3X1NpbmdsZSIpOwotICAgIHN0YXRp
YyBFdmFzX1NtYXJ0ICpzbWFydCA9IDA7CisgICAgc3RhdGljIEV2YXNfU21hcnQqIHNtYXJ0ID0g
MDsKIAogICAgIGlmIChFSU5BX1VOTElLRUxZKCFzbWFydCkpIHsKICAgICAgICAgZXdrX3ZpZXdf
c2luZ2xlX3NtYXJ0X3NldCgmYXBpKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBzdGF0aWMgaW5saW5l
IEV2YXNfU21hcnQgKl9ld2tfdmlld19zaW5nbGVfc21hcnRfY2xhc3NfbmV3KHZvaWQpCiAgICAg
cmV0dXJuIHNtYXJ0OwogfQogCi1FdmFzX09iamVjdCAqZXdrX3ZpZXdfc2luZ2xlX2FkZChFdmFz
ICplKQorRXZhc19PYmplY3QqIGV3a192aWV3X3NpbmdsZV9hZGQoRXZhcyogZSkKIHsKICAgICBy
ZXR1cm4gZXZhc19vYmplY3Rfc21hcnRfYWRkKGUsIF9ld2tfdmlld19zaW5nbGVfc21hcnRfY2xh
c3NfbmV3KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
X3RpbGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKaW5k
ZXggZmM4NDVmNy4uNDk3NTFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3X3RpbGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGls
ZWQuY3BwCkBAIC0zMCwyNCArMzAsMjQgQEAKIAogc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNz
IF9wYXJlbnRfc2MgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKLXN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYih2b2lkICpkYXRhLCBFd2tfVGlsZSAq
dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d190aWxlZF9yZW5kZXJfY2Iodm9pZCogZGF0YSwgRXdrX1RpbGUqIHQsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBhcmVhKQogewotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiA9IChFd2tf
Vmlld19Qcml2YXRlX0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2
ID0gKEV3a19WaWV3X1ByaXZhdGVfRGF0YSopZGF0YTsKICAgICBFaW5hX1JlY3RhbmdsZSByID0g
e2FyZWEtPnggKyB0LT54LCBhcmVhLT55ICsgdC0+eSwgYXJlYS0+dywgYXJlYS0+aH07CiAKICAg
ICByZXR1cm4gZXdrX3ZpZXdfcGFpbnRfY29udGVudHMocHJpdiwgdC0+Y2Fpcm8sICZyKTsKIH0K
IAotc3RhdGljIHZvaWQgKl9ld2tfdmlld190aWxlZF91cGRhdGVzX3Byb2Nlc3NfcHJlKHZvaWQg
KmRhdGEsIEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQqIF9ld2tfdmlld190aWxlZF91cGRh
dGVzX3Byb2Nlc3NfcHJlKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvKQogewotICAgIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSAqcHJpdiA9IChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWRhdGE7Cisg
ICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gKEV3a19WaWV3X1ByaXZhdGVfRGF0YSop
ZGF0YTsKICAgICBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShwcml2KTsKICAg
ICByZXR1cm4gMDsKIH0KIAotc3RhdGljIEV2YXNfT2JqZWN0ICpfZXdrX3ZpZXdfdGlsZWRfc21h
cnRfYmFja2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRXZh
c19PYmplY3QqIF9ld2tfdmlld190aWxlZF9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmll
d19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBFdmFzX09iamVjdCAqYnMgPSBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9hZGQoc2QtPmJhc2UuZXZhcyk7CisgICAgRXZhc19PYmplY3QqIGJzID0gZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfYWRkKHNkLT5iYXNlLmV2YXMpOwogICAgIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX3JlbmRlcl9jYl9zZXQKICAgICAgICAgKGJzLCBfZXdrX3ZpZXdfdGlsZWRf
cmVuZGVyX2NiLCBzZC0+X3ByaXYpOwogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0
ZXNfcHJvY2Vzc19wcmVfc2V0CkBAIC01NiwxOCArNTYsMTggQEAgc3RhdGljIEV2YXNfT2JqZWN0
ICpfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYmFja2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRf
RGF0YQogfQogCiBzdGF0aWMgdm9pZAotX2V3a192aWV3X3RpbGVkX2NvbnRlbnRzX3NpemVfY2hh
bmdlZF9jYih2b2lkICpkYXRhLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK19l
d2tfdmlld190aWxlZF9jb250ZW50c19zaXplX2NoYW5nZWRfY2Iodm9pZCogZGF0YSwgRXZhc19P
YmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19Db29yZCAqc2l6ZSA9IChF
dmFzX0Nvb3JkKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3
a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19Db29yZCogc2l6ZSA9IChFdmFzX0Nv
b3JkKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CiAKICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jb250ZW50
c19yZXNpemUKICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzaXplWzBdLCBzaXplWzFdKTsK
IH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X2FkZChFdmFzX09iamVjdCAq
bykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9hZGQoRXZhc19PYmplY3QqIG8p
CiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Q7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2Q7CiAKICAgICBfcGFyZW50X3NjLnNjLmFkZChvKTsKIApAQCAtODEsMTAgKzgxLDEwIEBA
IHN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiAg
ICAgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KHNkLT5tYWluX2ZyYW1lLCBFSU5BX1RSVUUpOwog
fQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9zY3JvbGxzX3Byb2Nl
c3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190
aWxlZF9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7Ci0g
ICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0ICpzcjsKLSAgICBjb25zdCBFd2tfU2Nyb2xsX1Jl
cXVlc3QgKnNyX2VuZDsKKyAgICBjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QqIHNyOworICAgIGNv
bnN0IEV3a19TY3JvbGxfUmVxdWVzdCogc3JfZW5kOwogICAgIHNpemVfdCBjb3VudDsKICAgICBF
dmFzX0Nvb3JkIHZ3LCB2aDsKIApAQCAtMTM3LDkgKzEzNyw5IEBAIHN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRh
ICpzZCkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld190aWxlZF9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcmVwYWludHNfcHJvY2Vz
cyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBjb25zdCBFaW5hX1JlY3RhbmdsZSAq
cHIsICpwcl9lbmQ7CisgICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHByLCAqIHByX2VuZDsKICAg
ICBzaXplX3QgY291bnQ7CiAgICAgaW50IHN4LCBzeTsKIApAQCAtMTYwLDEzICsxNjAsMTMgQEAg
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcmVwYWludHNfcHJvY2VzcyhF
d2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9jb250ZW50c19yZXNpemUoRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QsIGludCB3LCBpbnQgaCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3RpbGVkX3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZShFd2tfVmlld19TbWFydF9EYXRhKiBzZCwg
aW50IHcsIGludCBoKQogewogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2NvbnRlbnRzX3Jl
c2l6ZShzZC0+YmFja2luZ19zdG9yZSwgdywgaCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0K
IAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfem9vbV9zZXQoRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQg
Y3kpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3NldChFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29y
ZCBjeSkKIHsKICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGg7CiAgICAgRWluYV9Cb29sIHI7CkBA
IC0xODYsNTAgKzE4Niw1MCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFy
dF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgZmxvYXQgegogICAgIHJldHVybiBy
OwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3dlYWtf
c2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBF
dmFzX0Nvb3JkIGN5KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfem9v
bV93ZWFrX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRXZhc19Db29y
ZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICByZXR1cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfem9vbV93ZWFrX3NldChzZC0+YmFja2luZ19zdG9yZSwgem9vbSwgY3gsIGN5KTsKIH0KIAot
c3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVf
c2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQorc3Rh
dGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQogewogICAg
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KHNkLT5i
YWNraW5nX3N0b3JlLCBzbW9vdGhfc2NhbGUpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
dGlsZWRfc21hcnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfdGlsZWRfc21hcnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAg
ICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goc2QtPmJhY2tpbmdfc3RvcmUpOwogICAg
IF9wYXJlbnRfc2MuZmx1c2goc2QpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190
aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbihFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9h
dCB6b29tKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRl
cl9yZWdpb24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29y
ZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICByZXR1
cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24KLSAgICAgICAgKHNk
LT5iYWNraW5nX3N0b3JlLCB4LCB5LCB3LCBoLCB6b29tKTsKKyAgICAgICAgICAgICAgIChzZC0+
YmFja2luZ19zdG9yZSwgeCwgeSwgdywgaCwgem9vbSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSkKK3N0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSkKIHsKICAg
ICByZXR1cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRp
dXMKLSAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBuLCB6b29tKTsKKyAgICAgICAgICAgICAg
IChzZC0+YmFja2luZ19zdG9yZSwgbiwgem9vbSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmll
d190aWxlZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX2NhbmNlbChzZC0+YmFja2luZ19zdG9yZSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3RpbGVkX3NtYXJ0X2Rpc2FibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZGlzYWJsZV9yZW5k
ZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgcmV0dXJuIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKHNkLT5iYWNraW5nX3N0b3JlKTsKIH0KIAotc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZW5hYmxlX3JlbmRlcihFd2tfVmlld19T
bWFydF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X2Vu
YWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgcmV0dXJuIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIoc2QtPmJhY2tpbmdfc3RvcmUpOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNz
ICphcGkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0
X0NsYXNzKiBhcGkpCiB7CiAgICAgaWYgKCFld2tfdmlld19iYXNlX3NtYXJ0X3NldChhcGkpKQog
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKQEAgLTI1NSwxMCArMjU1LDEwIEBAIEVpbmFfQm9v
bCBld2tfdmlld190aWxlZF9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSkKICAg
ICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgaW5saW5lIEV2YXNfU21hcnQgKl9ld2tf
dmlld190aWxlZF9zbWFydF9jbGFzc19uZXcodm9pZCkKK3N0YXRpYyBpbmxpbmUgRXZhc19TbWFy
dCogX2V3a192aWV3X3RpbGVkX3NtYXJ0X2NsYXNzX25ldyh2b2lkKQogewogICAgIHN0YXRpYyBF
d2tfVmlld19TbWFydF9DbGFzcyBhcGkgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTigiRVdLX1ZpZXdfVGlsZWQiKTsKLSAgICBzdGF0aWMgRXZhc19TbWFydCAqc21hcnQg
PSAwOworICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7CiAKICAgICBpZiAoRUlOQV9V
TkxJS0VMWSghc21hcnQpKSB7CiAgICAgICAgIGV3a192aWV3X3RpbGVkX3NtYXJ0X3NldCgmYXBp
KTsKQEAgLTI2OCwyMSArMjY4LDIxIEBAIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCAqX2V3a192
aWV3X3RpbGVkX3NtYXJ0X2NsYXNzX25ldyh2b2lkKQogICAgIHJldHVybiBzbWFydDsKIH0KIAot
RXZhc19PYmplY3QgKmV3a192aWV3X3RpbGVkX2FkZChFdmFzICplKQorRXZhc19PYmplY3QqIGV3
a192aWV3X3RpbGVkX2FkZChFdmFzKiBlKQogewogICAgIHJldHVybiBldmFzX29iamVjdF9zbWFy
dF9hZGQoZSwgX2V3a192aWV3X3RpbGVkX3NtYXJ0X2NsYXNzX25ldygpKTsKIH0KIAotRXdrX1Rp
bGVfVW51c2VkX0NhY2hlICpld2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorRXdrX1RpbGVfVW51c2VkX0NhY2hlKiBld2tfdmlld190aWxlZF91bnVz
ZWRfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewotICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkID0gZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQobyk7CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSBld2tfdmlld19zbWFydF9kYXRhX2dldChvKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QsIDApOwogICAgIHJldHVybiBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOwogfQogCi12
b2lkIGV3a192aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19U
aWxlX1VudXNlZF9DYWNoZSAqY2FjaGUpCit2b2lkIGV3a192aWV3X3RpbGVkX3VudXNlZF9jYWNo
ZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19UaWxlX1VudXNlZF9DYWNoZSogY2FjaGUpCiB7Ci0g
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSBld2tfdmlld19zbWFydF9kYXRhX2dldChvKTsK
KyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IGV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0KG8p
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkKTsKICAgICBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIGNhY2hl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1
cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcApp
bmRleCA0YmI2ZTA2Li44MDlkMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193
aW5kb3dfZmVhdHVyZXMuY3BwCkBAIC0zMiwxMCArMzIsMTAgQEAKICAqLwogc3RydWN0IF9Fd2tf
V2luZG93X0ZlYXR1cmVzIHsKICAgICB1bnNpZ25lZCBpbnQgX19yZWY7Ci0gICAgV2ViQ29yZTo6
V2luZG93RmVhdHVyZXMgKmNvcmU7CisgICAgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmU7
CiB9OwogCi12b2lkIGV3a193aW5kb3dfZmVhdHVyZXNfdW5yZWYoRXdrX1dpbmRvd19GZWF0dXJl
cyAqd2luZG93X2ZlYXR1cmVzKQordm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX3VucmVmKEV3a19X
aW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTih3aW5kb3dfZmVhdHVyZXMpOwogICAgIEVJTkFfU0FGRVRZX09OX0ZBTFNFX1JF
VFVSTih3aW5kb3dfZmVhdHVyZXMtPl9fcmVmID4gMCk7CkBAIC00OCwxMyArNDgsMTMgQEAgdm9p
ZCBld2tfd2luZG93X2ZlYXR1cmVzX3VucmVmKEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRvd19m
ZWF0dXJlcykKICAgICBmcmVlKHdpbmRvd19mZWF0dXJlcyk7CiB9CiAKLXZvaWQgZXdrX3dpbmRv
d19mZWF0dXJlc19yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKQordm9p
ZCBld2tfd2luZG93X2ZlYXR1cmVzX3JlZihFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dfZmVh
dHVyZXMpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93X2ZlYXR1cmVz
KTsKICAgICB3aW5kb3dfZmVhdHVyZXMtPl9fcmVmKys7CiB9CiAKLXZvaWQgZXdrX3dpbmRvd19m
ZWF0dXJlc19ib29sX3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5k
b3dfZmVhdHVyZXMsIEVpbmFfQm9vbCAqdG9vbGJhcl92aXNpYmxlLCBFaW5hX0Jvb2wgKnN0YXR1
c2Jhcl92aXNpYmxlLCBFaW5hX0Jvb2wgKnNjcm9sbGJhcnNfdmlzaWJsZSwgRWluYV9Cb29sICpt
ZW51YmFyX3Zpc2libGUsIEVpbmFfQm9vbCAqbG9jYXRpb25iYXJfdmlzaWJsZSwgRWluYV9Cb29s
ICpmdWxsc2NyZWVuKQordm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX2Jvb2xfcHJvcGVydHlfZ2V0
KGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcywgRWluYV9Cb29sKiB0
b29sYmFyX3Zpc2libGUsIEVpbmFfQm9vbCogc3RhdHVzYmFyX3Zpc2libGUsIEVpbmFfQm9vbCog
c2Nyb2xsYmFyc192aXNpYmxlLCBFaW5hX0Jvb2wqIG1lbnViYXJfdmlzaWJsZSwgRWluYV9Cb29s
KiBsb2NhdGlvbmJhcl92aXNpYmxlLCBFaW5hX0Jvb2wqIGZ1bGxzY3JlZW4pCiB7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93X2ZlYXR1cmVzKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTih3aW5kb3dfZmVhdHVyZXMtPmNvcmUpOwpAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIGV3a193aW5kb3dfZmVhdHVyZXNfYm9vbF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dp
bmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYQogICAgICAgICAqZnVsbHNjcmVlbiA9IHdpbmRvd19m
ZWF0dXJlcy0+Y29yZS0+ZnVsbHNjcmVlbjsKIH0KIAotdm9pZCBld2tfd2luZG93X2ZlYXR1cmVz
X2ludF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1
cmVzLCBpbnQgKngsIGludCAqeSwgaW50ICp3LCBpbnQgKmgpCit2b2lkIGV3a193aW5kb3dfZmVh
dHVyZXNfaW50X3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3df
ZmVhdHVyZXMsIGludCogeCwgaW50KiB5LCBpbnQqIHcsIGludCogaCkKIHsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3dfZmVhdHVyZXMpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHdpbmRvd19mZWF0dXJlcy0+Y29yZSk7CkBAIC0xMDcsOSArMTA3LDkgQEAg
dm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX2ludF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRv
d19GZWF0dXJlcyAqd2luZG93X2ZlYXQKICAqIGl0IGlzIGVtYmVkZGVkIGluc2lkZSB0aGUgRXdr
X1dpbmRvd19GZWF0dXJlcyB3aG9zZSByZWYgY291bnQgaXMgaW5pdGlhbGl6ZWQsIGlmIGNvcmUg
aXMgQGMgMCBhIG5ldyBvbmUgaXMgY3JlYXRlZCB3aXRoIHRoZSBkZWZhdWx0IGZlYXR1cmVzLgog
ICogQHJldHVybiBhIG5ldyBhbGxvY2F0ZWQgdGhlIEV3a19XaW5kb3dfRmVhdHVyZXMgb2JqZWN0
IG9uIHN1Y2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwotRXdrX1dpbmRvd19GZWF0dXJlcyAq
ZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzICpjb3JlKQorRXdrX1dpbmRvd19GZWF0dXJlcyogZXdrX3dpbmRvd19mZWF0dXJlc19u
ZXdfZnJvbV9jb3JlKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlKQogewotICAg
IEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRvd19mZWF0dXJlcyA9IHN0YXRpY19jYXN0PEV3a19X
aW5kb3dfRmVhdHVyZXMqPihtYWxsb2Moc2l6ZW9mKCp3aW5kb3dfZmVhdHVyZXMpKSk7CisgICAg
RXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2ZlYXR1cmVzID0gc3RhdGljX2Nhc3Q8RXdrX1dp
bmRvd19GZWF0dXJlcyo+KG1hbGxvYyhzaXplb2YoKndpbmRvd19mZWF0dXJlcykpKTsKICAgICBp
ZiAoIXdpbmRvd19mZWF0dXJlcykgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9j
YXRlIEV3a19XaW5kb3dfRmVhdHVyZXMuIik7CiAgICAgICAgIHJldHVybiAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>108018</attachid>
            <date>2011-09-20 10:22:28 -0700</date>
            <delta_ts>2011-09-20 10:22:28 -0700</delta_ts>
            <desc>uncrustify.cfg</desc>
            <filename>uncrustify.cfg</filename>
            <type>text/plain</type>
            <size>3701</size>
            <attacher name="Lucas De Marchi">lucas.de.marchi</attacher>
            
              <data encoding="base64">c3BfYXJpdGg9aWdub3JlCnNwX2Fzc2lnbj1pZ25vcmUKc3BfYXNzaWduX2RlZmF1bHQ9aWdub3Jl
CnNwX2JlZm9yZV9hc3NpZ249aWdub3JlCnNwX2FmdGVyX2Fzc2lnbj1pZ25vcmUKc3BfZW51bV9h
c3NpZ249aWdub3JlCnNwX2VudW1fYmVmb3JlX2Fzc2lnbj1pZ25vcmUKc3BfZW51bV9hZnRlcl9h
c3NpZ249aWdub3JlCnNwX3BwX2NvbmNhdD1pZ25vcmUKc3BfcHBfc3RyaW5naWZ5PWlnbm9yZQpz
cF9ib29sPWlnbm9yZQpzcF9jb21wYXJlPWlnbm9yZQpzcF9pbnNpZGVfcGFyZW49aWdub3JlCnNw
X3BhcmVuX3BhcmVuPWlnbm9yZQpzcF9iYWxhbmNlX25lc3RlZF9wYXJlbnM9ZmFsc2UKc3BfcGFy
ZW5fYnJhY2U9aWdub3JlCnNwX2JlZm9yZV9wdHJfc3Rhcj1yZW1vdmUKc3BfYmVmb3JlX3VubmFt
ZWRfcHRyX3N0YXI9cmVtb3ZlCnNwX2JldHdlZW5fcHRyX3N0YXI9aWdub3JlCnNwX2FmdGVyX3B0
cl9zdGFyPWZvcmNlCnNwX2FmdGVyX3B0cl9zdGFyX2Z1bmM9Zm9yY2UKc3BfYmVmb3JlX3B0cl9z
dGFyX2Z1bmM9cmVtb3ZlCnNwX2JlZm9yZV9ieXJlZj1yZW1vdmUKc3BfYmVmb3JlX3VubmFtZWRf
YnlyZWY9cmVtb3ZlCnNwX2FmdGVyX2J5cmVmPWZvcmNlCnNwX2FmdGVyX2J5cmVmX2Z1bmM9Zm9y
Y2UKc3BfYmVmb3JlX2J5cmVmX2Z1bmM9cmVtb3ZlCnNwX2FmdGVyX3R5cGU9aWdub3JlCnNwX3Rl
bXBsYXRlX2FuZ2xlPWlnbm9yZQpzcF9iZWZvcmVfYW5nbGU9aWdub3JlCnNwX2luc2lkZV9hbmds
ZT1pZ25vcmUKc3BfYWZ0ZXJfYW5nbGU9aWdub3JlCnNwX2FuZ2xlX3BhcmVuPWlnbm9yZQpzcF9h
bmdsZV93b3JkPWlnbm9yZQpzcF9iZWZvcmVfc3BhcmVuPWlnbm9yZQpzcF9pbnNpZGVfc3BhcmVu
PWlnbm9yZQpzcF9pbnNpZGVfc3BhcmVuX2Nsb3NlPWlnbm9yZQpzcF9hZnRlcl9zcGFyZW49aWdu
b3JlCnNwX3NwYXJlbl9icmFjZT1pZ25vcmUKc3BfaW52YXJpYW50X3BhcmVuPWlnbm9yZQpzcF9h
ZnRlcl9pbnZhcmlhbnRfcGFyZW49aWdub3JlCnNwX3NwZWNpYWxfc2VtaT1pZ25vcmUKc3BfYmVm
b3JlX3NlbWk9aWdub3JlCnNwX2JlZm9yZV9zZW1pX2Zvcj1pZ25vcmUKc3BfYmVmb3JlX3NlbWlf
Zm9yX2VtcHR5PWlnbm9yZQpzcF9hZnRlcl9zZW1pPWlnbm9yZQpzcF9hZnRlcl9zZW1pX2Zvcj1p
Z25vcmUKc3BfYWZ0ZXJfc2VtaV9mb3JfZW1wdHk9aWdub3JlCnNwX2JlZm9yZV9zcXVhcmU9aWdu
b3JlCnNwX2JlZm9yZV9zcXVhcmVzPWlnbm9yZQpzcF9pbnNpZGVfc3F1YXJlPWlnbm9yZQpzcF9h
ZnRlcl9jb21tYT1pZ25vcmUKc3BfYmVmb3JlX2NvbW1hPWlnbm9yZQpzcF9iZWZvcmVfZWxsaXBz
aXM9aWdub3JlCnNwX2FmdGVyX2NsYXNzX2NvbG9uPWlnbm9yZQpzcF9iZWZvcmVfY2xhc3NfY29s
b249aWdub3JlCnNwX2JlZm9yZV9jYXNlX2NvbG9uPXJlbW92ZQpzcF9hZnRlcl9vcGVyYXRvcj1p
Z25vcmUKc3BfYWZ0ZXJfb3BlcmF0b3Jfc3ltPWlnbm9yZQpzcF9hZnRlcl9jYXN0PWlnbm9yZQpz
cF9pbnNpZGVfcGFyZW5fY2FzdD1pZ25vcmUKc3BfY3BwX2Nhc3RfcGFyZW49aWdub3JlCnNwX3Np
emVvZl9wYXJlbj1pZ25vcmUKc3BfYWZ0ZXJfdGFnPWlnbm9yZQpzcF9pbnNpZGVfYnJhY2VzX2Vu
dW09aWdub3JlCnNwX2luc2lkZV9icmFjZXNfc3RydWN0PWlnbm9yZQpzcF9pbnNpZGVfYnJhY2Vz
PWlnbm9yZQpzcF9pbnNpZGVfYnJhY2VzX2VtcHR5PWlnbm9yZQpzcF90eXBlX2Z1bmM9aWdub3Jl
CnNwX2Z1bmNfcHJvdG9fcGFyZW49aWdub3JlCnNwX2Z1bmNfZGVmX3BhcmVuPWlnbm9yZQpzcF9p
bnNpZGVfZnBhcmVucz1pZ25vcmUKc3BfaW5zaWRlX2ZwYXJlbj1pZ25vcmUKc3Bfc3F1YXJlX2Zw
YXJlbj1pZ25vcmUKc3BfZnBhcmVuX2JyYWNlPWlnbm9yZQpzcF9mdW5jX2NhbGxfcGFyZW49aWdu
b3JlCnNwX2Z1bmNfY2FsbF91c2VyX3BhcmVuPWlnbm9yZQpzcF9mdW5jX2NsYXNzX3BhcmVuPWln
bm9yZQpzcF9yZXR1cm5fcGFyZW49aWdub3JlCnNwX2F0dHJpYnV0ZV9wYXJlbj1pZ25vcmUKc3Bf
ZGVmaW5lZF9wYXJlbj1pZ25vcmUKc3BfdGhyb3dfcGFyZW49aWdub3JlCnNwX21hY3JvPWlnbm9y
ZQpzcF9tYWNyb19mdW5jPWlnbm9yZQpzcF9lbHNlX2JyYWNlPWlnbm9yZQpzcF9icmFjZV9lbHNl
PWlnbm9yZQpzcF9icmFjZV90eXBlZGVmPWlnbm9yZQpzcF9jYXRjaF9icmFjZT1pZ25vcmUKc3Bf
YnJhY2VfY2F0Y2g9aWdub3JlCnNwX2ZpbmFsbHlfYnJhY2U9aWdub3JlCnNwX2JyYWNlX2ZpbmFs
bHk9aWdub3JlCnNwX3RyeV9icmFjZT1pZ25vcmUKc3BfZ2V0c2V0X2JyYWNlPWlnbm9yZQpzcF9i
ZWZvcmVfZGM9aWdub3JlCnNwX2FmdGVyX2RjPWlnbm9yZQpzcF9kX2FycmF5X2NvbG9uPWlnbm9y
ZQpzcF9ub3Q9aWdub3JlCnNwX2ludj1pZ25vcmUKc3BfYWRkcj1pZ25vcmUKc3BfbWVtYmVyPWln
bm9yZQpzcF9kZXJlZj1pZ25vcmUKc3Bfc2lnbj1pZ25vcmUKc3BfaW5jZGVjPWlnbm9yZQpzcF9i
ZWZvcmVfbmxfY29udD1pZ25vcmUKc3BfYWZ0ZXJfb2Nfc2NvcGU9aWdub3JlCnNwX2FmdGVyX29j
X2NvbG9uPWlnbm9yZQpzcF9iZWZvcmVfb2NfY29sb249aWdub3JlCnNwX2FmdGVyX3NlbmRfb2Nf
Y29sb249aWdub3JlCnNwX2JlZm9yZV9zZW5kX29jX2NvbG9uPWlnbm9yZQpzcF9hZnRlcl9vY190
eXBlPWlnbm9yZQpzcF9hZnRlcl9vY19yZXR1cm5fdHlwZT1pZ25vcmUKc3BfYWZ0ZXJfb2NfYXRf
c2VsPWlnbm9yZQpzcF9hZnRlcl9vY19hdF9zZWxfcGFyZW5zPWlnbm9yZQpzcF9pbnNpZGVfb2Nf
YXRfc2VsX3BhcmVucz1pZ25vcmUKc3BfYmVmb3JlX29jX2Jsb2NrX2NhcmV0PWlnbm9yZQpzcF9h
ZnRlcl9vY19ibG9ja19jYXJldD1pZ25vcmUKc3BfY29uZF9jb2xvbj1pZ25vcmUKc3BfY29uZF9x
dWVzdGlvbj1pZ25vcmUKc3BfY2FzZV9sYWJlbD1pZ25vcmUKc3BfcmFuZ2U9aWdub3JlCnNwX2Nt
dF9jcHBfc3RhcnQ9aWdub3JlCnNwX2VuZGlmX2NtdD1pZ25vcmUKY210X2luZGVudF9tdWx0aT1m
YWxzZQoKaW5kZW50X2NsYXNzX2NvbG9uPWZhbHNlCmluZGVudF9jbXRfd2l0aF90YWJzPWZhbHNl
CmluZGVudF9jb2x1bW5zPTQKaW5kZW50X3dpdGhfdGFicz0wCmluZGVudF9jbGFzcz10cnVlCmlu
ZGVudF9icmFjZXM9ZmFsc2UKCmFsaWduX3Zhcl9kZWZfY29sb249ZmFsc2UKYWxpZ25fdmFyX2Rl
Zl9zdGFyX3N0eWxlPTEKYWxpZ25fdmFyX2RlZl9hbXBfc3R5bGU9MQphbGlnbl9rZWVwX3RhYnM9
ZmFsc2UKYWxpZ25fd2l0aF90YWJzPWZhbHNlCmFsaWduX29uX3RhYnN0b3A9ZmFsc2UKYWxpZ25f
c2luZ2xlX2xpbmVfZnVuYz1mYWxzZQphbGlnbl9zaW5nbGVfbGluZV9icmFjZT1mYWxzZQphbGln
bl9zaW5nbGVfbGluZV9icmFjZV9nYXA9MAoKbmxfZnVuY19sZWF2ZV9vbmVfbGluZXJzPXRydWUK
CnNldCBGT1IgRUlOQV9MSVNUX0ZPUkVBQ0gKc2V0IEZPUiBFSU5BX0xJU1RfUkVWRVJTRV9GT1JF
QUNICnNldCBGT1IgRUlOQV9MSVNUX0ZPUkVBQ0hfU0FGRQpzZXQgRk9SIEVJTkFfTElTVF9GUkVF
CnNldCBGT1IgRUlOQV9JVEVSQVRPUl9GT1JFQUNICnNldCBGT1IgRUlOQV9JTkxJU1RfRk9SRUFD
SApzZXQgRk9SIEVJTkFfSU5MSVNUX1JFVkVSU0VfRk9SRUFDSApzZXQgRk9SIEVJTkFfSU5MSVNU
X0ZPUkVBQ0hfU0FGRQpzZXQgRk9SIHVkZXZfbGlzdF9lbnRyeV9mb3JlYWNoCnNldCBUWVBFIEVJ
TkFfTUFHSUMKc2V0IFRZUEUgRUlOQV9JTkxJU1QKc2V0IElHTk9SRUQgX19VTlVTRURfXwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108025</attachid>
            <date>2011-09-20 10:54:15 -0700</date>
            <delta_ts>2011-09-21 11:10:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68231-20110920145533.patch</filename>
            <type>text/plain</type>
            <size>268498</size>
            <attacher name="Lucas De Marchi">lucas.de.marchi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA0ODUzMjQyMmU1
YWZmNzVkN2Y2Y2Q0OWE4NjIxODc5YjEwMTk4ZjIxLi4yMzkxZDkzNmM3MmZhOTQ1YTVjMDllMDg0
ODdkOGE3YjU0ZGQ4OGUwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTExIEBACiAyMDEx
LTA5LTIwICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4K
IAorICAgICAgICBbRUZMXSBSZXZlcnQgcG9pbnRlciBvcGVyYXRvciBjb2Rpbmcgc3R5bGUgaW4g
ZXdrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIz
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBX
ZWJLaXQgY29kaW5nIHN0eWxlIG1hbmRhdGVzIHRoYXQgIiguLi4pIGluIEMrKyBjb2RlIC0gQm90
aCBwb2ludGVyCisgICAgICAgIHR5cGVzIGFuZCByZWZlcmVuY2UgdHlwZXMgc2hvdWxkIGJlIHdy
aXR0ZW4gd2l0aCBubyBzcGFjZSBiZXR3ZWVuIHRoZQorICAgICAgICB0eXBlIG5hbWUgYW5kIHRo
ZSAqIG9yICYuIi4gVW50aWwgbm93IEVGTCBwb3J0IHdhcyB1c2luZyB0aGUKKyAgICAgICAgY29k
aW5nLXN0eWxlIG9mIHRoZSBsaWJyYXJ5IGZvciBwbGF0Zm9ybSAgY29kZSBpbnN0ZWFkIG9mIFdl
YktpdCdzLgorCisgICAgICAgIFdlIGFyZSBub3cgdHJ5aW5nIHRvIGJlIG1vcmUgY29tcGxpYW50
IHdpdGggV2ViS2l0IGNvZGluZy1zdHlsZSBzbyBpdCdzCisgICAgICAgIGVhc2llciBmb3Igb3Ro
ZXIgcmV2aWV3ZXJzIHRvIHJldmlldyBFRkwgY29kZS4gVGhlIGZpcnN0IHN0ZXAgaW4gdGhpcwor
ICAgICAgICBkaXJlY3Rpb24gaXMgdG8gbW92ZSB0aGUgJyonIGFuZCAnJicgb2YgcG9pbnRlcnMg
YW5kIHJlZmVyZW5jZXMgdG8gdGhlCisgICAgICAgIHJpZ2h0IHBsYWNlLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggd2FzIGdlbmVyYXRlZCB3aXRoICd1bmNydXN0aWZ5JyB3aXRoIHRoZSBjb25maWd1
cmUgZmlsZQorICAgICAgICBhdHRhY2hlZCB0byB0aGUgcmVzcGVjdGl2ZSBidXQgcmVwb3J0LiBU
aGVyZSB3YXMgb25lIGZpeCB0aGF0IGhhZCB0byBiZQorICAgICAgICBtYW51YWxseSBtYWRlIGlu
IG9yZGVyIHRvIGtlZXAgdGhlICdjaGVjay13ZWJraXQtc3R5bGUnIGhhcHB5OiBhCisgICAgICAg
IGZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aCBhIG1lYW5pbmdsZXNzIG5hbWUuIE90aGVyIGZ1bmN0
aW9ucyBsaWtlIHRoaXMKKyAgICAgICAgZXhpc3QgYnV0IHRoZXkgd2lsbCBiZSBmaXhlZCBieSBh
IGxhdGVyIHBhdGNoLgorCisgICAgICAgIFNvbWUgbmljZSBzaWRlLWVmZmVjdHMgb2YgdXNpbmcg
dW5jcnVzdGlmeToKKworICAgICAgICAtIFdoaXRlc3BhY2UgY2xlYW51cCBvbiBjb21tZW50cwor
ICAgICAgICAtIEZ1bmN0aW9uIHBhcmFtZXRlcnMgYXJlIGFsaWduZWQgdG8gdGhlIG9wZW4gcGFy
ZW50aGVzaXMKKyAgICAgICAgLSBSZW1vdmUgdGFiIGNoYXJhY3RlcnMKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRFZmw6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6
aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpGcmFtZUxvYWRlckNsaWVudEVmbCk6IHJlbW92ZSBuYW1lIG9mCisgICAgICAgIHVu
dXNlZCBmdW5jdGlvbiBwYXJhbWVudGVyCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6c2V0Q3VzdG9tVXNlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAqIGV3ay9l
d2tfYXV0aC5jcHA6CisgICAgICAgIChld2tfYXV0aF9jcmVkZW50aWFsc19zZXQpOgorICAgICAg
ICAqIGV3ay9ld2tfYXV0aF9zb3VwLmNwcDoKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpld2tf
YXV0aF9zb3VwX2RpYWxvZ19jbGFzc19pbml0KToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpl
d2tfYXV0aF9zb3VwX2RpYWxvZ19pbml0KToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpld2tf
YXV0aF9zb3VwX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdCk6CisgICAgICAgIChfRXdrX0F1
dGhfRGF0YTo6ZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQpOgorICAgICAgICAoX0V3a19B
dXRoX0RhdGE6OnNlc3Npb25fYXV0aGVudGljYXRlKToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRh
OjpmcmVlX2F1dGhfZGF0YSk6CisgICAgICAgIChfRXdrX0F1dGhfRGF0YTo6YXR0YWNoKToKKyAg
ICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpkZXRhY2gpOgorICAgICAgICAqIGV3ay9ld2tfY29udGV4
dG1lbnUuY3BwOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9yZWYpOgorICAgICAgICAoZXdr
X2NvbnRleHRfbWVudV91bnJlZik6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2Rlc3Ryb3kp
OgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2xpc3RfZ2V0KToKKyAgICAgICAgKGV3
a19jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVt
X3NlbGVjdCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZSk6CisgICAgICAg
IChld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRf
bWVudV9pdGVtX3R5cGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rp
b25fZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0KToKKyAg
ICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQpOgorICAgICAgICAoZXdrX2Nv
bnRleHRfbWVudV9pdGVtX3RpdGxlX3NldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0
ZW1fY2hlY2tlZF9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRf
c2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldCk6CisgICAg
ICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQpOgorICAgICAgICAoZXdrX2Nv
bnRleHRfbWVudV9uZXcpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9mcmVlKToKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQpOgorICAgICAgICAoZXdrX2NvbnRleHRf
bWVudV9jdXN0b21fZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfc2hvdyk6CisgICAg
ICAgICogZXdrL2V3a19jb29raWVzLmNwcDoKKyAgICAgICAgKGV3a19jb29raWVzX2ZpbGVfc2V0
KToKKyAgICAgICAgKGV3a19jb29raWVzX2NsZWFyKToKKyAgICAgICAgKGV3a19jb29raWVzX2dl
dF9hbGwpOgorICAgICAgICAoZXdrX2Nvb2tpZXNfY29va2llX2RlbCk6CisgICAgICAgIChld2tf
Y29va2llc19jb29raWVfZnJlZSk6CisgICAgICAgIChld2tfY29va2llc19wb2xpY3lfc2V0KToK
KyAgICAgICAgKGV3a19jb29raWVzX3BvbGljeV9nZXQpOgorICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgorICAgICAgICAoX2V3a19mcmFtZV9kZWJ1Zyk6CisgICAgICAgIChfZXdrX2ZyYW1l
X2xvYWRlcl9lZmxfZ2V0KToKKyAgICAgICAgKGtpdCk6CisgICAgICAgIChfZXdrX2ZyYW1lX2No
aWxkcmVuX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVy
YXRvcl9nZXRfY29udGFpbmVyKToKKyAgICAgICAgKF9ld2tfZnJhbWVfc21hcnRfYWRkKToKKyAg
ICAgICAgKF9ld2tfZnJhbWVfc21hcnRfZGVsKToKKyAgICAgICAgKF9ld2tfZnJhbWVfc21hcnRf
cmVzaXplKToKKyAgICAgICAgKF9ld2tfZnJhbWVfc21hcnRfc2V0KToKKyAgICAgICAgKF9ld2tf
ZnJhbWVfc21hcnRfY2xhc3NfbmV3KToKKyAgICAgICAgKGV3a19mcmFtZV92aWV3X2dldCk6Cisg
ICAgICAgIChld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KToKKyAgICAgICAgKGV3a19m
cmFtZV9jaGlsZF9maW5kKToKKyAgICAgICAgKGV3a19mcmFtZV91cmlfc2V0KToKKyAgICAgICAg
KGV3a19mcmFtZV91cmlfZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90aXRsZV9nZXQpOgorICAg
ICAgICAoZXdrX2ZyYW1lX25hbWVfZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9jb250ZW50c19z
aXplX2dldCk6CisgICAgICAgIChfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbCk6Cisg
ICAgICAgIChld2tfZnJhbWVfY29udGVudHNfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9jb250
ZW50c19hbHRlcm5hdGVfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZSk6
CisgICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVfZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9l
ZGl0YWJsZV9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQpOgorICAgICAg
ICAoZXdrX2ZyYW1lX3RleHRfc2VhcmNoKToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNo
ZXNfbWFyayk6CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwpOgor
ICAgICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAg
KGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldCk6CisgICAgICAgIChfZXdrX2Zy
YW1lX3JlY3RfY21wX2xlc3NfdGhhbik6CisgICAgICAgIChfZXdrX2ZyYW1lX3JlY3RfaXNfbmVn
YXRpdmVfdmFsdWUpOgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhfcG9zX2dl
dCk6CisgICAgICAgIChld2tfZnJhbWVfc3RvcCk6CisgICAgICAgIChld2tfZnJhbWVfcmVsb2Fk
KToKKyAgICAgICAgKGV3a19mcmFtZV9yZWxvYWRfZnVsbCk6CisgICAgICAgIChld2tfZnJhbWVf
YmFjayk6CisgICAgICAgIChld2tfZnJhbWVfZm9yd2FyZCk6CisgICAgICAgIChld2tfZnJhbWVf
bmF2aWdhdGUpOgorICAgICAgICAoZXdrX2ZyYW1lX2JhY2tfcG9zc2libGUpOgorICAgICAgICAo
ZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUpOgorICAgICAgICAoZXdrX2ZyYW1lX25hdmlnYXRl
X3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a19mcmFtZV96b29tX2dldCk6CisgICAgICAgIChld2tf
ZnJhbWVfem9vbV9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldCk6
CisgICAgICAgIChld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0KToKKyAgICAgICAgKGV3a19m
cmFtZV9oaXRfdGVzdF9mcmVlKToKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgor
ICAgICAgICAoZXdrX2ZyYW1lX3Njcm9sbF9hZGQpOgorICAgICAgICAoZXdrX2ZyYW1lX3Njcm9s
bF9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3Njcm9sbF9zaXplX2dldCk6CisgICAgICAgIChl
d2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3Zpc2libGVfY29u
dGVudF9nZW9tZXRyeV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3BhaW50X2Z1bGxfZ2V0KToK
KyAgICAgICAgKGV3a19mcmFtZV9wYWludF9mdWxsX3NldCk6CisgICAgICAgIChld2tfZnJhbWVf
ZmVlZF9mb2N1c19pbik6CisgICAgICAgIChld2tfZnJhbWVfZmVlZF9mb2N1c19vdXQpOgorICAg
ICAgICAoZXdrX2ZyYW1lX2ZlZWRfbW91c2Vfd2hlZWwpOgorICAgICAgICAoZXdrX2ZyYW1lX2Zl
ZWRfbW91c2VfZG93bik6CisgICAgICAgIChld2tfZnJhbWVfZmVlZF9tb3VzZV91cCk6CisgICAg
ICAgIChld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKToKKyAgICAgICAgKGV3a19mcmFtZV9mZWVk
X3RvdWNoX2V2ZW50KToKKyAgICAgICAgKF9ld2tfZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmcp
OgorICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24pOgorICAgICAgICAoZXdrX2ZyYW1l
X2ZlZWRfa2V5X3VwKToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlbGVjdGlvbl90eXBlX2dl
dCk6CisgICAgICAgIChld2tfZnJhbWVfYWRkKToKKyAgICAgICAgKGV3a19mcmFtZV9pbml0KToK
KyAgICAgICAgKGV3a19mcmFtZV9jaGlsZF9hZGQpOgorICAgICAgICAoZXdrX2ZyYW1lX2NvcmVf
Z29uZSk6CisgICAgICAgIChld2tfZnJhbWVfY29yZV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1l
X3JlcXVlc3Rfd2lsbF9zZW5kKToKKyAgICAgICAgKGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2lnbl9p
ZGVudGlmaWVyKToKKyAgICAgICAgKGV3a19mcmFtZV9kaWRfcGVyZm9ybV9maXJzdF9uYXZpZ2F0
aW9uKToKKyAgICAgICAgKGV3a19mcmFtZV92aWV3X3N0YXRlX3NhdmUpOgorICAgICAgICAoZXdr
X2ZyYW1lX2xvYWRfc3RhcnRlZCk6CisgICAgICAgIChld2tfZnJhbWVfbG9hZF9wcm92aXNpb25h
bCk6CisgICAgICAgIChld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZCk6CisgICAg
ICAgIChld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25lbXB0eV9maW5pc2hlZCk6CisgICAg
ICAgIChld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZCk6CisgICAgICAgIChld2tfZnJh
bWVfbG9hZF9maW5pc2hlZCk6CisgICAgICAgIChld2tfZnJhbWVfbG9hZF9lcnJvcik6CisgICAg
ICAgIChld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKToKKyAgICAgICAgKGV3a19mcmFt
ZV9jb250ZW50c19zaXplX2NoYW5nZWQpOgorICAgICAgICAoZXdrX2ZyYW1lX3RpdGxlX3NldCk6
CisgICAgICAgIChld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcpOgorICAgICAgICAoZXdr
X2ZyYW1lX3NvdXJjZV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlv
bl9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKToKKyAgICAgICAgKGV3a19m
cmFtZV9mb3JjZV9sYXlvdXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUpOgor
ICAgICAgICAoZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQpOgorICAg
ICAgICAoZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZCk6CisgICAgICAg
ICogZXdrL2V3a19oaXN0b3J5LmNwcDoKKyAgICAgICAgKF9ld2tfaGlzdG9yeV9pdGVtX25ldyk6
CisgICAgICAgIChfZXdrX2hpc3RvcnlfaXRlbV9saXN0X2dldCk6CisgICAgICAgIChld2tfaGlz
dG9yeV9oaXN0b3J5X2l0ZW1fY3VycmVudF9nZXQpOgorICAgICAgICAoZXdrX2hpc3RvcnlfaXRl
bV9pY29uX3N1cmZhY2VfZ2V0KToKKyAgICAgICAgKiBld2svZXdrX2pzLmNwcDoKKyAgICAgICAg
KiBld2svZXdrX21haW4uY3BwOgorICAgICAgICAoX2V3a19pbml0X2JvZHkpOgorICAgICAgICAq
IGV3ay9ld2tfbmV0d29yay5jcHA6CisgICAgICAgIChld2tfbmV0d29ya19wcm94eV91cmlfc2V0
KToKKyAgICAgICAgKGV3a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQpOgorICAgICAgICAqIGV3ay9l
d2tfcHJpdmF0ZS5oOgorICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmg6
CisgICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6CisgICAgICAgIChld2tfc2V0dGluZ3Nf
d2ViX2RhdGFiYXNlX3BhdGhfc2V0KToKKyAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJh
c2VfcGF0aF9nZXQpOgorICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9z
ZXQpOgorICAgICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQpOgorICAg
ICAgICAoZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldCk6CisgICAg
ICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9hZGQpOgorICAgICAg
ICAoZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQpOgorICAgICAgICAoZXdrX3Nl
dHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9wYXRoX3NldCk6CisgICAgICAgIChld2tfc2V0dGluZ3Nf
Y2FjaGVfZGlyZWN0b3J5X3BhdGhfZ2V0KToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5oOgorICAgICAgICAq
IGV3ay9ld2tfdGlsZWRfbW9kZWwuaDoKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX3ByaXZhdGUu
aDoKKyAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgorICAgICAgICAoZXdrX3V0aWxfaW1hZ2Vf
ZnJvbV9jYWlyb19zdXJmYWNlX2FkZCk6CisgICAgICAgIChld2tfdXRpbF9kcGlfZ2V0KToKKyAg
ICAgICAgKiBld2svZXdrX3V0aWwuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQpOgorICAgICAgICAoX2V3a192aWV3X3JlcGFp
bnRzX3Jlc2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfcmVwYWludF9hZGQpOgorICAgICAgICAo
X2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKToKKyAgICAgICAgKF9ld2tfdmlld19zY3JvbGxzX3Jl
c2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc2Nyb2xsX2FkZCk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc2Nyb2xsc19mbHVzaCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4pOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dCk6CisgICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24p
OgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9rZXlfZG93bik6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9hZGRfY29uc29sZV9tZXNzYWdlKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9ydW5f
amF2YXNjcmlwdF9hbGVydCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3Jp
cHRfY29uZmlybSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdWxkX2ludGVycnVwdF9q
YXZhc2NyaXB0KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9t
cHQpOgorICAgICAgICAoX2V3a192aWV3X29uX2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmll
d19vbl9mb2N1c19vdXQpOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX3doZWVsKToKKyAg
ICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9t
b3VzZV91cCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSk6CisgICAgICAgIChf
ZXdrX3ZpZXdfb25fa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X29uX2tleV91cCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcpOgorICAgICAgICAoX2V3a192aWV3X3By
aXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9kZWwpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW92ZSk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9oaWRlKToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9jb250ZW50c19yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X3pvb21fc2V0KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mbHVzaCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWdpb24pOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9wcmVfcmVuZGVyX2NhbmNlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRl
ZF9tYXJrX3N0b3ApOgorICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfZmluaXNoKToK
KyAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQpOgorICAgICAgICAoX2V3
a192aWV3X3pvb21fYW5pbWF0b3JfY2IpOgorICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0
aW9uX3N0YXJ0KToKKyAgICAgICAgKF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1
dGUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2Rpc2FibGVfcmVuZGVyKToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9lbmFibGVfcmVuZGVyKToKKyAgICAgICAgKGV3a192aWV3X2Jhc2Vf
c21hcnRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCk6Cisg
ICAgICAgIChld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfdGhlbWVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3RoZW1lX2dldCk6CisgICAgICAgIChl
d2tfdmlld19mcmFtZV9tYWluX2dldCk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9mb2N1c2Vk
X2dldCk6CisgICAgICAgIChld2tfdmlld191cmlfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Vy
aV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3
X2VkaXRhYmxlX2dldCk6CisgICAgICAgIChld2tfdmlld19iZ19jb2xvcl9zZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfc2VhcmNo
KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKToKKyAgICAgICAgKGV3a192
aWV3X3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0
Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdo
bGlnaHRfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2VkaXRhYmxlX3NldCk6CisgICAgICAgIChl
d2tfdmlld19zZWxlY3Rpb25fZ2V0KToKKyAgICAgICAgKF9ld2tfdmlld19lZGl0b3JfY29tbWFu
ZCk6CisgICAgICAgIChld2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKToKKyAgICAgICAg
KGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3
X2xvYWRfcHJvZ3Jlc3NfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3N0b3ApOgorICAgICAgICAo
ZXdrX3ZpZXdfcmVsb2FkKToKKyAgICAgICAgKGV3a192aWV3X3JlbG9hZF9mdWxsKToKKyAgICAg
ICAgKGV3a192aWV3X2JhY2spOgorICAgICAgICAoZXdrX3ZpZXdfZm9yd2FyZCk6CisgICAgICAg
IChld2tfdmlld19uYXZpZ2F0ZSk6CisgICAgICAgIChld2tfdmlld19iYWNrX3Bvc3NpYmxlKToK
KyAgICAgICAgKGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUpOgorICAgICAgICAoZXdrX3ZpZXdf
bmF2aWdhdGVfcG9zc2libGUpOgorICAgICAgICAoZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0
KToKKyAgICAgICAgKGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldCk6CisgICAgICAgIChld2tf
dmlld19oaXN0b3J5X2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX2dldCk6CisgICAgICAg
IChld2tfdmlld196b29tX3NldCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc21vb3Ro
X3NjYWxlX2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3Nl
dCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCk6CisgICAgICAgIChld2tfdmlld196b29tX2FuaW1h
dGVkX21hcmtfZW5kKToKKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJy
ZW50KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKToKKyAgICAg
ICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21f
dGV4dF9vbmx5X2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX3RleHRfb25seV9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24pOgorICAgICAgICAoZXdrX3ZpZXdf
cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOgorICAgICAgICAoZXdrX3ZpZXdfaW1oX2dldCk6
CisgICAgICAgIChld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbCk6CisgICAgICAgIChld2tfdmll
d19lbmFibGVfcmVuZGVyKToKKyAgICAgICAgKGV3a192aWV3X2Rpc2FibGVfcmVuZGVyKToKKyAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9nZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ191c2VyX2FnZW50X3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3Vz
ZXJfc3R5bGVzaGVldF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxl
c2hlZXRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX3NldCk6Cisg
ICAgICAgIChld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19nZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19nZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX2dldCk6CisgICAgICAgIChld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9wbHVnaW5zX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9w
bHVnaW5zX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0
dGVuaW5nX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0
dGVuaW5nX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29w
ZW5fZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dz
X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRv
d3Nfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX3NldCk6
CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3NpbmdfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19jYXJldF9icm93c2luZ19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9i
cm93c2luZ19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21f
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldCk6Cisg
ICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KToKKyAgICAgICAg
KGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0
dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfZGV2ZWxvcGVyX2V4dHJhc19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19m
b250X21pbmltdW1fc2l6ZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21p
bmltdW1fc2l6ZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1f
bG9naWNhbF9zaXplX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11
bV9sb2dpY2FsX3NpemVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZh
dWx0X3NpemVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3Np
emVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX3NldCk6
CisgICAgICAgIChld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldCk6CisgICAgICAgIChld2tf
dmlld19mb250X2ZhbWlseV9uYW1lX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3Nw
YXRpYWxfbmF2aWdhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFs
X25hdmlnYXRpb25fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFn
ZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldCk6Cisg
ICAgICAgIChld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19s
b2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX3NldCk6CisgICAgICAgIChld2tfdmlld19z
ZXR0aW5nX21pbmltdW1fdGltZXJfaW50ZXJ2YWxfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc21h
cnRfZGF0YV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVwYWludHNfZ2V0KToKKyAgICAgICAg
KGV3a192aWV3X3Njcm9sbF9yZXF1ZXN0c19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVwYWlu
dF9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUpOgor
ICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKToKKyAgICAgICAgKGV3a192aWV3X3Bh
aW50X2NvbnRleHRfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZSk6
CisgICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3NhdmUpOgorICAgICAgICAoZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRl
eHRfY2xpcCk6CisgICAgICAgIChld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KToKKyAgICAg
ICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMpOgorICAgICAgICAoZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9zY2FsZSk6CisgICAgICAgIChld2tfdmlld19wYWludF9jb250
ZXh0X3RyYW5zbGF0ZSk6CisgICAgICAgIChld2tfdmlld19wYWludCk6CisgICAgICAgIChld2tf
dmlld19wYWludF9jb250ZW50cyk6CisgICAgICAgIChld2tfdmlld19yZWFkeSk6CisgICAgICAg
IChld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Rp
dGxlX3NldCk6CisgICAgICAgIChld2tfdmlld191cmlfY2hhbmdlZCk6CisgICAgICAgIChld2tf
dmlld19sb2FkX3N0YXJ0ZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0
YXJ0ZWQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbCk6CisgICAgICAgIChl
d2tfdmlld19sb2FkX3Nob3cpOgorICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfbWFpbl9jbGVhcmVk
KToKKyAgICAgICAgKGV3a192aWV3X2ZyYW1lX21haW5faWNvbl9yZWNlaXZlZCk6CisgICAgICAg
IChld2tfdmlld19sb2FkX2ZpbmlzaGVkKToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfZXJyb3Ip
OgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKToKKyAgICAgICAgKGV3
a192aWV3X3Jlc3RvcmVfc3RhdGUpOgorICAgICAgICAoZXdrX3ZpZXdfd2luZG93X2NyZWF0ZSk6
CisgICAgICAgIChld2tfdmlld193aW5kb3dfY2xvc2UpOgorICAgICAgICAoZXdrX3ZpZXdfbW91
c2VfbGlua19ob3Zlcl9pbik6CisgICAgICAgIChld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291
dCk6CisgICAgICAgIChld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldCk6CisgICAgICAgIChl
d2tfdmlld190b29sYmFyc192aXNpYmxlX2dldCk6CisgICAgICAgIChld2tfdmlld19zdGF0dXNi
YXJfdmlzaWJsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0
KToKKyAgICAgICAgKGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3NldCk6CisgICAgICAgIChld2tf
dmlld19zY3JvbGxiYXJzX3Zpc2libGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Njcm9sbGJh
cnNfdmlzaWJsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldCk6
CisgICAgICAgIChld2tfdmlld19tZW51YmFyX3Zpc2libGVfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X3Rvb2x0aXBfdGV4dF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkX2NvbnNvbGVfbWVz
c2FnZSk6CisgICAgICAgIChld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydCk6CisgICAgICAg
IChld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKToKKyAgICAgICAgKGV3a192aWV3X3J1
bl9qYXZhc2NyaXB0X3Byb21wdCk6CisgICAgICAgIChld2tfdmlld19zaG91bGRfaW50ZXJydXB0
X2phdmFzY3JpcHQpOgorICAgICAgICAoZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEp
OgorICAgICAgICAoZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwpOgorICAgICAgICAoZXdrX3ZpZXdf
cmVwYWludCk6CisgICAgICAgIChld2tfdmlld19zY3JvbGwpOgorICAgICAgICAoZXdrX3ZpZXdf
Y29yZV9wYWdlX2dldCk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9jcmVhdGUpOgorICAgICAg
ICAoZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZSk6CisgICAgICAgIChld2tfdmlld19wb3B1cF9uZXcp
OgorICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfZGVzdHJveSk6CisgICAgICAgIChld2tfdmlld19w
b3B1cF9zZWxlY3RlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdCk6
CisgICAgICAgIChld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFyKToKKyAgICAgICAgKGV3
a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldCk6CisgICAgICAgIChld2tfdmll
d196b29tX3JhbmdlX21heF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldCk6CisgICAgICAgIChld2tfdmlld19kaWRfZmly
c3RfdmlzdWFsbHlfbm9uZW1wdHlfbGF5b3V0KToKKyAgICAgICAgKGV3a192aWV3X2Rpc3BhdGNo
X2RpZF9maW5pc2hfbG9hZGluZyk6CisgICAgICAgIChld2tfdmlld190cmFuc2l0aW9uX3RvX2Nv
bW1pdGVkX2Zvcl9uZXdwYWdlKToKKyAgICAgICAgKGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5
X2RlY2lzaW9uKToKKyAgICAgICAgKGV3a192aWV3X2pzX29iamVjdF9hZGQpOgorICAgICAgICAo
ZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKToKKyAgICAgICAgKGV3a192aWV3X3BhZ2Vf
cmVjdF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldCk6CisgICAgICAgIChld2tfdmll
d19tb2RlX3NldCk6CisgICAgICAgIChld2tfdmlld19tb2RlX2dldCk6CisgICAgICAgIChld2tf
dmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKToKKyAgICAgICAgKGV3a192aWV3
X2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZCk6CisgICAgICAgICogZXdrL2V3a192aWV3
X3NpbmdsZS5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX29uX2RlbCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xl
X3NtYXJ0X2JhY2tpbmdfc3RvcmVfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21h
cnRfcmVzaXplKToKKyAgICAgICAgKF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cCk6CisgICAg
ICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdf
NGJfbW92ZV9saW5lX2xlZnQpOgorICAgICAgICAoX2V3a192aWV3XzRiX21vdmVfbGluZV9yaWdo
dCk6CisgICAgICAgIChfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fbGVmdCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fcmlnaHQpOgorICAgICAgICAoX2V3a192aWV3XzRiX21v
dmVfcmVnaW9uKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2lu
Z2xlKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfc2Nyb2xsc19wcm9jZXNzKToK
KyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6CisgICAg
ICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zZXQpOgorICAgICAgICAoX2V3
a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2JnX2NvbG9yX3NldCk6CisgICAgICAgIChld2tfdmll
d19zaW5nbGVfc21hcnRfc2V0KToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfY2xh
c3NfbmV3KToKKyAgICAgICAgKGV3a192aWV3X3NpbmdsZV9hZGQpOgorICAgICAgICAqIGV3ay9l
d2tfdmlld190aWxlZC5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKToK
KyAgICAgICAgKF9ld2tfdmlld190aWxlZF91cGRhdGVzX3Byb2Nlc3NfcHJlKToKKyAgICAgICAg
KF9ld2tfdmlld190aWxlZF9zbWFydF9iYWNraW5nX3N0b3JlX2FkZCk6CisgICAgICAgIChfZXdr
X3ZpZXdfdGlsZWRfY29udGVudHNfc2l6ZV9jaGFuZ2VkX2NiKToKKyAgICAgICAgKF9ld2tfdmll
d190aWxlZF9zbWFydF9hZGQpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9s
bHNfcHJvY2Vzcyk6CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcmVwYWludHNfcHJv
Y2Vzcyk6CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfY29udGVudHNfcmVzaXplKToK
KyAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3NldCk6CisgICAgICAgIChfZXdr
X3ZpZXdfdGlsZWRfc21hcnRfem9vbV93ZWFrX3NldCk6CisgICAgICAgIChfZXdrX3ZpZXdfdGls
ZWRfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQpOgorICAgICAgICAoX2V3a192aWV3
X3RpbGVkX3NtYXJ0X2ZsdXNoKToKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVf
cmVuZGVyX3JlZ2lvbik6CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRl
cl9yZWxhdGl2ZV9yYWRpdXMpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9y
ZW5kZXJfY2FuY2VsKToKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9kaXNhYmxlX3Jl
bmRlcik6CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZW5hYmxlX3JlbmRlcik6Cisg
ICAgICAgIChld2tfdmlld190aWxlZF9zbWFydF9zZXQpOgorICAgICAgICAoX2V3a192aWV3X3Rp
bGVkX3NtYXJ0X2NsYXNzX25ldyk6CisgICAgICAgIChld2tfdmlld190aWxlZF9hZGQpOgorICAg
ICAgICAoZXdrX3ZpZXdfdGlsZWRfdW51c2VkX2NhY2hlX2dldCk6CisgICAgICAgIChld2tfdmll
d190aWxlZF91bnVzZWRfY2FjaGVfc2V0KToKKyAgICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0
dXJlcy5jcHA6CisgICAgICAgIChld2tfd2luZG93X2ZlYXR1cmVzX3VucmVmKToKKyAgICAgICAg
KGV3a193aW5kb3dfZmVhdHVyZXNfcmVmKToKKyAgICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNf
Ym9vbF9wcm9wZXJ0eV9nZXQpOgorICAgICAgICAoZXdrX3dpbmRvd19mZWF0dXJlc19pbnRfcHJv
cGVydHlfZ2V0KToKKyAgICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZSk6
CisKKzIwMTEtMDktMjAgIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lv
bi5tb2JpPgorCiAgICAgICAgIFtFRkxdIERvbid0IHRyeSB0byBmcmVlIHVzZXItcHJvdmlkZWQg
bGlzdAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njgz
NTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAKaW5kZXggYTMwYThiMTZlNjk4ZjhhMjVlMzIzM2Y0ODhhZDMyYmU5YzIwOGU4
YS4uMjQzNTk1NjhkOGFhZTYzZjMzMGYwNjZlNzllZjYwOTk1NDUzMzFjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBA
IC00MDIsOCArNDAyLDggQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VR
dW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKIAogICAgIERhdGFiYXNl
RGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4oZGF0YWJhc2VOYW1lLCBvcmlnaW4pOwogICAgIHF1b3RhID0gZXdrX3ZpZXdf
ZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEobV92aWV3LAotICAgICAgICAgICAga2l0KGZyYW1lKSwg
ZGF0YWJhc2VOYW1lLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICBkZXRhaWxzLmN1cnJlbnRV
c2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBraXQoZnJhbWUpLCBkYXRhYmFzZU5hbWUudXRmOCgpLmRh
dGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFp
bHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKIAogICAgIC8qIGlm
IGNsaWVudCBkaWQgbm90IHNldCBxdW90YSwgYW5kIGRhdGFiYXNlIGlzIGJlaW5nIGNyZWF0ZWQg
bm93LCB0aGUKICAgICAgKiBkZWZhdWx0IHF1b3RhIGlzIGFwcGxpZWQKQEAgLTQzOCw3ICs0Mzgs
NyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFz
c1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZQogICAgICAgICByZXR1cm47CiAKICAgICBFSU5B
X0xJU1RfRlJFRShzZWxlY3RlZEZpbGVuYW1lcywgZmlsZW5hbWUpIHsKLSAgICAgICAgZmlsZW5h
bWVzLmFwcGVuZCgoY2hhciAqKWZpbGVuYW1lKTsKKyAgICAgICAgZmlsZW5hbWVzLmFwcGVuZCgo
Y2hhciopZmlsZW5hbWUpOwogICAgICAgICBmcmVlKGZpbGVuYW1lKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3Bw
CmluZGV4IDZhNGFjNWU0YWNmM2JmOTgxNmUwNjQ4ZmIwMjg2NTdjODVjMjU3NDAuLmZmY2I3MDYx
ZWVmYWNhMWExYzhhNGQzZDMyZThmNGQ4MzJmOGIxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcApAQCAtMzg1LDI3ICsz
ODUsMjcgQEAgYm9vbCBFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBzd2l0Y2ggKGtleUV2ZW50LT53aW5kb3dz
VmlydHVhbEtleUNvZGUoKSkgewogICAgICAgICBjYXNlIFZLX0xFRlQ6CiAgICAgICAgICAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LAotICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb25MZWZ0LAotICAgICAgICAgICAgICAgICAg
ICBrZXlFdmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVs
YXJpdHksCi0gICAgICAgICAgICAgICAgICAgIFVzZXJUcmlnZ2VyZWQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uTGVmdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVs
YXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVzZXJUcmlnZ2VyZWQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGNhc2UgVktfUklHSFQ6CiAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0
ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLAotICAgICAgICAgICAgICAgICAg
ICBEaXJlY3Rpb25SaWdodCwKLSAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXko
KSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAotICAgICAgICAgICAg
ICAgICAgICBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERpcmVjdGlvblJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3Rlckdy
YW51bGFyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclRy
aWdnZXJlZCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBWS19VUDoK
ICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtl
eSgpID8gRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQgOiBGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsCi0gICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbkJhY2t3YXJkLAot
ICAgICAgICAgICAgICAgICAgICBrZXlFdmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVs
YXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCi0gICAgICAgICAgICAgICAgICAgIFVzZXJUcmlnZ2Vy
ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uQmFj
a3dhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlFdmVudC0+
Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyVHJpZ2dlcmVkKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFZLX0RPV046CiAgICAgICAgICAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LAotICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb25Gb3J3YXJkLAotICAgICAgICAgICAgICAg
ICAgICBrZXlFdmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3Jh
bnVsYXJpdHksCi0gICAgICAgICAgICAgICAgICAgIFVzZXJUcmlnZ2VyZWQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uRm9yd2FyZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBQYXJh
Z3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVzZXJUcmlnZ2VyZWQpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggZDYxNDIzZTcxOGQ5
OGU1MTNmYTI3ODVlYWJhZWQyNGYwM2VjMWE1My4uYjJjY2NhYTUwYTU0NzIzNjk3OWJlZjFlM2M2
ZDdhNDAxMjYxZWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtNjgsNyArNjgsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GcmFtZUxvYWRl
ckNsaWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRFZmwoRXZhc19PYmplY3QgKnZpZXcpCitGcmFt
ZUxvYWRlckNsaWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcp
CiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fZnJhbWUoMCkKICAgICAsIG1fdXNlckFnZW50
KCIiKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBTdHJpbmcgY29tcG9zZVVzZXJBZ2VudCgp
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCBhZ2VudE9TKCksICIpIEFw
cGxlV2ViS2l0LyIsIHdlYktpdFZlcnNpb24sICIgKEtIVE1MLCBsaWtlIEdlY2tvKSBTYWZhcmkv
Iiwgd2ViS2l0VmVyc2lvbik7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldEN1
c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcgJmFnZW50KQordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYWdlbnQpCiB7CiAgICAgbV9j
dXN0b21Vc2VyQWdlbnQgPSBhZ2VudDsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdl
dCkKIH0KIAogUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0
IEtVUkwmIGJhc2VVUkwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OndpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiAgICAgLy8g
bm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFj
awogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVu
dExvYWRlciAqbCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZENoYW5nZVRpdGxlKERv
Y3VtZW50TG9hZGVyKikKIHsKICAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcAppbmRleCA2
NGUwNDNlNjQzZTZlNmY2ZWUyMTgzZTI5N2RmZDIwOGNhZmUxOWI3Li5jOWU0MzI4ODcxMzc2YzVm
NjUwYTQwMWE3MzI5YjE0ZDUzZGE1MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ljb25EYXRhYmFzZUNsaWVudEVmbC5jcHAKQEAgLTEsNCAr
MSw0IEBACi0vKiAKKy8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKaW5k
ZXggYjk1ZDBhODhjMmIxMjgyNzUxMmU3Yjk1NzVhMzFjN2U1NWZhZDU5OS4uMTUxMzNmNTFjYTkz
Mjg1ZTg3MzdhNTc4Y2IzYzg5Zjg2YjJkNmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwuY3BwCkBAIC0xLDQgKzEsNCBAQAotLyogCisvKgogICogIENvcHlyaWdodCAoQykg
MjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2F1dGguY3BwCmluZGV4IDJhNmI0YTc5NTYyMjA3NGZhZjBmMzdhYWZmYTg2YTUwOTE5Y2NmODQu
LmE0Y2I5ZTZiN2Y3ZGY0MDAwMTcyN2U4NDRiYzUzOGU5MWVlOThjZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19hdXRoLmNwcApAQCAtMzEsNyArMzEsNyBAQCB2b2lkIGV3a19hdXRoX3Nob3dfZGlh
bG9nX2NhbGxiYWNrX3NldChFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBjYWxsYmFjaykK
ICNlbmRpZgogfQogCi12b2lkIGV3a19hdXRoX2NyZWRlbnRpYWxzX3NldChjaGFyICp1c2VybmFt
ZSwgY2hhciAqcGFzc3dvcmQsIHZvaWQgKmRhdGEpCit2b2lkIGV3a19hdXRoX2NyZWRlbnRpYWxz
X3NldChjaGFyKiB1c2VybmFtZSwgY2hhciogcGFzc3dvcmQsIHZvaWQqIGRhdGEpCiB7CiAjaWYg
VVNFKFNPVVApCiAgICAgZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQodXNlcm5hbWUsIHBh
c3N3b3JkLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0
aF9zb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcAppbmRl
eCAzOTBlOGJkMTU3ZGI1YWU2MWM1YzdkMjA5OGY1ZmE0MmUyY2ViNzAwLi4wOWYzZDBkYjFjNWQ3
OGM4MTVkYTJlN2UzZDE4NGE1NGNlOWFiZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2F1dGhfc291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoX3NvdXAuY3BwCkBAIC00MCw5ICs0MCw5IEBAIGV4dGVybiAiQyIgewogICovCiAKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfQXV0aF9EYXRhIHsKLSAgICBTb3VwTWVzc2FnZSAqbXNnOwotICAgIFNv
dXBBdXRoICphdXRoOwotICAgIFNvdXBTZXNzaW9uICpzZXNzaW9uOworICAgIFNvdXBNZXNzYWdl
KiBtc2c7CisgICAgU291cEF1dGgqIGF1dGg7CisgICAgU291cFNlc3Npb24qIHNlc3Npb247CiB9
IEV3a19BdXRoX0RhdGE7CiAKIHN0YXRpYyBFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBl
d2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayA9IDA7CkBAIC01NSwxNSArNTUsMTUgQEAgc3Rh
dGljIHZvaWQgZnJlZV9hdXRoX2RhdGEoRXdrX0F1dGhfRGF0YSopOwogR19ERUZJTkVfVFlQRV9X
SVRIX0NPREUoRXdrX1NvdXBfQXV0aF9EaWFsb2csIGV3a19hdXRoX3NvdXBfZGlhbG9nLCBHX1RZ
UEVfT0JKRUNULAogICAgICAgICAgICAgICAgICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNF
KFNPVVBfVFlQRV9TRVNTSU9OX0ZFQVRVUkUsIGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25f
ZmVhdHVyZV9pbml0KSkKIAotc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfY2xhc3Nf
aW5pdChFd2tfU291cF9BdXRoX0RpYWxvZ0NsYXNzICprbGFzcykKK3N0YXRpYyB2b2lkIGV3a19h
dXRoX3NvdXBfZGlhbG9nX2NsYXNzX2luaXQoRXdrX1NvdXBfQXV0aF9EaWFsb2dDbGFzcyoga2xh
c3MpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX2luaXQoRXdrX1Nv
dXBfQXV0aF9EaWFsb2cgKmluc3RhbmNlKQorc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFs
b2dfaW5pdChFd2tfU291cF9BdXRoX0RpYWxvZyogaW5zdGFuY2UpCiB7CiB9CiAKLXN0YXRpYyB2
b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9u
RmVhdHVyZUludGVyZmFjZSAqZmVhdHVyZV9pbnRlcmZhY2UsIGdwb2ludGVyIGludGVyZmFjZV9k
YXRhKQorc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2lu
aXQoU291cFNlc3Npb25GZWF0dXJlSW50ZXJmYWNlKiBmZWF0dXJlX2ludGVyZmFjZSwgZ3BvaW50
ZXIgaW50ZXJmYWNlX2RhdGEpCiB7CiAgICAgZmVhdHVyZV9pbnRlcmZhY2UtPmF0dGFjaCA9IGF0
dGFjaDsKICAgICBmZWF0dXJlX2ludGVyZmFjZS0+ZGV0YWNoID0gZGV0YWNoOwpAQCAtNzQsMjcg
Kzc0LDI3IEBAIHZvaWQgZXdrX2F1dGhfc291cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdr
X0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sgY2FsbGJhCiAgICAgZXdrX2F1dGhfc2hvd19kaWFs
b2dfY2FsbGJhY2sgPSBjYWxsYmFjazsKIH0KIAotdm9pZCBld2tfYXV0aF9zb3VwX2NyZWRlbnRp
YWxzX3NldChjb25zdCBjaGFyICp1c2VybmFtZSwgY29uc3QgY2hhciAqcGFzc3dvcmQsIHZvaWQg
KmRhdGEpCit2b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIqIHVz
ZXJuYW1lLCBjb25zdCBjaGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSkKIHsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV3a19BdXRoX0RhdGEgKmF1dGhfZGF0YSA9IChF
d2tfQXV0aF9EYXRhICopZGF0YTsKKyAgICBFd2tfQXV0aF9EYXRhKiBhdXRoX2RhdGEgPSAoRXdr
X0F1dGhfRGF0YSopZGF0YTsKICAgICBzb3VwX2F1dGhfYXV0aGVudGljYXRlKGF1dGhfZGF0YS0+
YXV0aCwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKICAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNz
YWdlKGF1dGhfZGF0YS0+c2Vzc2lvbiwgYXV0aF9kYXRhLT5tc2cpOwogICAgIGZyZWVfYXV0aF9k
YXRhKGF1dGhfZGF0YSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNlc3Npb25fYXV0aGVudGljYXRlKFNv
dXBTZXNzaW9uICpzZXNzaW9uLCBTb3VwTWVzc2FnZSAqbXNnLCBTb3VwQXV0aCAqYXV0aCwgZ2Jv
b2xlYW4gcmV0cnlpbmcsIGdwb2ludGVyIC8qIHVzZXJfZGF0YSAqLykKK3N0YXRpYyB2b2lkIHNl
c3Npb25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbXNn
LCBTb3VwQXV0aCogYXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcsIGdwb2ludGVyIC8qIHVzZXJfZGF0
YSAqLykKIHsKLSAgICBTb3VwVVJJICp1cmk7Ci0gICAgRXdrX0F1dGhfRGF0YSAqYXV0aF9kYXRh
OwotICAgIGNvbnN0IGNoYXIgKnJlYWxtOworICAgIFNvdXBVUkkqIHVyaTsKKyAgICBFd2tfQXV0
aF9EYXRhKiBhdXRoX2RhdGE7CisgICAgY29uc3QgY2hhciogcmVhbG07CiAKICAgICBpZiAoIWV3
a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRo
X2RhdGEgPSAoRXdrX0F1dGhfRGF0YSAqKWNhbGxvYygxLCBzaXplb2YoRXdrX0F1dGhfRGF0YSkp
OworICAgIGF1dGhfZGF0YSA9IChFd2tfQXV0aF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19B
dXRoX0RhdGEpKTsKIAogICAgIGlmICghYXV0aF9kYXRhKSB7CiAgICAgICAgIENSSVRJQ0FMKCJj
b3VsZCBub3QgYWxsb2NhdGUgRXdrX0F1dGhfRGF0YSIpOwpAQCAtMTE4LDcgKzExOCw3IEBAIHN0
YXRpYyB2b2lkIHNlc3Npb25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uICpzZXNzaW9uLCBTb3Vw
TWVzc2FnZSAqbXNnLCBTb3VwQXV0CiAgICAgZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2so
cmVhbG0sIHNvdXBfdXJpX3RvX3N0cmluZyh1cmksIFRSVUUpLCBhdXRoX2RhdGEpOwogfQogCi1z
dGF0aWMgdm9pZCBmcmVlX2F1dGhfZGF0YShFd2tfQXV0aF9EYXRhICphdXRoX2RhdGEpCitzdGF0
aWMgdm9pZCBmcmVlX2F1dGhfZGF0YShFd2tfQXV0aF9EYXRhKiBhdXRoX2RhdGEpCiB7CiAgICAg
Z19vYmplY3RfdW5yZWYoYXV0aF9kYXRhLT5tc2cpOwogICAgIGdfb2JqZWN0X3VucmVmKGF1dGhf
ZGF0YS0+c2Vzc2lvbik7CkBAIC0xMjYsMTQgKzEyNiwxNCBAQCBzdGF0aWMgdm9pZCBmcmVlX2F1
dGhfZGF0YShFd2tfQXV0aF9EYXRhICphdXRoX2RhdGEpCiAgICAgZnJlZShhdXRoX2RhdGEpOwog
fQogCi1zdGF0aWMgdm9pZCBhdHRhY2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3Vw
U2Vzc2lvbiAqc2Vzc2lvbikKK3N0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUq
IG1hbmFnZXIsIFNvdXBTZXNzaW9uKiBzZXNzaW9uKQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
c2Vzc2lvbiwgImF1dGhlbnRpY2F0ZSIsIEdfQ0FMTEJBQ0soc2Vzc2lvbl9hdXRoZW50aWNhdGUp
LCBtYW5hZ2VyKTsKIH0KIAotc3RhdGljIHZvaWQgZGV0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSAq
bWFuYWdlciwgU291cFNlc3Npb24gKnNlc3Npb24pCitzdGF0aWMgdm9pZCBkZXRhY2goU291cFNl
c3Npb25GZWF0dXJlKiBtYW5hZ2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikKIHsKLSAgICBnX3Np
Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoc2Vzc2lvbiwgKHZvaWQgKilzZXNzaW9u
X2F1dGhlbnRpY2F0ZSwgbWFuYWdlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKHNlc3Npb24sICh2b2lkKilzZXNzaW9uX2F1dGhlbnRpY2F0ZSwgbWFuYWdlcik7
CiB9CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19jb250ZXh0bWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRl
eHRtZW51LmNwcAppbmRleCA2ZmFmZmM4ZTdmZjdhNjAxZTViNzg2Y2RiNTVhNjNlZDI2Y2FkMjBi
Li44NTc5MjZiNzg5NjhjNGQ0MTk0MGYzZDQxZGZlY2JjMjA4OTgyZTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcApAQCAtMzgsMTEgKzM4LDExIEBACiBzdHJ1
Y3QgX0V3a19Db250ZXh0X01lbnUgewogICAgIHVuc2lnbmVkIGludCBfX3JlZjsgLyoqPCB0aGUg
cmVmZXJlbmNlIGNvdW50IG9mIHRoZSBvYmplY3QgKi8KICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKLSAgICBXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXIgKmNvbnRyb2xsZXI7IC8qKjwg
dGhlIFdlYkNvcmUncyBvYmplY3Qgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHRoZSBjb250ZXh0
IG1lbnUgKi8KKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXI7
IC8qKjwgdGhlIFdlYkNvcmUncyBvYmplY3Qgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHRoZSBj
b250ZXh0IG1lbnUgKi8KICNlbmRpZgotICAgIEV2YXNfT2JqZWN0ICp2aWV3OyAvKio8IHRoZSB2
aWV3IG9iamVjdCAqLworICAgIEV2YXNfT2JqZWN0KiB2aWV3OyAvKio8IHRoZSB2aWV3IG9iamVj
dCAqLwogCi0gICAgRWluYV9MaXN0ICppdGVtczsgLyoqPCB0aGUgbGlzdCBvZiBpdGVtcyAqLwor
ICAgIEVpbmFfTGlzdCogaXRlbXM7IC8qKjwgdGhlIGxpc3Qgb2YgaXRlbXMgKi8KIH07CiAKIC8q
KgpAQCAtNTMsMjMgKzUzLDIzIEBAIHN0cnVjdCBfRXdrX0NvbnRleHRfTWVudV9JdGVtIHsKICAg
ICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlOyAvKio8IGNvbnRhaW5zIHRoZSB0eXBl
IG9mIHRoZSBpdGVtICovCiAgICAgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gYWN0aW9uOyAvKio8
IGNvbnRhaW5zIHRoZSBhY3Rpb24gb2YgdGhlIGl0ZW0gKi8KIAotICAgIGNvbnN0IGNoYXIgKnRp
dGxlOyAvKio8IGNvbnRhaW5zIHRoZSB0aXRsZSBvZiB0aGUgaXRlbSAqLwotICAgIEV3a19Db250
ZXh0X01lbnUgKnN1Ym1lbnU7IC8qKjwgY29udGFpbnMgdGhlIHBvaW50ZXIgdG8gdGhlIHN1Ym1l
bnUgb2YgdGhlIGl0ZW0gKi8KKyAgICBjb25zdCBjaGFyKiB0aXRsZTsgLyoqPCBjb250YWlucyB0
aGUgdGl0bGUgb2YgdGhlIGl0ZW0gKi8KKyAgICBFd2tfQ29udGV4dF9NZW51KiBzdWJtZW51OyAv
Kio8IGNvbnRhaW5zIHRoZSBwb2ludGVyIHRvIHRoZSBzdWJtZW51IG9mIHRoZSBpdGVtICovCiAK
LSAgICBFaW5hX0Jvb2wgY2hlY2tlZDoxOwotICAgIEVpbmFfQm9vbCBlbmFibGVkOjE7CisgICAg
RWluYV9Cb29sIGNoZWNrZWQgOiAxOworICAgIEVpbmFfQm9vbCBlbmFibGVkIDogMTsKIH07CiAK
LXZvaWQgZXdrX2NvbnRleHRfbWVudV9yZWYoRXdrX0NvbnRleHRfTWVudSAqbWVudSkKK3ZvaWQg
ZXdrX2NvbnRleHRfbWVudV9yZWYoRXdrX0NvbnRleHRfTWVudSogbWVudSkKIHsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihtZW51KTsKICAgICBtZW51LT5fX3JlZisrOwogfQogCi12
b2lkIGV3a19jb250ZXh0X21lbnVfdW5yZWYoRXdrX0NvbnRleHRfTWVudSAqbWVudSkKK3ZvaWQg
ZXdrX2NvbnRleHRfbWVudV91bnJlZihFd2tfQ29udGV4dF9NZW51KiBtZW51KQogewogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG1lbnUpOwotICAgIHZvaWQgKml0ZW07CisgICAgdm9p
ZCogaXRlbTsKIAogICAgIGlmICgtLW1lbnUtPl9fcmVmKQogICAgICAgICByZXR1cm47CkBAIC04
MCwzMCArODAsMzAgQEAgdm9pZCBld2tfY29udGV4dF9tZW51X3VucmVmKEV3a19Db250ZXh0X01l
bnUgKm1lbnUpCiAgICAgZnJlZShtZW51KTsKIH0KIAotRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfZGVzdHJveShFd2tfQ29udGV4dF9NZW51ICptZW51KQorRWluYV9Cb29sIGV3a19jb250ZXh0
X21lbnVfZGVzdHJveShFd2tfQ29udGV4dF9NZW51KiBtZW51KQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBFSU5B
X0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJv
bGxlciwgRUlOQV9GQUxTRSk7CiAgICAgbWVudS0+Y29udHJvbGxlci0+Y2xlYXJDb250ZXh0TWVu
dSgpOwogICAgIHJldHVybiBFSU5BX1RSVUU7Ci0jZWxzZSAKKyNlbHNlCiAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CiAjZW5kaWYKIH0KIAotY29uc3QgRWluYV9MaXN0ICpld2tfY29udGV4dF9tZW51
X2l0ZW1fbGlzdF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSAqbykKK2NvbnN0IEVpbmFfTGlz
dCogZXdrX2NvbnRleHRfbWVudV9pdGVtX2xpc3RfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUq
IG8pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG8sIDApOwogCiAgICAg
cmV0dXJuIG8tPml0ZW1zOwogfQogCi1Fd2tfQ29udGV4dF9NZW51X0l0ZW0gKmV3a19jb250ZXh0
X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwKLSAgICAgICAg
RXdrX0NvbnRleHRfTWVudV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51ICpzdWJtZW51
LAotICAgICAgICBjb25zdCBjaGFyICp0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9v
bCBlbmFibGVkKQorRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1f
bmV3KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24gYWN0
aW9uLCBFd2tfQ29udGV4dF9NZW51KiBzdWJtZW51LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hl
Y2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAgRXdrX0NvbnRleHRfTWVudV9JdGVtICpp
dGVtID0gKEV3a19Db250ZXh0X01lbnVfSXRlbSAqKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7Cisg
ICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gKEV3a19Db250ZXh0X01lbnVfSXRlbSop
IG1hbGxvYyhzaXplb2YoKml0ZW0pKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiAw
OwogCkBAIC0xMTcsNyArMTE3LDcgQEAgRXdrX0NvbnRleHRfTWVudV9JdGVtICpld2tfY29udGV4
dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUKICAgICByZXR1
cm4gaXRlbTsKIH0KIAotRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoRXdr
X0NvbnRleHRfTWVudSAqbWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKQorRWluYV9C
b29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoRXdrX0NvbnRleHRfTWVudSogbWVudSwg
RXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBFSU5BX0ZBTFNFKTsK
QEAgLTEzNCw3ICsxMzQsNyBAQCBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVj
dChFd2tfQ29udGV4dF9NZW51ICptZW51LCBFd2tfQ29udGV4dF9NZW51XwogI2VuZGlmCiB9CiAK
LXZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVtICpp
dGVtKQordm9pZCBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShFd2tfQ29udGV4dF9NZW51X0l0
ZW0qIGl0ZW0pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oaXRlbSk7CiAKQEAg
LTE0Miw2NSArMTQyLDY1IEBAIHZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUoRXdrX0Nv
bnRleHRfTWVudV9JdGVtICppdGVtKQogICAgIGZyZWUoaXRlbSk7CiB9CiAKLUV3a19Db250ZXh0
X01lbnVfSXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW0gKm8pCitFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBld2tfY29u
dGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvKQog
ewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCBFV0tfQUNUSU9OX1RZUEUp
OwogICAgIHJldHVybiBvLT50eXBlOwogfQogCi1FaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9p
dGVtX3R5cGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRXdrX0NvbnRleHRfTWVudV9J
dGVtX1R5cGUgdHlwZSkKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQo
RXdrX0NvbnRleHRfTWVudV9JdGVtKiBvLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBl
KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCBFSU5BX0ZBTFNFKTsK
ICAgICBvLT50eXBlID0gdHlwZTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1Fd2tfQ29u
dGV4dF9NZW51X0FjdGlvbiBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBF
d2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pCitFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBld2tfY29u
dGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG8p
CiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG8sIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfTk9fQUNUSU9OKTsKICAgICByZXR1cm4gby0+YWN0aW9uOwogfQogCi1FaW5h
X0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9J
dGVtICpvLCBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24pCitFaW5hX0Jvb2wgZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvLCBFd2tf
Q29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKG8sIEVJTkFfRkFMU0UpOwogICAgIG8tPmFjdGlvbiA9IGFjdGlvbjsKICAgICBy
ZXR1cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyICpld2tfY29udGV4dF9tZW51X2l0ZW1f
dGl0bGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbykKK2NvbnN0IGNoYXIqIGV3
a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVt
KiBvKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvLCAwKTsKICAgICBy
ZXR1cm4gby0+dGl0bGU7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a19jb250ZXh0X21lbnVfaXRlbV90
aXRsZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBjb25zdCBjaGFyICp0aXRsZSkKK2Nv
bnN0IGNoYXIqIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQoRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBvLCBjb25zdCBjaGFyKiB0aXRsZSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwobywgMCk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZvLT50aXRs
ZSwgdGl0bGUpOwogICAgIHJldHVybiBvLT50aXRsZTsKIH0KIAotRWluYV9Cb29sIGV3a19jb250
ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8p
CitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19D
b250ZXh0X01lbnVfSXRlbSogbykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwobywgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIG8tPmNoZWNrZWQ7CiB9CiAKLUVpbmFfQm9v
bCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVt
ICpvLCBFaW5hX0Jvb2wgY2hlY2tlZCkKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1f
Y2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvLCBFaW5hX0Jvb2wgY2hlY2tlZCkK
IHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgRUlOQV9GQUxTRSk7CiAg
ICAgby0+Y2hlY2tlZCA9IGNoZWNrZWQ7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWlu
YV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChjb25zdCBFd2tfQ29udGV4
dF9NZW51X0l0ZW0gKm8pCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRf
Z2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogbykKIHsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwobywgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIG8tPmVuYWJsZWQ7
CiB9CiAKLUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0Nv
bnRleHRfTWVudV9JdGVtICpvLCBFaW5hX0Jvb2wgZW5hYmxlZCkKK0VpbmFfQm9vbCBld2tfY29u
dGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBvLCBFaW5h
X0Jvb2wgZW5hYmxlZCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywg
RUlOQV9GQUxTRSk7CiAgICAgby0+ZW5hYmxlZCA9IGVuYWJsZWQ7CkBAIC0yMjIsNyArMjIyLDcg
QEAgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4
dF9NZW51X0l0ZW0gKm8sIEVpbmFfQm9vbAogICoKICAqIEBub3RlIGVtaXRzIGEgc2lnbmFsICJj
b250ZXh0bWVudSxuZXciCiAgKi8KLUV3a19Db250ZXh0X01lbnUgKmV3a19jb250ZXh0X21lbnVf
bmV3KEV2YXNfT2JqZWN0ICp2aWV3LCBXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXIgKmNv
bnRyb2xsZXIpCitFd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X25ldyhFdmFzX09i
amVjdCogdmlldywgV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyKiBjb250cm9sbGVyKQog
ewogICAgIEV3a19Db250ZXh0X01lbnUqIG1lbnU7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHZpZXcsIDApOwpAQCAtMjU2LDcgKzI1Niw3IEBAIEV3a19Db250ZXh0X01lbnUg
KmV3a19jb250ZXh0X21lbnVfbmV3KEV2YXNfT2JqZWN0ICp2aWV3LCBXZWJDb3JlOjpDb250ZXh0
TWVudUNvCiAgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfdW5yZWYKICAqIEBzZWUgZXdrX2NvbnRl
eHRfbWVudV9kZXN0cm95CiAgKi8KLUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdr
X0NvbnRleHRfTWVudSAqbykKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdrX0Nv
bnRleHRfTWVudSogbykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywg
RUlOQV9GQUxTRSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLT52aWV3
LCAiY29udGV4dG1lbnUsZnJlZSIsIG8pOwpAQCAtMjc1LDE0ICsyNzUsMTQgQEAgRWluYV9Cb29s
IGV3a19jb250ZXh0X21lbnVfZnJlZShFd2tfQ29udGV4dF9NZW51ICpvKQogICoKICAqIEBzZWUg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldwogICovCi12b2lkIGV3a19jb250ZXh0X21lbnVfaXRl
bV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSAqbywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtICZj
b3JlKQordm9pZCBld2tfY29udGV4dF9tZW51X2l0ZW1fYXBwZW5kKEV3a19Db250ZXh0X01lbnUq
IG8sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYgY29yZSkKIHsKICAgICBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5
cGU+KGNvcmUudHlwZSgpKTsKICAgICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24gPSBz
dGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0FjdGlvbj4oY29yZS5hY3Rpb24oKSk7CiAKLSAg
ICBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm1lbnVfaXRlbSA9IGV3a19jb250ZXh0X21lbnVfaXRl
bV9uZXcKLSAgICAgICAgKHR5cGUsIGFjdGlvbiwgMCwgY29yZS50aXRsZSgpLnV0ZjgoKS5kYXRh
KCksIGNvcmUuY2hlY2tlZCgpLAotICAgICAgICAgY29yZS5lbmFibGVkKCkpOworICAgIEV3a19D
b250ZXh0X01lbnVfSXRlbSogbWVudV9pdGVtID0gZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlLCBhY3Rpb24s
IDAsIGNvcmUudGl0bGUoKS51dGY4KCkuZGF0YSgpLCBjb3JlLmNoZWNrZWQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlLmVuYWJsZWQoKSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4obWVudV9pdGVtKTsKIAogICAgIG8tPml0ZW1zID0g
ZWluYV9saXN0X2FwcGVuZChvLT5pdGVtcywgbWVudV9pdGVtKTsKQEAgLTMwMSw3ICszMDEsNyBA
QCB2b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSAqbywg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtCiAgKgogICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0
ZW1fbGlzdF9nZXQKICAqLwotRXdrX0NvbnRleHRfTWVudSAqZXdrX2NvbnRleHRfbWVudV9jdXN0
b21fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUgKm8pCitFd2tfQ29udGV4dF9NZW51KiBld2tf
Y29udGV4dF9tZW51X2N1c3RvbV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSogbykKIHsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobywgMCk7CiAKQEAgLTMxNiw3ICszMTYs
NyBAQCBFd2tfQ29udGV4dF9NZW51ICpld2tfY29udGV4dF9tZW51X2N1c3RvbV9nZXQoY29uc3Qg
RXdrX0NvbnRleHRfTWVudSAqbykKICAqCiAgKiBAcGFyYW0gbyB0aGUgY29udGV4dCBtZW51IG9i
amVjdAogICovCi12b2lkIGV3a19jb250ZXh0X21lbnVfc2hvdyhjb25zdCBFd2tfQ29udGV4dF9N
ZW51ICpvKQordm9pZCBld2tfY29udGV4dF9tZW51X3Nob3coY29uc3QgRXdrX0NvbnRleHRfTWVu
dSogbykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihvKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfY29va2llcy5jcHAKaW5kZXggNzlkNTUzZDNjOTgyM2E4ODY2MmNmODA0ZDlk
MjM2YmZjZWJkOGQ0Ny4uYWE5ZjJjODkxMThhOWYxNmI1MzFkMmM4YTgzMmY1MDY0MWRlYzM1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIAotRWluYV9Cb29sIGV3a19jb29raWVz
X2ZpbGVfc2V0KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorRWluYV9Cb29sIGV3a19jb29raWVzX2Zp
bGVfc2V0KGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogewogI2lmIFVTRShTT1VQKQotICAgIFNvdXBD
b29raWVKYXIgKmNvb2tpZUphciA9IDA7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0g
MDsKICAgICBpZiAoZmlsZW5hbWUpCiAgICAgICAgIGNvb2tpZUphciA9IHNvdXBfY29va2llX2ph
cl90ZXh0X25ldyhmaWxlbmFtZSwgRkFMU0UpOwogICAgIGVsc2UKQEAgLTUwLDggKzUwLDggQEAg
RWluYV9Cb29sIGV3a19jb29raWVzX2ZpbGVfc2V0KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCiAg
ICAgc291cF9jb29raWVfamFyX3NldF9hY2NlcHRfcG9saWN5KGNvb2tpZUphciwgU09VUF9DT09L
SUVfSkFSX0FDQ0VQVF9OT19USElSRF9QQVJUWSk7CiAKLSAgICBTb3VwU2Vzc2lvbiAqc2Vzc2lv
biA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIFNvdXBT
ZXNzaW9uRmVhdHVyZSAqb2xkamFyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24s
IFNPVVBfVFlQRV9DT09LSUVfSkFSKTsKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uRmVh
dHVyZSogb2xkamFyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQ
RV9DT09LSUVfSkFSKTsKICAgICBpZiAob2xkamFyKQogICAgICAgICBzb3VwX3Nlc3Npb25fcmVt
b3ZlX2ZlYXR1cmUoc2Vzc2lvbiwgb2xkamFyKTsKIApAQCAtNjcsMzAgKzY3LDMwIEBAIEVpbmFf
Qm9vbCBld2tfY29va2llc19maWxlX3NldChjb25zdCBjaGFyICpmaWxlbmFtZSkKIHZvaWQgZXdr
X2Nvb2tpZXNfY2xlYXIodm9pZCkKIHsKICNpZiBVU0UoU09VUCkKLSAgICBHU0xpc3QgKmw7Ci0g
ICAgR1NMaXN0ICpwOwotICAgIFNvdXBDb29raWVKYXIgKmNvb2tpZUphciA9IFdlYkNvcmU6OmRl
ZmF1bHRDb29raWVKYXIoKTsKKyAgICBHU0xpc3QqIGw7CisgICAgR1NMaXN0KiBwOworICAgIFNv
dXBDb29raWVKYXIqIGNvb2tpZUphciA9IFdlYkNvcmU6OmRlZmF1bHRDb29raWVKYXIoKTsKIAog
ICAgIGwgPSBzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKTsKICAgICBmb3Ig
KHAgPSBsOyBwOyBwID0gcC0+bmV4dCkKLSAgICAgICAgc291cF9jb29raWVfamFyX2RlbGV0ZV9j
b29raWUoY29va2llSmFyLCAoU291cENvb2tpZSAqKXAtPmRhdGEpOworICAgICAgICBzb3VwX2Nv
b2tpZV9qYXJfZGVsZXRlX2Nvb2tpZShjb29raWVKYXIsIChTb3VwQ29va2llKilwLT5kYXRhKTsK
IAogICAgIHNvdXBfY29va2llc19mcmVlKGwpOwogI2VuZGlmCiB9CiAKLUVpbmFfTGlzdCAqZXdr
X2Nvb2tpZXNfZ2V0X2FsbCh2b2lkKQorRWluYV9MaXN0KiBld2tfY29va2llc19nZXRfYWxsKHZv
aWQpCiB7Ci0gICAgRWluYV9MaXN0ICplbCA9IDA7CisgICAgRWluYV9MaXN0KiBlbCA9IDA7CiAj
aWYgVVNFKFNPVVApCi0gICAgR1NMaXN0ICpsOwotICAgIEdTTGlzdCAqcDsKLSAgICBTb3VwQ29v
a2llSmFyICpjb29raWVKYXIgPSBXZWJDb3JlOjpkZWZhdWx0Q29va2llSmFyKCk7CisgICAgR1NM
aXN0KiBsOworICAgIEdTTGlzdCogcDsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBX
ZWJDb3JlOjpkZWZhdWx0Q29va2llSmFyKCk7CiAKICAgICBsID0gc291cF9jb29raWVfamFyX2Fs
bF9jb29raWVzKGNvb2tpZUphcik7CiAgICAgZm9yIChwID0gbDsgcDsgcCA9IHAtPm5leHQpIHsK
LSAgICAgICAgU291cENvb2tpZSAqY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KHAt
PmRhdGEpOwotICAgICAgICBFd2tfQ29va2llICpjID0gc3RhdGljX2Nhc3Q8RXdrX0Nvb2tpZSo+
KG1hbGxvYyhzaXplb2YoKmMpKSk7CisgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRp
Y19jYXN0PFNvdXBDb29raWUqPihwLT5kYXRhKTsKKyAgICAgICAgRXdrX0Nvb2tpZSogYyA9IHN0
YXRpY19jYXN0PEV3a19Db29raWUqPihtYWxsb2Moc2l6ZW9mKCpjKSkpOwogICAgICAgICBjLT5u
YW1lID0gc3RyZHVwKGNvb2tpZS0+bmFtZSk7CiAgICAgICAgIGMtPnZhbHVlID0gc3RyZHVwKGNv
b2tpZS0+dmFsdWUpOwogICAgICAgICBjLT5kb21haW4gPSBzdHJkdXAoY29va2llLT5kb21haW4p
OwpAQCAtMTA2LDE5ICsxMDYsMTkgQEAgRWluYV9MaXN0ICpld2tfY29va2llc19nZXRfYWxsKHZv
aWQpCiAgICAgcmV0dXJuIGVsOwogfQogCi12b2lkIGV3a19jb29raWVzX2Nvb2tpZV9kZWwoRXdr
X0Nvb2tpZSAqY29va2llKQordm9pZCBld2tfY29va2llc19jb29raWVfZGVsKEV3a19Db29raWUq
IGNvb2tpZSkKIHsKICNpZiBVU0UoU09VUCkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tihjb29raWUpOwogICAgIEdTTGlzdCogbDsKICAgICBHU0xpc3QqIHA7Ci0gICAgU291cENvb2tp
ZUphciAqY29va2llSmFyID0gV2ViQ29yZTo6ZGVmYXVsdENvb2tpZUphcigpOwotICAgIFNvdXBD
b29raWUgKmMxID0gc291cF9jb29raWVfbmV3KAorICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUph
ciA9IFdlYkNvcmU6OmRlZmF1bHRDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llKiBjMSA9IHNv
dXBfY29va2llX25ldygKICAgICAgICAgY29va2llLT5uYW1lLCBjb29raWUtPnZhbHVlLCBjb29r
aWUtPmRvbWFpbiwgY29va2llLT5wYXRoLCAtMSk7CiAKICAgICBsID0gc291cF9jb29raWVfamFy
X2FsbF9jb29raWVzKGNvb2tpZUphcik7CiAgICAgZm9yIChwID0gbDsgcDsgcCA9IHAtPm5leHQp
IHsKLSAgICAgICAgU291cENvb2tpZSAqYzIgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4ocC0+
ZGF0YSk7CisgICAgICAgIFNvdXBDb29raWUqIGMyID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+
KHAtPmRhdGEpOwogICAgICAgICBpZiAoc291cF9jb29raWVfZXF1YWwoYzEsIGMyKSkgewogICAg
ICAgICAgICAgc291cF9jb29raWVfamFyX2RlbGV0ZV9jb29raWUoY29va2llSmFyLCBjMik7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIGV3a19jb29raWVzX2Nv
b2tpZV9kZWwoRXdrX0Nvb2tpZSAqY29va2llKQogI2VuZGlmCiB9CiAKLXZvaWQgZXdrX2Nvb2tp
ZXNfY29va2llX2ZyZWUoRXdrX0Nvb2tpZSAqY29va2llKQordm9pZCBld2tfY29va2llc19jb29r
aWVfZnJlZShFd2tfQ29va2llKiBjb29raWUpCiB7CiAjaWYgVVNFKFNPVVApCiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oY29va2llKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIGV3
a19jb29raWVzX2Nvb2tpZV9mcmVlKEV3a19Db29raWUgKmNvb2tpZSkKIHZvaWQgZXdrX2Nvb2tp
ZXNfcG9saWN5X3NldChFd2tfQ29va2llX1BvbGljeSBwKQogewogI2lmIFVTRShTT1VQKQotICAg
IFNvdXBDb29raWVKYXIgKmNvb2tpZUphciA9IFdlYkNvcmU6OmRlZmF1bHRDb29raWVKYXIoKTsK
KyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBXZWJDb3JlOjpkZWZhdWx0Q29va2llSmFy
KCk7CiAgICAgU291cENvb2tpZUphckFjY2VwdFBvbGljeSBwb2xpY3k7CiAKICAgICBwb2xpY3kg
PSBTT1VQX0NPT0tJRV9KQVJfQUNDRVBUX0FMV0FZUzsKQEAgLTE2OSw3ICsxNjksNyBAQCBFd2tf
Q29va2llX1BvbGljeSBld2tfY29va2llc19wb2xpY3lfZ2V0KHZvaWQpCiB7CiAgICAgRXdrX0Nv
b2tpZV9Qb2xpY3kgZXdrX3BvbGljeSA9IEVXS19DT09LSUVfSkFSX0FDQ0VQVF9BTFdBWVM7CiAj
aWYgVVNFKFNPVVApCi0gICAgU291cENvb2tpZUphciAqY29va2llSmFyID0gV2ViQ29yZTo6ZGVm
YXVsdENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IFdlYkNvcmU6
OmRlZmF1bHRDb29raWVKYXIoKTsKICAgICBTb3VwQ29va2llSmFyQWNjZXB0UG9saWN5IHBvbGlj
eTsKIAogICAgIHBvbGljeSA9IHNvdXBfY29va2llX2phcl9nZXRfYWNjZXB0X3BvbGljeShjb29r
aWVKYXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBjZDA3YmE5M2NhYzkz
MTQ0ZjBkNTYzYTlmNDVmMGYwNzE2OTk2ZGM3Li43NzFjNDU5NDhmZmRmMTU0MTU1ODFiNmI2ODg4
ZGJiNGVjYzM1OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNjMsMjUg
KzYzLDI1IEBAIHN0YXRpYyBjb25zdCBjaGFyIEVXS19GUkFNRV9UWVBFX1NUUltdID0gIkVXS19G
cmFtZSI7CiAKIHN0cnVjdCBFd2tfRnJhbWVfU21hcnRfRGF0YSB7CiAgICAgRXZhc19PYmplY3Rf
U21hcnRfQ2xpcHBlZF9EYXRhIGJhc2U7Ci0gICAgRXZhc19PYmplY3QgKnNlbGY7Ci0gICAgRXZh
c19PYmplY3QgKnZpZXc7CisgICAgRXZhc19PYmplY3QqIHNlbGY7CisgICAgRXZhc19PYmplY3Qq
IHZpZXc7CiAjaWZkZWYgRVdLX0ZSQU1FX0RFQlVHCi0gICAgRXZhc19PYmplY3QgKnJlZ2lvbjsK
KyAgICBFdmFzX09iamVjdCogcmVnaW9uOwogI2VuZGlmCi0gICAgV2ViQ29yZTo6RnJhbWUgKmZy
YW1lOwotICAgIGNvbnN0IGNoYXIgKnRpdGxlOwotICAgIGNvbnN0IGNoYXIgKnVyaTsKLSAgICBj
b25zdCBjaGFyICpuYW1lOworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZTsKKyAgICBjb25zdCBj
aGFyKiB0aXRsZTsKKyAgICBjb25zdCBjaGFyKiB1cmk7CisgICAgY29uc3QgY2hhciogbmFtZTsK
ICAgICBzdHJ1Y3QgewogICAgICAgICBFdmFzX0Nvb3JkIHcsIGg7CiAgICAgfSBjb250ZW50c19z
aXplOwotICAgIEVpbmFfQm9vbCB0ZXh0Wm9vbToxOwotICAgIEVpbmFfQm9vbCBlZGl0YWJsZTox
OworICAgIEVpbmFfQm9vbCB0ZXh0Wm9vbSA6IDE7CisgICAgRWluYV9Cb29sIGVkaXRhYmxlIDog
MTsKIH07CiAKIHN0cnVjdCBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSB7CiAgICAgRWluYV9JdGVy
YXRvciBiYXNlOwotICAgIEV2YXNfT2JqZWN0ICpvYmo7CisgICAgRXZhc19PYmplY3QqIG9iajsK
ICAgICB1bnNpZ25lZCBjdXJyZW50SW5kZXg7CiB9OwogCkBAIC05MCwxOCArOTAsMTggQEAgc3Ry
dWN0IEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lIHsKICNlbHNlCiAjZGVmaW5lIEVXS19GUkFNRV9U
WVBFX0NIRUNLKG8sIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIGNvbnN0IGNoYXIgKl90bXBfb3R5cGUgPSBldmFzX29i
amVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGNoYXIqIF90
bXBfb3R5cGUgPSBldmFzX29iamVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICBcCiAgICAg
ICAgIGlmIChFSU5BX1VOTElLRUxZKF90bXBfb3R5cGUgIT0gRVdLX0ZSQU1FX1RZUEVfU1RSKSkg
eyAgICAgICAgICBcCiAgICAgICAgICAgICBFSU5BX0xPR19DUklUICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKCIlcCAoJXMp
IGlzIG5vdCBvZiBhbiBld2tfZnJhbWUhIiwgbywgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
ICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51
bGwpIik7ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gX19WQV9BUkdT
X187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgfSB3aGlsZSAoMCkKICNlbmRpZgogCiAjZGVmaW5lIEVXS19GUkFNRV9TRF9H
RVQobywgcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEV3a19GcmFt
ZV9TbWFydF9EYXRhICpwdHIgPSAoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgKilldmFzX29iamVjdF9z
bWFydF9kYXRhX2dldChvKQorICAgIEV3a19GcmFtZV9TbWFydF9EYXRhICpwdHIgPSAoRXdrX0Zy
YW1lX1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pCiAKICNkZWZpbmUg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgcHRyLCAuLi4pICAgICAgICAgXAogICAgIEVX
S19GUkFNRV9UWVBFX0NIRUNLKG8sIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICBcCkBAIC0x
MTUsOSArMTE1LDkgQEAgc3RydWN0IEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lIHsKIHN0YXRpYyBF
dmFzX1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsK
IAogI2lmZGVmIEVXS19GUkFNRV9ERUJVRwotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfZnJhbWVf
ZGVidWcoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a19mcmFtZV9kZWJ1
ZyhFdmFzX09iamVjdCogbykKIHsKLSAgICBFdmFzX09iamVjdCAqY2xpcCwgKnBhcmVudDsKKyAg
ICBFdmFzX09iamVjdCogY2xpcCwgKiBwYXJlbnQ7CiAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBo
LCBjeCwgY3ksIGN3LCBjaDsKICAgICBpbnQgciwgZywgYiwgYSwgY3IsIGNnLCBjYiwgY2E7CiAK
QEAgLTE0MCwyMiArMTQwLDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX2ZyYW1lX2RlYnVn
KEV2YXNfT2JqZWN0ICpvKQogfQogI2VuZGlmCiAKLXN0YXRpYyBXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbCAqX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChXZWJDb3JlOjpGcmFtZSAqZnJh
bWUpCitzdGF0aWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIF9ld2tfZnJhbWVfbG9h
ZGVyX2VmbF9nZXQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0ICpraXQoV2ViQ29yZTo6RnJh
bWUgKmZyYW1lKQorc3RhdGljIGlubGluZSBFdmFzX09iamVjdCoga2l0KFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAqZmwgPSBfZXdrX2ZyYW1lX2xvYWRlcl9lZmxfZ2V0
KGZyYW1lKTsKKyAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogZmwgPSBfZXdrX2Zy
YW1lX2xvYWRlcl9lZmxfZ2V0KGZyYW1lKTsKICAgICBpZiAoIWZsKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gZmwtPndlYkZyYW1lKCk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3
a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXh0KEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lICpp
dCwgRXZhc19PYmplY3QgKipkYXRhKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NoaWxk
cmVuX2l0ZXJhdG9yX25leHQoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqIGl0LCBFdmFzX09iamVj
dCoqIGRhdGEpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oaXQtPm9iaiwgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJh
bWUsIEVJTkFfRkFMU0UpOwpAQCAtMTcxLDEyICsxNzEsMTIgQEAgc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25leHQoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUg
Kml0LAogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1zdGF0aWMgRXZhc19PYmplY3QgKl9l
d2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfZ2V0X2NvbnRhaW5lcihFaW5hX0l0ZXJhdG9yX0V3
a19GcmFtZSAqaXQpCitzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tfZnJhbWVfY2hpbGRyZW5faXRl
cmF0b3JfZ2V0X2NvbnRhaW5lcihFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQpCiB7CiAgICAg
cmV0dXJuIGl0LT5vYmo7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2
YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9hZGQoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVChvLCBzZCk7CiAKQEAgLTIzMywxNCArMjMz
LDE0IEBAIHN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2YXNfT2JqZWN0ICpvKQog
I2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfZGVsKEV2YXNfT2JqZWN0
ICpvKQorc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9kZWwoRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgV1JOKCJvPSVwIiwgbyk7IC8vIFhYWCBSRU1PVkUgTUUgTEFURVIKICAgICBFV0tfRlJB
TUVfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmIChzZCkgewogICAgICAgICBpZiAoc2QtPmZyYW1l
KSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAqZmxjID0gX2V3
a19mcmFtZV9sb2FkZXJfZWZsX2dldChzZC0+ZnJhbWUpOworICAgICAgICAgICAgV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmwqIGZsYyA9IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoc2Qt
PmZyYW1lKTsKICAgICAgICAgICAgIGZsYy0+c2V0V2ViRnJhbWUoMCk7CiAgICAgICAgICAgICBz
ZC0+ZnJhbWUtPmxvYWRlcigpLT5jYW5jZWxBbmRDbGVhcigpOwogICAgICAgICAgICAgc2QtPmZy
YW1lID0gMDsKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0
X2RlbChFdmFzX09iamVjdCAqbykKICAgICBfcGFyZW50X3NjLmRlbChvKTsKIH0KIAotc3RhdGlj
IHZvaWQgX2V3a19mcmFtZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoKQorc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9yZXNpemUoRXZh
c19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAgIEVXS19GUkFN
RV9TRF9HRVQobywgc2QpOwogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzZC0+YmFzZS5jbGlwcGVy
LCB3LCBoKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0
X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiAjZW5k
aWYKIH0KIAotc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9zZXQoRXZhc19TbWFydF9DbGFz
cyAqYXBpKQorc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9zZXQoRXZhc19TbWFydF9DbGFz
cyogYXBpKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KGFwaSk7
CiAgICAgYXBpLT5hZGQgPSBfZXdrX2ZyYW1lX3NtYXJ0X2FkZDsKQEAgLTI3NywxMCArMjc3LDEw
IEBAIHN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfc2V0KEV2YXNfU21hcnRfQ2xhc3MgKmFw
aSkKICAgICBhcGktPnJlc2l6ZSA9IF9ld2tfZnJhbWVfc21hcnRfcmVzaXplOwogfQogCi1zdGF0
aWMgaW5saW5lIEV2YXNfU21hcnQgKl9ld2tfZnJhbWVfc21hcnRfY2xhc3NfbmV3KHZvaWQpCitz
dGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9ld2tfZnJhbWVfc21hcnRfY2xhc3NfbmV3KHZvaWQp
CiB7CiAgICAgc3RhdGljIEV2YXNfU21hcnRfQ2xhc3Mgc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lO
SVRfTkFNRV9WRVJTSU9OKEVXS19GUkFNRV9UWVBFX1NUUik7Ci0gICAgc3RhdGljIEV2YXNfU21h
cnQgKnNtYXJ0ID0gMDsKKyAgICBzdGF0aWMgRXZhc19TbWFydCogc21hcnQgPSAwOwogCiAgICAg
aWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0KSkgewogICAgICAgICBldmFzX29iamVjdF9zbWFydF9j
bGlwcGVkX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CkBAIC0yOTEsMTcgKzI5MSwxNyBAQCBzdGF0
aWMgaW5saW5lIEV2YXNfU21hcnQgKl9ld2tfZnJhbWVfc21hcnRfY2xhc3NfbmV3KHZvaWQpCiAg
ICAgcmV0dXJuIHNtYXJ0OwogfQogCi1FdmFzX09iamVjdCAqZXdrX2ZyYW1lX3ZpZXdfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQorRXZhc19PYmplY3QqIGV3a19mcmFtZV92aWV3X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgMCk7CiAgICAgcmV0dXJuIHNkLT52aWV3OwogfQogCi1FaW5hX0l0ZXJhdG9yICpld2tfZnJh
bWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KEV2YXNfT2JqZWN0ICpvKQorRWluYV9JdGVyYXRvciog
ZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhFdmFzX09iamVjdCogbykKIHsKICAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7Ci0gICAgRWluYV9JdGVyYXRvcl9F
d2tfRnJhbWUgKml0ID0gKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lICopCi0gICAgICAgIGNhbGxv
YygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUpKTsKKyAgICBFaW5hX0l0ZXJhdG9y
X0V3a19GcmFtZSogaXQgPSAoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbGxvYygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tf
RnJhbWUpKTsKICAgICBpZiAoIWl0KQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMzE0LDcgKzMx
NCw3IEBAIEVpbmFfSXRlcmF0b3IgKmV3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcoRXZh
c19PYmplY3QgKm8pCiAgICAgcmV0dXJuICZpdC0+YmFzZTsKIH0KIAotRXZhc19PYmplY3QgKmV3
a19mcmFtZV9jaGlsZF9maW5kKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpuYW1lKQorRXZh
c19PYmplY3QqIGV3a19mcmFtZV9jaGlsZF9maW5kKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFy
KiBuYW1lKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobmFtZSwgMCk7CkBAIC0zMjMsMjkgKzMy
MywyOSBAQCBFdmFzX09iamVjdCAqZXdrX2ZyYW1lX2NoaWxkX2ZpbmQoRXZhc19PYmplY3QgKm8s
IGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgcmV0dXJuIGtpdChzZC0+ZnJhbWUtPnRyZWUoKS0+Zmlu
ZChXVEY6OkF0b21pY1N0cmluZyhzKSkpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9z
ZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVyaSkKK0VpbmFfQm9vbCBld2tfZnJhbWVf
dXJpX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXJpKQogewogICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBXZWJDb3JlOjpLVVJM
IGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJpKSk7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcShrdXJsKTsKLSAgICBXZWJDb3JlOjpGcmFtZUxv
YWRlciAqbG9hZGVyID0gc2QtPmZyYW1lLT5sb2FkZXIoKTsKKyAgICBXZWJDb3JlOjpGcmFtZUxv
YWRlciogbG9hZGVyID0gc2QtPmZyYW1lLT5sb2FkZXIoKTsKICAgICBsb2FkZXItPmxvYWQocmVx
LCBmYWxzZSk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciAqZXdrX2Zy
YW1lX3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBld2tfZnJhbWVf
dXJpX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIHNkLT51cmk7CiB9CiAKLWNvbnN0IGNoYXIg
KmV3a19mcmFtZV90aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBl
d2tfZnJhbWVfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICByZXR1cm4gc2QtPnRpdGxlOwogfQog
Ci1jb25zdCBjaGFyICpld2tfZnJhbWVfbmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitj
b25zdCBjaGFyKiBld2tfZnJhbWVfbmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAg
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogCkBAIC0zNjQsNyArMzY0
LDcgQEAgY29uc3QgY2hhciAqZXdrX2ZyYW1lX25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQogICAgIHJldHVybiBzZC0+bmFtZTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50
c19zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCAqdywgRXZhc19Db29y
ZCAqaCkKK0VpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8sIEV2YXNfQ29vcmQqIHcsIEV2YXNfQ29vcmQqIGgpCiB7CiAgICAgaWYgKHcpCiAg
ICAgICAgICp3ID0gMDsKQEAgLTM3OCw3ICszNzgsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2Nv
bnRlbnRzX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkICp3LCBFdmFz
XwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFt
ZV9jb250ZW50c19zZXRfaW50ZXJuYWwoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBj
aGFyICpjb250ZW50cywgc2l6ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0IGNoYXIgKm1pbWVfdHlw
ZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmJhc2VfdXJpLCBjb25zdCBjaGFy
ICp1bnJlYWNoYWJsZV91cmkpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfZnJhbWVfY29udGVudHNf
c2V0X2ludGVybmFsKEV3a19GcmFtZV9TbWFydF9EYXRhKiBzZCwgY29uc3QgY2hhciogY29udGVu
dHMsIHNpemVfdCBjb250ZW50c19zaXplLCBjb25zdCBjaGFyKiBtaW1lX3R5cGUsIGNvbnN0IGNo
YXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBiYXNlX3VyaSwgY29uc3QgY2hhciogdW5yZWFjaGFi
bGVfdXJpKQogewogICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oY29udGVudHMpOwogICAgIGlmIChj
b250ZW50c19zaXplIDwgMSB8fCBjb250ZW50c19zaXplID4gbGVuKQpAQCAtNDAwLDM2ICs0MDAs
MzYgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbChF
d2tfRnJhbWVfU21hcnRfRGF0YSAqc2QsIGNvbnMKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRl
bnRzLCBjb250ZW50c19zaXplKTsKICAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0
dXRlRGF0YQogICAgICAgICAoYnVmZmVyLnJlbGVhc2UoKSwKLSAgICAgICAgIFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChtaW1lX3R5cGUpLAotICAgICAgICAgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGVu
Y29kaW5nKSwKLSAgICAgICAgIGJhc2VLVVJMLCB1bnJlYWNoYWJsZUtVUkwpOworICAgICAgICBX
VEY6OlN0cmluZzo6ZnJvbVVURjgobWltZV90eXBlKSwKKyAgICAgICAgV1RGOjpTdHJpbmc6OmZy
b21VVEY4KGVuY29kaW5nKSwKKyAgICAgICAgYmFzZUtVUkwsIHVucmVhY2hhYmxlS1VSTCk7CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFzZUtVUkwpOwogCiAgICAgc2Qt
PmZyYW1lLT5sb2FkZXIoKS0+bG9hZChyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSwgZmFsc2UpOwog
ICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpjb250ZW50cywgc2l6ZV90IGNvbnRlbnRz
X3NpemUsIGNvbnN0IGNoYXIgKm1pbWVfdHlwZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0
IGNoYXIgKmJhc2VfdXJpKQorRWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19zZXQoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNfc2l6ZSwgY29u
c3QgY2hhciogbWltZV90eXBlLCBjb25zdCBjaGFyKiBlbmNvZGluZywgY29uc3QgY2hhciogYmFz
ZV91cmkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVJTkFfU0FGRVRZX09OX0ZBTFNFX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5B
X0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29udGVudHMsIEVJ
TkFfRkFMU0UpOwogICAgIHJldHVybiBfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbAot
ICAgICAgICAoc2QsIGNvbnRlbnRzLCBjb250ZW50c19zaXplLCBtaW1lX3R5cGUsIGVuY29kaW5n
LCBiYXNlX3VyaSwgMCk7CisgICAgICAgICAgICAgICAoc2QsIGNvbnRlbnRzLCBjb250ZW50c19z
aXplLCBtaW1lX3R5cGUsIGVuY29kaW5nLCBiYXNlX3VyaSwgMCk7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfZnJhbWVfY29udGVudHNfYWx0ZXJuYXRlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hh
ciAqY29udGVudHMsIHNpemVfdCBjb250ZW50c19zaXplLCBjb25zdCBjaGFyICptaW1lX3R5cGUs
IGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpiYXNlX3VyaSwgY29uc3QgY2hhciAq
dW5yZWFjaGFibGVfdXJpKQorRWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19hbHRlcm5hdGVf
c2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBjb250ZW50cywgc2l6ZV90IGNvbnRlbnRz
X3NpemUsIGNvbnN0IGNoYXIqIG1pbWVfdHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0
IGNoYXIqIGJhc2VfdXJpLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZV91cmkpCiB7CiAgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FG
RVRZX09OX0ZBTFNFX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29udGVudHMsIEVJTkFfRkFMU0UpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1bnJlYWNoYWJsZV91cmksIEVJTkFfRkFMU0Up
OwogICAgIHJldHVybiBfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbAotICAgICAgICAo
c2QsIGNvbnRlbnRzLCBjb250ZW50c19zaXplLCBtaW1lX3R5cGUsIGVuY29kaW5nLCBiYXNlX3Vy
aSwKLSAgICAgICAgIHVucmVhY2hhYmxlX3VyaSk7CisgICAgICAgICAgICAgICAoc2QsIGNvbnRl
bnRzLCBjb250ZW50c19zaXplLCBtaW1lX3R5cGUsIGVuY29kaW5nLCBiYXNlX3VyaSwKKyAgICAg
ICAgICAgICAgIHVucmVhY2hhYmxlX3VyaSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfc2Ny
aXB0X2V4ZWN1dGUoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnNjcmlwdCkKK0VpbmFfQm9v
bCBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHNj
cmlwdCkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFf
RkFMU0UpOwpAQCAtNDM4LDE0ICs0MzgsMTQgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9zY3JpcHRf
ZXhlY3V0ZShFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc2NyaXB0KQogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZWRpdGFibGVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV9lZGl0YWJsZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBzZC0+ZWRpdGFibGU7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfZnJhbWVfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZWRpdGFibGUp
CitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIGVkaXRhYmxlKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LCBFSU5BX0ZBTFNFKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2Vk
aXRhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVkaXRhYmxlKQogICAgIHJldHVy
biBFSU5BX1RSVUU7CiB9CiAKLWNoYXIgKmV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorY2hhciogZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIDApOwpAQCAtNDY3
LDcgKzQ2Nyw3IEBAIGNoYXIgKmV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQogICAgIHJldHVybiBzdHJkdXAocy5kYXRhKCkpOwogfQogCi1FaW5hX0Jvb2wgZXdr
X2ZyYW1lX3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJp
bmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGZvcndhcmQsIEVpbmFfQm9v
bCB3cmFwKQorRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVj
dCogbywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFf
Qm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC00NzYsNyArNDc2LDcgQEAgRWluYV9C
b29sIGV3a19mcmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgY2hh
ciAqc3RyaW5nLCBFaW5hX0IKICAgICByZXR1cm4gc2QtPmZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0
cmluZyhXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgZm9yd2FyZCwgY2FzZV9zZW5zaXRp
dmUsIHdyYXAsIHRydWUpOwogfQogCi11bnNpZ25lZCBpbnQgZXdrX2ZyYW1lX3RleHRfbWF0Y2hl
c19tYXJrKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNl
X3NlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQordW5z
aWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVjdCogbywgY29u
c3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdo
bGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5m
cmFtZSwgRUlOQV9GQUxTRSk7CkBAIC00ODYsNyArNDg2LDcgQEAgdW5zaWduZWQgaW50IGV3a19m
cmFtZV90ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5n
LCBFaW4KICAgICByZXR1cm4gc2QtPmZyYW1lLT5lZGl0b3IoKS0+Y291bnRNYXRjaGVzRm9yVGV4
dChXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgY2FzZV9zZW5zaXRpdmUsIGxpbWl0LCB0
cnVlKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChF
dmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19h
bGwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+
ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNDk1LDcgKzQ5NSw3IEBAIEVpbmFfQm9vbCBld2tfZnJh
bWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhpZ2hsaWdodCkKK0VpbmFfQm9vbCBld2tf
ZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCBoaWdobGlnaHQpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwpAQCAtNTAzLDcgKzUwMyw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4
dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBoaWdobGln
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21h
dGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tf
ZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpA
QCAtNTEzLDcgKzUxMyw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hs
aWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAvKioKICAqIENvbXBhcmlzb24gZnVuY3Rp
b24gdXNlZCBieSBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0CiAgKi8KLXN0YXRp
YyBib29sIF9ld2tfZnJhbWVfcmVjdF9jbXBfbGVzc190aGFuKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QgJmksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgJmopCitzdGF0aWMgYm9vbCBfZXdrX2ZyYW1l
X3JlY3RfY21wX2xlc3NfdGhhbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBqKQogewogICAgIHJldHVybiAoaS55KCkgPCBqLnkoKSB8fCAoaS55KCkg
PT0gai55KCkgJiYgaS54KCkgPCBqLngoKSkpOwogfQpAQCAtNTIxLDEyICs1MjEsMTIgQEAgc3Rh
dGljIGJvb2wgX2V3a19mcmFtZV9yZWN0X2NtcF9sZXNzX3RoYW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCAmaSwgY29uc3QgV2ViQ28KIC8qKgogICogUHJlZGljYXRlIHVzZWQgYnkgZXdrX2ZyYW1l
X3RleHRfbWF0Y2hlc19udGhfcG9zX2dldAogICovCi1zdGF0aWMgYm9vbCBfZXdrX2ZyYW1lX3Jl
Y3RfaXNfbmVnYXRpdmVfdmFsdWUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCAmaSkKK3N0YXRpYyBi
b29sIF9ld2tfZnJhbWVfcmVjdF9pc19uZWdhdGl2ZV92YWx1ZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBpKQogewogICAgIHJldHVybiAoaS54KCkgPCAwIHx8IGkueSgpIDwgMCk7CiB9CiAKLUVp
bmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvLCBzaXplX3QgbiwgaW50ICp4LCBpbnQgKnkpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Rl
eHRfbWF0Y2hlc19udGhfcG9zX2dldChjb25zdCBFdmFzX09iamVjdCogbywgc2l6ZV90IG4sIGlu
dCogeCwgaW50KiB5KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LCBFSU5BX0ZBTFNFKTsKQEAgLTUzNywxOCArNTM3LDE4IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVf
dGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBzaXplX3Qgbiwg
aW50CiAgICAgc3RkOjpyZW1vdmVfaWYoaW50UmVjdHMuYmVnaW4oKSwgaW50UmVjdHMuZW5kKCks
IF9ld2tfZnJhbWVfcmVjdF9pc19uZWdhdGl2ZV92YWx1ZSk7CiAKICAgICBpZiAoaW50UmVjdHMu
aXNFbXB0eSgpIHx8IG4gPiBpbnRSZWN0cy5zaXplKCkpCi0gICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAKICAgICBzdGQ6OnNvcnQoaW50UmVjdHMu
YmVnaW4oKSwgaW50UmVjdHMuZW5kKCksIF9ld2tfZnJhbWVfcmVjdF9jbXBfbGVzc190aGFuKTsK
IAogICAgIGlmICh4KQotICAgICAgKnggPSBpbnRSZWN0c1tuIC0gMV0ueCgpOworICAgICAgICAq
eCA9IGludFJlY3RzW24gLSAxXS54KCk7CiAgICAgaWYgKHkpCi0gICAgICAqeSA9IGludFJlY3Rz
W24gLSAxXS55KCk7CisgICAgICAgICp5ID0gaW50UmVjdHNbbiAtIDFdLnkoKTsKICAgICByZXR1
cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3N0b3AoRXZhc19PYmplY3Qg
Km8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3N0b3AoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNTU2LDcg
KzU1Niw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfc3RvcChFdmFzX09iamVjdCAqbykKICAgICBy
ZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3JlbG9hZChFdmFzX09i
amVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfcmVsb2FkKEV2YXNfT2JqZWN0KiBvKQogewog
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAg
LTU2NCw3ICs1NjQsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3JlbG9hZChFdmFzX09iamVjdCAq
bykKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3JlbG9h
ZF9mdWxsKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV9yZWxvYWRfZnVsbChF
dmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFt
ZSwgRUlOQV9GQUxTRSk7CkBAIC01NzIsMzggKzU3MiwzOCBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1l
X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
LUVpbmFfQm9vbCBld2tfZnJhbWVfYmFjayhFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tf
ZnJhbWVfYmFjayhFdmFzX09iamVjdCogbykKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1lX25hdmln
YXRlKG8sIC0xKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9mb3J3YXJkKEV2YXNfT2JqZWN0
ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV9mb3J3YXJkKEV2YXNfT2JqZWN0KiBvKQogewogICAg
IHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGUobywgMSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJh
bWVfbmF2aWdhdGUoRXZhc19PYmplY3QgKm8sIGludCBzdGVwcykKK0VpbmFfQm9vbCBld2tfZnJh
bWVfbmF2aWdhdGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgV2ViQ29yZTo6UGFn
ZSAqcGFnZSA9IHNkLT5mcmFtZS0+cGFnZSgpOworICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBz
ZC0+ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UtPmNhbkdvQmFja09yRm9yd2FyZChzdGVw
cykpCiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIHBhZ2UtPmdvQmFja09yRm9yd2Fy
ZChzdGVwcyk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFt
ZV9iYWNrX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a19mcmFtZV9iYWNr
X3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBvKQogewogICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdh
dGVfcG9zc2libGUobywgLTEpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmRfcG9z
c2libGUoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2li
bGUoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3Nz
aWJsZShvLCAxKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShF
dmFzX09iamVjdCAqbywgaW50IHN0ZXBzKQorRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZV9w
b3NzaWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogewogICAgIEVXS19GUkFNRV9TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTYxMSw3ICs2MTEsNyBAQCBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvLCBpbnQg
c3RlcHMpCiAgICAgcmV0dXJuIHBhZ2UtPmNhbkdvQmFja09yRm9yd2FyZChzdGVwcyk7CiB9CiAK
LWZsb2F0IGV3a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2Zsb2F0IGV3
a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNkLT5mcmFtZSwgLTEuMCk7CkBAIC02MjEsNyArNjIxLDcgQEAgZmxvYXQgZXdr
X2ZyYW1lX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBzZC0+ZnJh
bWUtPnBhZ2Vab29tRmFjdG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9zZXQo
RXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fc2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTYzMiwxMyArNjMyLDEzIEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pCiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3RleHRfb25s
eV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4
dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT50ZXh0Wm9vbTsK
IH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBzZXR0aW5nKQorRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3RleHRfb25s
eV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBzZXR0aW5nKQogewogICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTY1NCw3ICs2NTQs
NyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIHNldHRpbmcpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotdm9pZCBl
d2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QgKmhpdF90ZXN0KQordm9pZCBld2tf
ZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QqIGhpdF90ZXN0KQogewogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKGhpdF90ZXN0KTsKICAgICBlaW5hX3N0cmluZ3NoYXJlX2Rl
bChoaXRfdGVzdC0+dGl0bGUpOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIHZvaWQgZXdrX2ZyYW1lX2hp
dF90ZXN0X2ZyZWUoRXdrX0hpdF9UZXN0ICpoaXRfdGVzdCkKICAgICBmcmVlKGhpdF90ZXN0KTsK
IH0KIAotRXdrX0hpdF9UZXN0ICpld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvLCBpbnQgeCwgaW50IHkpCitFd2tfSGl0X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVzdF9u
ZXcoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNkLT5mcmFtZSwgMCk7CkBAIC02NzcsMTUgKzY3NywxNSBAQCBFd2tfSGl0X1Rlc3Qg
KmV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCB4LCBpbnQg
eSkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKSwgMCk7CiAKICAgICBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IHNk
LT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50Ci0gICAgICAgICh2
aWV3LT53aW5kb3dUb0NvbnRlbnRzKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKSwKLSAgICAgICAg
IC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmlldy0+d2luZG93VG9D
b250ZW50cyhXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVD
bGlwcGluZyovIHRydWUpOwogCiAgICAgaWYgKHJlc3VsdC5zY3JvbGxiYXIoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb2RlKCkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgRXdrX0hpdF9UZXN0ICpoaXRfdGVzdCA9IChFd2tfSGl0X1Rlc3QgKiljYWxsb2Mo
MSwgc2l6ZW9mKEV3a19IaXRfVGVzdCkpOworICAgIEV3a19IaXRfVGVzdCogaGl0X3Rlc3QgPSAo
RXdrX0hpdF9UZXN0KiljYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXRfVGVzdCkpOwogICAgIGlmICgh
aGl0X3Rlc3QpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkg
Zm9yIGhpdCB0ZXN0LiIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTc0MCw3ICs3NDAsNyBAQCBF
d2tfSGl0X1Rlc3QgKmV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QgKm8s
IGludCB4LCBpbnQgeSkKIH0KIAogRWluYV9Cb29sCi1ld2tfZnJhbWVfc2Nyb2xsX2FkZChFdmFz
X09iamVjdCAqbywgaW50IGR4LCBpbnQgZHkpCitld2tfZnJhbWVfc2Nyb2xsX2FkZChFdmFzX09i
amVjdCogbywgaW50IGR4LCBpbnQgZHkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwpAQCAtNzUwLDcgKzc1MCw3IEBAIGV3a19mcmFtZV9z
Y3JvbGxfYWRkKEV2YXNfT2JqZWN0ICpvLCBpbnQgZHgsIGludCBkeSkKIH0KIAogRWluYV9Cb29s
Ci1ld2tfZnJhbWVfc2Nyb2xsX3NldChFdmFzX09iamVjdCAqbywgaW50IHgsIGludCB5KQorZXdr
X2ZyYW1lX3Njcm9sbF9zZXQoRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkKIHsKICAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC03NjAs
NyArNzYwLDcgQEAgZXdrX2ZyYW1lX3Njcm9sbF9zZXQoRXZhc19PYmplY3QgKm8sIGludCB4LCBp
bnQgeSkKIH0KIAogRWluYV9Cb29sCi1ld2tfZnJhbWVfc2Nyb2xsX3NpemVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvLCBpbnQgKncsIGludCAqaCkKK2V3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8sIGludCogdywgaW50KiBoKQogewogICAgIGlmICh3KQogICAg
ICAgICAqdyA9IDA7CkBAIC03NzgsNyArNzc4LDcgQEAgZXdrX2ZyYW1lX3Njcm9sbF9zaXplX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICp3LCBpbnQgKmgpCiB9CiAKIEVpbmFfQm9vbAot
ZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKngsIGlu
dCAqeSkKK2V3a19mcmFtZV9zY3JvbGxfcG9zX2dldChjb25zdCBFdmFzX09iamVjdCogbywgaW50
KiB4LCBpbnQqIHkpCiB7CiAgICAgaWYgKHgpCiAgICAgICAgICp4ID0gMDsKQEAgLTc5NSw3ICs3
OTUsNyBAQCBld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGlu
dCAqeCwgaW50ICp5KQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tf
ZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChjb25zdCBFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGluY2x1ZGVfc2Nyb2xsYmFycywgaW50ICp4LCBpbnQgKnksIGludCAqdywgaW50
ICpoKQorRWluYV9Cb29sIGV3a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgaW5jbHVkZV9zY3JvbGxiYXJzLCBpbnQqIHgs
IGludCogeSwgaW50KiB3LCBpbnQqIGgpCiB7CiAgICAgaWYgKHgpCiAgICAgICAgICp4ID0gMDsK
QEAgLTgyMCw3ICs4MjAsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2libGVfY29udGVudF9n
ZW9tZXRyeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbAogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfcGFpbnRfZnVsbF9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZy
YW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTgyOCw3ICs4MjgsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1l
X3BhaW50X2Z1bGxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBzZC0+ZnJh
bWUtPnZpZXcoKS0+cGFpbnRzRW50aXJlQ29udGVudHMoKTsKIH0KIAotdm9pZCBld2tfZnJhbWVf
cGFpbnRfZnVsbF9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBmbGFnKQordm9pZCBld2tf
ZnJhbWVfcGFpbnRfZnVsbF9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBmbGFnKQogewog
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+ZnJhbWUpOwpAQCAtODM2LDcgKzgzNiw3IEBAIHZvaWQgZXdrX2Zy
YW1lX3BhaW50X2Z1bGxfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZmxhZykKICAgICBz
ZC0+ZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRzRW50aXJlQ29udGVudHMoZmxhZyk7CiB9CiAKLUVp
bmFfQm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19pbihFdmFzX09iamVjdCAqbykKK0VpbmFfQm9v
bCBld2tfZnJhbWVfZmVlZF9mb2N1c19pbihFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC04NDUsMTQgKzg0
NSwxNCBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4oRXZhc19PYmplY3QgKm8p
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2Zv
Y3VzX291dChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19v
dXQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgLy8gVE9ETzogd2hhdCB0byBkbyBvbiBmb2N1cyBv
dXQ/CiAgICAgRVJSKCJ3aGF0IHRvIGRvPyIpOwogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2Vfd2hlZWwoRXZhc19PYmplY3QgKm8sIGNv
bnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwgKmV2KQorRWluYV9Cb29sIGV3a19mcmFtZV9mZWVk
X21vdXNlX3doZWVsKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVs
KiBldikKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9G
QUxTRSk7CkBAIC04NjcsNyArODY3LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNl
X3doZWVsKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWUKICAgICBy
ZXR1cm4gc2QtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChldmVudCk7
CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2KQorRWluYV9Cb29sIGV3a19mcmFtZV9m
ZWVkX21vdXNlX2Rvd24oRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93
biogZXYpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFf
RkFMU0UpOwpAQCAtODg1LDEzICs4ODUsMTMgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21v
dXNlX2Rvd24oRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93bgogICAg
IHJldHVybiBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQo
ZXZlbnQpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXAoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2KQorRWluYV9Cb29sIGV3a19mcmFt
ZV9mZWVkX21vdXNlX3VwKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1Vw
KiBldikKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9G
QUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV2LCBFSU5BX0ZBTFNF
KTsKIAotICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHNkLT5mcmFtZS0+dmlldygpOwor
ICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNkLT5mcmFtZS0+dmlldygpOwogICAgIERC
Rygibz0lcCwgdmlldz0lcCwgYnV0dG9uPSVkLCBwb3M9JWQsJWQiLAogICAgICAgICBvLCB2aWV3
LCBldi0+YnV0dG9uLCBldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOwpAQCAtOTAzLDcgKzkwMyw3
IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV91cChFdmFzX09iamVjdCAqbywgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9VcCAqZXYpCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGV2ZW50KTsKIH0KIAotRWluYV9Cb29s
IGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfTW92ZSAqZXYpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92ZShF
dmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldikKIHsKICAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC05MjIs
NyArOTIyLDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZQogICAgIHJldHVybiBzZC0+ZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKGV2ZW50KTsKIH0KIAotRWluYV9Cb29sIGV3a19m
cmFtZV9mZWVkX3RvdWNoX2V2ZW50KEV2YXNfT2JqZWN0ICpvLCBFd2tfVG91Y2hfRXZlbnRfVHlw
ZSBhY3Rpb24sIEVpbmFfTGlzdCAqcG9pbnRzLCBpbnQgbWV0YVN0YXRlKQorRWluYV9Cb29sIGV3
a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KEV2YXNfT2JqZWN0KiBvLCBFd2tfVG91Y2hfRXZlbnRf
VHlwZSBhY3Rpb24sIEVpbmFfTGlzdCogcG9pbnRzLCBpbnQgbWV0YVN0YXRlKQogewogICAgIEVp
bmFfQm9vbCByZXQgPSBFSU5BX0ZBTFNFOwogCkBAIC05NjAsNyArOTYwLDcgQEAgRWluYV9Cb29s
IGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KEV2YXNfT2JqZWN0ICpvLCBFd2tfVG91Y2hfRXZl
bnRfVHlwZSBhY3Rpb24KICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW5saW5lIEVpbmFf
Qm9vbCBfZXdrX2ZyYW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKFdlYkNvcmU6OkZyYW1lICpmcmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50ICZldmVudCkKK3N0YXRpYyBp
bmxpbmUgRWluYV9Cb29sIF9ld2tfZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmcoV2ViQ29yZTo6
RnJhbWUqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGV2ZW50
KQogewogICAgIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgV2ViQ29y
ZTo6U2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7CkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBz
dGF0aWMgaW5saW5lIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKFdl
YkNvcmU6OkZyYW1lICpmcmFtZSwgYwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZLX0RPV046
CiAgICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbERvd247Ci0gICAgICAgICBpZiAo
ZXZlbnQuY3RybEtleSgpKQorICAgICAgICBpZiAoZXZlbnQuY3RybEtleSgpKQogICAgICAgICAg
ICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeURvY3VtZW50OwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5TGluZTsKQEAgLTEw
MjQsNyArMTAyNCw3IEBAIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfZnJhbWVfaGFuZGxl
X2tleV9zY3JvbGxpbmcoV2ViQ29yZTo6RnJhbWUgKmZyYW1lLCBjCiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV9kb3duKEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duICpldikKK0VpbmFfQm9vbCBld2tfZnJhbWVf
ZmVlZF9rZXlfZG93bihFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biog
ZXYpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFM
U0UpOwpAQCAtMTA0MCw3ICsxMDQwLDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV9k
b3duKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duICpldikKICAgICBy
ZXR1cm4gX2V3a19mcmFtZV9oYW5kbGVfa2V5X3Njcm9sbGluZyhzZC0+ZnJhbWUsIGV2ZW50KTsK
IH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV91cChFdmFzX09iamVjdCAqbywgY29u
c3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KQorRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV91
cChFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIGV2KQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKQEAgLTEwNTMs
MTIgKzEwNTMsMTIgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV91cChFdmFzX09iamVj
dCAqbywgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KQogICAgIHJldHVybiBzZC0+ZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChldmVudCk7CiB9CiAKLUV3a19UZXh0X1NlbGVjdGlv
bl9UeXBlIGV3a19mcmFtZV90ZXh0X3NlbGVjdGlvbl90eXBlX2dldChjb25zdCBFdmFzX09iamVj
dCAqbykKK0V3a19UZXh0X1NlbGVjdGlvbl9UeXBlIGV3a19mcmFtZV90ZXh0X3NlbGVjdGlvbl90
eXBlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRVdLX1RFWFRfU0VMRUNUSU9OX05PTkUpOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVXS19URVhUX1NFTEVDVElPTl9OT05FKTsK
IAotICAgIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uICpjb250cm9sbGVyID0gc2QtPmZyYW1lLT5z
ZWxlY3Rpb24oKTsKKyAgICBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiogY29udHJvbGxlciA9IHNk
LT5mcmFtZS0+c2VsZWN0aW9uKCk7CiAgICAgaWYgKCFjb250cm9sbGVyKQogICAgICAgICByZXR1
cm4gRVdLX1RFWFRfU0VMRUNUSU9OX05PTkU7CiAKQEAgLTEwODcsNyArMTA4Nyw3IEBAIEV3a19U
ZXh0X1NlbGVjdGlvbl9UeXBlIGV3a19mcmFtZV90ZXh0X3NlbGVjdGlvbl90eXBlX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKICAqCiAgKiBAcmV0dXJuIGEgbmV3IGZyYW1lIG9iamVjdCBvciBA
YyAwIG9uIGZhaWx1cmUKICAqLwotRXZhc19PYmplY3QgKmV3a19mcmFtZV9hZGQoRXZhcyAqZSkK
K0V2YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRkKEV2YXMqIGUpCiB7CiAgICAgcmV0dXJuIGV2YXNf
b2JqZWN0X3NtYXJ0X2FkZChlLCBfZXdrX2ZyYW1lX3NtYXJ0X2NsYXNzX25ldygpKTsKIH0KQEAg
LTEwOTksNyArMTA5OSw3IEBAIEV2YXNfT2JqZWN0ICpld2tfZnJhbWVfYWRkKEV2YXMgKmUpCiAg
KgogICogVGhpcyBpcyBpbnRlcm5hbCBhbmQgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBieSBleHRl
cm5hbCB1c2Vycy4KICAqLwotRWluYV9Cb29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0ICpv
LCBFdmFzX09iamVjdCAqdmlldywgV2ViQ29yZTo6RnJhbWUgKmZyYW1lKQorRWluYV9Cb29sIGV3
a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6
RnJhbWUqIGZyYW1lKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBpZiAoIXNkLT5mcmFtZSkgewpAQCAtMTEyMSwxMSArMTEyMSwxMSBA
QCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICp2
aWV3LCBXZWJDb3JlOjpGcmFtZSAqZnJhbQogICoKICAqIEFkZHMgY2hpbGQgdG8gdGhlIGZyYW1l
LgogICovCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCAqbywgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjaGlsZCwgY29uc3QgV1RGOjpTdHJpbmcgJm5h
bWUsIGNvbnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpTdHJpbmcgJnJlZmVycmVy
KQorRWluYV9Cb29sIGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIG8sIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY2hpbGQsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcikKIHsK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgY2hhciBidWZb
MjU2XTsKLSAgICBFdmFzX09iamVjdCAqZnJhbWU7CisgICAgRXZhc19PYmplY3QqIGZyYW1lOwog
ICAgIFdlYkNvcmU6OkZyYW1lKiBjZjsKIAogICAgIGZyYW1lID0gZXdrX2ZyYW1lX2FkZChzZC0+
YmFzZS5ldmFzKTsKQEAgLTExOTAsNyArMTE5MCw3IEBAIHZvaWQgZXdrX2ZyYW1lX3ZpZXdfc2V0
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogbmV3UGFyZW50KQogICogQGludGVybmFsCiAg
KiBGcmFtZSB3YXMgZGVzdHJveWVkIGJ5IGxvYWRlciwgcmVtb3ZlIGludGVybmFsIHJlZmVyZW5j
ZS4KICAqLwotdm9pZCBld2tfZnJhbWVfY29yZV9nb25lKEV2YXNfT2JqZWN0ICpvKQordm9pZCBl
d2tfZnJhbWVfY29yZV9nb25lKEV2YXNfT2JqZWN0KiBvKQogewogICAgIERCRygibz0lcCIsIG8p
OwogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTEyMDQsNyArMTIw
NCw3IEBAIHZvaWQgZXdrX2ZyYW1lX2NvcmVfZ29uZShFdmFzX09iamVjdCAqbykKICAqIEF2b2lk
IHVzaW5nIHRoaXMgY2FsbCBmcm9tIG91dHNpZGUsIGFkZCBzcGVjaWZpYyBld2tfZnJhbWVfKgog
ICogYWN0aW9ucyBpbnN0ZWFkLgogICovCi1XZWJDb3JlOjpGcmFtZSogZXdrX2ZyYW1lX2NvcmVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorV2ViQ29yZTo6RnJhbWUqIGV3a19mcmFtZV9jb3Jl
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIHNkLT5mcmFtZTsKQEAgLTEyMjMsNyArMTIyMyw3
IEBAIFdlYkNvcmU6OkZyYW1lKiBld2tfZnJhbWVfY29yZV9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIKICAq
Lwotdm9pZCBld2tfZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QgKm8sIEV3a19G
cmFtZV9SZXNvdXJjZV9SZXF1ZXN0ICpyZXF1ZXN0KQordm9pZCBld2tfZnJhbWVfcmVxdWVzdF93
aWxsX3NlbmQoRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1
ZXN0KQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInJlc291cmNl
LHJlcXVlc3Qsd2lsbHNlbmQiLCByZXF1ZXN0KTsKIH0KQEAgLTEyMzcsOSArMTIzNyw5IEBAIHZv
aWQgZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0ICpvLCBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdCAqcmVxCiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVx
dWVzdCxuZXciCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIo
RXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0ICpyZXF1ZXN0
KQordm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09iamVjdCog
bywgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCAo
dm9pZCAqKXJlcXVlc3QpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
InJlc291cmNlLHJlcXVlc3QsbmV3IiwgKHZvaWQqKXJlcXVlc3QpOwogfQogCiAvKioKQEAgLTEy
NTAsNyArMTI1MCw3IEBAIHZvaWQgZXdrX2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIo
RXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9SZXNvdXJjCiAgKgogICogRW1pdHMgc2ln
bmFsOiAibmF2aWdhdGlvbixmaXJzdCIKICAqLwotdm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1f
Zmlyc3RfbmF2aWdhdGlvbihFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2RpZF9wZXJm
b3JtX2ZpcnN0X25hdmlnYXRpb24oRXZhc19PYmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAibmF2aWdhdGlvbixmaXJzdCIsIDApOwogfQpAQCAtMTI2
NCw3ICsxMjY0LDcgQEAgdm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1fZmlyc3RfbmF2aWdhdGlv
bihFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJzdGF0ZSxzYXZlIgogICov
Ci12b2lkIGV3a19mcmFtZV92aWV3X3N0YXRlX3NhdmUoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6
Okhpc3RvcnlJdGVtICppdGVtKQordm9pZCBld2tfZnJhbWVfdmlld19zdGF0ZV9zYXZlKEV2YXNf
T2JqZWN0KiBvLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSkKIHsKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJzdGF0ZSxzYXZlIiwgMCk7CiB9CkBAIC0xMjc1LDkg
KzEyNzUsOSBAQCB2b2lkIGV3a19mcmFtZV92aWV3X3N0YXRlX3NhdmUoRXZhc19PYmplY3QgKm8s
IFdlYkNvcmU6Okhpc3RvcnlJdGVtICppdGVtKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQs
c3RhcnRlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX3N0
YXJ0ZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9sb2FkX3N0YXJ0ZWQoRXZhc19P
YmplY3QqIG8pCiB7Ci0gICAgRXZhc19PYmplY3QgKm1haW5fZnJhbWU7CisgICAgRXZhc19PYmpl
Y3QqIG1haW5fZnJhbWU7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxzdGFydGVkIiwgMCk7CiAgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMTI5Niw3ICsxMjk2LDcgQEAgdm9pZCBld2tfZnJh
bWVfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxv
YWQscHJvdmlzaW9uYWwiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBld2tfZnJhbWVf
bG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJv
dmlzaW9uYWwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChvLCAibG9hZCxwcm92aXNpb25hbCIsIDApOwogfQpAQCAtMTMwOSw3ICsxMzA5LDcg
QEAgdm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCAqbykKICAqCiAg
KiBFbWl0cyBzaWduYWw6ICJsb2FkLGZpcnN0bGF5b3V0LGZpbmlzaGVkIiB3aXRoIG5vIHBhcmFt
ZXRlcnMuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfZmluaXNoZWQoRXZh
c19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0X2ZpbmlzaGVkKEV2
YXNfT2JqZWN0KiBvKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
ImxvYWQsZmlyc3RsYXlvdXQsZmluaXNoZWQiLCAwKTsKIH0KQEAgLTEzMjIsNyArMTMyMiw3IEBA
IHZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfZmluaXNoZWQoRXZhc19PYmplY3QgKm8p
CiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxub25lbXB0eWxheW91dCxmaW5pc2hlZCIgd2l0
aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0X25v
bmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfbG9hZF9maXJz
dGxheW91dF9ub25lbXB0eV9maW5pc2hlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLG5vbmVtcHR5bGF5b3V0LGZpbmlzaGVk
IiwgMCk7CiB9CkBAIC0xMzM1LDcgKzEzMzUsNyBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0
bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0ICpvKQogICoKICAqIEVtaXRzIHNp
Z25hbDogImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwot
dm9pZCBld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZChFdmFzX09iamVjdCAqbykKK3Zv
aWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3QqIG8pCiB7CiAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxkb2N1bWVudCxmaW5p
c2hlZCIsIDApOwogfQpAQCAtMTM1MCw5ICsxMzUwLDkgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9k
b2N1bWVudF9maW5pc2hlZChFdmFzX09iamVjdCAqbykKICAqIEBub3RlIHRoZXJlIHNob3VsZCBu
b3RiZSBhbnkgZXJyb3Igc3R1ZmYgaGVyZSwgYnV0IHRyeWluZyB0byBiZQogICogICAgICAgY29t
cGF0aWJsZSB3aXRoIHByZXZpb3VzIFdlYktpdC4KICAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9m
aW5pc2hlZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZXJyb3JfZG9tYWluLCBpbnQgZXJy
b3JfY29kZSwgRWluYV9Cb29sIGlzX2NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciAqZXJyb3JfZGVz
Y3JpcHRpb24sIGNvbnN0IGNoYXIgKmZhaWxpbmdfdXJsKQordm9pZCBld2tfZnJhbWVfbG9hZF9m
aW5pc2hlZChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZXJyb3JfZG9tYWluLCBpbnQgZXJy
b3JfY29kZSwgRWluYV9Cb29sIGlzX2NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JfZGVz
Y3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdfdXJsKQogewotICAgIEV3a19GcmFtZV9Mb2Fk
X0Vycm9yIGJ1ZiwgKmVycm9yOworICAgIEV3a19GcmFtZV9Mb2FkX0Vycm9yIGJ1ZiwgKiBlcnJv
cjsKICAgICBpZiAoIWVycm9yX2RvbWFpbikgewogICAgICAgICBEQkcoIm89JXAsIHN1Y2Nlc3Mu
Iiwgbyk7CiAgICAgICAgIGVycm9yID0gMDsKQEAgLTEzODAsNyArMTM4MCw3IEBAIHZvaWQgZXdr
X2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVycm9yX2Rv
bWFpbiwgaW50IGVycm9yCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBw
b2ludGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgogICovCi12b2lkIGV3a19mcmFtZV9sb2Fk
X2Vycm9yKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplcnJvcl9kb21haW4sIGludCBlcnJv
cl9jb2RlLCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyICplcnJvcl9kZXNj
cmlwdGlvbiwgY29uc3QgY2hhciAqZmFpbGluZ191cmwpCit2b2lkIGV3a19mcmFtZV9sb2FkX2Vy
cm9yKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBlcnJvcl9kb21haW4sIGludCBlcnJvcl9j
b2RlLCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvcl9kZXNjcmlw
dGlvbiwgY29uc3QgY2hhciogZmFpbGluZ191cmwpCiB7CiAgICAgRXdrX0ZyYW1lX0xvYWRfRXJy
b3IgZXJyb3I7CiAKQEAgLTE0MDcsNyArMTQwNyw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJy
b3IoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVycm9yX2RvbWFpbiwgaW50IGVycm9yX2Nv
CiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm9ncmVzcyIgd2l0aCBwb2ludGVyIHRvIGEg
ZG91YmxlIGZyb20gMC4wIHRvIDEuMC4KICAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVz
c19jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19j
aGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+ZnJhbWUpOwpAQCAt
MTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2
YXNfT2JqZWN0ICpvKQogICoKICAqIFJlcG9ydHMgY29udGVudHMgc2l6ZSBjaGFuZ2VkLgogICov
Ci12b2lkIGV3a19mcmFtZV9jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19PYmplY3QgKm8sIEV2
YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQordm9pZCBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9j
aGFuZ2VkKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAg
ICBEQkcoIm89JXA6ICVkeCVkIiwgbywgdywgaCk7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QpOwpAQCAtMTQ0NiwxMyArMTQ0NiwxMyBAQCB2b2lkIGV3a19mcmFtZV9jb250
ZW50c19zaXplX2NoYW5nZWQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29y
ZCBoKQogICoKICAqIFJlcG9ydHMgdGl0bGUgY2hhbmdlZC4KICAqLwotdm9pZCBld2tfZnJhbWVf
dGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0aXRsZSkKK3ZvaWQgZXdrX2Zy
YW1lX3RpdGxlX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGl0bGUpCiB7CiAgICAg
REJHKCJvPSVwLCB0aXRsZT0lcyIsIG8sIHRpdGxlID8gdGl0bGUgOiAiKG51bGwpIik7CiAgICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIGlmICghZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZzZC0+dGl0bGUsIHRpdGxlKSkKICAgICAgICAgcmV0dXJuOwotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRpdGxlLGNoYW5nZWQiLCAodm9pZCAq
KXNkLT50aXRsZSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidGl0
bGUsY2hhbmdlZCIsICh2b2lkKilzZC0+dGl0bGUpOwogfQogCiAvKioKQEAgLTE0NjAsNyArMTQ2
MCw3IEBAIHZvaWQgZXdrX2ZyYW1lX3RpdGxlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hh
ciAqdGl0bGUpCiAgKgogICogQ3JlYXRlcyBhIHZpZXcuCiAgKi8KLXZvaWQgZXdrX2ZyYW1lX3Zp
ZXdfY3JlYXRlX2Zvcl92aWV3KEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqdmlldykKK3Zv
aWQgZXdrX2ZyYW1lX3ZpZXdfY3JlYXRlX2Zvcl92aWV3KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09i
amVjdCogdmlldykKIHsKICAgICBEQkcoIm89JXAsIHZpZXc9JXAiLCBvLCB2aWV3KTsKICAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CkBAIC0xNDg1LDEyICsxNDg1LDEyIEBA
IHZvaWQgZXdrX2ZyYW1lX3ZpZXdfY3JlYXRlX2Zvcl92aWV3KEV2YXNfT2JqZWN0ICpvLCBFdmFz
X09iamVjdCAqdmlldykKICAgICBpZiAoIXNkLT5mcmFtZS0+dmlldygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBjb25zdCBjaGFyICp0aGVtZSA9IGV3a192aWV3X3RoZW1lX2dldCh2aWV3KTsK
KyAgICBjb25zdCBjaGFyKiB0aGVtZSA9IGV3a192aWV3X3RoZW1lX2dldCh2aWV3KTsKICAgICBz
ZC0+ZnJhbWUtPnZpZXcoKS0+c2V0RWRqZVRoZW1lKHRoZW1lKTsKICAgICBzZC0+ZnJhbWUtPnZp
ZXcoKS0+c2V0RXZhc09iamVjdChvKTsKIH0KIAotc3NpemVfdCBld2tfZnJhbWVfc291cmNlX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbywgY2hhciAqKmZyYW1lX3NvdXJjZSkKK3NzaXplX3QgZXdr
X2ZyYW1lX3NvdXJjZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIGNoYXIqKiBmcmFtZV9zb3Vy
Y2UpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCAtMSk7CkBAIC0xNTA3LDEx
ICsxNTA3LDExIEBAIHNzaXplX3QgZXdrX2ZyYW1lX3NvdXJjZV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8sIGNoYXIgKipmcmFtZV9zb3VyY2UpCiAgICAgfQogCiAgICAgLy8gTG9vayBmb3IgPGh0
bWw+IHRhZy4gSWYgaXQgZXhpc3RzLCB0aGUgbm9kZSBjb250YXRpbnMgYWxsIGRvY3VtZW50J3Mg
c291cmNlLgotICAgIFdlYkNvcmU6Ok5vZGUgKmRvY3VtZW50Tm9kZSA9IHNkLT5mcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgV2ViQ29yZTo6Tm9kZSogZG9jdW1lbnRO
b2RlID0gc2QtPmZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAo
ZG9jdW1lbnROb2RlKQotICAgICAgICBmb3IgKFdlYkNvcmU6Ok5vZGUgKm5vZGUgPSBkb2N1bWVu
dE5vZGUtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudEVsZW1lbnQoKSkg
eworICAgICAgICBmb3IgKFdlYkNvcmU6Ok5vZGUqIG5vZGUgPSBkb2N1bWVudE5vZGUtPmZpcnN0
Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAg
ICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjpodG1sVGFnKSkgewot
ICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxFbGVtZW50ICplbGVtZW50ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQqPihub2RlKTsKKyAgICAgICAgICAgICAgICBXZWJDb3Jl
OjpIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50
Kj4obm9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZSA9IGVsZW1lbnQtPm91dGVySFRNTCgpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTU0MCwyNSArMTU0MCwyNSBAQCBzc2l6ZV90IGV3a19mcmFtZV9zb3VyY2VfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvLCBjaGFyICoqZnJhbWVfc291cmNlKQogICAgIHJldHVybiBzb3Vy
Y2VfbGVuZ3RoOwogfQogCi1FaW5hX0xpc3QgKmV3a19mcmFtZV9yZXNvdXJjZXNfbG9jYXRpb25f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9MaXN0KiBld2tfZnJhbWVfcmVzb3VyY2Vz
X2xvY2F0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5mcmFtZSwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNk
LT5mcmFtZS0+ZG9jdW1lbnQoKSwgMCk7CiAKLSAgICBFaW5hX0xpc3QgKmxpc3RPZkltYWdlc0xv
Y2F0aW9uID0gMDsKKyAgICBFaW5hX0xpc3QqIGxpc3RPZkltYWdlc0xvY2F0aW9uID0gMDsKIAog
ICAgIC8vIEdldCBzcmMgYXR0aWJ1dGUgb2YgaW1hZ2VzIGFuZCBzYXZlcyB0aGVtIHRvIHRoZSBF
aW5hX0xpc3QuCiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uPiBpbWFnZXMgPSBz
ZC0+ZnJhbWUtPmRvY3VtZW50KCktPmltYWdlcygpOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBpbWFnZXMtPmxlbmd0aCgpOyArK2luZGV4KSB7Ci0gICAgICAgIFdlYkNvcmU6
OkhUTUxJbWFnZUVsZW1lbnQgKmltYWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQqPihpbWFnZXMtPml0ZW0oaW5kZXgpKTsKKyAgICAgICAgV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudCo+KGltYWdlcy0+aXRlbShpbmRleCkpOwogICAgICAgICBpZiAoIWltYWdl
RWxlbWVudCB8fCBpbWFnZUVsZW1lbnQtPnNyYygpLmlzTnVsbCgpIHx8IGltYWdlRWxlbWVudC0+
c3JjKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgV1RGOjpT
dHJpbmcgaW1hZ2VMb2NhdGlvbiA9IGltYWdlRWxlbWVudC0+c3JjKCkuc3RyaW5nKCk7CiAgICAg
ICAgIC8vIExvb2sgZm9yIGR1cGxpY2F0ZWQgbG9jYXRpb24uCi0gICAgICAgIEVpbmFfTGlzdCAq
bGlzdEl0ZXJhdG9yID0gMDsKLSAgICAgICAgdm9pZCAqZGF0YSA9IDA7CisgICAgICAgIEVpbmFf
TGlzdCogbGlzdEl0ZXJhdG9yID0gMDsKKyAgICAgICAgdm9pZCogZGF0YSA9IDA7CiAgICAgICAg
IEVpbmFfQm9vbCBmb3VuZCA9IEVJTkFfRkFMU0U7CiAgICAgICAgIEVJTkFfTElTVF9GT1JFQUNI
KGxpc3RPZkltYWdlc0xvY2F0aW9uLCBsaXN0SXRlcmF0b3IsIGRhdGEpCiAgICAgICAgICAgICBp
ZiAoZm91bmQgPSAhc3RyY21wKHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSwgaW1hZ2VMb2NhdGlv
bi51dGY4KCkuZGF0YSgpKSkKQEAgLTE1NjYsNyArMTU2Niw3IEBAIEVpbmFfTGlzdCAqZXdrX2Zy
YW1lX3Jlc291cmNlc19sb2NhdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgICAg
IGlmIChmb3VuZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGNoYXIgKmltYWdl
TG9jYXRpb25Db3B5ID0gc3RyZHVwKGltYWdlTG9jYXRpb24udXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIGNoYXIqIGltYWdlTG9jYXRpb25Db3B5ID0gc3RyZHVwKGltYWdlTG9jYXRpb24udXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIGlmICghaW1hZ2VMb2NhdGlvbkNvcHkpCiAgICAgICAgICAgICBn
b3RvIG91dF9vZl9tZW1vcnlfaGFuZGxlcjsKICAgICAgICAgbGlzdE9mSW1hZ2VzTG9jYXRpb24g
PSBlaW5hX2xpc3RfYXBwZW5kKGxpc3RPZkltYWdlc0xvY2F0aW9uLCBpbWFnZUxvY2F0aW9uQ29w
eSk7CkBAIC0xNTc4LDcgKzE1NzgsNyBAQCBFaW5hX0xpc3QgKmV3a19mcmFtZV9yZXNvdXJjZXNf
bG9jYXRpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogCiBvdXRfb2ZfbWVtb3J5X2hhbmRs
ZXI6CiAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkuIik7Ci0gICAgdm9p
ZCAqZGF0YTsKKyAgICB2b2lkKiBkYXRhOwogICAgIEVJTkFfTElTVF9GUkVFKGxpc3RPZkltYWdl
c0xvY2F0aW9uLCBkYXRhKQogICAgICAgICBmcmVlKGRhdGEpOwogICAgIHJldHVybiAwOwpAQCAt
MTU5MCw3ICsxNTkwLDcgQEAgb3V0X29mX21lbW9yeV9oYW5kbGVyOgogICoKICAqIEVtaXRzIHNp
Z25hbDogInVyaSxjaGFuZ2VkIiB3aXRoIG5ldyB1cmkgYXMgcGFyYW1ldGVyLgogICovCi1FaW5h
X0Jvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3
a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CkBAIC0xNjEyLDcgKzE2MTIsNyBA
QCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQogICoKICAq
IEZvcmNlcyBsYXlvdXQgZm9yIGZyYW1lLgogICovCi12b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlv
dXQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QpOwpAQCAtMTYyNyw3ICsxNjI3LDcgQEAgdm9pZCBld2tfZnJhbWVfZm9yY2Vf
bGF5b3V0KEV2YXNfT2JqZWN0ICpvKQogICoKICAqIENyZWF0ZXMgcGx1Z2luLgogICovCi1XVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFz
X09iamVjdCAqbywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSAmcGx1Z2luU2l6ZSwgV2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQgKmVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29u
c3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4gJnBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyAmbWltZVR5cGUs
IGJvb2wgbG9hZE1hbnVhbGx5KQorV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdr
X2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIG8sIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29u
c3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICByZXR1
cm4gMDsKIH0KQEAgLTE2NDAsNyArMTY0MCw3IEBAIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBXCiAg
KgogICogRW1pdHMgc2lnbmFsOiAiZWRpdG9yY2xpZW50c2VsZWN0aW9uLGNoYW5nZWQiIHdpdGgg
bm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxlY3Rp
b25fY2hhbmdlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRf
c2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAiZWRpdG9yY2xpZW50LHNlbGVjdGlvbixjaGFuZ2VkIiwgMCk7
CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMTY1NSw3ICsxNjU1
LDcgQEAgdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZChFdmFz
X09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnQsY29udGVudHMs
Y2hhbmdlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a19mcmFtZV9lZGl0b3Jf
Y2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a19mcmFtZV9l
ZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiZWRpdG9yY2xpZW50LGNvbnRlbnRzLGNo
YW5nZWQiLCAwKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcAppbmRleCA5MWM3YzVjMTViNzMxNTllM2NkYmVi
ZDIyN2E1MmU4ZDAwYjFhOWUwLi45YWU3YWExMjVjYjFhYjY2M2E5ZjRmZjUxMDFjYzAyYzFiNWUw
ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHN0cnVjdCBfRXdrX0hpc3Rvcnkg
ewotICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwgKmNvcmU7CisgICAgV2ViQ29yZTo6
QmFja0ZvcndhcmRMaXN0SW1wbCogY29yZTsKIH07CiAKICNkZWZpbmUgRVdLX0hJU1RPUllfQ09S
RV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmVfLCAuLi4pICAgICAgXApAQCAtNTAsMTYgKzUw
LDE2IEBAIHN0cnVjdCBfRXdrX0hpc3RvcnkgewogICAgICAgICBFUlIoImhpc3RvcnktPmNvcmUg
aXMgZGlzYWJsZWQhLiIpOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBf
X1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwgKmNvcmVfID0gKGhpc3Rvcnkp
LT5jb3JlCisgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogY29yZV8gPSAoaGlzdG9y
eSktPmNvcmUKIAogCiBzdHJ1Y3QgX0V3a19IaXN0b3J5X0l0ZW0gewotICAgIFdlYkNvcmU6Okhp
c3RvcnlJdGVtICpjb3JlOworICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjb3JlOwogCi0gICAg
Y29uc3QgY2hhciAqdGl0bGU7Ci0gICAgY29uc3QgY2hhciAqYWx0ZXJuYXRlX3RpdGxlOwotICAg
IGNvbnN0IGNoYXIgKnVyaTsKLSAgICBjb25zdCBjaGFyICpvcmlnaW5hbF91cmk7CisgICAgY29u
c3QgY2hhciogdGl0bGU7CisgICAgY29uc3QgY2hhciogYWx0ZXJuYXRlX3RpdGxlOworICAgIGNv
bnN0IGNoYXIqIHVyaTsKKyAgICBjb25zdCBjaGFyKiBvcmlnaW5hbF91cmk7CiB9OwogCiAjZGVm
aW5lIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmVfLCAuLi4p
IFwKQEAgLTcxLDEwICs3MSwxMCBAQCBzdHJ1Y3QgX0V3a19IaXN0b3J5X0l0ZW0gewogICAgICAg
ICBDUklUSUNBTCgiaXRlbS0+Y29yZSBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3JlXyA9IChpdGVt
KS0+Y29yZQorICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjb3JlXyA9IChpdGVtKS0+Y29yZQog
CiAKLXN0YXRpYyBpbmxpbmUgRXdrX0hpc3RvcnlfSXRlbSAqX2V3a19oaXN0b3J5X2l0ZW1fbmV3
KFdlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3JlKQorc3RhdGljIGlubGluZSBFd2tfSGlzdG9yeV9J
dGVtKiBfZXdrX2hpc3RvcnlfaXRlbV9uZXcoV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGNvcmUpCiB7
CiAgICAgRXdrX0hpc3RvcnlfSXRlbSogaXRlbTsKIApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMg
aW5saW5lIEV3a19IaXN0b3J5X0l0ZW0gKl9ld2tfaGlzdG9yeV9pdGVtX25ldyhXZWJDb3JlOjpI
aXN0b3J5SXRlbSAqY29yZQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpdGVtID0g
KEV3a19IaXN0b3J5X0l0ZW0gKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXN0b3J5X0l0ZW0pKTsK
KyAgICBpdGVtID0gKEV3a19IaXN0b3J5X0l0ZW0qKWNhbGxvYygxLCBzaXplb2YoRXdrX0hpc3Rv
cnlfSXRlbSkpOwogICAgIGlmICghaXRlbSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90
IGFsbG9jYXRlIGl0ZW0gbWVtb3J5LiIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTk1LDcgKzk1
LDcgQEAgc3RhdGljIGlubGluZSBFd2tfSGlzdG9yeV9JdGVtICpfZXdrX2hpc3RvcnlfaXRlbV9u
ZXcoV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmUKICAgICByZXR1cm4gaXRlbTsKIH0KIAotc3Rh
dGljIGlubGluZSBFaW5hX0xpc3QgKl9ld2tfaGlzdG9yeV9pdGVtX2xpc3RfZ2V0KGNvbnN0IFdl
YkNvcmU6Okhpc3RvcnlJdGVtVmVjdG9yICZjb3JlX2l0ZW1zKQorc3RhdGljIGlubGluZSBFaW5h
X0xpc3QqIF9ld2tfaGlzdG9yeV9pdGVtX2xpc3RfZ2V0KGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJ
dGVtVmVjdG9yJiBjb3JlX2l0ZW1zKQogewogICAgIEVpbmFfTGlzdCogcmV0ID0gMDsKICAgICB1
bnNpZ25lZCBpbnQgaSwgc2l6ZTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBFd2tfSGlzdG9yeV9JdGVt
KiBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fYmFja19nZXQoY29uc3QgRXdrX0hpc3RvcnkqIGhp
c3RvcnkpCiBFd2tfSGlzdG9yeV9JdGVtKiBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fY3VycmVu
dF9nZXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnkpCiB7CiAgICAgRVdLX0hJU1RPUllfQ09S
RV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIDApOwotICAgIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtICpjdXJyZW50SXRlbSA9IGNvcmUtPmN1cnJlbnRJdGVtKCk7CisgICAgV2ViQ29yZTo6SGlz
dG9yeUl0ZW0qIGN1cnJlbnRJdGVtID0gY29yZS0+Y3VycmVudEl0ZW0oKTsKICAgICBpZiAoY3Vy
cmVudEl0ZW0pCiAgICAgICAgIHJldHVybiBfZXdrX2hpc3RvcnlfaXRlbV9uZXcoY3VycmVudEl0
ZW0pOwogICAgIHJldHVybiAwOwpAQCAtMzIyLDcgKzMyMiw3IEBAIGRvdWJsZSBld2tfaGlzdG9y
eV9pdGVtX3RpbWVfbGFzdF92aXNpdGVkX2dldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVt
KQogY2Fpcm9fc3VyZmFjZV90KiBld2tfaGlzdG9yeV9pdGVtX2ljb25fc3VyZmFjZV9nZXQoY29u
c3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKICAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVf
R0VUX09SX1JFVFVSTihpdGVtLCBjb3JlLCAwKTsKLSAgICAKKwogICAgIFdlYkNvcmU6OkltYWdl
KiBpY29uID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVS
TChjb3JlLT51cmwoKSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKICAgICBpZiAoIWljb24p
IHsKICAgICAgICAgRVJSKCJpY29uIGlzIE5VTEwuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2pzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanMuY3Bw
CmluZGV4IDYyYjNhYTQ5Y2E2YzE5YTI1Y2RmZjQ3YTc1OTVjODVmY2RkMDc2ZWYuLmZmOGMzODM5
MGYwOTcxZWNjMDQ2Njg3ODJhOWU1ZmY0NmFjYzk5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfanMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanMu
Y3BwCkBAIC0zMCw4ICszMCw4IEBACiAKICNkZWZpbmUgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRV
Uk4obywgLi4uKSBcCiAgICAgaWYgKCFFSU5BX01BR0lDX0NIRUNLKG9iaiwgRVdLX0pTX09CSkVD
VF9NQUdJQykpIHsgXAotICAgICAgIEVJTkFfTUFHSUNfRkFJTChvYmosIEVXS19KU19PQkpFQ1Rf
TUFHSUMpOyBcCi0gICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyBcCisgICAgICAgIEVJTkFfTUFH
SUNfRkFJTChvYmosIEVXS19KU19PQkpFQ1RfTUFHSUMpOyBcCisgICAgICAgIHJldHVybiBfX1ZB
X0FSR1NfXzsgXAogICAgIH0KIAogc3RydWN0IF9Fd2tfSlNfQ2xhc3MgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbWFpbi5jcHAKaW5kZXggYWI1NTY3YjY3ZTQ2ZjcxMjliMTdiZmFiNTM4ODgzOGJhN2Ni
Yjc4MC4uMWUzNmFiZDJhYzQzZjFlNWJjOTFlYzM2MmFkODJkYmMwNDc4MGM4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX21haW4uY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgRWluYV9Cb29sIF9ld2tf
aW5pdF9ib2R5KHZvaWQpCiAgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3Jl
LCBhbHJlYWR5IHJlcG9ydGVkIHRvIHdlYmtpdC1ndGsgZm9sa3M6CiAjaWYgVVNFKFNPVVApCiAg
ICAgaWYgKDEpIHsKLSAgICAgICAgU291cFNlc3Npb24gKnNlc3Npb24gPSBXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAgICAgICAgU291cFNlc3Npb24qIHNlc3Np
b24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKICAgICAgICAg
c291cF9zZXNzaW9uX2FkZF9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwgU09VUF9UWVBFX0NPTlRF
TlRfU05JRkZFUik7CiAgICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90eXBlKHNl
c3Npb24sIFNPVVBfVFlQRV9DT05URU5UX0RFQ09ERVIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19uZXR3b3JrLmNwcAppbmRleCA1Yzc4OTIzODA4MTBmYTBlMjI5ZTFmZTI0ZjUzY2VjZWRmNzJj
N2Y1Li4yNmQ1MmNiYWE1NDhkNzIyZjExZDU1MjI5ZDNkYmU2N2EyNTcwMmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKQEAgLTMwLDEwICszMCwxMCBAQAogI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgogI2VuZGlmCiAKLXZvaWQgZXdrX25ldHdvcmtfcHJveHlfdXJpX3Nl
dChjb25zdCBjaGFyICpwcm94eSkKK3ZvaWQgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChjb25z
dCBjaGFyKiBwcm94eSkKIHsKICNpZiBVU0UoU09VUCkKLSAgICBTb3VwU2Vzc2lvbiAqc2Vzc2lv
biA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBT
ZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9u
KCk7CiAKICAgICBpZiAoIXByb3h5KSB7CiAgICAgICAgIEVSUigibm8gcHJveHkgdXJpLiByZW1v
dmUgcHJveHkgZmVhdHVyZSBpbiBzb3VwLiIpOwpAQCAtNDEsNyArNDEsNyBAQCB2b2lkIGV3a19u
ZXR3b3JrX3Byb3h5X3VyaV9zZXQoY29uc3QgY2hhciAqcHJveHkpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBTb3VwVVJJICp1cmkgPSBzb3VwX3VyaV9uZXcocHJveHkpOworICAgIFNv
dXBVUkkqIHVyaSA9IHNvdXBfdXJpX25ldyhwcm94eSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4odXJpKTsKIAogICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLCBTT1VQX1NFU1NJT05f
UFJPWFlfVVJJLCB1cmksIE5VTEwpOwpAQCAtNTEsMTEgKzUxLDExIEBAIHZvaWQgZXdrX25ldHdv
cmtfcHJveHlfdXJpX3NldChjb25zdCBjaGFyICpwcm94eSkKICNlbmRpZgogfQogCi1jb25zdCBj
aGFyICpld2tfbmV0d29ya19wcm94eV91cmlfZ2V0KHZvaWQpCitjb25zdCBjaGFyKiBld2tfbmV0
d29ya19wcm94eV91cmlfZ2V0KHZvaWQpCiB7CiAjaWYgVVNFKFNPVVApCi0gICAgU291cFVSSSAq
dXJpOwotICAgIFNvdXBTZXNzaW9uICpzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6
OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgU291cFVSSSogdXJpOworICAgIFNvdXBTZXNzaW9uKiBz
ZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CiAgICAg
Z19vYmplY3RfZ2V0KHNlc3Npb24sIFNPVVBfU0VTU0lPTl9QUk9YWV9VUkksICZ1cmksIE5VTEwp
OwogCiAgICAgaWYgKCF1cmkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXgg
MzQzMzM4ODU3YWQwZGE0ODdjNTE3MjE0ZmVkYjc1YTkyZTI4NzQ0YS4uOWM4M2E5MzNmMGI5NjY4
YzAxNGI2ZGI0NmQzMWE4MDUwMDQ1OTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRl
LmgKQEAgLTU1LDEwICs1NSwxMCBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgc3RydWN0IF9Fd2tf
SlNfQ2xhc3MgRXdrX0pTX0NsYXNzOwogc3RydWN0IF9Fd2tfSlNfT2JqZWN0IHsKICAgICBKYXZh
U2NyaXB0T2JqZWN0IGJhc2U7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICBjb25zdCBFd2tf
SlNfQ2xhc3MgKmNsczsKLSAgICBFaW5hX0hhc2ggKnByb3BlcnRpZXM7Ci0gICAgRXZhc19PYmpl
Y3QgKnZpZXc7IC8vIGV3a192aWV3OiBjaGVjayBpZiB0aGlzIG9iamVjdCBoYXMgYWxyZWFkeSBi
ZWVuIGFkZGVkIHRvIGFub3RoZXIgZXdrX3ZpZXcKKyAgICBjb25zdCBjaGFyKiBuYW1lOworICAg
IGNvbnN0IEV3a19KU19DbGFzcyogY2xzOworICAgIEVpbmFfSGFzaCogcHJvcGVydGllczsKKyAg
ICBFdmFzX09iamVjdCogdmlldzsgLy8gZXdrX3ZpZXc6IGNoZWNrIGlmIHRoaXMgb2JqZWN0IGhh
cyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gYW5vdGhlciBld2tfdmlldwogICAgIEV3a19KU19PYmpl
Y3RfVHlwZSB0eXBlOwogICAgIEVJTkFfTUFHSUM7CiB9OwpAQCAtNzcsNzAgKzc3LDcwIEBAIHN0
cnVjdCBFd2tfV2luZG93X09iamVjdF9DbGVhcmVkX0V2ZW50IHsKICAgICBFdmFzX09iamVjdCog
ZnJhbWU7CiB9OwogCi12b2lkIGV3a192aWV3X3JlYWR5KEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQg
ZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29s
IGFjdGl2ZSk7Ci12b2lkIGV3a192aWV3X3RpdGxlX3NldChFdmFzX09iamVjdCAqbywgY29uc3Qg
Y2hhciAqdGl0bGUpOwotdm9pZCBld2tfdmlld191cmlfY2hhbmdlZChFdmFzX09iamVjdCAqbyk7
Ci12b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a192
aWV3X2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QgKm8pOwotdm9pZCBld2tfdmlld19mcmFt
ZV9tYWluX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a192aWV3X2ZyYW1l
X21haW5fY2xlYXJlZChFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a192aWV3X2ZyYW1lX21haW5f
aWNvbl9yZWNlaXZlZChFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a192aWV3X2xvYWRfZmluaXNo
ZWQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yICplcnJvcik7Ci12
b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9M
b2FkX0Vycm9yICplcnJvcik7Ci12b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChF
dmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a192aWV3X2xvYWRfc2hvdyhFdmFzX09iamVjdCAqbyk7
Ci12b2lkIGV3a192aWV3X3Jlc3RvcmVfc3RhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0
ICpmcmFtZSk7Ci1FdmFzX09iamVjdCAqZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
ICpjb3JlRmVhdHVyZXMpOwotdm9pZCBld2tfdmlld193aW5kb3dfY2xvc2UoRXZhc19PYmplY3Qg
Km8pOwordm9pZCBld2tfdmlld19yZWFkeShFdmFzX09iamVjdCogbyk7Cit2b2lkIGV3a192aWV3
X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhY3RpdmUp
Owordm9pZCBld2tfdmlld190aXRsZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRp
dGxlKTsKK3ZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOwordm9pZCBl
d2tfdmlld19sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QqIG8pOwordm9pZCBld2tfdmlld19sb2Fk
X3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0KiBvKTsKK3ZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9s
b2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QqIG8pOwordm9pZCBld2tfdmlld19mcmFtZV9tYWluX2Ns
ZWFyZWQoRXZhc19PYmplY3QqIG8pOwordm9pZCBld2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVj
ZWl2ZWQoRXZhc19PYmplY3QqIG8pOwordm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwordm9pZCBld2tf
dmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJv
ciogZXJyb3IpOwordm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmpl
Y3QqIG8pOwordm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmplY3QqIG8pOwordm9pZCBl
d2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUp
OworRXZhc19PYmplY3QqIGV3a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCBqYXZhc2NyaXB0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZl
YXR1cmVzKTsKK3ZvaWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0KiBvKTsKIAot
dm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0ICpvLCB2b2lkICpk
YXRhKTsKLXZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmplY3QgKm8p
Owordm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0KiBvLCB2b2lk
KiBkYXRhKTsKK3ZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmplY3Qq
IG8pOwogCi12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgdmlzaWJsZSk7Ci12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpOwordm9pZCBld2tfdmlld190b29s
YmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUpOwordm9p
ZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
KiB2aXNpYmxlKTsKIAotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxlKTsKLXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zp
c2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpOwotdm9pZCBld2tf
dmlld19zdGF0dXNiYXJfdGV4dF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQp
Owordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2
YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpOwordm9pZCBld2tfdmlld19zdGF0dXNi
YXJfdGV4dF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRleHQpOwogCi12b2lkIGV3
a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2
aXNpYmxlKTsKLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sICp2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNp
YmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUpOwordm9pZCBld2tfdmll
d19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2li
bGUpOwogCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCB2aXNpYmxlKTsKLXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfbWVudWJh
cl92aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUpOwordm9pZCBl
d2tfdmlld19tZW51YmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZp
c2libGUpOwogCi12b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QgKm8s
IGNvbnN0IGNoYXIgKnRleHQpOwordm9pZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0ZXh0KTsKIAotdm9pZCBld2tfdmlld19hZGRfY29uc29s
ZV9tZXNzYWdlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICptZXNzYWdlLCB1bnNpZ25lZCBp
bnQgbGluZU51bWJlciwgY29uc3QgY2hhciAqc291cmNlSUQpOwordm9pZCBld2tfdmlld19hZGRf
Y29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB1bnNp
Z25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hhciogc291cmNlSUQpOwogCi12b2lkIGV3a192
aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJh
bWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwotRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2Ny
aXB0X2NvbmZpcm0oRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hh
ciAqbWVzc2FnZSk7Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2
YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGNv
bnN0IGNoYXIgKmRlZmF1bHRWYWx1ZSwgY2hhciAqKnZhbHVlKTsKLUVpbmFfQm9vbCBld2tfdmll
d19zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QgKm8pOwotdWludDY0X3Qg
ZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QgKm8sIEV2YXNfT2Jq
ZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50X3Np
emUsIHVpbnQ2NF90IGV4cGVjdGVkX3NpemUpOwordm9pZCBld2tfdmlld19ydW5famF2YXNjcmlw
dF9hbGVydChFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKTsKK0VpbmFfQm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKEV2YXNf
T2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworRWlu
YV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCogbywgRXZh
c19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0
VmFsdWUsIGNoYXIqKiB2YWx1ZSk7CitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVw
dF9qYXZhc2NyaXB0KEV2YXNfT2JqZWN0KiBvKTsKK3VpbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVk
X2RhdGFiYXNlX3F1b3RhKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0
IGNoYXIqIGRhdGFiYXNlTmFtZSwgdWludDY0X3QgY3VycmVudF9zaXplLCB1aW50NjRfdCBleHBl
Y3RlZF9zaXplKTsKIAotRWluYV9Cb29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIEVpbmFfQm9vbCBhbGxvd3NfbXVsdGlwbGVfZmls
ZXMsIGNvbnN0IGNoYXIgKmFjY2VwdF90eXBlcywgRWluYV9MaXN0ICoqc2VsZWN0ZWRfZmlsZW5h
bWVzKTsKK0VpbmFfQm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCogbywg
RXZhc19PYmplY3QqIGZyYW1lLCBFaW5hX0Jvb2wgYWxsb3dzX211bHRpcGxlX2ZpbGVzLCBjb25z
dCBjaGFyKiBhY2NlcHRfdHlwZXMsIEVpbmFfTGlzdCoqIHNlbGVjdGVkX2ZpbGVuYW1lcyk7CiAK
LXZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsKLXZvaWQgZXdrX3ZpZXdfc2Ny
b2xsKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nv
b3JkIHN4LCBFdmFzX0Nvb3JkIHN5LCBFdmFzX0Nvb3JkIHN3LCBFdmFzX0Nvb3JkIHNoLCBFdmFz
X0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5LCBFdmFzX0Nvb3JkIGN3LCBFdmFzX0Nvb3JkIGNoLCBF
aW5hX0Jvb2wgbWFpbl9mcmFtZSk7Ci1XZWJDb3JlOjpQYWdlICpld2tfdmlld19jb3JlX3BhZ2Vf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK3ZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFzX09i
amVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19D
b29yZCBoKTsKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3Jk
IGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHN4LCBFdmFzX0Nvb3JkIHN5LCBFdmFzX0Nv
b3JkIHN3LCBFdmFzX0Nvb3JkIHNoLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5LCBFdmFz
X0Nvb3JkIGN3LCBFdmFzX0Nvb3JkIGNoLCBFaW5hX0Jvb2wgbWFpbl9mcmFtZSk7CitXZWJDb3Jl
OjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKTsKIAot
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9jcmVhdGUoRXZh
c19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUs
IFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCAqb3duZXJFbGVtZW50LCBjb25zdCBXZWJD
b3JlOjpLVVJMICZ1cmwsIGNvbnN0IFdURjo6U3RyaW5nICZyZWZlcnJlcik7CitXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCog
bywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKTsKIAotV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCAqbywgRXZh
c19PYmplY3QgKmZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplICZwbHVnaW5TaXplLCBXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudCAqZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJs
LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtTmFtZXMsIGNvbnN0IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPiAmcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nICZtaW1l
VHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOworV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZy
YW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBs
b2FkTWFudWFsbHkpOwogCi12b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAqbywg
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICpjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCAmcmVjdCk7Ci12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyAmYXJn
dW1lbnRzKTsKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0KiBvLCBXZWJDb3Jl
OjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwgaW50IHNlbGVjdGVkLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByZWN0KTsKK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZh
c19PYmplY3QqIG8sIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMp
OwogCi12b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19PYmplY3QgKm8sIEV3a19E
b3dubG9hZCAqZG93bmxvYWQpOwotdm9pZCAqZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9yZXNv
dXJjZV9nZXQoRXZhc19PYmplY3QgKm8sIHNpemVfdCAqYnl0ZXNSZWFkLCBjaGFyICoqbWltZSwg
Y29uc3QgY2hhciAqZmlsZSk7Cit2b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19P
YmplY3QqIG8sIEV3a19Eb3dubG9hZCogZG93bmxvYWQpOwordm9pZCogZXdrX3ZpZXdfcHJvdG9j
b2xfaGFuZGxlcl9yZXNvdXJjZV9nZXQoRXZhc19PYmplY3QqIG8sIHNpemVfdCogYnl0ZXNSZWFk
LCBjaGFyKiogbWltZSwgY29uc3QgY2hhciogZmlsZSk7CiAKLXZvaWQgZXdrX3ZpZXdfZWRpdG9y
X2NsaWVudF9jb250ZW50c19jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3ZpZXdf
ZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCAqbyk7Cit2b2lkIGV3
a192aWV3X2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogbyk7Cit2
b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3Qq
IG8pOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi12b2lkIGV3a192aWV3X2pz
X3dpbmRvd19vYmplY3RfY2xlYXIoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSk7
Cit2b2lkIGV3a192aWV3X2pzX3dpbmRvd19vYmplY3RfY2xlYXIoRXZhc19PYmplY3QqIG8sIEV2
YXNfT2JqZWN0KiBmcmFtZSk7CiAjZW5kaWYKIAogaW50IGV3a191dGlsX2RwaV9nZXQodm9pZCk7
CkBAIC0xNTQsNzEgKzE1NCw3MSBAQCB2b2lkIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX3Nl
dChFdmFzX09iamVjdCosIGJvb2wgbmVlZGVkKTsKIEVpbmFfQm9vbCBld2tfdmlld19uZWVkX3Rv
dWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QqKTsKICNlbmRpZgogCi1Fd2tfSGlzdG9y
eSAqZXdrX2hpc3RvcnlfbmV3KFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwgKmhpc3Rvcnkp
Owotdm9pZCBld2tfaGlzdG9yeV9mcmVlKEV3a19IaXN0b3J5ICpoaXN0b3J5KTsKLWNoYXIgKmV3
a19oaXN0b3J5X2l0ZW1fdGFyZ2V0X2dldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtICppdGVtKTsK
LUVpbmFfQm9vbCBld2tfaGlzdG9yeV9pdGVtX3RhcmdldF9pcyhjb25zdCBFd2tfSGlzdG9yeV9J
dGVtICppdGVtKTsKLUVpbmFfTGlzdCAqZXdrX2hpc3RvcnlfaXRlbV9jaGlsZHJlbl9nZXQoY29u
c3QgRXdrX0hpc3RvcnlfSXRlbSAqaXRlbSk7CitFd2tfSGlzdG9yeSogZXdrX2hpc3RvcnlfbmV3
KFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqIGhpc3RvcnkpOwordm9pZCBld2tfaGlzdG9y
eV9mcmVlKEV3a19IaXN0b3J5KiBoaXN0b3J5KTsKK2NoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdGFy
Z2V0X2dldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKTsKK0VpbmFfQm9vbCBld2tfaGlz
dG9yeV9pdGVtX3RhcmdldF9pcyhjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKTsKK0VpbmFf
TGlzdCogZXdrX2hpc3RvcnlfaXRlbV9jaGlsZHJlbl9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRl
bSogaXRlbSk7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLUV3a19Db250ZXh0X01lbnUg
KmV3a19jb250ZXh0X21lbnVfbmV3KEV2YXNfT2JqZWN0ICp2aWV3LCBXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpOwotRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVf
ZnJlZShFd2tfQ29udGV4dF9NZW51ICpvKTsKLXZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fw
cGVuZChFd2tfQ29udGV4dF9NZW51ICpvLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gJmNvcmUp
OwotRXdrX0NvbnRleHRfTWVudSAqZXdrX2NvbnRleHRfbWVudV9jdXN0b21fZ2V0KGNvbnN0IEV3
a19Db250ZXh0X01lbnUgKm8pOwotdm9pZCBld2tfY29udGV4dF9tZW51X3Nob3coY29uc3QgRXdr
X0NvbnRleHRfTWVudSAqbyk7CitFd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X25l
dyhFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyKiBjb250
cm9sbGVyKTsKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRfTWVu
dSogbyk7Cit2b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVu
dSogbywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJiBjb3JlKTsKK0V3a19Db250ZXh0X01lbnUq
IGV3a19jb250ZXh0X21lbnVfY3VzdG9tX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51KiBvKTsK
K3ZvaWQgZXdrX2NvbnRleHRfbWVudV9zaG93KGNvbnN0IEV3a19Db250ZXh0X01lbnUqIG8pOwog
I2VuZGlmCiAKLWNvbnN0IEVpbmFfUmVjdGFuZ2xlICpld2tfdmlld19yZXBhaW50c19nZXQoY29u
c3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBzaXplX3QgKmNvdW50KTsKLWNvbnN0IEV3
a19TY3JvbGxfUmVxdWVzdCAqZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldChjb25zdCBFd2tf
Vmlld19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVfdCAqY291bnQpOworY29uc3QgRWluYV9SZWN0
YW5nbGUqIGV3a192aWV3X3JlcGFpbnRzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEq
IHByaXYsIHNpemVfdCogY291bnQpOworY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0KiBld2tfdmll
d19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwg
c2l6ZV90KiBjb3VudCk7CiAKLXZvaWQgZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgpOwordm9pZCBld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2
YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcs
IEV2YXNfQ29vcmQgaCk7CiAKLXZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNp
dmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KTsKK3ZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lm
X25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KTsKIAotRXdrX1dp
bmRvd19GZWF0dXJlcyAqZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvbnN0IFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzICpjb3JlKTsKK0V3a19XaW5kb3dfRmVhdHVyZXMqIGV3a193
aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZShjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJl
cyogY29yZSk7CiAKLUV2YXNfT2JqZWN0ICpld2tfZnJhbWVfYWRkKEV2YXMgKmUpOwotRWluYV9C
b29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqdmlldywgV2Vi
Q29yZTo6RnJhbWUgKmZyYW1lKTsKLUVpbmFfQm9vbCBld2tfZnJhbWVfY2hpbGRfYWRkKEV2YXNf
T2JqZWN0ICpvLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBX
VEY6OlN0cmluZyAmbmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBjb25zdCBXVEY6OlN0
cmluZyAmcmVmZXJyZXIpOwotdm9pZCBld2tfZnJhbWVfdmlld19zZXQoRXZhc19PYmplY3QgKm8s
IEV2YXNfT2JqZWN0ICpuZXdQYXJlbnQpOworRXZhc19PYmplY3QqIGV3a19mcmFtZV9hZGQoRXZh
cyogZSk7CitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2Jq
ZWN0KiB2aWV3LCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpOworRWluYV9Cb29sIGV3a19mcmFtZV9j
aGlsZF9hZGQoRXZhc19PYmplY3QqIG8sIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4g
Y2hpbGQsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmws
IGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7Cit2b2lkIGV3a19mcmFtZV92aWV3X3NldChF
dmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIG5ld1BhcmVudCk7CiAKLVdlYkNvcmU6OkZyYW1l
ICpld2tfZnJhbWVfY29yZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotdm9pZCBld2tfZnJh
bWVfY29yZV9nb25lKEV2YXNfT2JqZWN0ICpvKTsKK1dlYkNvcmU6OkZyYW1lKiBld2tfZnJhbWVf
Y29yZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pOwordm9pZCBld2tfZnJhbWVfY29yZV9nb25l
KEV2YXNfT2JqZWN0KiBvKTsKIAotdm9pZCBld2tfZnJhbWVfbG9hZF9zdGFydGVkKEV2YXNfT2Jq
ZWN0ICpvKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QgKm8p
Owotdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVjdCAq
byk7Ci12b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKEV2
YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZh
c19PYmplY3QgKm8pOwotdm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqZXJyb3JfZG9tYWluLCBpbnQgZXJyb3JfY29kZSwgRWluYV9Cb29sIGlz
X2NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciAqZXJyb3JfZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIg
KmZhaWxpbmdfdXJsKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3QgKm8s
IGNvbnN0IGNoYXIgKmVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUsIEVpbmFfQm9vbCBpc19j
YW5jZWxsYXRpb24sIGNvbnN0IGNoYXIgKmVycm9yX2Rlc2NyaXB0aW9uLCBjb25zdCBjaGFyICpm
YWlsaW5nX3VybCk7Ci12b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19P
YmplY3QgKm8pOwordm9pZCBld2tfZnJhbWVfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBvKTsK
K3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIG8pOwordm9pZCBl
d2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVjdCogbyk7Cit2b2lk
IGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0
KiBvKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3Qq
IG8pOwordm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogbywgY29uc3Qg
Y2hhciogZXJyb3JfZG9tYWluLCBpbnQgZXJyb3JfY29kZSwgRWluYV9Cb29sIGlzX2NhbmNlbGxh
dGlvbiwgY29uc3QgY2hhciogZXJyb3JfZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdf
dXJsKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNo
YXIqIGVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUsIEVpbmFfQm9vbCBpc19jYW5jZWxsYXRp
b24sIGNvbnN0IGNoYXIqIGVycm9yX2Rlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nX3Vy
bCk7Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIG8p
OwogCi12b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCAqbywgRXdr
X0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgKnJlcXVlc3QpOwotdm9pZCBld2tfZnJhbWVfcmVxdWVz
dF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX1Jlc291
cmNlX1JlcXVlc3QgKnJlcXVlc3QpOwotdm9pZCBld2tfZnJhbWVfdmlld19zdGF0ZV9zYXZlKEV2
YXNfT2JqZWN0ICpvLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSk7Cit2b2lkIGV3a19mcmFt
ZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogbywgRXdrX0ZyYW1lX1Jlc291cmNlX1Jl
cXVlc3QqIHJlcXVlc3QpOwordm9pZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmll
cihFdmFzX09iamVjdCogbywgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVl
c3QpOwordm9pZCBld2tfZnJhbWVfdmlld19zdGF0ZV9zYXZlKEV2YXNfT2JqZWN0KiBvLCBXZWJD
b3JlOjpIaXN0b3J5SXRlbSogaXRlbSk7CiAKLXZvaWQgZXdrX2ZyYW1lX2RpZF9wZXJmb3JtX2Zp
cnN0X25hdmlnYXRpb24oRXZhc19PYmplY3QgKm8pOwordm9pZCBld2tfZnJhbWVfZGlkX3BlcmZv
cm1fZmlyc3RfbmF2aWdhdGlvbihFdmFzX09iamVjdCogbyk7CiAKLXZvaWQgZXdrX2ZyYW1lX2Nv
bnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nv
b3JkIGgpOwotdm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBj
aGFyICp0aXRsZSk7Cit2b2lkIGV3a19mcmFtZV9jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19P
YmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsKK3ZvaWQgZXdrX2ZyYW1lX3Rp
dGxlX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGl0bGUpOwogCi12b2lkIGV3a19m
cmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldyhFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKnZp
ZXcpOwotRWluYV9Cb29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCAqbyk7Ci12
b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3QgKm8pOwordm9pZCBld2tfZnJh
bWVfdmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiB2aWV3
KTsKK0VpbmFfQm9vbCBld2tfZnJhbWVfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOwordm9p
ZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNfT2JqZWN0KiBvKTsKIAotV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IFdlYkNvcmU6OkludFNpemUgJnBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVn
SW5FbGVtZW50ICplbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMICZ1cmwsIGNvbnN0IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPiAmcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+ICZwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcgJm1pbWVUeXBlLCBib29sIGxv
YWRNYW51YWxseSk7CitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVf
cGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1
Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6
OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKIAotRWluYV9Cb29sIGV3a192
aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0ICpvLCBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdCAqcmVxdWVzdCk7CitFaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGlv
bl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1
ZXN0KiByZXF1ZXN0KTsKIAotdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoRXZh
c19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsKK3ZvaWQgZXdrX3ZpZXdf
Y29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNf
Q29vcmQgaCk7CiAKLVdlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKK1dlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3Jl
Y3RfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKTsKIAogY29uc3QgY2hhciogZXdrX3NldHRpbmdz
X2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQodm9pZCk7CiAKLXZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9j
bGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a19mcmFtZV9l
ZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKTsKK3ZvaWQgZXdr
X2ZyYW1lX2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogbyk7Cit2
b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBvKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5oCmluZGV4IGFmNGJmNjE0OTQ2MGU3NDA4ZDJm
NTk1NjQ3MjczYzEyOTdjM2M0NGEuLmMwMzRkYWQ1YzFlZmQxY2E3ZGMxN2I5MDIxNTU3OWUxNWEw
Y2ZlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFu
ZGxlcl9zb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5k
bGVyX3NvdXAuaApAQCAtNDIsNyArNDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrUHJvdG9jb2xI
YW5kbGVyUHJpdmF0ZSBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlOwogCiB0eXBlZGVmIHN0cnVj
dCB7CiAgICAgU291cFJlcXVlc3QgcGFyZW50OwotICAgIEV3a1Byb3RvY29sSGFuZGxlclByaXZh
dGUgKnByaXY7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSogcHJpdjsKIH0gRXdrQ3Vz
dG9tUHJvdG9jb2xIYW5kbGVyOwogCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDgxNWNmZDI3NDU0MmFjN2QyNzM3NWM0Yjg0ZTQ5YjAw
NjlkN2UxMmIuLmI0MTBmZGMyNWE0YzJlNDAxNzNlNmEwZTk2M2FiZDcyZjNiZDc2MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHVpbnQ2
NF90IGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfZGVmYXVsdF9xdW90YV9nZXQodm9pZCkKICNl
bmRpZgogfQogCi12b2lkIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQoY29uc3Qg
Y2hhciAqcGF0aCkKK3ZvaWQgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRoX3NldChjb25z
dCBjaGFyKiBwYXRoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV1RGOjpTdHJp
bmcgY29yZVBhdGggPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCk7CkBAIC0xMDIsNyArMTAy
LDcgQEAgdm9pZCBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIg
KnBhdGgpCiAjZW5kaWYKIH0KIAotY29uc3QgY2hhciAqZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFz
ZV9wYXRoX2dldCh2b2lkKQorY29uc3QgY2hhciogZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9w
YXRoX2dldCh2b2lkKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgcmV0dXJuIF9l
d2tfZGVmYXVsdF93ZWJfZGF0YWJhc2VfcGF0aDsKQEAgLTExMSw3ICsxMTEsNyBAQCBjb25zdCBj
aGFyICpld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfZ2V0KHZvaWQpCiAjZW5kaWYKIH0K
IAotRWluYV9Cb29sIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNo
YXIgKmRpcmVjdG9yeSkKK0VpbmFfQm9vbCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRo
X3NldChjb25zdCBjaGFyKiBkaXJlY3RvcnkpCiB7CiAgICAgV2ViQ29yZTo6SWNvbkRhdGFiYXNl
OjpkZWxheURhdGFiYXNlQ2xlYW51cCgpOwogCkBAIC0xNTYsNyArMTU2LDcgQEAgRWluYV9Cb29s
IGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIgKmRpcmVjdG9y
eSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyICpld2tfc2V0dGluZ3Nf
aWNvbl9kYXRhYmFzZV9wYXRoX2dldCh2b2lkKQorY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2lj
b25fZGF0YWJhc2VfcGF0aF9nZXQodm9pZCkKIHsKICAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLmlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE3NywxMiArMTc3LDEy
IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9jbGVhcih2b2lkKQogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNhaXJvX3N1cmZhY2VfdCAqZXdrX3NldHRpbmdzX2lj
b25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldChjb25zdCBjaGFyICp1cmwpCitjYWlyb19zdXJm
YWNlX3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQoY29uc3Qg
Y2hhciogdXJsKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cmwsIDAp
OwogCiAgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6
OmZyb21VVEY4KHVybCkpOwotICAgIFdlYkNvcmU6OkltYWdlICppY29uID0gV2ViQ29yZTo6aWNv
bkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJD
b3JlOjpJbnRTaXplKDE2LCAxNikpOworICAgIFdlYkNvcmU6OkltYWdlKiBpY29uID0gV2ViQ29y
ZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygp
LCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogCiAgICAgaWYgKCFpY29uKSB7CiAgICAgICAg
IEVSUigibm8gaWNvbiBmb3IgdXJsICVzIiwgdXJsKTsKQEAgLTE5MiwxNCArMTkyLDE0IEBAIGNh
aXJvX3N1cmZhY2VfdCAqZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dl
dChjb25zdCBjaGFyICp1cmwpCiAgICAgcmV0dXJuIGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CiB9CiAKLUV2YXNfT2JqZWN0ICpld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9p
Y29uX29iamVjdF9hZGQoY29uc3QgY2hhciAqdXJsLCBFdmFzICpjYW52YXMpCitFdmFzX09iamVj
dCogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfYWRkKGNvbnN0IGNoYXIq
IHVybCwgRXZhcyogY2FudmFzKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TCh1cmwsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDAp
OwogCiAgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6
OmZyb21VVEY4KHVybCkpOwotICAgIFdlYkNvcmU6OkltYWdlICppY29uID0gV2ViQ29yZTo6aWNv
bkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJD
b3JlOjpJbnRTaXplKDE2LCAxNikpOwotICAgIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKKyAg
ICBXZWJDb3JlOjpJbWFnZSogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9u
b3VzSWNvbkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYp
KTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7CiAKICAgICBpZiAoIWljb24pIHsKICAg
ICAgICAgRVJSKCJubyBpY29uIGZvciB1cmwgJXMiLCB1cmwpOwpAQCAtMjQ1LDcgKzI0NSw3IEBA
IHZvaWQgZXdrX3NldHRpbmdzX3JlcGFpbnRfdGhyb3R0bGluZ19zZXQoZG91YmxlIGRlZmVycmVk
X3JlcGFpbnRfZGVsYXksIGRvdWJsZSBpCiAgKgogICogQHJldHVybiBhIHBvaW50ZXIgdG8gYW4g
ZWluYV9zdHJpbmdzaGFyZSBjb250YWluaW5nIHRoZSB1c2VyIGFnZW50IHN0cmluZwogICovCi1j
b25zdCBjaGFyICpld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCh2b2lkKQorY29u
c3QgY2hhciogZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQodm9pZCkKIHsKICAg
ICBXVEY6OlN0cmluZyB1YV92ZXJzaW9uID0gbWFrZVN0cmluZyhTdHJpbmc6Om51bWJlcihXRUJL
SVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9OKSwgJy4nLCBTdHJpbmc6Om51bWJlcihXRUJLSVRf
VVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OKSwgJysnKTsKICAgICBXVEY6OlN0cmluZyBzdGF0aWNf
dWEgPSBtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoIiwgX2V3a19zZXR0aW5nc193ZWJraXRfcGxh
dGZvcm1fZ2V0KCksICI7ICIsIF9ld2tfc2V0dGluZ3Nfd2Via2l0X29zX3ZlcnNpb25fZ2V0KCks
ICIpIEFwcGxlV2ViS2l0LyIsIHVhX3ZlcnNpb24pICsgbWFrZVN0cmluZygiIChLSFRNTCwgbGlr
ZSBHZWNrbykgVmVyc2lvbi81LjAgU2FmYXJpLyIsIHVhX3ZlcnNpb24pOwpAQCAtMjUzLDcgKzI1
Myw3IEBAIGNvbnN0IGNoYXIgKmV3a19zZXR0aW5nc19kZWZhdWx0X3VzZXJfYWdlbnRfZ2V0KHZv
aWQpCiAgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHN0YXRpY191YS51dGY4KCkuZGF0
YSgpKTsKIH0KIAotRWluYV9Cb29sIGV3a19zZXR0aW5nc19jYWNoZV9kaXJlY3RvcnlfcGF0aF9z
ZXQoY29uc3QgY2hhciAqcGF0aCkKK0VpbmFfQm9vbCBld2tfc2V0dGluZ3NfY2FjaGVfZGlyZWN0
b3J5X3BhdGhfc2V0KGNvbnN0IGNoYXIqIHBhdGgpCiB7CiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKICAgICBpZiAoIXBhdGgpCkBAIC0yNzAsNyArMjcwLDcgQEAgRWluYV9C
b29sIGV3a19zZXR0aW5nc19jYWNoZV9kaXJlY3RvcnlfcGF0aF9zZXQoY29uc3QgY2hhciAqcGF0
aCkKICNlbmRpZgogfQogCi1jb25zdCBjaGFyICpld2tfc2V0dGluZ3NfY2FjaGVfZGlyZWN0b3J5
X3BhdGhfZ2V0KCkKK2NvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19jYWNoZV9kaXJlY3RvcnlfcGF0
aF9nZXQoKQogewogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgcmV0
dXJuIF9ld2tfY2FjaGVfZGlyZWN0b3J5X3BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCmluZGV4IGIxYTk2M2RmMTFjNzMyOGZmNGU4Mjk2
YTA2YzQwYTQ4NzViODA3MWYuLjQ2YWFhODM5MTIyZWU1M2JhMTdkNTAwZjJlODA5ZjA5YjM4MThi
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZS5oCkBAIC02MiwxOCArNjIsMTggQEAgc3RydWN0IF9Fd2tfVGlsZV9TdGF0cyB7CiAgICAgdW5z
aWduZWQgaW50IG1pc3NlczsgICAgIC8qKjwgbnVtYmVyIG9mIHRpbWVzIGl0IGJlY2FtZSBkaXJ0
eSBidXQgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlcGFpbnRlZCBhdCBh
bGwgc2luY2UgaXQgd2FzIG5vdCB2aXNpYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KLSAgICBFaW5hX0Jvb2wgZnVsbF91cGRhdGU6MTsgLyoqPCB0aWxlIHJlcXVpcmVzIGZ1
bGwgc2l6ZSB1cGRhdGUgKi8KKyAgICBFaW5hX0Jvb2wgZnVsbF91cGRhdGUgOiAxOyAvKio8IHRp
bGUgcmVxdWlyZXMgZnVsbCBzaXplIHVwZGF0ZSAqLwogfTsKIAogc3RydWN0IF9Fd2tfVGlsZSB7
Ci0gICAgRWluYV9UaWxlciAqdXBkYXRlczsgICAgLyoqPCB1cGRhdGVkL2RpcnR5IGFyZWFzICov
CisgICAgRWluYV9UaWxlciogdXBkYXRlczsgICAgLyoqPCB1cGRhdGVkL2RpcnR5IGFyZWFzICov
CiAgICAgRXdrX1RpbGVfU3RhdHMgc3RhdHM7ICAgICAgIC8qKjwgdGlsZSB1c2FnZSBzdGF0aXN0
aWNzICovCiAgICAgdW5zaWduZWQgbG9uZyBjb2wsIHJvdzsgLyoqPCB0aWxlIHRpbGUgcG9zaXRp
b24gKi8KICAgICBFdmFzX0Nvb3JkIHgsIHk7ICAgICAgICAvKio8IHRpbGUgY29vcmRpbmF0ZSBw
b3NpdGlvbiAqLwogCiAgICAgLyogVE9ETzogZG9lcyBpdCB3b3J0aCB0byBrZWVwIHRob3NlIG9y
IGNyZWF0ZSBvbiBkZW1hbmQ/ICovCi0gICAgY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlOwotICAg
IGNhaXJvX3QgKmNhaXJvOworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZTsKKyAgICBjYWly
b190KiBjYWlybzsKIAogICAgIC8qKiBOZXZlciBldmVyIGNoYW5nZSB0aG9zZSBhZnRlciB0aWxl
IGlzIGNyZWF0ZWQgKHJlc3BlY3QgY29uc3QhKSAqLwogICAgIGNvbnN0IEV2YXNfQ29vcmQgdywg
aDsgICAgICAgIC8qKjwgdGlsZSBzaXplIChzZWUgVElMRV9TSVpFX0FUX1pPT00oKSkgKi8KQEAg
LTg0LDQ1ICs4NCw0NSBAQCBzdHJ1Y3QgX0V3a19UaWxlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiBhbGlnbmVtZW50IQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLwogICAgIGludCB2aXNpYmxlOyAgICAgICAgICAgICAgICAgIC8qKjwgdmlzaWJp
bGl0eSBjb3VudGVyIG9mIHRoaXMgdGlsZSAqLwotICAgIEV2YXNfT2JqZWN0ICppbWFnZTsgICAg
ICAgICAgIC8qKjwgRXZhcyBJbWFnZSwgdGhlIHRpbGUgdG8gYmUgcmVuZGVyZWQgKi8KLSAgICB1
aW50OF90ICpwaXhlbHM7CisgICAgRXZhc19PYmplY3QqIGltYWdlOyAgICAgICAgICAgLyoqPCBF
dmFzIEltYWdlLCB0aGUgdGlsZSB0byBiZSByZW5kZXJlZCAqLworICAgIHVpbnQ4X3QqIHBpeGVs
czsKIH07CiAKICNpbmNsdWRlICJld2tfdGlsZWRfbWF0cml4LmgiCiAjaW5jbHVkZSAiZXdrX3Rp
bGVkX21vZGVsLmgiCiAKIC8qIHZpZXcgKi8KLUV2YXNfT2JqZWN0ICpld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9hZGQoRXZhcyAqZSk7Ci0KLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVu
ZGVyX2NiX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICgqY2IpKHZvaWQgKmRhdGEsIEV3
a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSksIGNvbnN0IHZvaWQgKmRhdGEp
OwotCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0
X3NldChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpOwotRWluYV9C
b29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9hZGQoRXZhc19P
YmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHkpOwotRWluYV9Cb29sIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9pbm5lcl9vZmZzZXRfYWRkKEV2YXNfT2JqZWN0ICpv
LCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQg
eSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwotCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfem9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0ICp6b29tLCBFdmFzX0Nv
b3JkIGN4LCBFdmFzX0Nvb3JkIGN5LCBFdmFzX0Nvb3JkICpvZmZ4LCBFdmFzX0Nvb3JkICpvZmZ5
KTsKLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KEV2YXNf
T2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKLXZv
aWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZml4X29mZnNldHMoRXZhc19PYmplY3QgKm8sIEV2
YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
em9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzbW9v
dGhfc2NhbGUpOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZShFdmFz
X09iamVjdCAqbywgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSk7Ci12b2lkIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vzc19wcmVfc2V0KEV2YXNfT2JqZWN0ICpvLCB2
b2lkICooKmNiKSh2b2lkICpkYXRhLCBFdmFzX09iamVjdCAqbyksIGNvbnN0IHZvaWQgKmRhdGEp
Owotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcG9zdF9zZXQo
RXZhc19PYmplY3QgKm8sIHZvaWQgKigqY2IpKHZvaWQgKmRhdGEsIHZvaWQgKnByZV9kYXRhLCBF
dmFzX09iamVjdCAqbyksIGNvbnN0IHZvaWQgKmRhdGEpOwotdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV91cGRhdGVzX3Byb2Nlc3MoRXZhc19PYmplY3QgKm8pOwotdm9pZCBld2tfdGlsZWRf
YmFja2luZ19zdG9yZV91cGRhdGVzX2NsZWFyKEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nv
b3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2YWx1ZSk7
Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0ICpvKTsKLXZv
aWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3NjYWxlX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIHZhbHVlKTsKLQotRXdrX1RpbGVfVW51c2VkX0NhY2hlICpld2tfdGlsZWRf
YmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
Owotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoRXZh
c19PYmplY3QgKm8sIEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLQotRWluYV9Cb29sIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpvLCBF
dmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZs
b2F0IHpvb20pOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
cmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9v
bSk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNf
T2JqZWN0ICpvKTsKLQotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVf
cmVuZGVyKEV2YXNfT2JqZWN0ICpvKTsKLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9lbmFibGVfcmVuZGVyKEV2YXNfT2JqZWN0ICpvKTsKK0V2YXNfT2JqZWN0KiBld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9hZGQoRXZhcyogZSk7CisKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcmVuZGVyX2NiX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICgqIGNiKSh2b2lkKiBk
YXRhLCBFd2tfVGlsZSogdCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpLCBjb25zdCB2b2lk
KiBkYXRhKTsKKworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxs
X29mZnNldF9zZXQoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KTsK
K0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfYWRk
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5KTsKK0VpbmFfQm9v
bCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfaW5uZXJfb2Zmc2V0X2FkZChFdmFzX09i
amVjdCogbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsKKworRWluYV9Cb29sIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCogem9vbSwg
RXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSwgRXZhc19Db29yZCogb2ZmeCwgRXZhc19Db29y
ZCogb2ZmeSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Nl
dChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBj
eSk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZpeF9vZmZzZXRzKEV2YXNfT2JqZWN0
KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jv
b2wgc21vb3RoX3NjYWxlKTsKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRh
dGUoRXZhc19PYmplY3QqIG8sIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiB1cGRhdGUpOwordm9pZCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcHJlX3NldChFdmFzX09iamVj
dCogbywgdm9pZCooKmNiKSh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCAqbyksIGNvbnN0IHZvaWQq
IGRhdGEpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcG9z
dF9zZXQoRXZhc19PYmplY3QqIG8sIHZvaWQqKCpjYikodm9pZCogZGF0YSwgdm9pZCogcHJlX2Rh
dGEsIEV2YXNfT2JqZWN0ICpvKSwgY29uc3Qgdm9pZCogZGF0YSk7Cit2b2lkIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2VzcyhFdmFzX09iamVjdCogbyk7Cit2b2lkIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfY2xlYXIoRXZhc19PYmplY3QqIG8pOwordm9pZCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9jb250ZW50c19yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2
YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfZGlzYWJsZWRfdXBkYXRlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZh
bHVlKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goRXZhc19PYmplY3QqIG8p
Owordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVfc2NhbGVfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wgdmFsdWUpOworCitFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfdW51c2VkX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVj
dCogbyk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfdW51c2VkX2NhY2hlX3Nl
dChFdmFzX09iamVjdCogbywgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0dWMpOworCitFaW5hX0Jv
b2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3Qq
IG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQg
aCwgZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3Jl
bmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIG8sIHVuc2lnbmVkIGludCBuLCBmbG9h
dCB6b29tKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwo
RXZhc19PYmplY3QqIG8pOworCitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlz
YWJsZV9yZW5kZXIoRXZhc19PYmplY3QqIG8pOworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX2VuYWJsZV9yZW5kZXIoRXZhc19PYmplY3QqIG8pOwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRf
bWF0cml4LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5oCmluZGV4
IDA0ZWIzYzk3ZGRlY2M3ZmFkYTYxNWZiYTAzOTJmNDE5OTViYmRlMmYuLmM0MzdjMzdiYzkyOTY3
ODhhYTVmMzgxNzMyNWQyYTRmMWE4ODVhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdGlsZWRfbWF0cml4LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9tYXRyaXguaApAQCAtMjYsMzMgKzI2LDMzIEBACiAjaW5jbHVkZSA8RXZhcy5oPgogCiAv
KiBtYXRyaXggb2YgdGlsZXMgKi8KLUV3a19UaWxlX01hdHJpeCAqZXdrX3RpbGVfbWF0cml4X25l
dyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgdW5zaWduZWQgbG9uZyBjb2xzLCB1bnNpZ25l
ZCBsb25nIHJvd3MsIEV2YXNfQ29sb3JzcGFjZSBjc3BhY2UsIHZvaWQgKCpyZW5kZXJfY2IpKHZv
aWQgKmRhdGEsIEV3a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlKSwgY29u
c3Qgdm9pZCAqcmVuZGVyX2RhdGEpOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfZnJlZShFd2tfVGls
ZV9NYXRyaXggKnRtKTsKK0V3a19UaWxlX01hdHJpeCogZXdrX3RpbGVfbWF0cml4X25ldyhFd2tf
VGlsZV9VbnVzZWRfQ2FjaGUqIHR1YywgdW5zaWduZWQgbG9uZyBjb2xzLCB1bnNpZ25lZCBsb25n
IHJvd3MsIEV2YXNfQ29sb3JzcGFjZSBjc3BhY2UsIHZvaWQgKCogcmVuZGVyX2NiKSh2b2lkKiBk
YXRhLCBFd2tfVGlsZSogdCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIHVwZGF0ZSksIGNvbnN0IHZv
aWQqIHJlbmRlcl9kYXRhKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X2ZyZWUoRXdrX1RpbGVfTWF0
cml4KiB0bSk7CiAKLXZvaWQgZXdrX3RpbGVfbWF0cml4X3Jlc2l6ZShFd2tfVGlsZV9NYXRyaXgg
KnRtLCB1bnNpZ25lZCBsb25nIGNvbHMsIHVuc2lnbmVkIGxvbmcgcm93cyk7Cit2b2lkIGV3a190
aWxlX21hdHJpeF9yZXNpemUoRXdrX1RpbGVfTWF0cml4KiB0bSwgdW5zaWduZWQgbG9uZyBjb2xz
LCB1bnNpZ25lZCBsb25nIHJvd3MpOwogCi1Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxl
X21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KGNvbnN0IEV3a19UaWxlX01hdHJpeCAqdG0pOworRXdr
X1RpbGVfVW51c2VkX0NhY2hlKiBld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChjb25z
dCBFd2tfVGlsZV9NYXRyaXgqIHRtKTsKIAotRXdrX1RpbGUgKmV3a190aWxlX21hdHJpeF90aWxl
X2V4YWN0X2dldChFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWdu
ZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOwotRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxl
X2V4YWN0X2V4aXN0cyhFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5z
aWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOwotRXdrX1RpbGUgKmV3a190aWxlX21hdHJpeF90
aWxlX25lYXJlc3RfZ2V0KEV3a19UaWxlX01hdHJpeCAqdG0sIHVuc2lnbmVkIGxvbmcgY29sLCB1
bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7Ci1Fd2tfVGlsZSAqZXdrX3RpbGVfbWF0cml4
X3RpbGVfbmV3KEV3a19UaWxlX01hdHJpeCAqdG0sIEV2YXMgKmV2YXMsIHVuc2lnbmVkIGxvbmcg
Y29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVf
bWF0cml4X3RpbGVfcHV0KEV3a19UaWxlX01hdHJpeCAqdG0sIEV3a19UaWxlICp0LCBkb3VibGUg
bGFzdF91c2VkKTsKK0V3a19UaWxlKiBld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9nZXQoRXdr
X1RpbGVfTWF0cml4KiB0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBm
bG9hdCB6b29tKTsKK0VpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHMo
RXdrX1RpbGVfTWF0cml4KiB0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93
LCBmbG9hdCB6b29tKTsKK0V3a19UaWxlKiBld2tfdGlsZV9tYXRyaXhfdGlsZV9uZWFyZXN0X2dl
dChFd2tfVGlsZV9NYXRyaXgqIHRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyBy
b3csIGZsb2F0IHpvb20pOworRXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tf
VGlsZV9NYXRyaXgqIHRtLCBFdmFzKiBldmFzLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQg
bG9uZyByb3csIGZsb2F0IHpvb20pOworRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX3B1
dChFd2tfVGlsZV9NYXRyaXgqIHRtLCBFd2tfVGlsZSogdCwgZG91YmxlIGxhc3RfdXNlZCk7CiAK
LUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGUoRXdrX1RpbGVfTWF0cml4ICp0
bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBjb25zdCBFaW5hX1JlY3Rh
bmdsZSAqdXBkYXRlKTsKLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVfZnVs
bChFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyBy
b3cpOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01h
dHJpeCAqdG0sIEV3a19UaWxlICp0KTsKK0VpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV91
cGRhdGUoRXdrX1RpbGVfTWF0cml4KiB0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxv
bmcgcm93LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogdXBkYXRlKTsKK0VpbmFfQm9vbCBld2tfdGls
ZV9tYXRyaXhfdGlsZV91cGRhdGVfZnVsbChFd2tfVGlsZV9NYXRyaXgqIHRtLCB1bnNpZ25lZCBs
b25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3cpOwordm9pZCBld2tfdGlsZV9tYXRyaXhfdGlsZV91
cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCogdG0sIEV3a19UaWxlKiB0KTsKIAotRWluYV9C
b29sIGV3a190aWxlX21hdHJpeF91cGRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSwgY29uc3QgRWlu
YV9SZWN0YW5nbGUgKnVwZGF0ZSwgZmxvYXQgem9vbSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF91
cGRhdGVzX3Byb2Nlc3MoRXdrX1RpbGVfTWF0cml4ICp0bSk7Ci12b2lkIGV3a190aWxlX21hdHJp
eF91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCAqdG0pOwotdm9pZCBld2tfdGlsZV9tYXRy
aXhfZnJlZXplKEV3a19UaWxlX01hdHJpeCAqdG0pOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfdGhh
dyhFd2tfVGlsZV9NYXRyaXggKnRtKTsKK0VpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdXBkYXRl
KEV3a19UaWxlX01hdHJpeCogdG0sIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiB1cGRhdGUsIGZsb2F0
IHpvb20pOwordm9pZCBld2tfdGlsZV9tYXRyaXhfdXBkYXRlc19wcm9jZXNzKEV3a19UaWxlX01h
dHJpeCogdG0pOwordm9pZCBld2tfdGlsZV9tYXRyaXhfdXBkYXRlc19jbGVhcihFd2tfVGlsZV9N
YXRyaXgqIHRtKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X2ZyZWV6ZShFd2tfVGlsZV9NYXRyaXgq
IHRtKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X3RoYXcoRXdrX1RpbGVfTWF0cml4KiB0bSk7CiAK
IC8vIHJlbW92ZSBtZSEKLSAgICB2b2lkIGV3a190aWxlX21hdHJpeF9kYmcoY29uc3QgRXdrX1Rp
bGVfTWF0cml4ICp0bSk7Ci0gICAgdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfZGJnKGNvbnN0
IEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLSAgICB2b2lkIGV3a190aWxlX2FjY291bnRp
bmdfZGJnKHZvaWQpOwordm9pZCBld2tfdGlsZV9tYXRyaXhfZGJnKGNvbnN0IEV3a19UaWxlX01h
dHJpeCogdG0pOwordm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfZGJnKGNvbnN0IEV3a19UaWxl
X1VudXNlZF9DYWNoZSogdHVjKTsKK3ZvaWQgZXdrX3RpbGVfYWNjb3VudGluZ19kYmcodm9pZCk7
CiAKIAogI2VuZGlmIC8vIGV3a190aWxlZF9tYXRyaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9tb2RlbC5oCmluZGV4IDEwMzM2MTZkNDI0ZGU0YjE2OGYyODQ3OWQ0MDFlYTJjYmU0
Y2UzZWQuLmU2NWYzMTBiZTBlZDAyZDVkZTgxZjg1ZmY5N2IwOTQ1MDYzZThhZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsLmgKQEAgLTI2LDMxICsyNiwzMSBAQAogI2lu
Y2x1ZGUgPEV2YXMuaD4KIAogLyogbW9kZWwgKi8KLUV3a19UaWxlICpld2tfdGlsZV9uZXcoRXZh
cyAqZXZhcywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20sIEV2YXNfQ29s
b3JzcGFjZSBjc3BhY2UpOwotdm9pZCBld2tfdGlsZV9mcmVlKEV3a19UaWxlICp0KTsKLXZvaWQg
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFyKEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsK
LXZvaWQgZXdrX3RpbGVfc2hvdyhFd2tfVGlsZSAqdCk7Ci12b2lkIGV3a190aWxlX2hpZGUoRXdr
X1RpbGUgKnQpOwotRWluYV9Cb29sIGV3a190aWxlX3Zpc2libGVfZ2V0KEV3a19UaWxlICp0KTsK
LXZvaWQgZXdrX3RpbGVfdXBkYXRlX2Z1bGwoRXdrX1RpbGUgKnQpOwotdm9pZCBld2tfdGlsZV91
cGRhdGVfYXJlYShFd2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnIpOwotdm9pZCBl
d2tfdGlsZV91cGRhdGVzX3Byb2Nlc3MoRXdrX1RpbGUgKnQsIHZvaWQgKCpjYikodm9pZCAqZGF0
YSwgRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICp1cGRhdGUpLCBjb25zdCB2b2lk
ICpkYXRhKTsKLXZvaWQgZXdrX3RpbGVfdXBkYXRlc19jbGVhcihFd2tfVGlsZSAqdCk7CitFd2tf
VGlsZSogZXdrX3RpbGVfbmV3KEV2YXMqIGV2YXMsIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBo
LCBmbG9hdCB6b29tLCBFdmFzX0NvbG9yc3BhY2UgY3NwYWNlKTsKK3ZvaWQgZXdrX3RpbGVfZnJl
ZShFd2tfVGlsZSogdCk7Cit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9jbGVhcihFd2tfVGls
ZV9VbnVzZWRfQ2FjaGUqIHR1Yyk7Cit2b2lkIGV3a190aWxlX3Nob3coRXdrX1RpbGUqIHQpOwor
dm9pZCBld2tfdGlsZV9oaWRlKEV3a19UaWxlKiB0KTsKK0VpbmFfQm9vbCBld2tfdGlsZV92aXNp
YmxlX2dldChFd2tfVGlsZSogdCk7Cit2b2lkIGV3a190aWxlX3VwZGF0ZV9mdWxsKEV3a19UaWxl
KiB0KTsKK3ZvaWQgZXdrX3RpbGVfdXBkYXRlX2FyZWEoRXdrX1RpbGUqIHQsIGNvbnN0IEVpbmFf
UmVjdGFuZ2xlKiByKTsKK3ZvaWQgZXdrX3RpbGVfdXBkYXRlc19wcm9jZXNzKEV3a19UaWxlKiB0
LCB2b2lkICgqIGNiKSh2b2lkKiBkYXRhLCBFd2tfVGlsZSogdCwgY29uc3QgRWluYV9SZWN0YW5n
bGUqIHVwZGF0ZSksIGNvbnN0IHZvaWQqIGRhdGEpOwordm9pZCBld2tfdGlsZV91cGRhdGVzX2Ns
ZWFyKEV3a19UaWxlKiB0KTsKIAogLyogY2FjaGUgb2YgdW51c2VkIHRpbGVzICovCi1Fd2tfVGls
ZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3VudXNlZF9jYWNoZV9uZXcoc2l6ZV90IG1heCk7Ci12
b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9sb2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0NhY2hl
ICp0dWMsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29v
cmQgaCwgZmxvYXQgem9vbSk7Ci12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV91bmxvY2tfYXJl
YShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci1Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3
a190aWxlX3VudXNlZF9jYWNoZV9yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwotdm9p
ZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdW5yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMp
OworRXdrX1RpbGVfVW51c2VkX0NhY2hlKiBld2tfdGlsZV91bnVzZWRfY2FjaGVfbmV3KHNpemVf
dCBtYXgpOwordm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfbG9ja19hcmVhKEV3a19UaWxlX1Vu
dXNlZF9DYWNoZSogdHVjLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pOwordm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVf
dW5sb2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0dWMpOworRXdrX1RpbGVfVW51c2Vk
X0NhY2hlKiBld2tfdGlsZV91bnVzZWRfY2FjaGVfcmVmKEV3a19UaWxlX1VudXNlZF9DYWNoZSog
dHVjKTsKK3ZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3VucmVmKEV3a19UaWxlX1VudXNlZF9D
YWNoZSogdHVjKTsKIAotdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfZGlydHkoRXdrX1RpbGVf
VW51c2VkX0NhY2hlICp0dWMpOwordm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfZGlydHkoRXdr
X1RpbGVfVW51c2VkX0NhY2hlKiB0dWMpOwogCi12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9m
cmVlemUoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwotdm9pZCBld2tfdGlsZV91bnVzZWRf
Y2FjaGVfdGhhdyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Cit2b2lkIGV3a190aWxlX3Vu
dXNlZF9jYWNoZV9mcmVlemUoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0dWMpOwordm9pZCBld2tf
dGlsZV91bnVzZWRfY2FjaGVfdGhhdyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHR1Yyk7CiAKLUVp
bmFfQm9vbCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9nZXQoRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlICp0dWMsIEV3a19UaWxlICp0KTsKLUVpbmFfQm9vbCBld2tfdGlsZV91bnVzZWRfY2FjaGVf
dGlsZV9wdXQoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMsIEV3a19UaWxlICp0LCB2b2lkICgq
dGlsZV9mcmVlX2NiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCksIGNvbnN0IHZvaWQgKmRhdGEp
OworRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVz
ZWRfQ2FjaGUqIHR1YywgRXdrX1RpbGUqIHQpOworRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9j
YWNoZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHR1YywgRXdrX1RpbGUqIHQsIHZv
aWQgKCogdGlsZV9mcmVlX2NiKSh2b2lkKiBkYXRhLCBFd2tfVGlsZSogdCksIGNvbnN0IHZvaWQq
IGRhdGEpOwogCiAjZW5kaWYgLy8gZXdrX3RpbGVkX21vZGVsX2gKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaAppbmRleCBjZTY1ZjQzODg5ZWExMzQ0ZWQ1NmEwYmVm
MmEwODM5MzExYmY2NzNlLi45NDg5NmM0ZWEzMjRlYmFmOTc1OTU4ZTE0ODU0MmNhY2IwNzEwOTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaApAQCAtNTAsNyAr
NTAsNyBAQCBleHRlcm4gaW50IF9ld2tfdGlsZWRfbG9nX2RvbTsKIAogI2RlZmluZSBSRUFMTE9D
X09SX09PTV9SRVQocHRyLCBzaXplLCAuLi4pICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB2b2lkICpfX3RtcF9wdHI7ICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBfX3RtcF9wdHI7ICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICBfX3RtcF9wdHIgPSByZWFsbG9jKHB0ciwgc2l6ZSk7
ICAgICAgICAgXAogICAgICAgICBpZiAoIV9fdG1wX3B0ciAmJiAoc2l6ZSkgPiAwKSB7ICAgICAg
ICAgXAogICAgICAgICAgICAgT09NKCJyZWFsbG9jIiwgKHNpemUpKTsgICAgICAgICAgICAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKaW5kZXggMDhiM2MwM2VjOGFlM2MyOTMzMWI0NDgw
NmQyOGYyYzFjNmE2MjMyNS4uNWMxMGEwMjNjYWMwYmY3YTQ3YzA2MmU2ZTE4ZTQ5ZDBkZmUzY2My
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCkBAIC0zOCwxNSArMzgsMTUgQEAKICAq
IEBwYXJhbSBzdXJmYWNlIGNhaXJvIHJlcHJlc2VudGF0aW9uIG9mIGFuIGltYWdlCiAgKiBAcmV0
dXJuIGNvbnZlcnRlZCBjYWlyb19zdXJmYWNlIG9iamVjdCB0byB0aGUgRXZhc19PYmplY3QKICAq
LwotRXZhc19PYmplY3QgKmV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoRXZh
cyAqY2FudmFzLCBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2UpCitFdmFzX09iamVjdCogZXdrX3V0
aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZChFdmFzKiBjYW52YXMsIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSkKIHsKICAgICBjYWlyb19zdGF0dXNfdCBzdGF0dXM7CiAgICAgY2Fpcm9f
c3VyZmFjZV90eXBlX3QgdHlwZTsKICAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7CiAgICAgaW50
IHcsIGgsIHN0cmlkZTsKLSAgICBFdmFzX09iamVjdCAqaW1hZ2U7Ci0gICAgY29uc3Qgdm9pZCAq
c3JjOwotICAgIHZvaWQgKmRzdDsKKyAgICBFdmFzX09iamVjdCogaW1hZ2U7CisgICAgY29uc3Qg
dm9pZCogc3JjOworICAgIHZvaWQqIGRzdDsKIAogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
dXJmYWNlLCAwKTsKQEAgLTE2Nyw4ICsxNjcsOCBAQCB1bnNpZ25lZCBld2tfdXRpbF93b3JrZXJf
dGhyZWFkX2NvdW50KCkKIGludCBld2tfdXRpbF9kcGlfZ2V0KHZvaWQpCiB7CiAjaWZkZWYgSEFW
RV9FQ09SRV9YCi0gICAgIHJldHVybiBlY29yZV94X2RwaV9nZXQoKTsKKyAgICByZXR1cm4gZWNv
cmVfeF9kcGlfZ2V0KCk7CiAjZWxzZQotICAgICByZXR1cm4gMTYwOworICAgIHJldHVybiAxNjA7
CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5o
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmgKaW5kZXggM2IzMmQ5Yzg4ZDVhMWJl
ZDcyNzQyOThjNTNlMDIxNWRkZDFmNjhhYS4uMjM3MTg4OGEwMTVlYzcyNGY5OTJiZTA3OGI5YjNh
NGE2NTdhMGMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmgKQEAgLTI5LDYgKzI5LDYgQEAK
ICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAotRXZhc19PYmplY3QgKmV3
a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoRXZhcyAqY2FudmFzLCBjYWlyb19z
dXJmYWNlX3QgKnN1cmZhY2UpOworRXZhc19PYmplY3QqIGV3a191dGlsX2ltYWdlX2Zyb21fY2Fp
cm9fc3VyZmFjZV9hZGQoRXZhcyogY2FudmFzLCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpOwog
CiAjZW5kaWYgLy8gZXdrX3V0aWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXgg
Y2U1NTVmZGVkMjFlZDg4YjRkY2UxMzcxM2YyZGY4ZjE1ZTZlYThlNS4uNDgyNGNiY2EyYTA1NTkx
ZGQ1ZGE2YjIxODJiMTZiNDM1MTk2MWRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
CkBAIC04OCw3MiArODgsNzIgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklFV19TQ1JPTExT
X1NJWkVfTUFYX0ZSRUUgPSAzMjsKICAqIEBpbnRlcm5hbAogICovCiBzdHJ1Y3QgX0V3a19WaWV3
X1ByaXZhdGVfRGF0YSB7Ci0gICAgV2ViQ29yZTo6UGFnZSAqcGFnZTsKLSAgICBXZWJDb3JlOjpT
ZXR0aW5ncyAqcGFnZV9zZXR0aW5nczsKLSAgICBXZWJDb3JlOjpGcmFtZSAqbWFpbl9mcmFtZTsK
KyAgICBXZWJDb3JlOjpQYWdlKiBwYWdlOworICAgIFdlYkNvcmU6OlNldHRpbmdzKiBwYWdlX3Nl
dHRpbmdzOworICAgIFdlYkNvcmU6OkZyYW1lKiBtYWluX2ZyYW1lOwogICAgIFdlYkNvcmU6OlZp
ZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0X2FyZ3VtZW50czsKLSAgICBFd2tfSGlzdG9yeSAqaGlz
dG9yeTsKKyAgICBFd2tfSGlzdG9yeSogaGlzdG9yeTsKICAgICBzdHJ1Y3QgewogICAgICAgICB2
b2lkKiBjb250ZXh0OwogICAgICAgICBFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyX0NiIGZ1bmN0
aW9uOwogICAgIH0gY3VzdG9tX3Jlc291cmNlX2hhbmRsZXI7CiAgICAgc3RydWN0IHsKICAgICAg
ICAgRXdrX01lbnUgbWVudTsKLSAgICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICptZW51
X2NsaWVudDsKKyAgICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51X2NsaWVudDsK
ICAgICB9IHBvcHVwOwogICAgIHN0cnVjdCB7Ci0gICAgICAgIEVpbmFfUmVjdGFuZ2xlICphcnJh
eTsKKyAgICAgICAgRWluYV9SZWN0YW5nbGUqIGFycmF5OwogICAgICAgICBzaXplX3QgY291bnQ7
CiAgICAgICAgIHNpemVfdCBhbGxvY2F0ZWQ7CiAgICAgfSByZXBhaW50czsKICAgICBzdHJ1Y3Qg
ewotICAgICAgICBFd2tfU2Nyb2xsX1JlcXVlc3QgKmFycmF5OworICAgICAgICBFd2tfU2Nyb2xs
X1JlcXVlc3QqIGFycmF5OwogICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgIHNpemVfdCBh
bGxvY2F0ZWQ7CiAgICAgfSBzY3JvbGxzOwogICAgIHVuc2lnbmVkIGludCBpbWg7IC8qKjwgaW5w
dXQgbWV0aG9kIGhpbnRzICovCiAgICAgc3RydWN0IHsKLSAgICAgICAgRWluYV9Cb29sIHZpZXdf
Y2xlYXJlZDoxOwotICAgICAgICBFaW5hX0Jvb2wgbmVlZF90b3VjaF9ldmVudHM6MTsKKyAgICAg
ICAgRWluYV9Cb29sIHZpZXdfY2xlYXJlZCA6IDE7CisgICAgICAgIEVpbmFfQm9vbCBuZWVkX3Rv
dWNoX2V2ZW50cyA6IDE7CiAgICAgfSBmbGFnczsKICAgICBzdHJ1Y3QgewotICAgICAgICBjb25z
dCBjaGFyICp1c2VyX2FnZW50OwotICAgICAgICBjb25zdCBjaGFyICp1c2VyX3N0eWxlc2hlZXQ7
Ci0gICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nX2RlZmF1bHQ7Ci0gICAgICAgIGNvbnN0IGNo
YXIgKmVuY29kaW5nX2N1c3RvbTsKLSAgICAgICAgY29uc3QgY2hhciAqdGhlbWU7Ci0gICAgICAg
IGNvbnN0IGNoYXIgKmxvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aDsKKyAgICAgICAgY29uc3Qg
Y2hhciogdXNlcl9hZ2VudDsKKyAgICAgICAgY29uc3QgY2hhciogdXNlcl9zdHlsZXNoZWV0Owor
ICAgICAgICBjb25zdCBjaGFyKiBlbmNvZGluZ19kZWZhdWx0OworICAgICAgICBjb25zdCBjaGFy
KiBlbmNvZGluZ19jdXN0b207CisgICAgICAgIGNvbnN0IGNoYXIqIHRoZW1lOworICAgICAgICBj
b25zdCBjaGFyKiBsb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGg7CiAgICAgICAgIGludCBmb250
X21pbmltdW1fc2l6ZTsKICAgICAgICAgaW50IGZvbnRfbWluaW11bV9sb2dpY2FsX3NpemU7CiAg
ICAgICAgIGludCBmb250X2RlZmF1bHRfc2l6ZTsKICAgICAgICAgaW50IGZvbnRfbW9ub3NwYWNl
X3NpemU7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfc3RhbmRhcmQ7Ci0gICAgICAgIGNvbnN0
IGNoYXIgKmZvbnRfY3Vyc2l2ZTsKLSAgICAgICAgY29uc3QgY2hhciAqZm9udF9tb25vc3BhY2U7
Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfZmFudGFzeTsKLSAgICAgICAgY29uc3QgY2hhciAq
Zm9udF9zZXJpZjsKLSAgICAgICAgY29uc3QgY2hhciAqZm9udF9zYW5zX3NlcmlmOwotICAgICAg
ICBFaW5hX0Jvb2wgYXV0b19sb2FkX2ltYWdlczoxOwotICAgICAgICBFaW5hX0Jvb2wgYXV0b19z
aHJpbmtfaW1hZ2VzOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBlbmFibGVfYXV0b19yZXNpemVfd2lu
ZG93OjE7Ci0gICAgICAgIEVpbmFfQm9vbCBlbmFibGVfZGV2ZWxvcGVyX2V4dHJhczoxOwotICAg
ICAgICBFaW5hX0Jvb2wgZW5hYmxlX3NjcmlwdHM6MTsKLSAgICAgICAgRWluYV9Cb29sIGVuYWJs
ZV9wbHVnaW5zOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBlbmFibGVfZnJhbWVfZmxhdHRlbmluZzox
OwotICAgICAgICBFaW5hX0Jvb2wgZW5jb2RpbmdfZGV0ZWN0b3I6MTsKLSAgICAgICAgRWluYV9C
b29sIHNjcmlwdHNfd2luZG93X29wZW46MTsKLSAgICAgICAgRWluYV9Cb29sIHNjcmlwdHNfY2Fu
X2Nsb3NlX3dpbmRvd3M6MTsKLSAgICAgICAgRWluYV9Cb29sIHJlc2l6YWJsZV90ZXh0YXJlYXM6
MTsKLSAgICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJvd3Npbmc6MTsKLSAgICAgICAgRWluYV9C
b29sIGNhcmV0X2Jyb3dzaW5nOjE7Ci0gICAgICAgIEVpbmFfQm9vbCBzcGF0aWFsX25hdmlnYXRp
b246MTsKLSAgICAgICAgRWluYV9Cb29sIGxvY2FsX3N0b3JhZ2U6MTsKLSAgICAgICAgRWluYV9C
b29sIG9mZmxpbmVfYXBwX2NhY2hlOiAxOwotICAgICAgICBFaW5hX0Jvb2wgcGFnZV9jYWNoZTog
MTsKKyAgICAgICAgY29uc3QgY2hhciogZm9udF9zdGFuZGFyZDsKKyAgICAgICAgY29uc3QgY2hh
ciogZm9udF9jdXJzaXZlOworICAgICAgICBjb25zdCBjaGFyKiBmb250X21vbm9zcGFjZTsKKyAg
ICAgICAgY29uc3QgY2hhciogZm9udF9mYW50YXN5OworICAgICAgICBjb25zdCBjaGFyKiBmb250
X3NlcmlmOworICAgICAgICBjb25zdCBjaGFyKiBmb250X3NhbnNfc2VyaWY7CisgICAgICAgIEVp
bmFfQm9vbCBhdXRvX2xvYWRfaW1hZ2VzIDogMTsKKyAgICAgICAgRWluYV9Cb29sIGF1dG9fc2hy
aW5rX2ltYWdlcyA6IDE7CisgICAgICAgIEVpbmFfQm9vbCBlbmFibGVfYXV0b19yZXNpemVfd2lu
ZG93IDogMTsKKyAgICAgICAgRWluYV9Cb29sIGVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzIDogMTsK
KyAgICAgICAgRWluYV9Cb29sIGVuYWJsZV9zY3JpcHRzIDogMTsKKyAgICAgICAgRWluYV9Cb29s
IGVuYWJsZV9wbHVnaW5zIDogMTsKKyAgICAgICAgRWluYV9Cb29sIGVuYWJsZV9mcmFtZV9mbGF0
dGVuaW5nIDogMTsKKyAgICAgICAgRWluYV9Cb29sIGVuY29kaW5nX2RldGVjdG9yIDogMTsKKyAg
ICAgICAgRWluYV9Cb29sIHNjcmlwdHNfd2luZG93X29wZW4gOiAxOworICAgICAgICBFaW5hX0Jv
b2wgc2NyaXB0c19jYW5fY2xvc2Vfd2luZG93cyA6IDE7CisgICAgICAgIEVpbmFfQm9vbCByZXNp
emFibGVfdGV4dGFyZWFzIDogMTsKKyAgICAgICAgRWluYV9Cb29sIHByaXZhdGVfYnJvd3Npbmcg
OiAxOworICAgICAgICBFaW5hX0Jvb2wgY2FyZXRfYnJvd3NpbmcgOiAxOworICAgICAgICBFaW5h
X0Jvb2wgc3BhdGlhbF9uYXZpZ2F0aW9uIDogMTsKKyAgICAgICAgRWluYV9Cb29sIGxvY2FsX3N0
b3JhZ2UgOiAxOworICAgICAgICBFaW5hX0Jvb2wgb2ZmbGluZV9hcHBfY2FjaGUgOiAxOworICAg
ICAgICBFaW5hX0Jvb2wgcGFnZV9jYWNoZSA6IDE7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICBmbG9hdCBtaW5fc2NhbGU7CiAgICAgICAgICAgICBmbG9hdCBtYXhfc2NhbGU7Ci0gICAg
ICAgICAgICBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZToxOworICAgICAgICAgICAgRWluYV9Cb29s
IHVzZXJfc2NhbGFibGUgOiAxOwogICAgICAgICB9IHpvb21fcmFuZ2U7CiAgICAgICAgIGZsb2F0
IGRldmljZV9waXhlbF9yYXRpbzsKICAgICAgICAgZG91YmxlIGRvbV90aW1lcl9pbnRlcnZhbDsK
QEAgLTE3Miw3ICsxNzIsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBFdmFzX0Nvb3JkIHgsIHk7CiAgICAgICAgIH0gY2Vu
dGVyOwotICAgICAgICBFY29yZV9BbmltYXRvciAqYW5pbWF0b3I7CisgICAgICAgIEVjb3JlX0Fu
aW1hdG9yKiBhbmltYXRvcjsKICAgICB9IGFuaW1hdGVkX3pvb207CiB9OwogCkBAIC0xODEsMzMg
KzE4MSwzMyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAjZWxzZQogI2RlZmlu
ZSBFV0tfVklFV19UWVBFX0NIRUNLKG8sIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjb25zdCBjaGFyICpfdG1wX290
eXBlID0gZXZhc19vYmplY3RfdHlwZV9nZXQobyk7ICAgICAgICAgICAgICAgXAotICAgICAgICBj
b25zdCBFdmFzX1NtYXJ0ICpfdG1wX3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7
ICAgICAgXAorICAgICAgICBjb25zdCBjaGFyKiBfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlw
ZV9nZXQobyk7ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFzX1NtYXJ0KiBfdG1w
X3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAgICAgXAogICAgICAgICBpZiAo
RUlOQV9VTkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3Qg
YSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAg
ICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAg
ICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MgKl90bXBfc2MgPSBldmFzX3NtYXJ0X2NsYXNz
X2dldChfdG1wX3MpOyBcCisgICAgICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIF90bXBfc2Mg
PSBldmFzX3NtYXJ0X2NsYXNzX2dldChfdG1wX3MpOyBcCiAgICAgICAgIGlmIChFSU5BX1VOTElL
RUxZKCFfdG1wX3NjKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICBFSU5BX0xPR19DUklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9i
amVjdCEiLCBvLCAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgIF90bXBfb3R5
cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYg
KEVJTkFfVU5MSUtFTFkoX3RtcF9zYy0+ZGF0YSAhPSBFV0tfVklFV19UWVBFX1NUUikpIHsgICAg
ICAgIFwKICAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAoIiVwICglcykgaXMgbm90
IG9mIGFuIGV3a192aWV3IChuZWVkICVwLCBnb3QgJXApISIsICAgIFwKLSAgICAgICAgICAgICAg
ICAgbywgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIiwgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgICAgICAgRVdLX1ZJRVdfVFlQRV9TVFIsIF90bXBfc2MtPmRhdGEpOyAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBvLCBfdG1wX290eXBlID8gX3Rt
cF9vdHlwZSA6ICIobnVsbCkiLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIEVX
S19WSUVXX1RZUEVfU1RSLCBfdG1wX3NjLT5kYXRhKTsgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKICNlbmRp
ZgogCiAjZGVmaW5lIEVXS19WSUVXX1NEX0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfVmlld19T
bWFydF9EYXRhICopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhICpwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRf
ZGF0YV9nZXQobykKIAogI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwg
Li4uKSAgICAgICAgICBcCiAgICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7
ICAgICAgICAgICAgICAgIFwKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1By
aXZhdGVfRGF0YSB7CiAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfY2hhbmdlZChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBpZiAoc2Qt
PmNoYW5nZWQuYW55KQogICAgICAgICByZXR1cm47CkBAIC0yMzcsMjEgKzIzNywyMSBAQCBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
ICAgICBldmFzX29iamVjdF9zbWFydF9jaGFuZ2VkKHNkLT5zZWxmKTsKIH0KIAotc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAq
cHJpdiwgc2l6ZV90IHNpemUpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19yZXBhaW50c19y
ZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICB2
b2lkICp0bXAgPSByZWFsbG9jKHByaXYtPnJlcGFpbnRzLmFycmF5LCBzaXplICogc2l6ZW9mKEVp
bmFfUmVjdGFuZ2xlKSk7CisgICAgdm9pZCogdG1wID0gcmVhbGxvYyhwcml2LT5yZXBhaW50cy5h
cnJheSwgc2l6ZSAqIHNpemVvZihFaW5hX1JlY3RhbmdsZSkpOwogICAgIGlmICghdG1wKSB7CiAg
ICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgcmVhbGxvYyByZXBhaW50cyBhcnJheSB0byAlenUg
ZWxlbWVudHMuIiwgc2l6ZSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KICAg
ICBwcml2LT5yZXBhaW50cy5hbGxvY2F0ZWQgPSBzaXplOwotICAgIHByaXYtPnJlcGFpbnRzLmFy
cmF5ID0gKEVpbmFfUmVjdGFuZ2xlICopdG1wOworICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0g
KEVpbmFfUmVjdGFuZ2xlKil0bXA7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGlj
IHZvaWQgX2V3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQor
c3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29y
ZCBoKQogewotICAgIEVpbmFfUmVjdGFuZ2xlICpyOworICAgIEVpbmFfUmVjdGFuZ2xlKiByOwog
CiAgICAgLy8gZnByaW50ZihzdGRlcnIsICI+Pj4gcmVwYWludCByZXF1ZXN0ZWQ6ICVkLCVkKyVk
eCVkXG4iLCB4LCB5LCB3LCBoKTsKICAgICBpZiAocHJpdi0+cmVwYWludHMuYWxsb2NhdGVkID09
IHByaXYtPnJlcGFpbnRzLmNvdW50KSB7CkBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIHZvaWQg
X2V3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19D
b29yZCB4LCBFdmEKICAgICBEQkcoImFkZCByZXBhaW50ICVkLCAlZCslZHglZCIsIHgsIHksIHcs
IGgpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2goRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhICpwcml2KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNo
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBwcml2LT5yZXBhaW50cy5jb3Vu
dCA9IDA7CiAgICAgaWYgKHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA8PSBFV0tfVklFV19SRVBB
SU5UU19TSVpFX01BWF9GUkVFKQpAQCAtMjgzLDIyICsyODMsMjIgQEAgc3RhdGljIHZvaWQgX2V3
a192aWV3X3JlcGFpbnRzX2ZsdXNoKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKICAgICBf
ZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKHByaXYsIEVXS19WSUVXX1JFUEFJTlRTX1NJWkVfTUFY
X0ZSRUUpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zY3JvbGxzX3Jlc2l6ZShF
d2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVfdCBzaXplKQorc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc2Nyb2xsc19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBz
aXplX3Qgc2l6ZSkKIHsKLSAgICB2b2lkICp0bXAgPSByZWFsbG9jKHByaXYtPnNjcm9sbHMuYXJy
YXksIHNpemUgKiBzaXplb2YoRXdrX1Njcm9sbF9SZXF1ZXN0KSk7CisgICAgdm9pZCogdG1wID0g
cmVhbGxvYyhwcml2LT5zY3JvbGxzLmFycmF5LCBzaXplICogc2l6ZW9mKEV3a19TY3JvbGxfUmVx
dWVzdCkpOwogICAgIGlmICghdG1wKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgcmVh
bGxvYyBzY3JvbGxzIGFycmF5IHRvICV6dSBlbGVtZW50cy4iLCBzaXplKTsKICAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIHByaXYtPnNjcm9sbHMuYWxsb2NhdGVkID0gc2l6
ZTsKLSAgICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxfUmVxdWVzdCAqKXRtcDsK
KyAgICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxfUmVxdWVzdCopdG1wOwogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRk
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBk
eSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBo
LCBFaW5hX0Jvb2wgbWFpbl9zY3JvbGwpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsX2Fk
ZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQg
ZHksIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQg
aCwgRWluYV9Cb29sIG1haW5fc2Nyb2xsKQogewotICAgIEV3a19TY3JvbGxfUmVxdWVzdCAqcjsK
LSAgICBFd2tfU2Nyb2xsX1JlcXVlc3QgKnJfZW5kOworICAgIEV3a19TY3JvbGxfUmVxdWVzdCog
cjsKKyAgICBFd2tfU2Nyb2xsX1JlcXVlc3QqIHJfZW5kOwogICAgIEV2YXNfQ29vcmQgeDIgPSB4
ICsgdywgeTIgPSB5ICsgaDsKIAogICAgIHIgPSBwcml2LT5zY3JvbGxzLmFycmF5OwpAQCAtMzQ1
LDggKzM0NSw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRkKEV3a19WaWV3X1By
aXZhdGVfRGF0YSAqcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhCiAgICAgci0+bWFpbl9zY3JvbGwg
PSBtYWluX3Njcm9sbDsKICAgICBEQkcoImFkZCBzY3JvbGwgaW4gcmVnaW9uOiAlZCwgJWQrJWR4
JWQgJSswM2QsICUrMDNkIiwgeCwgeSwgdywgaCwgZHgsIGR5KTsKIAotICAgIEVpbmFfUmVjdGFu
Z2xlICpwcjsKLSAgICBFaW5hX1JlY3RhbmdsZSAqcHJfZW5kOworICAgIEVpbmFfUmVjdGFuZ2xl
KiBwcjsKKyAgICBFaW5hX1JlY3RhbmdsZSogcHJfZW5kOwogICAgIHNpemVfdCBjb3VudDsKICAg
ICBwciA9IHByaXYtPnJlcGFpbnRzLmFycmF5OwogICAgIGNvdW50ID0gcHJpdi0+cmVwYWludHMu
Y291bnQ7CkBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbF9h
ZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIGR4LCBFdmEKICAgICB9
CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSAqcHJpdikKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdikKIHsKICAgICBwcml2LT5zY3JvbGxzLmNvdW50ID0gMDsK
ICAgICBpZiAocHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPD0gRVdLX1ZJRVdfU0NST0xMU19TSVpF
X01BWF9GUkVFKQpAQCAtMzY2LDEwICszNjYsMTAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Nj
cm9sbHNfZmx1c2goRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQogfQogCiAvLyBEZWZhdWx0
IEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNf
aW4oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2Qs
IHByaXYpOwotICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciAqZmMgPSBwcml2LT5wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKTsKKyAgICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXIqIGZjID0gcHJp
di0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCk7CiAgICAgREJHKCJvPSVwLCBmYz0lcCIsIHNkLT5z
ZWxmLCBmYyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGZjLCBFSU5BX0ZB
TFNFKTsKIApAQCAtMzc4LDEwICszNzgsMTAgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfZm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIEVXS19WSUVXX1BSSVZf
R0VUKHNkLCBwcml2KTsKLSAgICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXIgKmZjID0gcHJpdi0+
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCk7CisgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBm
YyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpOwogICAgIERCRygibz0lcCwgZmM9JXAi
LCBzZC0+c2VsZiwgZmMpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmYywg
RUlOQV9GQUxTRSk7CiAKQEAgLTM5MCwyOSArMzkwLDI5IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICByZXR1
cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3Vz
ZV93aGVlbChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9X
aGVlbCAqZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChF
d2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYp
CiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX3doZWVsKHNkLT5tYWluX2ZyYW1l
LCBldik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24o
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYp
CitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQogewogICAgIHJl
dHVybiBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKHNkLT5tYWluX2ZyYW1lLCBldik7CiB9CiAK
LXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwICpldikKK3N0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldikKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRf
bW91c2VfdXAoc2QtPm1haW5fZnJhbWUsIGV2KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfbW91c2VfbW92ZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9Nb3ZlICpldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X21vdXNlX21vdmUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfTW92ZSogZXYpCiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUoc2Qt
Pm1haW5fZnJhbWUsIGV2KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRf
a2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rv
d24gKmV2KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQogewotICAg
IEV2YXNfT2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KHNkLT5zZWxm
KTsKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChz
ZC0+c2VsZik7CiAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBmcmFtZSA9IHNkLT5tYWluX2Zy
YW1lOwpAQCAtNDIwLDkgKzQyMCw5IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2CiAgICAgcmV0
dXJuIGV3a19mcmFtZV9mZWVkX2tleV9kb3duKGZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29u
c3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9V
cCogZXYpCiB7Ci0gICAgRXZhc19PYmplY3QgKmZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNl
ZF9nZXQoc2QtPnNlbGYpOworICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1l
X2ZvY3VzZWRfZ2V0KHNkLT5zZWxmKTsKIAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIGZyYW1l
ID0gc2QtPm1haW5fZnJhbWU7CkBAIC00MzAsMTE3ICs0MzAsMTE3IEBAIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3Qg
RXZhc19FdmVuCiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX2tleV91cChmcmFtZSwgZXYpOwog
fQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVfbWVzc2FnZShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgdW5zaWduZWQgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IGNoYXIgKnNvdXJjZUlEKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X2FkZF9jb25zb2xlX21lc3NhZ2UoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IGNo
YXIqIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3VyY2VJ
RCkKIHsKICAgICBJTkYoImNvbnNvbGUgbWVzc2FnZTogJXMgQCVkOiAlc1xuIiwgc291cmNlSUQs
IGxpbmVOdW1iZXIsIG1lc3NhZ2UpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
cnVuX2phdmFzY3JpcHRfYWxlcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfT2JqZWN0
ICpmcmFtZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9ydW5famF2YXNjcmlwdF9hbGVydChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19PYmpl
Y3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIElORigiamF2YXNjcmlwdCBh
bGVydDogJXNcbiIsIG1lc3NhZ2UpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFz
X09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCitzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgSU5G
KCJqYXZhc2NyaXB0IGNvbmZpcm06ICVzIiwgbWVzc2FnZSk7CiAgICAgSU5GKCJqYXZhc2NyaXB0
IGNvbmZpcm0gKEhBUkQgQ09ERUQpPyBZRVMiKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
Ci1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9zaG91bGRfaW50ZXJydXB0X2phdmFz
Y3JpcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QpCiB7CiAgICAgSU5GKCJzaG91bGQgaW50ZXJydXB0IGphdmFzY3JpcHQ/XG4iCi0gICAgICAg
ICAgICAiXHQoSEFSRCBDT0RFRCkgTk8iKTsKKyAgICAgICAgIlx0KEhBUkQgQ09ERUQpIE5PIik7
CiAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZh
c19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlLCBjb25zdCBjaGFyICpkZWZhdWx0
VmFsdWUsIGNoYXIgKip2YWx1ZSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1
bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19PYmplY3Qq
IGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNo
YXIqKiB2YWx1ZSkKIHsKICAgICAqdmFsdWUgPSBzdHJkdXAoInRlc3QiKTsKICAgICBFaW5hX0Jv
b2wgcmV0ID0gRUlOQV9UUlVFOwogICAgIElORigiamF2YXNjcmlwdCBwcm9tcHQ6XG4iCi0gICAg
ICAgICAgICAiXHQgICAgICBtZXNzYWdlOiAlc1xuIgotICAgICAgICAgICAgIlx0ZGVmYXVsdCB2
YWx1ZTogJXNcbiIKLSAgICAgICAgICAgICJcdGdpdmluZyBhbnN3ZXI6ICVzXG4iCi0gICAgICAg
ICAgICAiXHQgICAgICAgYnV0dG9uOiAlcyIsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgKnZhbHVl
LCByZXQ/Im9rIjoiY2FuY2VsIik7CisgICAgICAgICJcdCAgICAgIG1lc3NhZ2U6ICVzXG4iCisg
ICAgICAgICJcdGRlZmF1bHQgdmFsdWU6ICVzXG4iCisgICAgICAgICJcdGdpdmluZyBhbnN3ZXI6
ICVzXG4iCisgICAgICAgICJcdCAgICAgICBidXR0b246ICVzIiwgbWVzc2FnZSwgZGVmYXVsdFZh
bHVlLCAqdmFsdWUsIHJldCA/ICJvayIgOiAiY2FuY2VsIik7CiAKICAgICByZXR1cm4gcmV0Owog
fQogCiAvLyBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2
b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFz
X09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRh
ICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGktPmZvY3VzX2luKTsKICAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7CiB9CiAKLXN0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19P
YmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9j
dXNfb3V0KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9p
bmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKilkYXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfb3V0KTsKICAgICBz
ZC0+YXBpLT5mb2N1c19vdXQoc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91
c2Vfd2hlZWwodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50
X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwodm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19F
dmVudF9Nb3VzZV9XaGVlbCAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqKWV2ZW50X2lu
Zm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
KWRhdGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYgPSAoRXZhc19FdmVudF9Nb3Vz
ZV9XaGVlbCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tf
Vmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3do
ZWVsKTsKICAgICBzZC0+YXBpLT5tb3VzZV93aGVlbChzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVj
dCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9k
b3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZv
KQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9E
b3duICopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gKEV2
YXNfRXZlbnRfTW91c2VfRG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRh
KiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGktPm1vdXNlX2Rvd24pOwogICAgIHNkLT5hcGktPm1vdXNlX2Rvd24oc2QsIGV2KTsKIH0KIAot
c3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2
YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29u
X21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVu
dF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2ID0gKEV2YXNfRXZlbnRfTW91
c2VfVXAgKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ID0gKEV2
YXNfRXZlbnRfTW91c2VfVXAqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
LT5tb3VzZV91cCk7CiAgICAgc2QtPmFwaS0+bW91c2VfdXAoc2QsIGV2KTsKIH0KIAotc3RhdGlj
IHZvaWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19P
YmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91
c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRf
aW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2ID0gKEV2YXNfRXZlbnRfTW91
c2VfTW92ZSAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldiA9
IChFdmFzX0V2ZW50X01vdXNlX01vdmUqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpLT5tb3VzZV9tb3ZlKTsKICAgICBzZC0+YXBpLT5tb3VzZV9tb3ZlKHNkLCBldik7CiB9
CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfZG93bih2b2lkICpkYXRhLCBFdmFzICpl
LCBFdmFzX09iamVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9rZXlfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCog
ZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X0tleV9Eb3duICpldiA9IChFdmFzX0V2ZW50
X0tleV9Eb3duICopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChF
d2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9Eb3duKiBldiA9
IChFdmFzX0V2ZW50X0tleV9Eb3duKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2Qt
PmFwaS0+a2V5X2Rvd24pOwogICAgIHNkLT5hcGktPmtleV9kb3duKHNkLCBldik7CiB9CiAKLXN0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfdXAodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19P
YmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5
X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZv
KQogewotICAgIEV2YXNfRXZlbnRfS2V5X1VwICpldiA9IChFdmFzX0V2ZW50X0tleV9VcCAqKWV2
ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqKWRhdGE7CisgICAgRXZhc19FdmVudF9LZXlfVXAqIGV2ID0gKEV2YXNfRXZlbnRfS2V5
X1VwKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5X3VwKTsKICAg
ICBzZC0+YXBpLT5rZXlfdXAoc2QsIGV2KTsKIH0KIAotc3RhdGljIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCAqb3duZXIpCitzdGF0aWMgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1l
PiBfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lcikKIHsKLSAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAqZmxjID0gbmV3IFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKHNkLT5zZWxmKTsKKyAgICBXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbCogZmxjID0gbmV3IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
KHNkLT5zZWxmKTsKICAgICBpZiAoIWZsYykgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90
IGNyZWF0ZSBmcmFtZSBsb2FkZXIgY2xpZW50LiIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTU1
MiwxMCArNTUyLDEwIEBAIHN0YXRpYyBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IF9l
d2tfdmlld19jb3JlX2ZyYW1lX25ldyhFd2tfVmlld19TbWFydF9ECiAKIHN0YXRpYyBFdmFzX1Nt
YXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAotc3Rh
dGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkKQorc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3By
aXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewotICAgIEV3a19WaWV3X1ByaXZhdGVf
RGF0YSAqcHJpdiA9Ci0gICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEgKiljYWxsb2MoMSwg
c2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogcHJpdiA9CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWNhbGxvYygxLCBzaXpl
b2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKSk7CiAgICAgQXRvbWljU3RyaW5nIHM7CiAgICAgV2Vi
Q29yZTo6S1VSTCB1cmw7CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAg
ICAgcHJpdi0+c2V0dGluZ3MudXNlcl9zdHlsZXNoZWV0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQo
dXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcHJpdi0+c2V0dGluZ3MuZW5jb2Rp
bmdfZGVmYXVsdCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkCi0gICAgICAgIChwcml2LT5wYWdlX3Nl
dHRpbmdzLT5kZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaXYtPnBhZ2Vfc2V0dGluZ3Mt
PmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcHJpdi0+c2V0
dGluZ3MuZW5jb2RpbmdfY3VzdG9tID0gMDsKIAogICAgIHMgPSBwcml2LT5wYWdlX3NldHRpbmdz
LT5sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoKTsKQEAgLTY3MSw3ICs2NzEsNyBAQCBzdGF0aWMg
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QpCiAgICAgICAgIGdvdG8gZXJyb3JfbWFpbl9mcmFtZTsKICAgICB9CiAKLSAgICBw
cml2LT5oaXN0b3J5ID0gZXdrX2hpc3RvcnlfbmV3KHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdEltcGwgKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpKTsKKyAgICBw
cml2LT5oaXN0b3J5ID0gZXdrX2hpc3RvcnlfbmV3KHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdEltcGwqPihwcml2LT5wYWdlLT5iYWNrRm9yd2FyZExpc3QoKSkpOwogICAgIGlm
ICghcHJpdi0+aGlzdG9yeSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBo
aXN0b3J5IGluc3RhbmNlIGZvciB2aWV3LiIpOwogICAgICAgICBnb3RvIGVycm9yX2hpc3Rvcnk7
CkBAIC02ODksNyArNjg5LDcgQEAgZXJyb3JfcGFnZToKICAgICByZXR1cm4gMDsKIH0KIAotc3Rh
dGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXYpCiB7CiAgICAgaWYgKCFwcml2KQogICAgICAgICByZXR1cm47CkBAIC03MjAsMTYgKzcyMCwx
NiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
ICpwcml2KQogICAgIGZyZWUocHJpdik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9hZGQoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2
YXNfT2JqZWN0KiBvKQogewotICAgIGNvbnN0IEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19vYmpl
Y3Rfc21hcnRfc21hcnRfZ2V0KG8pOwotICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MgKnNjID0g
ZXZhc19zbWFydF9jbGFzc19nZXQoc21hcnQpOwotICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0Ns
YXNzICphcGkgPSAoY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKilzYzsKKyAgICBjb25zdCBF
dmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsKKyAgICBj
b25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBzYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KHNtYXJ0KTsK
KyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gKGNvbnN0IEV3a19WaWV3X1Nt
YXJ0X0NsYXNzKilzYzsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcGktPmJhY2tp
bmdfc3RvcmVfYWRkKTsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogCiAgICAgaWYgKCFz
ZCkgewotICAgICAgICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopY2FsbG9jKDEsIHNpemVv
ZihFd2tfVmlld19TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOwogICAgICAgICBpZiAo
IXNkKSB7CiAgICAgICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3
X1NtYXJ0X0RhdGEiKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgwMCwxNyArODAwLDE3IEBA
IHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiAjdW5kZWYg
Q09OTkVDVAogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0
ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAq
cHJpdiA9IHNkID8gc2QtPl9wcml2IDogMDsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXYgPSBzZCA/IHNkLT5fcHJpdiA6IDA7CiAKICAgICBld2tfdmlld19zdG9wKG8pOwogICAgIF9w
YXJlbnRfc2MuZGVsKG8pOwogICAgIF9ld2tfdmlld19wcml2X2RlbChwcml2KTsKIH0KIAotc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29y
ZCB3LCBFdmFzX0Nvb3JkIGgpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVzaXplKEV2
YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKIApAQCAtODIxLDE0ICs4MjEsMTQgQEAgc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgpCiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCi1z
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29y
ZCB4LCBFdmFzX0Nvb3JkIHkpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFz
X09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5B
X1RSVUU7CiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCi1zdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTg1
MCw3ICs4NTAsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNf
T2JqZWN0ICpvKQogICAgICAgICBwcml2LT5zY3JvbGxzLmNvdW50LCBwcml2LT5yZXBhaW50cy5j
b3VudCk7CiAKICAgICBpZiAoc2QtPmNoYW5nZWQuc2l6ZSAmJiAoKHcgIT0gc2QtPnZpZXcudykg
fHwgKGggIT0gc2QtPnZpZXcuaCkpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmll
dyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3
KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgICAgICBpZiAodmlldykgewog
ICAgICAgICAgICAgdmlldy0+cmVzaXplKHcsIGgpOwogICAgICAgICAgICAgdmlldy0+Zm9yY2VM
YXlvdXQoKTsKQEAgLTg4OCwxMyArODg4LDEzIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9jYWxjdWxhdGUoRXZhc19PYmplY3QgKm8pCiAgICAgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNo
KHByaXYpOwogCiAgICAgaWYgKHNkLT5jaGFuZ2VkLmZyYW1lX3JlY3QpIHsKLSAgICAgICAgV2Vi
Q29yZTo6RnJhbWVWaWV3ICp2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOworICAgICAg
ICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAg
ICAgICAgIHZpZXctPmZyYW1lUmVjdHNDaGFuZ2VkKCk7IC8qIGZvcmNlIHRyZWUgdG8gZ2V0IHBv
c2l0aW9uIGZyb20gcm9vdCAqLwogICAgICAgICBzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlO
QV9GQUxTRTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9zaG93KEV2
YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Nob3coRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAKQEAgLTkw
Myw3ICs5MDMsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09iamVj
dCAqbykKICAgICBldmFzX29iamVjdF9zaG93KHNkLT5iYWNraW5nX3N0b3JlKTsKIH0KIAotc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKIApAQCAtOTExLDEyICs5MTEsMTIgQEAgc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QgKm8pCiAgICAgZXZhc19vYmplY3Rf
aGlkZShzZC0+YmFja2luZ19zdG9yZSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgaW50IHcsIGlu
dCBoKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBpbnQgdywgaW50IGgpCiB7CiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29v
cmQgY3kpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmll
d19TbWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBj
eSkKIHsKICAgICBkb3VibGUgcHgsIHB5OwogICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKQEAg
LTk0NCw0MCArOTQ0LDQwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21f
c2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFCiAgICAgcmV0dXJuIHJl
dDsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkKQogewogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
dik7CiAgICAgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKHByaXYpOwogICAgIF9ld2tfdmlld19z
Y3JvbGxzX2ZsdXNoKHByaXYpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFy
dF9wcmVfcmVuZGVyX3JlZ2lvbihFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQor
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWdpb24oRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3Jk
IHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQg
YnkgZW5naW5lLiBzZD0lcCBhcmVhPSVkLCVkKyVkeCVkLCB6b29tPSVmIiwKICAgICAgICAgc2Qs
IHgsIHksIHcsIGgsIHpvb20pOwogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1zdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pCitzdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pCiB7CiAgICAg
V1JOKCJub3Qgc3VwcG9ydGVkIGJ5IGVuZ2luZS4gc2Q9JXAsIG49JXUgem9vbT0lZiIsCiAgICAg
ICAgIHNkLCBuLCB6b29tKTsKICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUu
IHNkPSVwIiwgc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9t
YXJrX3N0b3AoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
em9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAg
c2QtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydCA9IDAuMDsKICAgICBzZC0+YW5pbWF0ZWRfem9v
bS56b29tLmVuZCA9IDAuMDsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPSAw
LjA7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChFd2tf
Vmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVk
X2ZpbmlzaChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CiAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKHByaXYtPmFuaW1hdGVkX3pvb20u
YW5pbWF0b3IpOwpAQCAtOTg2LDcgKzk4Niw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld196b29t
X2FuaW1hdGVkX2ZpbmlzaChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKHNkLT5zZWxmLCAiem9vbSxhbmltYXRlZCxlbmQiLCAwKTsK
IH0KIAotc3RhdGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpwcml2KQorc3RhdGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1h
dGVkX2N1cnJlbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogewogICAgIGRvdWJsZSBu
b3cgPSBlY29yZV9sb29wX3RpbWVfZ2V0KCk7CiAgICAgZG91YmxlIGRlbHRhID0gbm93IC0gcHJp
di0+YW5pbWF0ZWRfem9vbS50aW1lLnN0YXJ0OwpAQCAtMTAwMiw5ICsxMDAyLDkgQEAgc3RhdGlj
IGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpwcml2KQogICAgICAgICAgICAgKyBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQp
OwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQg
KmRhdGEpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQq
IGRhdGEpCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21h
cnRfRGF0YSopZGF0YTsKICAgICBFdmFzX0Nvb3JkIGN4LCBjeTsKICAgICBFV0tfVklFV19QUklW
X0dFVChzZCwgcHJpdik7CiAgICAgZG91YmxlIG5vdyA9IGVjb3JlX2xvb3BfdGltZV9nZXQoKTsK
QEAgLTEwMzEsMTYgKzEwMzEsMTYgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9h
bmltYXRvcl9jYih2b2lkICpkYXRhKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRp
YyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFydChFd2tfVmlld19TbWFydF9EYXRh
ICpzZCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFydChFd2tfVmll
d19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYpOwogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQogICAgICAgICBy
ZXR1cm47CiAgICAgcHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvciA9IGVjb3JlX2FuaW1hdG9y
X2FkZAotICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2IsIHNkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9j
Yiwgc2QpOwogfQogCi1zdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmll
d192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRXZhc19PYmplY3QgKm8pCitzdGF0
aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1
dGVzX2NvbXB1dGUoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
KG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0xMDYwLDI2ICsx
MDYwLDI2IEBAIHN0YXRpYyBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgX2V3a192aWV3X3Zp
ZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShjb25zdCBFCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7
CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2Rpc2FibGVfcmVuZGVyKEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRf
ZGlzYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgV1JOKCJub3Qg
c3VwcG9ydGVkIGJ5IGVuZ2luZS4gc2Q9JXAiLCBzZCk7CiAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2VuYWJsZV9yZW5kZXIoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9l
bmFibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIFdSTigibm90IHN1
cHBvcnRlZCBieSBlbmdpbmUuIHNkPSVwIiwgc2QpOwogICAgIHJldHVybiBFSU5BX0ZBTFNFOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xh
c3MgKmFwaSkKK0VpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFy
dF9DbGFzcyogYXBpKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcGks
IEVJTkFfRkFMU0UpOwogCiAgICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OKSB7CiAgICAgICAgIEVJTkFfTE9HX0NSSVQKICAgICAgICAgICAgICgiRXdr
X1ZpZXdfU21hcnRfQ2xhc3MgJXAgaXMgdmVyc2lvbiAlbHUgd2hpbGUgJWx1IHdhcyBleHBlY3Rl
ZC4iLAotICAgICAgICAgICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OKTsKKyAgICAgICAgICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tfVklFV19TTUFS
VF9DTEFTU19WRVJTSU9OKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBA
IC0xMTIzLDEyICsxMTIzLDEyIEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChF
d2tfVmlld19TbWFydF9DbGFzcyAqYXBpKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXZv
aWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nv
b3JkIHcsIEV2YXNfQ29vcmQgaCkKK3ZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYpOwogCi0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3ID0gcHJpdi0+
bWFpbl9mcmFtZS0+dmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYt
Pm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAodyA8PSAwICYmIGggPD0gMCkgewogICAgICAg
ICBpZiAoIXZpZXctPnVzZUZpeGVkTGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MTQ3LDcgKzExNDcsNyBAQCB2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldChFdmFz
X09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiAgICAgdmlldy0+Zm9yY2VM
YXlvdXQoKTsKIH0KIAotdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgKncsIEV2YXNfQ29vcmQgKmgpCit2b2lkIGV3a192
aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbywgRXZhc19Db29y
ZCogdywgRXZhc19Db29yZCogaCkKIHsKICAgICBpZiAodykKICAgICAgICAgKncgPSAwOwpAQCAt
MTE2NSwxNCArMTE2NSwxNCBAQCB2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldChj
b25zdCBFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCAqdywgRXZhc19DbwogICAgIH0KIH0KIAot
dm9pZCBld2tfdmlld190aGVtZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgp
Cit2b2lkIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogcGF0
aCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwogICAgIGlmICghZWluYV9zdHJpbmdzaGFy
ZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy50aGVtZSwgcGF0aCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXco
KTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3
KCk7CiAgICAgaWYgKHZpZXcpIHsKICAgICAgICAgdmlldy0+c2V0RWRqZVRoZW1lKFdURjo6U3Ry
aW5nKHBhdGgpKTsKICAgICAgICAgcHJpdi0+cGFnZS0+dGhlbWUoKS0+dGhlbWVDaGFuZ2VkKCk7
CkBAIC0xMTgwLDI1ICsxMTgwLDI1IEBAIHZvaWQgZXdrX3ZpZXdfdGhlbWVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBjaGFyICpwYXRoKQogCiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3Ro
ZW1lX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3RoZW1l
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy50aGVtZTsKIH0KIAotRXZhc19PYmplY3Qq
IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRXZhc19PYmpl
Y3QqIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIHJldHVybiBzZC0+bWFp
bl9mcmFtZTsKIH0KIAotRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQorRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
MCk7CiAKLSAgICBXZWJDb3JlOjpGcmFtZSAqY29yZSA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkRnJhbWUoKTsKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZSA9IHByaXYt
PnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKTsKICAgICBpZiAoIWNvcmUp
CiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMjA4LDMxICsxMjA4LDMxIEBAIEV2YXNfT2JqZWN0
KiBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAgICBy
ZXR1cm4gY2xpZW50LT53ZWJGcmFtZSgpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3Nl
dChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXJpKQorRWluYV9Cb29sIGV3a192aWV3X3Vy
aV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHVyaSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1l
X3VyaV9zZXQoc2QtPm1haW5fZnJhbWUsIHVyaSk7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3
X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyKiBld2tfdmlld191cmlf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIDApOwogICAgIHJldHVybiBld2tfZnJhbWVfdXJpX2dldChzZC0+bWFpbl9mcmFt
ZSk7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVj
dCAqbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICByZXR1
cm4gZXdrX2ZyYW1lX3RpdGxlX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBl
d2tfdmlld19lZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJh
bWVfZWRpdGFibGVfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotdm9pZCBld2tfdmlld19iZ19j
b2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQordm9p
ZCBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QqIG8sIGludCByLCBpbnQgZywgaW50
IGIsIGludCBhKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwpAQCAtMTI0OCwxMCArMTI0OCwx
MCBAQCB2b2lkIGV3a192aWV3X2JnX2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgaW50IHIsIGlu
dCBnLCBpbnQgYiwgaW50IGEpCiAKICNkZWZpbmUgQ0hFQ0tfUFJFTVVMX0NPTE9SKGMsIGEpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoYyA8IDApIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgV1JOKCJDb2xvciBjb21wb25lbnQgIiNjIiBpcyBsZXNzIHRoYW4gemVybyAoJWQp
LiIsIGMpOyAgICAgICAgIFwKKyAgICAgICAgV1JOKCJDb2xvciBjb21wb25lbnQgIiAjYyAiIGlz
IGxlc3MgdGhhbiB6ZXJvICglZCkuIiwgYyk7ICAgICAgICAgXAogICAgICAgICBjID0gMDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIH0gZWxzZSBpZiAoYyA+IGEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAiI2MiIGlzIGdy
ZWF0ZXIgdGhhbiBhbHBoYSAoJWQsIGFscGhhPSVkKS4iLCBcCisgICAgICAgIFdSTigiQ29sb3Ig
Y29tcG9uZW50ICIgI2MgIiBpcyBncmVhdGVyIHRoYW4gYWxwaGEgKCVkLCBhbHBoYT0lZCkuIiwg
XAogICAgICAgICAgICAgYywgYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgICAgICBjID0gYTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KQEAgLTEyNjcsNyAr
MTI2Nyw3IEBAIHZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQg
ciwgaW50IGcsIGludCBiLCBpbnQgYSkKIAogICAgIHNkLT5hcGktPmJnX2NvbG9yX3NldChzZCwg
ciwgZywgYiwgYSk7CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBzZC0+X3ByaXYt
Pm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzZC0+
X3ByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAodmlldykgewogICAgICAgICBXZWJD
b3JlOjpDb2xvciBjb2xvcjsKIApAQCAtMTI4Miw3ICsxMjgyLDcgQEAgdm9pZCBld2tfdmlld19i
Z19jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQog
ICAgIH0KIH0KIAotdm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8sIGludCAqciwgaW50ICpnLCBpbnQgKmIsIGludCAqYSkKK3ZvaWQgZXdrX3ZpZXdfYmdfY29s
b3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHIsIGludCogZywgaW50KiBiLCBpbnQq
IGEpCiB7CiAgICAgaWYgKHIpCiAgICAgICAgICpyID0gMDsKQEAgLTEzMDMsNyArMTMwMyw3IEBA
IHZvaWQgZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKnIs
IGludCAqZywgaW50ICpiLCBpbnQgKmEpCiAgICAgICAgICphID0gc2QtPmJnX2NvbG9yLmE7CiB9
CiAKLUVpbmFfQm9vbCBld2tfdmlld190ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCAqbywg
Y29uc3QgY2hhciAqc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBm
b3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKK0VpbmFfQm9vbCBld2tfdmlld190ZXh0X3NlYXJjaChj
b25zdCBFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9z
ZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTMzNSw3ICsxMzM1
LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm8KICAqCiAgKiBAcmV0dXJuIG51bWJlciBvZiBt
YXRjaGVzLgogICovCi11bnNpZ25lZCBpbnQgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoRXZh
c19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZl
LCBFaW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQgbGltaXQpCit1bnNpZ25lZCBpbnQg
ZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHN0
cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNp
Z25lZCBpbnQgbGltaXQpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
MCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTEz
NTAsNyArMTM1MCw3IEBAIHVuc2lnbmVkIGludCBld2tfdmlld190ZXh0X21hdGNoZXNfbWFyayhF
dmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5hCiAgICAgcmV0dXJuIHByaXYt
PnBhZ2UtPm1hcmtBbGxNYXRjaGVzRm9yVGV4dChTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIHNl
bnNpdGl2ZSwgaGlnaGxpZ2h0LCBsaW1pdCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld190ZXh0
X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld190
ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTM1OCwyNSArMTM1OCwyNSBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3Qg
Km8pCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3RleHRf
bWF0Y2hlc19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0
KQorRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfdGV4dF9tYXRj
aGVzX2hpZ2hsaWdodF9zZXQoc2QtPm1haW5fZnJhbWUsIGhpZ2hsaWdodCk7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVj
dCAqbykKK0VpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGln
aHRfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2VkaXRhYmxl
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVkaXRhYmxlKQorRWluYV9Cb29sIGV3a192
aWV3X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVkaXRhYmxlKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJl
dHVybiBld2tfZnJhbWVfZWRpdGFibGVfc2V0KHNkLT5tYWluX2ZyYW1lLCBlZGl0YWJsZSk7CiB9
CiAKLWNoYXIgKmV3a192aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitj
aGFyKiBld2tfdmlld19zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0xMzg2LDEyICsxMzg2LDEyIEBAIGNoYXIg
KmV3a192aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJu
IHN0cmR1cChzLmRhdGEoKSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X2VkaXRv
cl9jb21tYW5kKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY29uc3QgY2hhciAqY29tbWFu
ZCwgY29uc3QgY2hhciAqdmFsdWUgPSAwKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfZWRp
dG9yX2NvbW1hbmQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjb25zdCBjaGFyKiBjb21t
YW5kLCBjb25zdCBjaGFyKiB2YWx1ZSA9IDApCiB7CiAgICAgcmV0dXJuIHByaXYtPnBhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQo
V1RGOjpTdHJpbmc6OmZyb21VVEY4KGNvbW1hbmQpKS5leGVjdXRlKHZhbHVlKTsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X2V4ZWN1dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IEV3a19FZGl0b3JfQ29tbWFuZCBjb21tYW5kLCBjb25zdCBjaGFyICp2YWx1ZSkKK0VpbmFf
Qm9vbCBld2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBFd2tfRWRpdG9yX0NvbW1hbmQgY29tbWFuZCwgY29uc3QgY2hhciogdmFsdWUpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE0MTgsNyAr
MTQxOCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKEV2YXNf
T2JqZWN0ICpvLCBjb25zdCBFd2tfRWRpdG9yX0NvbW1hCiAgICAgfQogfQogCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9t
ZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
RG93biogZXYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IEV2YXNfRXZlbnRfTQogICAgIEVpbmFfQm9vbCBtb3VzZV9wcmVzc19oYW5kbGVk
ID0gRUlOQV9GQUxTRTsKIAogICAgIHByaXYtPnBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigp
LT5jbGVhckNvbnRleHRNZW51KCk7Ci0gICAgV2ViQ29yZTo6RnJhbWUgKm1haW5fZnJhbWUgPSBw
cml2LT5wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBXZWJDb3JlOjpGcmFtZSogbWFpbl9mcmFtZSA9
IHByaXYtPnBhZ2UtPm1haW5GcmFtZSgpOwogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFz
X29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPnNlbGYsICZ4LCAmeSwgMCwgMCk7CiAKQEAgLTE0NTQs
NzUgKzE0NTQsNzUgQEAgRWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2
ZW50KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X00KICNlbmRpZgogfQogCi1kb3Vi
bGUgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitkb3Vi
bGUgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAtMS4wKTsKICAgICByZXR1cm4gcHJpdi0+cGFn
ZS0+cHJvZ3Jlc3MoKS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKIH0KIAotRWluYV9Cb29sIGV3a192
aWV3X3N0b3AoRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09i
amVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3N0b3Aoc2QtPm1haW5fZnJhbWUpOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192
aWV3X3JlbG9hZChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3JlbG9hZChzZC0+
bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19yZWxvYWRfZnVsbChFdmFzX09i
amVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19yZWxvYWRfZnVsbChFdmFzX09iamVjdCogbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICByZXR1cm4gZXdrX2ZyYW1lX3JlbG9hZF9mdWxsKHNkLT5tYWluX2ZyYW1lKTsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X2JhY2soRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
YmFjayhFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2JhY2soc2QtPm1haW5fZnJh
bWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZChFdmFzX09iamVjdCAqbykKK0Vp
bmFfQm9vbCBld2tfdmlld19mb3J3YXJkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJh
bWVfZm9yd2FyZChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19uYXZp
Z2F0ZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBzKQorRWluYV9Cb29sIGV3a192aWV3X25hdmln
YXRlKEV2YXNfT2JqZWN0KiBvLCBpbnQgc3RlcHMpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0
ZShzZC0+bWFpbl9mcmFtZSwgc3RlcHMpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfYmFja19w
b3NzaWJsZShFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bvc3NpYmxl
KEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfYmFja19wb3NzaWJsZShzZC0+bWFp
bl9mcmFtZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNf
T2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKHNkLT5tYWluX2ZyYW1l
KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRlX3Bvc3NpYmxlKEV2YXNfT2JqZWN0
ICpvLCBpbnQgc3RlcHMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoRXZh
c19PYmplY3QqIG8sIGludCBzdGVwcykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3Np
YmxlKHNkLT5tYWluX2ZyYW1lLCBzdGVwcyk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19oaXN0
b3J5X2VuYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
aGlzdG9yeV9lbmFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqPihwcml2LT5wYWdlLT5iYWNrRm9yd2Fy
ZExpc3QoKSktPmVuYWJsZWQoKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5h
YmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tf
dmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAg
LTE1MzAsNyArMTUzMCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotRXdrX0hpc3RvcnkqIGV3a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKQorRXdrX0hpc3RvcnkqIGV3a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0xNTQxLDEzICsxNTQx
LDEzIEBAIEV3a19IaXN0b3J5KiBld2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVj
dCAqbykKICAgICByZXR1cm4gcHJpdi0+aGlzdG9yeTsKIH0KIAotZmxvYXQgZXdrX3ZpZXdfem9v
bV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitmbG9hdCBld2tfdmlld196b29tX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCAtMS4wKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6
b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQorRWluYV9Cb29sIGV3a192aWV3X3pv
b21fc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nv
b3JkIGN5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTE1NzMsMTMgKzE1NzMs
MTMgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6
b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3IKICAgICByZXR1cm4gc2QtPmFwaS0+em9vbV9z
ZXQoc2QsIHpvb20sIGN4LCBjeSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtf
c21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmll
d196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1
cm4gc2QtPnpvb21fd2Vha19zbW9vdGhfc2NhbGU7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfem9vbV93
ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzbW9vdGhfc2Nh
bGUpCit2b2lkIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QpOwogICAgIHNtb290aF9zY2FsZSA9ICEhc21vb3RoX3NjYWxlOwpAQCAtMTU5
MSw3ICsxNTkxLDcgQEAgdm9pZCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2FsZSkKICAgICBzZC0+YXBpLT56b29t
X3dlYWtfc21vb3RoX3NjYWxlX3NldChzZCwgc21vb3RoX3NjYWxlKTsKIH0KIAotRWluYV9Cb29s
IGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2YXNf
Q29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Nl
dChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBj
eSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0xNjE5LDM1ICsxNjE5LDM1IEBA
IEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6
b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgcmV0dXJuIHNkLT5hcGktPnpvb21fd2Vha19z
ZXQoc2QsIHpvb20sIGN4LCBjeSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1h
dGVkX21hcmtfc3RhcnQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0YXJ0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29t
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSB6b29tOwogICAgIHJldHVybiBFSU5B
X1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKEV2
YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0
ZWRfbWFya19lbmQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgc2QtPmFuaW1hdGVkX3pv
b20uem9vbS5lbmQgPSB6b29tOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudChFdmFzX09iamVjdCAqbywgZmxv
YXQgem9vbSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudChF
dmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJl
bnQgPSB6b29tOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tf
dmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBfZXdrX3ZpZXdf
em9vbV9hbmltYXRlZF9tYXJrX3N0b3Aoc2QpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
LUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCAqbywgZmxv
YXQgem9vbSwgZmxvYXQgZHVyYXRpb24sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0
IHpvb20sIGZsb2F0IGR1cmF0aW9uLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewog
ICAgIGRvdWJsZSBub3c7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CkBAIC0xNjk2LDE5ICsxNjk2LDE5IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29t
X2FuaW1hdGVkX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24s
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4
dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld196b29t
X3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV96
b29tX3RleHRfb25seV9nZXQoc2QtPm1haW5fZnJhbWUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc2V0dGluZykK
K0VpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCBzZXR0aW5nKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0KHNk
LT5tYWluX2ZyYW1lLCBzZXR0aW5nKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5k
ZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZh
c19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
cHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29y
ZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTc1MSw3ICsxNzUx
LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpv
LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwKICAgICByZXR1cm4gc2QtPmFwaS0+cHJlX3Jl
bmRlcl9yZWdpb24oc2QsIHgsIHksIHcsIGgsIHpvb20pOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGlu
dCBuKQorRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNf
T2JqZWN0KiBvLCB1bnNpZ25lZCBpbnQgbikKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTc2NSw0MiArMTc2NSw0MiBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QgKm8sIHVuc2ln
bmVkIGludCBuKQogICAgIHJldHVybiBzZC0+YXBpLT5wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1
cyhzZCwgbiwgY3VyX3pvb20pOwogfQogCi11bnNpZ25lZCBpbnQgZXdrX3ZpZXdfaW1oX2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKK3Vuc2lnbmVkIGludCBld2tfdmlld19pbWhfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAg
cmV0dXJuIHByaXYtPmltaDsKIH0KIAotdm9pZCBld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbChF
dmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+cHJlX3JlbmRlcl9jYW5jZWwpOwogICAg
IHNkLT5hcGktPnByZV9yZW5kZXJfY2FuY2VsKHNkKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3
X2VuYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
ZW5hYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc2QtPmFwaS0+ZW5hYmxlX3JlbmRlciwgRUlOQV9GQUxTRSk7CiAgICAgcmV0
dXJuIHNkLT5hcGktPmVuYWJsZV9yZW5kZXIoc2QpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
ZGlzYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
ZGlzYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNkLT5hcGktPmRpc2FibGVfcmVuZGVyLCBFSU5BX0ZBTFNFKTsKICAgICBy
ZXR1cm4gc2QtPmFwaS0+ZGlzYWJsZV9yZW5kZXIoc2QpOwogfQogCi1jb25zdCBjaGFyICpld2tf
dmlld19zZXR0aW5nX3VzZXJfYWdlbnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3Qg
Y2hhciogZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X2dldChjb25zdCBFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy51c2VyX2FnZW50OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2Vy
X2FnZW50X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXNlcl9hZ2VudCkKK0VpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBjaGFyKiB1c2VyX2FnZW50KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CkBAIC0xODExLDE0ICsxODExLDE0IEBAIEVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp1c2Vy
X2FnZW50CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdf
c2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorY29uc3Qg
Y2hhciogZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLnVzZXJfc3R5bGVzaGVldDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXJp
KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09i
amVjdCogbywgY29uc3QgY2hhciogdXJpKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xODI5LDE0ICsxODI5LDE0IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKnVyaSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmF1dG9fbG9hZF9pbWFnZXM7CiB9CiAK
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
YXV0b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhdXRvbWF0aWMp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAg
LTE4NDgsMTQgKzE4NDgsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2Fk
X2ltYWdlc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhdXRvbWEKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19p
bWFnZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy5hdXRvX3Nocmlua19pbWFnZXM7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBhdXRvbWF0aWMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFn
ZXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xODY3LDE0ICsxODY3
LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhdXRvCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0K
IAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfYXV0b19yZXNpemVfd2luZG93X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy5lbmFibGVfYXV0b19yZXNpemVfd2luZG93OwogfQogCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldChFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIHJlc2l6YWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Vu
YWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgcmVz
aXphYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CkBAIC0xODgyLDE0ICsxODgyLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Vu
YWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0JvCiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxl
X3NjcmlwdHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLmVuYWJsZV9zY3JpcHRzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfc2NyaXB0c19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUp
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQoRXZhc19PYmpl
Y3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE5MDEsMTQgKzE5MDEsMTQgQEAgRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmxlKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0Up
OwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFibGVfcGx1Z2luczsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdp
bnNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xOTIwLDE0ICsxOTIwLDE0
IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJh
bWVfZmxhdHRlbmluZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0
dGluZ3MuZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmc7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0
dGVuaW5nX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMTkzOSwxNCArMTkz
OSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmlu
Z19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9
CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193
aW5kb3dfb3Blbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3Muc2NyaXB0c193aW5kb3dfb3BlbjsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
c2NyaXB0c193aW5kb3dfb3Blbl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhbGxvdykK
K0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNf
T2JqZWN0KiBvLCBFaW5hX0Jvb2wgYWxsb3cpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE5NTgsMTQgKzE5NTgsMTQgQEAgRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCBhbGwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX2dldChjb25zdCBFdmFzX09i
amVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dp
bmRvd3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNj
cmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3M7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3Nfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
YWxsb3cpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5k
b3dzX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGFsbG93KQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xOTc3LDE0ICsxOTc3LDE0
IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3Nf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0JvCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4
dGFyZWFzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5y
ZXNpemFibGVfdGV4dGFyZWFzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNp
emFibGVfdGV4dGFyZWFzX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xOTk2LDE0ICsxOTk2LDE0IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgZW5hCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFz
X09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFf
RkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5nOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3By
aXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMDE1
LDE0ICsyMDE1LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Np
bmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlCiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2Zm
bGluZV9hcHBfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLm9mZmxpbmVfYXBwX2NhY2hlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19vZmZsaW5lX2FwcF9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUp
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9zZXQoRXZhc19P
YmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIwMzUsMTQgKzIwMzUsMTQgQEAgRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgZW5hYmwKIH0KIAogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9i
cm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19jYXJldF9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJp
di0+c2V0dGluZ3MuY2FyZXRfYnJvd3Npbmc7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkK
K0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjA1NCw3ICsyMDU0LDcgQEAgRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
ZW5hYmxlKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIgKmV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0
IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMjA3MCwyNyAr
MjA3MCwyNyBAQCBjb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuY29k
aW5nX2N1c3RvbTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3Vz
dG9tX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZW5jb2RpbmcpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBjaGFyKiBlbmNvZGluZykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwogICAgIEV2YXNfT2JqZWN0KiBtYWluX2ZyYW1lID0gZXdrX3ZpZXdfZnJh
bWVfbWFpbl9nZXQobyk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVfZnJhbWUgPSBld2tfZnJh
bWVfY29yZV9nZXQobWFpbl9mcmFtZSk7Ci1EQkcoIiVzIiwgZW5jb2RpbmcpOworICAgIERCRygi
JXMiLCBlbmNvZGluZyk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0
aW5ncy5lbmNvZGluZ19jdXN0b20sIGVuY29kaW5nKTsKICAgICBjb3JlX2ZyYW1lLT5sb2FkZXIo
KS0+cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoU3RyaW5nOjpmcm9tVVRGOChlbmNvZGluZykp
OwogCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciAqZXdrX3ZpZXdfc2V0
dGluZ19lbmNvZGluZ19kZWZhdWx0X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2NvbnN0IGNo
YXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJp
di0+c2V0dGluZ3MuZW5jb2RpbmdfZGVmYXVsdDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmVu
Y29kaW5nKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQo
RXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGVuY29kaW5nKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMDk5LDcgKzIwOTksNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X3NldChFdmFzX09iamVj
dCAqbywgY29uc3QgY2hhciAqZW5jbwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2RldGVjdG9yX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjExMSwyMSAr
MjExMSwyMSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibAogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2RldGVjdG9yX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5n
cy5lbmNvZGluZ19kZXRlY3RvcjsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFz
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJh
c19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKQEAgLTIxMzcsMTQgKzIxMzcsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1pbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250
X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0
dGluZ19mb250X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9u
dF9taW5pbXVtX3NpemU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWlu
aW11bV9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXpl
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBA
IC0yMTU1LDE0ICsyMTU1LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWlu
aW11bV9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCiAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKIH0KIAotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21p
bmltdW1fbG9naWNhbF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X21p
bmltdW1fbG9naWNhbF9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250
X21pbmltdW1fbG9naWNhbF9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3NldChFdmFz
X09iamVjdCogbywgaW50IHNpemUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIxNzMsMTQgKzIxNzMsMTQgQEAgRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8s
IGludCBzaXoKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1pbnQgZXdrX3ZpZXdfc2V0dGlu
Z19mb250X2RlZmF1bHRfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3Zp
ZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MuZm9udF9kZWZhdWx0X3NpemU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Zv
bnRfZGVmYXVsdF9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGlu
dCBzaXplKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CkBAIC0yMTkxLDE0ICsyMTkxLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Zv
bnRfZGVmYXVsdF9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCiAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21v
bm9zcGFjZV9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X21vbm9zcGFj
ZV9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9z
aXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19mb250X21vbm9zcGFjZV9zaXplX3NldChFdmFzX09iamVjdCogbywgaW50IHNpemUpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIy
MDksNyArMjIwOSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNl
X3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6ZSkKICAgICByZXR1cm4gRUlOQV9UUlVF
OwogfQogCi1jb25zdCBjaGFyICpld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldChjb25zdCBF
dmFzX09iamVjdCAqbywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRfZmFtaWx5KQorY29uc3QgY2hhciog
ZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIEV3a19G
b250X0ZhbWlseSBmb250X2ZhbWlseSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDAp
OwpAQCAtMjIzMSw3ICsyMjMxLDcgQEAgY29uc3QgY2hhciAqZXdrX3ZpZXdfZm9udF9mYW1pbHlf
bmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIEV3a19Gb250X0ZhbWlseQogICAgIHJldHVy
biAwOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQoRXZhc19P
YmplY3QgKm8sIEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSwgY29uc3QgY2hhciAqbmFtZSkK
K0VpbmFfQm9vbCBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX3NldChFdmFzX09iamVjdCogbywg
RXdrX0ZvbnRfRmFtaWx5IGZvbnRfZmFtaWx5LCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMjY4LDE0ICsy
MjY4LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX3NldChFdmFzX09i
amVjdCAqbywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRfZmFtCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxf
bmF2aWdhdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3Muc3BhdGlhbF9uYXZpZ2F0aW9uOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19z
cGF0aWFsX25hdmlnYXRpb25fc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQor
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjI4NywxNCArMjI4NywxNCBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgZW5hYgogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MubG9jYWxfc3RvcmFnZTsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdl
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjMwNiwxNCArMjMwNiwxNCBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGVuYWJsZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCAq
bykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnBhZ2VfY2FjaGU7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgZW5hYmxlKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQo
RXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIzMjUsMTQgKzIzMjUsMTQgQEAgRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBlbmFibGUpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciog
ZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdl
X2RhdGFiYXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmxvY2FsX3N0b3Jh
Z2VfZGF0YWJhc2VfcGF0aDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxf
c3RvcmFnZV9kYXRhYmFzZV9wYXRoX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0
aCkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0
aF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHBhdGgpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIzNDEsNyArMjM0MSw3IEBA
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9z
ZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9zZXQoRXZhc19P
YmplY3QgKm8sIGRvdWJsZSBpbnRlcnZhbCkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX21p
bmltdW1fdGltZXJfaW50ZXJ2YWxfc2V0KEV2YXNfT2JqZWN0KiBvLCBkb3VibGUgaW50ZXJ2YWwp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAg
LTIzNTIsMTQgKzIzNTIsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbWluaW11bV90
aW1lcl9pbnRlcnZhbF9zZXQoRXZhc19PYmplY3QgKm8sIGRvdWJsZSBpbnQKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1kb3VibGUgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2lu
dGVydmFsX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2RvdWJsZSBld2tfdmlld19zZXR0aW5n
X21pbmltdW1fdGltZXJfaW50ZXJ2YWxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJu
IHByaXYtPnNldHRpbmdzLmRvbV90aW1lcl9pbnRlcnZhbDsKIH0KIAotRXdrX1ZpZXdfU21hcnRf
RGF0YSAqZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFd2tf
Vmlld19TbWFydF9EYXRhKiBld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBy
ZXR1cm4gc2Q7CkBAIC0yMzgyLDcgKzIzODIsNyBAQCBFd2tfVmlld19TbWFydF9EYXRhICpld2tf
dmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAqIEBub3RlIHRoaXMg
aXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQK
ICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwotY29uc3Qg
RWluYV9SZWN0YW5nbGUgKmV3a192aWV3X3JlcGFpbnRzX2dldChjb25zdCBFd2tfVmlld19Qcml2
YXRlX0RhdGEgKnByaXYsIHNpemVfdCAqY291bnQpCitjb25zdCBFaW5hX1JlY3RhbmdsZSogZXdr
X3ZpZXdfcmVwYWludHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6
ZV90KiBjb3VudCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY291bnQs
IDApOwogICAgIGlmIChjb3VudCkKQEAgLTI0MTAsNyArMjQxMCw3IEBAIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlICpld2tfdmlld19yZXBhaW50c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
ICpwcml2LCBzCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3Qg
Zm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJh
Y2tpbmcgc3RvcmUuCiAgKi8KLWNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqZXdrX3ZpZXdfc2Ny
b2xsX3JlcXVlc3RzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIHNpemVf
dCAqY291bnQpCitjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QqIGV3a192aWV3X3Njcm9sbF9yZXF1
ZXN0c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3QqIGNvdW50
KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3VudCwgMCk7CiAgICAg
aWYgKGNvdW50KQpAQCAtMjQzNSw3ICsyNDM1LDcgQEAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0
ICpld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGEK
ICAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xh
c3NlcyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9y
ZS4KICAqLwotdm9pZCBld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEg
KnByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29v
cmQgaCkKK3ZvaWQgZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3Jk
IGgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdik7CiAgICAgX2V3a192
aWV3X3JlcGFpbnRfYWRkKHByaXYsIHgsIHksIHcsIGgpOwpAQCAtMjQ0OSwxMSArMjQ0OSwxMSBA
QCB2b2lkIGV3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJh
bCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZp
bmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lm
X25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQordm9pZCBld2tf
dmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXYpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdik7CiAKLSAgICBXZWJD
b3JlOjpGcmFtZVZpZXcgKnYgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgV2ViQ29y
ZTo6RnJhbWVWaWV3KiB2ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgIGlmICghdikg
ewogICAgICAgICBFUlIoIm5vIG1haW4gZnJhbWUgdmlldyIpOwogICAgICAgICByZXR1cm47CkBA
IC0yNDYxLDcgKzI0NjEsNyBAQCB2b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJz
aXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKICAgICB2LT51cGRhdGVMYXlvdXRBbmRT
dHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9j
ZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQordm9pZCBld2tfdmlld19zY3JvbGxzX3Byb2Nl
c3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CkBA
IC0yNDc5LDE5ICsyNDc5LDE5IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkKQogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5n
IHN0b3JlLgogICovCiBzdHJ1Y3QgX0V3a19WaWV3X1BhaW50X0NvbnRleHQgewotICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCAqZ2M7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3Owot
ICAgIGNhaXJvX3QgKmNyOworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCogZ2M7CisgICAg
V2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3OworICAgIGNhaXJvX3QqIGNyOwogfTsKIAotRXdrX1Zp
ZXdfUGFpbnRfQ29udGV4dCAqZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjcikKK0V3a19WaWV3X1BhaW50X0NvbnRleHQqIGV3
a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fp
cm9fdCogY3IpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIDAp
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgMCk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPm1haW5fZnJhbWUsIDApOwotICAgIFdlYkNv
cmU6OkZyYW1lVmlldyAqdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJD
b3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIDApOwotICAgIEV3a19WaWV3X1BhaW50
X0NvbnRleHQgKmN0eHQgPSAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqKW1hbGxvYyhzaXplb2Yo
KmN0eHQpKTsKKyAgICBFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0ID0gKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQqKW1hbGxvYyhzaXplb2YoKmN0eHQpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoY3R4dCwgMCk7CiAKICAgICBjdHh0LT5nYyA9IG5ldyBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQoY3IpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgRXdrX1ZpZXdfUGFpbnRf
Q29udGV4dCAqZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
ICpwcml2LAogICAgIHJldHVybiBjdHh0OwogfQogCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRl
eHRfZnJlZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0KQordm9pZCBld2tfdmlld19wYWlu
dF9jb250ZXh0X2ZyZWUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCkKIHsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBkZWxldGUgY3R4dC0+Z2M7CkBAIC0y
NTEyLDI4ICsyNTEyLDI4IEBAIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKEV3a19W
aWV3X1BhaW50X0NvbnRleHQgKmN0eHQpCiAgICAgZnJlZShjdHh0KTsKIH0KIAotdm9pZCBld2tf
dmlld19wYWludF9jb250ZXh0X3NhdmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCkKK3Zv
aWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0
eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgY2Fpcm9f
c2F2ZShjdHh0LT5jcik7CiAgICAgY3R4dC0+Z2MtPnNhdmUoKTsKIH0KIAotdm9pZCBld2tfdmll
d19wYWludF9jb250ZXh0X3Jlc3RvcmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCkKK3Zv
aWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3a19WaWV3X1BhaW50X0NvbnRleHQq
IGN0eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgY3R4
dC0+Z2MtPnJlc3RvcmUoKTsKICAgICBjYWlyb19yZXN0b3JlKGN0eHQtPmNyKTsKIH0KIAotdm9p
ZCBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4
dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRl
eHRfY2xpcChFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3Rhbmds
ZSogYXJlYSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKICAgICBjdHh0LT5nYy0+Y2xpcChXZWJD
b3JlOjpJbnRSZWN0KGFyZWEtPngsIGFyZWEtPnksIGFyZWEtPncsIGFyZWEtPmgpKTsKIH0KIAot
dm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQg
KmN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKQordm9pZCBld2tfdmlld19wYWludF9j
b250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOwpAQCAtMjU0NSw3ICsyNTQ1LDcg
QEAgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRl
eHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGEKICAgICBjdHh0LT52aWV3LT5wYWludChjdHh0LT5n
YywgcmVjdCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50
cyhFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJl
YSkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyhFd2tfVmlld19Q
YWludF9Db250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihhcmVhKTsKQEAgLTI1NTgsMjEgKzI1NTgsMjEgQEAgdm9pZCBld2tfdmlld19wYWlu
dF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNv
bnN0IEUKICAgICBjdHh0LT52aWV3LT5wYWludENvbnRlbnRzKGN0eHQtPmdjLCByZWN0KTsKIH0K
IAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKEV3a19WaWV3X1BhaW50X0NvbnRl
eHQgKmN0eHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0IHNjYWxlX3kpCit2b2lkIGV3a192aWV3X3Bh
aW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwgZmxvYXQgc2Nh
bGVfeCwgZmxvYXQgc2NhbGVfeSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihj
dHh0KTsKIAogICAgIGN0eHQtPmdjLT5zY2FsZShXZWJDb3JlOjpGbG9hdFNpemUoc2NhbGVfeCwg
c2NhbGVfeSkpOwogfQogCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKEV3
a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGZsb2F0IHgsIGZsb2F0IHkpCit2b2lkIGV3a192
aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQs
IGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4
dCk7CiAKICAgICBjdHh0LT5nYy0+dHJhbnNsYXRlKHgsIHkpOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29u
c3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUq
IGFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJTkFf
RkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgRUlOQV9GQUxT
RSk7CkBAIC0yNTk3LDcgKzI1OTcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZQogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhF
d2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3Rh
bmdsZSAqYXJlYSkKK0VpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYsIGNhaXJvX3QqIGNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJl
YSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgRUlOQV9GQUxT
RSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNyLCBFSU5BX0ZBTFNFKTsK
QEAgLTI2MjgsNyArMjYyOCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhF
d2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zCiAgKgogICogRW1p
dHMgc2lnbmFsOiAicmVhZHkiIHdpdGggbm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBld2tfdmll
d19yZWFkeShFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfcmVhZHkoRXZhc19PYmplY3Qq
IG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChvLCAicmVhZHkiLCAwKTsKQEAgLTI2NDIsNyArMjY0Miw3IEBAIHZvaWQgZXdrX3Zp
ZXdfcmVhZHkoRXZhc19PYmplY3QgKm8pCiAgKiBFbWl0cyBzaWduYWw6ICJpbnB1dG1ldGhvZCxj
aGFuZ2VkIiB3aXRoIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaXQncwogICogZW5hYmxl
ZCBvciBub3QuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIGFjdGl2ZSkKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0aG9k
X3N0YXRlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGFjdGl2ZSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHJpdik7CkBAIC0yNjcxLDcgKzI2NzEsNyBAQCB2b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9z
dGF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhY3RpdmUpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJpbnB1dG1ldGhv
ZCxjaGFuZ2VkIiwgKHZvaWQgKilhY3RpdmUpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobywgImlucHV0bWV0aG9kLGNoYW5nZWQiLCAodm9pZCopYWN0aXZlKTsKIH0KIAog
LyoqCkBAIC0yNjgwLDEwICsyNjgwLDEwIEBAIHZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0
YXRlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGFjdGl2ZSkKICAqCiAgKiBFbWl0cyBz
aWduYWw6ICJ0aXRsZSxjaGFuZ2VkIiB3aXRoIHBvaW50ZXIgdG8gbmV3IHRpdGxlIHN0cmluZy4K
ICAqLwotdm9pZCBld2tfdmlld190aXRsZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIg
KnRpdGxlKQordm9pZCBld2tfdmlld190aXRsZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNo
YXIqIHRpdGxlKQogewogICAgIERCRygibz0lcCwgdGl0bGU9JXMiLCBvLCB0aXRsZSA/IHRpdGxl
IDogIihudWxsKSIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRp
dGxlLGNoYW5nZWQiLCAodm9pZCAqKXRpdGxlKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8sICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQqKXRpdGxlKTsKIH0KIAogLyoqCkBA
IC0yNjkyLDEyICsyNjkyLDEyIEBAIHZvaWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICp0aXRsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ1cmksY2hhbmdl
ZCIgd2l0aCBwb2ludGVyIHRvIHRoZSBuZXcgdXJpIHN0cmluZy4KICAqLwotdm9pZCBld2tfdmll
d191cmlfY2hhbmdlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQo
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7
Ci0gICAgY29uc3QgY2hhciAqdXJpID0gZXdrX2ZyYW1lX3VyaV9nZXQoc2QtPm1haW5fZnJhbWUp
OworICAgIGNvbnN0IGNoYXIqIHVyaSA9IGV3a19mcmFtZV91cmlfZ2V0KHNkLT5tYWluX2ZyYW1l
KTsKICAgICBEQkcoIm89JXAsIHVyaT0lcyIsIG8sIHVyaSA/IHVyaSA6ICIobnVsbCkiKTsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ1cmksY2hhbmdlZCIsICh2b2lk
ICopdXJpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ1cmksY2hh
bmdlZCIsICh2b2lkKil1cmkpOwogfQogCiAvKioKQEAgLTI3MDgsNyArMjcwOCw3IEBAIHZvaWQg
ZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFs
OiAibG9hZCxzdGFydGVkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
bG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19sb2FkX3N0YXJ0ZWQo
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxzdGFydGVkIiwgMCk7CkBAIC0yNzIxLDEwICsy
NzIxLDEwIEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQogICoK
ICAqIEVtaXRzIHNpZ25hbDogImxvYWQsc3RhcnRlZCIgb24gbWFpbiBmcmFtZSB3aXRoIG5vIHBh
cmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZh
c19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKEV2YXNf
T2JqZWN0KiBvKQogewogICAgIERCRygibz0lcCIsIG8pOwotICAgIEV2YXNfT2JqZWN0ICpmcmFt
ZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOworICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9
IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZnJhbWUsICJsb2FkLHN0YXJ0ZWQiLCAwKTsKIH0KIApAQCAtMjczNiw3ICsyNzM2
LDcgQEAgdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCAq
bykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsIiBvbiBWaWV3IHdpdGgg
bm8gcGFyYW1ldGVycy4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKEV2YXNf
T2JqZWN0ICpvKQordm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0KiBv
KQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwobywgImxvYWQscHJvdmlzaW9uYWwiLCAwKTsKQEAgLTI3NTAsNyArMjc1MCw3IEBAIHZv
aWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0
cyBzaWduYWw6ICJsb2FkLG5ld3dpbmRvdyxzaG93IiBvbiB2aWV3IHdpdGggbm8gcGFyYW1ldGVy
cy4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmplY3QgKm8pCit2b2lkIGV3
a192aWV3X2xvYWRfc2hvdyhFdmFzX09iamVjdCogbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsK
ICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLG5ld3dpbmRvdyxz
aG93IiwgMCk7CkBAIC0yNzYzLDcgKzI3NjMsNyBAQCB2b2lkIGV3a192aWV3X2xvYWRfc2hvdyhF
dmFzX09iamVjdCAqbykKICAqCiAgKiBAcGFyYW0gbyBWaWV3LgogICovCi12b2lkIGV3a192aWV3
X2ZyYW1lX21haW5fY2xlYXJlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfZnJhbWVf
bWFpbl9jbGVhcmVkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIERCRygibz0lcCIsIG8pOwogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMjc3OSwxMCArMjc3OSwxMCBA
QCB2b2lkIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZChFdmFzX09iamVjdCAqbykKICAqCiAg
KiBFbWl0cyBzaWduYWw6ICJpY29uLHJlY2VpdmVkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVkKEV2YXNfT2JqZWN0ICpvKQor
dm9pZCBld2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVjZWl2ZWQoRXZhc19PYmplY3QqIG8pCiB7
CiAgICAgREJHKCJvPSVwIiwgbyk7Ci0gICAgRXZhc19PYmplY3QgKmZyYW1lID0gZXdrX3ZpZXdf
ZnJhbWVfbWFpbl9nZXQobyk7CisgICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJh
bWVfbWFpbl9nZXQobyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChmcmFt
ZSwgImljb24scmVjZWl2ZWQiLCAwKTsKIH0KIApAQCAtMjc5NiwxMCArMjc5NiwxMCBAQCB2b2lk
IGV3a192aWV3X2ZyYW1lX21haW5faWNvbl9yZWNlaXZlZChFdmFzX09iamVjdCAqbykKICAqIEBu
b3RlIHRoZXJlIHNob3VsZCBub3QgYmUgYW55IGVycm9yIHN0dWZmIGhlcmUsIGJ1dCB0cnlpbmcg
dG8gYmUKICAqICAgICAgIGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyBXZWJLaXQuCiAgKi8KLXZv
aWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX0ZyYW1l
X0xvYWRfRXJyb3IgKmVycm9yKQordm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0KiBvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpCiB7CiAgICAgREJHKCJv
PSVwLCBlcnJvcj0lcCIsIG8sIGVycm9yKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG8sICJsb2FkLGZpbmlzaGVkIiwgKHZvaWQgKillcnJvcik7CisgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxmaW5pc2hlZCIsICh2b2lkKillcnJvcik7
CiB9CiAKIC8qKgpAQCAtMjgwOCwxMCArMjgwOCwxMCBAQCB2b2lkIGV3a192aWV3X2xvYWRfZmlu
aXNoZWQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yICplcnJvcikK
ICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Zy
YW1lX0xvYWRfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVj
dCAqbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgKmVycm9yKQordm9pZCBld2tfdmlld19s
b2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJy
b3IpCiB7CiAgICAgREJHKCJvPSVwLCBlcnJvcj0lcCIsIG8sIGVycm9yKTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLGVycm9yIiwgKHZvaWQgKillcnJvcik7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxlcnJvciIsICh2
b2lkKillcnJvcik7CiB9CiAKIC8qKgpAQCAtMjgyMCw3ICsyODIwLDcgQEAgdm9pZCBld2tfdmll
d19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciAq
ZXJyb3IpCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm9ncmVzcyIgd2l0aCBwb2ludGVy
IHRvIGEgZG91YmxlIGZyb20gMC4wIHRvIDEuMC4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX3By
b2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jl
c3NfY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwpA
QCAtMjg0Miw3ICsyODQyLDcgQEAgdm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQo
RXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzdG9yZSIgd2l0aCBmcmFt
ZS4KICAqLwotdm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFz
X09iamVjdCAqZnJhbWUpCit2b2lkIGV3a192aWV3X3Jlc3RvcmVfc3RhdGUoRXZhc19PYmplY3Qq
IG8sIEV2YXNfT2JqZWN0KiBmcmFtZSkKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG8sICJyZXN0b3JlIiwgZnJhbWUpOwogfQpAQCAtMjg2OCwxNCArMjg2OCwxNCBAQCB2
b2lkIGV3a192aWV3X3Jlc3RvcmVfc3RhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpm
cmFtZSkKICAqCiAgKiBAc2VlIGV3a193aW5kb3dfZmVhdHVyZXNfcmVmKCkuCiAgKi8KLUV2YXNf
T2JqZWN0ICpld2tfdmlld193aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
amF2YXNjcmlwdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgKmNvcmVGZWF0dXJlcykK
K0V2YXNfT2JqZWN0KiBld2tfdmlld193aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgamF2YXNjcmlwdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmVGZWF0
dXJlcykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKIAogICAg
IGlmICghc2QtPmFwaS0+d2luZG93X2NyZWF0ZSkKICAgICAgICAgcmV0dXJuIG87CiAKLSAgICBF
d2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMgPSBld2tfd2luZG93X2ZlYXR1cmVz
X25ld19mcm9tX2NvcmUoY29yZUZlYXR1cmVzKTsKKyAgICBFd2tfV2luZG93X0ZlYXR1cmVzKiB3
aW5kb3dfZmVhdHVyZXMgPSBld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUoY29yZUZl
YXR1cmVzKTsKICAgICBpZiAoIXdpbmRvd19mZWF0dXJlcykKICAgICAgICAgcmV0dXJuIDA7CiAK
QEAgLTI4OTYsNyArMjg5Niw3IEBAIEV2YXNfT2JqZWN0ICpld2tfdmlld193aW5kb3dfY3JlYXRl
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgamF2YXNjcmlwdCwgY29uc3QKICAqCiAgKiBAcGFy
YW0gbyBWaWV3IHRvIGJlIGNsb3NlZC4KICAqLwotdm9pZCBld2tfdmlld193aW5kb3dfY2xvc2Uo
RXZhc19PYmplY3QgKm8pCit2b2lkIGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKIApAQCAtMjkxMiw3
ICsyOTEyLDcgQEAgdm9pZCBld2tfdmlld193aW5kb3dfY2xvc2UoRXZhc19PYmplY3QgKm8pCiAg
KgogICogRW1pdHMgc2lnbmFsOiAibGluayxob3ZlcixpbiIKICAqLwotdm9pZCBld2tfdmlld19t
b3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0ICpvLCB2b2lkICpkYXRhKQordm9pZCBld2tf
dmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBkYXRhKQogewog
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxpbmssaG92ZXIsaW4iLCBk
YXRhKTsKIH0KQEAgLTI5MjMsNyArMjkyMyw3IEBAIHZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19o
b3Zlcl9pbihFdmFzX09iamVjdCAqbywgdm9pZCAqZGF0YSkKICAqCiAgKiBFbWl0cyBzaWduYWw6
ICJsaW5rLGhvdmVyLG91dCIKICAqLwotdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291
dChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAi
bGluayxob3ZlcixvdXQiLCAwKTsKIH0KQEAgLTI5MzQsNyArMjkzNCw3IEBAIHZvaWQgZXdrX3Zp
ZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmplY3QgKm8pCiAgKgogICogRW1pdHMgc2ln
bmFsOiAidG9vbGJhcnMsdmlzaWJsZSxzZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4K
ICAqLwotdm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2
YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKIHsKICAgICBEQkcoIm89JXAgKHZpc2li
bGU9JWQpIiwgbywgISF2aXNpYmxlKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG8sICJ0b29sYmFycyx2aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsKQEAgLTI5NTEsNyArMjk1
MSw3IEBAIHZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInRvb2xiYXJzLHZpc2li
bGUsZ2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
dG9vbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkK
K3ZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIG8sIEVpbmFf
Qm9vbCogdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5jX18sIG8pOwogICAg
ICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKQEAgLTI5NjcsNyArMjk2Nyw3IEBAIHZvaWQgZXdrX3Zp
ZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJs
ZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJzdGF0dXNiYXIsdmlzaWJsZSxzZXQiIHdpdGggYSBw
b2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJs
ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxlKQordm9pZCBld2tfdmlld19z
dGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKQog
ewogICAgIERCRygibz0lcCAodmlzaWJsZT0lZCkiLCBvLCAhIXZpc2libGUpOwogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInN0YXR1c2Jhcix2aXNpYmxlLHNldCIsICZ2
aXNpYmxlKTsKQEAgLTI5ODQsNyArMjk4NCw3IEBAIHZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zp
c2libGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKICAqCiAgKiBFbWl0
cyBzaWduYWw6ICJzdGF0dXNiYXIsdmlzaWJsZSxnZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9v
bGVhbi4KICAqLwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmpl
Y3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2li
bGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpCiB7CiAgICAgREJHKCIl
cywgbz0lcCIsIF9fZnVuY19fLCBvKTsKICAgICAqdmlzaWJsZSA9IEVJTkFfRkFMU0U7CkBAIC0z
MDAwLDExICszMDAwLDExIEBAIHZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2
YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
c3RhdHVzYmFyLHRleHQsc2V0IiB3aXRoIGEgc3RyaW5nLgogICovCi12b2lkIGV3a192aWV3X3N0
YXR1c2Jhcl90ZXh0X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCkKK3ZvaWQg
ZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0
ZXh0KQogewogICAgIERCRygibz0lcCAodGV4dD0lcykiLCBvLCB0ZXh0KTsKICAgICBJTkYoInN0
YXR1cyBiYXIgdGV4dCBzZXQ6ICVzIiwgdGV4dCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChvLCAic3RhdHVzYmFyLHRleHQsc2V0IiwgKHZvaWQgKil0ZXh0KTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJzdGF0dXNiYXIsdGV4dCxzZXQiLCAo
dm9pZCopdGV4dCk7CiB9CiAKIC8qKgpAQCAtMzAxNiw3ICszMDE2LDcgQEAgdm9pZCBld2tfdmll
d19zdGF0dXNiYXJfdGV4dF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQpCiAg
KgogICogRW1pdHMgc2lnbmFsOiAic2Nyb2xsYmFycyx2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50
ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxlKQordm9pZCBld2tfdmlld19zY3Jv
bGxiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKIHsK
ICAgICBEQkcoIm89JXAgKHZpc2libGU9JWQpIiwgbywgISF2aXNpYmxlKTsKICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJzY3JvbGxiYXJzLHZpc2libGUsc2V0IiwgJnZp
c2libGUpOwpAQCAtMzAzMyw3ICszMDMzLDcgQEAgdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zp
c2libGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmlzaWJsZSkKICAqCiAgKiBFbWl0
cyBzaWduYWw6ICJzY3JvbGxiYXJzLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJv
b2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQordm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zp
c2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpCiB7CiAgICAgREJH
KCIlcywgbz0lcCIsIF9fZnVuY19fLCBvKTsKICAgICAqdmlzaWJsZSA9IEVJTkFfRkFMU0U7CkBA
IC0zMDQ5LDcgKzMwNDksNyBAQCB2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6
ICJtZW51YmFyLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmpl
Y3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKQogewogICAgIERCRygibz0lcCAodmlzaWJsZT0lZCki
LCBvLCAhIXZpc2libGUpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
Im1lbnViYXIsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBAIC0zMDY2LDcgKzMwNjYsNyBAQCB2
b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogIm1lbnViYXIsdmlzaWJsZSxnZXQiIHdp
dGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19tZW51YmFyX3Zp
c2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCit2b2lkIGV3a192
aWV3X21lbnViYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCogdmlzaWJs
ZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5jX18sIG8pOwogICAgICp2aXNpYmxlID0g
RUlOQV9GQUxTRTsKQEAgLTMwODMsMTAgKzMwODMsMTAgQEAgdm9pZCBld2tfdmlld19tZW51YmFy
X3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKnZpc2libGUpCiAgKiBFbWl0
cyBzaWduYWw6ICJ0b29sdGlwLHRleHQsc2V0IiB3aXRoIGEgc3RyaW5nLiBJZiB0b29sdGlwIG11
c3QgYmUgYWN0dWFsbHkKICAqIHJlbW92ZWQsIHRleHQgd2lsbCBiZSAwIG9yICdcMCcKICAqLwot
dm9pZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFy
ICp0ZXh0KQordm9pZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBj
b25zdCBjaGFyKiB0ZXh0KQogewogICAgIERCRygibz0lcCB0ZXh0PSVzIiwgbywgdGV4dCk7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidG9vbHRpcCx0ZXh0LHNldCIs
ICh2b2lkICopdGV4dCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAi
dG9vbHRpcCx0ZXh0LHNldCIsICh2b2lkKil0ZXh0KTsKIH0KIAogLyoqCkBAIC0zMDk4LDcgKzMw
OTgsNyBAQCB2b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKnRleHQpCiAgKiBAc291cmNlSUQgU291cmNlIGlkLgogICoKICAqLwotdm9pZCBl
d2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpt
ZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hhciAqc291cmNlSUQpCit2
b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNo
YXIqIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3VyY2VJ
RCkKIHsKICAgICBEQkcoIm89JXAgbWVzc2FnZT0lcyBsaW5lTnVtYmVyPSV1IHNvdXJjZUlEPSVz
IiwgbywgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpOwogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzEwNyw3ICszMTA3LDcgQEAgdm9pZCBld2tfdmlld19h
ZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICptZXNzYWdlLCB1
bnNpZ25lZAogICAgIHNkLT5hcGktPmFkZF9jb25zb2xlX21lc3NhZ2Uoc2QsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZUlEKTsKIH0KIAotdm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9h
bGVydChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNz
YWdlKQordm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogbywg
RXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIERCRygibz0l
cCBmcmFtZT0lcCBtZXNzYWdlPSVzIiwgbywgZnJhbWUsIG1lc3NhZ2UpOwogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzExOSw3ICszMTE5LDcgQEAgdm9pZCBld2tf
dmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZy
YW1lLCBjb25zdCBjaGEKICAgICBzZC0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydChzZCwgZnJh
bWUsIG1lc3NhZ2UpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29u
ZmlybShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNz
YWdlKQorRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmpl
Y3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBE
QkcoIm89JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIG8sIGZyYW1lLCBtZXNzYWdlKTsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTMxMzEsNyAr
MzEzMSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKEV2YXNf
T2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvCiAgICAgcmV0dXJuIHNkLT5hcGktPnJ1
bl9qYXZhc2NyaXB0X2NvbmZpcm0oc2QsIGZyYW1lLCBtZXNzYWdlKTsKIH0KIAotRWluYV9Cb29s
IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCAqbywgRXZhc19PYmpl
Y3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlLCBjb25zdCBjaGFyICpkZWZhdWx0VmFsdWUs
IGNoYXIgKip2YWx1ZSkKK0VpbmFfQm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQo
RXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSwg
Y29uc3QgY2hhciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUpCiB7CiAgICAgREJHKCJvPSVw
IGZyYW1lPSVwIG1lc3NhZ2U9JXMiLCBvLCBmcmFtZSwgbWVzc2FnZSk7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0zMTU0LDcgKzMxNTQsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0ICpv
LCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbgogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlm
IHNjcmlwdCBzaG91bGQgYmUgc3RvcHBlZDsgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwot
RWluYV9Cb29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFdmFzX09iamVj
dCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZh
c19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0zMTgwLDcgKzMxODAsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KEV2YXNfT2JqZWN0ICpv
KQogICogQHBhcmFtIGV4cGVjdGVkX3NpemUgVGhlIGV4cGVjdGVkIHNpemUgb2YgdGhpcyBkYXRh
YmFzZSBpbiBvcmRlciB0byBmdWxmaWxsCiAgKiBzaXRlJ3MgcmVxdWlyZW1lbnQuCiAgKi8KLXVp
bnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKEV2YXNfT2JqZWN0ICpvLCBF
dmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKmRhdGFiYXNlTmFtZSwgdWludDY0X3QgY3Vy
cmVudF9zaXplLCB1aW50NjRfdCBleHBlY3RlZF9zaXplKQordWludDY0X3QgZXdrX3ZpZXdfZXhj
ZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwg
Y29uc3QgY2hhciogZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50X3NpemUsIHVpbnQ2NF90
IGV4cGVjdGVkX3NpemUpCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CkBAIC0zMTg4LDcgKzMxODgsNyBAQCB1aW50NjRfdCBl
d2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFzX09iamVjdCAqbywgRXZhc19PYmpl
Y3QgKmZyYW1lLCBjbwogICAgIGlmICghc2QtPmFwaS0+ZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSU5GKCJjdXJyZW50X3NpemU9JSJQUkl1NjQiIGV4
cGVjdGVkX3NpemU9JSJQUkl1NjQsIGN1cnJlbnRfc2l6ZSwgZXhwZWN0ZWRfc2l6ZSk7CisgICAg
SU5GKCJjdXJyZW50X3NpemU9JSIgUFJJdTY0ICIgZXhwZWN0ZWRfc2l6ZT0lIiBQUkl1NjQsIGN1
cnJlbnRfc2l6ZSwgZXhwZWN0ZWRfc2l6ZSk7CiAgICAgcmV0dXJuIHNkLT5hcGktPmV4Y2VlZGVk
X2RhdGFiYXNlX3F1b3RhKHNkLCBmcmFtZSwgZGF0YWJhc2VOYW1lLCBjdXJyZW50X3NpemUsIGV4
cGVjdGVkX3NpemUpOwogfQogCkBAIC0zMjA1LDcgKzMyMDUsNyBAQCB1aW50NjRfdCBld2tfdmll
d19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZy
YW1lLCBjbwogICoKICAqIEByZXR1cm4gQEVJTkFfRkFMU0UgaWYgdXNlciBjYW5jZWxlZCBmaWxl
IHNlbGVjdGlvbjsgQEVJTkFfVFJVRSBpZiBjb25maXJtZWQuCiAgKi8KLUVpbmFfQm9vbCBld2tf
dmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBF
aW5hX0Jvb2wgYWxsb3dzX211bHRpcGxlX2ZpbGVzLCBjb25zdCBjaGFyICphY2NlcHRfdHlwZXMs
IEVpbmFfTGlzdCAqKnNlbGVjdGVkX2ZpbGVuYW1lcykKK0VpbmFfQm9vbCBld2tfdmlld19ydW5f
b3Blbl9wYW5lbChFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBFaW5hX0Jvb2wg
YWxsb3dzX211bHRpcGxlX2ZpbGVzLCBjb25zdCBjaGFyKiBhY2NlcHRfdHlwZXMsIEVpbmFfTGlz
dCoqIHNlbGVjdGVkX2ZpbGVuYW1lcykKIHsKICAgICBEQkcoIm89JXAgZnJhbWU9JXAgYWxsb3dz
X211bHRpcGxlX2ZpbGVzPSVkIiwgbywgZnJhbWUsIGFsbG93c19tdWx0aXBsZV9maWxlcyk7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0zMjIz
LDcgKzMyMjMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwoRXZhc19PYmpl
Y3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgRWluYV9Cb29sCiAgICAgcmV0dXJuIGNvbmZpcm07
CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQordm9pZCBld2tfdmll
d19yZXBhaW50KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZh
c19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgREJHKCJvPSVwLCByZWdpb249JWQsJWQg
KyAlZHglZCIsIG8sIHgsIHksIHcsIGgpOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QpOwpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdm9pZCBld2tfdmlld19yZXBhaW50KEV2YXNf
T2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LAogICAg
IF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0KIAotdm9pZCBld2tfdmlld19zY3JvbGwo
RXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQg
c3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3csIEV2YXNfQ29vcmQgc2gsIEV2YXNfQ29v
cmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgY3csIEV2YXNfQ29vcmQgY2gsIEVpbmFf
Qm9vbCBtYWluX2ZyYW1lKQordm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19PYmplY3QqIG8sIEV2
YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgc3gsIEV2YXNfQ29vcmQgc3ks
IEV2YXNfQ29vcmQgc3csIEV2YXNfQ29vcmQgc2gsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQg
Y3ksIEV2YXNfQ29vcmQgY3csIEV2YXNfQ29vcmQgY2gsIEVpbmFfQm9vbCBtYWluX2ZyYW1lKQog
ewogICAgIERCRygibz0lcCwgZGVsdGE6ICVkLCVkLCBzY3JvbGw6ICVkLCVkKyVkeCVkLCBjbGlw
OiAlZCwlZCslZHglZCIsCiAgICAgICAgIG8sIGR4LCBkeSwgc3gsIHN5LCBzdywgc2gsIGN4LCBj
eSwgY3csIGNoKTsKQEAgLTMyNTYsNyArMzI1Niw3IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2
YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHN4
CiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCi1XZWJDb3JlOjpQYWdlKiBl
d2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorV2ViQ29yZTo6UGFn
ZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMzI2OCw3ICszMjY4LDcgQEAgV2ViQ29yZTo6
UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAqCiAg
KiBFbWl0cyAiZnJhbWUsY3JlYXRlZCIgd2l0aCB0aGUgbmV3IGZyYW1lIG9iamVjdCBvbiBzdWNj
ZXNzLgogICovCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1l
X2NyZWF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBXVEY6OlN0
cmluZyAmbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50ICpvd25lckVsZW1lbnQs
IGNvbnN0IFdlYkNvcmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpTdHJpbmcgJnJlZmVycmVyKQor
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9jcmVhdGUoRXZh
c19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUs
IFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBXZWJD
b3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBEQkco
Im89JXAsIGZyYW1lPSVwLCBuYW1lPSVzLCBvd25lckVsZW1lbnQ9JXAsIHVybD0lcywgcmVmZXJy
ZXI9JXMiLAogICAgICAgICBvLCBmcmFtZSwgbmFtZS51dGY4KCkuZGF0YSgpLCBvd25lckVsZW1l
bnQsCkBAIC0zMjc4LDcgKzMyNzgsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+
IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmplYwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAKICAgICBXVEY6OlJlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gY2YgPSBfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcKLSAgICAgICAg
KHNkLCBwcml2LCBvd25lckVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc2QsIHByaXYsIG93bmVyRWxlbWVudCk7CiAgICAgaWYgKCFjZikgewogICAg
ICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgY2hpbGQgY29yZSBmcmFtZSAnJXMnIiwgbmFtZS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFz
X09iamVjdCAqbywgRXZhc19PYmplYwogICAgIHJldHVybiBjZi5yZWxlYXNlKCk7CiB9CiAKLVdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZh
c19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
cGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQgKmVsZW1lbnQsIGNvbnN0IFdl
YkNvcmU6OktVUkwgJnVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+ICZwYXJhbU5h
bWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtVmFsdWVzLCBjb25zdCBX
VEY6OlN0cmluZyAmbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywg
RXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBX
ZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
dXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgREJHKCJvPSVwLCBmcmFtZT0lcCwg
c2l6ZT0lZHglZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCiAgICAgICAgIG8s
IGZyYW1lLCBwbHVnaW5TaXplLndpZHRoKCksIHBsdWdpblNpemUuaGVpZ2h0KCksIGVsZW1lbnQs
CkBAIC0zMzExLDggKzMzMTEsOCBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBl
d2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iagogICAgIF9ld2tf
dmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIAogICAgIHJldHVybiBld2tfZnJhbWVfcGx1Z2luX2Ny
ZWF0ZQotICAgICAgICAoZnJhbWUsIHBsdWdpblNpemUsIGVsZW1lbnQsIHVybCwgcGFyYW1OYW1l
cywgcGFyYW1WYWx1ZXMsCi0gICAgICAgICBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKKyAgICAg
ICAgICAgICAgIChmcmFtZSwgcGx1Z2luU2l6ZSwgZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBw
YXJhbVZhbHVlcywKKyAgICAgICAgICAgICAgIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkpOwogfQog
CiAvKioKQEAgLTMzMjYsNyArMzMyNiw3IEBAIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRn
ZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqCiAgKgog
ICogRW1pdHM6ICJwb3B1cCxjcmVhdGUiIHdpdGggYSBsaXN0IG9mIEV3a19NZW51IGNvbnRhaW5p
bmcgZWFjaCBpdGVtJ3MgZGF0YQogICovCi12b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09i
amVjdCAqbywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICpjbGllbnQsIGludCBzZWxlY3RlZCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCAmcmVjdCkKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2
YXNfT2JqZWN0KiBvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwgaW50IHNlbGVj
dGVkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewogICAgIElORigibz0lcCIsIG8p
OwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzM0MCw3ICszMzQw
LDcgQEAgdm9pZCBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBv
cHVwTWVudUNsaWVudCAqY2xpZW50LCBpbnQgc2UKICAgICAvLyBwb3B1bGF0ZSBpdGVtcwogICAg
IGNvbnN0IGludCBzaXplID0gY2xpZW50LT5saXN0U2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEV3a19NZW51X0l0ZW0gKml0ZW0gPSAoRXdrX01l
bnVfSXRlbSAqKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CisgICAgICAgIEV3a19NZW51X0l0ZW0q
IGl0ZW0gPSAoRXdrX01lbnVfSXRlbSopIG1hbGxvYyhzaXplb2YoKml0ZW0pKTsKICAgICAgICAg
aWYgKGNsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQogICAgICAgICAgICAgaXRlbS0+dHlwZSA9
IEVXS19NRU5VX1NFUEFSQVRPUjsKICAgICAgICAgZWxzZSBpZiAoY2xpZW50LT5pdGVtSXNMYWJl
bChpKSkKQEAgLTMzNTksNyArMzM1OSw3IEBAIHZvaWQgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNf
T2JqZWN0ICpvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQgKmNsaWVudCwgaW50IHNlCiAgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAicG9wdXAsY3JlYXRlIiwgJnByaXYt
PnBvcHVwLm1lbnUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFz
X09iamVjdCAqbykKK0VpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0
KiBvKQogewogICAgIElORigibz0lcCIsIG8pOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwpAQCAtMzM3Miw3ICszMzcyLDcgQEAgRWluYV9Cb29sIGV3
a192aWV3X3BvcHVwX2Rlc3Ryb3koRXZhc19PYmplY3QgKm8pCiAKICAgICB2b2lkKiBpdGVtdjsK
ICAgICBFSU5BX0xJU1RfRlJFRShwcml2LT5wb3B1cC5tZW51Lml0ZW1zLCBpdGVtdikgewotICAg
ICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0gKEV3a19NZW51X0l0ZW0gKilpdGVtdjsKKyAgICAg
ICAgRXdrX01lbnVfSXRlbSogaXRlbSA9IChFd2tfTWVudV9JdGVtKilpdGVtdjsKICAgICAgICAg
ZWluYV9zdHJpbmdzaGFyZV9kZWwoaXRlbS0+dGV4dCk7CiAgICAgICAgIGZyZWUoaXRlbSk7CiAg
ICAgfQpAQCAtMzM4Miw3ICszMzgyLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ry
b3koRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotdm9pZCBld2tf
dmlld19wb3B1cF9zZWxlY3RlZF9zZXQoRXZhc19PYmplY3QgKm8sIGludCBpbmRleCkKK3ZvaWQg
ZXdrX3ZpZXdfcG9wdXBfc2VsZWN0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgaW5kZXgpCiB7
CiAgICAgSU5GKCJvPSVwIiwgbyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCk7CkBAIC0zNDAyLDcgKzM0MDIsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX3NlbGVjdGVkX3Nl
dChFdmFzX09iamVjdCAqbywgaW50IGluZGV4KQogICogRW1pdHM6ICJkb3dubG9hZCxyZXF1ZXN0
IiB3aXRoIGFuIEV3a19Eb3dubG9hZCBjb250YWluaW5nIHRoZSBkZXRhaWxzIG9mIHRoZQogICog
cmVxdWVzdGVkIGRvd25sb2FkLiBUaGUgZG93bmxvYWQgcGVyIHNlIG11c3QgYmUgaGFuZGxlZCBv
dXRzaWRlIG9mIHdlYmtpdC4KICAqLwotdm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2
YXNfT2JqZWN0ICpvLCBFd2tfRG93bmxvYWQgKmRvd25sb2FkKQordm9pZCBld2tfdmlld19kb3du
bG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBvLCBFd2tfRG93bmxvYWQqIGRvd25sb2FkKQogewog
ICAgIERCRygidmlldz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobywgImRvd25sb2FkLHJlcXVlc3QiLCBkb3dubG9hZCk7CkBAIC0zNDE1LDcgKzM0MTUsNyBA
QCB2b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19PYmplY3QgKm8sIEV3a19Eb3du
bG9hZCAqZG93bmxvYWQpCiAgKiBAcGFyYW0gbyB2aWV3LgogICogQHBhcmFtIGZyYW1lIHRoZSBm
cmFtZS4KICAqLwotdm9pZCBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFyKEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUpCit2b2lkIGV3a192aWV3X2pzX3dpbmRvd19vYmpl
Y3RfY2xlYXIoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSkKIHsKICAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJqcyx3aW5kb3dvYmplY3QsY2xlYXIiLCBm
cmFtZSk7CiB9CkBAIC0zNDI4LDE2ICszNDI4LDE2IEBAIHZvaWQgZXdrX3ZpZXdfanNfd2luZG93
X29iamVjdF9jbGVhcihFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lKQogICoKICAq
IEVtaXRzIHNpZ25hbDogInZpZXdwb3J0LGNoYW5nZWQiIHdpdGggbm8gcGFyYW1ldGVycy4KICAq
Lwotdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChFdmFzX09iamVjdCAqbywg
Y29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgJmFyZ3VtZW50cykKK3ZvaWQgZXdrX3Zp
ZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8s
IHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7Ci0gICAgCisKICAgICBwcml2
LT52aWV3cG9ydF9hcmd1bWVudHMgPSBhcmd1bWVudHM7CiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChvLCAidmlld3BvcnQsY2hhbmdlZCIsIDApOwogfQogCi12b2lkIGV3a192
aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBmbG9hdCAq
dywgZmxvYXQgKmgsIGZsb2F0ICppbml0X3NjYWxlLCBmbG9hdCAqbWF4X3NjYWxlLCBmbG9hdCAq
bWluX3NjYWxlLCBmbG9hdCAqZGV2aWNlX3BpeGVsX3JhdGlvLCBFaW5hX0Jvb2wgKnVzZXJfc2Nh
bGFibGUpCit2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvLCBmbG9hdCogdywgZmxvYXQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBmbG9hdCog
bWF4X3NjYWxlLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogZGV2aWNlX3BpeGVsX3JhdGlvLCBF
aW5hX0Jvb2wqIHVzZXJfc2NhbGFibGUpCiB7CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMgPSBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKG8p
OwogCkBAIC0zNDU3LDcgKzM0NTcsNyBAQCB2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0
ZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBmbG9hdCAqdywgZmxvYXQgKmgsCiAgICAgICAg
ICp1c2VyX3NjYWxhYmxlID0gc3RhdGljX2Nhc3Q8Ym9vbD4oYXR0cmlidXRlcy51c2VyU2NhbGFi
bGUpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3Qg
Km8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlKQorRWluYV9Cb29sIGV3a192aWV3
X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1h
eF9zY2FsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFM
U0UpOwpAQCAtMzQ3Myw3ICszNDczLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vf
c2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2EKICAgICBy
ZXR1cm4gRUlOQV9UUlVFOwogfQogCi1mbG9hdCBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCitmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgLTEuMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAt
MS4wKTsKQEAgLTM0ODEsNyArMzQ4MSw3IEBAIGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWlu
X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muem9v
bV9yYW5nZS5taW5fc2NhbGU7CiB9CiAKLWZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dl
dChjb25zdCBFdmFzX09iamVjdCAqbykKK2Zsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dl
dChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCAtMS4wKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IC0xLjApOwpAQCAtMzQ4OSw3ICszNDg5LDcgQEAgZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9t
YXhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLm1heF9zY2FsZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFi
bGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkKK0VpbmFfQm9v
bCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHVz
ZXJfc2NhbGFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5B
X0ZBTFNFKTsKQEAgLTM0OTksNyArMzQ5OSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld191c2VyX3Nj
YWxhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHVzZXJfc2NhbGFibGUpCiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFi
bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0zNTA3LDcgKzM1MDcsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiAgICAgcmV0
dXJuIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UudXNlcl9zY2FsYWJsZTsKIH0KIAotZmxvYXQg
ZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK2Zs
b2F0IGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAtMS4wKTsKQEAgLTM1MTUsNyArMzUx
NSw3IEBAIGZsb2F0IGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pCiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmRldmljZV9waXhlbF9yYXRpbzsK
IH0KIAotdm9pZCBld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlfbm9uZW1wdHlfbGF5b3V0KEV2
YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlfbm9uZW1wdHlf
bGF5b3V0KEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CkBAIC0z
NTMyLDcgKzM1MzIsNyBAQCB2b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0
eV9sYXlvdXQoRXZhc19PYmplY3QgKm8pCiAgKgogICogQHBhcmFtIG8gdmlldy4KICAqLwotdm9p
ZCBld2tfdmlld19kaXNwYXRjaF9kaWRfZmluaXNoX2xvYWRpbmcoRXZhc19PYmplY3QgKm8pCit2
b2lkIGV3a192aWV3X2Rpc3BhdGNoX2RpZF9maW5pc2hfbG9hZGluZyhFdmFzX09iamVjdCogbykK
IHsKICAgICAvKiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50IGFuZCByZW5kZXJpbmcgaXMgc3RpbGwg
ZGlzYWJsZWQsIFdlYkNvcmUgd2lsbCBub3QKICAgICAgKiB0cmlnZ2VyIHRoZSBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgc2lnbmFsIGFueW1vcmUuIFNvLCB3ZQpAQCAtMzU0MSw3ICsz
NTQxLDcgQEAgdm9pZCBld2tfdmlld19kaXNwYXRjaF9kaWRfZmluaXNoX2xvYWRpbmcoRXZhc19P
YmplY3QgKm8pCiAgICAgZXdrX3ZpZXdfZGlkX2ZpcnN0X3Zpc3VhbGx5X25vbmVtcHR5X2xheW91
dChvKTsKIH0KIAotdm9pZCBld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVkX2Zvcl9uZXdw
YWdlKEV2YXNfT2JqZWN0ICpvKQordm9pZCBld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVk
X2Zvcl9uZXdwYWdlKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7
CkBAIC0zNTYwLDcgKzM1NjAsNyBAQCB2b2lkIGV3a192aWV3X3RyYW5zaXRpb25fdG9fY29tbWl0
ZWRfZm9yX25ld3BhZ2UoRXZhc19PYmplY3QgKm8pCiAgKiBAcGFyYW0gbyBWaWV3IHRvIGxvYWQK
ICAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3Qgd2hpY2ggY29udGFpbiB1cmwgdG8gbmF2aWdhdGUK
ICAqLwotRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNf
T2JqZWN0ICpvLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCAqcmVxdWVzdCkKK0VpbmFfQm9v
bCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCogbywgRXdr
X0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9UUlVFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc2QtPmFwaSwgRUlOQV9UUlVFKTsKQEAgLTM1NzEsNyArMzU3MSw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCAqbywg
RXdrX0ZyYW1lX1Jlc291cmNlCiAgICAgcmV0dXJuIHNkLT5hcGktPm5hdmlnYXRpb25fcG9saWN5
X2RlY2lzaW9uKHNkLCByZXF1ZXN0KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2pzX29iamVj
dF9hZGQoRXZhc19PYmplY3QgKm8sIEV3a19KU19PYmplY3QgKm9iaiwgY29uc3QgY2hhciAqb2Jq
X25hbWUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2JqZWN0X2FkZChFdmFzX09iamVjdCogbywg
RXdrX0pTX09iamVjdCogb2JqLCBjb25zdCBjaGFyKiBvYmpfbmFtZSkKIHsKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAob2JqLT52aWV3KSAvLyBvYmplY3QgaGFzIGFs
cmVhZHkgYmVlbiBhZGRlZCB0byBhbm90aGVyIGV3a192aWV3CkBAIC0zNTgxLDggKzM1ODEsOCBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2JqZWN0X2FkZChFdmFzX09iamVjdCAqbywgRXdrX0pT
X09iamVjdCAqb2JqLCBjb25zdCBjaGFyCiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKIAogICAgIEpTQzo6SlNMb2NrIGxvY2soSlNDOjpTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIFdlYkNvcmU6OkpTRE9NV2luZG93ICp3aW5kb3cgPSB0
b0pTRE9NV2luZG93KHByaXYtPm1haW5fZnJhbWUsIFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKLSAgICBKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290OworICAgIFdlYkNv
cmU6OkpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHByaXYtPm1haW5fZnJhbWUs
IFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBKU0M6OkJpbmRpbmdzOjpS
b290T2JqZWN0KiByb290OwogICAgIHJvb3QgPSBwcml2LT5tYWluX2ZyYW1lLT5zY3JpcHQoKS0+
YmluZGluZ1Jvb3RPYmplY3QoKTsKIAogICAgIGlmICghd2luZG93KSB7CkBAIC0zNTkzLDcgKzM1
OTMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2JqZWN0X2FkZChFdmFzX09iamVjdCAqbywg
RXdrX0pTX09iamVjdCAqb2JqLCBjb25zdCBjaGFyCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMg
PSB3aW5kb3ctPmdsb2JhbEV4ZWMoKTsKIAogICAgIG9iai0+dmlldyA9IG87Ci0gICAgSlNDOjpK
U09iamVjdCAqcnVudGltZU9iamVjdCA9IChKU0M6OkpTT2JqZWN0KilKU0M6OkJpbmRpbmdzOjpD
SW5zdGFuY2U6OmNyZWF0ZSgoTlBPYmplY3QqKW9iaiwgcm9vdCktPmNyZWF0ZVJ1bnRpbWVPYmpl
Y3QoZXhlYyk7CisgICAgSlNDOjpKU09iamVjdCogcnVudGltZU9iamVjdCA9IChKU0M6OkpTT2Jq
ZWN0KilKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZSgoTlBPYmplY3QqKW9iaiwgcm9v
dCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgSlNDOjpJZGVudGlmaWVyIGlkID0g
SlNDOjpJZGVudGlmaWVyKGV4ZWMsIG9ial9uYW1lKTsKIAogICAgIEpTQzo6UHV0UHJvcGVydHlT
bG90IHNsb3Q7CkBAIC0zNjUzLDcgKzM2NTMsNyBAQCB2b2lkKiBld2tfdmlld19wcm90b2NvbF9o
YW5kbGVyX3Jlc291cmNlX2dldChFdmFzX09iamVjdCogbywgc2l6ZV90KiBieXRlc1JlYWQsCiAg
KiBAcGFyYW0gdyBuZXcgY29udGVudCB3aWR0aC4KICAqIEBwYXJhbSBoIG5ldyBjb250ZW50IGhl
aWdodC4KICAqLwotdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19PYmpl
Y3QgKm8sIGludCB3LCBpbnQgaCkKK3ZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBvLCBpbnQgdywgaW50IGgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7
CkBAIC0zNjY1LDEzICszNjY1LDEzIEBAIHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFu
Z2VkKEV2YXNfT2JqZWN0ICpvLCBpbnQgdywgaW50IGgpCiAKIC8qKgogICogQGludGVybmFsCi0g
KiBHZXRzIHBhZ2Ugc2l6ZSBmcm9tIGZyYW1ldmlldy4gCisgKiBHZXRzIHBhZ2Ugc2l6ZSBmcm9t
IGZyYW1ldmlldy4KICAqCiAgKiBAcGFyYW0gbyB2aWV3LgogICoKICAqIEByZXR1cm4gcGFnZSBz
aXplLgogICovCi1XZWJDb3JlOjpGbG9hdFJlY3QgZXdrX3ZpZXdfcGFnZV9yZWN0X2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKK1dlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3Rf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwpAQCAtMzY4MSw3ICszNjgxLDcgQEAg
V2ViQ29yZTo6RmxvYXRSZWN0IGV3a192aWV3X3BhZ2VfcmVjdF9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pCiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotdm9pZCBld2tfdmlld19uZWVk
X3RvdWNoX2V2ZW50c19zZXQoRXZhc19PYmplY3QgKm8sIGJvb2wgbmVlZGVkKQordm9pZCBld2tf
dmlld19uZWVkX3RvdWNoX2V2ZW50c19zZXQoRXZhc19PYmplY3QqIG8sIGJvb2wgbmVlZGVkKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2Qs
IHByaXYpOwpAQCAtMzY4OSw3ICszNjg5LDcgQEAgdm9pZCBld2tfdmlld19uZWVkX3RvdWNoX2V2
ZW50c19zZXQoRXZhc19PYmplY3QgKm8sIGJvb2wgbmVlZGVkKQogICAgIHByaXYtPmZsYWdzLm5l
ZWRfdG91Y2hfZXZlbnRzID0gbmVlZGVkOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbmVlZF90
b3VjaF9ldmVudHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRWluYV9Cb29sIGV3a192aWV3
X25lZWRfdG91Y2hfZXZlbnRzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMzY5Nyw3ICszNjk3
LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldChjb25zdCBFdmFz
X09iamVjdCAqbykKIH0KICNlbmRpZgogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbW9kZV9zZXQoRXZh
c19PYmplY3QgKm8sIEV3a19WaWV3X01vZGUgdmlld19tb2RlKQorRWluYV9Cb29sIGV3a192aWV3
X21vZGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFd2tfVmlld19Nb2RlIHZpZXdfbW9kZSkKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMzcyNSw3
ICszNzI1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
d2tfVmlld19Nb2RlIHZpZXdfbW9kZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1Fd2tf
Vmlld19Nb2RlIGV3a192aWV3X21vZGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQorRXdrX1Zp
ZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAgICBF
d2tfVmlld19Nb2RlIG1vZGUgPSBFV0tfVklFV19NT0RFX1dJTkRPV0VEOwogCkBAIC0zNzY0LDcg
KzM3NjQsNyBAQCBFd2tfVmlld19Nb2RlIGV3a192aWV3X21vZGVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQogICoKICAqIEVtaXRzIHNpZ25hbDogImVkaXRvcmNsaWVudHNlbGVjdGlvbixjaGFu
Z2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVu
dF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfZWRpdG9y
X2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCogbykKIHsKICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJlZGl0b3JjbGllbnQsc2VsZWN0aW9uLGNoYW5n
ZWQiLCAwKTsKIH0KQEAgLTM3NzcsNyArMzc3Nyw3IEBAIHZvaWQgZXdrX3ZpZXdfZWRpdG9yX2Ns
aWVudF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCAqbykKICAqCiAgKiBFbWl0cyBzaWdu
YWw6ICJlZGl0b3JjbGllbnQsY29udGVudHMsY2hhbmdlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgog
ICovCi12b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09i
amVjdCAqbykKK3ZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2VkKEV2
YXNfT2JqZWN0KiBvKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywg
ImVkaXRvcmNsaWVudCxjb250ZW50cyxjaGFuZ2VkIiwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCmluZGV4IDhiYWY4MDU2MDVmZTI4NGQ1NDc0ZjZiMzAy
MTJiOWEyZDUwYThhOTAuLmI5OWM4YWQ3OTE3NTJjYWE4OTFhMzBlYmVhOTRhNGQwZTdhMWRmOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCkBAIC0zMSwyMyAr
MzEsMjMgQEAKIAogc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5n
bGVfb25fZGVsKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpldmVu
dF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9vbl9kZWwodm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19P
YmplY3QgKmNsaXAgPSAoRXZhc19PYmplY3QqKWRhdGE7CisgICAgRXZhc19PYmplY3QqIGNsaXAg
PSAoRXZhc19PYmplY3QqKWRhdGE7CiAgICAgZXZhc19vYmplY3RfZGVsKGNsaXApOwogfQogCi1z
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZChFdmFzX09iamVjdCAqbykKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQogewot
ICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
OwogCiAgICAgX3BhcmVudF9zYy5zYy5hZGQobyk7CiAKLSAgICBzZCA9IChFd2tfVmlld19TbWFy
dF9EYXRhICopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7CisgICAgc2QgPSAoRXdrX1Zp
ZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7CiAgICAgaWYgKCFz
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXZhc19PYmplY3QgKmNsaXAgPSBldmFzX29iamVj
dF9yZWN0YW5nbGVfYWRkKHNkLT5iYXNlLmV2YXMpOworICAgIEV2YXNfT2JqZWN0KiBjbGlwID0g
ZXZhc19vYmplY3RfcmVjdGFuZ2xlX2FkZChzZC0+YmFzZS5ldmFzKTsKICAgICBldmFzX29iamVj
dF9jbGlwX3NldChzZC0+YmFja2luZ19zdG9yZSwgY2xpcCk7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfbWVtYmVyX2FkZChjbGlwLCBvKTsKICAgICBldmFzX29iamVjdF9zaG93KGNsaXApOwpAQCAt
NTYsMTggKzU2LDE4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYWRkKEV2
YXNfT2JqZWN0ICpvKQogICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIEVWQVNfQ0FMTEJBQ0tf
REVMLCBfZXdrX3ZpZXdfc2luZ2xlX29uX2RlbCwgY2xpcCk7CiB9CiAKLXN0YXRpYyBFdmFzX09i
amVjdCAqX2V3a192aWV3X3NpbmdsZV9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmlld19T
bWFydF9EYXRhICpzZCkKK3N0YXRpYyBFdmFzX09iamVjdCogX2V3a192aWV3X3NpbmdsZV9zbWFy
dF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBFdmFz
X09iamVjdCAqYnMgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoc2QtPmJhc2UuZXZhcyk7CisgICAg
RXZhc19PYmplY3QqIGJzID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKHNkLT5iYXNlLmV2YXMpOwog
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChicywgRUlOQV9GQUxTRSk7CiAgICAgZXZh
c19vYmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxlX3NldChicywgc2QtPnpvb21fd2Vha19zbW9vdGhf
c2NhbGUpOwogCiAgICAgcmV0dXJuIGJzOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3Jk
IGgpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVj
dCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9n
ZXQobyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0
YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7CiAgICAgX3BhcmVudF9zYy5zYy5yZXNp
emUobywgdywgaCk7CiAKICAgICBpZiAoIXNkKQpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29y
ZCB3LCBFdmFzX0NvbwogICAgIC8vIHRoZXNlIHNob3VsZCBiZSBxdWV1ZWQgYW5kIHByb2Nlc3Nl
ZCBpbiBjYWxjdWxhdGUgYXMgd2VsbCEKICAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChz
ZC0+YmFja2luZ19zdG9yZSwgdywgaCk7CiAgICAgaWYgKHNkLT5hbmltYXRlZF96b29tLnpvb20u
Y3VycmVudCA8IDAuMDAwMDEpIHsKLSAgICAgICAgRXZhc19PYmplY3QgKmNsaXAgPSBldmFzX29i
amVjdF9jbGlwX2dldChzZC0+YmFja2luZ19zdG9yZSk7CisgICAgICAgIEV2YXNfT2JqZWN0KiBj
bGlwID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOwogICAgICAgICBF
dmFzX0Nvb3JkIHgsIHksIGN3LCBjaDsKICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9z
ZXQoc2QtPmJhY2tpbmdfc3RvcmUsIDAsIDAsIHcsIGgpOwogICAgICAgICBldmFzX29iamVjdF9n
ZW9tZXRyeV9nZXQoc2QtPmJhY2tpbmdfc3RvcmUsICZ4LCAmeSwgMCwgMCk7CkBAIC05MCwxMCAr
OTAsMTAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUoRXZhc19P
YmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db28KICAgICB9CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fdXAodWludDMyX3QgKmltYWdlLCBzaXpl
X3Qgcm93cywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCBy
b3dzaXplKQorc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cCh1
aW50MzJfdCogaW1hZ2UsIHNpemVfdCByb3dzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3
LCBzaXplX3QgaCwgc2l6ZV90IHJvd3NpemUpCiB7Ci0gICAgdWludDMyX3QgKnNyYzsKLSAgICB1
aW50MzJfdCAqZHN0OworICAgIHVpbnQzMl90KiBzcmM7CisgICAgdWludDMyX3QqIGRzdDsKIAog
ICAgIGRzdCA9IGltYWdlICsgeCArIHkgKiByb3dzaXplOwogICAgIHNyYyA9IGRzdCArIHJvd3Mg
KiByb3dzaXplOwpAQCAtMTAzLDEwICsxMDMsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tf
dmlld180Yl9tb3ZlX3JlZ2lvbl91cCh1aW50MzJfdCAqaW1hZ2UsIHNpemVfdCByb3dzLCBzaXoK
ICAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCB3ICogNCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bih1aW50MzJfdCAqaW1hZ2UsIHNpemVfdCBy
b3dzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3LCBzaXplX3QgaCwgc2l6ZV90IHJvd3Np
emUpCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2Rvd24odWlu
dDMyX3QqIGltYWdlLCBzaXplX3Qgcm93cywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywg
c2l6ZV90IGgsIHNpemVfdCByb3dzaXplKQogewotICAgIHVpbnQzMl90ICpzcmM7Ci0gICAgdWlu
dDMyX3QgKmRzdDsKKyAgICB1aW50MzJfdCogc3JjOworICAgIHVpbnQzMl90KiBkc3Q7CiAKICAg
ICBoIC09IHJvd3M7CiAgICAgc3JjID0gaW1hZ2UgKyB4ICsgKHkgKyBoIC0gMSkgKiByb3dzaXpl
OwpAQCAtMTE2LDkgKzExNiw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92
ZV9yZWdpb25fZG93bih1aW50MzJfdCAqaW1hZ2UsIHNpemVfdCByb3dzLCBzCiAgICAgICAgIG1l
bWNweShkc3QsIHNyYywgdyAqIDQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3
XzRiX21vdmVfbGluZV9sZWZ0KHVpbnQzMl90ICpkc3QsIGNvbnN0IHVpbnQzMl90ICpzcmMsIHNp
emVfdCBjb3VudCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xl
ZnQodWludDMyX3QqIGRzdCwgY29uc3QgdWludDMyX3QqIHNyYywgc2l6ZV90IGNvdW50KQogewot
ICAgIHVpbnQzMl90ICpkc3RfZW5kID0gZHN0ICsgY291bnQ7CisgICAgdWludDMyX3QqIGRzdF9l
bmQgPSBkc3QgKyBjb3VudDsKICAgICAvKiBubyBtZW1jcHkoKSBhcyBpdCBkb2VzIG5vdCBhbGxv
dyBvdmVybGFwcGluZyByZWdpb25zICovCiAgICAgLyogbm8gbWVtbW92ZSgpIGFzIGl0IHdpbGwg
Y29weSB0byBhIHRlbXBvcmFyeSBidWZmZXIgKi8KICAgICAvKiBUT0RPOiBsb29wIHVucm9sbGlu
ZywgY29weWluZyB1cCB0byBxdWFkLXdvcmRzIHdvdWxkIGhlbHAgKi8KQEAgLTEyNiw5ICsxMjYs
OSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfbGluZV9sZWZ0KHVpbnQz
Ml90ICpkc3QsIGNvbnN0IHVpbnQzMl90ICpzcgogICAgICAgICAqZHN0ID0gKnNyYzsKIH0KIAot
c3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfcmlnaHQodWludDMyX3Qg
KmRzdCwgdWludDMyX3QgKnNyYywgc2l6ZV90IGNvdW50KQorc3RhdGljIGlubGluZSB2b2lkIF9l
d2tfdmlld180Yl9tb3ZlX2xpbmVfcmlnaHQodWludDMyX3QqIGRzdCwgdWludDMyX3QqIHNyYywg
c2l6ZV90IGNvdW50KQogewotICAgIHVpbnQzMl90ICpkc3RfZW5kID0gZHN0IC0gY291bnQ7Cisg
ICAgdWludDMyX3QqIGRzdF9lbmQgPSBkc3QgLSBjb3VudDsKICAgICAvKiBubyBtZW1jcHkoKSBh
cyBpdCBkb2VzIG5vdCBhbGxvdyBvdmVybGFwcGluZyByZWdpb25zICovCiAgICAgLyogbm8gbWVt
bW92ZSgpIGFzIGl0IHdpbGwgY29weSB0byBhIHRlbXBvcmFyeSBidWZmZXIgKi8KICAgICAvKiBU
T0RPOiBsb29wIHVucm9sbGluZywgY29weWluZyB1cCB0byBxdWFkLXdvcmRzIHdvdWxkIGhlbHAg
Ki8KQEAgLTEzNiwxMCArMTM2LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJf
bW92ZV9saW5lX3JpZ2h0KHVpbnQzMl90ICpkc3QsIHVpbnQzMl90ICpzcmMsIHNpCiAgICAgICAg
ICpkc3QgPSAqc3JjOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVf
cmVnaW9uX2xlZnQodWludDMyX3QgKmltYWdlLCBzaXplX3QgY29scywgc2l6ZV90IHgsIHNpemVf
dCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dzaXplKQorc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0KHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90
IGNvbHMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHcsIHNpemVfdCBoLCBzaXplX3Qgcm93
c2l6ZSkKIHsKLSAgICB1aW50MzJfdCAqc3JjOwotICAgIHVpbnQzMl90ICpkc3Q7CisgICAgdWlu
dDMyX3QqIHNyYzsKKyAgICB1aW50MzJfdCogZHN0OwogCiAgICAgZHN0ID0gaW1hZ2UgKyB4ICsg
eSAqIHJvd3NpemU7CiAgICAgc3JjID0gZHN0ICsgY29sczsKQEAgLTE0OSwxMCArMTQ5LDEwIEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fbGVmdCh1aW50MzJf
dCAqaW1hZ2UsIHNpemVfdCBjb2xzLCBzCiAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVf
bGVmdChkc3QsIHNyYywgdyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJf
bW92ZV9yZWdpb25fcmlnaHQodWludDMyX3QgKmltYWdlLCBzaXplX3QgY29scywgc2l6ZV90IHgs
IHNpemVfdCB5LCBzaXplX3Qgdywgc2l6ZV90IGgsIHNpemVfdCByb3dzaXplKQorc3RhdGljIGlu
bGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodCh1aW50MzJfdCogaW1hZ2Us
IHNpemVfdCBjb2xzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3LCBzaXplX3QgaCwgc2l6
ZV90IHJvd3NpemUpCiB7Ci0gICAgdWludDMyX3QgKnNyYzsKLSAgICB1aW50MzJfdCAqZHN0Owor
ICAgIHVpbnQzMl90KiBzcmM7CisgICAgdWludDMyX3QqIGRzdDsKIAogICAgIHcgLT0gY29sczsK
ICAgICBzcmMgPSBpbWFnZSArICh4ICsgdyAtIDEpICsgeSAqIHJvd3NpemU7CkBAIC0xNjMsMTAg
KzE2MywxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3Jp
Z2h0KHVpbnQzMl90ICppbWFnZSwgc2l6ZV90IGNvbHMsCiB9CiAKIC8qIGNhdGNoLWFsbCBmdW5j
dGlvbiwgbm90IGFzIG9wdGltaXplZCBhcyB0aGUgb3RoZXJzLCBidXQgZG9lcyB0aGUgd29yay4g
Ki8KLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb24odWludDMyX3Qg
KmltYWdlLCBpbnQgZHgsIGludCBkeSwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgdywgc2l6
ZV90IGgsIHNpemVfdCByb3dzaXplKQorc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9t
b3ZlX3JlZ2lvbih1aW50MzJfdCogaW1hZ2UsIGludCBkeCwgaW50IGR5LCBzaXplX3QgeCwgc2l6
ZV90IHksIHNpemVfdCB3LCBzaXplX3QgaCwgc2l6ZV90IHJvd3NpemUpCiB7Ci0gICAgdWludDMy
X3QgKnNyYzsKLSAgICB1aW50MzJfdCAqZHN0OworICAgIHVpbnQzMl90KiBzcmM7CisgICAgdWlu
dDMyX3QqIGRzdDsKIAogICAgIGlmIChkeSA8IDApIHsKICAgICAgICAgaCArPSBkeTsKQEAgLTIw
Myw3ICsyMDMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9u
KHVpbnQzMl90ICppbWFnZSwgaW50IGR4LCBpbnQgZHksIHNpegogICAgIH0KIH0KIAotc3RhdGlj
IGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCB2b2lkICpwaXhlbHMsIEV2YXNfQ29vcmQgb3csIEV2YXNfQ29v
cmQgb2gsIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3IpCitzdGF0aWMgaW5saW5lIHZvaWQg
X2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QsIHZvaWQqIHBpeGVscywgRXZhc19Db29yZCBvdywgRXZhc19Db29yZCBvaCwgY29uc3Qg
RXdrX1Njcm9sbF9SZXF1ZXN0KiBzcikKIHsKICAgICBFdmFzX0Nvb3JkIHN4LCBzeSwgc3csIHNo
OwogCkBAIC0zNDAsMTMgKzM0MCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3Np
bmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqcwogICAgIH0K
IH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Njcm9sbHNfcHJv
Y2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7
Ci0gICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0ICpzcjsKLSAgICBjb25zdCBFd2tfU2Nyb2xs
X1JlcXVlc3QgKnNyX2VuZDsKKyAgICBjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QqIHNyOworICAg
IGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCogc3JfZW5kOwogICAgIEV2YXNfQ29vcmQgb3csIG9o
OwogICAgIHNpemVfdCBjb3VudDsKLSAgICB2b2lkICpwaXhlbHMgPSBldmFzX29iamVjdF9pbWFn
ZV9kYXRhX2dldChzZC0+YmFja2luZ19zdG9yZSwgMSk7CisgICAgdm9pZCogcGl4ZWxzID0gZXZh
c19vYmplY3RfaW1hZ2VfZGF0YV9nZXQoc2QtPmJhY2tpbmdfc3RvcmUsIDEpOwogICAgIGV2YXNf
b2JqZWN0X2ltYWdlX3NpemVfZ2V0KHNkLT5iYWNraW5nX3N0b3JlLCAmb3csICZvaCk7CiAKICAg
ICBzciA9IGV3a192aWV3X3Njcm9sbF9yZXF1ZXN0c19nZXQoc2QtPl9wcml2LCAmY291bnQpOwpA
QCAtMzU5LDI1ICszNTksMjUgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3Nt
YXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRf
cmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkKQogewotICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQ7CisgICAgRXdr
X1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dDsKICAgICBFdmFzX0Nvb3JkIG93LCBvaDsKLSAgICB2
b2lkICpwaXhlbHM7Ci0gICAgRWluYV9SZWN0YW5nbGUgKnI7Ci0gICAgY29uc3QgRWluYV9SZWN0
YW5nbGUgKnByOwotICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICpwcl9lbmQ7Ci0gICAgRWluYV9U
aWxlciAqdGlsZXI7Ci0gICAgRWluYV9JdGVyYXRvciAqaXRyOworICAgIHZvaWQqIHBpeGVsczsK
KyAgICBFaW5hX1JlY3RhbmdsZSogcjsKKyAgICBjb25zdCBFaW5hX1JlY3RhbmdsZSogcHI7Cisg
ICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHByX2VuZDsKKyAgICBFaW5hX1RpbGVyKiB0aWxlcjsK
KyAgICBFaW5hX0l0ZXJhdG9yKiBpdHI7CiAgICAgY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzOwotICAg
IGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7
CiAgICAgY2Fpcm9fZm9ybWF0X3QgZm9ybWF0OwotICAgIGNhaXJvX3QgKmNhaXJvOworICAgIGNh
aXJvX3QqIGNhaXJvOwogICAgIHNpemVfdCBjb3VudDsKICAgICBFaW5hX0Jvb2wgcmV0ID0gRUlO
QV9UUlVFOwogCiAgICAgaWYgKHNkLT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCA8IDAuMDAw
MDEpIHsKLSAgICAgICAgRXZhc19PYmplY3QgKmNsaXAgPSBldmFzX29iamVjdF9jbGlwX2dldChz
ZC0+YmFja2luZ19zdG9yZSk7CisgICAgICAgIEV2YXNfT2JqZWN0KiBjbGlwID0gZXZhc19vYmpl
Y3RfY2xpcF9nZXQoc2QtPmJhY2tpbmdfc3RvcmUpOwogICAgICAgICBFdmFzX0Nvb3JkIHcsIGgs
IGN3LCBjaDsKICAgICAgICAgLy8gcmVzZXQgZWZmZWN0cyBvZiB6b29tX3dlYWtfc2V0KCkKICAg
ICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQKQEAgLTQwMCw3ICs0MDAsNyBAQCBzdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tf
Vmlld19TbWFydF9EYXRhICpzZAogICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7CiAK
ICAgICBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEKLSAgICAg
ICAgKCh1bnNpZ25lZCBjaGFyKilwaXhlbHMsIGZvcm1hdCwgb3csIG9oLCBvdyAqIDQpOworICAg
ICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilwaXhlbHMsIGZvcm1hdCwgb3csIG9oLCBv
dyAqIDQpOwogICAgIHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpOwogICAg
IGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKICAgICAgICAgRVJSKCJjb3Vs
ZCBub3QgY3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVkeCVkOiAlcyIsCkBAIC00ODIsMTQgKzQ4
MiwxNCBAQCBlcnJvcl9jYWlyb19zdXJmYWNlOgogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc2V0KEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5
KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zZXQo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNf
Q29vcmQgY3kpCiB7CiAgICAgLy8gVE9ETzogcmV2aWV3CiAgICAgZmxvYXQgc2NhbGUgPSB6b29t
IC8gc2QtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydDsKICAgICBFdmFzX0Nvb3JkIHcgPSBzZC0+
dmlldy53ICogc2NhbGU7CiAgICAgRXZhc19Db29yZCBoID0gc2QtPnZpZXcuaCAqIHNjYWxlOwog
ICAgIEV2YXNfQ29vcmQgZHgsIGR5LCBjdywgY2g7Ci0gICAgRXZhc19PYmplY3QgKmNsaXAgPSBl
dmFzX29iamVjdF9jbGlwX2dldChzZC0+YmFja2luZ19zdG9yZSk7CisgICAgRXZhc19PYmplY3Qq
IGNsaXAgPSBldmFzX29iamVjdF9jbGlwX2dldChzZC0+YmFja2luZ19zdG9yZSk7CiAKICAgICBl
d2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQoc2QtPm1haW5fZnJhbWUsICZjdywgJmNoKTsKICAg
ICBpZiAoc2QtPnZpZXcudyA+IDAgJiYgc2QtPnZpZXcuaCA+IDApIHsKQEAgLTUxOSwxNyArNTE5
LDE3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtf
c2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0K
IAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc21vb3RoX3Nj
YWxlX3NldChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9Cb29sIHNtb290aF9zY2FsZSkK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2Fs
ZV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpCiB7
CiAgICAgZXZhc19vYmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxlX3NldChzZC0+YmFja2luZ19zdG9y
ZSwgc21vb3RoX3NjYWxlKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFy
dF9iZ19jb2xvcl9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIHVuc2lnbmVkIGNoYXIgciwg
dW5zaWduZWQgY2hhciBnLCB1bnNpZ25lZCBjaGFyIGIsIHVuc2lnbmVkIGNoYXIgYSkKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmdfY29sb3Jfc2V0KEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkLCB1bnNpZ25lZCBjaGFyIHIsIHVuc2lnbmVkIGNoYXIgZywgdW5zaWduZWQgY2hh
ciBiLCB1bnNpZ25lZCBjaGFyIGEpCiB7CiAgICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0
KHNkLT5iYWNraW5nX3N0b3JlLCBhIDwgMjU1KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Np
bmdsZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSkKK0VpbmFfQm9vbCBld2tf
dmlld19zaW5nbGVfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiB7CiAgICAg
aWYgKCFld2tfdmlld19iYXNlX3NtYXJ0X3NldChhcGkpKQogICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKQEAgLTU1MCwxMCArNTUwLDEwIEBAIEVpbmFfQm9vbCBld2tfdmlld19zaW5nbGVfc21h
cnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0ICpfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2Ns
YXNzX25ldyh2b2lkKQorc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc2luZ2xl
X3NtYXJ0X2NsYXNzX25ldyh2b2lkKQogewogICAgIHN0YXRpYyBFd2tfVmlld19TbWFydF9DbGFz
cyBhcGkgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTigiRXdrX1ZpZXdf
U2luZ2xlIik7Ci0gICAgc3RhdGljIEV2YXNfU21hcnQgKnNtYXJ0ID0gMDsKKyAgICBzdGF0aWMg
RXZhc19TbWFydCogc21hcnQgPSAwOwogCiAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0KSkg
ewogICAgICAgICBld2tfdmlld19zaW5nbGVfc21hcnRfc2V0KCZhcGkpOwpAQCAtNTYzLDcgKzU2
Myw3IEBAIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCAqX2V3a192aWV3X3NpbmdsZV9zbWFydF9j
bGFzc19uZXcodm9pZCkKICAgICByZXR1cm4gc21hcnQ7CiB9CiAKLUV2YXNfT2JqZWN0ICpld2tf
dmlld19zaW5nbGVfYWRkKEV2YXMgKmUpCitFdmFzX09iamVjdCogZXdrX3ZpZXdfc2luZ2xlX2Fk
ZChFdmFzKiBlKQogewogICAgIHJldHVybiBldmFzX29iamVjdF9zbWFydF9hZGQoZSwgX2V3a192
aWV3X3NpbmdsZV9zbWFydF9jbGFzc19uZXcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3X3RpbGVkLmNwcAppbmRleCBmYzg0NWY3MjAyMGViMTgzNjUwNjE1NDQ3MjM1M2NjZDcy
NzUyNjY2Li40OTc1MWJkOWQ5ZTVmNWEzMDg2YTUzYjQ4MzQ2ZGI1OTdiYzRjNDVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKQEAgLTMwLDI0ICszMCwyNCBAQAog
CiBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfTlVMTDsKIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfcmVu
ZGVyX2NiKHZvaWQgKmRhdGEsIEV3a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJl
YSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYih2b2lkKiBkYXRh
LCBFd2tfVGlsZSogdCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7Ci0gICAgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpwcml2ID0gKEV3a19WaWV3X1ByaXZhdGVfRGF0YSopZGF0YTsKKyAg
ICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKilk
YXRhOwogICAgIEVpbmFfUmVjdGFuZ2xlIHIgPSB7YXJlYS0+eCArIHQtPngsIGFyZWEtPnkgKyB0
LT55LCBhcmVhLT53LCBhcmVhLT5ofTsKIAogICAgIHJldHVybiBld2tfdmlld19wYWludF9jb250
ZW50cyhwcml2LCB0LT5jYWlybywgJnIpOwogfQogCi1zdGF0aWMgdm9pZCAqX2V3a192aWV3X3Rp
bGVkX3VwZGF0ZXNfcHJvY2Vzc19wcmUodm9pZCAqZGF0YSwgRXZhc19PYmplY3QgKm8pCitzdGF0
aWMgdm9pZCogX2V3a192aWV3X3RpbGVkX3VwZGF0ZXNfcHJvY2Vzc19wcmUodm9pZCogZGF0YSwg
RXZhc19PYmplY3QqIG8pCiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2ID0gKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXYgPSAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKilkYXRhOwogICAgIGV3a192aWV3X2xheW91dF9p
Zl9uZWVkZWRfcmVjdXJzaXZlKHByaXYpOwogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgRXZh
c19PYmplY3QgKl9ld2tfdmlld190aWxlZF9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmll
d19TbWFydF9EYXRhICpzZCkKK3N0YXRpYyBFdmFzX09iamVjdCogX2V3a192aWV3X3RpbGVkX3Nt
YXJ0X2JhY2tpbmdfc3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewotICAgIEV2
YXNfT2JqZWN0ICpicyA9IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FkZChzZC0+YmFzZS5ldmFz
KTsKKyAgICBFdmFzX09iamVjdCogYnMgPSBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9hZGQoc2Qt
PmJhc2UuZXZhcyk7CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyX2NiX3NldAog
ICAgICAgICAoYnMsIF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2IsIHNkLT5fcHJpdik7CiAgICAg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3ByZV9zZXQKQEAgLTU2LDE4
ICs1NiwxOCBAQCBzdGF0aWMgRXZhc19PYmplY3QgKl9ld2tfdmlld190aWxlZF9zbWFydF9iYWNr
aW5nX3N0b3JlX2FkZChFd2tfVmlld19TbWFydF9EYXRhCiB9CiAKIHN0YXRpYyB2b2lkCi1fZXdr
X3ZpZXdfdGlsZWRfY29udGVudHNfc2l6ZV9jaGFuZ2VkX2NiKHZvaWQgKmRhdGEsIEV2YXNfT2Jq
ZWN0ICpvLCB2b2lkICpldmVudF9pbmZvKQorX2V3a192aWV3X3RpbGVkX2NvbnRlbnRzX3NpemVf
Y2hhbmdlZF9jYih2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykK
IHsKLSAgICBFdmFzX0Nvb3JkICpzaXplID0gKEV2YXNfQ29vcmQqKWV2ZW50X2luZm87Ci0gICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAg
ICBFdmFzX0Nvb3JkKiBzaXplID0gKEV2YXNfQ29vcmQqKWV2ZW50X2luZm87CisgICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKIAogICAgIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX2NvbnRlbnRzX3Jlc2l6ZQogICAgICAgICAoc2QtPmJhY2tp
bmdfc3RvcmUsIHNpemVbMF0sIHNpemVbMV0pOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
dGlsZWRfc21hcnRfYWRkKEV2YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3Rp
bGVkX3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRh
ICpzZDsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZDsKIAogICAgIF9wYXJlbnRfc2Muc2Mu
YWRkKG8pOwogCkBAIC04MSwxMCArODEsMTAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVk
X3NtYXJ0X2FkZChFdmFzX09iamVjdCAqbykKICAgICBld2tfZnJhbWVfcGFpbnRfZnVsbF9zZXQo
c2QtPm1haW5fZnJhbWUsIEVJTkFfVFJVRSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkK
K3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJvY2VzcyhF
d2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKLSAgICBjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3Qg
KnNyOwotICAgIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3JfZW5kOworICAgIGNvbnN0IEV3
a19TY3JvbGxfUmVxdWVzdCogc3I7CisgICAgY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0KiBzcl9l
bmQ7CiAgICAgc2l6ZV90IGNvdW50OwogICAgIEV2YXNfQ29vcmQgdncsIHZoOwogCkBAIC0xMzcs
OSArMTM3LDkgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2Nyb2xs
c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3JlcGFpbnRzX3By
b2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d190aWxlZF9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQog
ewotICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICpwciwgKnByX2VuZDsKKyAgICBjb25zdCBFaW5h
X1JlY3RhbmdsZSogcHIsICogcHJfZW5kOwogICAgIHNpemVfdCBjb3VudDsKICAgICBpbnQgc3gs
IHN5OwogCkBAIC0xNjAsMTMgKzE2MCwxMyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190
aWxlZF9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVk
X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgaW50IHcsIGlu
dCBoKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfY29udGVudHNfcmVz
aXplKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBpbnQgdywgaW50IGgpCiB7CiAgICAgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplKHNkLT5iYWNraW5nX3N0b3JlLCB3LCBo
KTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d190aWxlZF9zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgZmxvYXQgem9v
bSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3RpbGVkX3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBmbG9hdCB6
b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIEV2YXNfQ29vcmQgeCwg
eSwgdywgaDsKICAgICBFaW5hX0Jvb2wgcjsKQEAgLTE4Niw1MCArMTg2LDUwIEBAIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBmbG9hdCB6CiAgICAgcmV0dXJuIHI7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fd2Vha19zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCitzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3dlYWtfc2V0KEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAg
IHJldHVybiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KHNkLT5iYWNraW5n
X3N0b3JlLCB6b29tLCBjeCwgY3kpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRf
c21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfc21h
cnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEVp
bmFfQm9vbCBzbW9vdGhfc2NhbGUpCiB7CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9v
bV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIHNtb290aF9zY2FsZSk7
CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9mbHVzaChFd2tfVmlld19T
bWFydF9EYXRhICpzZCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9mbHVzaChF
d2tfVmlld19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9m
bHVzaChzZC0+YmFja2luZ19zdG9yZSk7CiAgICAgX3BhcmVudF9zYy5mbHVzaChzZCk7CiB9CiAK
LXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9u
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZh
c19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pCitzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbihFd2tfVmlld19TbWFydF9EYXRh
KiBzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29y
ZCBoLCBmbG9hdCB6b29tKQogewogICAgIHJldHVybiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3JlZ2lvbgotICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHgsIHksIHcsIGgs
IHpvb20pOworICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCB4LCB5LCB3LCBoLCB6
b29tKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3Jl
bmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIHVuc2lnbmVkIGlu
dCBuLCBmbG9hdCB6b29tKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRf
cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIHVuc2ln
bmVkIGludCBuLCBmbG9hdCB6b29tKQogewogICAgIHJldHVybiBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cwotICAgICAgICAoc2QtPmJhY2tpbmdfc3Rv
cmUsIG4sIHpvb20pOworICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBuLCB6b29t
KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfY2Fu
Y2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVk
X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAg
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfY2FuY2VsKHNkLT5iYWNraW5nX3N0
b3JlKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZGlzYWJs
ZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld190aWxlZF9zbWFydF9kaXNhYmxlX3JlbmRlcihFd2tfVmlld19TbWFydF9EYXRhKiBzZCkK
IHsKICAgICByZXR1cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoc2Qt
PmJhY2tpbmdfc3RvcmUpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9z
bWFydF9lbmFibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQorc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZW5hYmxlX3JlbmRlcihFd2tfVmlld19TbWFydF9E
YXRhKiBzZCkKIHsKICAgICByZXR1cm4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3Jl
bmRlcihzZC0+YmFja2luZ19zdG9yZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld190aWxlZF9z
bWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSkKK0VpbmFfQm9vbCBld2tfdmlld190
aWxlZF9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKIHsKICAgICBpZiAoIWV3
a192aWV3X2Jhc2Vfc21hcnRfc2V0KGFwaSkpCiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwpA
QCAtMjU1LDEwICsyNTUsMTAgQEAgRWluYV9Cb29sIGV3a192aWV3X3RpbGVkX3NtYXJ0X3NldChF
d2tfVmlld19TbWFydF9DbGFzcyAqYXBpKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgRXZhc19TbWFydCAqX2V3a192aWV3X3RpbGVkX3NtYXJ0X2NsYXNzX25ldyh2
b2lkKQorc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfY2xh
c3NfbmV3KHZvaWQpCiB7CiAgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFV0tfVmlld19UaWxlZCIpOwot
ICAgIHN0YXRpYyBFdmFzX1NtYXJ0ICpzbWFydCA9IDA7CisgICAgc3RhdGljIEV2YXNfU21hcnQq
IHNtYXJ0ID0gMDsKIAogICAgIGlmIChFSU5BX1VOTElLRUxZKCFzbWFydCkpIHsKICAgICAgICAg
ZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KCZhcGkpOwpAQCAtMjY4LDIxICsyNjgsMjEgQEAgc3Rh
dGljIGlubGluZSBFdmFzX1NtYXJ0ICpfZXdrX3ZpZXdfdGlsZWRfc21hcnRfY2xhc3NfbmV3KHZv
aWQpCiAgICAgcmV0dXJuIHNtYXJ0OwogfQogCi1FdmFzX09iamVjdCAqZXdrX3ZpZXdfdGlsZWRf
YWRkKEV2YXMgKmUpCitFdmFzX09iamVjdCogZXdrX3ZpZXdfdGlsZWRfYWRkKEV2YXMqIGUpCiB7
CiAgICAgcmV0dXJuIGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChlLCBfZXdrX3ZpZXdfdGlsZWRfc21h
cnRfY2xhc3NfbmV3KCkpOwogfQogCi1Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a192aWV3X3Rp
bGVkX3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitFd2tfVGlsZV9VbnVz
ZWRfQ2FjaGUqIGV3a192aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSBld2tfdmlld19zbWFydF9k
YXRhX2dldChvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IGV3a192aWV3X3NtYXJ0
X2RhdGFfZ2V0KG8pOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZCwgMCk7
CiAgICAgcmV0dXJuIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfdW51c2VkX2NhY2hlX2dl
dChzZC0+YmFja2luZ19zdG9yZSk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfdGlsZWRfdW51c2VkX2Nh
Y2hlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1RpbGVfVW51c2VkX0NhY2hlICpjYWNoZSkKK3Zv
aWQgZXdrX3ZpZXdfdGlsZWRfdW51c2VkX2NhY2hlX3NldChFdmFzX09iamVjdCogbywgRXdrX1Rp
bGVfVW51c2VkX0NhY2hlKiBjYWNoZSkKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9
IGV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0KG8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
ID0gZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQobyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QpOwogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfdW51c2VkX2NhY2hl
X3NldChzZC0+YmFja2luZ19zdG9yZSwgY2FjaGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCmluZGV4IDRiYjZlMDZiZjZkNjcwMDk3Yjg1YWY5
NDI3NjVkOThiODAxMjEyYTMuLjgwOWQxZTg1MzFiZmQzM2Q2ZWU1NGEzNDQ0NDA2YTQ0YTlhZjY4
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAK
QEAgLTMyLDEwICszMiwxMCBAQAogICovCiBzdHJ1Y3QgX0V3a19XaW5kb3dfRmVhdHVyZXMgewog
ICAgIHVuc2lnbmVkIGludCBfX3JlZjsKLSAgICBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyAqY29y
ZTsKKyAgICBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZTsKIH07CiAKLXZvaWQgZXdrX3dp
bmRvd19mZWF0dXJlc191bnJlZihFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMp
Cit2b2lkIGV3a193aW5kb3dfZmVhdHVyZXNfdW5yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyogd2lu
ZG93X2ZlYXR1cmVzKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHdpbmRvd19m
ZWF0dXJlcyk7CiAgICAgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOKHdpbmRvd19mZWF0dXJl
cy0+X19yZWYgPiAwKTsKQEAgLTQ4LDEzICs0OCwxMyBAQCB2b2lkIGV3a193aW5kb3dfZmVhdHVy
ZXNfdW5yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKQogICAgIGZyZWUo
d2luZG93X2ZlYXR1cmVzKTsKIH0KIAotdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX3JlZihFd2tf
V2luZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMpCit2b2lkIGV3a193aW5kb3dfZmVhdHVy
ZXNfcmVmKEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcykKIHsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTih3aW5kb3dfZmVhdHVyZXMpOwogICAgIHdpbmRvd19mZWF0
dXJlcy0+X19yZWYrKzsKIH0KIAotdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX2Jvb2xfcHJvcGVy
dHlfZ2V0KGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRvd19mZWF0dXJlcywgRWluYV9C
b29sICp0b29sYmFyX3Zpc2libGUsIEVpbmFfQm9vbCAqc3RhdHVzYmFyX3Zpc2libGUsIEVpbmFf
Qm9vbCAqc2Nyb2xsYmFyc192aXNpYmxlLCBFaW5hX0Jvb2wgKm1lbnViYXJfdmlzaWJsZSwgRWlu
YV9Cb29sICpsb2NhdGlvbmJhcl92aXNpYmxlLCBFaW5hX0Jvb2wgKmZ1bGxzY3JlZW4pCit2b2lk
IGV3a193aW5kb3dfZmVhdHVyZXNfYm9vbF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19G
ZWF0dXJlcyogd2luZG93X2ZlYXR1cmVzLCBFaW5hX0Jvb2wqIHRvb2xiYXJfdmlzaWJsZSwgRWlu
YV9Cb29sKiBzdGF0dXNiYXJfdmlzaWJsZSwgRWluYV9Cb29sKiBzY3JvbGxiYXJzX3Zpc2libGUs
IEVpbmFfQm9vbCogbWVudWJhcl92aXNpYmxlLCBFaW5hX0Jvb2wqIGxvY2F0aW9uYmFyX3Zpc2li
bGUsIEVpbmFfQm9vbCogZnVsbHNjcmVlbikKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTih3aW5kb3dfZmVhdHVyZXMpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHdp
bmRvd19mZWF0dXJlcy0+Y29yZSk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgZXdrX3dpbmRvd19m
ZWF0dXJlc19ib29sX3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5k
b3dfZmVhCiAgICAgICAgICpmdWxsc2NyZWVuID0gd2luZG93X2ZlYXR1cmVzLT5jb3JlLT5mdWxs
c2NyZWVuOwogfQogCi12b2lkIGV3a193aW5kb3dfZmVhdHVyZXNfaW50X3Byb3BlcnR5X2dldChj
b25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMsIGludCAqeCwgaW50ICp5
LCBpbnQgKncsIGludCAqaCkKK3ZvaWQgZXdrX3dpbmRvd19mZWF0dXJlc19pbnRfcHJvcGVydHlf
Z2V0KGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcywgaW50KiB4LCBp
bnQqIHksIGludCogdywgaW50KiBoKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHdpbmRvd19mZWF0dXJlcyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4od2luZG93
X2ZlYXR1cmVzLT5jb3JlKTsKQEAgLTEwNyw5ICsxMDcsOSBAQCB2b2lkIGV3a193aW5kb3dfZmVh
dHVyZXNfaW50X3Byb3BlcnR5X2dldChjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3aW5kb3df
ZmVhdAogICogaXQgaXMgZW1iZWRkZWQgaW5zaWRlIHRoZSBFd2tfV2luZG93X0ZlYXR1cmVzIHdo
b3NlIHJlZiBjb3VudCBpcyBpbml0aWFsaXplZCwgaWYgY29yZSBpcyBAYyAwIGEgbmV3IG9uZSBp
cyBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgZmVhdHVyZXMuCiAgKiBAcmV0dXJuIGEgbmV3IGFs
bG9jYXRlZCB0aGUgRXdrX1dpbmRvd19GZWF0dXJlcyBvYmplY3Qgb24gc3VjZXNzIG9yIEBjIDAg
b24gZmFpbHVyZQogICovCi1Fd2tfV2luZG93X0ZlYXR1cmVzICpld2tfd2luZG93X2ZlYXR1cmVz
X25ld19mcm9tX2NvcmUoY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgKmNvcmUpCitFd2tf
V2luZG93X0ZlYXR1cmVzKiBld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUoY29uc3Qg
V2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmUpCiB7Ci0gICAgRXdrX1dpbmRvd19GZWF0dXJl
cyAqd2luZG93X2ZlYXR1cmVzID0gc3RhdGljX2Nhc3Q8RXdrX1dpbmRvd19GZWF0dXJlcyo+KG1h
bGxvYyhzaXplb2YoKndpbmRvd19mZWF0dXJlcykpKTsKKyAgICBFd2tfV2luZG93X0ZlYXR1cmVz
KiB3aW5kb3dfZmVhdHVyZXMgPSBzdGF0aWNfY2FzdDxFd2tfV2luZG93X0ZlYXR1cmVzKj4obWFs
bG9jKHNpemVvZigqd2luZG93X2ZlYXR1cmVzKSkpOwogICAgIGlmICghd2luZG93X2ZlYXR1cmVz
KSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUgRXdrX1dpbmRvd19GZWF0
dXJlcy4iKTsKICAgICAgICAgcmV0dXJuIDA7Cg==
</data>
<flag name="review"
          id="104884"
          type_id="1"
          status="+"
          setter="tonikitoo"
    />
    <flag name="commit-queue"
          id="104885"
          type_id="3"
          status="-"
          setter="lucas.de.marchi"
    />
          </attachment>
      

    </bug>

</bugzilla>