<?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>88616</bug_id>
          
          <creation_ts>2012-06-07 21:40:01 -0700</creation_ts>
          <short_desc>[EFL][WK2] Implement WebPopupMenuProxyEfl to support &lt;select&gt;</short_desc>
          <delta_ts>2012-08-28 05:51:27 -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>
          
          <blocked>61838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>js45.yang</cc>
    
    <cc>kangil.han</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>tmpsantos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>644307</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-07 21:40:01 -0700</bug_when>
    <thetext>Patch will be added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644314</commentid>
    <comment_count>1</comment_count>
      <attachid>146474</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-07 21:52:23 -0700</bug_when>
    <thetext>Created attachment 146474
work in progress #1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656475</commentid>
    <comment_count>2</comment_count>
      <attachid>146474</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-25 04:28:16 -0700</bug_when>
    <thetext>Comment on attachment 146474
work in progress #1

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_enums.h:28
&gt; +    EWK_RTL,

In WebKit1, we also had a EWK_TEXT_DIRECTION_DEFAULT which mapped to the &quot;natural&quot; direction in WebCore. Also shouldn&apos;t we use something like &quot;EWK_TEXT_DIRECTION_RTL&quot; instead of &quot;EWK_RTL&quot;?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:22
&gt; +#include &quot;ewk_view_private.h&quot;

This private header should be sorted with the other below I believe.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:529
&gt; +

Shouldn&apos;t add a null check for popupMenu here?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:536
&gt; +    for (size_t i = 0; i &lt; items.size(); ++i) {

According to coding style, items.size() should be cached.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:550
&gt; +    smartData-&gt;api-&gt;popup_menu_show(smartData, rect, static_cast&lt;Ewk_Text_Direction&gt;(textDirection), pageScaleFactor, popupItems, selectedIndex);

This cast from TextDirection to Ewk_Text_Direction is not safe. I don&apos;t think we have a AssertMatchingEnums equivalent for WK2, do we?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_private.h:41
&gt; +

extra blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657198</commentid>
    <comment_count>3</comment_count>
      <attachid>146474</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-25 19:42:37 -0700</bug_when>
    <thetext>Comment on attachment 146474
work in progress #1

Ryuan, if possible, please do not submit working in progress patch. It looks patch like this can make confusion. If you need to submit intermediate patch, please set cq- first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693767</commentid>
    <comment_count>4</comment_count>
      <attachid>158030</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 10:01:42 -0700</bug_when>
    <thetext>Created attachment 158030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693771</commentid>
    <comment_count>5</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 10:09:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 146474 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146474&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_enums.h:28
&gt; &gt; +    EWK_RTL,
&gt; 
&gt; In WebKit1, we also had a EWK_TEXT_DIRECTION_DEFAULT which mapped to the &quot;natural&quot; direction in WebCore. Also shouldn&apos;t we use something like &quot;EWK_TEXT_DIRECTION_RTL&quot; instead of &quot;EWK_RTL&quot;?
&gt; 
WebCore has TextDirection(containts RTL, LTR) and WritingDirection (contains natural, RTL, LTR).

I think that this is little bit ambiguous.

BTW, we need TextDirection now.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:529
&gt; &gt; +
&gt; 
&gt; Shouldn&apos;t add a null check for popupMenu here?

I added ASSERT.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:536
&gt; &gt; +    for (size_t i = 0; i &lt; items.size(); ++i) {
&gt; 
&gt; According to coding style, items.size() should be cached.
&gt; 
Done.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:550
&gt; &gt; +    smartData-&gt;api-&gt;popup_menu_show(smartData, rect, static_cast&lt;Ewk_Text_Direction&gt;(textDirection), pageScaleFactor, popupItems, selectedIndex);
&gt; 
&gt; This cast from TextDirection to Ewk_Text_Direction is not safe. I don&apos;t think we have a AssertMatchingEnums equivalent for WK2, do we?
&gt; 
Done.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view_private.h:41
&gt; &gt; +
&gt; 
&gt; extra blank line

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693775</commentid>
    <comment_count>6</comment_count>
      <attachid>158030</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-13 10:12:31 -0700</bug_when>
    <thetext>Comment on attachment 158030
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        The applications should implement popup menu by overriding

%s/The applications/Applications/g

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:134
&gt; +            void* itemv;

IIRC, EFL port has used *items* more commonly. But, I don&apos;t mind to use this.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1524
&gt; +    }

Personally, I think it is good to add an empty line to here.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1534
&gt; +    if (!priv-&gt;popupMenuProxy)

As we discussed this before, how do you think to use EINA_SAFETY_ON_NULL_RETURN_VAL() ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:127
&gt; +#define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

Don&apos;t you need to update #define EWK_VIEW_SMART_CLASS_VERSION 1UL ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:609
&gt; +* Selects index of current popup menu.

Nit : Add a space in front of *.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:620
&gt; +* Closes current popup menu.

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693784</commentid>
    <comment_count>7</comment_count>
      <attachid>158034</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 10:22:20 -0700</bug_when>
    <thetext>Created attachment 158034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693796</commentid>
    <comment_count>8</comment_count>
      <attachid>158035</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 10:32:13 -0700</bug_when>
    <thetext>Created attachment 158035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693805</commentid>
    <comment_count>9</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 10:41:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 158030 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158030&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; +        The applications should implement popup menu by overriding
&gt; 
&gt; %s/The applications/Applications/g
&gt; 
Done.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:134
&gt; &gt; +            void* itemv;
&gt; 
&gt; IIRC, EFL port has used *items* more commonly. But, I don&apos;t mind to use this.
&gt; 
Sorry, I don&apos;t have good name for this, so I just copied this from webkit1/efl.
In this case, items is not good because itemv is temporal item to be cast.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1524
&gt; &gt; +    }
&gt; 
&gt; Personally, I think it is good to add an empty line to here.
&gt; 
Done.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1534
&gt; &gt; +    if (!priv-&gt;popupMenuProxy)
&gt; 
&gt; As we discussed this before, how do you think to use EINA_SAFETY_ON_NULL_RETURN_VAL() ?
&gt; 
My mistake.
Done.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:127
&gt; &gt; +#define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
&gt; 
&gt; Don&apos;t you need to update #define EWK_VIEW_SMART_CLASS_VERSION 1UL ?
&gt; 
Done.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:609
&gt; &gt; +* Selects index of current popup menu.
&gt; 
&gt; Nit : Add a space in front of *.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:620
&gt; &gt; +* Closes current popup menu.
&gt; 
&gt; ditto.

Done, Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694333</commentid>
    <comment_count>10</comment_count>
      <attachid>158035</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-13 18:13:19 -0700</bug_when>
    <thetext>Comment on attachment 158035
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_enums.h:28
&gt; +

In public files case, we have added file description.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_enums.h:33
&gt; +/// Enum values containing text directionality values.

Could you explain pros when we have a file for enums ? BTW, I think you need to write description in ChangeLog as well. Because, this file can be used by other patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694486</commentid>
    <comment_count>11</comment_count>
      <attachid>158206</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 21:38:56 -0700</bug_when>
    <thetext>Created attachment 158206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694487</commentid>
    <comment_count>12</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 21:42:48 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 158035 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158035&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_enums.h:28
&gt; &gt; +
&gt; 
&gt; In public files case, we have added file description.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_enums.h:33
&gt; &gt; +/// Enum values containing text directionality values.
&gt; 
&gt; Could you explain pros when we have a file for enums ? BTW, I think you need to write description in ChangeLog as well. Because, this file can be used by other patches.

I decide not to add it.

I thought small benefits that reduces includes from header files.
But, I removed because 1) we already has some enums and I don&apos;t want to move them, 2) it is not highly related to this bug.

Thank you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694498</commentid>
    <comment_count>13</comment_count>
      <attachid>158206</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-13 22:07:00 -0700</bug_when>
    <thetext>Comment on attachment 158206
Patch

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

&gt; Source/WebKit2/ChangeLog:14
&gt; +        * UIProcess/API/efl/EWebKit2.h:

Remove this line.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1485
&gt; +    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv);

I would like to recommend to move this macro to below 1479 line in order to be consistent with existing ewk_view.cpp.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1515
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(smartData-&gt;api, false);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694517</commentid>
    <comment_count>14</comment_count>
      <attachid>158217</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 22:36:19 -0700</bug_when>
    <thetext>Created attachment 158217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694519</commentid>
    <comment_count>15</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 22:36:58 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 158206 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158206&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:14
&gt; &gt; +        * UIProcess/API/efl/EWebKit2.h:
&gt; 
&gt; Remove this line.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1485
&gt; &gt; +    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv);
&gt; 
&gt; I would like to recommend to move this macro to below 1479 line in order to be consistent with existing ewk_view.cpp.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1515
&gt; &gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(smartData-&gt;api, false);
&gt; 
&gt; ditto.

OK, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694522</commentid>
    <comment_count>16</comment_count>
      <attachid>158217</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-13 22:41:18 -0700</bug_when>
    <thetext>Comment on attachment 158217
Patch

Looks good to me now. By the way, are there any unskip test by this patch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694524</commentid>
    <comment_count>17</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-13 22:43:05 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 158217 [details])
&gt; Looks good to me now. By the way, are there any unskip test by this patch ?

Thank you, this is not related to test case.
But you can see the crash when we click &lt;select&gt; without this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694534</commentid>
    <comment_count>18</comment_count>
      <attachid>158217</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-13 23:01:11 -0700</bug_when>
    <thetext>Comment on attachment 158217
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:133
&gt; +        if (popupMenuItems) {

Is this check really needed? I thought NULL was a empty Eina_List.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:137
&gt; +                eina_stringshare_del(item-&gt;text);

This should be part of the Ewk_Popup_Menu_Item destructor.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1493
&gt; +        Ewk_Popup_Menu_Item* item = new Ewk_Popup_Menu_Item;

We should have a constructor for Ewk_Popup_Menu_Item and pass text / type as argument. This is more C++ like and more consistent with the style used in WK2-EFL.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1522
&gt; +        eina_stringshare_del(item-&gt;text);

Should be in a destructor.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1537
&gt; +    if (selectedIndex &gt; eina_list_count(priv-&gt;popupMenuItems))

&gt;= ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1541
&gt; +    return true;

We usually add an empty line before return statements.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:100
&gt; +    Eina_Bool (*popup_menu_show)(Ewk_View_Smart_Data *sd, Eina_Rectangle rect, Ewk_Text_Direction text_direction, double page_scale_factor, Eina_List* items, int selected_index);

&quot;Eina_List* items&quot; &lt;- Star on wrong side.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:196
&gt; +struct _Ewk_Popup_Menu_Item {

Shouldn&apos;t this be defined in its own ewk_popup_menu_item.cpp with getters in ewk_popup_menu_item.h, and property constructor/destructor. We have tried not to use this kind of structs in the headers for WK2 EFL.

&gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.cpp:33
&gt; +

Why the empty line here?

&gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h:47
&gt; +    ~WebPopupMenuProxyEfl();

Destructor should be virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694598</commentid>
    <comment_count>19</comment_count>
      <attachid>158217</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-14 00:28:11 -0700</bug_when>
    <thetext>Comment on attachment 158217
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h:47
&gt;&gt; +    ~WebPopupMenuProxyEfl();
&gt; 
&gt; Destructor should be virtual.

I&apos;m not sure if we SHOULD use virtual keyword again when super class(WebPopupMenuProxy) already defined virtual destructor. To my quick search, QT and GTK ports didn&apos;t use virtual keyword in WebPopupMenuProxyGtk | QT. In addition, I couldn&apos;t find duplicated virtual keyword both super class and child in WK2 at least. How do you think about this ?

See also, WebColorChooserProxyQt.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694639</commentid>
    <comment_count>20</comment_count>
      <attachid>158253</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-14 01:15:36 -0700</bug_when>
    <thetext>Created attachment 158253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694641</commentid>
    <comment_count>21</comment_count>
      <attachid>158254</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-14 01:19:17 -0700</bug_when>
    <thetext>Created attachment 158254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694644</commentid>
    <comment_count>22</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-14 01:21:26 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=158254) [details]
&gt; Patch

Tried to introduce ewk_popup_menu_item.{h|cpp}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694658</commentid>
    <comment_count>23</comment_count>
      <attachid>158253</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 01:32:50 -0700</bug_when>
    <thetext>Comment on attachment 158253
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:41
&gt; +        , text(eina_stringshare_add(_text))

Apparently, passing NULL to eina_stringshare_add() is fine, according to the doc, it will return NULL.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:46
&gt; +        eina_stringshare_del(text);

I believe you need a NULL-check here. The eina_stringshare_del() doc says:
&quot;Note that if the given pointer is not shared or NULL, bad things will happen, likely a segmentation fault.&quot;

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:65
&gt; +    delete item;

We usually have an EINA_SAFETY check for item here. (even if &quot;delete 0;&quot; is not invalid). This is just more consistent with EFL C APIs.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:71
&gt; +    return item-&gt;type;

We usually put an empty line before return statements.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:77
&gt; +    return item-&gt;text;

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.h:57
&gt; +EAPI Ewk_Popup_Menu_Item_Type ewk_popup_menu_item_type_get(const Ewk_Popup_Menu_Item* item);

Star on wrong side.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.h:64
&gt; + * @return the text of the @a item or @c NULL in case of error. This pointer is

It also returns NULL if this is a separator (which is not an error case). Maybe it should be mentioned in the doc.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.h:70
&gt; +EAPI const char* ewk_popup_menu_item_text_get(const Ewk_Popup_Menu_Item* item);

Stars on wrong side.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item_private.h:26
&gt; +Ewk_Popup_Menu_Item* ewk_popup_menu_item_new(Ewk_Popup_Menu_Item_Type type, const char* text);

Since it is a private function, I would use the WebPopupItem::Type here, for convenience, instead of Ewk_Popup_Menu_Item_Type.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1473
&gt; +COMPILE_ASSERT_MATCHING_ENUM(EWK_POPUP_MENU_SEPARATOR, WebPopupItem::Separator);

Should be in ewk_popup_menu_item.cpp

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1474
&gt; +COMPILE_ASSERT_MATCHING_ENUM(EWK_POPUP_MENU_ITEM, WebPopupItem::Item);

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1492
&gt; +        Ewk_Popup_Menu_Item* item = ewk_popup_menu_item_new(static_cast&lt;Ewk_Popup_Menu_Item_Type&gt;(items[i].m_type), items[i].m_text.utf8().data());

I would remove this cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694678</commentid>
    <comment_count>24</comment_count>
      <attachid>158261</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-14 01:51:40 -0700</bug_when>
    <thetext>Created attachment 158261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694680</commentid>
    <comment_count>25</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-14 01:54:54 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 158253 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158253&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:41
&gt; &gt; +        , text(eina_stringshare_add(_text))
&gt; 
&gt; Apparently, passing NULL to eina_stringshare_add() is fine, according to the doc, it will return NULL.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:46
&gt; &gt; +        eina_stringshare_del(text);
&gt; 
&gt; I believe you need a NULL-check here. The eina_stringshare_del() doc says:
&gt; &quot;Note that if the given pointer is not shared or NULL, bad things will happen, likely a segmentation fault.&quot;
&gt; 

Well, I believe that document is wrong.

Indeed, document has contradiction.
In http://docs.enlightenment.org/auto/eina/group__Eina__Stringshare__Group.html#ga495411b0bc85b9c0d59ec7255a025260

&quot;... If str is NULL, the function returns immediately.

Note that if the given pointer is not shared or NULL, bad things will happen, likely a segmentation fault.&quot;

I fixed other.

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694691</commentid>
    <comment_count>26</comment_count>
      <attachid>158253</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-14 02:03:06 -0700</bug_when>
    <thetext>Comment on attachment 158253
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:46
&gt;&gt; +        eina_stringshare_del(text);
&gt; 
&gt; I believe you need a NULL-check here. The eina_stringshare_del() doc says:
&gt; &quot;Note that if the given pointer is not shared or NULL, bad things will happen, likely a segmentation fault.&quot;

If so, we need to add a NULL-check in existing implementation. It looks many existing implementations don&apos;t have the NULL check.

For example, in ewk_intent_service.cpp case,

struct _Ewk_Intent_Service {
    unsigned int __ref; /**&lt; the reference count of the object */
#if ENABLE(WEB_INTENTS_TAG)
    WKRetainPtr&lt;WKIntentServiceInfoRef&gt; wkService;
#endif
    const char* action;
    const char* type;
    const char* href;
    const char* title;
    const char* disposition;

    ~_Ewk_Intent_Service()
    {
        ASSERT(!__ref);
        eina_stringshare_del(action);
        eina_stringshare_del(type);
        eina_stringshare_del(href);
        eina_stringshare_del(title);
        eina_stringshare_del(disposition);
    }
};

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item_private.h:26
&gt;&gt; +Ewk_Popup_Menu_Item* ewk_popup_menu_item_new(Ewk_Popup_Menu_Item_Type type, const char* text);
&gt; 
&gt; Since it is a private function, I would use the WebPopupItem::Type here, for convenience, instead of Ewk_Popup_Menu_Item_Type.

ewk_popup_menu_item returns new Ewk_Popup_Menu_Item() instance. And, ctor of _Ewk_Popup_Menu_Item is defined using Ewk_Popup_Menu_Item_Type as below,

struct _Ewk_Popup_Menu_Item {
...
    _Ewk_Popup_Menu_Item(Ewk_Popup_Menu_Item_Type _type, const char* _text)

In addition, Ewk_Popup_Menu_Item_Type is different from WebPopupItem::Type

struct WebPopupItem {
  enum Type {
        Separator,
        Item
    };

So, I don&apos;t think it is good to use WebPopupItem::type instead of Ewk_Popup_Menu_Item_Type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694755</commentid>
    <comment_count>27</comment_count>
      <attachid>158253</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 03:29:53 -0700</bug_when>
    <thetext>Comment on attachment 158253
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:46
&gt;&gt;&gt; +        eina_stringshare_del(text);
&gt;&gt; 
&gt;&gt; I believe you need a NULL-check here. The eina_stringshare_del() doc says:
&gt;&gt; &quot;Note that if the given pointer is not shared or NULL, bad things will happen, likely a segmentation fault.&quot;
&gt; 
&gt; If so, we need to add a NULL-check in existing implementation. It looks many existing implementations don&apos;t have the NULL check.
&gt; 
&gt; For example, in ewk_intent_service.cpp case,
&gt; 
&gt; struct _Ewk_Intent_Service {
&gt;     unsigned int __ref; /**&lt; the reference count of the object */
&gt; #if ENABLE(WEB_INTENTS_TAG)
&gt;     WKRetainPtr&lt;WKIntentServiceInfoRef&gt; wkService;
&gt; #endif
&gt;     const char* action;
&gt;     const char* type;
&gt;     const char* href;
&gt;     const char* title;
&gt;     const char* disposition;
&gt; 
&gt;     ~_Ewk_Intent_Service()
&gt;     {
&gt;         ASSERT(!__ref);
&gt;         eina_stringshare_del(action);
&gt;         eina_stringshare_del(type);
&gt;         eina_stringshare_del(href);
&gt;         eina_stringshare_del(title);
&gt;         eina_stringshare_del(disposition);
&gt;     }
&gt; };

Ok, then fine by me. Thanks for checking.

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item_private.h:26
&gt;&gt;&gt; +Ewk_Popup_Menu_Item* ewk_popup_menu_item_new(Ewk_Popup_Menu_Item_Type type, const char* text);
&gt;&gt; 
&gt;&gt; Since it is a private function, I would use the WebPopupItem::Type here, for convenience, instead of Ewk_Popup_Menu_Item_Type.
&gt; 
&gt; ewk_popup_menu_item returns new Ewk_Popup_Menu_Item() instance. And, ctor of _Ewk_Popup_Menu_Item is defined using Ewk_Popup_Menu_Item_Type as below,
&gt; 
&gt; struct _Ewk_Popup_Menu_Item {
&gt; ...
&gt;     _Ewk_Popup_Menu_Item(Ewk_Popup_Menu_Item_Type _type, const char* _text)
&gt; 
&gt; In addition, Ewk_Popup_Menu_Item_Type is different from WebPopupItem::Type
&gt; 
&gt; struct WebPopupItem {
&gt;   enum Type {
&gt;         Separator,
&gt;         Item
&gt;     };
&gt; 
&gt; So, I don&apos;t think it is good to use WebPopupItem::type instead of Ewk_Popup_Menu_Item_Type.

Yes, the _Ewk_Popup_Menu_Item() constructor uses Ewk_Popup_Menu_Item_Type and I think it is fine. However, I still prefer the ewk_popup_menu_item_new() to take a WebPopupItem::type.
As a result, the casting hidden will be inside ewk_popup_menu_item_new() instead of the callers. This makes the API more convenient to use and we don&apos;t need to use Ewk types since it is private API.

You are saying &quot;Ewk_Popup_Menu_Item_Type is different from WebPopupItem::Type&quot;. How is it different? We have compile assertions to make sure they match. However, the compile assertions should be in ewk_popup_menu_item.cpp instead of the caller (ewk_view.cpp), and therefore, the casting would be better in ewk_popup_menu_item.cpp as well, instead of ewk_view.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694757</commentid>
    <comment_count>28</comment_count>
      <attachid>158261</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 03:32:35 -0700</bug_when>
    <thetext>Comment on attachment 158261
Patch

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

LGTM with minor suggestion:

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:40
&gt; +    const char* text;

You could use the new WKEinaSharedString type (c.f. webkit-efl mailing list).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694826</commentid>
    <comment_count>29</comment_count>
      <attachid>158295</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-14 04:51:47 -0700</bug_when>
    <thetext>Created attachment 158295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694828</commentid>
    <comment_count>30</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-14 04:52:14 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 158261 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158261&amp;action=review
&gt; 
&gt; LGTM with minor suggestion:
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:40
&gt; &gt; +    const char* text;
&gt; 
&gt; You could use the new WKEinaSharedString type (c.f. webkit-efl mailing list).

Right, I fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694835</commentid>
    <comment_count>31</comment_count>
      <attachid>158295</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 04:55:40 -0700</bug_when>
    <thetext>Comment on attachment 158295
Patch

LGTM. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694840</commentid>
    <comment_count>32</comment_count>
      <attachid>158295</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 04:57:05 -0700</bug_when>
    <thetext>Comment on attachment 158295
Patch

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

&gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h:47
&gt; +    ~WebPopupMenuProxyEfl();

Hmm. You apparently forgot to mark this destructor as virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694853</commentid>
    <comment_count>33</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-14 05:11:59 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 158295 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158295&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h:47
&gt; &gt; +    ~WebPopupMenuProxyEfl();
&gt; 
&gt; Hmm. You apparently forgot to mark this destructor as virtual.

I already mentioned this in Comment 19.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694867</commentid>
    <comment_count>34</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-14 05:38:11 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 158295 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158295&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h:47
&gt; &gt; +    ~WebPopupMenuProxyEfl();
&gt; 
&gt; Hmm. You apparently forgot to mark this destructor as virtual.

Sorry, I missed to add comment.

Because this is derived class, I think that virtual keyword is not needed.

If I am right, other derived classes in webkit also does not have virtual destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694868</commentid>
    <comment_count>35</comment_count>
      <attachid>158295</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 05:38:33 -0700</bug_when>
    <thetext>Comment on attachment 158295
Patch

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

&gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h:49
&gt; +    virtual void showPopupMenu(const WebCore::IntRect&amp;, WebCore::TextDirection, double pageScaleFactor, const Vector&lt;WebPopupItem&gt;&amp;, const PlatformPopupMenuData&amp;, int32_t selectedIndex);

You have methods marked as virtual here but the destructor is not marked as virtual: This is wrong. If the WebPopupMenuProxyEfl class cannot be subclassed, then remove &quot;virtual&quot; keyword from those 2 methods, otherwise, please mark the destructor as virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694879</commentid>
    <comment_count>36</comment_count>
      <attachid>158305</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-14 05:50:57 -0700</bug_when>
    <thetext>Created attachment 158305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694880</commentid>
    <comment_count>37</comment_count>
      <attachid>158305</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 05:51:37 -0700</bug_when>
    <thetext>Comment on attachment 158305
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696660</commentid>
    <comment_count>38</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-08-15 19:42:00 -0700</bug_when>
    <thetext>ryuan: It seems gyuyoung and chris both have commented on this patch as &apos;LGTM&apos;. Let&apos;s push this into the trunk. I want to verify something with this patch. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696988</commentid>
    <comment_count>39</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-08-16 04:11:14 -0700</bug_when>
    <thetext>Sorry for itching. ;-)
I think this patch would resolve some layout test cases including &apos;BUGWKEFL : fast/forms/select/menulist-popup-crash.html = CRASH&apos;. Why don&apos;t you run test only in TestExpectations. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697622</commentid>
    <comment_count>40</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-16 15:50:02 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; Sorry for itching. ;-)
&gt; I think this patch would resolve some layout test cases including &apos;BUGWKEFL : fast/forms/select/menulist-popup-crash.html = CRASH&apos;. Why don&apos;t you run test only in TestExpectations. :-)

Good point.
I didn&apos;t catch it.

I will rebase after checking.
Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697825</commentid>
    <comment_count>41</comment_count>
      <attachid>158983</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-16 19:47:46 -0700</bug_when>
    <thetext>Created attachment 158983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697830</commentid>
    <comment_count>42</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-16 19:56:23 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; Sorry for itching. ;-)
&gt; I think this patch would resolve some layout test cases including &apos;BUGWKEFL : fast/forms/select/menulist-popup-crash.html = CRASH&apos;. Why don&apos;t you run test only in TestExpectations. :-)

I removed it in TestExpectations.
Thank you.

And, I changed EINA_SAFETY_ON_NULL_RETURN for popup_menu_show to if( ...) not to print in WTR.

Previously it is not important to me, but now I believe that we&apos;d better not to make noise for layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697836</commentid>
    <comment_count>43</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-16 20:17:47 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; And, I changed EINA_SAFETY_ON_NULL_RETURN for popup_menu_show to if( ...) not to print in WTR.
&gt; 
&gt; Previously it is not important to me, but now I believe that we&apos;d better not to make noise for layout test.

Yes, I also think it is more important not to make noise for layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704921</commentid>
    <comment_count>44</comment_count>
      <attachid>160623</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 19:46:52 -0700</bug_when>
    <thetext>Created attachment 160623
patch with unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704939</commentid>
    <comment_count>45</comment_count>
      <attachid>160623</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-26 21:28:15 -0700</bug_when>
    <thetext>Comment on attachment 160623
patch with unit tests

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:192
&gt; +Eina_Bool popup_menu_show(Ewk_View_Smart_Data *sd, Eina_Rectangle rect, Ewk_Text_Direction text_direction, double page_scale_factor, Eina_List *items, int selected_index)

AFAIK, unit test also follows webkit coding style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704941</commentid>
    <comment_count>46</comment_count>
      <attachid>160626</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 21:38:35 -0700</bug_when>
    <thetext>Created attachment 160626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704942</commentid>
    <comment_count>47</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 21:39:26 -0700</bug_when>
    <thetext>(In reply to comment #45)
&gt; (From update of attachment 160623 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160623&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:192
&gt; &gt; +Eina_Bool popup_menu_show(Ewk_View_Smart_Data *sd, Eina_Rectangle rect, Ewk_Text_Direction text_direction, double page_scale_factor, Eina_List *items, int selected_index)
&gt; 
&gt; AFAIK, unit test also follows webkit coding style.

Right, my mistake with copy&amp;pate. :)
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704955</commentid>
    <comment_count>48</comment_count>
      <attachid>160633</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 22:21:34 -0700</bug_when>
    <thetext>Created attachment 160633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704957</commentid>
    <comment_count>49</comment_count>
      <attachid>160626</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-26 22:26:36 -0700</bug_when>
    <thetext>Comment on attachment 160626
Patch

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

And, I think this patch needs to get informal review as well. If there is no comment, I will set r+.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1487
&gt; +

It looks this is unneeded line.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:192
&gt; +Eina_Bool popup_menu_show(Ewk_View_Smart_Data* smartData, Eina_Rectangle, Ewk_Text_Direction, double, Eina_List*, int selectedIndex)

EFL unit test has used static keyword for internal function. Please use standard bool, showPopupMenu() instead of Eina_Bool and popup_menu_show().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704960</commentid>
    <comment_count>50</comment_count>
      <attachid>160633</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 22:29:42 -0700</bug_when>
    <thetext>Comment on attachment 160633
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1502
&gt; +    if (!priv-&gt;popupMenuProxy)
&gt; +        return false;

I changed from EINA_SAFETY_ON_NULL_RETURN_VAL to `if(...)`.
It&apos;s because ewk_view_popup_menu_close can be called although popupMenuProxy is null.

When WebPageProxy want to call popup menu more that twice, 
WebPageProxy calls ewk_view_popup_menu_close although user did.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704963</commentid>
    <comment_count>51</comment_count>
      <attachid>160635</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 22:31:27 -0700</bug_when>
    <thetext>Created attachment 160635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704965</commentid>
    <comment_count>52</comment_count>
      <attachid>160636</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 22:33:27 -0700</bug_when>
    <thetext>Created attachment 160636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704967</commentid>
    <comment_count>53</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 22:34:22 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; (From update of attachment 160626 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160626&amp;action=review
&gt; 
&gt; And, I think this patch needs to get informal review as well. If there is no comment, I will set r+.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1487
&gt; &gt; +
&gt; 
&gt; It looks this is unneeded line.
Removed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:192
&gt; &gt; +Eina_Bool popup_menu_show(Ewk_View_Smart_Data* smartData, Eina_Rectangle, Ewk_Text_Direction, double, Eina_List*, int selectedIndex)
&gt; 
&gt; EFL unit test has used static keyword for internal function. Please use standard bool, showPopupMenu() instead of Eina_Bool and popup_menu_show().

right, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704969</commentid>
    <comment_count>54</comment_count>
      <attachid>160636</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-26 22:37:49 -0700</bug_when>
    <thetext>Comment on attachment 160636
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:192
&gt; +static Eina_Bool popup_menu_show(Ewk_View_Smart_Data* smartData, Eina_Rectangle, Ewk_Text_Direction, double, Eina_List*, int selectedIndex)

This is not fixed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704986</commentid>
    <comment_count>55</comment_count>
      <attachid>160644</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 23:01:20 -0700</bug_when>
    <thetext>Created attachment 160644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704989</commentid>
    <comment_count>56</comment_count>
      <attachid>160647</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 23:03:01 -0700</bug_when>
    <thetext>Created attachment 160647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704991</commentid>
    <comment_count>57</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-26 23:03:45 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; (From update of attachment 160636 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160636&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:192
&gt; &gt; +static Eina_Bool popup_menu_show(Ewk_View_Smart_Data* smartData, Eina_Rectangle, Ewk_Text_Direction, double, Eina_List*, int selectedIndex)
&gt; 
&gt; This is not fixed yet.

Sorry for all noise.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705961</commentid>
    <comment_count>58</comment_count>
      <attachid>160647</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-27 18:19:56 -0700</bug_when>
    <thetext>Comment on attachment 160647
Patch

Please land this patch after getting LGTM from other committers(maybe Intel?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706149</commentid>
    <comment_count>59</comment_count>
      <attachid>160647</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-28 00:46:43 -0700</bug_when>
    <thetext>Comment on attachment 160647
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:50
&gt; +
&gt; +    ~_Ewk_Popup_Menu_Item()
&gt; +    {
&gt; +    }

Not needed.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:213
&gt; +    waitUntilTitleChangedTo(&quot;first&quot;);
&gt; +    ASSERT_STREQ(ewk_view_title_get(webView()), &quot;first&quot;);

This assert is not really necessary since waitUntilTitleChangedTo ensures that for you. If something goes wrong and the title does not change to &quot;first&quot;, the test will timeout and never reach the ASSERT anyway.

&gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.cpp:47
&gt; +
&gt; +WebPopupMenuProxyEfl::~WebPopupMenuProxyEfl()
&gt; +{
&gt; +}

Not needed.

&gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h:47
&gt; +    ~WebPopupMenuProxyEfl();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706211</commentid>
    <comment_count>60</comment_count>
      <attachid>160945</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-28 03:20:34 -0700</bug_when>
    <thetext>Created attachment 160945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706212</commentid>
    <comment_count>61</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-28 03:21:34 -0700</bug_when>
    <thetext>(In reply to comment #59)
&gt; (From update of attachment 160647 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160647&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:50
&gt; &gt; +
&gt; &gt; +    ~_Ewk_Popup_Menu_Item()
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; Not needed.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:213
&gt; &gt; +    waitUntilTitleChangedTo(&quot;first&quot;);
&gt; &gt; +    ASSERT_STREQ(ewk_view_title_get(webView()), &quot;first&quot;);
&gt; 
&gt; This assert is not really necessary since waitUntilTitleChangedTo ensures that for you. If something goes wrong and the title does not change to &quot;first&quot;, the test will timeout and never reach the ASSERT anyway.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.cpp:47
&gt; &gt; +
&gt; &gt; +WebPopupMenuProxyEfl::~WebPopupMenuProxyEfl()
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; Not needed.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h:47
&gt; &gt; +    ~WebPopupMenuProxyEfl();
&gt; 
&gt; Ditto.

Thank you. I fixed what you addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706219</commentid>
    <comment_count>62</comment_count>
      <attachid>160945</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-28 03:36:04 -0700</bug_when>
    <thetext>Comment on attachment 160945
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706244</commentid>
    <comment_count>63</comment_count>
      <attachid>160945</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 04:31:33 -0700</bug_when>
    <thetext>Comment on attachment 160945
Patch

Clearing flags on attachment: 160945

Committed r126866: &lt;http://trac.webkit.org/changeset/126866&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146474</attachid>
            <date>2012-06-07 21:52:23 -0700</date>
            <delta_ts>2012-08-13 10:01:34 -0700</delta_ts>
            <desc>work in progress #1</desc>
            <filename>bug-88616-20120608135221.patch</filename>
            <type>text/plain</type>
            <size>15779</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDU3NTNhNzUyMGI3ZDUz
YmI0N2IwMDgzZDAyNDEwMDE4OWNlYTRmOS4uYTRmY2Y4NmYxNGFiMTRlMjUwMGZmNzYzYjU4NTli
ODA3MzdmOTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA2LTA3ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6IEFkZCBXZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19lbnVtcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3
X3BvcHVwX3Nob3cpOgorICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfaGlkZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1cE1lbnVQ
cm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjp+V2ViUG9w
dXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6
c2hvd1BvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpo
aWRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OnZh
bHVlQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVm
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94
eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUpOgor
CiAyMDEyLTA2LTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2VhcmNoIGhpZ2hsaWdodCBkb2VzIG5vdCBzY3JvbGwgd2l0aCB0aGUgY29udGVudCBv
ZiB0aGUgcGFnZSwgYW5kIGZpbmQgb3ZlcmxheSBkb2Vzbid0IHdvcmssIG9uIGxhcmdlLWVub3Vn
aCB3aW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNDYzM2MzMTgzMTQ1OTAzMTk1
YzEyNTQ3ZjExZTk1MWI5ZTJlYWMxMy4uZjNjMmY0OGQ5OTRhZTcyOTE4NjMzOGM2YjQyNzY3NWQ1
NjhmMTliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTM4LDYgKzM4LDcgQEAgTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yRWZsLmNw
cAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9l
ZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQcmVmZXJl
bmNlc0VmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNs
aWVudC5jcHAKQEAgLTg1LDYgKzg2LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9lZmwiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2VmbCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvRG93bmxvYWRzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5j
cHAKaW5kZXggNTY3NTQ4ZjVkYTU3NGY5NmYwZGIzYThkZjU0Y2RiNmI0YmRhODNjMC4uMDVkZWZj
YmI0MGE4MWQ2MmFlYjEyZjc1YmQyNzEwOGQ4ZDQyY2EzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51
UHJveHlFZmwuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtMTkzLDEwICsxOTQsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
b25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZl
bgogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBh
Z2VQcm94eSogcGFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFn
ZSk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lbnVtcy5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM5YTMzOTk2NmUxOWQx
OWUwYzIwOWE2YTlkYjU2NWVmODk5NzE4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lbnVtcy5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIGV3a19lbnVt
c19oCisjZGVmaW5lIGV3a19lbnVtc19oCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKworZW51bSBfRXdrX1RleHRfRGlyZWN0aW9uIHsKKyAgICBFV0tfUlRMLAor
ICAgIEVXS19MVFIKK307Cit0eXBlZGVmIGVudW0gX0V3a19UZXh0X0RpcmVjdGlvbiBFd2tfVGV4
dF9EaXJlY3Rpb247CisKKy8vLyBEZWZpbmVzIHRoZSB0eXBlcyBvZiB0aGUgaXRlbXMgZm9yIHRo
ZSBjb250ZXh0IG1lbnUuCitlbnVtIF9Fd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgeworICAgIEVX
S19QT1BVUF9NRU5VX1NFUEFSQVRPUiwKKyAgICBFV0tfUE9QVVBfTUVOVV9JVEVNCit9OworLy8v
IENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfTWVudV9JdGVtX1R5cGUuCit0eXBlZGVm
IGVudW0gX0V3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfZW51bXNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IDI2OWMwNzJkNjRhOTA1MzQ5NGEwZDYyOTdhMjAwNjg0MTIwMzg5NjkuLjkxZWY5MmU0NjNlYWY0
MmQwYzJjY2M4ZGEwOGM0ZTYyZDdhODA5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTE5LDEyICsxOSwxNiBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2
YXRlLmgiCiAKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAi
TmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIK
ICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2lu
Y2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zMyw2ICszNywxMSBAQCBzdGF0aWMgY29u
c3QgY2hhciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CiAKIHN0cnVjdCBfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBhZ2VDbGll
bnQ7CisKKyAgICBzdHJ1Y3QgeworICAgICAgICBXZWJQb3B1cE1lbnVQcm94eUVmbCogbWVudTsK
KyAgICAgICAgRWluYV9MaXN0KiBpdGVtczsKKyAgICB9IHBvcHVwOwogfTsKIAogI2RlZmluZSBF
V0tfVklFV19UWVBFX0NIRUNLKGV3a1ZpZXcsIHJlc3VsdCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKQEAgLTUxMSwzICs1MjAsNTAgQEAgdm9pZCBld2tfdmlld19pbWFnZV9k
YXRhX3NldChFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogaW1hZ2VEYXRhLCBjb25zdCBJbnRT
aXoKICAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChzbWFydERhdGEtPmltYWdlLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfY29w
eV9zZXQoc21hcnREYXRhLT5pbWFnZSwgaW1hZ2VEYXRhKTsKIH0KKwordm9pZCBld2tfdmlld19w
b3B1cF9zaG93KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9w
dXBNZW51LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24s
IGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVt
cywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
bWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRh
LT5hcGktPnBvcHVwX21lbnVfc2hvdyk7CisKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBpZiAocHJpdi0+cG9wdXAubWVudSkKKyAgICAgICAg
ZXdrX3ZpZXdfcG9wdXBfaGlkZShld2tWaWV3KTsKKyAgICBwcml2LT5wb3B1cC5tZW51ID0gcG9w
dXBNZW51OworCisgICAgRWluYV9MaXN0KiBwb3B1cEl0ZW1zID0gMDsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CisgICAgICAgIEV3a19Qb3B1cF9NZW51
X0l0ZW0qIGl0ZW0gPSBuZXcgRXdrX1BvcHVwX01lbnVfSXRlbTsKKyAgICAgICAgaWYgKGl0ZW1z
W2ldLm1fdHlwZSA9PSBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcikgeworICAgICAgICAgICAgaXRl
bS0+dHlwZSA9IEVXS19QT1BVUF9NRU5VX1NFUEFSQVRPUjsKKyAgICAgICAgICAgIGl0ZW0tPnRl
eHQgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaXRlbS0+dHlwZSA9IEVXS19Q
T1BVUF9NRU5VX0lURU07CisgICAgICAgICAgICBpdGVtLT50ZXh0ID0gZWluYV9zdHJpbmdzaGFy
ZV9hZGQoaXRlbXNbaV0ubV90ZXh0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICB9CisKKyAgICAg
ICAgcG9wdXBJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQocG9wdXBJdGVtcywgaXRlbSk7CisgICAg
fQorICAgIHByaXYtPnBvcHVwLml0ZW1zID0gcG9wdXBJdGVtczsKKworICAgIHNtYXJ0RGF0YS0+
YXBpLT5wb3B1cF9tZW51X3Nob3coc21hcnREYXRhLCByZWN0LCBzdGF0aWNfY2FzdDxFd2tfVGV4
dF9EaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBwYWdlU2NhbGVGYWN0b3IsIHBvcHVwSXRlbXMs
IHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIGV3a192aWV3X3BvcHVwX2hpZGUoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBp
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+cG9wdXBf
bWVudV9oaWRlKTsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X2hpZGUoc21hcnRE
YXRhKTsKKworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYp
OworICAgIHZvaWQqIGl0ZW12OworICAgIEVJTkFfTElTVF9GUkVFKHByaXYtPnBvcHVwLml0ZW1z
LCBpdGVtdikgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nh
c3Q8RXdrX1BvcHVwX01lbnVfSXRlbSo+KGl0ZW12KTsKKyAgICAgICAgZWluYV9zdHJpbmdzaGFy
ZV9kZWwoaXRlbS0+dGV4dCk7CisgICAgICAgIGRlbGV0ZSBpdGVtOworICAgIH0KKyAgICBwcml2
LT5wb3B1cC5tZW51ID0gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5oCmluZGV4IGM4OTU2YmNhNzI3YjlhMzg5ZGEwMDViODliNDVlMWYyYzEzYzc4MjUu
LjRjM2NjOTJmZGFmMmUxMjFhMzc0NDdiNGVmN2ZlOGI4MTg0ZWYyNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMjAsNiArMjAsNyBAQAogI2lm
bmRlZiBld2tfdmlld19oCiAjZGVmaW5lIGV3a192aWV3X2gKIAorI2luY2x1ZGUgImV3a19lbnVt
cy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCkBA
IC0zNSw2ICszNiw5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEV2YXNf
U21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2Vk
LiAqLwogICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKIAorICAgIEVpbmFfQm9vbCAoKnBvcHVw
X21lbnVfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEVpbmFfUmVjdGFuZ2xlIHJlY3Qs
IEV3a19UZXh0X0RpcmVjdGlvbiB0ZXh0X2RpcmVjdGlvbiwgZG91YmxlIHBhZ2Vfc2NhbGVfZmFj
dG9yLCBFaW5hX0xpc3QqIGl0ZW1zLCBpbnQgc2VsZWN0ZWRfaW5kZXgpOworICAgIEVpbmFfQm9v
bCAoKnBvcHVwX21lbnVfaGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOworCiAgICAgLy8g
ZXZlbnQgaGFuZGxpbmc6CiAgICAgLy8gIC0gcmV0dXJucyB0cnVlIGlmIGhhbmRsZWQKICAgICAv
LyAgLSBpZiBvdmVycmlkZGVuLCBoYXZlIHRvIGNhbGwgcGFyZW50IG1ldGhvZCBpZiBkZXNpcmVk
CkBAIC02NCw3ICs2OCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNl
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19T
TUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0
LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwfQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFy
dF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC05Myw2ICs5NywxNiBAQCBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0NsYXNzIHsKICAqLwogI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTihuYW1lKSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1Nf
SU5JVF9OQU1FX1ZFUlNJT04obmFtZSkpCiAKKy8qKgorICogU3RydWN0dXJlIGRvIGNvbnRhaW4g
ZGF0YSBvZiBlYWNoIG1lbnUgaXRlbQorICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX1BvcHVwX01l
bnVfSXRlbSBFd2tfUG9wdXBfTWVudV9JdGVtOworLy8vIENvbnRhaW5zIGRhdGEgb2YgZWFjaCBt
ZW51IGl0ZW0uCitzdHJ1Y3QgX0V3a19Qb3B1cF9NZW51X0l0ZW0geworICAgIGNvbnN0IGNoYXIg
KnRleHQ7IC8qKjwgVGV4dCBvZiB0aGUgaXRlbS4gKi8KKyAgICBFd2tfUG9wdXBfTWVudV9JdGVt
X1R5cGUgdHlwZTsgLyoqIFR5cGUgb2YgdGhlIGl0ZW0uICovCit9OworCiB0eXBlZGVmIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIEV3a19WaWV3X1ByaXZhdGVfRGF0YTsKIC8qKgogICog
QGJyaWVmIENvbnRhaW5zIGFuIGludGVybmFsIFZpZXcgZGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCBlNzc2NzI1
Y2M0NWYyNzUzNjFjMTBkZmI2N2YyMDhlMzg2M2U0YjA3Li41YTdlNzg2OGMyZTM0NWJkYjFjM2Qy
ZGRiZGY0ZmE3MDEyNDFlZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMiwxMyArMjIsMjMgQEAKICNkZWZpbmUg
ZXdrX3ZpZXdfcHJpdmF0ZV9oCiAKICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0RGlyZWN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIH0KIAorbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJQb3B1cEl0ZW07CitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVm
bDsKK30KIHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiB2b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUpOwogCit2b2lkIGV3a192aWV3X3BvcHVwX3Nob3coRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+
JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKwordm9pZCBld2tfdmlld19wb3B1cF9o
aWRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQ
cm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVBy
b3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDk3Zjk0YzMwODdhMWVlYWIzNDI5ZGVjYWI3ODBmZTI1
MzFiNWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VF
dmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgImV3a192aWV3X3By
aXZhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eUVm
bDo6V2ViUG9wdXBNZW51UHJveHlFZmwoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVu
dVByb3h5OjpDbGllbnQqIGNsaWVudCkKKyAgICA6IFdlYlBvcHVwTWVudVByb3h5KGNsaWVudCkK
KyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQoreworfQorCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6
fldlYlBvcHVwTWVudVByb3h5RWZsKCkKK3sKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVm
bDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHRE
aXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0
ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3Rl
ZEluZGV4KQoreworICAgIGV3a192aWV3X3BvcHVwX3Nob3cobV93ZWJWaWV3LCB0aGlzLCByZWN0
LCB0ZXh0RGlyZWN0aW9uLCBwYWdlU2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsK
K30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6aGlkZVBvcHVwTWVudSgpCit7CisgICAg
ZXdrX3ZpZXdfcG9wdXBfaGlkZShtX3dlYlZpZXcpOworfQorCit2b2lkIFdlYlBvcHVwTWVudVBy
b3h5RWZsOjp2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpCit7CisgICAgbV9jbGll
bnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBuZXdTZWxlY3RlZEluZGV4KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjZkOGJhNzVjMDJlMTg4
YTJhOTA0NjJmYzYwZTgxODMzZTEzZWFkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaApAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBX
ZWJQb3B1cE1lbnVQcm94eUVmbF9oCisjZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKwor
I2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK3R5cGVkZWYgc3RydWN0IF9FdmFzX09i
amVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UmVjdDsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3Mg
V2ViUG9wdXBNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5RWZsPiBjcmVhdGUoRXZh
c19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJveHlFZmwod2Vi
VmlldywgY2xpZW50KSk7CisgICAgfQorICAgIH5XZWJQb3B1cE1lbnVQcm94eUVmbCgpOworCisg
ICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdl
YkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3Rv
cjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBz
ZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpOworCisgICAg
dm9pZCB2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpOworCitwcml2YXRlOgorICAg
IFdlYlBvcHVwTWVudVByb3h5RWZsKEV2YXNfT2JqZWN0KiwgV2ViUG9wdXBNZW51UHJveHk6OkNs
aWVudCopOworCisgICAgRXZhc19PYmplY3QqIG1fd2ViVmlldzsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158030</attachid>
            <date>2012-08-13 10:01:42 -0700</date>
            <delta_ts>2012-08-13 10:21:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814020109.patch</filename>
            <type>text/plain</type>
            <size>21171</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGE5NWJkOWFlNjk0ZmQx
ZTU0M2M1YTg3NzVjODU0ZTA2YjEwYThlMi4uZDc0MDlkYzMwOGU1ZmFjNWZhZGMyZmIxZDg5MjNm
MDg2MjM5YTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTEzICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIFRoZSBhcHBsaWNh
dGlvbnMgc2hvdWxkIGltcGxlbWVudCBwb3B1cCBtZW51IGJ5IG92ZXJyaWRpbmcKKyAgICAgICAg
c21hcnQgY2xhc3MgZnVuY3Rpb24gdG8gc3VwcG9ydCBzZWxlY3QgdGFnLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2VudW1zLmg6IEFkZGVkIHRvIHN0b3JlIGVudW0g
dmFsdWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAg
ICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVf
RGF0YTo6X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjp+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmlld19wb3B1
cF9tZW51X3JlcXVlc3QpOiBBZGRlZCB0byBjYWxsIHBvcHVwX21lbnVfc2hvdywgc21hcnQgY2xh
c3MgZnVuY3Rpb24uCisgICAgICAgIChld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKTogQWRkZWQg
QVBJIHRvIGNhbGwgcG9wdXBfbWVudV9oaWRlLCBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKyAgICAg
ICAgKGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KTogQWRkZWQgQVBJIHRvIGNoYW5nZSBzZWxl
Y3RlZCBpbmRleC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAg
ICAgICBBZGRlZCBzbWFydCBjbGFzcyBmdW5jdGlvbiBmb3IgYXBwbGljYXRpb25zIHRvIG92ZXJy
aWRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1cE1lbnVQcm94eUVm
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjp+V2ViUG9wdXBNZW51
UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1Bv
cHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpoaWRlUG9w
dXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OnZhbHVlQ2hh
bmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYlBvcHVwTWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0ZSk6CisKIDIwMTItMDgtMTIgIE51bm8gTG9wZXMg
IDxubG9wZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3aXRoIHJlY2VudCBjbGFu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDVlZDU0MjBmMDQ4YTk0ZjVmOWUzZTI1
MDUyNTE0YTM0YjkxMzYzYi4uNTlmZDBhNzRjZTBiODNkMGI5ZmQ4ODMxZDM2NTM5Yzg0MjA0MTMx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTc2LDYgKzc2LDcgQEAgTElTVChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3Bw
CiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2Vm
bC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVu
Y2VzRWZsLmNwcAogCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291
cC5jcHAKQEAgLTEyNyw2ICsxMjgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElS
RUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElS
fS9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL2VmbCIKQEAgLTIwMCw2ICsyMDIsNyBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29va2llX21hbmFnZXIuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lbnVtcy5oIgogICAgICIke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lv
bl9yZXF1ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IGQ5ODAyM2RlNmUwZWZhNmRlMDdmYzlm
YjhjMjE1ZDM5Y2M0ODk4N2MuLjNmYjg4ZDA1MTgyZDc1YmQ3NmNlZDU1ZTg1MDBkNDA3OTZlNzQ5
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2Nv
b2tpZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgorI2luY2x1ZGUg
ImV3a19lbnVtcy5oIgogI2luY2x1ZGUgImV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgog
I2luY2x1ZGUgImV3a19pbnRlbnQuaCIKICNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2UuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCA3MjZjYWFhZTFhMWVmYTk2MzhkYjc3NDc2NzZiMDFhMzFhMjFjNmI2Li5iYWNi
ZjMwMDA0M2YwMGZhZmZmMzk3YjE4NzJjMzlkMzI2NWFkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTIwNCwx
MCArMjA1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW4KIH0KICNlbmRpZgogCi1QYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51
UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfZW51bXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19l
bnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYzMGRlMDAwZTk4NzAzMDYyYjAyZWZmN2UwZGM4YjY3MDJlYTdm
YmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZW51bXMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfZW51
bXNfaAorI2RlZmluZSBld2tfZW51bXNfaAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKKy8vLyBFbnVtIHZhbHVlcyBjb250YWluaW5nIHRleHQgZGlyZWN0aW9u
YWxpdHkgdmFsdWVzLgordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfVEVYVF9ESVJFQ1RJT05fUklH
SFRfVE9fTEVGVCwKKyAgICBFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVAorfSBFd2tf
VGV4dF9EaXJlY3Rpb247CisKKy8vLyBFbnVtIHZhbHVlcyBjb250YWluaW5nIHR5cGUgb2YgcG9w
dXAgaXRlbS4KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX1BPUFVQX01FTlVfU0VQQVJBVE9SLAor
ICAgIEVXS19QT1BVUF9NRU5VX0lURU0KK30gRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlOworCisj
aWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2VudW1zX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA3ZDhi
MWNlMDU2NDMxNTQ5M2I1MTNkMTE1MzUyZDk5YjQwZTUxYzEyLi44NmU5Y2Y5Y2E0NTAxNTk0MjIw
ZWI0YjFjNDk5Y2RhNGM5OWJkY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiV0tSZXRhaW5Q
dHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVVJMLmgiCisjaW5jbHVk
ZSAiV2ViUG9wdXBJdGVtLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKICNp
bmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19j
b250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgpAQCAtODIsNiArODQs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNl
c01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFj
a0ZvcndhcmRMaXN0OwogCisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5
OworICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gK
ICAgICBib29sIGlzVXNpbmdFY29yZVg7CiAjZW5kaWYKQEAgLTEwMCw2ICsxMDUsOCBAQCBzdHJ1
Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgICAgICwgY3Vyc29yR3JvdXAoMCkKICAg
ICAgICAgLCBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkKKyAg
ICAgICAgLCBwb3B1cE1lbnVQcm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDApCiAj
aWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNlbmRp
ZgpAQCAtMTIyLDYgKzEyOSwxNSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAg
ICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBld2tf
YmFja19mb3J3YXJkX2xpc3RfZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIGlmIChw
b3B1cE1lbnVJdGVtcykgeworICAgICAgICAgICAgdm9pZCogaXRlbXY7CisgICAgICAgICAgICBF
SU5BX0xJU1RfRlJFRShwb3B1cE1lbnVJdGVtcywgaXRlbXYpIHsKKyAgICAgICAgICAgICAgICBF
d2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01lbnVfSXRl
bSo+KGl0ZW12KTsKKyAgICAgICAgICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChpdGVtLT50
ZXh0KTsKKyAgICAgICAgICAgICAgICBkZWxldGUgaXRlbTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQogICAgIH0KIH07CiAKQEAgLTE0NTQsMyArMTQ3MCw3MyBAQCB2b2lkIGV3a192aWV3X2Nv
bnRlbnRzX3NpemVfY2hhbmdlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgSW50
U2l6ZSYgcwogICAgIHByaXYtPnZpZXdwb3J0SGFuZGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXpl
KHNpemUpOwogI2VuZGlmCiB9CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RF
WFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIFJUTCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hULCBMVFIpOworCit2b2lkIGV3
a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgV2ViUG9wdXBN
ZW51UHJveHlFZmwqIHBvcHVwTWVudSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlv
biB0ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2Vi
UG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X3Nob3cpOworCisgICAgQVNTRVJUKHBv
cHVwTWVudSk7CisKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2KTsKKyAgICBpZiAocHJpdi0+cG9wdXBNZW51UHJveHkpCisgICAgICAgIGV3a192aWV3X3Bv
cHVwX21lbnVfY2xvc2UoZXdrVmlldyk7CisgICAgcHJpdi0+cG9wdXBNZW51UHJveHkgPSBwb3B1
cE1lbnU7CisKKyAgICBFaW5hX0xpc3QqIHBvcHVwSXRlbXMgPSAwOworICAgIHNpemVfdCBzaXpl
ID0gaXRlbXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CisgICAgICAgIEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0gPSBuZXcgRXdrX1BvcHVwX01lbnVf
SXRlbTsKKyAgICAgICAgaWYgKGl0ZW1zW2ldLm1fdHlwZSA9PSBXZWJQb3B1cEl0ZW06OlNlcGFy
YXRvcikgeworICAgICAgICAgICAgaXRlbS0+dHlwZSA9IEVXS19QT1BVUF9NRU5VX1NFUEFSQVRP
UjsKKyAgICAgICAgICAgIGl0ZW0tPnRleHQgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaXRlbS0+dHlwZSA9IEVXS19QT1BVUF9NRU5VX0lURU07CisgICAgICAgICAgICBpdGVt
LT50ZXh0ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoaXRlbXNbaV0ubV90ZXh0LnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICB9CisKKyAgICAgICAgcG9wdXBJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQo
cG9wdXBJdGVtcywgaXRlbSk7CisgICAgfQorICAgIHByaXYtPnBvcHVwTWVudUl0ZW1zID0gcG9w
dXBJdGVtczsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X3Nob3coc21hcnREYXRh
LCByZWN0LCBzdGF0aWNfY2FzdDxFd2tfVGV4dF9EaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBw
YWdlU2NhbGVGYWN0b3IsIHBvcHVwSXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHks
IGZhbHNlKTsKKworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmFwaSwgZmFsc2UpOworICAgIGlmIChzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9oaWRlKQor
ICAgICAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9oaWRlKHNtYXJ0RGF0YSk7CisKKyAg
ICB2b2lkKiBpdGVtdjsKKyAgICBFSU5BX0xJU1RfRlJFRShwcml2LT5wb3B1cE1lbnVJdGVtcywg
aXRlbXYpIHsKKyAgICAgICAgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0
PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtdik7CisgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVf
ZGVsKGl0ZW0tPnRleHQpOworICAgICAgICBkZWxldGUgaXRlbTsKKyAgICB9CisgICAgcHJpdi0+
cG9wdXBNZW51UHJveHkgPSAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBl
d2tfdmlld19wb3B1cF9tZW51X3NlbGVjdChFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQg
aW50IHNlbGVjdGVkSW5kZXgpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgaWYgKCFwcml2LT5wb3B1cE1lbnVQcm94eSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHNlbGVjdGVkSW5kZXggPiBlaW5hX2xp
c3RfY291bnQocHJpdi0+cG9wdXBNZW51SXRlbXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBwcml2LT5wb3B1cE1lbnVQcm94eS0+dmFsdWVDaGFuZ2VkKHNlbGVjdGVkSW5kZXgpOwor
ICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKaW5kZXggNDIzZjllMTQzMTgzMmIyNDBiOTI3N2E1OGQxNzBiZWEyMzE3OTE2My4u
NTBmMGE5NjA0MGJkYTI0ZTA1ZmU2MDcwOTljMzIwMWZjYzY3NjM4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC03Miw2ICs3Miw3IEBACiAjaW5j
bHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIK
ICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdrX2VudW1zLmgiCiAj
aW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgogI2lu
Y2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKQEAgLTkxLDYgKzkyLDkgQEAgc3RydWN0IF9Fd2tf
Vmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0
ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJz
aW9uOwogCisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9uIHRleHRfZGly
ZWN0aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3IsIEVpbmFfTGlzdCogaXRlbXMsIGludCBz
ZWxlY3RlZF9pbmRleCk7CisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9oaWRlKShFd2tfVmll
d19TbWFydF9EYXRhICpzZCk7CisKICAgICAvLyBldmVudCBoYW5kbGluZzoKICAgICAvLyAgLSBy
ZXR1cm5zIHRydWUgaWYgaGFuZGxlZAogICAgIC8vICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8g
Y2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQKQEAgLTEyMCw3ICsxMjQsNyBAQCBzdHJ1Y3Qg
X0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
CiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0
KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFy
dF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXpl
ciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTcy
LDYgKzE3NiwxNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgewogICAgIH0gY2hhbmdl
ZDsKIH07CiAKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1BvcHVwX01lbnVfSXRl
bS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfUG9wdXBfTWVudV9JdGVtIEV3a19Qb3B1cF9NZW51X0l0
ZW07CisKKy8qKgorICogQGJyaWVmIFN0cnVjdHVyZSBjb250YWluaW5nIGRhdGEgb2YgZWFjaCBw
b3B1cCBtZW51IGl0ZW0KKyAqLworc3RydWN0IF9Fd2tfUG9wdXBfTWVudV9JdGVtIHsKKyAgICBj
b25zdCBjaGFyICp0ZXh0OyAvKio8IFRleHQgb2YgdGhlIGl0ZW0uICovCisgICAgRXdrX1BvcHVw
X01lbnVfSXRlbV9UeXBlIHR5cGU7IC8qKiBUeXBlIG9mIHRoZSBpdGVtLiAqLworfTsKKwogLy8v
IENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfV2ViX1Jlc291cmNlX1JlcXVlc3QuCiB0eXBl
ZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IEV3a19XZWJfUmVzb3VyY2VfUmVx
dWVzdDsKIApAQCAtNTkwLDYgKzYwNSwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0
X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8K
IEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19P
YmplY3QgKm8pOwogCisvKioKKyogU2VsZWN0cyBpbmRleCBvZiBjdXJyZW50IHBvcHVwIG1lbnUu
CisqCisqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisqIEBwYXJh
bSBpbmRleCBpbmRleCBvZiBpdGVtIHRvIHNlbGVjdAorKgorKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisqICAgICAg
ICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQgb3IgaW5kZXggaXMgb3V0IG9mIHJhbmdlKQor
Ki8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0
ICpvLCB1bnNpZ25lZCBpbnQgaW5kZXgpOworCisvKioKKyogQ2xvc2VzIGN1cnJlbnQgcG9wdXAg
bWVudS4KKyoKKyogQHBhcmFtIG8gdmlldyBvYmplY3QgY29udGFpbnMgcG9wdXAgbWVudS4KKyoK
KyogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWls
dXJlIChwcm9iYWJseQorKiAgICAgICAgIHBvcHVwIG1lbnUgaXMgbm90IHNlbGVjdGVkKQorKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8p
OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEz
Y2RmNmJkODdiYTg4YTZiMWFmMTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4
NzQ1ZThmYmZmNDkwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRE
aXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiAr
MzMsMTEgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7
Cit9CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1
Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1Vy
bF9SZXF1ZXN0OwpAQCAtODksNCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2Nv
bXBvc2l0aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBl
d2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1
cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+
JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3By
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1
cE1lbnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVw
TWVudVByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGJmMjM2NmRmMzBmNGY0YTQzMzc2ZDk1MGU3
YzA3MjNkNmVmMDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5o
IgorCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVw
SXRlbS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0
ZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBvcHVwTWVudVByb3h5RWZsOjpX
ZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJv
eHk6OkNsaWVudCogY2xpZW50KQorICAgIDogV2ViUG9wdXBNZW51UHJveHkoY2xpZW50KQorICAg
ICwgbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK1dlYlBvcHVwTWVudVByb3h5RWZsOjp+V2Vi
UG9wdXBNZW51UHJveHlFZmwoKQoreworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjpz
aG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVj
dGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4m
IGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5k
ZXgpCit7CisgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KG1fd2ViVmlldywgdGhpcywg
cmVjdCwgdGV4dERpcmVjdGlvbiwgcGFnZVNjYWxlRmFjdG9yLCBpdGVtcywgc2VsZWN0ZWRJbmRl
eCk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQb3B1cE1lbnUoKQorewor
ICAgIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UobV93ZWJWaWV3KTsKK30KKwordm9pZCBXZWJQ
b3B1cE1lbnVQcm94eUVmbDo6dmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KQorewor
ICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgbmV3U2VsZWN0ZWRJ
bmRleCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwYmVk
MGIyMTUwYmI5YWJlMGU0ZjIzOTIzNGRmYzI1MGNiZDgyNmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgKQEAgLTAs
MCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9wdXBNZW51UHJveHlFZmxfaAor
I2RlZmluZSBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCisKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQ
cm94eS5oIgorCit0eXBlZGVmIHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsIDog
cHVibGljIFdlYlBvcHVwTWVudVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eUVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQ
b3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYlBvcHVwTWVudVByb3h5RWZsKHdlYlZpZXcsIGNsaWVudCkpOworICAgIH0K
KyAgICB+V2ViUG9wdXBNZW51UHJveHlFZmwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93UG9w
dXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0
IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdmly
dHVhbCB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKKworICAgIHZvaWQgdmFsdWVDaGFuZ2VkKGludCBu
ZXdTZWxlY3RlZEluZGV4KTsKKworcHJpdmF0ZToKKyAgICBXZWJQb3B1cE1lbnVQcm94eUVmbChF
dmFzX09iamVjdCosIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqKTsKKworICAgIEV2YXNfT2Jq
ZWN0KiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYlBvcHVwTWVudVByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158034</attachid>
            <date>2012-08-13 10:22:20 -0700</date>
            <delta_ts>2012-08-13 10:32:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814022147.patch</filename>
            <type>text/plain</type>
            <size>21195</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGE5NWJkOWFlNjk0ZmQx
ZTU0M2M1YTg3NzVjODU0ZTA2YjEwYThlMi4uZjc3MTQ2ZGU1OWU0Yzg0NTA5MGZkM2E4OGU1NmMx
MDZiZDcxOTM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTEzICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZW51bXMuaDogQWRkZWQgdG8gc3RvcmUgZW51bSB2YWx1
ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
OjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21l
bnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBjbGFzcyBm
dW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRlZCBBUEkg
dG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAgICAgICAo
ZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNlbGVjdGVk
IGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAg
IEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3ZlcnJpZGUu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5RWZsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1lbnVQcm94
eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93UG9wdXBN
ZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQb3B1cE1l
bnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVDaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0xMiAgTnVubyBMb3BlcyAgPG5s
b3Blc0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIHdpdGggcmVjZW50IGNsYW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBkNWVkNTQyMGYwNDhhOTRmNWY5ZTNlMjUwNTI1
MTRhMzRiOTEzNjNiLi41OWZkMGE3NGNlMGI4M2QwYjlmZDg4MzFkMzY1MzljODQyMDQxMzFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzYsNiArNzYsNyBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKICAg
ICBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dl
YlBvcHVwTWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJlZmVyZW5jZXNF
ZmwuY3BwCiAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNw
cApAQCAtMTI3LDYgKzEyOCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2VmbCIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvRG93bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mv
ZWZsIgpAQCAtMjAwLDYgKzIwMiw3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCIK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b29raWVfbWFuYWdlci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2VudW1zLmgiCiAgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3Jl
cXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19pbnRlbnQuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggZDk4MDIzZGU2ZTBlZmE2ZGUwN2ZjOWZiOGMy
MTVkMzljYzQ4OTg3Yy4uM2ZiODhkMDUxODJkNzViZDc2Y2VkNTVlODUwMGQ0MDc5NmU3NDkxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29va2ll
X21hbmFnZXIuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdr
X2VudW1zLmgiCiAjaW5jbHVkZSAiZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3Bw
CmluZGV4IDcyNmNhYWFlMWExZWZhOTYzOGRiNzc0NzY3NmIwMWEzMWEyMWM2YjYuLmJhY2JmMzAw
MDQzZjAwZmFmZmYzOTdiMTg3MmMzOWQzMjY1YWQ2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdy
b3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51
UHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgImV3a19j
b250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgpAQCAtMjA0LDEwICsy
MDUsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0
aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbgogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8
V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShX
ZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94
eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19lbnVtcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2VudW1z
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjMwZGUwMDBlOTg3MDMwNjJiMDJlZmY3ZTBkYzhiNjcwMmVhN2ZiZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19l
bnVtcy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19lbnVtc19o
CisjZGVmaW5lIGV3a19lbnVtc19oCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworLy8vIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdGV4dCBkaXJlY3Rpb25hbGl0
eSB2YWx1ZXMuCit0eXBlZGVmIGVudW0geworICAgIEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9U
T19MRUZULAorICAgIEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hUCit9IEV3a19UZXh0
X0RpcmVjdGlvbjsKKworLy8vIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1cCBp
dGVtLgordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfUE9QVVBfTUVOVV9TRVBBUkFUT1IsCisgICAg
RVdLX1BPUFVQX01FTlVfSVRFTQorfSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfZW51bXNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDdkOGIxY2Uw
NTY0MzE1NDkzYjUxM2QxMTUzNTJkOTliNDBlNTFjMTIuLmViNTVhNWNlMGQ5NzUyYWEyOWNiZTI2
ZDhlNzA2NDE4Y2M3ZTA0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJXS1JldGFpblB0ci5o
IgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tVUkwuaCIKKyNpbmNsdWRlICJX
ZWJQb3B1cEl0ZW0uaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1
ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRl
eHQuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCkBAIC04Miw2ICs4NCw5IEBA
IHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBMb2FkaW5nUmVzb3VyY2VzTWFw
IGxvYWRpbmdSZXNvdXJjZXNNYXA7CiAgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBiYWNrRm9y
d2FyZExpc3Q7CiAKKyAgICBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51UHJveHk7Cisg
ICAgRWluYV9MaXN0KiBwb3B1cE1lbnVJdGVtczsKKwogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAg
IGJvb2wgaXNVc2luZ0Vjb3JlWDsKICNlbmRpZgpAQCAtMTAwLDYgKzEwNSw4IEBAIHN0cnVjdCBf
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgLCBjdXJzb3JHcm91cCgwKQogICAgICAg
ICAsIGN1cnNvck9iamVjdCgwKQogICAgICAgICAsIGJhY2tGb3J3YXJkTGlzdCgwKQorICAgICAg
ICAsIHBvcHVwTWVudVByb3h5KDApCisgICAgICAgICwgcG9wdXBNZW51SXRlbXMoMCkKICNpZmRl
ZiBIQVZFX0VDT1JFX1gKICAgICAgICAgLCBpc1VzaW5nRWNvcmVYKGZhbHNlKQogI2VuZGlmCkBA
IC0xMjIsNiArMTI5LDE1IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAg
ICAgICAgIGV2YXNfb2JqZWN0X2RlbChjdXJzb3JPYmplY3QpOwogCiAgICAgICAgIGV3a19iYWNr
X2ZvcndhcmRfbGlzdF9mcmVlKGJhY2tGb3J3YXJkTGlzdCk7CisKKyAgICAgICAgaWYgKHBvcHVw
TWVudUl0ZW1zKSB7CisgICAgICAgICAgICB2b2lkKiBpdGVtdjsKKyAgICAgICAgICAgIEVJTkFf
TElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtdikgeworICAgICAgICAgICAgICAgIEV3a19Q
b3B1cF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVudV9JdGVtKj4o
aXRlbXYpOworICAgICAgICAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGl0ZW0tPnRleHQp
OworICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtOworICAgICAgICAgICAgfQorICAgICAgICB9
CiAgICAgfQogfTsKIApAQCAtMTQ1NCwzICsxNDcwLDczIEBAIHZvaWQgZXdrX3ZpZXdfY29udGVu
dHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRTaXpl
JiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6
ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9E
SVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CisKK3ZvaWQgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQb3B1cE1lbnVQ
cm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdyk7CisKKyAgICBBU1NFUlQocG9wdXBN
ZW51KTsKKworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYp
OworICAgIGlmIChwcml2LT5wb3B1cE1lbnVQcm94eSkKKyAgICAgICAgZXdrX3ZpZXdfcG9wdXBf
bWVudV9jbG9zZShld2tWaWV3KTsKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IHBvcHVwTWVu
dTsKKworICAgIEVpbmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7CisgICAgc2l6ZV90IHNpemUgPSBp
dGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgICAgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSA9IG5ldyBFd2tfUG9wdXBfTWVudV9JdGVt
OworICAgICAgICBpZiAoaXRlbXNbaV0ubV90eXBlID09IFdlYlBvcHVwSXRlbTo6U2VwYXJhdG9y
KSB7CisgICAgICAgICAgICBpdGVtLT50eXBlID0gRVdLX1BPUFVQX01FTlVfU0VQQVJBVE9SOwor
ICAgICAgICAgICAgaXRlbS0+dGV4dCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpdGVtLT50eXBlID0gRVdLX1BPUFVQX01FTlVfSVRFTTsKKyAgICAgICAgICAgIGl0ZW0tPnRl
eHQgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChpdGVtc1tpXS5tX3RleHQudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIH0KKworICAgICAgICBwb3B1cEl0ZW1zID0gZWluYV9saXN0X2FwcGVuZChwb3B1
cEl0ZW1zLCBpdGVtKTsKKyAgICB9CisgICAgcHJpdi0+cG9wdXBNZW51SXRlbXMgPSBwb3B1cEl0
ZW1zOworCisgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdyhzbWFydERhdGEsIHJl
Y3QsIHN0YXRpY19jYXN0PEV3a19UZXh0X0RpcmVjdGlvbj4odGV4dERpcmVjdGlvbiksIHBhZ2VT
Y2FsZUZhY3RvciwgcG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK0VpbmFfQm9vbCBl
d2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5wb3B1cE1lbnVQcm94eSwgZmFs
c2UpOworCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBp
LCBmYWxzZSk7CisgICAgaWYgKHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X2hpZGUpCisgICAg
ICAgIHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X2hpZGUoc21hcnREYXRhKTsKKworICAgIHZv
aWQqIGl0ZW12OworICAgIEVJTkFfTElTVF9GUkVFKHByaXYtPnBvcHVwTWVudUl0ZW1zLCBpdGVt
dikgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdr
X1BvcHVwX01lbnVfSXRlbSo+KGl0ZW12KTsKKyAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwo
aXRlbS0+dGV4dCk7CisgICAgICAgIGRlbGV0ZSBpdGVtOworICAgIH0KKworICAgIHByaXYtPnBv
cHVwTWVudVByb3h5ID0gMDsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGlu
dCBzZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChwcml2LT5wb3B1cE1lbnVQcm94eSwgZmFsc2UpOworCisgICAgaWYgKHNlbGVjdGVkSW5kZXgg
PiBlaW5hX2xpc3RfY291bnQocHJpdi0+cG9wdXBNZW51SXRlbXMpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eS0+dmFsdWVDaGFuZ2VkKHNlbGVjdGVk
SW5kZXgpOworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKaW5kZXggNDIzZjllMTQzMTgzMmIyNDBiOTI3N2E1OGQxNzBiZWEy
MzE3OTE2My4uYmQ2NDRkMjQyYzk2OTZjZGQ3MDg3MzY0Zjc2MGU5MmI0ODk0MjEyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC03Miw2ICs3Miw3
IEBACiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0LmgiCiAjaW5jbHVkZSAiZXdrX2Nv
bnRleHQuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdrX2Vu
dW1zLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVz
dC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKQEAgLTkxLDYgKzkyLDkgQEAgc3Ry
dWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoq
PCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQg
bG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9zaG93KShFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9u
IHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3IsIEVpbmFfTGlzdCogaXRl
bXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9oaWRl
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICAvLyBldmVudCBoYW5kbGluZzoKICAg
ICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxlZAogICAgIC8vICAtIGlmIG92ZXJyaWRkZW4s
IGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQKQEAgLTEyMCw3ICsxMjQsNyBA
QCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFN
RV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9j
bGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lP
TiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJ
bml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJl
LgpAQCAtMTcyLDYgKzE3NiwxNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgewogICAg
IH0gY2hhbmdlZDsKIH07CiAKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1BvcHVw
X01lbnVfSXRlbS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfUG9wdXBfTWVudV9JdGVtIEV3a19Qb3B1
cF9NZW51X0l0ZW07CisKKy8qKgorICogQGJyaWVmIFN0cnVjdHVyZSBjb250YWluaW5nIGRhdGEg
b2YgZWFjaCBwb3B1cCBtZW51IGl0ZW0KKyAqLworc3RydWN0IF9Fd2tfUG9wdXBfTWVudV9JdGVt
IHsKKyAgICBjb25zdCBjaGFyICp0ZXh0OyAvKio8IFRleHQgb2YgdGhlIGl0ZW0uICovCisgICAg
RXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIHR5cGU7IC8qKiBUeXBlIG9mIHRoZSBpdGVtLiAqLwor
fTsKKwogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfV2ViX1Jlc291cmNlX1JlcXVl
c3QuCiB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IEV3a19XZWJfUmVz
b3VyY2VfUmVxdWVzdDsKIApAQCAtNTkwLDYgKzYwNSwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tf
dmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5k
X09wdAogKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xl
YXIoRXZhc19PYmplY3QgKm8pOwogCisvKioKKyAqIFNlbGVjdHMgaW5kZXggb2YgY3VycmVudCBw
b3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1l
bnUuCisgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgaXRlbSB0byBzZWxlY3QKKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHBy
b2JhYmx5CisgKiAgICAgICAgIHBvcHVwIG1lbnUgaXMgbm90IHNlbGVjdGVkIG9yIGluZGV4IGlz
IG91dCBvZiByYW5nZSkKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9z
ZWxlY3QoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBpbmRleCk7CisKKy8qKgorICogQ2xv
c2VzIGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250
YWlucyBwb3B1cCBtZW51LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Ms
IEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAgICAgICAgcG9wdXAgbWVu
dSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21l
bnVfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJp
dmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEzY2RmNmJkODdiYTg4YTZiMWFmMTM2YTc3YzRmZmIuLmRi
OGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4NzQ1ZThmYmZmNDkwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIzLDcg
KzIzLDkgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEV2YXMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiArMzMsMTEgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIElu
dFNpemU7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xh
c3MgV2ViUG9wdXBNZW51UHJveHlFZmw7Cit9CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxv
YWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Zvcm1fU3VibWlz
c2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0
IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwpAQCAtODksNCArOTYsNiBAQCBib29s
IGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19P
YmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19t
b2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKK3ZvaWQgZXdr
X3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6Oldl
YlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0
b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsK
KwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGJm
MjM2NmRmMzBmNGY0YTQzMzc2ZDk1MGU3YzA3MjNkNmVmMDExCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisg
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVu
dC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisj
aW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09iamVjdCog
d2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50KQorICAgIDogV2ViUG9w
dXBNZW51UHJveHkoY2xpZW50KQorICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK1dl
YlBvcHVwTWVudVByb3h5RWZsOjp+V2ViUG9wdXBNZW51UHJveHlFZmwoKQoreworfQorCit2b2lk
IFdlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3Qs
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURh
dGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9y
ZXF1ZXN0KG1fd2ViVmlldywgdGhpcywgcmVjdCwgdGV4dERpcmVjdGlvbiwgcGFnZVNjYWxlRmFj
dG9yLCBpdGVtcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlF
Zmw6OmhpZGVQb3B1cE1lbnUoKQoreworICAgIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UobV93
ZWJWaWV3KTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVDaGFuZ2VkKGlu
dCBuZXdTZWxlY3RlZEluZGV4KQoreworICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1
cE1lbnUodGhpcywgbmV3U2VsZWN0ZWRJbmRleCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQ
cm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94
eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMwYmVkMGIyMTUwYmI5YWJlMGU0ZjIzOTIzNGRmYzI1MGNiZDgy
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBv
cHVwTWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViUG9wdXBNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCisK
KyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgorCit0eXBlZGVmIHN0cnVjdCBfRXZhc19P
YmplY3QgRXZhc19PYmplY3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFJlY3Q7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFdlYlBvcHVwTWVudVByb3h5RWZsIDogcHVibGljIFdlYlBvcHVwTWVudVByb3h5IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eUVmbD4gY3JlYXRlKEV2
YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudVByb3h5RWZsKHdl
YlZpZXcsIGNsaWVudCkpOworICAgIH0KKyAgICB+V2ViUG9wdXBNZW51UHJveHlFZmwoKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0
b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qg
c2VsZWN0ZWRJbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKKworICAg
IHZvaWQgdmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KTsKKworcHJpdmF0ZToKKyAg
ICBXZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09iamVjdCosIFdlYlBvcHVwTWVudVByb3h5OjpD
bGllbnQqKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwTWVudVByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158035</attachid>
            <date>2012-08-13 10:32:13 -0700</date>
            <delta_ts>2012-08-13 21:38:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814023140.patch</filename>
            <type>text/plain</type>
            <size>21501</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGE5NWJkOWFlNjk0ZmQx
ZTU0M2M1YTg3NzVjODU0ZTA2YjEwYThlMi4uZjc3MTQ2ZGU1OWU0Yzg0NTA5MGZkM2E4OGU1NmMx
MDZiZDcxOTM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTEzICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZW51bXMuaDogQWRkZWQgdG8gc3RvcmUgZW51bSB2YWx1
ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
OjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21l
bnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBjbGFzcyBm
dW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRlZCBBUEkg
dG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAgICAgICAo
ZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNlbGVjdGVk
IGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAg
IEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3ZlcnJpZGUu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5RWZsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1lbnVQcm94
eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93UG9wdXBN
ZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQb3B1cE1l
bnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVDaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0xMiAgTnVubyBMb3BlcyAgPG5s
b3Blc0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIHdpdGggcmVjZW50IGNsYW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBkNWVkNTQyMGYwNDhhOTRmNWY5ZTNlMjUwNTI1
MTRhMzRiOTEzNjNiLi41OWZkMGE3NGNlMGI4M2QwYjlmZDg4MzFkMzY1MzljODQyMDQxMzFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzYsNiArNzYsNyBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKICAg
ICBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dl
YlBvcHVwTWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJlZmVyZW5jZXNF
ZmwuY3BwCiAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNw
cApAQCAtMTI3LDYgKzEyOCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2VmbCIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvRG93bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mv
ZWZsIgpAQCAtMjAwLDYgKzIwMiw3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCIK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b29raWVfbWFuYWdlci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2VudW1zLmgiCiAgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3Jl
cXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19pbnRlbnQuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggZDk4MDIzZGU2ZTBlZmE2ZGUwN2ZjOWZiOGMy
MTVkMzljYzQ4OTg3Yy4uM2ZiODhkMDUxODJkNzViZDc2Y2VkNTVlODUwMGQ0MDc5NmU3NDkxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29va2ll
X21hbmFnZXIuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdr
X2VudW1zLmgiCiAjaW5jbHVkZSAiZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3Bw
CmluZGV4IDcyNmNhYWFlMWExZWZhOTYzOGRiNzc0NzY3NmIwMWEzMWEyMWM2YjYuLmJhY2JmMzAw
MDQzZjAwZmFmZmYzOTdiMTg3MmMzOWQzMjY1YWQ2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdy
b3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51
UHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgImV3a19j
b250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgpAQCAtMjA0LDEwICsy
MDUsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0
aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbgogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8
V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShX
ZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94
eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19lbnVtcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2VudW1z
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjMwZGUwMDBlOTg3MDMwNjJiMDJlZmY3ZTBkYzhiNjcwMmVhN2ZiZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19l
bnVtcy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19lbnVtc19o
CisjZGVmaW5lIGV3a19lbnVtc19oCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworLy8vIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdGV4dCBkaXJlY3Rpb25hbGl0
eSB2YWx1ZXMuCit0eXBlZGVmIGVudW0geworICAgIEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9U
T19MRUZULAorICAgIEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hUCit9IEV3a19UZXh0
X0RpcmVjdGlvbjsKKworLy8vIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1cCBp
dGVtLgordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfUE9QVVBfTUVOVV9TRVBBUkFUT1IsCisgICAg
RVdLX1BPUFVQX01FTlVfSVRFTQorfSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfZW51bXNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDdkOGIxY2Uw
NTY0MzE1NDkzYjUxM2QxMTUzNTJkOTliNDBlNTFjMTIuLmViNTVhNWNlMGQ5NzUyYWEyOWNiZTI2
ZDhlNzA2NDE4Y2M3ZTA0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJXS1JldGFpblB0ci5o
IgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tVUkwuaCIKKyNpbmNsdWRlICJX
ZWJQb3B1cEl0ZW0uaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1
ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRl
eHQuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCkBAIC04Miw2ICs4NCw5IEBA
IHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBMb2FkaW5nUmVzb3VyY2VzTWFw
IGxvYWRpbmdSZXNvdXJjZXNNYXA7CiAgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBiYWNrRm9y
d2FyZExpc3Q7CiAKKyAgICBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51UHJveHk7Cisg
ICAgRWluYV9MaXN0KiBwb3B1cE1lbnVJdGVtczsKKwogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAg
IGJvb2wgaXNVc2luZ0Vjb3JlWDsKICNlbmRpZgpAQCAtMTAwLDYgKzEwNSw4IEBAIHN0cnVjdCBf
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgLCBjdXJzb3JHcm91cCgwKQogICAgICAg
ICAsIGN1cnNvck9iamVjdCgwKQogICAgICAgICAsIGJhY2tGb3J3YXJkTGlzdCgwKQorICAgICAg
ICAsIHBvcHVwTWVudVByb3h5KDApCisgICAgICAgICwgcG9wdXBNZW51SXRlbXMoMCkKICNpZmRl
ZiBIQVZFX0VDT1JFX1gKICAgICAgICAgLCBpc1VzaW5nRWNvcmVYKGZhbHNlKQogI2VuZGlmCkBA
IC0xMjIsNiArMTI5LDE1IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAg
ICAgICAgIGV2YXNfb2JqZWN0X2RlbChjdXJzb3JPYmplY3QpOwogCiAgICAgICAgIGV3a19iYWNr
X2ZvcndhcmRfbGlzdF9mcmVlKGJhY2tGb3J3YXJkTGlzdCk7CisKKyAgICAgICAgaWYgKHBvcHVw
TWVudUl0ZW1zKSB7CisgICAgICAgICAgICB2b2lkKiBpdGVtdjsKKyAgICAgICAgICAgIEVJTkFf
TElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtdikgeworICAgICAgICAgICAgICAgIEV3a19Q
b3B1cF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVudV9JdGVtKj4o
aXRlbXYpOworICAgICAgICAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGl0ZW0tPnRleHQp
OworICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtOworICAgICAgICAgICAgfQorICAgICAgICB9
CiAgICAgfQogfTsKIApAQCAtMTQ1NCwzICsxNDcwLDczIEBAIHZvaWQgZXdrX3ZpZXdfY29udGVu
dHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRTaXpl
JiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6
ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9E
SVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CisKK3ZvaWQgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQb3B1cE1lbnVQ
cm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdyk7CisKKyAgICBBU1NFUlQocG9wdXBN
ZW51KTsKKworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYp
OworICAgIGlmIChwcml2LT5wb3B1cE1lbnVQcm94eSkKKyAgICAgICAgZXdrX3ZpZXdfcG9wdXBf
bWVudV9jbG9zZShld2tWaWV3KTsKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IHBvcHVwTWVu
dTsKKworICAgIEVpbmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7CisgICAgc2l6ZV90IHNpemUgPSBp
dGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgICAgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSA9IG5ldyBFd2tfUG9wdXBfTWVudV9JdGVt
OworICAgICAgICBpZiAoaXRlbXNbaV0ubV90eXBlID09IFdlYlBvcHVwSXRlbTo6U2VwYXJhdG9y
KSB7CisgICAgICAgICAgICBpdGVtLT50eXBlID0gRVdLX1BPUFVQX01FTlVfU0VQQVJBVE9SOwor
ICAgICAgICAgICAgaXRlbS0+dGV4dCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpdGVtLT50eXBlID0gRVdLX1BPUFVQX01FTlVfSVRFTTsKKyAgICAgICAgICAgIGl0ZW0tPnRl
eHQgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChpdGVtc1tpXS5tX3RleHQudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIH0KKworICAgICAgICBwb3B1cEl0ZW1zID0gZWluYV9saXN0X2FwcGVuZChwb3B1
cEl0ZW1zLCBpdGVtKTsKKyAgICB9CisgICAgcHJpdi0+cG9wdXBNZW51SXRlbXMgPSBwb3B1cEl0
ZW1zOworCisgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdyhzbWFydERhdGEsIHJl
Y3QsIHN0YXRpY19jYXN0PEV3a19UZXh0X0RpcmVjdGlvbj4odGV4dERpcmVjdGlvbiksIHBhZ2VT
Y2FsZUZhY3RvciwgcG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK0VpbmFfQm9vbCBl
d2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5wb3B1cE1lbnVQcm94eSwgZmFs
c2UpOworCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBp
LCBmYWxzZSk7CisgICAgaWYgKHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X2hpZGUpCisgICAg
ICAgIHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X2hpZGUoc21hcnREYXRhKTsKKworICAgIHZv
aWQqIGl0ZW12OworICAgIEVJTkFfTElTVF9GUkVFKHByaXYtPnBvcHVwTWVudUl0ZW1zLCBpdGVt
dikgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdr
X1BvcHVwX01lbnVfSXRlbSo+KGl0ZW12KTsKKyAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwo
aXRlbS0+dGV4dCk7CisgICAgICAgIGRlbGV0ZSBpdGVtOworICAgIH0KKworICAgIHByaXYtPnBv
cHVwTWVudVByb3h5ID0gMDsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGlu
dCBzZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChwcml2LT5wb3B1cE1lbnVQcm94eSwgZmFsc2UpOworCisgICAgaWYgKHNlbGVjdGVkSW5kZXgg
PiBlaW5hX2xpc3RfY291bnQocHJpdi0+cG9wdXBNZW51SXRlbXMpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eS0+dmFsdWVDaGFuZ2VkKHNlbGVjdGVk
SW5kZXgpOworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKaW5kZXggNDIzZjllMTQzMTgzMmIyNDBiOTI3N2E1OGQxNzBiZWEy
MzE3OTE2My4uZjgyZjExMDQxMTBmZTJjNzNhYjFkMzQxMWE5YjIwNjYwMDBmNmE1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC03Miw2ICs3Miw3
IEBACiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0LmgiCiAjaW5jbHVkZSAiZXdrX2Nv
bnRleHQuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdrX2Vu
dW1zLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVz
dC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKQEAgLTkxLDYgKzkyLDkgQEAgc3Ry
dWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoq
PCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQg
bG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9zaG93KShFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9u
IHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3IsIEVpbmFfTGlzdCogaXRl
bXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9oaWRl
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICAvLyBldmVudCBoYW5kbGluZzoKICAg
ICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxlZAogICAgIC8vICAtIGlmIG92ZXJyaWRkZW4s
IGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQKQEAgLTEwOCw3ICsxMTIsNyBA
QCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZl
IHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21h
cnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZF
UlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAKIC8q
KgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVy
ZS4KQEAgLTEyMCw3ICsxMjQsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAq
IEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3Nf
aW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdf
U21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTcyLDYgKzE3NiwxNyBAQCBzdHJ1Y3QgX0V3a19W
aWV3X1NtYXJ0X0RhdGEgewogICAgIH0gY2hhbmdlZDsKIH07CiAKKy8vLyBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX1BvcHVwX01lbnVfSXRlbS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfUG9w
dXBfTWVudV9JdGVtIEV3a19Qb3B1cF9NZW51X0l0ZW07CisKKy8qKgorICogQGJyaWVmIFN0cnVj
dHVyZSBjb250YWluaW5nIGRhdGEgb2YgZWFjaCBwb3B1cCBtZW51IGl0ZW0KKyAqLworc3RydWN0
IF9Fd2tfUG9wdXBfTWVudV9JdGVtIHsKKyAgICBjb25zdCBjaGFyICp0ZXh0OyAvKio8IFRleHQg
b2YgdGhlIGl0ZW0uICovCisgICAgRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIHR5cGU7IC8qKiBU
eXBlIG9mIHRoZSBpdGVtLiAqLworfTsKKwogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9F
d2tfV2ViX1Jlc291cmNlX1JlcXVlc3QuCiB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJj
ZV9SZXF1ZXN0IEV3a19XZWJfUmVzb3VyY2VfUmVxdWVzdDsKIApAQCAtNTkwLDYgKzYwNSwyNyBA
QCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3Rl
eHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisvKioKKyAqIFNlbGVj
dHMgaW5kZXggb2YgY3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgaXRlbSB0
byBzZWxlY3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVwIG1lbnUgaXMgbm90
IHNlbGVjdGVkIG9yIGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQSSBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBp
bmRleCk7CisKKy8qKgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkK
KyAqICAgICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8KK0VBUEkgRWluYV9C
b29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEzY2RmNmJkODdiYTg4
YTZiMWFmMTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4NzQ1ZThmYmZmNDkw
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19wcml2YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiArMzMsMTEgQEAgY2xh
c3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7Cit9CisKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBlZGVmIHN0
cnVjdCBfRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVx
dWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwpA
QCAtODksNCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21v
ZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19hY2Nl
bGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
OwogI2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNj
YWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50
MzJfdCBzZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lOGJmMjM2NmRmMzBmNGY0YTQzMzc2ZDk1MGU3YzA3MjNkNmVmMDEx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1
cE1lbnVQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVk
ZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2lu
Y2x1ZGUgImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1cE1lbnVQ
cm94eUVmbChFdmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCog
Y2xpZW50KQorICAgIDogV2ViUG9wdXBNZW51UHJveHkoY2xpZW50KQorICAgICwgbV93ZWJWaWV3
KHdlYlZpZXcpCit7Cit9CisKK1dlYlBvcHVwTWVudVByb3h5RWZsOjp+V2ViUG9wdXBNZW51UHJv
eHlFZmwoKQoreworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93UG9wdXBNZW51
KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91Ymxl
IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25z
dCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAg
ZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KG1fd2ViVmlldywgdGhpcywgcmVjdCwgdGV4dERp
cmVjdGlvbiwgcGFnZVNjYWxlRmFjdG9yLCBpdGVtcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK3Zv
aWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQb3B1cE1lbnUoKQoreworICAgIGV3a192aWV3
X3BvcHVwX21lbnVfY2xvc2UobV93ZWJWaWV3KTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94
eUVmbDo6dmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KQoreworICAgIG1fY2xpZW50
LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgbmV3U2VsZWN0ZWRJbmRleCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwYmVkMGIyMTUwYmI5YWJl
MGU0ZjIzOTIzNGRmYzI1MGNiZDgyNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9wdXBNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJQ
b3B1cE1lbnVQcm94eUVmbF9oCisKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgorCit0
eXBlZGVmIHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEludFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsIDogcHVibGljIFdlYlBv
cHVwTWVudVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eUVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94
eTo6Q2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YlBvcHVwTWVudVByb3h5RWZsKHdlYlZpZXcsIGNsaWVudCkpOworICAgIH0KKyAgICB+V2ViUG9w
dXBNZW51UHJveHlFZmwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNj
YWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9w
dXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGhp
ZGVQb3B1cE1lbnUoKTsKKworICAgIHZvaWQgdmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZElu
ZGV4KTsKKworcHJpdmF0ZToKKyAgICBXZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09iamVjdCos
IFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZp
ZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwTWVu
dVByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158206</attachid>
            <date>2012-08-13 21:38:56 -0700</date>
            <delta_ts>2012-08-13 22:36:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814133823.patch</filename>
            <type>text/plain</type>
            <size>18500</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTY3NjYwOTdkNzYzNDY5
YjQwOWQyYjMyNzVhMTVjNDZiYjhkYjBlYy4uMDc4MzAyYjc5ZGJlNGU2ODMwOWY5ZDU5Mjk5ZmQ1
YWQ1ZmRkMjM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTEzICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGE6Ol9Fd2tfVmlld19Q
cml2YXRlX0RhdGEpOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YTo6fl9Fd2tfVmll
d19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KTog
QWRkZWQgdG8gY2FsbCBwb3B1cF9tZW51X3Nob3csIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZSk6IEFkZGVkIEFQSSB0byBjYWxsIHBvcHVw
X21lbnVfaGlkZSwgc21hcnQgY2xhc3MgZnVuY3Rpb24uCisgICAgICAgIChld2tfdmlld19wb3B1
cF9tZW51X3NlbGVjdCk6IEFkZGVkIEFQSSB0byBjaGFuZ2Ugc2VsZWN0ZWQgaW5kZXguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgQWRkZWQgc21hcnQg
Y2xhc3MgZnVuY3Rpb24gZm9yIGFwcGxpY2F0aW9ucyB0byBvdmVycmlkZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldlYlBvcHVwTWVudVByb3h5RWZsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OnNob3dQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6aGlkZVBvcHVwTWVudSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJQb3B1cE1lbnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5
RWZsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTEzICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYWt1
Y29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkIGJvdCBmaXggYWZ0ZXIg
cjEyNTQ2Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMjIzYzMzZDBjNTQ2OTYxYjcw
NzdmYzYwZGYzM2VlYzA0Nzg3ZjYzMC4uYzAyYThjNGJhMDczYzBkMWI0NWRmNzA2NWQ0OGZiMWI3
ZTYzMTYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTc1LDYgKzc1LDcgQEAgTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCisgICAgVUlQcm9j
ZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlBy
ZWZlcmVuY2VzRWZsLmNwcAogCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclBy
b3h5U291cC5jcHAKQEAgLTEyNiw2ICsxMjcsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwL2VmbCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJ
VDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA3MjZjYWFhZTFhMWVmYTk2MzhkYjc3NDc2NzZiMDFh
MzFhMjFjNmI2Li5iYWNiZjMwMDA0M2YwMGZhZmZmMzk3YjE4NzJjMzlkMzI2NWFkNmZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwu
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgog
I2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMu
aCIKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKQEAgLTIwNCwxMCArMjA1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhU
b3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW4KIH0KICNl
bmRpZgogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkq
IHBhZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gV2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQog
CiBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVD
b250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggN2Q4YjFjZTA1NjQzMTU0OTNiNTEzZDExNTM1
MmQ5OWI0MGU1MWMxMi4uZWI1NWE1Y2UwZDk3NTJhYTI5Y2JlMjZkOGU3MDY0MThjYzdlMDQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAt
MzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2Fy
ZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3
a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTgyLDYgKzg0LDkgQEAgc3RydWN0IF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEgewogICAgIExvYWRpbmdSZXNvdXJjZXNNYXAgbG9hZGluZ1Jlc291cmNlc01h
cDsKICAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QqIGJhY2tGb3J3YXJkTGlzdDsKIAorICAgIFdl
YlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnVQcm94eTsKKyAgICBFaW5hX0xpc3QqIHBvcHVw
TWVudUl0ZW1zOworCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgYm9vbCBpc1VzaW5nRWNvcmVY
OwogI2VuZGlmCkBAIC0xMDAsNiArMTA1LDggQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEgewogICAgICAgICAsIGN1cnNvckdyb3VwKDApCiAgICAgICAgICwgY3Vyc29yT2JqZWN0KDAp
CiAgICAgICAgICwgYmFja0ZvcndhcmRMaXN0KDApCisgICAgICAgICwgcG9wdXBNZW51UHJveHko
MCkKKyAgICAgICAgLCBwb3B1cE1lbnVJdGVtcygwKQogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAg
ICAgICAsIGlzVXNpbmdFY29yZVgoZmFsc2UpCiAjZW5kaWYKQEAgLTEyMiw2ICsxMjksMTUgQEAg
c3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICAgICAgZXZhc19vYmplY3Rf
ZGVsKGN1cnNvck9iamVjdCk7CiAKICAgICAgICAgZXdrX2JhY2tfZm9yd2FyZF9saXN0X2ZyZWUo
YmFja0ZvcndhcmRMaXN0KTsKKworICAgICAgICBpZiAocG9wdXBNZW51SXRlbXMpIHsKKyAgICAg
ICAgICAgIHZvaWQqIGl0ZW12OworICAgICAgICAgICAgRUlOQV9MSVNUX0ZSRUUocG9wdXBNZW51
SXRlbXMsIGl0ZW12KSB7CisgICAgICAgICAgICAgICAgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRl
bSA9IHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtdik7CisgICAgICAgICAg
ICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaXRlbS0+dGV4dCk7CisgICAgICAgICAgICAgICAg
ZGVsZXRlIGl0ZW07CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiB9OwogCkBAIC0x
NDU0LDMgKzE0NzAsNzMgQEAgdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEludFNpemUmIHMKICAgICBwcml2LT52aWV3
cG9ydEhhbmRsZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbmRpZgogfQorCitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19M
RUZULCBSVEwpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJ
T05fTEVGVF9UT19SSUdIVCwgTFRSKTsKKwordm9pZCBld2tfdmlld19wb3B1cF9tZW51X3JlcXVl
c3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUs
IGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91Ymxl
IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQz
Ml90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0
YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+
cG9wdXBfbWVudV9zaG93KTsKKworICAgIEFTU0VSVChwb3B1cE1lbnUpOworCisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgaWYgKHByaXYtPnBv
cHVwTWVudVByb3h5KQorICAgICAgICBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKGV3a1ZpZXcp
OworICAgIHByaXYtPnBvcHVwTWVudVByb3h5ID0gcG9wdXBNZW51OworCisgICAgRWluYV9MaXN0
KiBwb3B1cEl0ZW1zID0gMDsKKyAgICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBFd2tfUG9wdXBfTWVu
dV9JdGVtKiBpdGVtID0gbmV3IEV3a19Qb3B1cF9NZW51X0l0ZW07CisgICAgICAgIGlmIChpdGVt
c1tpXS5tX3R5cGUgPT0gV2ViUG9wdXBJdGVtOjpTZXBhcmF0b3IpIHsKKyAgICAgICAgICAgIGl0
ZW0tPnR5cGUgPSBFV0tfUE9QVVBfTUVOVV9TRVBBUkFUT1I7CisgICAgICAgICAgICBpdGVtLT50
ZXh0ID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tf
UE9QVVBfTUVOVV9JVEVNOworICAgICAgICAgICAgaXRlbS0+dGV4dCA9IGVpbmFfc3RyaW5nc2hh
cmVfYWRkKGl0ZW1zW2ldLm1fdGV4dC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRlbXMsIGl0ZW0pOworICAg
IH0KKyAgICBwcml2LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7CisKKyAgICBzbWFydERh
dGEtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwgc3RhdGljX2Nhc3Q8RXdr
X1RleHRfRGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBwb3B1cEl0
ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVf
Y2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHByaXYtPnBvcHVwTWVudVByb3h5LCBmYWxzZSk7CisKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKKyAgICBpZiAo
c21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlkZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGkt
PnBvcHVwX21lbnVfaGlkZShzbWFydERhdGEpOworCisgICAgdm9pZCogaXRlbXY7CisgICAgRUlO
QV9MSVNUX0ZSRUUocHJpdi0+cG9wdXBNZW51SXRlbXMsIGl0ZW12KSB7CisgICAgICAgIEV3a19Q
b3B1cF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVudV9JdGVtKj4o
aXRlbXYpOworICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChpdGVtLT50ZXh0KTsKKyAgICAg
ICAgZGVsZXRlIGl0ZW07CisgICAgfQorCisgICAgcHJpdi0+cG9wdXBNZW51UHJveHkgPSAwOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X3Nl
bGVjdChFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQgaW50IHNlbGVjdGVkSW5kZXgpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPnBvcHVwTWVudVBy
b3h5LCBmYWxzZSk7CisKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IGVpbmFfbGlzdF9jb3VudChw
cml2LT5wb3B1cE1lbnVJdGVtcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHByaXYt
PnBvcHVwTWVudVByb3h5LT52YWx1ZUNoYW5nZWQoc2VsZWN0ZWRJbmRleCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApp
bmRleCA0MjNmOWUxNDMxODMyYjI0MGI5Mjc3YTU4ZDE3MGJlYTIzMTc5MTYzLi5kMjQ2OGJiMGQx
MTg5YTY5ZTBlMDEzYTdjMGMyODZhMTZlMDhmMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTgzLDYgKzgzLDEyIEBACiBleHRlcm4gIkMiIHsK
ICNlbmRpZgogCisvLy8gRW51bSB2YWx1ZXMgY29udGFpbmluZyB0ZXh0IGRpcmVjdGlvbmFsaXR5
IHZhbHVlcy4KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RP
X0xFRlQsCisgICAgRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQKK30gRXdrX1RleHRf
RGlyZWN0aW9uOworCiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmll
d19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19W
aWV3X1NtYXJ0X0NsYXNzOwogCkBAIC05MSw2ICs5Nyw5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21h
cnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScg
aXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwogICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKIAor
ICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IEVpbmFfUmVjdGFuZ2xlIHJlY3QsIEV3a19UZXh0X0RpcmVjdGlvbiB0ZXh0X2RpcmVjdGlvbiwg
ZG91YmxlIHBhZ2Vfc2NhbGVfZmFjdG9yLCBFaW5hX0xpc3QqIGl0ZW1zLCBpbnQgc2VsZWN0ZWRf
aW5kZXgpOworICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfaGlkZSkoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QpOworCiAgICAgLy8gZXZlbnQgaGFuZGxpbmc6CiAgICAgLy8gIC0gcmV0dXJucyB0
cnVlIGlmIGhhbmRsZWQKICAgICAvLyAgLSBpZiBvdmVycmlkZGVuLCBoYXZlIHRvIGNhbGwgcGFy
ZW50IG1ldGhvZCBpZiBkZXNpcmVkCkBAIC0xMDgsNyArMTE3LDcgQEAgc3RydWN0IF9Fd2tfVmll
d19TbWFydF9DbGFzcyB7CiAgKiBUaGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUg
dmVyc2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVy
ZS4KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDFVTAorI2RlZmlu
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDJVTAogCiAvKioKICAqIEluaXRpYWxpemVy
IGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xMjAsNyArMTI5
LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklU
X05BTUVfVkVSU0lPTgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21h
cnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZF
UlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8qKgog
ICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVj
dHVyZS4KQEAgLTE3Miw2ICsxODEsMjMgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsK
ICAgICB9IGNoYW5nZWQ7CiB9OwogCisvLy8gRW51bSB2YWx1ZXMgY29udGFpbmluZyB0eXBlIG9m
IHBvcHVwIGl0ZW0uCit0eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFSQVRP
UiwKKyAgICBFV0tfUE9QVVBfTUVOVV9JVEVNCit9IEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZTsK
KworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfUG9wdXBfTWVudV9JdGVtLgordHlw
ZWRlZiBzdHJ1Y3QgX0V3a19Qb3B1cF9NZW51X0l0ZW0gRXdrX1BvcHVwX01lbnVfSXRlbTsKKwor
LyoqCisgKiBAYnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGF0YSBvZiBlYWNoIHBvcHVwIG1l
bnUgaXRlbQorICovCitzdHJ1Y3QgX0V3a19Qb3B1cF9NZW51X0l0ZW0geworICAgIGNvbnN0IGNo
YXIgKnRleHQ7IC8qKjwgVGV4dCBvZiB0aGUgaXRlbS4gKi8KKyAgICBFd2tfUG9wdXBfTWVudV9J
dGVtX1R5cGUgdHlwZTsgLyoqIFR5cGUgb2YgdGhlIGl0ZW0uICovCit9OworCiAvLy8gQ3JlYXRl
cyBhIHR5cGUgbmFtZSBmb3IgX0V3a19XZWJfUmVzb3VyY2VfUmVxdWVzdC4KIHR5cGVkZWYgc3Ry
dWN0IF9Fd2tfV2ViX1Jlc291cmNlX1JlcXVlc3QgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0Owog
CkBAIC01OTAsNiArNjE2LDI3IEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZChF
dmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCwgRXdrX0ZpbmRfT3B0CiAqLwogRUFQSSBF
aW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihFdmFzX09iamVjdCAq
byk7CiAKKy8qKgorICogU2VsZWN0cyBpbmRleCBvZiBjdXJyZW50IHBvcHVwIG1lbnUuCisgKgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgY29udGFpbnMgcG9wdXAgbWVudS4KKyAqIEBwYXJhbSBp
bmRleCBpbmRleCBvZiBpdGVtIHRvIHNlbGVjdAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAgICAg
ICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQgb3IgaW5kZXggaXMgb3V0IG9mIHJhbmdlKQor
ICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdChFdmFzX09iamVj
dCAqbywgdW5zaWduZWQgaW50IGluZGV4KTsKKworLyoqCisgKiBDbG9zZXMgY3VycmVudCBwb3B1
cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUu
CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlIChwcm9iYWJseQorICogICAgICAgICBwb3B1cCBtZW51IGlzIG5vdCBzZWxlY3Rl
ZCkKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFzX09i
amVjdCAqbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggZjQw
Mjk4NTg3MTNjZGY2YmQ4N2JhODhhNmIxYWYxMzZhNzdjNGZmYi4uZGI4YWI2NmE2MWIxNGYxNjdk
YWNkZDVlOTg3NDVlOGZiZmY0OTBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjMsNyArMjMsOSBAQAogCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dERpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJzb3I7CkBA
IC0zMSw2ICszMywxMSBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIH0KIAorbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQb3B1cEl0ZW07CitjbGFzcyBXZWJQb3B1cE1lbnVQ
cm94eUVmbDsKK30KKwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2IgRXdrX0Rvd25s
b2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QgRXdr
X0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVz
dCBFd2tfVXJsX1JlcXVlc3Q7CkBAIC04OSw0ICs5Niw2IEBAIGJvb2wgZXdrX3ZpZXdfYWNjZWxl
cmF0ZWRfY29tcG9zaXRpbmdfbW9kZV9lbnRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7
CiBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZXhpdChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldyk7CiAjZW5kaWYKIAordm9pZCBld2tfdmlld19wb3B1cF9tZW51
X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlF
ZmwqIHBvcHVwTWVudSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJl
Y3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlBv
cHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworCiAjZW5kaWYgLy8gZXdr
X3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YmYyMzY2ZGYzMGY0ZjRhNDMz
NzZkOTUwZTdjMDcyM2Q2ZWYwMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVBy
b3h5RWZsLmgiCisKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAi
V2ViUG9wdXBJdGVtLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKyNpbmNsdWRlICJld2tfdmll
d19wcml2YXRlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUG9wdXBNZW51UHJv
eHlFZmw6OldlYlBvcHVwTWVudVByb3h5RWZsKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1
cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGll
bnQpCisgICAgLCBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKworV2ViUG9wdXBNZW51UHJveHlF
Zmw6On5XZWJQb3B1cE1lbnVQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJv
eHlFZmw6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0
ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCkKK3sKKyAgICBld2tfdmlld19wb3B1cF9tZW51X3JlcXVlc3QobV93ZWJWaWV3
LCB0aGlzLCByZWN0LCB0ZXh0RGlyZWN0aW9uLCBwYWdlU2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxl
Y3RlZEluZGV4KTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6aGlkZVBvcHVwTWVu
dSgpCit7CisgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShtX3dlYlZpZXcpOworfQorCit2
b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjp2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVjdGVkSW5k
ZXgpCit7CisgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBuZXdT
ZWxlY3RlZEluZGV4KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzBiZWQwYjIxNTBiYjlhYmUwZTRmMjM5MjM0ZGZjMjUwY2JkODI2ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwu
aApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94
eUVmbF9oCisjZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKworI2luY2x1ZGUgIldlYlBv
cHVwTWVudVByb3h5LmgiCisKK3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVj
dDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UmVjdDsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViUG9wdXBNZW51UHJv
eHlFZmwgOiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHdlYlZp
ZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJveHlFZmwod2ViVmlldywgY2xpZW50KSk7
CisgICAgfQorICAgIH5XZWJQb3B1cE1lbnVQcm94eUVmbCgpOworCisgICAgdmlydHVhbCB2b2lk
IHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJl
Y3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+
JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsK
KyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpOworCisgICAgdm9pZCB2YWx1ZUNoYW5n
ZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpOworCitwcml2YXRlOgorICAgIFdlYlBvcHVwTWVudVBy
b3h5RWZsKEV2YXNfT2JqZWN0KiwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCopOworCisgICAg
RXZhc19PYmplY3QqIG1fd2ViVmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158217</attachid>
            <date>2012-08-13 22:36:19 -0700</date>
            <delta_ts>2012-08-14 01:15:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814143546.patch</filename>
            <type>text/plain</type>
            <size>18459</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTY3NjYwOTdkNzYzNDY5
YjQwOWQyYjMyNzVhMTVjNDZiYjhkYjBlYy4uZDc1NGUxNDM3N2VkNGEyNzA2MTAxNWI4ZjYwYzJk
YzYxNDhiMDc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA4LTEzICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQ
cm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAg
ICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRl
X0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3BvcHVw
X21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBjbGFz
cyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRlZCBB
UEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAgICAg
ICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNlbGVj
dGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAg
ICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3ZlcnJp
ZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5RWZs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1lbnVQ
cm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93UG9w
dXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQb3B1
cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVDaGFu
Z2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0xMyAgUmFwaGFlbCBLdWJv
IGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdl
ZCBib3QgZml4IGFmdGVyIHIxMjU0NjcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDIy
M2MzM2QwYzU0Njk2MWI3MDc3ZmM2MGRmMzNlZWMwNDc4N2Y2MzAuLmMwMmE4YzRiYTA3M2MwZDFi
NDVkZjcwNjVkNDhmYjFiN2U2MzE2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03
NSw2ICs3NSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9l
ZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dl
Ykluc3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQ
cm9jZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dl
YkNvb2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCkBAIC0xMjYsNiArMTI3LDcgQEAgTElTVChBUFBF
TkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9l
ZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291
cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNzI2Y2FhYWUxYTFlZmE5
NjM4ZGI3NzQ3Njc2YjAxYTMxYTIxYzZiNi4uYmFjYmYzMDAwNDNmMDBmYWZmZjM5N2IxODcyYzM5
ZDMyNjVhZDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
UGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRl
eHRNZW51UHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCkBAIC0yMDQsMTAgKzIwNSw5IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9v
bCB3YXNFdmVuCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFn
ZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitQYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3V2lk
Z2V0LCBwYWdlKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDdkOGIxY2UwNTY0
MzE1NDkzYjUxM2QxMTUzNTJkOTliNDBlNTFjMTIuLjc2MGY2NmM3YThjNjRiMGFiNjhlODlkNzY0
ODk0YTNlNTM5MzQ3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgog
I2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tVUkwuaCIKKyNpbmNsdWRlICJXZWJQ
b3B1cEl0ZW0uaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUg
ImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQu
aCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCkBAIC04Miw2ICs4NCw5IEBAIHN0
cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBMb2FkaW5nUmVzb3VyY2VzTWFwIGxv
YWRpbmdSZXNvdXJjZXNNYXA7CiAgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBiYWNrRm9yd2Fy
ZExpc3Q7CiAKKyAgICBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51UHJveHk7CisgICAg
RWluYV9MaXN0KiBwb3B1cE1lbnVJdGVtczsKKwogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgIGJv
b2wgaXNVc2luZ0Vjb3JlWDsKICNlbmRpZgpAQCAtMTAwLDYgKzEwNSw4IEBAIHN0cnVjdCBfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgLCBjdXJzb3JHcm91cCgwKQogICAgICAgICAs
IGN1cnNvck9iamVjdCgwKQogICAgICAgICAsIGJhY2tGb3J3YXJkTGlzdCgwKQorICAgICAgICAs
IHBvcHVwTWVudVByb3h5KDApCisgICAgICAgICwgcG9wdXBNZW51SXRlbXMoMCkKICNpZmRlZiBI
QVZFX0VDT1JFX1gKICAgICAgICAgLCBpc1VzaW5nRWNvcmVYKGZhbHNlKQogI2VuZGlmCkBAIC0x
MjIsNiArMTI5LDE1IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAg
ICAgIGV2YXNfb2JqZWN0X2RlbChjdXJzb3JPYmplY3QpOwogCiAgICAgICAgIGV3a19iYWNrX2Zv
cndhcmRfbGlzdF9mcmVlKGJhY2tGb3J3YXJkTGlzdCk7CisKKyAgICAgICAgaWYgKHBvcHVwTWVu
dUl0ZW1zKSB7CisgICAgICAgICAgICB2b2lkKiBpdGVtdjsKKyAgICAgICAgICAgIEVJTkFfTElT
VF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtdikgeworICAgICAgICAgICAgICAgIEV3a19Qb3B1
cF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVudV9JdGVtKj4oaXRl
bXYpOworICAgICAgICAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGl0ZW0tPnRleHQpOwor
ICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfQogfTsKIApAQCAtMTQ1NCwzICsxNDcwLDczIEBAIHZvaWQgZXdrX3ZpZXdfY29udGVudHNf
c2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRTaXplJiBz
CiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7
CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJF
Q1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CisKK3ZvaWQgZXdrX3ZpZXdf
cG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94
eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHRE
aXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0
ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnRE
YXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdyk7CisKKyAgICBBU1NFUlQocG9wdXBNZW51KTsKKwor
ICAgIGlmIChwcml2LT5wb3B1cE1lbnVQcm94eSkKKyAgICAgICAgZXdrX3ZpZXdfcG9wdXBfbWVu
dV9jbG9zZShld2tWaWV3KTsKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IHBvcHVwTWVudTsK
KworICAgIEVpbmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7CisgICAgc2l6ZV90IHNpemUgPSBpdGVt
cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAg
ICAgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSA9IG5ldyBFd2tfUG9wdXBfTWVudV9JdGVtOwor
ICAgICAgICBpZiAoaXRlbXNbaV0ubV90eXBlID09IFdlYlBvcHVwSXRlbTo6U2VwYXJhdG9yKSB7
CisgICAgICAgICAgICBpdGVtLT50eXBlID0gRVdLX1BPUFVQX01FTlVfU0VQQVJBVE9SOworICAg
ICAgICAgICAgaXRlbS0+dGV4dCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
dGVtLT50eXBlID0gRVdLX1BPUFVQX01FTlVfSVRFTTsKKyAgICAgICAgICAgIGl0ZW0tPnRleHQg
PSBlaW5hX3N0cmluZ3NoYXJlX2FkZChpdGVtc1tpXS5tX3RleHQudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBwb3B1cEl0ZW1zID0gZWluYV9saXN0X2FwcGVuZChwb3B1cEl0
ZW1zLCBpdGVtKTsKKyAgICB9CisgICAgcHJpdi0+cG9wdXBNZW51SXRlbXMgPSBwb3B1cEl0ZW1z
OworCisgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdyhzbWFydERhdGEsIHJlY3Qs
IHN0YXRpY19jYXN0PEV3a19UZXh0X0RpcmVjdGlvbj4odGV4dERpcmVjdGlvbiksIHBhZ2VTY2Fs
ZUZhY3RvciwgcG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK0VpbmFfQm9vbCBld2tf
dmlld19wb3B1cF9tZW51X2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaSwgZmFsc2UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5wb3B1cE1lbnVQcm94eSwgZmFs
c2UpOworCisgICAgaWYgKHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X2hpZGUpCisgICAgICAg
IHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X2hpZGUoc21hcnREYXRhKTsKKworICAgIHZvaWQq
IGl0ZW12OworICAgIEVJTkFfTElTVF9GUkVFKHByaXYtPnBvcHVwTWVudUl0ZW1zLCBpdGVtdikg
eworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX1Bv
cHVwX01lbnVfSXRlbSo+KGl0ZW12KTsKKyAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaXRl
bS0+dGV4dCk7CisgICAgICAgIGRlbGV0ZSBpdGVtOworICAgIH0KKworICAgIHByaXYtPnBvcHVw
TWVudVByb3h5ID0gMDsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGludCBz
ZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChw
cml2LT5wb3B1cE1lbnVQcm94eSwgZmFsc2UpOworCisgICAgaWYgKHNlbGVjdGVkSW5kZXggPiBl
aW5hX2xpc3RfY291bnQocHJpdi0+cG9wdXBNZW51SXRlbXMpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eS0+dmFsdWVDaGFuZ2VkKHNlbGVjdGVkSW5k
ZXgpOworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmgKaW5kZXggNDIzZjllMTQzMTgzMmIyNDBiOTI3N2E1OGQxNzBiZWEyMzE3
OTE2My4uZDI0NjhiYjBkMTE4OWE2OWUwZTAxM2E3YzBjMjg2YTE2ZTA4ZjJlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC04Myw2ICs4MywxMiBA
QAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorLy8vIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdGV4
dCBkaXJlY3Rpb25hbGl0eSB2YWx1ZXMuCit0eXBlZGVmIGVudW0geworICAgIEVXS19URVhUX0RJ
UkVDVElPTl9SSUdIVF9UT19MRUZULAorICAgIEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJ
R0hUCit9IEV3a19UZXh0X0RpcmVjdGlvbjsKKwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19T
bWFydF9DbGFzcyBFd2tfVmlld19TbWFydF9DbGFzczsKIApAQCAtOTEsNiArOTcsOSBAQCBzdHJ1
Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8
IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KICAgICB1bnNpZ25lZCBs
b25nIHZlcnNpb247CiAKKyAgICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51X3Nob3cpKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX1JlY3RhbmdsZSByZWN0LCBFd2tfVGV4dF9EaXJlY3Rpb24g
dGV4dF9kaXJlY3Rpb24sIGRvdWJsZSBwYWdlX3NjYWxlX2ZhY3RvciwgRWluYV9MaXN0KiBpdGVt
cywgaW50IHNlbGVjdGVkX2luZGV4KTsKKyAgICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51X2hpZGUp
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKKwogICAgIC8vIGV2ZW50IGhhbmRsaW5nOgogICAg
IC8vICAtIHJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkCiAgICAgLy8gIC0gaWYgb3ZlcnJpZGRlbiwg
aGF2ZSB0byBjYWxsIHBhcmVudCBtZXRob2QgaWYgZGVzaXJlZApAQCAtMTA4LDcgKzExNyw3IEBA
IHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogVGhlIHZlcnNpb24geW91IGhhdmUg
dG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmllbGQKICAqIGluIHRoZSBAYSBFd2tfVmlld19TbWFy
dF9DbGFzcyBzdHJ1Y3R1cmUuCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTiAxVUwKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAyVUwKIAogLyoq
CiAgKiBJbml0aWFsaXplciBmb3Igd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJl
LgpAQCAtMTIwLDcgKzEyOSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICog
QHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklF
V19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19p
bml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19T
bWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xNzIsNiArMTgxLDIzIEBAIHN0cnVjdCBfRXdrX1Zp
ZXdfU21hcnRfRGF0YSB7CiAgICAgfSBjaGFuZ2VkOwogfTsKIAorLy8vIEVudW0gdmFsdWVzIGNv
bnRhaW5pbmcgdHlwZSBvZiBwb3B1cCBpdGVtLgordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfUE9Q
VVBfTUVOVV9TRVBBUkFUT1IsCisgICAgRVdLX1BPUFVQX01FTlVfSVRFTQorfSBFd2tfUG9wdXBf
TWVudV9JdGVtX1R5cGU7CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1BvcHVw
X01lbnVfSXRlbS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfUG9wdXBfTWVudV9JdGVtIEV3a19Qb3B1
cF9NZW51X0l0ZW07CisKKy8qKgorICogQGJyaWVmIFN0cnVjdHVyZSBjb250YWluaW5nIGRhdGEg
b2YgZWFjaCBwb3B1cCBtZW51IGl0ZW0KKyAqLworc3RydWN0IF9Fd2tfUG9wdXBfTWVudV9JdGVt
IHsKKyAgICBjb25zdCBjaGFyICp0ZXh0OyAvKio8IFRleHQgb2YgdGhlIGl0ZW0uICovCisgICAg
RXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIHR5cGU7IC8qKiBUeXBlIG9mIHRoZSBpdGVtLiAqLwor
fTsKKwogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfV2ViX1Jlc291cmNlX1JlcXVl
c3QuCiB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IEV3a19XZWJfUmVz
b3VyY2VfUmVxdWVzdDsKIApAQCAtNTkwLDYgKzYxNiwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tf
dmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5k
X09wdAogKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xl
YXIoRXZhc19PYmplY3QgKm8pOwogCisvKioKKyAqIFNlbGVjdHMgaW5kZXggb2YgY3VycmVudCBw
b3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1l
bnUuCisgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgaXRlbSB0byBzZWxlY3QKKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHBy
b2JhYmx5CisgKiAgICAgICAgIHBvcHVwIG1lbnUgaXMgbm90IHNlbGVjdGVkIG9yIGluZGV4IGlz
IG91dCBvZiByYW5nZSkKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9z
ZWxlY3QoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBpbmRleCk7CisKKy8qKgorICogQ2xv
c2VzIGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250
YWlucyBwb3B1cCBtZW51LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Ms
IEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAgICAgICAgcG9wdXAgbWVu
dSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21l
bnVfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJp
dmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEzY2RmNmJkODdiYTg4YTZiMWFmMTM2YTc3YzRmZmIuLmRi
OGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4NzQ1ZThmYmZmNDkwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIzLDcg
KzIzLDkgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEV2YXMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiArMzMsMTEgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIElu
dFNpemU7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xh
c3MgV2ViUG9wdXBNZW51UHJveHlFZmw7Cit9CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxv
YWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Zvcm1fU3VibWlz
c2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0
IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwpAQCAtODksNCArOTYsNiBAQCBib29s
IGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19P
YmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19t
b2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKK3ZvaWQgZXdr
X3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6Oldl
YlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0
b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsK
KwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGJm
MjM2NmRmMzBmNGY0YTQzMzc2ZDk1MGU3YzA3MjNkNmVmMDExCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisg
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVu
dC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisj
aW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09iamVjdCog
d2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50KQorICAgIDogV2ViUG9w
dXBNZW51UHJveHkoY2xpZW50KQorICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK1dl
YlBvcHVwTWVudVByb3h5RWZsOjp+V2ViUG9wdXBNZW51UHJveHlFZmwoKQoreworfQorCit2b2lk
IFdlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3Qs
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURh
dGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9y
ZXF1ZXN0KG1fd2ViVmlldywgdGhpcywgcmVjdCwgdGV4dERpcmVjdGlvbiwgcGFnZVNjYWxlRmFj
dG9yLCBpdGVtcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlF
Zmw6OmhpZGVQb3B1cE1lbnUoKQoreworICAgIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UobV93
ZWJWaWV3KTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVDaGFuZ2VkKGlu
dCBuZXdTZWxlY3RlZEluZGV4KQoreworICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1
cE1lbnUodGhpcywgbmV3U2VsZWN0ZWRJbmRleCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQ
cm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94
eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMwYmVkMGIyMTUwYmI5YWJlMGU0ZjIzOTIzNGRmYzI1MGNiZDgy
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBv
cHVwTWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViUG9wdXBNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCisK
KyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgorCit0eXBlZGVmIHN0cnVjdCBfRXZhc19P
YmplY3QgRXZhc19PYmplY3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFJlY3Q7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFdlYlBvcHVwTWVudVByb3h5RWZsIDogcHVibGljIFdlYlBvcHVwTWVudVByb3h5IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eUVmbD4gY3JlYXRlKEV2
YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudVByb3h5RWZsKHdl
YlZpZXcsIGNsaWVudCkpOworICAgIH0KKyAgICB+V2ViUG9wdXBNZW51UHJveHlFZmwoKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0
b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qg
c2VsZWN0ZWRJbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKKworICAg
IHZvaWQgdmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KTsKKworcHJpdmF0ZToKKyAg
ICBXZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09iamVjdCosIFdlYlBvcHVwTWVudVByb3h5OjpD
bGllbnQqKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwTWVudVByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158253</attachid>
            <date>2012-08-14 01:15:36 -0700</date>
            <delta_ts>2012-08-14 04:51:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814171502.patch</filename>
            <type>text/plain</type>
            <size>27757</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDYwNjBjYmY0ZDFiNTVi
NTRlYWVmMGIzYjhlZDRkYzg0ZmRiODBlYi4uYWZkMjk5OGI3OGM4OTlkODNjMmRlNDQzZDcwNzk3
MTQ2ZjNkZTZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA4LTE0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5
RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1l
bnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93
UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQ
b3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0xMyAgVG9tIFNlcGV6
ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlbGVhc2UgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjptX3BsdWdpbldpZGdldCByZWZwdHIgdXBvbiBQbHVnaW4gRG9j
dW1lbnQgZGV0YWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAyMjNjMzNkMGM1NDY5
NjFiNzA3N2ZjNjBkZjMzZWVjMDQ3ODdmNjMwLi45NzMyNTQyYmJhZmFlM2RiMDE0ODJjNTc4YjBj
MzNjYzlmMjMzZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNTUsNiArNTUsNyBA
QCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
aW50ZW50X3NlcnZpY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAor
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfcmVzcG9uc2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKQEAgLTc1LDYgKzc2LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAg
IFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94
eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogCiAgICAg
VUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKQEAgLTEyNiw2ICsx
MjgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvY3BwL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKQEAgLTIwNiw2
ICsyMDksNyBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oIgogICAgICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uaCIK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19u
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0
LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3Jlc3BvbnNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBkOTgwMjNkZTZlMGVmYTZkZTA3ZmM5
ZmI4YzIxNWQzOWNjNDg5ODdjLi5mMWMwOTBlZGJjNDI2ODkyYWM0OGJlOThmOGNiYzk2MDg2NGEz
MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0
Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2UuaCIKICNpbmNsdWRl
ICJld2tfbWFpbi5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5o
IgorI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfdXJsX3Jl
cXVlc3QuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDcyNmNhYWFlMWExZWZhOTYzOGRiNzc0NzY3
NmIwMWEzMWEyMWM2YjYuLmJhY2JmMzAwMDQzZjAwZmFmZmYzOTdiMTg3MmMzOWQzMjY1YWQ2ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlcy5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRf
cHJpdmF0ZS5oIgpAQCAtMjA0LDEwICsyMDUsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbgog
fQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJQb3B1
cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSogcGFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAg
IHJldHVybiBXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7
CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjYxOTMxYjMzNzE1OTk4ZTAyZGIzMmY0OGM4MjVjYTNkYjYwMDg4YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51
X2l0ZW0uY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgorCisjaW5jbHVkZSAiZXdrX3Bv
cHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCisKKy8qKgorICogXHN0cnVjdCAgX0V3a19Qb3B1cF9N
ZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBwb3B1cCBtZW51IGRhdGEuCisgKi8K
K3N0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSB7CisgICAgRXdrX1BvcHVwX01lbnVfSXRlbV9U
eXBlIHR5cGU7CisgICAgY29uc3QgY2hhciogdGV4dDsKKworICAgIF9Fd2tfUG9wdXBfTWVudV9J
dGVtKEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZSBfdHlwZSwgY29uc3QgY2hhciogX3RleHQpCisg
ICAgICAgIDogdHlwZShfdHlwZSkKKyAgICAgICAgLCB0ZXh0KGVpbmFfc3RyaW5nc2hhcmVfYWRk
KF90ZXh0KSkKKyAgICB7IH0KKworICAgIH5fRXdrX1BvcHVwX01lbnVfSXRlbSgpCisgICAgewor
ICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh0ZXh0KTsKKyAgICB9Cit9OworCisvKioKKyAq
IEBpbnRlcm5hbAorICogQ29uc3RydWN0cyBhIEV3a19Qb3B1cF9NZW51X0l0ZW0uCisgKi8KK0V3
a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19wb3B1cF9tZW51X2l0ZW1fbmV3KEV3a19Qb3B1cF9NZW51
X0l0ZW1fVHlwZSB0eXBlLCBjb25zdCBjaGFyKiB0ZXh0KQoreworICAgIHJldHVybiBuZXcgRXdr
X1BvcHVwX01lbnVfSXRlbSh0eXBlLCB0ZXh0KTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAq
IEZyZWVzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLwordm9pZCBld2tfcG9wdXBfbWVudV9p
dGVtX2ZyZWUoRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBkZWxldGUgaXRlbTsK
K30KKworRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9n
ZXQoY29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRVdLX1BPUFVQX01FTlVfVU5LTk9XTik7CisgICAgcmV0
dXJuIGl0ZW0tPnR5cGU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19wb3B1cF9tZW51X2l0ZW1fdGV4
dF9nZXQoY29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisgICAgcmV0dXJuIGl0ZW0tPnRleHQ7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBf
bWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBf
bWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk1NTM2NGE5OWY1MTQ5YjZjOGY5NzkwYmJmNWI1ZDZi
MWNkZjA1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAqIEBicmllZiAgIERlc2Ny
aWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfcG9w
dXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVfaXRlbV9oCisKKyNpbmNsdWRl
IDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
LyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1cCBtZW51IGl0ZW0uICovCit0
eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFSQVRPUiwKKyAgICBFV0tfUE9Q
VVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05PV04gPSAtMQorfSBFd2tfUG9w
dXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1Bv
cHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Qb3B1cF9NZW51X0l0ZW0gRXdr
X1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5cGUgb2YgdGhlIHBvcHVwIG1l
bnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAgbWVudSBpdGVtIGluc3RhbmNl
CisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRlbSBvciBAYyBFV0tfUE9QVVBf
TUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VBUEkgRXdrX1BvcHVwX01lbnVf
SXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0IG9mIHRoZSBwb3B1cCBtZW51
IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1lbnUgaXRlbSBpbnN0YW5jZQor
ICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0gb3IgQGMgTlVMTCBpbiBjYXNl
IG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBl
aW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlv
dXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAg
IHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciogZXdrX3BvcHVwX21lbnVfaXRlbV90ZXh0
X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKTsKKyAgICAKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVwX21lbnVfaXRlbV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9p
dGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1
cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyNGE0NGI0ZjM3MDU2YzNmYTcwZTJk
YzFlZTZkMTZlZGJhMWI3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaApAQCAtMCwwICsxLDI3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworRXdrX1BvcHVwX01lbnVfSXRlbSogZXdrX3BvcHVwX21lbnVfaXRl
bV9uZXcoRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRleHQpOwor
dm9pZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXgg
N2Q4YjFjZTA1NjQzMTU0OTNiNTEzZDExNTM1MmQ5OWI0MGU1MWMxMi4uZTg0ZmI1YjdiMGEwN2M5
MmMxMjY1Mzc4YjM2NTg2Mzk3Y2JhOTU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMzAsMTAgKzMwLDE0IEBACiAjaW5jbHVkZSAiV0tS
ZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVVJMLmgiCisj
aW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwu
aCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0u
aCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X2ZpbmRfY2xpZW50X3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJld2tfdmlld19mb3JtX2NsaWVudF9wcml2YXRlLmgiCkBAIC04Miw2ICs4Niw5
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBMb2FkaW5nUmVzb3VyY2Vz
TWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CiAgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBiYWNr
Rm9yd2FyZExpc3Q7CiAKKyAgICBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51UHJveHk7
CisgICAgRWluYV9MaXN0KiBwb3B1cE1lbnVJdGVtczsKKwogI2lmZGVmIEhBVkVfRUNPUkVfWAog
ICAgIGJvb2wgaXNVc2luZ0Vjb3JlWDsKICNlbmRpZgpAQCAtMTAwLDYgKzEwNyw4IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgLCBjdXJzb3JHcm91cCgwKQogICAg
ICAgICAsIGN1cnNvck9iamVjdCgwKQogICAgICAgICAsIGJhY2tGb3J3YXJkTGlzdCgwKQorICAg
ICAgICAsIHBvcHVwTWVudVByb3h5KDApCisgICAgICAgICwgcG9wdXBNZW51SXRlbXMoMCkKICNp
ZmRlZiBIQVZFX0VDT1JFX1gKICAgICAgICAgLCBpc1VzaW5nRWNvcmVYKGZhbHNlKQogI2VuZGlm
CkBAIC0xMjIsNiArMTMxLDEwIEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAg
ICAgICAgICAgIGV2YXNfb2JqZWN0X2RlbChjdXJzb3JPYmplY3QpOwogCiAgICAgICAgIGV3a19i
YWNrX2ZvcndhcmRfbGlzdF9mcmVlKGJhY2tGb3J3YXJkTGlzdCk7CisKKyAgICAgICAgdm9pZCog
aXRlbTsKKyAgICAgICAgRUlOQV9MSVNUX0ZSRUUocG9wdXBNZW51SXRlbXMsIGl0ZW0pCisgICAg
ICAgICAgICBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoc3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01l
bnVfSXRlbSo+KGl0ZW0pKTsKICAgICB9CiB9OwogCkBAIC0xNDU0LDMgKzE0NjcsNjYgQEAgdm9p
ZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IEludFNpemUmIHMKICAgICBwcml2LT52aWV3cG9ydEhhbmRsZXItPmRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbmRpZgogfQorCitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBSVEwpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgTFRS
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfU0VQQVJBVE9S
LCBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19QT1BVUF9NRU5VX0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKK3ZvaWQgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQb3B1cE1lbnVQ
cm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21h
cnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdyk7CisKKyAgICBBU1NFUlQocG9wdXBNZW51KTsK
KworICAgIGlmIChwcml2LT5wb3B1cE1lbnVQcm94eSkKKyAgICAgICAgZXdrX3ZpZXdfcG9wdXBf
bWVudV9jbG9zZShld2tWaWV3KTsKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IHBvcHVwTWVu
dTsKKworICAgIEVpbmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7CisgICAgc2l6ZV90IHNpemUgPSBp
dGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgICAgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSA9IGV3a19wb3B1cF9tZW51X2l0ZW1fbmV3
KHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4oaXRlbXNbaV0ubV90eXBlKSwg
aXRlbXNbaV0ubV90ZXh0LnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIHBvcHVwSXRlbXMgPSBl
aW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRlbXMsIGl0ZW0pOworICAgIH0KKyAgICBwcml2LT5wb3B1
cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7CisKKyAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVu
dV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwgc3RhdGljX2Nhc3Q8RXdrX1RleHRfRGlyZWN0aW9uPih0
ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBwb3B1cEl0ZW1zLCBzZWxlY3RlZEluZGV4
KTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+YXBpLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBy
aXYtPnBvcHVwTWVudVByb3h5LCBmYWxzZSk7CisKKyAgICBpZiAoc21hcnREYXRhLT5hcGktPnBv
cHVwX21lbnVfaGlkZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlkZShz
bWFydERhdGEpOworCisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJFRShwcml2LT5w
b3B1cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0
YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7CisKKyAgICBwcml2LT5wb3B1
cE1lbnVQcm94eSA9IDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a192
aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQg
c2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
cHJpdi0+cG9wdXBNZW51UHJveHksIGZhbHNlKTsKKworICAgIGlmIChzZWxlY3RlZEluZGV4ID49
IGVpbmFfbGlzdF9jb3VudChwcml2LT5wb3B1cE1lbnVJdGVtcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5LT52YWx1ZUNoYW5nZWQoc2VsZWN0ZWRJ
bmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDQyM2Y5ZTE0MzE4MzJiMjQwYjkyNzdhNThkMTcwYmVh
MjMxNzkxNjMuLjY1MDM0ZDM3Y2E4ZjFkMzc5MjVkM2UxNmI5NWQ3NDQyMjNhZGYyYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtODMsNiArODMs
MTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8vLyBFbnVtIHZhbHVlcyBjb250YWluaW5n
IHRleHQgZGlyZWN0aW9uYWxpdHkgdmFsdWVzLgordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfVEVY
VF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9U
T19SSUdIVAorfSBFd2tfVGV4dF9EaXJlY3Rpb247CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmll
d19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiAKQEAgLTkxLDYgKzk3LDkgQEAg
c3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsg
LyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCiAgICAgdW5zaWdu
ZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9zaG93KShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0
aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3IsIEVpbmFfTGlzdCAq
aXRlbXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9o
aWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICAvLyBldmVudCBoYW5kbGluZzoK
ICAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxlZAogICAgIC8vICAtIGlmIG92ZXJyaWRk
ZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQKQEAgLTEwOCw3ICsxMTcs
NyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIFRoZSB2ZXJzaW9uIHlvdSBo
YXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdf
U21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNT
X1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAK
IC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVj
dHVyZS4KQEAgLTEyMCw3ICsxMjksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsK
ICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZp
bmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xh
c3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkwLDYgKzU5OSwyNyBAQCBFQVBJIEVpbmFf
Qm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQs
IEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZF9oaWdo
bGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisvKioKKyAqIFNlbGVjdHMgaW5kZXggb2Yg
Y3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5z
IHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgaXRlbSB0byBzZWxlY3QKKyAq
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZh
aWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVwIG1lbnUgaXMgbm90IHNlbGVjdGVkIG9y
IGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9w
dXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBpbmRleCk7CisKKy8q
KgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAgICAgICAg
cG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3
X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEzY2RmNmJkODdiYTg4YTZiMWFmMTM2YTc3
YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4NzQ1ZThmYmZmNDkwYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
QEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
PEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiArMzMsMTEgQEAgY2xhc3MgSW50UmVjdDsK
IGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUG9wdXBJ
dGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7Cit9CisKIHR5cGVkZWYgc3RydWN0IF9F
d2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Zv
cm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwpAQCAtODksNCArOTYs
NiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZW50ZXIoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21w
b3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAK
K3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBX
ZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBj
b25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3Rl
ZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZjBiMzdkNjdkZTU2MWU2NDlkMzk2ZTBjM2ZiMzRlZDI5MGY4MWQzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVm
bC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVkZSAiTmF0aXZlV2Vi
TW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgImV3a192
aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBNZW51UHJveHlFZmwoRXZhc19P
YmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkKKyAgICA6
IFdlYlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQorewor
fQorCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldlYlBvcHVwTWVudVByb3h5RWZsKCkKK3sKK30K
Kwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0
JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0
b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGV3a192aWV3X3BvcHVw
X21lbnVfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIHJlY3QsIHRleHREaXJlY3Rpb24sIHBhZ2VT
Y2FsZUZhY3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFdlYlBvcHVwTWVu
dVByb3h5RWZsOjpoaWRlUG9wdXBNZW51KCkKK3sKKyAgICBld2tfdmlld19wb3B1cF9tZW51X2Ns
b3NlKG1fd2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OnZhbHVlQ2hh
bmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2Vk
Rm9yUG9wdXBNZW51KHRoaXMsIG5ld1NlbGVjdGVkSW5kZXgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9w
dXBNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBN
ZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGJlZDBiMjE1MGJiOWFiZTBlNGYyMzkyMzRkZmMy
NTBjYmQ4MjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViUG9wdXBNZW51UHJveHlF
ZmxfaAorCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKKwordHlwZWRlZiBzdHJ1Y3Qg
X0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJ
bnRSZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5Owor
CitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlFZmw+IGNy
ZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xp
ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94
eUVmbCh3ZWJWaWV3LCBjbGllbnQpKTsKKyAgICB9CisgICAgfldlYlBvcHVwTWVudVByb3h5RWZs
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBp
bnQzMl90IHNlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBNZW51KCk7
CisKKyAgICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCk7CisKK3ByaXZh
dGU6CisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJQb3B1cE1lbnVQ
cm94eTo6Q2xpZW50Kik7CisKKyAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158254</attachid>
            <date>2012-08-14 01:19:17 -0700</date>
            <delta_ts>2012-08-14 01:51:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814171844.patch</filename>
            <type>text/plain</type>
            <size>27880</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDYwNjBjYmY0ZDFiNTVi
NTRlYWVmMGIzYjhlZDRkYzg0ZmRiODBlYi4uYWZkMjk5OGI3OGM4OTlkODNjMmRlNDQzZDcwNzk3
MTQ2ZjNkZTZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA4LTE0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5
RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1l
bnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93
UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQ
b3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0xMyAgVG9tIFNlcGV6
ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlbGVhc2UgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjptX3BsdWdpbldpZGdldCByZWZwdHIgdXBvbiBQbHVnaW4gRG9j
dW1lbnQgZGV0YWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAyMjNjMzNkMGM1NDY5
NjFiNzA3N2ZjNjBkZjMzZWVjMDQ3ODdmNjMwLi45NzMyNTQyYmJhZmFlM2RiMDE0ODJjNTc4YjBj
MzNjYzlmMjMzZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNTUsNiArNTUsNyBA
QCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
aW50ZW50X3NlcnZpY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAor
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfcmVzcG9uc2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKQEAgLTc1LDYgKzc2LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAg
IFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94
eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogCiAgICAg
VUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKQEAgLTEyNiw2ICsx
MjgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvY3BwL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKQEAgLTIwNiw2
ICsyMDksNyBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oIgogICAgICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uaCIK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19u
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0
LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3Jlc3BvbnNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBkOTgwMjNkZTZlMGVmYTZkZTA3ZmM5
ZmI4YzIxNWQzOWNjNDg5ODdjLi5mMWMwOTBlZGJjNDI2ODkyYWM0OGJlOThmOGNiYzk2MDg2NGEz
MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0
Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2UuaCIKICNpbmNsdWRl
ICJld2tfbWFpbi5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5o
IgorI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfdXJsX3Jl
cXVlc3QuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDcyNmNhYWFlMWExZWZhOTYzOGRiNzc0NzY3
NmIwMWEzMWEyMWM2YjYuLmJhY2JmMzAwMDQzZjAwZmFmZmYzOTdiMTg3MmMzOWQzMjY1YWQ2ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlcy5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRf
cHJpdmF0ZS5oIgpAQCAtMjA0LDEwICsyMDUsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbgog
fQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJQb3B1
cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSogcGFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAg
IHJldHVybiBXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7
CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjYxOTMxYjMzNzE1OTk4ZTAyZGIzMmY0OGM4MjVjYTNkYjYwMDg4YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51
X2l0ZW0uY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgorCisjaW5jbHVkZSAiZXdrX3Bv
cHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCisKKy8qKgorICogXHN0cnVjdCAgX0V3a19Qb3B1cF9N
ZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBwb3B1cCBtZW51IGRhdGEuCisgKi8K
K3N0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSB7CisgICAgRXdrX1BvcHVwX01lbnVfSXRlbV9U
eXBlIHR5cGU7CisgICAgY29uc3QgY2hhciogdGV4dDsKKworICAgIF9Fd2tfUG9wdXBfTWVudV9J
dGVtKEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZSBfdHlwZSwgY29uc3QgY2hhciogX3RleHQpCisg
ICAgICAgIDogdHlwZShfdHlwZSkKKyAgICAgICAgLCB0ZXh0KGVpbmFfc3RyaW5nc2hhcmVfYWRk
KF90ZXh0KSkKKyAgICB7IH0KKworICAgIH5fRXdrX1BvcHVwX01lbnVfSXRlbSgpCisgICAgewor
ICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh0ZXh0KTsKKyAgICB9Cit9OworCisvKioKKyAq
IEBpbnRlcm5hbAorICogQ29uc3RydWN0cyBhIEV3a19Qb3B1cF9NZW51X0l0ZW0uCisgKi8KK0V3
a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19wb3B1cF9tZW51X2l0ZW1fbmV3KEV3a19Qb3B1cF9NZW51
X0l0ZW1fVHlwZSB0eXBlLCBjb25zdCBjaGFyKiB0ZXh0KQoreworICAgIHJldHVybiBuZXcgRXdr
X1BvcHVwX01lbnVfSXRlbSh0eXBlLCB0ZXh0KTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAq
IEZyZWVzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLwordm9pZCBld2tfcG9wdXBfbWVudV9p
dGVtX2ZyZWUoRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBkZWxldGUgaXRlbTsK
K30KKworRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9n
ZXQoY29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRVdLX1BPUFVQX01FTlVfVU5LTk9XTik7CisgICAgcmV0
dXJuIGl0ZW0tPnR5cGU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19wb3B1cF9tZW51X2l0ZW1fdGV4
dF9nZXQoY29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisgICAgcmV0dXJuIGl0ZW0tPnRleHQ7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBf
bWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBf
bWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk1NTM2NGE5OWY1MTQ5YjZjOGY5NzkwYmJmNWI1ZDZi
MWNkZjA1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAqIEBicmllZiAgIERlc2Ny
aWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfcG9w
dXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVfaXRlbV9oCisKKyNpbmNsdWRl
IDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
LyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1cCBtZW51IGl0ZW0uICovCit0
eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFSQVRPUiwKKyAgICBFV0tfUE9Q
VVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05PV04gPSAtMQorfSBFd2tfUG9w
dXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1Bv
cHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Qb3B1cF9NZW51X0l0ZW0gRXdr
X1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5cGUgb2YgdGhlIHBvcHVwIG1l
bnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAgbWVudSBpdGVtIGluc3RhbmNl
CisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRlbSBvciBAYyBFV0tfUE9QVVBf
TUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VBUEkgRXdrX1BvcHVwX01lbnVf
SXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0IG9mIHRoZSBwb3B1cCBtZW51
IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1lbnUgaXRlbSBpbnN0YW5jZQor
ICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0gb3IgQGMgTlVMTCBpbiBjYXNl
IG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBl
aW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlv
dXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAg
IHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciogZXdrX3BvcHVwX21lbnVfaXRlbV90ZXh0
X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKTsKKyAgICAKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVwX21lbnVfaXRlbV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9p
dGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1
cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5N2M2MzdiYjdkNDkwM2NmYWUxMjJk
MzRiNTUxODA3N2NkOWY0NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaApAQCAtMCwwICsxLDMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAor
I2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAorCitFd2tfUG9wdXBfTWVudV9J
dGVtKiBld2tfcG9wdXBfbWVudV9pdGVtX25ldyhFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgdHlw
ZSwgY29uc3QgY2hhciogdGV4dCk7Cit2b2lkIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShFd2tf
UG9wdXBfTWVudV9JdGVtKiBpdGVtKTsKKworI2VuZGlmIC8vIGV3a19wb3B1cF9tZW51X2l0ZW1f
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKaW5kZXggN2Q4YjFjZTA1NjQzMTU0OTNiNTEzZDExNTM1MmQ5OWI0MGU1MWMxMi4uZTg0ZmI1
YjdiMGEwN2M5MmMxMjY1Mzc4YjM2NTg2Mzk3Y2JhOTU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMzAsMTAgKzMwLDE0IEBACiAjaW5j
bHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldL
VVJMLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51
UHJveHlFZmwuaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wb3B1cF9t
ZW51X2l0ZW0uaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X2ZpbmRfY2xpZW50X3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19mb3JtX2NsaWVudF9wcml2YXRlLmgiCkBAIC04
Miw2ICs4Niw5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBMb2FkaW5n
UmVzb3VyY2VzTWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CiAgICAgRXdrX0JhY2tfRm9yd2FyZF9M
aXN0KiBiYWNrRm9yd2FyZExpc3Q7CiAKKyAgICBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBN
ZW51UHJveHk7CisgICAgRWluYV9MaXN0KiBwb3B1cE1lbnVJdGVtczsKKwogI2lmZGVmIEhBVkVf
RUNPUkVfWAogICAgIGJvb2wgaXNVc2luZ0Vjb3JlWDsKICNlbmRpZgpAQCAtMTAwLDYgKzEwNyw4
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgLCBjdXJzb3JHcm91
cCgwKQogICAgICAgICAsIGN1cnNvck9iamVjdCgwKQogICAgICAgICAsIGJhY2tGb3J3YXJkTGlz
dCgwKQorICAgICAgICAsIHBvcHVwTWVudVByb3h5KDApCisgICAgICAgICwgcG9wdXBNZW51SXRl
bXMoMCkKICNpZmRlZiBIQVZFX0VDT1JFX1gKICAgICAgICAgLCBpc1VzaW5nRWNvcmVYKGZhbHNl
KQogI2VuZGlmCkBAIC0xMjIsNiArMTMxLDEwIEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhIHsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2RlbChjdXJzb3JPYmplY3QpOwogCiAgICAg
ICAgIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9mcmVlKGJhY2tGb3J3YXJkTGlzdCk7CisKKyAgICAg
ICAgdm9pZCogaXRlbTsKKyAgICAgICAgRUlOQV9MSVNUX0ZSRUUocG9wdXBNZW51SXRlbXMsIGl0
ZW0pCisgICAgICAgICAgICBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoc3RhdGljX2Nhc3Q8RXdr
X1BvcHVwX01lbnVfSXRlbSo+KGl0ZW0pKTsKICAgICB9CiB9OwogCkBAIC0xNDU0LDMgKzE0Njcs
NjYgQEAgdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGNvbnN0IEludFNpemUmIHMKICAgICBwcml2LT52aWV3cG9ydEhhbmRsZXIt
PmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbmRpZgogfQorCitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBSVEwpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19S
SUdIVCwgTFRSKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVf
U0VQQVJBVE9SLCBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19QT1BVUF9NRU5VX0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKK3Zv
aWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQ
b3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGly
ZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3Rv
cjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdyk7CisKKyAgICBBU1NFUlQocG9w
dXBNZW51KTsKKworICAgIGlmIChwcml2LT5wb3B1cE1lbnVQcm94eSkKKyAgICAgICAgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9jbG9zZShld2tWaWV3KTsKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eSA9
IHBvcHVwTWVudTsKKworICAgIEVpbmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7CisgICAgc2l6ZV90
IHNpemUgPSBpdGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSA9IGV3a19wb3B1cF9tZW51
X2l0ZW1fbmV3KHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4oaXRlbXNbaV0u
bV90eXBlKSwgaXRlbXNbaV0ubV90ZXh0LnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIHBvcHVw
SXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRlbXMsIGl0ZW0pOworICAgIH0KKyAgICBw
cml2LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7CisKKyAgICBzbWFydERhdGEtPmFwaS0+
cG9wdXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwgc3RhdGljX2Nhc3Q8RXdrX1RleHRfRGly
ZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBwb3B1cEl0ZW1zLCBzZWxl
Y3RlZEluZGV4KTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZh
c19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHByaXYtPnBvcHVwTWVudVByb3h5LCBmYWxzZSk7CisKKyAgICBpZiAoc21hcnREYXRh
LT5hcGktPnBvcHVwX21lbnVfaGlkZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21l
bnVfaGlkZShzbWFydERhdGEpOworCisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJF
RShwcml2LT5wb3B1cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRl
bV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7CisKKyAgICBw
cml2LT5wb3B1cE1lbnVQcm94eSA9IDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9C
b29sIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNp
Z25lZCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZhbHNlKTsKKworICAgIGlmIChzZWxlY3Rl
ZEluZGV4ID49IGVpbmFfbGlzdF9jb3VudChwcml2LT5wb3B1cE1lbnVJdGVtcykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5LT52YWx1ZUNoYW5nZWQo
c2VsZWN0ZWRJbmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDQyM2Y5ZTE0MzE4MzJiMjQwYjkyNzdh
NThkMTcwYmVhMjMxNzkxNjMuLjY1MDM0ZDM3Y2E4ZjFkMzc5MjVkM2UxNmI5NWQ3NDQyMjNhZGYy
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAt
ODMsNiArODMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8vLyBFbnVtIHZhbHVlcyBj
b250YWluaW5nIHRleHQgZGlyZWN0aW9uYWxpdHkgdmFsdWVzLgordHlwZWRlZiBlbnVtIHsKKyAg
ICBFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfVEVYVF9ESVJFQ1RJ
T05fTEVGVF9UT19SSUdIVAorfSBFd2tfVGV4dF9EaXJlY3Rpb247CisKIHR5cGVkZWYgc3RydWN0
IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBlZGVmIHN0cnVj
dCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiAKQEAgLTkxLDYg
Kzk3LDkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZhc19TbWFydF9D
bGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCiAg
ICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9z
aG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdrX1Rl
eHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3IsIEVp
bmFfTGlzdCAqaXRlbXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAgRWluYV9Cb29sICgqcG9w
dXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICAvLyBldmVudCBo
YW5kbGluZzoKICAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxlZAogICAgIC8vICAtIGlm
IG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQKQEAgLTEw
OCw3ICsxMTcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIFRoZSB2ZXJz
aW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEg
RXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04gMlVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsxMjksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBA
c2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3Nf
aW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7
c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hv
bGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkwLDYgKzU5OSwyNyBAQCBF
QVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNo
YXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRf
ZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisvKioKKyAqIFNlbGVjdHMg
aW5kZXggb2YgY3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgaXRlbSB0byBz
ZWxlY3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVwIG1lbnUgaXMgbm90IHNl
bGVjdGVkIG9yIGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdr
X3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBpbmRl
eCk7CisKKy8qKgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisgKiBAcGFyYW0g
byB2aWV3IG9iamVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAq
ICAgICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8KK0VBUEkgRWluYV9Cb29s
IGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEzY2RmNmJkODdiYTg4YTZi
MWFmMTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4NzQ1ZThmYmZmNDkwYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgog
I2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiArMzMsMTEgQEAgY2xhc3Mg
SW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
V2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7Cit9CisKIHR5cGVkZWYg
c3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBlZGVmIHN0cnVj
dCBfRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVz
dDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwpAQCAt
ODksNCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVf
ZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19hY2NlbGVy
YXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwog
I2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxl
RmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJf
dCBzZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZjBiMzdkNjdkZTU2MWU2NDlkMzk2ZTBjM2ZiMzRlZDI5MGY4MWQzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1l
bnVQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVkZSAi
TmF0aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1
ZGUgImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBNZW51UHJveHlF
ZmwoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVu
dCkKKyAgICA6IFdlYlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fd2ViVmlldyh3ZWJW
aWV3KQoreworfQorCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldlYlBvcHVwTWVudVByb3h5RWZs
KCkKK3sKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1BvcHVwTWVudShjb25z
dCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdl
U2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGV3a192
aWV3X3BvcHVwX21lbnVfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIHJlY3QsIHRleHREaXJlY3Rp
b24sIHBhZ2VTY2FsZUZhY3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFdl
YlBvcHVwTWVudVByb3h5RWZsOjpoaWRlUG9wdXBNZW51KCkKK3sKKyAgICBld2tfdmlld19wb3B1
cF9tZW51X2Nsb3NlKG1fd2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6
OnZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2NsaWVudC0+dmFs
dWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG5ld1NlbGVjdGVkSW5kZXgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUG9wdXBNZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGJlZDBiMjE1MGJiOWFiZTBlNGYy
MzkyMzRkZmMyNTBjYmQ4MjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViUG9wdXBN
ZW51UHJveHlFZmxfaAorCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKKwordHlwZWRl
ZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFn
ZVByb3h5OworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1YmxpYyBXZWJQb3B1cE1l
bnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJv
eHlFZmw+IGNyZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNs
aWVudCogY2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1
cE1lbnVQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQpKTsKKyAgICB9CisgICAgfldlYlBvcHVwTWVu
dVByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZh
Y3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9w
dXBNZW51KCk7CisKKyAgICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCk7
CisKK3ByaXZhdGU6CisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJQ
b3B1cE1lbnVQcm94eTo6Q2xpZW50Kik7CisKKyAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94
eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158261</attachid>
            <date>2012-08-14 01:51:40 -0700</date>
            <delta_ts>2012-08-14 04:51:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814175107.patch</filename>
            <type>text/plain</type>
            <size>28003</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDYwNjBjYmY0ZDFiNTVi
NTRlYWVmMGIzYjhlZDRkYzg0ZmRiODBlYi4uYWZkMjk5OGI3OGM4OTlkODNjMmRlNDQzZDcwNzk3
MTQ2ZjNkZTZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA4LTE0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5
RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1l
bnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93
UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQ
b3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0xMyAgVG9tIFNlcGV6
ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlbGVhc2UgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjptX3BsdWdpbldpZGdldCByZWZwdHIgdXBvbiBQbHVnaW4gRG9j
dW1lbnQgZGV0YWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAyMjNjMzNkMGM1NDY5
NjFiNzA3N2ZjNjBkZjMzZWVjMDQ3ODdmNjMwLi45NzMyNTQyYmJhZmFlM2RiMDE0ODJjNTc4YjBj
MzNjYzlmMjMzZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNTUsNiArNTUsNyBA
QCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
aW50ZW50X3NlcnZpY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAor
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfcmVzcG9uc2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKQEAgLTc1LDYgKzc2LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAg
IFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94
eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogCiAgICAg
VUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKQEAgLTEyNiw2ICsx
MjgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvY3BwL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKQEAgLTIwNiw2
ICsyMDksNyBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oIgogICAgICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uaCIK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19u
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0
LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3Jlc3BvbnNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBkOTgwMjNkZTZlMGVmYTZkZTA3ZmM5
ZmI4YzIxNWQzOWNjNDg5ODdjLi5mMWMwOTBlZGJjNDI2ODkyYWM0OGJlOThmOGNiYzk2MDg2NGEz
MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0
Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2UuaCIKICNpbmNsdWRl
ICJld2tfbWFpbi5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5o
IgorI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfdXJsX3Jl
cXVlc3QuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDcyNmNhYWFlMWExZWZhOTYzOGRiNzc0NzY3
NmIwMWEzMWEyMWM2YjYuLmJhY2JmMzAwMDQzZjAwZmFmZmYzOTdiMTg3MmMzOWQzMjY1YWQ2ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlcy5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRf
cHJpdmF0ZS5oIgpAQCAtMjA0LDEwICsyMDUsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbgog
fQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJQb3B1
cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSogcGFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAg
IHJldHVybiBXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7
CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzMwZDhkZmU2M2MzZjEzMjhlNmE4NDYzMTE2NzhhMzBkYWY5OGRiNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51
X2l0ZW0uY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgorCisjaW5jbHVkZSAiZXdrX3Bv
cHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBcc3RydWN0ICBfRXdrX1BvcHVwX01lbnVf
SXRlbQorICogQGJyaWVmICAgQ29udGFpbnMgdGhlIHBvcHVwIG1lbnUgZGF0YS4KKyAqLworc3Ry
dWN0IF9Fd2tfUG9wdXBfTWVudV9JdGVtIHsKKyAgICBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUg
dHlwZTsKKyAgICBjb25zdCBjaGFyKiB0ZXh0OworCisgICAgX0V3a19Qb3B1cF9NZW51X0l0ZW0o
RXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIF90eXBlLCBjb25zdCBjaGFyKiBfdGV4dCkKKyAgICAg
ICAgOiB0eXBlKF90eXBlKQorICAgICAgICAsIHRleHQoZWluYV9zdHJpbmdzaGFyZV9hZGQoX3Rl
eHQpKQorICAgIHsgfQorCisgICAgfl9Fd2tfUG9wdXBfTWVudV9JdGVtKCkKKyAgICB7CisgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHRleHQpOworICAgIH0KK307CisKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfU0VQQVJBVE9SLCBXZWJQb3B1cEl0ZW06
OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QT1BVUF9NRU5V
X0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKKy8qKgorICogQGludGVybmFsCisgKiBDb25z
dHJ1Y3RzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLworRXdrX1BvcHVwX01lbnVfSXRlbSog
ZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcoV2ViUG9wdXBJdGVtOjpUeXBlIHR5cGUsIGNvbnN0IGNo
YXIqIHRleHQpCit7CisgICAgcmV0dXJuIG5ldyBFd2tfUG9wdXBfTWVudV9JdGVtKHN0YXRpY19j
YXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4odHlwZSksIHRleHQpOworfQorCisvKioKKyAq
IEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfUG9wdXBfTWVudV9JdGVtLgorICovCit2b2lkIGV3
a19wb3B1cF9tZW51X2l0ZW1fZnJlZShFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOworICAgIGRlbGV0ZSBpdGVtOworfQor
CitFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgZXdrX3BvcHVwX21lbnVfaXRlbV90eXBlX2dldChj
b25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfUE9QVVBfTUVOVV9VTktOT1dOKTsKKworICAgIHJldHVy
biBpdGVtLT50eXBlOworfQorCitjb25zdCBjaGFyKiBld2tfcG9wdXBfbWVudV9pdGVtX3RleHRf
Z2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisgICAgcmV0dXJuIGl0ZW0tPnRleHQ7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBf
bWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBf
bWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFiNGQ3YjJiZDJlMjIxZDE4YWViNTdmYmRlNzc5YjU4
NmZmYWE2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAqIEBicmllZiAgIERlc2Ny
aWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfcG9w
dXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVfaXRlbV9oCisKKyNpbmNsdWRl
IDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
LyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1cCBtZW51IGl0ZW0uICovCit0
eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFSQVRPUiwKKyAgICBFV0tfUE9Q
VVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05PV04gPSAtMQorfSBFd2tfUG9w
dXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1Bv
cHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Qb3B1cF9NZW51X0l0ZW0gRXdr
X1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5cGUgb2YgdGhlIHBvcHVwIG1l
bnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAgbWVudSBpdGVtIGluc3RhbmNl
CisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRlbSBvciBAYyBFV0tfUE9QVVBf
TUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VBUEkgRXdrX1BvcHVwX01lbnVf
SXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX1BvcHVwX01l
bnVfSXRlbSAqaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0IG9mIHRoZSBwb3B1cCBtZW51
IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1lbnUgaXRlbSBpbnN0YW5jZQor
ICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0gb3IgQGMgTlVMTCBpbiBjYXNl
IG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBl
aW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlv
dXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAg
IHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3BvcHVwX21lbnVfaXRlbV90ZXh0
X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtICppdGVtKTsKKyAgICAKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVwX21lbnVfaXRlbV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9p
dGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1
cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZmY5ZGJkYzA1MTYzZDJiZDU5OWYy
YmQ1NTFlM2QxN2QwZWE5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaApAQCAtMCwwICsxLDM0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAor
I2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViUG9w
dXBJdGVtLmgiCisKK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19wb3B1cF9tZW51X2l0ZW1fbmV3
KFdlYktpdDo6V2ViUG9wdXBJdGVtOjpUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRleHQpOwordm9p
ZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSk7CisK
KyNlbmRpZiAvLyBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDdkOGIxY2UwNTY0MzE1NDkz
YjUxM2QxMTUzNTJkOTliNDBlNTFjMTIuLmRjN2MxM2ZiNmMzMzE1NDI0ZDg0ZDg5MGI5ZjU4MTA2
YWM5MGJkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKQEAgLTMwLDEwICszMCwxNCBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5j
bHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUgIldlYlBvcHVw
SXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiZXdr
X2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgog
I2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfaW50ZW50X3By
aXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCisjaW5jbHVkZSAiZXdr
X3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3Zp
ZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODIsNiArODYsOSBAQCBzdHJ1Y3QgX0V3a19W
aWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNlc01hcCBsb2FkaW5nUmVzb3Vy
Y2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFja0ZvcndhcmRMaXN0OwogCisg
ICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5OworICAgIEVpbmFfTGlzdCog
cG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gKICAgICBib29sIGlzVXNpbmdF
Y29yZVg7CiAjZW5kaWYKQEAgLTEwMCw2ICsxMDcsOCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZh
dGVfRGF0YSB7CiAgICAgICAgICwgY3Vyc29yR3JvdXAoMCkKICAgICAgICAgLCBjdXJzb3JPYmpl
Y3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkKKyAgICAgICAgLCBwb3B1cE1lbnVQ
cm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDApCiAjaWZkZWYgSEFWRV9FQ09SRV9Y
CiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNlbmRpZgpAQCAtMTIyLDYgKzEzMSwx
MCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgICAgICAgICBldmFzX29i
amVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBld2tfYmFja19mb3J3YXJkX2xpc3Rf
ZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIHZvaWQqIGl0ZW07CisgICAgICAgIEVJ
TkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtKQorICAgICAgICAgICAgZXdrX3BvcHVw
X21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7
CiAgICAgfQogfTsKIApAQCAtMTQ1NCwzICsxNDY3LDY0IEBAIHZvaWQgZXdrX3ZpZXdfY29udGVu
dHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRTaXpl
JiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6
ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9E
SVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CisKK3ZvaWQgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQb3B1cE1lbnVQ
cm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21h
cnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdyk7CisKKyAgICBBU1NFUlQocG9wdXBNZW51KTsK
KworICAgIGlmIChwcml2LT5wb3B1cE1lbnVQcm94eSkKKyAgICAgICAgZXdrX3ZpZXdfcG9wdXBf
bWVudV9jbG9zZShld2tWaWV3KTsKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IHBvcHVwTWVu
dTsKKworICAgIEVpbmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7CisgICAgc2l6ZV90IHNpemUgPSBp
dGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgICAgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSA9IGV3a19wb3B1cF9tZW51X2l0ZW1fbmV3
KGl0ZW1zW2ldLm1fdHlwZSwgaXRlbXNbaV0ubV90ZXh0LnV0ZjgoKS5kYXRhKCkpOworCisgICAg
ICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRlbXMsIGl0ZW0pOworICAg
IH0KKyAgICBwcml2LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7CisKKyAgICBzbWFydERh
dGEtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwgc3RhdGljX2Nhc3Q8RXdr
X1RleHRfRGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBwb3B1cEl0
ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVf
Y2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHByaXYtPnBvcHVwTWVudVByb3h5LCBmYWxzZSk7CisKKyAgICBpZiAo
c21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlkZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGkt
PnBvcHVwX21lbnVfaGlkZShzbWFydERhdGEpOworCisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5B
X0xJU1RfRlJFRShwcml2LT5wb3B1cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgZXdrX3BvcHVw
X21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7
CisKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCB1bnNpZ25lZCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZhbHNlKTsKKworICAgIGlm
IChzZWxlY3RlZEluZGV4ID49IGVpbmFfbGlzdF9jb3VudChwcml2LT5wb3B1cE1lbnVJdGVtcykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5LT52YWx1
ZUNoYW5nZWQoc2VsZWN0ZWRJbmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDQyM2Y5ZTE0MzE4MzJi
MjQwYjkyNzdhNThkMTcwYmVhMjMxNzkxNjMuLjY1MDM0ZDM3Y2E4ZjFkMzc5MjVkM2UxNmI5NWQ3
NDQyMjNhZGYyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaApAQCAtODMsNiArODMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8vLyBFbnVt
IHZhbHVlcyBjb250YWluaW5nIHRleHQgZGlyZWN0aW9uYWxpdHkgdmFsdWVzLgordHlwZWRlZiBl
bnVtIHsKKyAgICBFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfVEVY
VF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVAorfSBFd2tfVGV4dF9EaXJlY3Rpb247CisKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBl
ZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiAK
QEAgLTkxLDYgKzk3LDkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZh
c19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5n
ZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29sICgqcG9w
dXBfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5nbGUgcmVj
dCwgRXdrX1RleHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9m
YWN0b3IsIEVpbmFfTGlzdCAqaXRlbXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAgRWluYV9C
b29sICgqcG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICAv
LyBldmVudCBoYW5kbGluZzoKICAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxlZAogICAg
IC8vICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2ly
ZWQKQEAgLTEwOCw3ICsxMTcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAq
IFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBp
biB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVX
S19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NM
QVNTX1ZFUlNJT04gMlVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3
X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsxMjksNyBAQCBzdHJ1Y3QgX0V3a19W
aWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJT
SU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8K
LSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21h
cnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFz
c19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6
ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkwLDYgKzU5
OSwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8s
IGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29sIGV3a192
aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisvKioKKyAq
IFNlbGVjdHMgaW5kZXggb2YgY3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5kZXggb2Yg
aXRlbSB0byBzZWxlY3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBA
YyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVwIG1lbnUg
aXMgbm90IHNlbGVjdGVkIG9yIGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQSSBFaW5h
X0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVk
IGludCBpbmRleCk7CisKKy8qKgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisg
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJv
YmFibHkKKyAqICAgICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8KK0VBUEkg
RWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAj
aWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEzY2RmNmJk
ODdiYTg4YTZiMWFmMTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4NzQ1ZThm
YmZmNDkwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rp
b24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiArMzMsMTEg
QEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7Cit9CisK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBl
ZGVmIHN0cnVjdCBfRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Np
b25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1
ZXN0OwpAQCAtODksNCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0
aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmll
d19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpOwogI2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUg
cGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVt
cywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQ
cm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVBy
b3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjBiMzdkNjdkZTU2MWU2NDlkMzk2ZTBjM2ZiMzRlZDI5
MGY4MWQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisj
aW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5o
IgorI2luY2x1ZGUgImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBN
ZW51UHJveHlFZmwoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGll
bnQqIGNsaWVudCkKKyAgICA6IFdlYlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fd2Vi
Vmlldyh3ZWJWaWV3KQoreworfQorCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldlYlBvcHVwTWVu
dVByb3h5RWZsKCkKK3sKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1BvcHVw
TWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRv
dWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywg
Y29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQorewor
ICAgIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIHJlY3QsIHRl
eHREaXJlY3Rpb24sIHBhZ2VTY2FsZUZhY3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQor
Cit2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjpoaWRlUG9wdXBNZW51KCkKK3sKKyAgICBld2tf
dmlld19wb3B1cF9tZW51X2Nsb3NlKG1fd2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51
UHJveHlFZmw6OnZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2Ns
aWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG5ld1NlbGVjdGVkSW5kZXgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGJlZDBiMjE1MGJi
OWFiZTBlNGYyMzkyMzRkZmMyNTBjYmQ4MjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKyNkZWZpbmUg
V2ViUG9wdXBNZW51UHJveHlFZmxfaAorCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIK
KwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1YmxpYyBX
ZWJQb3B1cE1lbnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9w
dXBNZW51UHJveHlFZmw+IGNyZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51
UHJveHk6OkNsaWVudCogY2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJQb3B1cE1lbnVQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQpKTsKKyAgICB9CisgICAgfldl
YlBvcHVwTWVudVByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwTWVudShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBh
Z2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBjb25zdCBQbGF0Zm9y
bVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9p
ZCBoaWRlUG9wdXBNZW51KCk7CisKKyAgICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0
ZWRJbmRleCk7CisKK3ByaXZhdGU6CisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwoRXZhc19PYmpl
Y3QqLCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50Kik7CisKKyAgICBFdmFzX09iamVjdCogbV93
ZWJWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1
cE1lbnVQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158295</attachid>
            <date>2012-08-14 04:51:47 -0700</date>
            <delta_ts>2012-08-14 05:50:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814205114.patch</filename>
            <type>text/plain</type>
            <size>27986</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzRiZWM4MDBkMzQyZDQw
OGMwODYwNDU2YTYxNmZlNTg0YWU3YzA4NS4uYTRkZjZhYjBhYjZjOTU4YTc1ZGNiMDk3NmMxOGI1
ZWE1NmU4MzhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA4LTE0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5
RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1l
bnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93
UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQ
b3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0xNCAgU2VyZ2lvIFZp
bGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSRUdSRVNT
SU9OIChyMTIyNDI4KSBXZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdEZpbmRDb250cm9sbGVyIGZh
aWxzICJuZXh0IiB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDIyM2MzM2QwYzU0
Njk2MWI3MDc3ZmM2MGRmMzNlZWMwNDc4N2Y2MzAuLjk3MzI1NDJiYmFmYWUzZGIwMTQ4MmM1Nzhi
MGMzM2NjOWYyMzNkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01NSw2ICs1NSw3
IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19pbnRlbnRfc2VydmljZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3Bw
CisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3VybF9yZXNwb25zZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0LmNwcApAQCAtNzUsNiArNzYsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwuY3BwCiAg
ICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3Mv
ZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVBy
b3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJlZmVyZW5jZXNFZmwuY3BwCiAKICAg
ICBVSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMTI2LDYg
KzEyOCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9jcHAvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRG93
bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZsIgpAQCAtMjA2
LDYgKzIwOSw3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5o
IgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgiCiAgICAgIiR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVl
c3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a191cmxfcmVzcG9uc2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IGQ5ODAyM2RlNmUwZWZhNmRlMDdm
YzlmYjhjMjE1ZDM5Y2M0ODk4N2MuLmYxYzA5MGVkYmM0MjY4OTJhYzQ4YmU5OGY4Y2JjOTYwODY0
YTMxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJL
aXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgogI2luY2x1
ZGUgImV3a19tYWluLmgiCiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1ZGUgImV3a191cmxf
cmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKICNpbmNsdWRlICJld2tf
dXJsX3NjaGVtZV9yZXF1ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNzI2Y2FhYWUxYTFlZmE5NjM4ZGI3NzQ3
Njc2YjAxYTMxYTIxYzZiNi4uYmFjYmYzMDAwNDNmMDBmYWZmZjM5N2IxODcyYzM5ZDMyNjVhZDZm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGll
bnRJbXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgIldlYlByZWZl
cmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCkBAIC0yMDQsMTAgKzIwNSw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRv
bmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVu
CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitQYXNzUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFn
ZVByb3h5KiBwYWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdl
KTsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41OTU1MTcwNzE2ZjhiM2U5ZjVhMTJhYzg4NmFjMWRmMDgxMmY2NzM0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21l
bnVfaXRlbS5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCisKKyNpbmNsdWRlICJXS0Vp
bmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfUG9wdXBfTWVudV9JdGVtCisgKiBAYnJpZWYgICBDb250
YWlucyB0aGUgcG9wdXAgbWVudSBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19Qb3B1cF9NZW51X0l0
ZW0geworICAgIEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZSB0eXBlOworICAgIFdLRWluYVNoYXJl
ZFN0cmluZyB0ZXh0OworCisgICAgX0V3a19Qb3B1cF9NZW51X0l0ZW0oRXdrX1BvcHVwX01lbnVf
SXRlbV9UeXBlIF90eXBlLCBjb25zdCBjaGFyKiBfdGV4dCkKKyAgICAgICAgOiB0eXBlKF90eXBl
KQorICAgICAgICAsIHRleHQoX3RleHQpCisgICAgeyB9CisKKyAgICB+X0V3a19Qb3B1cF9NZW51
X0l0ZW0oKQorICAgIHsKKyAgICB9Cit9OworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19QT1BVUF9NRU5VX1NFUEFSQVRPUiwgV2ViUG9wdXBJdGVtOjpTZXBhcmF0b3IpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUE9QVVBfTUVOVV9JVEVNLCBXZWJQb3B1cEl0
ZW06Okl0ZW0pOworCisvKioKKyAqIEBpbnRlcm5hbAorICogQ29uc3RydWN0cyBhIEV3a19Qb3B1
cF9NZW51X0l0ZW0uCisgKi8KK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19wb3B1cF9tZW51X2l0
ZW1fbmV3KFdlYlBvcHVwSXRlbTo6VHlwZSB0eXBlLCBjb25zdCBjaGFyKiB0ZXh0KQoreworICAg
IHJldHVybiBuZXcgRXdrX1BvcHVwX01lbnVfSXRlbShzdGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVu
dV9JdGVtX1R5cGU+KHR5cGUpLCB0ZXh0KTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEZy
ZWVzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLwordm9pZCBld2tfcG9wdXBfbWVudV9pdGVt
X2ZyZWUoRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihpdGVtKTsKKyAgICBkZWxldGUgaXRlbTsKK30KKworRXdrX1BvcHVwX01lbnVf
SXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRl
bSwgRVdLX1BPUFVQX01FTlVfVU5LTk9XTik7CisKKyAgICByZXR1cm4gaXRlbS0+dHlwZTsKK30K
KworY29uc3QgY2hhciogZXdrX3BvcHVwX21lbnVfaXRlbV90ZXh0X2dldChjb25zdCBFd2tfUG9w
dXBfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChpdGVtLCAwKTsKKworICAgIHJldHVybiBpdGVtLT50ZXh0OworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxYjRkN2IyYmQyZTIyMWQxOGFlYjU3ZmJkZTc3OWI1ODZmZmFhNjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVu
dV9pdGVtLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAg
ZXdrX3BvcHVwX21lbnVfaXRlbS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBQb3B1
cCBNZW51IEl0ZW0gQVBJLgorICovCisKKyNpZm5kZWYgZXdrX3BvcHVwX21lbnVfaXRlbV9oCisj
ZGVmaW5lIGV3a19wb3B1cF9tZW51X2l0ZW1faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBFbnVtIHZhbHVlcyBj
b250YWluaW5nIHR5cGUgb2YgcG9wdXAgbWVudSBpdGVtLiAqLwordHlwZWRlZiBlbnVtIHsKKyAg
ICBFV0tfUE9QVVBfTUVOVV9TRVBBUkFUT1IsCisgICAgRVdLX1BPUFVQX01FTlVfSVRFTSwKKyAg
ICBFV0tfUE9QVVBfTUVOVV9VTktOT1dOID0gLTEKK30gRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBl
OworCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19Qb3B1cF9NZW51X0l0ZW0gKi8K
K3R5cGVkZWYgc3RydWN0IF9Fd2tfUG9wdXBfTWVudV9JdGVtIEV3a19Qb3B1cF9NZW51X0l0ZW07
CisKKy8qKgorICogUmV0dXJucyB0eXBlIG9mIHRoZSBwb3B1cCBtZW51IGl0ZW0uCisgKgorICog
QHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1lbnUgaXRlbSBpbnN0YW5jZQorICoKKyAqIEByZXR1cm4g
dGhlIHR5cGUgb2YgdGhlIEBhIGl0ZW0gb3IgQGMgRVdLX1BPUFVQX01FTlVfVU5LTk9XTiBpbiBj
YXNlIG9mIGVycm9yLgorICovCitFQVBJIEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZSBld2tfcG9w
dXBfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0gKml0ZW0pOwor
CisvKioKKyAqIFJldHVybnMgdGV4dCBvZiB0aGUgcG9wdXAgbWVudSBpdGVtLgorICoKKyAqIEBw
YXJhbSBpdGVtIHRoZSBwb3B1cCBtZW51IGl0ZW0gaW5zdGFuY2UKKyAqCisgKiBAcmV0dXJuIHRo
ZSB0ZXh0IG9mIHRoZSBAYSBpdGVtIG9yIEBjIE5VTEwgaW4gY2FzZSBvZiBlcnJvci4gVGhpcyBw
b2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwg
c28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBj
eWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQg
b2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKQorICovCitF
QVBJIGNvbnN0IGNoYXIgKmV3a19wb3B1cF9tZW51X2l0ZW1fdGV4dF9nZXQoY29uc3QgRXdrX1Bv
cHVwX01lbnVfSXRlbSAqaXRlbSk7CisgICAgCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRp
ZgorI2VuZGlmIC8vIGV3a19wb3B1cF9tZW51X2l0ZW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NGZmOWRiZGMwNTE2M2QyYmQ1OTlmMmJkNTUxZTNkMTdkMGVhOWFh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BvcHVw
X21lbnVfaXRlbV9wcml2YXRlX2gKKworI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorCitFd2tf
UG9wdXBfTWVudV9JdGVtKiBld2tfcG9wdXBfbWVudV9pdGVtX25ldyhXZWJLaXQ6OldlYlBvcHVw
SXRlbTo6VHlwZSB0eXBlLCBjb25zdCBjaGFyKiB0ZXh0KTsKK3ZvaWQgZXdrX3BvcHVwX21lbnVf
aXRlbV9mcmVlKEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pOworCisjZW5kaWYgLy8gZXdrX3Bv
cHVwX21lbnVfaXRlbV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcAppbmRleCA3ZDhiMWNlMDU2NDMxNTQ5M2I1MTNkMTE1MzUyZDk5YjQw
ZTUxYzEyLi5kYzdjMTNmYjZjMzMxNTQyNGQ4NGQ4OTBiOWY1ODEwNmFjOTBiZDY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zMCwxMCAr
MzAsMTQgQEAKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgi
CiAjaW5jbHVkZSAiV0tVUkwuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKyNpbmNsdWRl
ICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlz
dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29u
dGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgorI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1f
cHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdf
ZmluZF9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X2Zvcm1fY2xpZW50X3By
aXZhdGUuaCIKQEAgLTgyLDYgKzg2LDkgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgIExvYWRpbmdSZXNvdXJjZXNNYXAgbG9hZGluZ1Jlc291cmNlc01hcDsKICAgICBFd2tf
QmFja19Gb3J3YXJkX0xpc3QqIGJhY2tGb3J3YXJkTGlzdDsKIAorICAgIFdlYlBvcHVwTWVudVBy
b3h5RWZsKiBwb3B1cE1lbnVQcm94eTsKKyAgICBFaW5hX0xpc3QqIHBvcHVwTWVudUl0ZW1zOwor
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgYm9vbCBpc1VzaW5nRWNvcmVYOwogI2VuZGlmCkBA
IC0xMDAsNiArMTA3LDggQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAg
ICAsIGN1cnNvckdyb3VwKDApCiAgICAgICAgICwgY3Vyc29yT2JqZWN0KDApCiAgICAgICAgICwg
YmFja0ZvcndhcmRMaXN0KDApCisgICAgICAgICwgcG9wdXBNZW51UHJveHkoMCkKKyAgICAgICAg
LCBwb3B1cE1lbnVJdGVtcygwKQogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgICAgICAsIGlzVXNp
bmdFY29yZVgoZmFsc2UpCiAjZW5kaWYKQEAgLTEyMiw2ICsxMzEsMTAgQEAgc3RydWN0IF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICAgICAgZXZhc19vYmplY3RfZGVsKGN1cnNvck9i
amVjdCk7CiAKICAgICAgICAgZXdrX2JhY2tfZm9yd2FyZF9saXN0X2ZyZWUoYmFja0ZvcndhcmRM
aXN0KTsKKworICAgICAgICB2b2lkKiBpdGVtOworICAgICAgICBFSU5BX0xJU1RfRlJFRShwb3B1
cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgICAgIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShz
dGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVudV9JdGVtKj4oaXRlbSkpOwogICAgIH0KIH07CiAKQEAg
LTE0NTQsMyArMTQ2Nyw2NCBAQCB2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgSW50U2l6ZSYgcwogICAgIHByaXYtPnZp
ZXdwb3J0SGFuZGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOwogI2VuZGlmCiB9CisK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RP
X0xFRlQsIFJUTCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVD
VElPTl9MRUZUX1RPX1JJR0hULCBMVFIpOworCit2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVx
dWVzdChFdmFzX09iamVjdCogZXdrVmlldywgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVu
dSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBkb3Vi
bGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGlu
dDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5wb3B1
cF9tZW51X3Nob3cpOworCisgICAgQVNTRVJUKHBvcHVwTWVudSk7CisKKyAgICBpZiAocHJpdi0+
cG9wdXBNZW51UHJveHkpCisgICAgICAgIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoZXdrVmll
dyk7CisgICAgcHJpdi0+cG9wdXBNZW51UHJveHkgPSBwb3B1cE1lbnU7CisKKyAgICBFaW5hX0xp
c3QqIHBvcHVwSXRlbXMgPSAwOworICAgIHNpemVfdCBzaXplID0gaXRlbXMuc2l6ZSgpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEV3a19Qb3B1cF9N
ZW51X0l0ZW0qIGl0ZW0gPSBld2tfcG9wdXBfbWVudV9pdGVtX25ldyhpdGVtc1tpXS5tX3R5cGUs
IGl0ZW1zW2ldLm1fdGV4dC51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBwb3B1cEl0ZW1zID0g
ZWluYV9saXN0X2FwcGVuZChwb3B1cEl0ZW1zLCBpdGVtKTsKKyAgICB9CisgICAgcHJpdi0+cG9w
dXBNZW51SXRlbXMgPSBwb3B1cEl0ZW1zOworCisgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21l
bnVfc2hvdyhzbWFydERhdGEsIHJlY3QsIHN0YXRpY19jYXN0PEV3a19UZXh0X0RpcmVjdGlvbj4o
dGV4dERpcmVjdGlvbiksIHBhZ2VTY2FsZUZhY3RvciwgcG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRl
eCk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmFwaSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChw
cml2LT5wb3B1cE1lbnVQcm94eSwgZmFsc2UpOworCisgICAgaWYgKHNtYXJ0RGF0YS0+YXBpLT5w
b3B1cF9tZW51X2hpZGUpCisgICAgICAgIHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X2hpZGUo
c21hcnREYXRhKTsKKworICAgIHZvaWQqIGl0ZW07CisgICAgRUlOQV9MSVNUX0ZSRUUocHJpdi0+
cG9wdXBNZW51SXRlbXMsIGl0ZW0pCisgICAgICAgIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShz
dGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVudV9JdGVtKj4oaXRlbSkpOworCisgICAgcHJpdi0+cG9w
dXBNZW51UHJveHkgPSAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tf
dmlld19wb3B1cF9tZW51X3NlbGVjdChFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQgaW50
IHNlbGVjdGVkSW5kZXgpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHByaXYtPnBvcHVwTWVudVByb3h5LCBmYWxzZSk7CisKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA+
PSBlaW5hX2xpc3RfY291bnQocHJpdi0+cG9wdXBNZW51SXRlbXMpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eS0+dmFsdWVDaGFuZ2VkKHNlbGVjdGVk
SW5kZXgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA0MjNmOWUxNDMxODMyYjI0MGI5Mjc3YTU4ZDE3MGJl
YTIzMTc5MTYzLi42NTAzNGQzN2NhOGYxZDM3OTI1ZDNlMTZiOTVkNzQ0MjIzYWRmMmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTgzLDYgKzgz
LDEyIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisvLy8gRW51bSB2YWx1ZXMgY29udGFpbmlu
ZyB0ZXh0IGRpcmVjdGlvbmFsaXR5IHZhbHVlcy4KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX1RF
WFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsCisgICAgRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRf
VE9fUklHSFQKK30gRXdrX1RleHRfRGlyZWN0aW9uOworCiB0eXBlZGVmIHN0cnVjdCBfRXdrX1Zp
ZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19W
aWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCkBAIC05MSw2ICs5Nyw5IEBA
IHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7
IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwogICAgIHVuc2ln
bmVkIGxvbmcgdmVyc2lvbjsKIAorICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfc2hvdykoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QsIEVpbmFfUmVjdGFuZ2xlIHJlY3QsIEV3a19UZXh0X0RpcmVj
dGlvbiB0ZXh0X2RpcmVjdGlvbiwgZG91YmxlIHBhZ2Vfc2NhbGVfZmFjdG9yLCBFaW5hX0xpc3Qg
Kml0ZW1zLCBpbnQgc2VsZWN0ZWRfaW5kZXgpOworICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVf
aGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOworCiAgICAgLy8gZXZlbnQgaGFuZGxpbmc6
CiAgICAgLy8gIC0gcmV0dXJucyB0cnVlIGlmIGhhbmRsZWQKICAgICAvLyAgLSBpZiBvdmVycmlk
ZGVuLCBoYXZlIHRvIGNhbGwgcGFyZW50IG1ldGhvZCBpZiBkZXNpcmVkCkBAIC0xMDgsNyArMTE3
LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBUaGUgdmVyc2lvbiB5b3Ug
aGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3
X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OIDFVTAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDJVTAog
CiAvKioKICAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1
Y3R1cmUuCkBAIC0xMjAsNyArMTI5LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7
CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICovCi0jZGVmaW5lIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVX
S19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVm
aW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2Ns
YXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTU5MCw2ICs1OTksMjcgQEAgRUFQSSBFaW5h
X0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0
LCBFd2tfRmluZF9PcHQKICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmRfaGln
aGxpZ2h0X2NsZWFyKEV2YXNfT2JqZWN0ICpvKTsKIAorLyoqCisgKiBTZWxlY3RzIGluZGV4IG9m
IGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlu
cyBwb3B1cCBtZW51LgorICogQHBhcmFtIGluZGV4IGluZGV4IG9mIGl0ZW0gdG8gc2VsZWN0Cisg
KgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBm
YWlsdXJlIChwcm9iYWJseQorICogICAgICAgICBwb3B1cCBtZW51IGlzIG5vdCBzZWxlY3RlZCBv
ciBpbmRleCBpcyBvdXQgb2YgcmFuZ2UpCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3Bv
cHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgaW5kZXgpOworCisv
KioKKyAqIENsb3NlcyBjdXJyZW50IHBvcHVwIG1lbnUuCisgKgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgY29udGFpbnMgcG9wdXAgbWVudS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAg
IHBvcHVwIG1lbnUgaXMgbm90IHNlbGVjdGVkKQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmll
d19wb3B1cF9tZW51X2Nsb3NlKEV2YXNfT2JqZWN0ICpvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3ByaXZhdGUuaAppbmRleCBmNDAyOTg1ODcxM2NkZjZiZDg3YmE4OGE2YjFhZjEzNmE3
N2M0ZmZiLi5kYjhhYjY2YTYxYjE0ZjE2N2RhY2RkNWU5ODc0NWU4ZmJmZjQ5MGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
CkBAIC0yMyw3ICsyMyw5IEBACiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
IDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEN1cnNvcjsKQEAgLTMxLDYgKzMzLDExIEBAIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBJbnRTaXplOwogfQogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBvcHVw
SXRlbTsKK2NsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsOworfQorCiB0eXBlZGVmIHN0cnVjdCBf
RXdrX0Rvd25sb2FkX0pvYiBFd2tfRG93bmxvYWRfSm9iOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19G
b3JtX1N1Ym1pc3Npb25fUmVxdWVzdCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q7CiB0eXBl
ZGVmIHN0cnVjdCBfRXdrX1VybF9SZXF1ZXN0IEV3a19VcmxfUmVxdWVzdDsKQEAgLTg5LDQgKzk2
LDYgQEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2VudGVyKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICNlbmRpZgog
Cit2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywg
V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3Rvciwg
Y29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0
ZWRJbmRleCk7CisKICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWYwYjM3ZDY3ZGU1NjFlNjQ5ZDM5NmUwYzNmYjM0ZWQyOTBmODFkMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlF
ZmwuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKKworI2luY2x1ZGUgIk5hdGl2ZVdl
Yk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKyNpbmNsdWRlICJld2tf
dmlldy5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5RWZsKEV2YXNf
T2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisgICAg
OiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCisgICAgLCBtX3dlYlZpZXcod2ViVmlldykKK3sK
K30KKworV2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1lbnVQcm94eUVmbCgpCit7Cit9
CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVj
dCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFj
dG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9w
dXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBld2tfdmlld19wb3B1
cF9tZW51X3JlcXVlc3QobV93ZWJWaWV3LCB0aGlzLCByZWN0LCB0ZXh0RGlyZWN0aW9uLCBwYWdl
U2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBXZWJQb3B1cE1l
bnVQcm94eUVmbDo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9j
bG9zZShtX3dlYlZpZXcpOworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjp2YWx1ZUNo
YW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpCit7CisgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdl
ZEZvclBvcHVwTWVudSh0aGlzLCBuZXdTZWxlY3RlZEluZGV4KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBv
cHVwTWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVw
TWVudVByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBiZWQwYjIxNTBiYjlhYmUwZTRmMjM5MjM0ZGZj
MjUwY2JkODI2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCisjZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5
RWZsX2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK3R5cGVkZWYgc3RydWN0
IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
SW50UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsK
KworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5RWZsPiBj
cmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNs
aWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJv
eHlFZmwod2ViVmlldywgY2xpZW50KSk7CisgICAgfQorICAgIH5XZWJQb3B1cE1lbnVQcm94eUVm
bCgpOworCisgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNv
bnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwg
aW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgp
OworCisgICAgdm9pZCB2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpOworCitwcml2
YXRlOgorICAgIFdlYlBvcHVwTWVudVByb3h5RWZsKEV2YXNfT2JqZWN0KiwgV2ViUG9wdXBNZW51
UHJveHk6OkNsaWVudCopOworCisgICAgRXZhc19PYmplY3QqIG1fd2ViVmlldzsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158305</attachid>
            <date>2012-08-14 05:50:57 -0700</date>
            <delta_ts>2012-08-16 19:47:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120814215023.patch</filename>
            <type>text/plain</type>
            <size>27970</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzRiZWM4MDBkMzQyZDQw
OGMwODYwNDU2YTYxNmZlNTg0YWU3YzA4NS4uYTRkZjZhYjBhYjZjOTU4YTc1ZGNiMDk3NmMxOGI1
ZWE1NmU4MzhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA4LTE0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5
RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1l
bnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93
UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQ
b3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0xNCAgU2VyZ2lvIFZp
bGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSRUdSRVNT
SU9OIChyMTIyNDI4KSBXZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdEZpbmRDb250cm9sbGVyIGZh
aWxzICJuZXh0IiB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDIyM2MzM2QwYzU0
Njk2MWI3MDc3ZmM2MGRmMzNlZWMwNDc4N2Y2MzAuLjk3MzI1NDJiYmFmYWUzZGIwMTQ4MmM1Nzhi
MGMzM2NjOWYyMzNkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01NSw2ICs1NSw3
IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19pbnRlbnRfc2VydmljZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3Bw
CisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3VybF9yZXNwb25zZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0LmNwcApAQCAtNzUsNiArNzYsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwuY3BwCiAg
ICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3Mv
ZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVBy
b3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJlZmVyZW5jZXNFZmwuY3BwCiAKICAg
ICBVSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMTI2LDYg
KzEyOCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9jcHAvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRG93
bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZsIgpAQCAtMjA2
LDYgKzIwOSw3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5o
IgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgiCiAgICAgIiR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVl
c3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a191cmxfcmVzcG9uc2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IGQ5ODAyM2RlNmUwZWZhNmRlMDdm
YzlmYjhjMjE1ZDM5Y2M0ODk4N2MuLmYxYzA5MGVkYmM0MjY4OTJhYzQ4YmU5OGY4Y2JjOTYwODY0
YTMxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJL
aXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgogI2luY2x1
ZGUgImV3a19tYWluLmgiCiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1ZGUgImV3a191cmxf
cmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKICNpbmNsdWRlICJld2tf
dXJsX3NjaGVtZV9yZXF1ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNzI2Y2FhYWUxYTFlZmE5NjM4ZGI3NzQ3
Njc2YjAxYTMxYTIxYzZiNi4uYmFjYmYzMDAwNDNmMDBmYWZmZjM5N2IxODcyYzM5ZDMyNjVhZDZm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGll
bnRJbXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgIldlYlByZWZl
cmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCkBAIC0yMDQsMTAgKzIwNSw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRv
bmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVu
CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitQYXNzUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFn
ZVByb3h5KiBwYWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdl
KTsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41OTU1MTcwNzE2ZjhiM2U5ZjVhMTJhYzg4NmFjMWRmMDgxMmY2NzM0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21l
bnVfaXRlbS5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCisKKyNpbmNsdWRlICJXS0Vp
bmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfUG9wdXBfTWVudV9JdGVtCisgKiBAYnJpZWYgICBDb250
YWlucyB0aGUgcG9wdXAgbWVudSBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19Qb3B1cF9NZW51X0l0
ZW0geworICAgIEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZSB0eXBlOworICAgIFdLRWluYVNoYXJl
ZFN0cmluZyB0ZXh0OworCisgICAgX0V3a19Qb3B1cF9NZW51X0l0ZW0oRXdrX1BvcHVwX01lbnVf
SXRlbV9UeXBlIF90eXBlLCBjb25zdCBjaGFyKiBfdGV4dCkKKyAgICAgICAgOiB0eXBlKF90eXBl
KQorICAgICAgICAsIHRleHQoX3RleHQpCisgICAgeyB9CisKKyAgICB+X0V3a19Qb3B1cF9NZW51
X0l0ZW0oKQorICAgIHsKKyAgICB9Cit9OworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19QT1BVUF9NRU5VX1NFUEFSQVRPUiwgV2ViUG9wdXBJdGVtOjpTZXBhcmF0b3IpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUE9QVVBfTUVOVV9JVEVNLCBXZWJQb3B1cEl0
ZW06Okl0ZW0pOworCisvKioKKyAqIEBpbnRlcm5hbAorICogQ29uc3RydWN0cyBhIEV3a19Qb3B1
cF9NZW51X0l0ZW0uCisgKi8KK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19wb3B1cF9tZW51X2l0
ZW1fbmV3KFdlYlBvcHVwSXRlbTo6VHlwZSB0eXBlLCBjb25zdCBjaGFyKiB0ZXh0KQoreworICAg
IHJldHVybiBuZXcgRXdrX1BvcHVwX01lbnVfSXRlbShzdGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVu
dV9JdGVtX1R5cGU+KHR5cGUpLCB0ZXh0KTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEZy
ZWVzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLwordm9pZCBld2tfcG9wdXBfbWVudV9pdGVt
X2ZyZWUoRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihpdGVtKTsKKyAgICBkZWxldGUgaXRlbTsKK30KKworRXdrX1BvcHVwX01lbnVf
SXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRl
bSwgRVdLX1BPUFVQX01FTlVfVU5LTk9XTik7CisKKyAgICByZXR1cm4gaXRlbS0+dHlwZTsKK30K
KworY29uc3QgY2hhciogZXdrX3BvcHVwX21lbnVfaXRlbV90ZXh0X2dldChjb25zdCBFd2tfUG9w
dXBfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChpdGVtLCAwKTsKKworICAgIHJldHVybiBpdGVtLT50ZXh0OworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxYjRkN2IyYmQyZTIyMWQxOGFlYjU3ZmJkZTc3OWI1ODZmZmFhNjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVu
dV9pdGVtLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAg
ZXdrX3BvcHVwX21lbnVfaXRlbS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBQb3B1
cCBNZW51IEl0ZW0gQVBJLgorICovCisKKyNpZm5kZWYgZXdrX3BvcHVwX21lbnVfaXRlbV9oCisj
ZGVmaW5lIGV3a19wb3B1cF9tZW51X2l0ZW1faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBFbnVtIHZhbHVlcyBj
b250YWluaW5nIHR5cGUgb2YgcG9wdXAgbWVudSBpdGVtLiAqLwordHlwZWRlZiBlbnVtIHsKKyAg
ICBFV0tfUE9QVVBfTUVOVV9TRVBBUkFUT1IsCisgICAgRVdLX1BPUFVQX01FTlVfSVRFTSwKKyAg
ICBFV0tfUE9QVVBfTUVOVV9VTktOT1dOID0gLTEKK30gRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBl
OworCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19Qb3B1cF9NZW51X0l0ZW0gKi8K
K3R5cGVkZWYgc3RydWN0IF9Fd2tfUG9wdXBfTWVudV9JdGVtIEV3a19Qb3B1cF9NZW51X0l0ZW07
CisKKy8qKgorICogUmV0dXJucyB0eXBlIG9mIHRoZSBwb3B1cCBtZW51IGl0ZW0uCisgKgorICog
QHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1lbnUgaXRlbSBpbnN0YW5jZQorICoKKyAqIEByZXR1cm4g
dGhlIHR5cGUgb2YgdGhlIEBhIGl0ZW0gb3IgQGMgRVdLX1BPUFVQX01FTlVfVU5LTk9XTiBpbiBj
YXNlIG9mIGVycm9yLgorICovCitFQVBJIEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZSBld2tfcG9w
dXBfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0gKml0ZW0pOwor
CisvKioKKyAqIFJldHVybnMgdGV4dCBvZiB0aGUgcG9wdXAgbWVudSBpdGVtLgorICoKKyAqIEBw
YXJhbSBpdGVtIHRoZSBwb3B1cCBtZW51IGl0ZW0gaW5zdGFuY2UKKyAqCisgKiBAcmV0dXJuIHRo
ZSB0ZXh0IG9mIHRoZSBAYSBpdGVtIG9yIEBjIE5VTEwgaW4gY2FzZSBvZiBlcnJvci4gVGhpcyBw
b2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwg
c28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBj
eWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQg
b2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKQorICovCitF
QVBJIGNvbnN0IGNoYXIgKmV3a19wb3B1cF9tZW51X2l0ZW1fdGV4dF9nZXQoY29uc3QgRXdrX1Bv
cHVwX01lbnVfSXRlbSAqaXRlbSk7CisgICAgCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRp
ZgorI2VuZGlmIC8vIGV3a19wb3B1cF9tZW51X2l0ZW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NGZmOWRiZGMwNTE2M2QyYmQ1OTlmMmJkNTUxZTNkMTdkMGVhOWFh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BvcHVw
X21lbnVfaXRlbV9wcml2YXRlX2gKKworI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorCitFd2tf
UG9wdXBfTWVudV9JdGVtKiBld2tfcG9wdXBfbWVudV9pdGVtX25ldyhXZWJLaXQ6OldlYlBvcHVw
SXRlbTo6VHlwZSB0eXBlLCBjb25zdCBjaGFyKiB0ZXh0KTsKK3ZvaWQgZXdrX3BvcHVwX21lbnVf
aXRlbV9mcmVlKEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pOworCisjZW5kaWYgLy8gZXdrX3Bv
cHVwX21lbnVfaXRlbV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcAppbmRleCA3ZDhiMWNlMDU2NDMxNTQ5M2I1MTNkMTE1MzUyZDk5YjQw
ZTUxYzEyLi5kYzdjMTNmYjZjMzMxNTQyNGQ4NGQ4OTBiOWY1ODEwNmFjOTBiZDY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zMCwxMCAr
MzAsMTQgQEAKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgi
CiAjaW5jbHVkZSAiV0tVUkwuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKyNpbmNsdWRl
ICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlz
dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29u
dGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgorI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1f
cHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdf
ZmluZF9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X2Zvcm1fY2xpZW50X3By
aXZhdGUuaCIKQEAgLTgyLDYgKzg2LDkgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgIExvYWRpbmdSZXNvdXJjZXNNYXAgbG9hZGluZ1Jlc291cmNlc01hcDsKICAgICBFd2tf
QmFja19Gb3J3YXJkX0xpc3QqIGJhY2tGb3J3YXJkTGlzdDsKIAorICAgIFdlYlBvcHVwTWVudVBy
b3h5RWZsKiBwb3B1cE1lbnVQcm94eTsKKyAgICBFaW5hX0xpc3QqIHBvcHVwTWVudUl0ZW1zOwor
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgYm9vbCBpc1VzaW5nRWNvcmVYOwogI2VuZGlmCkBA
IC0xMDAsNiArMTA3LDggQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAg
ICAsIGN1cnNvckdyb3VwKDApCiAgICAgICAgICwgY3Vyc29yT2JqZWN0KDApCiAgICAgICAgICwg
YmFja0ZvcndhcmRMaXN0KDApCisgICAgICAgICwgcG9wdXBNZW51UHJveHkoMCkKKyAgICAgICAg
LCBwb3B1cE1lbnVJdGVtcygwKQogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgICAgICAsIGlzVXNp
bmdFY29yZVgoZmFsc2UpCiAjZW5kaWYKQEAgLTEyMiw2ICsxMzEsMTAgQEAgc3RydWN0IF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICAgICAgZXZhc19vYmplY3RfZGVsKGN1cnNvck9i
amVjdCk7CiAKICAgICAgICAgZXdrX2JhY2tfZm9yd2FyZF9saXN0X2ZyZWUoYmFja0ZvcndhcmRM
aXN0KTsKKworICAgICAgICB2b2lkKiBpdGVtOworICAgICAgICBFSU5BX0xJU1RfRlJFRShwb3B1
cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgICAgIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShz
dGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVudV9JdGVtKj4oaXRlbSkpOwogICAgIH0KIH07CiAKQEAg
LTE0NTQsMyArMTQ2Nyw2NCBAQCB2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgSW50U2l6ZSYgcwogICAgIHByaXYtPnZp
ZXdwb3J0SGFuZGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOwogI2VuZGlmCiB9CisK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RP
X0xFRlQsIFJUTCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVD
VElPTl9MRUZUX1RPX1JJR0hULCBMVFIpOworCit2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVx
dWVzdChFdmFzX09iamVjdCogZXdrVmlldywgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVu
dSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBkb3Vi
bGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGlu
dDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5wb3B1
cF9tZW51X3Nob3cpOworCisgICAgQVNTRVJUKHBvcHVwTWVudSk7CisKKyAgICBpZiAocHJpdi0+
cG9wdXBNZW51UHJveHkpCisgICAgICAgIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoZXdrVmll
dyk7CisgICAgcHJpdi0+cG9wdXBNZW51UHJveHkgPSBwb3B1cE1lbnU7CisKKyAgICBFaW5hX0xp
c3QqIHBvcHVwSXRlbXMgPSAwOworICAgIHNpemVfdCBzaXplID0gaXRlbXMuc2l6ZSgpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEV3a19Qb3B1cF9N
ZW51X0l0ZW0qIGl0ZW0gPSBld2tfcG9wdXBfbWVudV9pdGVtX25ldyhpdGVtc1tpXS5tX3R5cGUs
IGl0ZW1zW2ldLm1fdGV4dC51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBwb3B1cEl0ZW1zID0g
ZWluYV9saXN0X2FwcGVuZChwb3B1cEl0ZW1zLCBpdGVtKTsKKyAgICB9CisgICAgcHJpdi0+cG9w
dXBNZW51SXRlbXMgPSBwb3B1cEl0ZW1zOworCisgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21l
bnVfc2hvdyhzbWFydERhdGEsIHJlY3QsIHN0YXRpY19jYXN0PEV3a19UZXh0X0RpcmVjdGlvbj4o
dGV4dERpcmVjdGlvbiksIHBhZ2VTY2FsZUZhY3RvciwgcG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRl
eCk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmFwaSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChw
cml2LT5wb3B1cE1lbnVQcm94eSwgZmFsc2UpOworCisgICAgaWYgKHNtYXJ0RGF0YS0+YXBpLT5w
b3B1cF9tZW51X2hpZGUpCisgICAgICAgIHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X2hpZGUo
c21hcnREYXRhKTsKKworICAgIHZvaWQqIGl0ZW07CisgICAgRUlOQV9MSVNUX0ZSRUUocHJpdi0+
cG9wdXBNZW51SXRlbXMsIGl0ZW0pCisgICAgICAgIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShz
dGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVudV9JdGVtKj4oaXRlbSkpOworCisgICAgcHJpdi0+cG9w
dXBNZW51UHJveHkgPSAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tf
dmlld19wb3B1cF9tZW51X3NlbGVjdChFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQgaW50
IHNlbGVjdGVkSW5kZXgpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHByaXYtPnBvcHVwTWVudVByb3h5LCBmYWxzZSk7CisKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA+
PSBlaW5hX2xpc3RfY291bnQocHJpdi0+cG9wdXBNZW51SXRlbXMpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eS0+dmFsdWVDaGFuZ2VkKHNlbGVjdGVk
SW5kZXgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA0MjNmOWUxNDMxODMyYjI0MGI5Mjc3YTU4ZDE3MGJl
YTIzMTc5MTYzLi42NTAzNGQzN2NhOGYxZDM3OTI1ZDNlMTZiOTVkNzQ0MjIzYWRmMmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTgzLDYgKzgz
LDEyIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisvLy8gRW51bSB2YWx1ZXMgY29udGFpbmlu
ZyB0ZXh0IGRpcmVjdGlvbmFsaXR5IHZhbHVlcy4KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX1RF
WFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsCisgICAgRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRf
VE9fUklHSFQKK30gRXdrX1RleHRfRGlyZWN0aW9uOworCiB0eXBlZGVmIHN0cnVjdCBfRXdrX1Zp
ZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19W
aWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCkBAIC05MSw2ICs5Nyw5IEBA
IHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7
IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwogICAgIHVuc2ln
bmVkIGxvbmcgdmVyc2lvbjsKIAorICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfc2hvdykoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QsIEVpbmFfUmVjdGFuZ2xlIHJlY3QsIEV3a19UZXh0X0RpcmVj
dGlvbiB0ZXh0X2RpcmVjdGlvbiwgZG91YmxlIHBhZ2Vfc2NhbGVfZmFjdG9yLCBFaW5hX0xpc3Qg
Kml0ZW1zLCBpbnQgc2VsZWN0ZWRfaW5kZXgpOworICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVf
aGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOworCiAgICAgLy8gZXZlbnQgaGFuZGxpbmc6
CiAgICAgLy8gIC0gcmV0dXJucyB0cnVlIGlmIGhhbmRsZWQKICAgICAvLyAgLSBpZiBvdmVycmlk
ZGVuLCBoYXZlIHRvIGNhbGwgcGFyZW50IG1ldGhvZCBpZiBkZXNpcmVkCkBAIC0xMDgsNyArMTE3
LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBUaGUgdmVyc2lvbiB5b3Ug
aGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3
X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OIDFVTAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDJVTAog
CiAvKioKICAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1
Y3R1cmUuCkBAIC0xMjAsNyArMTI5LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7
CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICovCi0jZGVmaW5lIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVX
S19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVm
aW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2Ns
YXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTU5MCw2ICs1OTksMjcgQEAgRUFQSSBFaW5h
X0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0
LCBFd2tfRmluZF9PcHQKICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmRfaGln
aGxpZ2h0X2NsZWFyKEV2YXNfT2JqZWN0ICpvKTsKIAorLyoqCisgKiBTZWxlY3RzIGluZGV4IG9m
IGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlu
cyBwb3B1cCBtZW51LgorICogQHBhcmFtIGluZGV4IGluZGV4IG9mIGl0ZW0gdG8gc2VsZWN0Cisg
KgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBm
YWlsdXJlIChwcm9iYWJseQorICogICAgICAgICBwb3B1cCBtZW51IGlzIG5vdCBzZWxlY3RlZCBv
ciBpbmRleCBpcyBvdXQgb2YgcmFuZ2UpCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3Bv
cHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgaW5kZXgpOworCisv
KioKKyAqIENsb3NlcyBjdXJyZW50IHBvcHVwIG1lbnUuCisgKgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgY29udGFpbnMgcG9wdXAgbWVudS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAg
IHBvcHVwIG1lbnUgaXMgbm90IHNlbGVjdGVkKQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmll
d19wb3B1cF9tZW51X2Nsb3NlKEV2YXNfT2JqZWN0ICpvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3ByaXZhdGUuaAppbmRleCBmNDAyOTg1ODcxM2NkZjZiZDg3YmE4OGE2YjFhZjEzNmE3
N2M0ZmZiLi5kYjhhYjY2YTYxYjE0ZjE2N2RhY2RkNWU5ODc0NWU4ZmJmZjQ5MGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
CkBAIC0yMyw3ICsyMyw5IEBACiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
IDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEN1cnNvcjsKQEAgLTMxLDYgKzMzLDExIEBAIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBJbnRTaXplOwogfQogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBvcHVw
SXRlbTsKK2NsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsOworfQorCiB0eXBlZGVmIHN0cnVjdCBf
RXdrX0Rvd25sb2FkX0pvYiBFd2tfRG93bmxvYWRfSm9iOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19G
b3JtX1N1Ym1pc3Npb25fUmVxdWVzdCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q7CiB0eXBl
ZGVmIHN0cnVjdCBfRXdrX1VybF9SZXF1ZXN0IEV3a19VcmxfUmVxdWVzdDsKQEAgLTg5LDQgKzk2
LDYgQEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2VudGVyKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICNlbmRpZgog
Cit2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywg
V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3Rvciwg
Y29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0
ZWRJbmRleCk7CisKICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWYwYjM3ZDY3ZGU1NjFlNjQ5ZDM5NmUwYzNmYjM0ZWQyOTBmODFkMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlF
ZmwuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKKworI2luY2x1ZGUgIk5hdGl2ZVdl
Yk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKyNpbmNsdWRlICJld2tf
dmlldy5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5RWZsKEV2YXNf
T2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisgICAg
OiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCisgICAgLCBtX3dlYlZpZXcod2ViVmlldykKK3sK
K30KKworV2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1lbnVQcm94eUVmbCgpCit7Cit9
CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVj
dCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFj
dG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9w
dXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBld2tfdmlld19wb3B1
cF9tZW51X3JlcXVlc3QobV93ZWJWaWV3LCB0aGlzLCByZWN0LCB0ZXh0RGlyZWN0aW9uLCBwYWdl
U2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBXZWJQb3B1cE1l
bnVQcm94eUVmbDo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9j
bG9zZShtX3dlYlZpZXcpOworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjp2YWx1ZUNo
YW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpCit7CisgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdl
ZEZvclBvcHVwTWVudSh0aGlzLCBuZXdTZWxlY3RlZEluZGV4KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBv
cHVwTWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVw
TWVudVByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZiZmM0OWQ5MGYzYmQxNjUxNjRmOWU4NDhkMTA0
NGY3MDRjZTQxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCisjZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5
RWZsX2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK3R5cGVkZWYgc3RydWN0
IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
SW50UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsK
KworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5RWZsPiBj
cmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNs
aWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJv
eHlFZmwod2ViVmlldywgY2xpZW50KSk7CisgICAgfQorICAgIH5XZWJQb3B1cE1lbnVQcm94eUVm
bCgpOworCisgICAgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0
b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qg
c2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CisKKyAgICB2b2lkIHZh
bHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCk7CisKK3ByaXZhdGU6CisgICAgV2ViUG9w
dXBNZW51UHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50Kik7
CisKKyAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158983</attachid>
            <date>2012-08-16 19:47:46 -0700</date>
            <delta_ts>2012-08-26 19:46:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120817114709.patch</filename>
            <type>text/plain</type>
            <size>29477</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1ODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzY4NzI3YTU4N2Q5ZDYz
NTFjOWQ2NzFkMzFmYTk5ZmVhMGQ5YTliMS4uMmZiYjQzZTkxYjYwZmZmY2IyMDM2NzM4MGZmMTU5
OGJjMjgyMmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA4LTE2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5
RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1l
bnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93
UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQ
b3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0xNiAgSm9jZWx5biBU
dXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gUmVt
b3ZlIGFuIHVudXNlZCB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAxZjVm
ZmE5MzFmMjc3M2YyMTE5ZWU2OWMyNTc1NmEzNjY3NjIyYmRiLi5kZTBlY2ZhOTM5NzAxNTJhZjhm
YzhiMjQ2MWY4OWYyNDVmN2Y2MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNTUs
NiArNTUsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21h
aW4uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5jcHAKQEAgLTc1LDYgKzc2LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZs
LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQ
cm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1
cE1lbnVQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNw
cAogCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKQEAg
LTEyNiw2ICsxMjgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9lZmwiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIK
QEAgLTIwNiw2ICsyMDksNyBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5o
IgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X21haW4uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9yZXF1ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBkOTgwMjNkZTZlMGVm
YTZkZTA3ZmM5ZmI4YzIxNWQzOWNjNDg5ODdjLi5mMWMwOTBlZGJjNDI2ODkyYWM0OGJlOThmOGNi
Yzk2MDg2NGEzMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJL
aXQyLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2UuaCIK
ICNpbmNsdWRlICJld2tfbWFpbi5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbi5oIgorI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJl
d2tfdXJsX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDcyNmNhYWFlMWExZWZhOTYz
OGRiNzc0NzY3NmIwMWEzMWEyMWM2YjYuLmJhY2JmMzAwMDQzZjAwZmFmZmYzOTdiMTg3MmMzOWQz
MjY1YWQ2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlQ2xpZW50SW1wbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0
TWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdr
X2NvbnRleHRfcHJpdmF0ZS5oIgpAQCAtMjA0LDEwICsyMDUsOSBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wg
d2FzRXZlbgogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5
KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biAwOworICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdl
dCwgcGFnZSk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVu
dEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTk1NTE3MDcxNmY4YjNlOWY1YTEyYWM4ODZhYzFkZjA4MTJmNjczNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19w
b3B1cF9tZW51X2l0ZW0uY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgorCisjaW5jbHVk
ZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworLyoqCisgKiBcc3RydWN0ICBfRXdrX1BvcHVwX01lbnVfSXRlbQorICogQGJyaWVm
ICAgQ29udGFpbnMgdGhlIHBvcHVwIG1lbnUgZGF0YS4KKyAqLworc3RydWN0IF9Fd2tfUG9wdXBf
TWVudV9JdGVtIHsKKyAgICBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgdHlwZTsKKyAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgdGV4dDsKKworICAgIF9Fd2tfUG9wdXBfTWVudV9JdGVtKEV3a19Qb3B1
cF9NZW51X0l0ZW1fVHlwZSBfdHlwZSwgY29uc3QgY2hhciogX3RleHQpCisgICAgICAgIDogdHlw
ZShfdHlwZSkKKyAgICAgICAgLCB0ZXh0KF90ZXh0KQorICAgIHsgfQorCisgICAgfl9Fd2tfUG9w
dXBfTWVudV9JdGVtKCkKKyAgICB7CisgICAgfQorfTsKKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfUE9QVVBfTUVOVV9TRVBBUkFUT1IsIFdlYlBvcHVwSXRlbTo6U2VwYXJhdG9y
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfSVRFTSwgV2Vi
UG9wdXBJdGVtOjpJdGVtKTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENvbnN0cnVjdHMgYSBF
d2tfUG9wdXBfTWVudV9JdGVtLgorICovCitFd2tfUG9wdXBfTWVudV9JdGVtKiBld2tfcG9wdXBf
bWVudV9pdGVtX25ldyhXZWJQb3B1cEl0ZW06OlR5cGUgdHlwZSwgY29uc3QgY2hhciogdGV4dCkK
K3sKKyAgICByZXR1cm4gbmV3IEV3a19Qb3B1cF9NZW51X0l0ZW0oc3RhdGljX2Nhc3Q8RXdrX1Bv
cHVwX01lbnVfSXRlbV9UeXBlPih0eXBlKSwgdGV4dCk7Cit9CisKKy8qKgorICogQGludGVybmFs
CisgKiBGcmVlcyBhIEV3a19Qb3B1cF9NZW51X0l0ZW0uCisgKi8KK3ZvaWQgZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oaXRlbSk7CisgICAgZGVsZXRlIGl0ZW07Cit9CisKK0V3a19Qb3B1
cF9NZW51X0l0ZW1fVHlwZSBld2tfcG9wdXBfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Q
b3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGl0ZW0sIEVXS19QT1BVUF9NRU5VX1VOS05PV04pOworCisgICAgcmV0dXJuIGl0ZW0tPnR5
cGU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19wb3B1cF9tZW51X2l0ZW1fdGV4dF9nZXQoY29uc3Qg
RXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoaXRlbSwgMCk7CisKKyAgICByZXR1cm4gaXRlbS0+dGV4dDsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0u
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MWI0ZDdiMmJkMmUyMjFkMThhZWI1N2ZiZGU3NzliNTg2ZmZhYTY5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBm
aWxlICAgIGV3a19wb3B1cF9tZW51X2l0ZW0uaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBF
d2sgUG9wdXAgTWVudSBJdGVtIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19wb3B1cF9tZW51X2l0
ZW1faAorI2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX2gKKworI2luY2x1ZGUgPEVpbmEuaD4K
KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogRW51bSB2
YWx1ZXMgY29udGFpbmluZyB0eXBlIG9mIHBvcHVwIG1lbnUgaXRlbS4gKi8KK3R5cGVkZWYgZW51
bSB7CisgICAgRVdLX1BPUFVQX01FTlVfU0VQQVJBVE9SLAorICAgIEVXS19QT1BVUF9NRU5VX0lU
RU0sCisgICAgRVdLX1BPUFVQX01FTlVfVU5LTk9XTiA9IC0xCit9IEV3a19Qb3B1cF9NZW51X0l0
ZW1fVHlwZTsKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfUG9wdXBfTWVudV9J
dGVtICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSBFd2tfUG9wdXBfTWVu
dV9JdGVtOworCisvKioKKyAqIFJldHVybnMgdHlwZSBvZiB0aGUgcG9wdXAgbWVudSBpdGVtLgor
ICoKKyAqIEBwYXJhbSBpdGVtIHRoZSBwb3B1cCBtZW51IGl0ZW0gaW5zdGFuY2UKKyAqCisgKiBA
cmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBAYSBpdGVtIG9yIEBjIEVXS19QT1BVUF9NRU5VX1VOS05P
V04gaW4gY2FzZSBvZiBlcnJvci4KKyAqLworRUFQSSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUg
ZXdrX3BvcHVwX21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtICpp
dGVtKTsKKworLyoqCisgKiBSZXR1cm5zIHRleHQgb2YgdGhlIHBvcHVwIG1lbnUgaXRlbS4KKyAq
CisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAgbWVudSBpdGVtIGluc3RhbmNlCisgKgorICogQHJl
dHVybiB0aGUgdGV4dCBvZiB0aGUgQGEgaXRlbSBvciBAYyBOVUxMIGluIGNhc2Ugb2YgZXJyb3Iu
IFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5n
c2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29t
ZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBp
bnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkK
KyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfcG9wdXBfbWVudV9pdGVtX3RleHRfZ2V0KGNvbnN0
IEV3a19Qb3B1cF9NZW51X0l0ZW0gKml0ZW0pOworICAgIAorI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKyNlbmRpZiAvLyBld2tfcG9wdXBfbWVudV9pdGVtX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRl
bV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRmZjlkYmRjMDUxNjNkMmJkNTk5ZjJiZDU1MWUzZDE3
ZDBlYTlhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIGV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZV9oCisjZGVmaW5lIGV3
a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIK
KworRXdrX1BvcHVwX01lbnVfSXRlbSogZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcoV2ViS2l0OjpX
ZWJQb3B1cEl0ZW06OlR5cGUgdHlwZSwgY29uc3QgY2hhciogdGV4dCk7Cit2b2lkIGV3a19wb3B1
cF9tZW51X2l0ZW1fZnJlZShFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKTsKKworI2VuZGlmIC8v
IGV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggY2U3ZjdiNDU0OTQ2M2MxMGZiYWNjYjc1NzNh
M2JlYWFkZTI1M2IwZC4uMTk5ZGRmYzhlN2ZiZDcwNDg1N2QxYWE2ZjEwZWE2MDU4OTMyYzhkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAt
MzEsMTAgKzMxLDE0IEBACiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0
cmluZy5oIgogI2luY2x1ZGUgIldLVVJMLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisj
aW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3
YXJkX2xpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAi
ZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVu
dV9pdGVtX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3
a192aWV3X2ZpbmRfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19mb3JtX2Ns
aWVudF9wcml2YXRlLmgiCkBAIC04Myw2ICs4Nyw5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhIHsKICAgICBMb2FkaW5nUmVzb3VyY2VzTWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CiAg
ICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBiYWNrRm9yd2FyZExpc3Q7CiAKKyAgICBXZWJQb3B1
cE1lbnVQcm94eUVmbCogcG9wdXBNZW51UHJveHk7CisgICAgRWluYV9MaXN0KiBwb3B1cE1lbnVJ
dGVtczsKKwogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgIGJvb2wgaXNVc2luZ0Vjb3JlWDsKICNl
bmRpZgpAQCAtOTYsNiArMTAzLDggQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewog
ICAgIF9Fd2tfVmlld19Qcml2YXRlX0RhdGEoKQogICAgICAgICA6IGN1cnNvck9iamVjdCgwKQog
ICAgICAgICAsIGJhY2tGb3J3YXJkTGlzdCgwKQorICAgICAgICAsIHBvcHVwTWVudVByb3h5KDAp
CisgICAgICAgICwgcG9wdXBNZW51SXRlbXMoMCkKICNpZmRlZiBIQVZFX0VDT1JFX1gKICAgICAg
ICAgLCBpc1VzaW5nRWNvcmVYKGZhbHNlKQogI2VuZGlmCkBAIC0xMTQsNiArMTIzLDEwIEBAIHN0
cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2Rl
bChjdXJzb3JPYmplY3QpOwogCiAgICAgICAgIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9mcmVlKGJh
Y2tGb3J3YXJkTGlzdCk7CisKKyAgICAgICAgdm9pZCogaXRlbTsKKyAgICAgICAgRUlOQV9MSVNU
X0ZSRUUocG9wdXBNZW51SXRlbXMsIGl0ZW0pCisgICAgICAgICAgICBld2tfcG9wdXBfbWVudV9p
dGVtX2ZyZWUoc3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01lbnVfSXRlbSo+KGl0ZW0pKTsKICAgICB9
CiB9OwogCkBAIC0xNDQ4LDMgKzE0NjEsNjYgQEAgdm9pZCBld2tfdmlld19jb250ZW50c19zaXpl
X2NoYW5nZWQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEludFNpemUmIHMKICAg
ICBwcml2LT52aWV3cG9ydEhhbmRsZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNl
bmRpZgogfQorCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElP
Tl9SSUdIVF9UT19MRUZULCBSVEwpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
VEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgTFRSKTsKKwordm9pZCBld2tfdmlld19wb3B1
cF9tZW51X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYlBvcHVwTWVudVByb3h5RWZs
KiBwb3B1cE1lbnUsIGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVj
dGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4m
IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNt
YXJ0RGF0YS0+YXBpKTsKKworICAgIEFTU0VSVChwb3B1cE1lbnUpOworCisgICAgaWYgKHNtYXJ0
RGF0YS0+YXBpLT5wb3B1cF9tZW51X3Nob3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChw
cml2LT5wb3B1cE1lbnVQcm94eSkKKyAgICAgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShl
d2tWaWV3KTsKKyAgICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IHBvcHVwTWVudTsKKworICAgIEVp
bmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7CisgICAgc2l6ZV90IHNpemUgPSBpdGVtcy5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgRXdrX1Bv
cHVwX01lbnVfSXRlbSogaXRlbSA9IGV3a19wb3B1cF9tZW51X2l0ZW1fbmV3KGl0ZW1zW2ldLm1f
dHlwZSwgaXRlbXNbaV0ubV90ZXh0LnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIHBvcHVwSXRl
bXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRlbXMsIGl0ZW0pOworICAgIH0KKyAgICBwcml2
LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7CisKKyAgICBzbWFydERhdGEtPmFwaS0+cG9w
dXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwgc3RhdGljX2Nhc3Q8RXdrX1RleHRfRGlyZWN0
aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBwb3B1cEl0ZW1zLCBzZWxlY3Rl
ZEluZGV4KTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19P
YmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHByaXYtPnBvcHVwTWVudVByb3h5LCBmYWxzZSk7CisKKyAgICBpZiAoc21hcnREYXRhLT5h
cGktPnBvcHVwX21lbnVfaGlkZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVf
aGlkZShzbWFydERhdGEpOworCisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJFRShw
cml2LT5wb3B1cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9m
cmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7CisKKyAgICBwcml2
LT5wb3B1cE1lbnVQcm94eSA9IDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29s
IGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25l
ZCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZhbHNlKTsKKworICAgIGlmIChzZWxlY3RlZElu
ZGV4ID49IGVpbmFfbGlzdF9jb3VudChwcml2LT5wb3B1cE1lbnVJdGVtcykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5LT52YWx1ZUNoYW5nZWQoc2Vs
ZWN0ZWRJbmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDQyM2Y5ZTE0MzE4MzJiMjQwYjkyNzdhNThk
MTcwYmVhMjMxNzkxNjMuLjY1MDM0ZDM3Y2E4ZjFkMzc5MjVkM2UxNmI5NWQ3NDQyMjNhZGYyYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtODMs
NiArODMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8vLyBFbnVtIHZhbHVlcyBjb250
YWluaW5nIHRleHQgZGlyZWN0aW9uYWxpdHkgdmFsdWVzLgordHlwZWRlZiBlbnVtIHsKKyAgICBF
V0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfVEVYVF9ESVJFQ1RJT05f
TEVGVF9UT19SSUdIVAorfSBFd2tfVGV4dF9EaXJlY3Rpb247CisKIHR5cGVkZWYgc3RydWN0IF9F
d2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBf
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiAKQEAgLTkxLDYgKzk3
LDkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZhc19TbWFydF9DbGFz
cyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCiAgICAg
dW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9zaG93
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdrX1RleHRf
RGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3IsIEVpbmFf
TGlzdCAqaXRlbXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAgRWluYV9Cb29sICgqcG9wdXBf
bWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICAvLyBldmVudCBoYW5k
bGluZzoKICAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxlZAogICAgIC8vICAtIGlmIG92
ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQKQEAgLTEwOCw3
ICsxMTcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIFRoZSB2ZXJzaW9u
IHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEgRXdr
X1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJU
X0NMQVNTX1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04g
MlVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNz
IHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsxMjksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0Ns
YXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2Vl
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5p
dCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0K
KyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21h
cnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUg
RXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkwLDYgKzU5OSwyNyBAQCBFQVBJ
IEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIg
KnRleHQsIEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmlu
ZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisvKioKKyAqIFNlbGVjdHMgaW5k
ZXggb2YgY3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNv
bnRhaW5zIHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgaXRlbSB0byBzZWxl
Y3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNF
IG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVwIG1lbnUgaXMgbm90IHNlbGVj
dGVkIG9yIGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBpbmRleCk7
CisKKy8qKgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisgKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAg
ICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3
a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEzY2RmNmJkODdiYTg4YTZiMWFm
MTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4NzQ1ZThmYmZmNDkwYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2
YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiArMzMsMTEgQEAgY2xhc3MgSW50
UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
UG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7Cit9CisKIHR5cGVkZWYgc3Ry
dWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBlZGVmIHN0cnVjdCBf
RXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwpAQCAtODks
NCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZW50
ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19hY2NlbGVyYXRl
ZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogI2Vu
ZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFj
dG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZjBiMzdkNjdkZTU2MWU2NDlkMzk2ZTBjM2ZiMzRlZDI5MGY4MWQzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQ
cm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVkZSAiTmF0
aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUg
ImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBNZW51UHJveHlFZmwo
RXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkK
KyAgICA6IFdlYlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3
KQoreworfQorCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldlYlBvcHVwTWVudVByb3h5RWZsKCkK
K3sKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1BvcHVwTWVudShjb25zdCBJ
bnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2Nh
bGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGV3a192aWV3
X3BvcHVwX21lbnVfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIHJlY3QsIHRleHREaXJlY3Rpb24s
IHBhZ2VTY2FsZUZhY3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFdlYlBv
cHVwTWVudVByb3h5RWZsOjpoaWRlUG9wdXBNZW51KCkKK3sKKyAgICBld2tfdmlld19wb3B1cF9t
ZW51X2Nsb3NlKG1fd2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OnZh
bHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2NsaWVudC0+dmFsdWVD
aGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG5ld1NlbGVjdGVkSW5kZXgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUG9wdXBNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UG9wdXBNZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmJmYzQ5ZDkwZjNiZDE2NTE2NGY5ZTg0
OGQxMDQ0ZjcwNGNlNDE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViUG9wdXBNZW51
UHJveHlFZmxfaAorCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKKwordHlwZWRlZiBz
dHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVBy
b3h5OworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQ
cm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlF
Zmw+IGNyZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVu
dCogY2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1l
bnVQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQpKTsKKyAgICB9CisgICAgfldlYlBvcHVwTWVudVBy
b3h5RWZsKCk7CisKKyAgICB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0
IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50
MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKKworICAgIHZv
aWQgdmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KTsKKworcHJpdmF0ZToKKyAgICBX
ZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09iamVjdCosIFdlYlBvcHVwTWVudVByb3h5OjpDbGll
bnQqKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYjdj
OTE1OGI2MzkyN2NiYTFkOGNiZDg0OGM1YzgyNzQ1OTQ1YjU0Li4xODBmNTAzZDgzOTViN2NiODRk
YTU4MWRhMGQ3ZjUyN2Y5ODQzNThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDgtMTYg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dL
Ml0gSW1wbGVtZW50IFdlYlBvcHVwTWVudVByb3h5RWZsIHRvIHN1cHBvcnQgPHNlbGVjdD4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NjE2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9l
Zmwtd2syL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCBmYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlz
dC1wb3B1cC1jcmFzaC5odG1sCisKIDIwMTItMDgtMTYgIEtpcmFuIE11cHBhbGEgIDxjbXVwcGFs
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRlc3QgZXhwZWN0YXRpb25zIGZvciBmYXN0
L292ZXJmbG93L2xpbmUtY2xhbXAtYW5kLWNvbHVtbnMuaHRtbCBvbiBtYWMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlOWE2MmZkOWZiMGFl
NWFhZTk2MjU4ZWQzOWZmNmQ4ODMxMjVmMjc0Li41OWQ1OTA2ZWVkNGI2NjczNGIzZmE0MjBlNDMz
NTVlZDM1OTA5NWJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0zOCw3ICszOCw2IEBAIEJVR1dLRUZMIDogaW5zcGVjdG9yL2RlYnVnZ2Vy
L2RlYnVnZ2VyLXN1c3BlbmQtYWN0aXZlLWRvbS1vYmplY3RzLmh0bWwgPSBDUkFTSAogQlVHV0tF
RkwgOiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3JpcHQuaHRt
bCA9IENSQVNICiBCVUdXS0VGTCA6IGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1ldmFsLW9u
LWNhbGwtZnJhbWUuaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGZhc3QvbG9hZGVyL2RvY3VtZW50
LXdpdGgtZnJhZ21lbnQtdXJsLTEuaHRtbCA9IENSQVNICi1CVUdXS0VGTCA6IGZhc3QvZm9ybXMv
c2VsZWN0L21lbnVsaXN0LXBvcHVwLWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBmYXN0
L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBm
YXN0L2V2ZW50cy9rZXlldmVudC1pZnJhbWUtcmVtb3ZlZC1jcmFzaC5odG1sID0gQ1JBU0gKIEJV
R1dLRUZMIDogZmFzdC9vdmVyZmxvdy9sb3RzLW9mLXNpYmxpbmctaW5saW5lLWJveGVzLmh0bWwg
PSBDUkFTSAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160623</attachid>
            <date>2012-08-26 19:46:52 -0700</date>
            <delta_ts>2012-08-26 21:38:24 -0700</delta_ts>
            <desc>patch with unit tests</desc>
            <filename>bug-88616-20120827114644.patch</filename>
            <type>text/plain</type>
            <size>34911</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYzZDI4N2YzMzA0ZTJh
YzllZTQxNzlhMzU5Mzk5YzQ2MDVmNmJhMC4uMjk4YjljZWJjNTY1OGEwZGE0MWRkOGUxMzgwZTkz
OTMwNzdhNDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTI2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OkVX
SzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNl
OjpTZXRVcCk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OmxvYWRV
cmxTeW5jKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgRXh0cmFjdGVkIGZyb20gbG9hZFVybFN5bmMgZm9y
IHRlc3RzIHVzaW5nIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQgdG8KKyAgICAgICAgc2hhcmUg
b25Mb2FkRmluaXNoZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJV
bml0VGVzdEJhc2U6OmV3a1ZpZXdDbGFzcyk6CisgICAgICAgIEFkZGVkIGV3a1ZpZXdDbGFzcyB0
byB0ZXN0IHNtYXJ0IG1ldGhvZHMgc3VjaCBhcyBwb3B1cF9tZW51X3Nob3cuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAocG9w
dXBfbWVudV9zaG93KToKKyAgICAgICAgKFRFU1RfRik6IEFkZGVkIGEgdGVzdCBjYXNlIGZvciBl
d2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCBhbmQgcmVsYXRlZCBjb2Rlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBN
ZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldl
YlBvcHVwTWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlF
Zmw6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVm
bDo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eUVmbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTI1ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNh
aXJvIEJ1aWxkIEJyb2tlbiBkdWUgdG8gbWlzc2luZyBleHBvcnQgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEy
ZDZjOGVhNi4uM2EwNTA1YzZhMTEzMThkMjg5MDQzMzllMjlkMjQ4N2ZiODRmYTdmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTU1LDYgKzU1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03NSw2
ICs3Niw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYkNv
b2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCkBAIC0xMjYsNiArMTI4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCkBAIC0yMDYsNiArMjA5LDcgQEAgU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKaW5kZXggZDk4MDIzZGU2ZTBlZmE2ZGUwN2ZjOWZiOGMyMTVkMzljYzQ4OTg3Yy4u
ZjFjMDkwZWRiYzQyNjg5MmFjNDhiZTk4ZjhjYmM5NjA4NjRhMzE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNs
dWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNsdWRlICJld2tfcG9w
dXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCA3MjZjYWFhZTFhMWVmYTk2MzhkYjc3NDc2NzZiMDFhMzFhMjFjNmI2Li5iYWNi
ZjMwMDA0M2YwMGZhZmZmMzk3YjE4NzJjMzlkMzI2NWFkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTIwNCwx
MCArMjA1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW4KIH0KICNlbmRpZgogCi1QYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51
UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NTUxNzA3MTZmOGIz
ZTlmNWExMmFjODg2YWMxZGYwODEyZjY3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcApAQCAtMCwwICsx
LDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19w
b3B1cF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAgX0V3
a19Qb3B1cF9NZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBwb3B1cCBtZW51IGRh
dGEuCisgKi8KK3N0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSB7CisgICAgRXdrX1BvcHVwX01l
bnVfSXRlbV9UeXBlIHR5cGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHRleHQ7CisKKyAgICBf
RXdrX1BvcHVwX01lbnVfSXRlbShFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgX3R5cGUsIGNvbnN0
IGNoYXIqIF90ZXh0KQorICAgICAgICA6IHR5cGUoX3R5cGUpCisgICAgICAgICwgdGV4dChfdGV4
dCkKKyAgICB7IH0KKworICAgIH5fRXdrX1BvcHVwX01lbnVfSXRlbSgpCisgICAgeworICAgIH0K
K307CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfU0VQQVJB
VE9SLCBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19QT1BVUF9NRU5VX0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKKy8qKgorICog
QGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLworRXdr
X1BvcHVwX01lbnVfSXRlbSogZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcoV2ViUG9wdXBJdGVtOjpU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRleHQpCit7CisgICAgcmV0dXJuIG5ldyBFd2tfUG9wdXBf
TWVudV9JdGVtKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4odHlwZSksIHRl
eHQpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfUG9wdXBfTWVudV9J
dGVtLgorICovCit2b2lkIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShFd2tfUG9wdXBfTWVudV9J
dGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOworICAg
IGRlbGV0ZSBpdGVtOworfQorCitFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgZXdrX3BvcHVwX21l
bnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfUE9QVVBfTUVOVV9VTktO
T1dOKTsKKworICAgIHJldHVybiBpdGVtLT50eXBlOworfQorCitjb25zdCBjaGFyKiBld2tfcG9w
dXBfbWVudV9pdGVtX3RleHRfZ2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisgICAgcmV0
dXJuIGl0ZW0tPnRleHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFiNGQ3YjJiZDJlMjIx
ZDE4YWViNTdmYmRlNzc5YjU4NmZmYWE2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgK
KyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfcG9wdXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVf
aXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1
cCBtZW51IGl0ZW0uICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFS
QVRPUiwKKyAgICBFV0tfUE9QVVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05P
V04gPSAtMQorfSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX1BvcHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Q
b3B1cF9NZW51X0l0ZW0gRXdrX1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5
cGUgb2YgdGhlIHBvcHVwIG1lbnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAg
bWVudSBpdGVtIGluc3RhbmNlCisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRl
bSBvciBAYyBFV0tfUE9QVVBfTUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VB
UEkgRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQo
Y29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSAqaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0
IG9mIHRoZSBwb3B1cCBtZW51IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1l
bnUgaXRlbSBpbnN0YW5jZQorICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0g
b3IgQGMgTlVMTCBpbiBjYXNlIG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3Bv
cHVwX21lbnVfaXRlbV90ZXh0X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtICppdGVtKTsK
KyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVw
X21lbnVfaXRlbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZmY5
ZGJkYzA1MTYzZDJiZDU5OWYyYmQ1NTFlM2QxN2QwZWE5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcG9wdXBfbWVu
dV9pdGVtX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAor
CisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19w
b3B1cF9tZW51X2l0ZW1fbmV3KFdlYktpdDo6V2ViUG9wdXBJdGVtOjpUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIHRleHQpOwordm9pZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSk7CisKKyNlbmRpZiAvLyBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IGNlN2Y3YjQ1NDk0NjNjMTBmYmFjY2I3NTczYTNiZWFhZGUyNTNiMGQuLjQ2MzJhMGQ3MTkwZjg0
NTlkZjE5MjM5NDU2ODRhNWQ2YTZjODZhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMxLDEwICszMSwxNCBAQAogI2luY2x1ZGUgIldL
UmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgor
I2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVt
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODMsNiArODcs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNl
c01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFj
a0ZvcndhcmRMaXN0OwogCisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5
OworICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gK
ICAgICBib29sIGlzVXNpbmdFY29yZVg7CiAjZW5kaWYKQEAgLTk2LDYgKzEwMyw4IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkK
ICAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkK
KyAgICAgICAgLCBwb3B1cE1lbnVQcm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDAp
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNl
bmRpZgpAQCAtMTE0LDYgKzEyMywxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBl
d2tfYmFja19mb3J3YXJkX2xpc3RfZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIHZv
aWQqIGl0ZW07CisgICAgICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtKQor
ICAgICAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1
cF9NZW51X0l0ZW0qPihpdGVtKSk7CiAgICAgfQogfTsKIApAQCAtMTQ0OCwzICsxNDYxLDY2IEBA
IHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRD
aGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQs
IExUUik7CisKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBBU1NFUlQo
cG9wdXBNZW51KTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAg
ICBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKGV3a1ZpZXcpOworICAgIHByaXYtPnBvcHVwTWVu
dVByb3h5ID0gcG9wdXBNZW51OworCisgICAgRWluYV9MaXN0KiBwb3B1cEl0ZW1zID0gMDsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gZXdrX3Bv
cHVwX21lbnVfaXRlbV9uZXcoaXRlbXNbaV0ubV90eXBlLCBpdGVtc1tpXS5tX3RleHQudXRmOCgp
LmRhdGEoKSk7CisKKyAgICAgICAgcG9wdXBJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQocG9wdXBJ
dGVtcywgaXRlbSk7CisgICAgfQorICAgIHByaXYtPnBvcHVwTWVudUl0ZW1zID0gcG9wdXBJdGVt
czsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X3Nob3coc21hcnREYXRhLCByZWN0
LCBzdGF0aWNfY2FzdDxFd2tfVGV4dF9EaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBwYWdlU2Nh
bGVGYWN0b3IsIHBvcHVwSXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZh
bHNlKTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5ID0gMDsKKworICAgIGlmIChzbWFydERh
dGEtPmFwaS0+cG9wdXBfbWVudV9oaWRlKQorICAgICAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBf
bWVudV9oaWRlKHNtYXJ0RGF0YSk7CisKKyAgICB2b2lkKiBpdGVtOworICAgIEVJTkFfTElTVF9G
UkVFKHByaXYtPnBvcHVwTWVudUl0ZW1zLCBpdGVtKQorICAgICAgICBld2tfcG9wdXBfbWVudV9p
dGVtX2ZyZWUoc3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01lbnVfSXRlbSo+KGl0ZW0pKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3Qo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGludCBzZWxlY3RlZEluZGV4KQoreworICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5wb3B1cE1lbnVQcm94eSwg
ZmFsc2UpOworCisgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gZWluYV9saXN0X2NvdW50KHByaXYt
PnBvcHVwTWVudUl0ZW1zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcHJpdi0+cG9w
dXBNZW51UHJveHktPnZhbHVlQ2hhbmdlZChzZWxlY3RlZEluZGV4KTsKKworICAgIHJldHVybiB0
cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5k
ZXggYWZhNDU4NDZmNTFjOGYwYWQzNTk2ZmFmNTc1NzI4ZTI1NjQ0MTBiOS4uYjZhMWU0OTMxNTI4
ZDY5NjBkMTBjNDE4NmVhZWM3MzgxMmY1ZTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC04Myw2ICs4MywxMiBAQAogZXh0ZXJuICJDIiB7CiAj
ZW5kaWYKIAorLy8vIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdGV4dCBkaXJlY3Rpb25hbGl0eSB2
YWx1ZXMuCit0eXBlZGVmIGVudW0geworICAgIEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19M
RUZULAorICAgIEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hUCit9IEV3a19UZXh0X0Rp
cmVjdGlvbjsKKwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdf
U21hcnRfRGF0YTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyBFd2tfVmll
d19TbWFydF9DbGFzczsKIApAQCAtOTEsNiArOTcsOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlz
IGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KICAgICB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAKKyAg
ICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBF
aW5hX1JlY3RhbmdsZSByZWN0LCBFd2tfVGV4dF9EaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24sIGRv
dWJsZSBwYWdlX3NjYWxlX2ZhY3RvciwgRWluYV9MaXN0ICppdGVtcywgaW50IHNlbGVjdGVkX2lu
ZGV4KTsKKyAgICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkKTsKKwogICAgIC8vIGV2ZW50IGhhbmRsaW5nOgogICAgIC8vICAtIHJldHVybnMgdHJ1
ZSBpZiBoYW5kbGVkCiAgICAgLy8gIC0gaWYgb3ZlcnJpZGRlbiwgaGF2ZSB0byBjYWxsIHBhcmVu
dCBtZXRob2QgaWYgZGVzaXJlZApAQCAtMTA4LDcgKzExNyw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgewogICogVGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZl
cnNpb24gZmllbGQKICAqIGluIHRoZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUu
CiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwKKyNkZWZpbmUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAyVUwKIAogLyoqCiAgKiBJbml0aWFsaXplciBm
b3Igd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTIwLDcgKzEyOSw3
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9O
QU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0
X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFS
VF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAq
IEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1
cmUuCkBAIC01OTAsNiArNTk5LDI3IEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmlu
ZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCwgRXdrX0ZpbmRfT3B0CiAqLwogRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihFdmFzX09iamVj
dCAqbyk7CiAKKy8qKgorICogU2VsZWN0cyBpbmRleCBvZiBjdXJyZW50IHBvcHVwIG1lbnUuCisg
KgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgY29udGFpbnMgcG9wdXAgbWVudS4KKyAqIEBwYXJh
bSBpbmRleCBpbmRleCBvZiBpdGVtIHRvIHNlbGVjdAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAg
ICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQgb3IgaW5kZXggaXMgb3V0IG9mIHJhbmdl
KQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdChFdmFzX09i
amVjdCAqbywgdW5zaWduZWQgaW50IGluZGV4KTsKKworLyoqCisgKiBDbG9zZXMgY3VycmVudCBw
b3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1l
bnUuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxT
RSBvbiBmYWlsdXJlIChwcm9iYWJseQorICogICAgICAgICBwb3B1cCBtZW51IGlzIG5vdCBzZWxl
Y3RlZCkKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFz
X09iamVjdCAqbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXgg
ZjQwMjk4NTg3MTNjZGY2YmQ4N2JhODhhNmIxYWYxMzZhNzdjNGZmYi4uZGI4YWI2NmE2MWIxNGYx
NjdkYWNkZDVlOTg3NDVlOGZiZmY0OTBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjMsNyArMjMsOSBAQAogCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dERpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJzb3I7
CkBAIC0zMSw2ICszMywxMSBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIH0KIAor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQb3B1cEl0ZW07CitjbGFzcyBXZWJQb3B1cE1l
bnVQcm94eUVmbDsKK30KKwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2IgRXdrX0Rv
d25sb2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Qg
RXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVx
dWVzdCBFd2tfVXJsX1JlcXVlc3Q7CkBAIC04OSw0ICs5Niw2IEBAIGJvb2wgZXdrX3ZpZXdfYWNj
ZWxlcmF0ZWRfY29tcG9zaXRpbmdfbW9kZV9lbnRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dyk7CiBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZXhpdChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldyk7CiAjZW5kaWYKIAordm9pZCBld2tfdmlld19wb3B1cF9t
ZW51X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViUG9wdXBNZW51UHJv
eHlFZmwqIHBvcHVwTWVudSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHRE
aXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJLaXQ6Oldl
YlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworCiAjZW5kaWYgLy8g
ZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RCYXNlLmNwcAppbmRleCAzOWJjNWE0ZGJlYzY1Y2M0ZTI5ZjAzYWE0MWIzNDIxODlmMDRmMzFj
Li44MDMzZTI0OTg4ZWVhYjVjNjZkNTMxZmY0ODliNmUxMzE4YzQ4ZTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKQEAgLTIxLDcgKzIxLDYgQEAK
ICNpbmNsdWRlICJFV0syVW5pdFRlc3RCYXNlLmgiCiAKICNpbmNsdWRlICJFV0syVW5pdFRlc3RF
bnZpcm9ubWVudC5oIgotI2luY2x1ZGUgPEVXZWJLaXQyLmg+CiAjaW5jbHVkZSA8RWNvcmUuaD4K
ICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpA
QCAtNDIsNyArNDEsOSBAQCBzdGF0aWMgdm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiB1c2VyRGF0
YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5mbwogRVdLMlVuaXRUZXN0QmFz
ZTo6RVdLMlVuaXRUZXN0QmFzZSgpCiAgICAgOiBtX2Vjb3JlRXZhcygwKQogICAgICwgbV93ZWJW
aWV3KDApCisgICAgLCBtX2V3a1ZpZXdDbGFzcyhFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05B
TUVfVkVSU0lPTigiQnJvd3Nlcl9WaWV3IikpCiB7CisgICAgZXdrX3ZpZXdfc21hcnRfY2xhc3Nf
c2V0KCZtX2V3a1ZpZXdDbGFzcyk7CiB9CiAKIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAo
KQpAQCAtNjAsNyArNjEsOCBAQCB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKICAgICBl
Y29yZV9ldmFzX3Nob3cobV9lY29yZUV2YXMpOwogICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFz
X2dldChtX2Vjb3JlRXZhcyk7CiAKLSAgICBtX3dlYlZpZXcgPSBld2tfdmlld19hZGQoZXZhcyk7
CisgICAgRXZhc19TbWFydCogc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmbV9ld2tWaWV3
Q2xhc3Muc2MpOworICAgIG1fd2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFy
dCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7CiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1f
d2ViVmlldywgZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKIAogICAgIGV2YXNfb2JqZWN0
X3Jlc2l6ZShtX3dlYlZpZXcsIHdpZHRoLCBoZWlnaHQpOwpAQCAtNzcsMTAgKzc5LDE1IEBAIHZv
aWQgRVdLMlVuaXRUZXN0QmFzZTo6VGVhckRvd24oKQogCiB2b2lkIEVXSzJVbml0VGVzdEJhc2U6
OmxvYWRVcmxTeW5jKGNvbnN0IGNoYXIqIHVybCkKIHsKKyAgICBld2tfdmlld191cmlfc2V0KG1f
d2ViVmlldywgdXJsKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKK30KKwordm9pZCBF
V0syVW5pdFRlc3RCYXNlOjp3YWl0VW50aWxMb2FkRmluaXNoZWQoKQorewogICAgIGJvb2wgbG9h
ZEZpbmlzaGVkID0gZmFsc2U7CiAKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
bV93ZWJWaWV3LCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkLCAmbG9hZEZpbmlzaGVk
KTsKLSAgICBld2tfdmlld191cmlfc2V0KG1fd2ViVmlldywgdXJsKTsKIAogICAgIHdoaWxlICgh
bG9hZEZpbmlzaGVkKQogICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAppbmRleCAyOWQ1NWJlZTQ5Y2Fm
ZDkwYTVlYzI4NTZkYzViY2E3Y2RhOTcyYmU1Li5mYTZhYmQxNjA0OGNhYTgzMDkwYjU5NWFiODk1
ZTlmNzBjMTE2ODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJh
c2UuaApAQCAtMjAsNiArMjAsNyBAQAogI2lmbmRlZiBFV0syVW5pdFRlc3RCYXNlX2gKICNkZWZp
bmUgRVdLMlVuaXRUZXN0QmFzZV9oCiAKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUg
PEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KQEAgLTI5LDYgKzMwLDcgQEAgbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7CiBjbGFzcyBFV0sy
VW5pdFRlc3RCYXNlIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgRXZh
c19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KKyAgICBFd2tfVmlld19T
bWFydF9DbGFzcyogZXdrVmlld0NsYXNzKCkgeyByZXR1cm4gJm1fZXdrVmlld0NsYXNzOyB9CiAK
IHByb3RlY3RlZDoKICAgICBFV0syVW5pdFRlc3RCYXNlKCk7CkBAIC0zNywxMiArMzksMTQgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOwogCiAgICAgdm9pZCBsb2Fk
VXJsU3luYyhjb25zdCBjaGFyKiB1cmwpOworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CiAgICAgdm9pZCB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhjb25zdCBjaGFyKiBleHBlY3Rl
ZFRpdGxlKTsKICAgICB2b2lkIG1vdXNlQ2xpY2soaW50IHgsIGludCB5KTsKIAogcHJpdmF0ZToK
ICAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OwogICAgIEVjb3JlX0V2YXMqIG1fZWNvcmVFdmFz
OworICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzIG1fZXdrVmlld0NsYXNzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgRVdLMlVuaXRUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggNWVkYjA0Mzc5YTVm
ZDg5MTQxMDY0ZjYyMjhjMTQ0OThhNjAxYzFmMS4uM2VjY2ViZGNlYmIwZDMyMDc1YTQ0MWMyMzNk
ZDllYTFlNTZkNTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMTg4LDMgKzE4OCwzMCBAQCBU
RVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Qp
CiAgICAgQVNTRVJUX1RSVUUoaGFuZGxlZCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfZGVsKHdlYlZpZXcoKSwgImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0Iiwgb25Gb3JtQWJvdXRU
b0JlU3VibWl0dGVkKTsKIH0KKworRWluYV9Cb29sIHBvcHVwX21lbnVfc2hvdyhFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9uIHRl
eHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3IsIEVpbmFfTGlzdCAqaXRlbXMs
IGludCBzZWxlY3RlZF9pbmRleCkKK3sKKyAgICBFWFBFQ1RfRVEoc2VsZWN0ZWRfaW5kZXgsIDIp
OworICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KHNkLT5zZWxmLCAw
KSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3
a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KQoreworICAgIGNvbnN0IGNoYXIqIHNlbGVjdEhUTUwg
PQorICAgICAgICAiPCFkb2N0eXBlIGh0bWw+PGJvZHk+PHNlbGVjdCBvbmNoYW5nZT1cImRvY3Vt
ZW50LnRpdGxlPXRoaXMudmFsdWU7XCI+IgorICAgICAgICAiPG9wdGlvbj5maXJzdDwvb3B0aW9u
PjxvcHRpb24+c2Vjb25kPC9vcHRpb24+PG9wdGlvbiBzZWxlY3RlZD50aGlyZDwvb3B0aW9uPiIK
KyAgICAgICAgIjwvc2VsZWN0PjwvYm9keT4iOworCisgICAgZXdrVmlld0NsYXNzKCktPnBvcHVw
X21lbnVfc2hvdyA9IHBvcHVwX21lbnVfc2hvdzsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5n
X2xvYWQod2ViVmlldygpLCBzZWxlY3RIVE1MLCAiZmlsZTovLy8iLCAwKTsKKyAgICB3YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKyAgICBtb3VzZUNsaWNrKDMwLCAyMCk7CisgICAgd2FpdFVudGls
VGl0bGVDaGFuZ2VkVG8oImZpcnN0Iik7CisgICAgQVNTRVJUX1NUUkVRKGV3a192aWV3X3RpdGxl
X2dldCh3ZWJWaWV3KCkpLCAiZmlyc3QiKTsKKworICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X3Bv
cHVwX21lbnVfY2xvc2Uod2ViVmlldygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKGV3a192aWV3X3Bv
cHVwX21lbnVfc2VsZWN0KHdlYlZpZXcoKSwgMCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZjBiMzdkNjdkZTU2MWU2NDlkMzk2ZTBjM2ZiMzRlZDI5MGY4MWQzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
CisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VF
dmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgImV3a192aWV3Lmgi
CisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBNZW51UHJveHlFZmwoRXZhc19PYmplY3Qq
IHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkKKyAgICA6IFdlYlBv
cHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQoreworfQorCitX
ZWJQb3B1cE1lbnVQcm94eUVmbDo6fldlYlBvcHVwTWVudVByb3h5RWZsKCkKK3sKK30KKwordm9p
ZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0
LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNv
bnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGV3a192aWV3X3BvcHVwX21lbnVf
cmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIHJlY3QsIHRleHREaXJlY3Rpb24sIHBhZ2VTY2FsZUZh
Y3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5
RWZsOjpoaWRlUG9wdXBNZW51KCkKK3sKKyAgICBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKG1f
d2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OnZhbHVlQ2hhbmdlZChp
bnQgbmV3U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9w
dXBNZW51KHRoaXMsIG5ld1NlbGVjdGVkSW5kZXgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51
UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZmJmYzQ5ZDkwZjNiZDE2NTE2NGY5ZTg0OGQxMDQ0ZjcwNGNl
NDE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
b3B1cE1lbnVQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViUG9wdXBNZW51UHJveHlFZmxfaAor
CisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNf
T2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRSZWN0
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFz
cyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlFZmw+IGNyZWF0ZShF
dmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94eUVmbCh3
ZWJWaWV3LCBjbGllbnQpKTsKKyAgICB9CisgICAgfldlYlBvcHVwTWVudVByb3h5RWZsKCk7CisK
KyAgICB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6
OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3Rl
ZEluZGV4KTsKKyAgICB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKKworICAgIHZvaWQgdmFsdWVDaGFu
Z2VkKGludCBuZXdTZWxlY3RlZEluZGV4KTsKKworcHJpdmF0ZToKKyAgICBXZWJQb3B1cE1lbnVQ
cm94eUVmbChFdmFzX09iamVjdCosIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqKTsKKworICAg
IEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjY2IzZmE2ZTRlM2VhMmVh
MmNiYzVjZWMwZGUzODg4ZmVmNGQwN2MxLi43YTU3NTFjYTM1ZGIwYTUzN2ZiNWQ4ZmY3ODgzMmIy
ZDcwMzNlZmFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDgtMjYgIFJ5dWFuIENob2kg
IDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW1wbGVtZW50
IFdlYlBvcHVwTWVudVByb3h5RWZsIHRvIHN1cHBvcnQgPHNlbGVjdD4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NjE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2syL1Rlc3RF
eHBlY3RhdGlvbnM6IFVuc2tpcCBmYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlzdC1wb3B1cC1jcmFz
aC5odG1sCisKIDIwMTItMDgtMjYgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFN1cHByZXNzIE1hYyB0ZXN0IHJlcXVpcmluZyByZWJhc2VsaW5lIGFmdGVyIHIx
MjY2ODMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggZWFlMTQxNjhlZDljNGJkZGNkZWFjYzgyYTk1NGQ4ZWQwNzlhNTYxMS4uOTg0MmIyOGEz
YTZlNDdiYTUwMGNkZGNmMTk0NDFkOTBhYWU0NDQzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzgsNyArMzgsNiBAQCBCVUdXS0VGTCA6
IGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdXNwZW5kLWFjdGl2ZS1kb20tb2JqZWN0cy5o
dG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXBhdXNl
LWluLWV2YWwtc2NyaXB0Lmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBpbnNwZWN0b3IvZGVidWdn
ZXIvZGVidWdnZXItZXZhbC1vbi1jYWxsLWZyYW1lLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBm
YXN0L2xvYWRlci9kb2N1bWVudC13aXRoLWZyYWdtZW50LXVybC0xLmh0bWwgPSBDUkFTSAotQlVH
V0tFRkwgOiBmYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlzdC1wb3B1cC1jcmFzaC5odG1sID0gQ1JB
U0gKIEJVR1dLRUZMIDogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1jcmFzaC5odG1sID0g
Q1JBU0gKIEJVR1dLRUZMIDogZmFzdC9ldmVudHMva2V5ZXZlbnQtaWZyYW1lLXJlbW92ZWQtY3Jh
c2guaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGZhc3Qvb3ZlcmZsb3cvbG90cy1vZi1zaWJsaW5n
LWlubGluZS1ib3hlcy5odG1sID0gQ1JBU0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160626</attachid>
            <date>2012-08-26 21:38:35 -0700</date>
            <delta_ts>2012-08-26 22:31:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120827133825.patch</filename>
            <type>text/plain</type>
            <size>34881</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYzZDI4N2YzMzA0ZTJh
YzllZTQxNzlhMzU5Mzk5YzQ2MDVmNmJhMC4uMjk4YjljZWJjNTY1OGEwZGE0MWRkOGUxMzgwZTkz
OTMwNzdhNDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTI2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OkVX
SzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNl
OjpTZXRVcCk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OmxvYWRV
cmxTeW5jKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgRXh0cmFjdGVkIGZyb20gbG9hZFVybFN5bmMgZm9y
IHRlc3RzIHVzaW5nIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQgdG8KKyAgICAgICAgc2hhcmUg
b25Mb2FkRmluaXNoZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJV
bml0VGVzdEJhc2U6OmV3a1ZpZXdDbGFzcyk6CisgICAgICAgIEFkZGVkIGV3a1ZpZXdDbGFzcyB0
byB0ZXN0IHNtYXJ0IG1ldGhvZHMgc3VjaCBhcyBwb3B1cF9tZW51X3Nob3cuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAocG9w
dXBfbWVudV9zaG93KToKKyAgICAgICAgKFRFU1RfRik6IEFkZGVkIGEgdGVzdCBjYXNlIGZvciBl
d2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCBhbmQgcmVsYXRlZCBjb2Rlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBN
ZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldl
YlBvcHVwTWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlF
Zmw6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVm
bDo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eUVmbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTI1ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNh
aXJvIEJ1aWxkIEJyb2tlbiBkdWUgdG8gbWlzc2luZyBleHBvcnQgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEy
ZDZjOGVhNi4uM2EwNTA1YzZhMTEzMThkMjg5MDQzMzllMjlkMjQ4N2ZiODRmYTdmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTU1LDYgKzU1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03NSw2
ICs3Niw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYkNv
b2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCkBAIC0xMjYsNiArMTI4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCkBAIC0yMDYsNiArMjA5LDcgQEAgU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKaW5kZXggZDk4MDIzZGU2ZTBlZmE2ZGUwN2ZjOWZiOGMyMTVkMzljYzQ4OTg3Yy4u
ZjFjMDkwZWRiYzQyNjg5MmFjNDhiZTk4ZjhjYmM5NjA4NjRhMzE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNs
dWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNsdWRlICJld2tfcG9w
dXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCA3MjZjYWFhZTFhMWVmYTk2MzhkYjc3NDc2NzZiMDFhMzFhMjFjNmI2Li5iYWNi
ZjMwMDA0M2YwMGZhZmZmMzk3YjE4NzJjMzlkMzI2NWFkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTIwNCwx
MCArMjA1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW4KIH0KICNlbmRpZgogCi1QYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51
UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NTUxNzA3MTZmOGIz
ZTlmNWExMmFjODg2YWMxZGYwODEyZjY3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcApAQCAtMCwwICsx
LDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19w
b3B1cF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAgX0V3
a19Qb3B1cF9NZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBwb3B1cCBtZW51IGRh
dGEuCisgKi8KK3N0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSB7CisgICAgRXdrX1BvcHVwX01l
bnVfSXRlbV9UeXBlIHR5cGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHRleHQ7CisKKyAgICBf
RXdrX1BvcHVwX01lbnVfSXRlbShFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgX3R5cGUsIGNvbnN0
IGNoYXIqIF90ZXh0KQorICAgICAgICA6IHR5cGUoX3R5cGUpCisgICAgICAgICwgdGV4dChfdGV4
dCkKKyAgICB7IH0KKworICAgIH5fRXdrX1BvcHVwX01lbnVfSXRlbSgpCisgICAgeworICAgIH0K
K307CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfU0VQQVJB
VE9SLCBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19QT1BVUF9NRU5VX0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKKy8qKgorICog
QGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLworRXdr
X1BvcHVwX01lbnVfSXRlbSogZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcoV2ViUG9wdXBJdGVtOjpU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRleHQpCit7CisgICAgcmV0dXJuIG5ldyBFd2tfUG9wdXBf
TWVudV9JdGVtKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4odHlwZSksIHRl
eHQpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfUG9wdXBfTWVudV9J
dGVtLgorICovCit2b2lkIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShFd2tfUG9wdXBfTWVudV9J
dGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOworICAg
IGRlbGV0ZSBpdGVtOworfQorCitFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgZXdrX3BvcHVwX21l
bnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfUE9QVVBfTUVOVV9VTktO
T1dOKTsKKworICAgIHJldHVybiBpdGVtLT50eXBlOworfQorCitjb25zdCBjaGFyKiBld2tfcG9w
dXBfbWVudV9pdGVtX3RleHRfZ2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisgICAgcmV0
dXJuIGl0ZW0tPnRleHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFiNGQ3YjJiZDJlMjIx
ZDE4YWViNTdmYmRlNzc5YjU4NmZmYWE2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgK
KyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfcG9wdXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVf
aXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1
cCBtZW51IGl0ZW0uICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFS
QVRPUiwKKyAgICBFV0tfUE9QVVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05P
V04gPSAtMQorfSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX1BvcHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Q
b3B1cF9NZW51X0l0ZW0gRXdrX1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5
cGUgb2YgdGhlIHBvcHVwIG1lbnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAg
bWVudSBpdGVtIGluc3RhbmNlCisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRl
bSBvciBAYyBFV0tfUE9QVVBfTUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VB
UEkgRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQo
Y29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSAqaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0
IG9mIHRoZSBwb3B1cCBtZW51IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1l
bnUgaXRlbSBpbnN0YW5jZQorICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0g
b3IgQGMgTlVMTCBpbiBjYXNlIG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3Bv
cHVwX21lbnVfaXRlbV90ZXh0X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtICppdGVtKTsK
KyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVw
X21lbnVfaXRlbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZmY5
ZGJkYzA1MTYzZDJiZDU5OWYyYmQ1NTFlM2QxN2QwZWE5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcG9wdXBfbWVu
dV9pdGVtX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAor
CisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19w
b3B1cF9tZW51X2l0ZW1fbmV3KFdlYktpdDo6V2ViUG9wdXBJdGVtOjpUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIHRleHQpOwordm9pZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSk7CisKKyNlbmRpZiAvLyBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IGNlN2Y3YjQ1NDk0NjNjMTBmYmFjY2I3NTczYTNiZWFhZGUyNTNiMGQuLjQ2MzJhMGQ3MTkwZjg0
NTlkZjE5MjM5NDU2ODRhNWQ2YTZjODZhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMxLDEwICszMSwxNCBAQAogI2luY2x1ZGUgIldL
UmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgor
I2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVt
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODMsNiArODcs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNl
c01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFj
a0ZvcndhcmRMaXN0OwogCisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5
OworICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gK
ICAgICBib29sIGlzVXNpbmdFY29yZVg7CiAjZW5kaWYKQEAgLTk2LDYgKzEwMyw4IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkK
ICAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkK
KyAgICAgICAgLCBwb3B1cE1lbnVQcm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDAp
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNl
bmRpZgpAQCAtMTE0LDYgKzEyMywxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBl
d2tfYmFja19mb3J3YXJkX2xpc3RfZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIHZv
aWQqIGl0ZW07CisgICAgICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtKQor
ICAgICAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1
cF9NZW51X0l0ZW0qPihpdGVtKSk7CiAgICAgfQogfTsKIApAQCAtMTQ0OCwzICsxNDYxLDY2IEBA
IHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRD
aGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQs
IExUUik7CisKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBBU1NFUlQo
cG9wdXBNZW51KTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAg
ICBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKGV3a1ZpZXcpOworICAgIHByaXYtPnBvcHVwTWVu
dVByb3h5ID0gcG9wdXBNZW51OworCisgICAgRWluYV9MaXN0KiBwb3B1cEl0ZW1zID0gMDsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gZXdrX3Bv
cHVwX21lbnVfaXRlbV9uZXcoaXRlbXNbaV0ubV90eXBlLCBpdGVtc1tpXS5tX3RleHQudXRmOCgp
LmRhdGEoKSk7CisKKyAgICAgICAgcG9wdXBJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQocG9wdXBJ
dGVtcywgaXRlbSk7CisgICAgfQorICAgIHByaXYtPnBvcHVwTWVudUl0ZW1zID0gcG9wdXBJdGVt
czsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X3Nob3coc21hcnREYXRhLCByZWN0
LCBzdGF0aWNfY2FzdDxFd2tfVGV4dF9EaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBwYWdlU2Nh
bGVGYWN0b3IsIHBvcHVwSXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZh
bHNlKTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5ID0gMDsKKworICAgIGlmIChzbWFydERh
dGEtPmFwaS0+cG9wdXBfbWVudV9oaWRlKQorICAgICAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBf
bWVudV9oaWRlKHNtYXJ0RGF0YSk7CisKKyAgICB2b2lkKiBpdGVtOworICAgIEVJTkFfTElTVF9G
UkVFKHByaXYtPnBvcHVwTWVudUl0ZW1zLCBpdGVtKQorICAgICAgICBld2tfcG9wdXBfbWVudV9p
dGVtX2ZyZWUoc3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01lbnVfSXRlbSo+KGl0ZW0pKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3Qo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGludCBzZWxlY3RlZEluZGV4KQoreworICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5wb3B1cE1lbnVQcm94eSwg
ZmFsc2UpOworCisgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gZWluYV9saXN0X2NvdW50KHByaXYt
PnBvcHVwTWVudUl0ZW1zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcHJpdi0+cG9w
dXBNZW51UHJveHktPnZhbHVlQ2hhbmdlZChzZWxlY3RlZEluZGV4KTsKKworICAgIHJldHVybiB0
cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5k
ZXggYWZhNDU4NDZmNTFjOGYwYWQzNTk2ZmFmNTc1NzI4ZTI1NjQ0MTBiOS4uYjZhMWU0OTMxNTI4
ZDY5NjBkMTBjNDE4NmVhZWM3MzgxMmY1ZTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC04Myw2ICs4MywxMiBAQAogZXh0ZXJuICJDIiB7CiAj
ZW5kaWYKIAorLy8vIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdGV4dCBkaXJlY3Rpb25hbGl0eSB2
YWx1ZXMuCit0eXBlZGVmIGVudW0geworICAgIEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19M
RUZULAorICAgIEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hUCit9IEV3a19UZXh0X0Rp
cmVjdGlvbjsKKwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdf
U21hcnRfRGF0YTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyBFd2tfVmll
d19TbWFydF9DbGFzczsKIApAQCAtOTEsNiArOTcsOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlz
IGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KICAgICB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAKKyAg
ICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBF
aW5hX1JlY3RhbmdsZSByZWN0LCBFd2tfVGV4dF9EaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24sIGRv
dWJsZSBwYWdlX3NjYWxlX2ZhY3RvciwgRWluYV9MaXN0ICppdGVtcywgaW50IHNlbGVjdGVkX2lu
ZGV4KTsKKyAgICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkKTsKKwogICAgIC8vIGV2ZW50IGhhbmRsaW5nOgogICAgIC8vICAtIHJldHVybnMgdHJ1
ZSBpZiBoYW5kbGVkCiAgICAgLy8gIC0gaWYgb3ZlcnJpZGRlbiwgaGF2ZSB0byBjYWxsIHBhcmVu
dCBtZXRob2QgaWYgZGVzaXJlZApAQCAtMTA4LDcgKzExNyw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgewogICogVGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZl
cnNpb24gZmllbGQKICAqIGluIHRoZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUu
CiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwKKyNkZWZpbmUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAyVUwKIAogLyoqCiAgKiBJbml0aWFsaXplciBm
b3Igd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTIwLDcgKzEyOSw3
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9O
QU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0
X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFS
VF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAq
IEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1
cmUuCkBAIC01OTAsNiArNTk5LDI3IEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmlu
ZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCwgRXdrX0ZpbmRfT3B0CiAqLwogRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihFdmFzX09iamVj
dCAqbyk7CiAKKy8qKgorICogU2VsZWN0cyBpbmRleCBvZiBjdXJyZW50IHBvcHVwIG1lbnUuCisg
KgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgY29udGFpbnMgcG9wdXAgbWVudS4KKyAqIEBwYXJh
bSBpbmRleCBpbmRleCBvZiBpdGVtIHRvIHNlbGVjdAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAg
ICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQgb3IgaW5kZXggaXMgb3V0IG9mIHJhbmdl
KQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdChFdmFzX09i
amVjdCAqbywgdW5zaWduZWQgaW50IGluZGV4KTsKKworLyoqCisgKiBDbG9zZXMgY3VycmVudCBw
b3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1l
bnUuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxT
RSBvbiBmYWlsdXJlIChwcm9iYWJseQorICogICAgICAgICBwb3B1cCBtZW51IGlzIG5vdCBzZWxl
Y3RlZCkKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFz
X09iamVjdCAqbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXgg
ZjQwMjk4NTg3MTNjZGY2YmQ4N2JhODhhNmIxYWYxMzZhNzdjNGZmYi4uZGI4YWI2NmE2MWIxNGYx
NjdkYWNkZDVlOTg3NDVlOGZiZmY0OTBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjMsNyArMjMsOSBAQAogCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dERpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJzb3I7
CkBAIC0zMSw2ICszMywxMSBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIH0KIAor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQb3B1cEl0ZW07CitjbGFzcyBXZWJQb3B1cE1l
bnVQcm94eUVmbDsKK30KKwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2IgRXdrX0Rv
d25sb2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Qg
RXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVx
dWVzdCBFd2tfVXJsX1JlcXVlc3Q7CkBAIC04OSw0ICs5Niw2IEBAIGJvb2wgZXdrX3ZpZXdfYWNj
ZWxlcmF0ZWRfY29tcG9zaXRpbmdfbW9kZV9lbnRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dyk7CiBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZXhpdChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldyk7CiAjZW5kaWYKIAordm9pZCBld2tfdmlld19wb3B1cF9t
ZW51X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViUG9wdXBNZW51UHJv
eHlFZmwqIHBvcHVwTWVudSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHRE
aXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJLaXQ6Oldl
YlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworCiAjZW5kaWYgLy8g
ZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RCYXNlLmNwcAppbmRleCAzOWJjNWE0ZGJlYzY1Y2M0ZTI5ZjAzYWE0MWIzNDIxODlmMDRmMzFj
Li44MDMzZTI0OTg4ZWVhYjVjNjZkNTMxZmY0ODliNmUxMzE4YzQ4ZTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKQEAgLTIxLDcgKzIxLDYgQEAK
ICNpbmNsdWRlICJFV0syVW5pdFRlc3RCYXNlLmgiCiAKICNpbmNsdWRlICJFV0syVW5pdFRlc3RF
bnZpcm9ubWVudC5oIgotI2luY2x1ZGUgPEVXZWJLaXQyLmg+CiAjaW5jbHVkZSA8RWNvcmUuaD4K
ICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpA
QCAtNDIsNyArNDEsOSBAQCBzdGF0aWMgdm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiB1c2VyRGF0
YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5mbwogRVdLMlVuaXRUZXN0QmFz
ZTo6RVdLMlVuaXRUZXN0QmFzZSgpCiAgICAgOiBtX2Vjb3JlRXZhcygwKQogICAgICwgbV93ZWJW
aWV3KDApCisgICAgLCBtX2V3a1ZpZXdDbGFzcyhFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05B
TUVfVkVSU0lPTigiQnJvd3Nlcl9WaWV3IikpCiB7CisgICAgZXdrX3ZpZXdfc21hcnRfY2xhc3Nf
c2V0KCZtX2V3a1ZpZXdDbGFzcyk7CiB9CiAKIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAo
KQpAQCAtNjAsNyArNjEsOCBAQCB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKICAgICBl
Y29yZV9ldmFzX3Nob3cobV9lY29yZUV2YXMpOwogICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFz
X2dldChtX2Vjb3JlRXZhcyk7CiAKLSAgICBtX3dlYlZpZXcgPSBld2tfdmlld19hZGQoZXZhcyk7
CisgICAgRXZhc19TbWFydCogc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmbV9ld2tWaWV3
Q2xhc3Muc2MpOworICAgIG1fd2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFy
dCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7CiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1f
d2ViVmlldywgZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKIAogICAgIGV2YXNfb2JqZWN0
X3Jlc2l6ZShtX3dlYlZpZXcsIHdpZHRoLCBoZWlnaHQpOwpAQCAtNzcsMTAgKzc5LDE1IEBAIHZv
aWQgRVdLMlVuaXRUZXN0QmFzZTo6VGVhckRvd24oKQogCiB2b2lkIEVXSzJVbml0VGVzdEJhc2U6
OmxvYWRVcmxTeW5jKGNvbnN0IGNoYXIqIHVybCkKIHsKKyAgICBld2tfdmlld191cmlfc2V0KG1f
d2ViVmlldywgdXJsKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKK30KKwordm9pZCBF
V0syVW5pdFRlc3RCYXNlOjp3YWl0VW50aWxMb2FkRmluaXNoZWQoKQorewogICAgIGJvb2wgbG9h
ZEZpbmlzaGVkID0gZmFsc2U7CiAKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
bV93ZWJWaWV3LCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkLCAmbG9hZEZpbmlzaGVk
KTsKLSAgICBld2tfdmlld191cmlfc2V0KG1fd2ViVmlldywgdXJsKTsKIAogICAgIHdoaWxlICgh
bG9hZEZpbmlzaGVkKQogICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAppbmRleCAyOWQ1NWJlZTQ5Y2Fm
ZDkwYTVlYzI4NTZkYzViY2E3Y2RhOTcyYmU1Li5mYTZhYmQxNjA0OGNhYTgzMDkwYjU5NWFiODk1
ZTlmNzBjMTE2ODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJh
c2UuaApAQCAtMjAsNiArMjAsNyBAQAogI2lmbmRlZiBFV0syVW5pdFRlc3RCYXNlX2gKICNkZWZp
bmUgRVdLMlVuaXRUZXN0QmFzZV9oCiAKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUg
PEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KQEAgLTI5LDYgKzMwLDcgQEAgbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7CiBjbGFzcyBFV0sy
VW5pdFRlc3RCYXNlIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgRXZh
c19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KKyAgICBFd2tfVmlld19T
bWFydF9DbGFzcyogZXdrVmlld0NsYXNzKCkgeyByZXR1cm4gJm1fZXdrVmlld0NsYXNzOyB9CiAK
IHByb3RlY3RlZDoKICAgICBFV0syVW5pdFRlc3RCYXNlKCk7CkBAIC0zNywxMiArMzksMTQgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOwogCiAgICAgdm9pZCBsb2Fk
VXJsU3luYyhjb25zdCBjaGFyKiB1cmwpOworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CiAgICAgdm9pZCB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhjb25zdCBjaGFyKiBleHBlY3Rl
ZFRpdGxlKTsKICAgICB2b2lkIG1vdXNlQ2xpY2soaW50IHgsIGludCB5KTsKIAogcHJpdmF0ZToK
ICAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OwogICAgIEVjb3JlX0V2YXMqIG1fZWNvcmVFdmFz
OworICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzIG1fZXdrVmlld0NsYXNzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgRVdLMlVuaXRUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggNWVkYjA0Mzc5YTVm
ZDg5MTQxMDY0ZjYyMjhjMTQ0OThhNjAxYzFmMS4uNmZlOWMyZmU0MzFhMWIxNDYyY2ViOTYwZGRi
NDRlYWI0ZTQ2MTc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMTg4LDMgKzE4OCwzMCBAQCBU
RVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Qp
CiAgICAgQVNTRVJUX1RSVUUoaGFuZGxlZCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfZGVsKHdlYlZpZXcoKSwgImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0Iiwgb25Gb3JtQWJvdXRU
b0JlU3VibWl0dGVkKTsKIH0KKworRWluYV9Cb29sIHBvcHVwX21lbnVfc2hvdyhFd2tfVmlld19T
bWFydF9EYXRhKiBzbWFydERhdGEsIEVpbmFfUmVjdGFuZ2xlLCBFd2tfVGV4dF9EaXJlY3Rpb24s
IGRvdWJsZSwgRWluYV9MaXN0KiwgaW50IHNlbGVjdGVkSW5kZXgpCit7CisgICAgRVhQRUNUX0VR
KHNlbGVjdGVkSW5kZXgsIDIpOworICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X3BvcHVwX21lbnVf
c2VsZWN0KHNtYXJ0RGF0YS0+c2VsZiwgMCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RF
U1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCkKK3sKKyAg
ICBjb25zdCBjaGFyKiBzZWxlY3RIVE1MID0KKyAgICAgICAgIjwhZG9jdHlwZSBodG1sPjxib2R5
PjxzZWxlY3Qgb25jaGFuZ2U9XCJkb2N1bWVudC50aXRsZT10aGlzLnZhbHVlO1wiPiIKKyAgICAg
ICAgIjxvcHRpb24+Zmlyc3Q8L29wdGlvbj48b3B0aW9uPnNlY29uZDwvb3B0aW9uPjxvcHRpb24g
c2VsZWN0ZWQ+dGhpcmQ8L29wdGlvbj4iCisgICAgICAgICI8L3NlbGVjdD48L2JvZHk+IjsKKwor
ICAgIGV3a1ZpZXdDbGFzcygpLT5wb3B1cF9tZW51X3Nob3cgPSBwb3B1cF9tZW51X3Nob3c7CisK
KyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgc2VsZWN0SFRNTCwgImZp
bGU6Ly8vIiwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgbW91c2VDbGlj
aygzMCwgMjApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJmaXJzdCIpOworICAgIEFT
U0VSVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgImZpcnN0Iik7CisKKyAg
ICBFWFBFQ1RfVFJVRShld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKHdlYlZpZXcoKSkpOworICAg
IEVYUEVDVF9GQUxTRShld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCh3ZWJWaWV3KCksIDApKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51
UHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQ
cm94eUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYwYjM3ZDY3ZGU1NjFlNjQ5ZDM5NmUwYzNmYjM0ZWQy
OTBmODFkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKKwor
I2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0u
aCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVw
TWVudVByb3h5RWZsKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xp
ZW50KiBjbGllbnQpCisgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCisgICAgLCBtX3dl
YlZpZXcod2ViVmlldykKK3sKK30KKworV2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1l
bnVQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OnNob3dQb3B1
cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMs
IGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sK
KyAgICBld2tfdmlld19wb3B1cF9tZW51X3JlcXVlc3QobV93ZWJWaWV3LCB0aGlzLCByZWN0LCB0
ZXh0RGlyZWN0aW9uLCBwYWdlU2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30K
Kwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgZXdr
X3ZpZXdfcG9wdXBfbWVudV9jbG9zZShtX3dlYlZpZXcpOworfQorCit2b2lkIFdlYlBvcHVwTWVu
dVByb3h5RWZsOjp2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpCit7CisgICAgbV9j
bGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBuZXdTZWxlY3RlZEluZGV4KTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZiZmM0OWQ5MGYz
YmQxNjUxNjRmOWU4NDhkMTA0NGY3MDRjZTQxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCisjZGVmaW5l
IFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5Lmgi
CisKK3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgSW50UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmwgOiBwdWJsaWMg
V2ViUG9wdXBNZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVu
dVByb3h5OjpDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViUG9wdXBNZW51UHJveHlFZmwod2ViVmlldywgY2xpZW50KSk7CisgICAgfQorICAgIH5X
ZWJQb3B1cE1lbnVQcm94eUVmbCgpOworCisgICAgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxl
RmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBN
ZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBoaWRlUG9wdXBNZW51
KCk7CisKKyAgICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCk7CisKK3By
aXZhdGU6CisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJQb3B1cE1l
bnVQcm94eTo6Q2xpZW50Kik7CisKKyAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eUVmbF9o
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZjExMWUzNWQ4MWI2NTI3ZjFkMGFkMDYwZDM3MjNhNmIxMGZiM2ViYi4uYzg4OGUw
MGVhMWVjM2QwZmUzNjJlNzBiZWUyNmQwNzE1ZDdkNmE1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEyLTA4LTI2ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0
IDxzZWxlY3Q+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04ODYxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBVbnNraXAgZmFzdC9mb3Jtcy9z
ZWxlY3QvbWVudWxpc3QtcG9wdXAtY3Jhc2guaHRtbAorCiAyMDEyLTA4LTI2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRmluYWxseSBpbmxpbmluZyBzaG91bGQg
Y29ycmVjdGx5IHRyYWNrIHRoZSBjYXRjaCBjb250ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWFlMTQxNjhlZDljNGJkZGNkZWFjYzgy
YTk1NGQ4ZWQwNzlhNTYxMS4uOTg0MmIyOGEzYTZlNDdiYTUwMGNkZGNmMTk0NDFkOTBhYWU0NDQz
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMzgsNyArMzgsNiBAQCBCVUdXS0VGTCA6IGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1z
dXNwZW5kLWFjdGl2ZS1kb20tb2JqZWN0cy5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogaW5zcGVj
dG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0Lmh0bWwgPSBDUkFTSAog
QlVHV0tFRkwgOiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItZXZhbC1vbi1jYWxsLWZyYW1l
Lmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBmYXN0L2xvYWRlci9kb2N1bWVudC13aXRoLWZyYWdt
ZW50LXVybC0xLmh0bWwgPSBDUkFTSAotQlVHV0tFRkwgOiBmYXN0L2Zvcm1zL3NlbGVjdC9tZW51
bGlzdC1wb3B1cC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9mb3Jtcy9maWVs
ZHNldC9maWVsZHNldC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9ldmVudHMv
a2V5ZXZlbnQtaWZyYW1lLXJlbW92ZWQtY3Jhc2guaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGZh
c3Qvb3ZlcmZsb3cvbG90cy1vZi1zaWJsaW5nLWlubGluZS1ib3hlcy5odG1sID0gQ1JBU0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160633</attachid>
            <date>2012-08-26 22:21:34 -0700</date>
            <delta_ts>2012-08-26 22:31:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120827142126.patch</filename>
            <type>text/plain</type>
            <size>34872</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYzZDI4N2YzMzA0ZTJh
YzllZTQxNzlhMzU5Mzk5YzQ2MDVmNmJhMC4uMjk4YjljZWJjNTY1OGEwZGE0MWRkOGUxMzgwZTkz
OTMwNzdhNDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTI2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OkVX
SzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNl
OjpTZXRVcCk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OmxvYWRV
cmxTeW5jKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgRXh0cmFjdGVkIGZyb20gbG9hZFVybFN5bmMgZm9y
IHRlc3RzIHVzaW5nIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQgdG8KKyAgICAgICAgc2hhcmUg
b25Mb2FkRmluaXNoZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJV
bml0VGVzdEJhc2U6OmV3a1ZpZXdDbGFzcyk6CisgICAgICAgIEFkZGVkIGV3a1ZpZXdDbGFzcyB0
byB0ZXN0IHNtYXJ0IG1ldGhvZHMgc3VjaCBhcyBwb3B1cF9tZW51X3Nob3cuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAocG9w
dXBfbWVudV9zaG93KToKKyAgICAgICAgKFRFU1RfRik6IEFkZGVkIGEgdGVzdCBjYXNlIGZvciBl
d2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCBhbmQgcmVsYXRlZCBjb2Rlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBN
ZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldl
YlBvcHVwTWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlF
Zmw6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVm
bDo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eUVmbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTI1ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNh
aXJvIEJ1aWxkIEJyb2tlbiBkdWUgdG8gbWlzc2luZyBleHBvcnQgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEy
ZDZjOGVhNi4uM2EwNTA1YzZhMTEzMThkMjg5MDQzMzllMjlkMjQ4N2ZiODRmYTdmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTU1LDYgKzU1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03NSw2
ICs3Niw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYkNv
b2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCkBAIC0xMjYsNiArMTI4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCkBAIC0yMDYsNiArMjA5LDcgQEAgU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKaW5kZXggZDk4MDIzZGU2ZTBlZmE2ZGUwN2ZjOWZiOGMyMTVkMzljYzQ4OTg3Yy4u
ZjFjMDkwZWRiYzQyNjg5MmFjNDhiZTk4ZjhjYmM5NjA4NjRhMzE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNs
dWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNsdWRlICJld2tfcG9w
dXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCA3MjZjYWFhZTFhMWVmYTk2MzhkYjc3NDc2NzZiMDFhMzFhMjFjNmI2Li5iYWNi
ZjMwMDA0M2YwMGZhZmZmMzk3YjE4NzJjMzlkMzI2NWFkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTIwNCwx
MCArMjA1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW4KIH0KICNlbmRpZgogCi1QYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51
UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NTUxNzA3MTZmOGIz
ZTlmNWExMmFjODg2YWMxZGYwODEyZjY3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcApAQCAtMCwwICsx
LDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19w
b3B1cF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAgX0V3
a19Qb3B1cF9NZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBwb3B1cCBtZW51IGRh
dGEuCisgKi8KK3N0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSB7CisgICAgRXdrX1BvcHVwX01l
bnVfSXRlbV9UeXBlIHR5cGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHRleHQ7CisKKyAgICBf
RXdrX1BvcHVwX01lbnVfSXRlbShFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgX3R5cGUsIGNvbnN0
IGNoYXIqIF90ZXh0KQorICAgICAgICA6IHR5cGUoX3R5cGUpCisgICAgICAgICwgdGV4dChfdGV4
dCkKKyAgICB7IH0KKworICAgIH5fRXdrX1BvcHVwX01lbnVfSXRlbSgpCisgICAgeworICAgIH0K
K307CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfU0VQQVJB
VE9SLCBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19QT1BVUF9NRU5VX0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKKy8qKgorICog
QGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLworRXdr
X1BvcHVwX01lbnVfSXRlbSogZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcoV2ViUG9wdXBJdGVtOjpU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRleHQpCit7CisgICAgcmV0dXJuIG5ldyBFd2tfUG9wdXBf
TWVudV9JdGVtKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4odHlwZSksIHRl
eHQpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfUG9wdXBfTWVudV9J
dGVtLgorICovCit2b2lkIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShFd2tfUG9wdXBfTWVudV9J
dGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOworICAg
IGRlbGV0ZSBpdGVtOworfQorCitFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgZXdrX3BvcHVwX21l
bnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfUE9QVVBfTUVOVV9VTktO
T1dOKTsKKworICAgIHJldHVybiBpdGVtLT50eXBlOworfQorCitjb25zdCBjaGFyKiBld2tfcG9w
dXBfbWVudV9pdGVtX3RleHRfZ2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisgICAgcmV0
dXJuIGl0ZW0tPnRleHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFiNGQ3YjJiZDJlMjIx
ZDE4YWViNTdmYmRlNzc5YjU4NmZmYWE2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgK
KyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfcG9wdXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVf
aXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1
cCBtZW51IGl0ZW0uICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFS
QVRPUiwKKyAgICBFV0tfUE9QVVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05P
V04gPSAtMQorfSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX1BvcHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Q
b3B1cF9NZW51X0l0ZW0gRXdrX1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5
cGUgb2YgdGhlIHBvcHVwIG1lbnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAg
bWVudSBpdGVtIGluc3RhbmNlCisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRl
bSBvciBAYyBFV0tfUE9QVVBfTUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VB
UEkgRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQo
Y29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSAqaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0
IG9mIHRoZSBwb3B1cCBtZW51IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1l
bnUgaXRlbSBpbnN0YW5jZQorICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0g
b3IgQGMgTlVMTCBpbiBjYXNlIG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3Bv
cHVwX21lbnVfaXRlbV90ZXh0X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtICppdGVtKTsK
KyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVw
X21lbnVfaXRlbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZmY5
ZGJkYzA1MTYzZDJiZDU5OWYyYmQ1NTFlM2QxN2QwZWE5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcG9wdXBfbWVu
dV9pdGVtX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAor
CisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19w
b3B1cF9tZW51X2l0ZW1fbmV3KFdlYktpdDo6V2ViUG9wdXBJdGVtOjpUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIHRleHQpOwordm9pZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSk7CisKKyNlbmRpZiAvLyBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IGNlN2Y3YjQ1NDk0NjNjMTBmYmFjY2I3NTczYTNiZWFhZGUyNTNiMGQuLmY2NzIyNjU1NGFiOGIx
YzA2YjFkMWNmOTJmYWM5YzVmNTA2MjI0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMxLDEwICszMSwxNCBAQAogI2luY2x1ZGUgIldL
UmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgor
I2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVt
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODMsNiArODcs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNl
c01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFj
a0ZvcndhcmRMaXN0OwogCisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5
OworICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gK
ICAgICBib29sIGlzVXNpbmdFY29yZVg7CiAjZW5kaWYKQEAgLTk2LDYgKzEwMyw4IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkK
ICAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkK
KyAgICAgICAgLCBwb3B1cE1lbnVQcm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDAp
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNl
bmRpZgpAQCAtMTE0LDYgKzEyMywxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBl
d2tfYmFja19mb3J3YXJkX2xpc3RfZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIHZv
aWQqIGl0ZW07CisgICAgICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtKQor
ICAgICAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1
cF9NZW51X0l0ZW0qPihpdGVtKSk7CiAgICAgfQogfTsKIApAQCAtMTQ0OCwzICsxNDYxLDY4IEBA
IHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRD
aGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQs
IExUUik7CisKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBBU1NFUlQo
cG9wdXBNZW51KTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAg
ICBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKGV3a1ZpZXcpOworICAgIHByaXYtPnBvcHVwTWVu
dVByb3h5ID0gcG9wdXBNZW51OworCisgICAgRWluYV9MaXN0KiBwb3B1cEl0ZW1zID0gMDsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gZXdrX3Bv
cHVwX21lbnVfaXRlbV9uZXcoaXRlbXNbaV0ubV90eXBlLCBpdGVtc1tpXS5tX3RleHQudXRmOCgp
LmRhdGEoKSk7CisKKyAgICAgICAgcG9wdXBJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQocG9wdXBJ
dGVtcywgaXRlbSk7CisgICAgfQorICAgIHByaXYtPnBvcHVwTWVudUl0ZW1zID0gcG9wdXBJdGVt
czsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X3Nob3coc21hcnREYXRhLCByZWN0
LCBzdGF0aWNfY2FzdDxFd2tfVGV4dF9EaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBwYWdlU2Nh
bGVGYWN0b3IsIHBvcHVwSXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKKwor
ICAgIGlmICghcHJpdi0+cG9wdXBNZW51UHJveHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHByaXYtPnBvcHVwTWVudVByb3h5ID0gMDsKKworICAgIGlmIChzbWFydERhdGEtPmFwaS0+
cG9wdXBfbWVudV9oaWRlKQorICAgICAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9oaWRl
KHNtYXJ0RGF0YSk7CisKKyAgICB2b2lkKiBpdGVtOworICAgIEVJTkFfTElTVF9GUkVFKHByaXYt
PnBvcHVwTWVudUl0ZW1zLCBpdGVtKQorICAgICAgICBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUo
c3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01lbnVfSXRlbSo+KGl0ZW0pKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGludCBzZWxlY3RlZEluZGV4KQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5wb3B1cE1lbnVQcm94eSwgZmFsc2UpOwor
CisgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gZWluYV9saXN0X2NvdW50KHByaXYtPnBvcHVwTWVu
dUl0ZW1zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcHJpdi0+cG9wdXBNZW51UHJv
eHktPnZhbHVlQ2hhbmdlZChzZWxlY3RlZEluZGV4KTsKKworICAgIHJldHVybiB0cnVlOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggYWZhNDU4
NDZmNTFjOGYwYWQzNTk2ZmFmNTc1NzI4ZTI1NjQ0MTBiOS4uYjZhMWU0OTMxNTI4ZDY5NjBkMTBj
NDE4NmVhZWM3MzgxMmY1ZTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oCkBAIC04Myw2ICs4MywxMiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAor
Ly8vIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdGV4dCBkaXJlY3Rpb25hbGl0eSB2YWx1ZXMuCit0
eXBlZGVmIGVudW0geworICAgIEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULAorICAg
IEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hUCit9IEV3a19UZXh0X0RpcmVjdGlvbjsK
KwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0
YTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyBFd2tfVmlld19TbWFydF9D
bGFzczsKIApAQCAtOTEsNiArOTcsOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsK
ICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8g
YmUgY2hhbmdlZC4gKi8KICAgICB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAKKyAgICBFaW5hX0Jv
b2wgKCpwb3B1cF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX1JlY3Rh
bmdsZSByZWN0LCBFd2tfVGV4dF9EaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24sIGRvdWJsZSBwYWdl
X3NjYWxlX2ZhY3RvciwgRWluYV9MaXN0ICppdGVtcywgaW50IHNlbGVjdGVkX2luZGV4KTsKKyAg
ICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsK
KwogICAgIC8vIGV2ZW50IGhhbmRsaW5nOgogICAgIC8vICAtIHJldHVybnMgdHJ1ZSBpZiBoYW5k
bGVkCiAgICAgLy8gIC0gaWYgb3ZlcnJpZGRlbiwgaGF2ZSB0byBjYWxsIHBhcmVudCBtZXRob2Qg
aWYgZGVzaXJlZApAQCAtMTA4LDcgKzExNyw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xh
c3MgewogICogVGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmll
bGQKICAqIGluIHRoZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCiAgKi8KLSNk
ZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwKKyNkZWZpbmUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfVkVSU0lPTiAyVUwKIAogLyoqCiAgKiBJbml0aWFsaXplciBmb3Igd2hvbGUg
RXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTIwLDcgKzEyOSw3IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJ
T04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2lu
aXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNt
YXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19W
RVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxp
emVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC01
OTAsNiArNTk5LDI3IEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZChFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqdGV4dCwgRXdrX0ZpbmRfT3B0CiAqLwogRUFQSSBFaW5hX0Jv
b2wgZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihFdmFzX09iamVjdCAqbyk7CiAK
Ky8qKgorICogU2VsZWN0cyBpbmRleCBvZiBjdXJyZW50IHBvcHVwIG1lbnUuCisgKgorICogQHBh
cmFtIG8gdmlldyBvYmplY3QgY29udGFpbnMgcG9wdXAgbWVudS4KKyAqIEBwYXJhbSBpbmRleCBp
bmRleCBvZiBpdGVtIHRvIHNlbGVjdAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAgICAgICAgcG9w
dXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQgb3IgaW5kZXggaXMgb3V0IG9mIHJhbmdlKQorICovCitF
QVBJIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdChFdmFzX09iamVjdCAqbywg
dW5zaWduZWQgaW50IGluZGV4KTsKKworLyoqCisgKiBDbG9zZXMgY3VycmVudCBwb3B1cCBtZW51
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisgKgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWls
dXJlIChwcm9iYWJseQorICogICAgICAgICBwb3B1cCBtZW51IGlzIG5vdCBzZWxlY3RlZCkKKyAq
LworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFzX09iamVjdCAq
byk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggZjQwMjk4NTg3
MTNjZGY2YmQ4N2JhODhhNmIxYWYxMzZhNzdjNGZmYi4uZGI4YWI2NmE2MWIxNGYxNjdkYWNkZDVl
OTg3NDVlOGZiZmY0OTBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjMsNyArMjMsOSBAQAogCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dERpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJzb3I7CkBAIC0zMSw2
ICszMywxMSBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIH0KIAorbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJQb3B1cEl0ZW07CitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVm
bDsKK30KKwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2IgRXdrX0Rvd25sb2FkX0pv
YjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QgRXdrX0Zvcm1f
U3VibWlzc2lvbl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tf
VXJsX1JlcXVlc3Q7CkBAIC04OSw0ICs5Niw2IEBAIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRf
Y29tcG9zaXRpbmdfbW9kZV9lbnRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7CiBib29s
IGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZXhpdChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldyk7CiAjZW5kaWYKIAordm9pZCBld2tfdmlld19wb3B1cF9tZW51X3JlcXVl
c3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmwqIHBv
cHVwTWVudSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24s
IGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRl
bT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworCiAjZW5kaWYgLy8gZXdrX3ZpZXdf
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNw
cAppbmRleCAzOWJjNWE0ZGJlYzY1Y2M0ZTI5ZjAzYWE0MWIzNDIxODlmMDRmMzFjLi44MDMzZTI0
OTg4ZWVhYjVjNjZkNTMxZmY0ODliNmUxMzE4YzQ4ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRl
ICJFV0syVW5pdFRlc3RCYXNlLmgiCiAKICNpbmNsdWRlICJFV0syVW5pdFRlc3RFbnZpcm9ubWVu
dC5oIgotI2luY2x1ZGUgPEVXZWJLaXQyLmg+CiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtNDIsNyAr
NDEsOSBAQCBzdGF0aWMgdm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19P
YmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5mbwogRVdLMlVuaXRUZXN0QmFzZTo6RVdLMlVu
aXRUZXN0QmFzZSgpCiAgICAgOiBtX2Vjb3JlRXZhcygwKQogICAgICwgbV93ZWJWaWV3KDApCisg
ICAgLCBtX2V3a1ZpZXdDbGFzcyhFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lP
TigiQnJvd3Nlcl9WaWV3IikpCiB7CisgICAgZXdrX3ZpZXdfc21hcnRfY2xhc3Nfc2V0KCZtX2V3
a1ZpZXdDbGFzcyk7CiB9CiAKIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQpAQCAtNjAs
NyArNjEsOCBAQCB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKICAgICBlY29yZV9ldmFz
X3Nob3cobV9lY29yZUV2YXMpOwogICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dldChtX2Vj
b3JlRXZhcyk7CiAKLSAgICBtX3dlYlZpZXcgPSBld2tfdmlld19hZGQoZXZhcyk7CisgICAgRXZh
c19TbWFydCogc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmbV9ld2tWaWV3Q2xhc3Muc2Mp
OworICAgIG1fd2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgZXdrX2Nv
bnRleHRfZGVmYXVsdF9nZXQoKSk7CiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldywg
ZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKIAogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZSht
X3dlYlZpZXcsIHdpZHRoLCBoZWlnaHQpOwpAQCAtNzcsMTAgKzc5LDE1IEBAIHZvaWQgRVdLMlVu
aXRUZXN0QmFzZTo6VGVhckRvd24oKQogCiB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OmxvYWRVcmxT
eW5jKGNvbnN0IGNoYXIqIHVybCkKIHsKKyAgICBld2tfdmlld191cmlfc2V0KG1fd2ViVmlldywg
dXJsKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKK30KKwordm9pZCBFV0syVW5pdFRl
c3RCYXNlOjp3YWl0VW50aWxMb2FkRmluaXNoZWQoKQorewogICAgIGJvb2wgbG9hZEZpbmlzaGVk
ID0gZmFsc2U7CiAKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQobV93ZWJWaWV3
LCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkLCAmbG9hZEZpbmlzaGVkKTsKLSAgICBl
d2tfdmlld191cmlfc2V0KG1fd2ViVmlldywgdXJsKTsKIAogICAgIHdoaWxlICghbG9hZEZpbmlz
aGVkKQogICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAppbmRleCAyOWQ1NWJlZTQ5Y2FmZDkwYTVlYzI4
NTZkYzViY2E3Y2RhOTcyYmU1Li5mYTZhYmQxNjA0OGNhYTgzMDkwYjU5NWFiODk1ZTlmNzBjMTE2
ODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAt
MjAsNiArMjAsNyBAQAogI2lmbmRlZiBFV0syVW5pdFRlc3RCYXNlX2gKICNkZWZpbmUgRVdLMlVu
aXRUZXN0QmFzZV9oCiAKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUgPEVjb3JlX0V2
YXMuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAgLTI5
LDYgKzMwLDcgQEAgbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7CiBjbGFzcyBFV0syVW5pdFRlc3RC
YXNlIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgRXZhc19PYmplY3Qq
IHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KKyAgICBFd2tfVmlld19TbWFydF9DbGFz
cyogZXdrVmlld0NsYXNzKCkgeyByZXR1cm4gJm1fZXdrVmlld0NsYXNzOyB9CiAKIHByb3RlY3Rl
ZDoKICAgICBFV0syVW5pdFRlc3RCYXNlKCk7CkBAIC0zNywxMiArMzksMTQgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOwogCiAgICAgdm9pZCBsb2FkVXJsU3luYyhj
b25zdCBjaGFyKiB1cmwpOworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAg
dm9pZCB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhjb25zdCBjaGFyKiBleHBlY3RlZFRpdGxlKTsK
ICAgICB2b2lkIG1vdXNlQ2xpY2soaW50IHgsIGludCB5KTsKIAogcHJpdmF0ZToKICAgICBFdmFz
X09iamVjdCogbV93ZWJWaWV3OwogICAgIEVjb3JlX0V2YXMqIG1fZWNvcmVFdmFzOworICAgIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIG1fZXdrVmlld0NsYXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
RVdLMlVuaXRUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggNWVkYjA0Mzc5YTVmZDg5MTQxMDY0
ZjYyMjhjMTQ0OThhNjAxYzFmMS4uNmZlOWMyZmU0MzFhMWIxNDYyY2ViOTYwZGRiNDRlYWI0ZTQ2
MTc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMTg4LDMgKzE4OCwzMCBAQCBURVNUX0YoRVdL
MlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QpCiAgICAgQVNT
RVJUX1RSVUUoaGFuZGxlZCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdl
YlZpZXcoKSwgImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0Iiwgb25Gb3JtQWJvdXRUb0JlU3VibWl0
dGVkKTsKIH0KKworRWluYV9Cb29sIHBvcHVwX21lbnVfc2hvdyhFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEsIEVpbmFfUmVjdGFuZ2xlLCBFd2tfVGV4dF9EaXJlY3Rpb24sIGRvdWJsZSwg
RWluYV9MaXN0KiwgaW50IHNlbGVjdGVkSW5kZXgpCit7CisgICAgRVhQRUNUX0VRKHNlbGVjdGVk
SW5kZXgsIDIpOworICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KHNt
YXJ0RGF0YS0+c2VsZiwgMCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCkKK3sKKyAgICBjb25zdCBj
aGFyKiBzZWxlY3RIVE1MID0KKyAgICAgICAgIjwhZG9jdHlwZSBodG1sPjxib2R5PjxzZWxlY3Qg
b25jaGFuZ2U9XCJkb2N1bWVudC50aXRsZT10aGlzLnZhbHVlO1wiPiIKKyAgICAgICAgIjxvcHRp
b24+Zmlyc3Q8L29wdGlvbj48b3B0aW9uPnNlY29uZDwvb3B0aW9uPjxvcHRpb24gc2VsZWN0ZWQ+
dGhpcmQ8L29wdGlvbj4iCisgICAgICAgICI8L3NlbGVjdD48L2JvZHk+IjsKKworICAgIGV3a1Zp
ZXdDbGFzcygpLT5wb3B1cF9tZW51X3Nob3cgPSBwb3B1cF9tZW51X3Nob3c7CisKKyAgICBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgc2VsZWN0SFRNTCwgImZpbGU6Ly8vIiwg
MCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgbW91c2VDbGljaygzMCwgMjAp
OworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJmaXJzdCIpOworICAgIEFTU0VSVF9TVFJF
UShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgImZpcnN0Iik7CisKKyAgICBFWFBFQ1Rf
VFJVRShld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKHdlYlZpZXcoKSkpOworICAgIEVYUEVDVF9G
QUxTRShld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCh3ZWJWaWV3KCksIDApKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWYwYjM3ZDY3ZGU1NjFlNjQ5ZDM5NmUwYzNmYjM0ZWQyOTBmODFkMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBN
ZW51UHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKKworI2luY2x1ZGUg
Ik5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKyNpbmNs
dWRlICJld2tfdmlldy5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5
RWZsKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGll
bnQpCisgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCisgICAgLCBtX3dlYlZpZXcod2Vi
VmlldykKK3sKK30KKworV2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1lbnVQcm94eUVm
bCgpCit7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OnNob3dQb3B1cE1lbnUoY29u
c3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFn
ZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBs
YXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBld2tf
dmlld19wb3B1cF9tZW51X3JlcXVlc3QobV93ZWJWaWV3LCB0aGlzLCByZWN0LCB0ZXh0RGlyZWN0
aW9uLCBwYWdlU2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBX
ZWJQb3B1cE1lbnVQcm94eUVmbDo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgZXdrX3ZpZXdfcG9w
dXBfbWVudV9jbG9zZShtX3dlYlZpZXcpOworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpCit7CisgICAgbV9jbGllbnQtPnZh
bHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBuZXdTZWxlY3RlZEluZGV4KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBvcHVwTWVudVByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZiZmM0OWQ5MGYzYmQxNjUxNjRm
OWU4NDhkMTA0NGY3MDRjZTQxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCisjZGVmaW5lIFdlYlBvcHVw
TWVudVByb3h5RWZsX2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK3R5cGVk
ZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgSW50UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2VQcm94eTsKKworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViUG9wdXBN
ZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVBy
b3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpD
bGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9w
dXBNZW51UHJveHlFZmwod2ViVmlldywgY2xpZW50KSk7CisgICAgfQorICAgIH5XZWJQb3B1cE1l
bnVQcm94eUVmbCgpOworCisgICAgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBj
b25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CisKKyAg
ICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCk7CisKK3ByaXZhdGU6Cisg
ICAgV2ViUG9wdXBNZW51UHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJQb3B1cE1lbnVQcm94eTo6
Q2xpZW50Kik7CisKKyAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZjExMWUzNWQ4MWI2NTI3ZjFkMGFkMDYwZDM3MjNhNmIxMGZiM2ViYi4uYzg4OGUwMGVhMWVjM2Qw
ZmUzNjJlNzBiZWUyNmQwNzE1ZDdkNmE1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA4
LTI2ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZM
XVtXSzJdIEltcGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBVbnNraXAgZmFzdC9mb3Jtcy9zZWxlY3QvbWVu
dWxpc3QtcG9wdXAtY3Jhc2guaHRtbAorCiAyMDEyLTA4LTI2ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CiAKICAgICAgICAgRmluYWxseSBpbmxpbmluZyBzaG91bGQgY29ycmVjdGx5
IHRyYWNrIHRoZSBjYXRjaCBjb250ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWFlMTQxNjhlZDljNGJkZGNkZWFjYzgyYTk1NGQ4ZWQw
NzlhNTYxMS4uOTg0MmIyOGEzYTZlNDdiYTUwMGNkZGNmMTk0NDFkOTBhYWU0NDQzYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzgsNyAr
MzgsNiBAQCBCVUdXS0VGTCA6IGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdXNwZW5kLWFj
dGl2ZS1kb20tb2JqZWN0cy5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogaW5zcGVjdG9yL2RlYnVn
Z2VyL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0Lmh0bWwgPSBDUkFTSAogQlVHV0tFRkwg
OiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItZXZhbC1vbi1jYWxsLWZyYW1lLmh0bWwgPSBD
UkFTSAogQlVHV0tFRkwgOiBmYXN0L2xvYWRlci9kb2N1bWVudC13aXRoLWZyYWdtZW50LXVybC0x
Lmh0bWwgPSBDUkFTSAotQlVHV0tFRkwgOiBmYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlzdC1wb3B1
cC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVs
ZHNldC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9ldmVudHMva2V5ZXZlbnQt
aWZyYW1lLXJlbW92ZWQtY3Jhc2guaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGZhc3Qvb3ZlcmZs
b3cvbG90cy1vZi1zaWJsaW5nLWlubGluZS1ib3hlcy5odG1sID0gQ1JBU0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160635</attachid>
            <date>2012-08-26 22:31:27 -0700</date>
            <delta_ts>2012-08-26 22:33:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120827143119.patch</filename>
            <type>text/plain</type>
            <size>34870</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYzZDI4N2YzMzA0ZTJh
YzllZTQxNzlhMzU5Mzk5YzQ2MDVmNmJhMC4uMjk4YjljZWJjNTY1OGEwZGE0MWRkOGUxMzgwZTkz
OTMwNzdhNDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTI2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OkVX
SzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNl
OjpTZXRVcCk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OmxvYWRV
cmxTeW5jKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgRXh0cmFjdGVkIGZyb20gbG9hZFVybFN5bmMgZm9y
IHRlc3RzIHVzaW5nIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQgdG8KKyAgICAgICAgc2hhcmUg
b25Mb2FkRmluaXNoZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJV
bml0VGVzdEJhc2U6OmV3a1ZpZXdDbGFzcyk6CisgICAgICAgIEFkZGVkIGV3a1ZpZXdDbGFzcyB0
byB0ZXN0IHNtYXJ0IG1ldGhvZHMgc3VjaCBhcyBwb3B1cF9tZW51X3Nob3cuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAocG9w
dXBfbWVudV9zaG93KToKKyAgICAgICAgKFRFU1RfRik6IEFkZGVkIGEgdGVzdCBjYXNlIGZvciBl
d2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCBhbmQgcmVsYXRlZCBjb2Rlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBN
ZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldl
YlBvcHVwTWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlF
Zmw6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVm
bDo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eUVmbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTI1ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNh
aXJvIEJ1aWxkIEJyb2tlbiBkdWUgdG8gbWlzc2luZyBleHBvcnQgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEy
ZDZjOGVhNi4uM2EwNTA1YzZhMTEzMThkMjg5MDQzMzllMjlkMjQ4N2ZiODRmYTdmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTU1LDYgKzU1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03NSw2
ICs3Niw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYkNv
b2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCkBAIC0xMjYsNiArMTI4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCkBAIC0yMDYsNiArMjA5LDcgQEAgU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKaW5kZXggZDk4MDIzZGU2ZTBlZmE2ZGUwN2ZjOWZiOGMyMTVkMzljYzQ4OTg3Yy4u
ZjFjMDkwZWRiYzQyNjg5MmFjNDhiZTk4ZjhjYmM5NjA4NjRhMzE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNs
dWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNsdWRlICJld2tfcG9w
dXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCA3MjZjYWFhZTFhMWVmYTk2MzhkYjc3NDc2NzZiMDFhMzFhMjFjNmI2Li5iYWNi
ZjMwMDA0M2YwMGZhZmZmMzk3YjE4NzJjMzlkMzI2NWFkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTIwNCwx
MCArMjA1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW4KIH0KICNlbmRpZgogCi1QYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51
UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NTUxNzA3MTZmOGIz
ZTlmNWExMmFjODg2YWMxZGYwODEyZjY3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcApAQCAtMCwwICsx
LDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19w
b3B1cF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAgX0V3
a19Qb3B1cF9NZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBwb3B1cCBtZW51IGRh
dGEuCisgKi8KK3N0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSB7CisgICAgRXdrX1BvcHVwX01l
bnVfSXRlbV9UeXBlIHR5cGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHRleHQ7CisKKyAgICBf
RXdrX1BvcHVwX01lbnVfSXRlbShFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgX3R5cGUsIGNvbnN0
IGNoYXIqIF90ZXh0KQorICAgICAgICA6IHR5cGUoX3R5cGUpCisgICAgICAgICwgdGV4dChfdGV4
dCkKKyAgICB7IH0KKworICAgIH5fRXdrX1BvcHVwX01lbnVfSXRlbSgpCisgICAgeworICAgIH0K
K307CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfU0VQQVJB
VE9SLCBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19QT1BVUF9NRU5VX0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKKy8qKgorICog
QGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLworRXdr
X1BvcHVwX01lbnVfSXRlbSogZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcoV2ViUG9wdXBJdGVtOjpU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRleHQpCit7CisgICAgcmV0dXJuIG5ldyBFd2tfUG9wdXBf
TWVudV9JdGVtKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4odHlwZSksIHRl
eHQpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfUG9wdXBfTWVudV9J
dGVtLgorICovCit2b2lkIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShFd2tfUG9wdXBfTWVudV9J
dGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOworICAg
IGRlbGV0ZSBpdGVtOworfQorCitFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgZXdrX3BvcHVwX21l
bnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfUE9QVVBfTUVOVV9VTktO
T1dOKTsKKworICAgIHJldHVybiBpdGVtLT50eXBlOworfQorCitjb25zdCBjaGFyKiBld2tfcG9w
dXBfbWVudV9pdGVtX3RleHRfZ2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisgICAgcmV0
dXJuIGl0ZW0tPnRleHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFiNGQ3YjJiZDJlMjIx
ZDE4YWViNTdmYmRlNzc5YjU4NmZmYWE2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgK
KyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfcG9wdXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVf
aXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1
cCBtZW51IGl0ZW0uICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFS
QVRPUiwKKyAgICBFV0tfUE9QVVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05P
V04gPSAtMQorfSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX1BvcHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Q
b3B1cF9NZW51X0l0ZW0gRXdrX1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5
cGUgb2YgdGhlIHBvcHVwIG1lbnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAg
bWVudSBpdGVtIGluc3RhbmNlCisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRl
bSBvciBAYyBFV0tfUE9QVVBfTUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VB
UEkgRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQo
Y29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSAqaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0
IG9mIHRoZSBwb3B1cCBtZW51IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1l
bnUgaXRlbSBpbnN0YW5jZQorICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0g
b3IgQGMgTlVMTCBpbiBjYXNlIG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3Bv
cHVwX21lbnVfaXRlbV90ZXh0X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtICppdGVtKTsK
KyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVw
X21lbnVfaXRlbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZmY5
ZGJkYzA1MTYzZDJiZDU5OWYyYmQ1NTFlM2QxN2QwZWE5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcG9wdXBfbWVu
dV9pdGVtX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAor
CisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19w
b3B1cF9tZW51X2l0ZW1fbmV3KFdlYktpdDo6V2ViUG9wdXBJdGVtOjpUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIHRleHQpOwordm9pZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSk7CisKKyNlbmRpZiAvLyBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IGNlN2Y3YjQ1NDk0NjNjMTBmYmFjY2I3NTczYTNiZWFhZGUyNTNiMGQuLjVhNzAwNDc4Y2E4NDNj
MzYzZDY2Yjk2ZDFiZDc3MzE4YjA3NjhkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMxLDEwICszMSwxNCBAQAogI2luY2x1ZGUgIldL
UmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgor
I2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVt
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODMsNiArODcs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNl
c01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFj
a0ZvcndhcmRMaXN0OwogCisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5
OworICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gK
ICAgICBib29sIGlzVXNpbmdFY29yZVg7CiAjZW5kaWYKQEAgLTk2LDYgKzEwMyw4IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkK
ICAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkK
KyAgICAgICAgLCBwb3B1cE1lbnVQcm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDAp
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNl
bmRpZgpAQCAtMTE0LDYgKzEyMywxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBl
d2tfYmFja19mb3J3YXJkX2xpc3RfZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIHZv
aWQqIGl0ZW07CisgICAgICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtKQor
ICAgICAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1
cF9NZW51X0l0ZW0qPihpdGVtKSk7CiAgICAgfQogfTsKIApAQCAtMTQ0OCwzICsxNDYxLDY3IEBA
IHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRD
aGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQs
IExUUik7CisKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBBU1NFUlQo
cG9wdXBNZW51KTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAg
ICBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKGV3a1ZpZXcpOworICAgIHByaXYtPnBvcHVwTWVu
dVByb3h5ID0gcG9wdXBNZW51OworCisgICAgRWluYV9MaXN0KiBwb3B1cEl0ZW1zID0gMDsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gZXdrX3Bv
cHVwX21lbnVfaXRlbV9uZXcoaXRlbXNbaV0ubV90eXBlLCBpdGVtc1tpXS5tX3RleHQudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRl
bXMsIGl0ZW0pOworICAgIH0KKyAgICBwcml2LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7
CisKKyAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwg
c3RhdGljX2Nhc3Q8RXdrX1RleHRfRGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxl
RmFjdG9yLCBwb3B1cEl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKworRWluYV9Cb29sIGV3a192
aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CisKKyAg
ICBpZiAoIXByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IDA7CisKKyAgICBpZiAoc21hcnREYXRhLT5hcGktPnBv
cHVwX21lbnVfaGlkZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlkZShz
bWFydERhdGEpOworCisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJFRShwcml2LT5w
b3B1cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0
YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZhbHNlKTsKKwor
ICAgIGlmIChzZWxlY3RlZEluZGV4ID49IGVpbmFfbGlzdF9jb3VudChwcml2LT5wb3B1cE1lbnVJ
dGVtcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5
LT52YWx1ZUNoYW5nZWQoc2VsZWN0ZWRJbmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGFmYTQ1ODQ2
ZjUxYzhmMGFkMzU5NmZhZjU3NTcyOGUyNTY0NDEwYjkuLmI2YTFlNDkzMTUyOGQ2OTYwZDEwYzQx
ODZlYWVjNzM4MTJmNWU2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaApAQCAtODMsNiArODMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8v
LyBFbnVtIHZhbHVlcyBjb250YWluaW5nIHRleHQgZGlyZWN0aW9uYWxpdHkgdmFsdWVzLgordHlw
ZWRlZiBlbnVtIHsKKyAgICBFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBF
V0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVAorfSBFd2tfVGV4dF9EaXJlY3Rpb247CisK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xh
c3M7CiAKQEAgLTkxLDYgKzk3LDkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAg
ICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJl
IGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29s
ICgqcG9wdXBfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5n
bGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9z
Y2FsZV9mYWN0b3IsIEVpbmFfTGlzdCAqaXRlbXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAg
RWluYV9Cb29sICgqcG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisK
ICAgICAvLyBldmVudCBoYW5kbGluZzoKICAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxl
ZAogICAgIC8vICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlm
IGRlc2lyZWQKQEAgLTEwOCw3ICsxMTcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNz
IHsKICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxk
CiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVm
aW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsxMjksNyBAQCBzdHJ1Y3Qg
X0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
CiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0
KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFy
dF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXpl
ciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkw
LDYgKzU5OSwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29s
IGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisv
KioKKyAqIFNlbGVjdHMgaW5kZXggb2YgY3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5k
ZXggb2YgaXRlbSB0byBzZWxlY3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVw
IG1lbnUgaXMgbm90IHNlbGVjdGVkIG9yIGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVu
c2lnbmVkIGludCBpbmRleCk7CisKKy8qKgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4K
KyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVy
ZSAocHJvYmFibHkKKyAqICAgICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8p
OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEz
Y2RmNmJkODdiYTg4YTZiMWFmMTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4
NzQ1ZThmYmZmNDkwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRE
aXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiAr
MzMsMTEgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7
Cit9CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1
Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1Vy
bF9SZXF1ZXN0OwpAQCAtODksNCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2Nv
bXBvc2l0aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBl
d2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1
cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+
JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3By
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAK
aW5kZXggMzliYzVhNGRiZWM2NWNjNGUyOWYwM2FhNDFiMzQyMTg5ZjA0ZjMxYy4uODAzM2UyNDk4
OGVlYWI1YzY2ZDUzMWZmNDg5YjZlMTMxOGM0OGU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAi
RVdLMlVuaXRUZXN0QmFzZS5oIgogCiAjaW5jbHVkZSAiRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
aCIKLSNpbmNsdWRlIDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTQyLDcgKzQx
LDkgQEAgc3RhdGljIHZvaWQgb25Mb2FkRmluaXNoZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2Jq
ZWN0KiB3ZWJWaWV3LCB2b2lkKiBldmVudEluZm8KIEVXSzJVbml0VGVzdEJhc2U6OkVXSzJVbml0
VGVzdEJhc2UoKQogICAgIDogbV9lY29yZUV2YXMoMCkKICAgICAsIG1fd2ViVmlldygwKQorICAg
ICwgbV9ld2tWaWV3Q2xhc3MoRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04o
IkJyb3dzZXJfVmlldyIpKQogeworICAgIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldCgmbV9ld2tW
aWV3Q2xhc3MpOwogfQogCiB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKQEAgLTYwLDcg
KzYxLDggQEAgdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCiAgICAgZWNvcmVfZXZhc19z
aG93KG1fZWNvcmVFdmFzKTsKICAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29y
ZUV2YXMpOwogCi0gICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfYWRkKGV2YXMpOworICAgIEV2YXNf
U21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJm1fZXdrVmlld0NsYXNzLnNjKTsK
KyAgICBtX3dlYlZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGV3a19jb250
ZXh0X2RlZmF1bHRfZ2V0KCkpOwogICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZpZXcsIGVu
dmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CiAKICAgICBldmFzX29iamVjdF9yZXNpemUobV93
ZWJWaWV3LCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTc3LDEwICs3OSwxNSBAQCB2b2lkIEVXSzJVbml0
VGVzdEJhc2U6OlRlYXJEb3duKCkKIAogdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpsb2FkVXJsU3lu
Yyhjb25zdCBjaGFyKiB1cmwpCiB7CisgICAgZXdrX3ZpZXdfdXJpX3NldChtX3dlYlZpZXcsIHVy
bCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0
QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKK3sKICAgICBib29sIGxvYWRGaW5pc2hlZCA9
IGZhbHNlOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fd2ViVmlldywg
ImxvYWQsZmluaXNoZWQiLCBvbkxvYWRGaW5pc2hlZCwgJmxvYWRGaW5pc2hlZCk7Ci0gICAgZXdr
X3ZpZXdfdXJpX3NldChtX3dlYlZpZXcsIHVybCk7CiAKICAgICB3aGlsZSAoIWxvYWRGaW5pc2hl
ZCkKICAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKaW5kZXggMjlkNTViZWU0OWNhZmQ5MGE1ZWMyODU2
ZGM1YmNhN2NkYTk3MmJlNS4uZmE2YWJkMTYwNDhjYWE4MzA5MGI1OTVhYjg5NWU5ZjcwYzExNjgy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKQEAgLTIw
LDYgKzIwLDcgQEAKICNpZm5kZWYgRVdLMlVuaXRUZXN0QmFzZV9oCiAjZGVmaW5lIEVXSzJVbml0
VGVzdEJhc2VfaAogCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRlIDxFY29yZV9FdmFz
Lmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0yOSw2
ICszMCw3IEBAIG5hbWVzcGFjZSBFV0syVW5pdFRlc3QgewogY2xhc3MgRVdLMlVuaXRUZXN0QmFz
ZSA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiB3
ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mq
IGV3a1ZpZXdDbGFzcygpIHsgcmV0dXJuICZtX2V3a1ZpZXdDbGFzczsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgRVdLMlVuaXRUZXN0QmFzZSgpOwpAQCAtMzcsMTIgKzM5LDE0IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKTsKIAogICAgIHZvaWQgbG9hZFVybFN5bmMoY29u
c3QgY2hhciogdXJsKTsKKyAgICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIHZv
aWQgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oY29uc3QgY2hhciogZXhwZWN0ZWRUaXRsZSk7CiAg
ICAgdm9pZCBtb3VzZUNsaWNrKGludCB4LCBpbnQgeSk7CiAKIHByaXZhdGU6CiAgICAgRXZhc19P
YmplY3QqIG1fd2ViVmlldzsKICAgICBFY29yZV9FdmFzKiBtX2Vjb3JlRXZhczsKKyAgICBFd2tf
Vmlld19TbWFydF9DbGFzcyBtX2V3a1ZpZXdDbGFzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEVX
SzJVbml0VGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCmluZGV4IDVlZGIwNDM3OWE1ZmQ4OTE0MTA2NGY2
MjI4YzE0NDk4YTYwMWMxZjEuLjZmZTljMmZlNDMxYTFiMTQ2MmNlYjk2MGRkYjQ0ZWFiNGU0NjE3
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl92aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTE4OCwzICsxODgsMzAgQEAgVEVTVF9GKEVXSzJV
bml0VGVzdEJhc2UsIGV3a192aWV3X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0KQogICAgIEFTU0VS
VF9UUlVFKGhhbmRsZWQpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJW
aWV3KCksICJmb3JtLHN1Ym1pc3Npb24scmVxdWVzdCIsIG9uRm9ybUFib3V0VG9CZVN1Ym1pdHRl
ZCk7CiB9CisKK0VpbmFfQm9vbCBwb3B1cF9tZW51X3Nob3coRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhLCBFaW5hX1JlY3RhbmdsZSwgRXdrX1RleHRfRGlyZWN0aW9uLCBkb3VibGUsIEVp
bmFfTGlzdCosIGludCBzZWxlY3RlZEluZGV4KQoreworICAgIEVYUEVDVF9FUShzZWxlY3RlZElu
ZGV4LCAyKTsKKyAgICBFWFBFQ1RfVFJVRShld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdChzbWFy
dERhdGEtPnNlbGYsIDApKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitURVNUX0YoRVdLMlVu
aXRUZXN0QmFzZSwgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpCit7CisgICAgY29uc3QgY2hh
ciogc2VsZWN0SFRNTCA9CisgICAgICAgICI8IWRvY3R5cGUgaHRtbD48Ym9keT48c2VsZWN0IG9u
Y2hhbmdlPVwiZG9jdW1lbnQudGl0bGU9dGhpcy52YWx1ZTtcIj4iCisgICAgICAgICI8b3B0aW9u
PmZpcnN0PC9vcHRpb24+PG9wdGlvbj5zZWNvbmQ8L29wdGlvbj48b3B0aW9uIHNlbGVjdGVkPnRo
aXJkPC9vcHRpb24+IgorICAgICAgICAiPC9zZWxlY3Q+PC9ib2R5PiI7CisKKyAgICBld2tWaWV3
Q2xhc3MoKS0+cG9wdXBfbWVudV9zaG93ID0gcG9wdXBfbWVudV9zaG93OworCisgICAgZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHNlbGVjdEhUTUwsICJmaWxlOi8vLyIsIDAp
OworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsK
KyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiZmlyc3QiKTsKKyAgICBBU1NFUlRfU1RSRVEo
ZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZpZXcoKSksICJmaXJzdCIpOworCisgICAgRVhQRUNUX1RS
VUUoZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZSh3ZWJWaWV3KCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3Qod2ViVmlldygpLCAwKSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlmMGIzN2Q2N2RlNTYxZTY0OWQzOTZlMGMzZmIzNGVkMjkwZjgxZDMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVu
dVByb3h5RWZsLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCisKKyNpbmNsdWRlICJO
YXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisjaW5jbHVk
ZSAiZXdrX3ZpZXcuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1cE1lbnVQcm94eUVm
bChFdmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50
KQorICAgIDogV2ViUG9wdXBNZW51UHJveHkoY2xpZW50KQorICAgICwgbV93ZWJWaWV3KHdlYlZp
ZXcpCit7Cit9CisKK1dlYlBvcHVwTWVudVByb3h5RWZsOjp+V2ViUG9wdXBNZW51UHJveHlFZmwo
KQoreworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93UG9wdXBNZW51KGNvbnN0
IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VT
Y2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0
Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9yZXF1ZXN0KG1fd2ViVmlldywgdGhpcywgcmVjdCwgdGV4dERpcmVjdGlv
biwgcGFnZVNjYWxlRmFjdG9yLCBpdGVtcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2Vi
UG9wdXBNZW51UHJveHlFZmw6OmhpZGVQb3B1cE1lbnUoKQoreworICAgIGV3a192aWV3X3BvcHVw
X21lbnVfY2xvc2UobV93ZWJWaWV3KTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6
dmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KQoreworICAgIG1fY2xpZW50LT52YWx1
ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgbmV3U2VsZWN0ZWRJbmRleCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQb3B1cE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYmZjNDlkOTBmM2JkMTY1MTY0Zjll
ODQ4ZDEwNDRmNzA0Y2U0MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViUG9wdXBNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJQb3B1cE1l
bnVQcm94eUVmbF9oCisKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgorCit0eXBlZGVm
IHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEludFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsIDogcHVibGljIFdlYlBvcHVwTWVu
dVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94
eUVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xp
ZW50KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVw
TWVudVByb3h5RWZsKHdlYlZpZXcsIGNsaWVudCkpOworICAgIH0KKyAgICB+V2ViUG9wdXBNZW51
UHJveHlFZmwoKTsKKworICAgIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBp
bnQzMl90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOworCisgICAg
dm9pZCB2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpOworCitwcml2YXRlOgorICAg
IFdlYlBvcHVwTWVudVByb3h5RWZsKEV2YXNfT2JqZWN0KiwgV2ViUG9wdXBNZW51UHJveHk6OkNs
aWVudCopOworCisgICAgRXZhc19PYmplY3QqIG1fd2ViVmlldzsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlFZmxfaApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYx
MTFlMzVkODFiNjUyN2YxZDBhZDA2MGQzNzIzYTZiMTBmYjNlYmIuLmM4ODhlMDBlYTFlYzNkMGZl
MzYyZTcwYmVlMjZkMDcxNWQ3ZDZhNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wOC0y
NiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1b
V0syXSBJbXBsZW1lbnQgV2ViUG9wdXBNZW51UHJveHlFZmwgdG8gc3VwcG9ydCA8c2VsZWN0Pgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2VmbC13azIvVGVzdEV4cGVjdGF0aW9uczogVW5za2lwIGZhc3QvZm9ybXMvc2VsZWN0L21lbnVs
aXN0LXBvcHVwLWNyYXNoLmh0bWwKKwogMjAxMi0wOC0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIEZpbmFsbHkgaW5saW5pbmcgc2hvdWxkIGNvcnJlY3RseSB0
cmFjayB0aGUgY2F0Y2ggY29udGV4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGVhZTE0MTY4ZWQ5YzRiZGRjZGVhY2M4MmE5NTRkOGVkMDc5
YTU2MTEuLjk4NDJiMjhhM2E2ZTQ3YmE1MDBjZGRjZjE5NDQxZDkwYWFlNDQ0M2IgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM4LDcgKzM4
LDYgQEAgQlVHV0tFRkwgOiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc3VzcGVuZC1hY3Rp
dmUtZG9tLW9iamVjdHMuaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGluc3BlY3Rvci9kZWJ1Z2dl
ci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDog
aW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLWV2YWwtb24tY2FsbC1mcmFtZS5odG1sID0gQ1JB
U0gKIEJVR1dLRUZMIDogZmFzdC9sb2FkZXIvZG9jdW1lbnQtd2l0aC1mcmFnbWVudC11cmwtMS5o
dG1sID0gQ1JBU0gKLUJVR1dLRUZMIDogZmFzdC9mb3Jtcy9zZWxlY3QvbWVudWxpc3QtcG9wdXAt
Y3Jhc2guaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRz
ZXQtY3Jhc2guaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGZhc3QvZXZlbnRzL2tleWV2ZW50LWlm
cmFtZS1yZW1vdmVkLWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBmYXN0L292ZXJmbG93
L2xvdHMtb2Ytc2libGluZy1pbmxpbmUtYm94ZXMuaHRtbCA9IENSQVNICg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160636</attachid>
            <date>2012-08-26 22:33:27 -0700</date>
            <delta_ts>2012-08-26 23:01:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120827143319.patch</filename>
            <type>text/plain</type>
            <size>34877</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYzZDI4N2YzMzA0ZTJh
YzllZTQxNzlhMzU5Mzk5YzQ2MDVmNmJhMC4uMjk4YjljZWJjNTY1OGEwZGE0MWRkOGUxMzgwZTkz
OTMwNzdhNDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTI2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OkVX
SzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNl
OjpTZXRVcCk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OmxvYWRV
cmxTeW5jKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgRXh0cmFjdGVkIGZyb20gbG9hZFVybFN5bmMgZm9y
IHRlc3RzIHVzaW5nIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQgdG8KKyAgICAgICAgc2hhcmUg
b25Mb2FkRmluaXNoZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJV
bml0VGVzdEJhc2U6OmV3a1ZpZXdDbGFzcyk6CisgICAgICAgIEFkZGVkIGV3a1ZpZXdDbGFzcyB0
byB0ZXN0IHNtYXJ0IG1ldGhvZHMgc3VjaCBhcyBwb3B1cF9tZW51X3Nob3cuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAocG9w
dXBfbWVudV9zaG93KToKKyAgICAgICAgKFRFU1RfRik6IEFkZGVkIGEgdGVzdCBjYXNlIGZvciBl
d2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCBhbmQgcmVsYXRlZCBjb2Rlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBN
ZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldl
YlBvcHVwTWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlF
Zmw6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVm
bDo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eUVmbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTI1ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNh
aXJvIEJ1aWxkIEJyb2tlbiBkdWUgdG8gbWlzc2luZyBleHBvcnQgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEy
ZDZjOGVhNi4uM2EwNTA1YzZhMTEzMThkMjg5MDQzMzllMjlkMjQ4N2ZiODRmYTdmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTU1LDYgKzU1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03NSw2
ICs3Niw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYkNv
b2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCkBAIC0xMjYsNiArMTI4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCkBAIC0yMDYsNiArMjA5LDcgQEAgU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKaW5kZXggZDk4MDIzZGU2ZTBlZmE2ZGUwN2ZjOWZiOGMyMTVkMzljYzQ4OTg3Yy4u
ZjFjMDkwZWRiYzQyNjg5MmFjNDhiZTk4ZjhjYmM5NjA4NjRhMzE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNs
dWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNsdWRlICJld2tfcG9w
dXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCA3MjZjYWFhZTFhMWVmYTk2MzhkYjc3NDc2NzZiMDFhMzFhMjFjNmI2Li5iYWNi
ZjMwMDA0M2YwMGZhZmZmMzk3YjE4NzJjMzlkMzI2NWFkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTIwNCwx
MCArMjA1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW4KIH0KICNlbmRpZgogCi1QYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51
UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NTUxNzA3MTZmOGIz
ZTlmNWExMmFjODg2YWMxZGYwODEyZjY3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcApAQCAtMCwwICsx
LDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19w
b3B1cF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAgX0V3
a19Qb3B1cF9NZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBwb3B1cCBtZW51IGRh
dGEuCisgKi8KK3N0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSB7CisgICAgRXdrX1BvcHVwX01l
bnVfSXRlbV9UeXBlIHR5cGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHRleHQ7CisKKyAgICBf
RXdrX1BvcHVwX01lbnVfSXRlbShFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgX3R5cGUsIGNvbnN0
IGNoYXIqIF90ZXh0KQorICAgICAgICA6IHR5cGUoX3R5cGUpCisgICAgICAgICwgdGV4dChfdGV4
dCkKKyAgICB7IH0KKworICAgIH5fRXdrX1BvcHVwX01lbnVfSXRlbSgpCisgICAgeworICAgIH0K
K307CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfU0VQQVJB
VE9SLCBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19QT1BVUF9NRU5VX0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKKy8qKgorICog
QGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLworRXdr
X1BvcHVwX01lbnVfSXRlbSogZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcoV2ViUG9wdXBJdGVtOjpU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRleHQpCit7CisgICAgcmV0dXJuIG5ldyBFd2tfUG9wdXBf
TWVudV9JdGVtKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4odHlwZSksIHRl
eHQpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfUG9wdXBfTWVudV9J
dGVtLgorICovCit2b2lkIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShFd2tfUG9wdXBfTWVudV9J
dGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOworICAg
IGRlbGV0ZSBpdGVtOworfQorCitFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgZXdrX3BvcHVwX21l
bnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfUE9QVVBfTUVOVV9VTktO
T1dOKTsKKworICAgIHJldHVybiBpdGVtLT50eXBlOworfQorCitjb25zdCBjaGFyKiBld2tfcG9w
dXBfbWVudV9pdGVtX3RleHRfZ2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisgICAgcmV0
dXJuIGl0ZW0tPnRleHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFiNGQ3YjJiZDJlMjIx
ZDE4YWViNTdmYmRlNzc5YjU4NmZmYWE2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgK
KyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfcG9wdXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVf
aXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1
cCBtZW51IGl0ZW0uICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFS
QVRPUiwKKyAgICBFV0tfUE9QVVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05P
V04gPSAtMQorfSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX1BvcHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Q
b3B1cF9NZW51X0l0ZW0gRXdrX1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5
cGUgb2YgdGhlIHBvcHVwIG1lbnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAg
bWVudSBpdGVtIGluc3RhbmNlCisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRl
bSBvciBAYyBFV0tfUE9QVVBfTUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VB
UEkgRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQo
Y29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSAqaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0
IG9mIHRoZSBwb3B1cCBtZW51IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1l
bnUgaXRlbSBpbnN0YW5jZQorICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0g
b3IgQGMgTlVMTCBpbiBjYXNlIG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3Bv
cHVwX21lbnVfaXRlbV90ZXh0X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtICppdGVtKTsK
KyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVw
X21lbnVfaXRlbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZmY5
ZGJkYzA1MTYzZDJiZDU5OWYyYmQ1NTFlM2QxN2QwZWE5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcG9wdXBfbWVu
dV9pdGVtX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAor
CisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19w
b3B1cF9tZW51X2l0ZW1fbmV3KFdlYktpdDo6V2ViUG9wdXBJdGVtOjpUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIHRleHQpOwordm9pZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSk7CisKKyNlbmRpZiAvLyBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IGNlN2Y3YjQ1NDk0NjNjMTBmYmFjY2I3NTczYTNiZWFhZGUyNTNiMGQuLjVhNzAwNDc4Y2E4NDNj
MzYzZDY2Yjk2ZDFiZDc3MzE4YjA3NjhkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMxLDEwICszMSwxNCBAQAogI2luY2x1ZGUgIldL
UmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgor
I2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVt
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODMsNiArODcs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNl
c01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFj
a0ZvcndhcmRMaXN0OwogCisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5
OworICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gK
ICAgICBib29sIGlzVXNpbmdFY29yZVg7CiAjZW5kaWYKQEAgLTk2LDYgKzEwMyw4IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkK
ICAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkK
KyAgICAgICAgLCBwb3B1cE1lbnVQcm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDAp
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNl
bmRpZgpAQCAtMTE0LDYgKzEyMywxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBl
d2tfYmFja19mb3J3YXJkX2xpc3RfZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIHZv
aWQqIGl0ZW07CisgICAgICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtKQor
ICAgICAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1
cF9NZW51X0l0ZW0qPihpdGVtKSk7CiAgICAgfQogfTsKIApAQCAtMTQ0OCwzICsxNDYxLDY3IEBA
IHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRD
aGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQs
IExUUik7CisKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBBU1NFUlQo
cG9wdXBNZW51KTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAg
ICBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKGV3a1ZpZXcpOworICAgIHByaXYtPnBvcHVwTWVu
dVByb3h5ID0gcG9wdXBNZW51OworCisgICAgRWluYV9MaXN0KiBwb3B1cEl0ZW1zID0gMDsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gZXdrX3Bv
cHVwX21lbnVfaXRlbV9uZXcoaXRlbXNbaV0ubV90eXBlLCBpdGVtc1tpXS5tX3RleHQudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRl
bXMsIGl0ZW0pOworICAgIH0KKyAgICBwcml2LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7
CisKKyAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwg
c3RhdGljX2Nhc3Q8RXdrX1RleHRfRGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxl
RmFjdG9yLCBwb3B1cEl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKworRWluYV9Cb29sIGV3a192
aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CisKKyAg
ICBpZiAoIXByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IDA7CisKKyAgICBpZiAoc21hcnREYXRhLT5hcGktPnBv
cHVwX21lbnVfaGlkZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlkZShz
bWFydERhdGEpOworCisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJFRShwcml2LT5w
b3B1cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0
YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZhbHNlKTsKKwor
ICAgIGlmIChzZWxlY3RlZEluZGV4ID49IGVpbmFfbGlzdF9jb3VudChwcml2LT5wb3B1cE1lbnVJ
dGVtcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5
LT52YWx1ZUNoYW5nZWQoc2VsZWN0ZWRJbmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGFmYTQ1ODQ2
ZjUxYzhmMGFkMzU5NmZhZjU3NTcyOGUyNTY0NDEwYjkuLmI2YTFlNDkzMTUyOGQ2OTYwZDEwYzQx
ODZlYWVjNzM4MTJmNWU2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaApAQCAtODMsNiArODMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8v
LyBFbnVtIHZhbHVlcyBjb250YWluaW5nIHRleHQgZGlyZWN0aW9uYWxpdHkgdmFsdWVzLgordHlw
ZWRlZiBlbnVtIHsKKyAgICBFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBF
V0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVAorfSBFd2tfVGV4dF9EaXJlY3Rpb247CisK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xh
c3M7CiAKQEAgLTkxLDYgKzk3LDkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAg
ICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJl
IGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29s
ICgqcG9wdXBfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5n
bGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9z
Y2FsZV9mYWN0b3IsIEVpbmFfTGlzdCAqaXRlbXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAg
RWluYV9Cb29sICgqcG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisK
ICAgICAvLyBldmVudCBoYW5kbGluZzoKICAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxl
ZAogICAgIC8vICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlm
IGRlc2lyZWQKQEAgLTEwOCw3ICsxMTcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNz
IHsKICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxk
CiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVm
aW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsxMjksNyBAQCBzdHJ1Y3Qg
X0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
CiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0
KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFy
dF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXpl
ciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkw
LDYgKzU5OSwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29s
IGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisv
KioKKyAqIFNlbGVjdHMgaW5kZXggb2YgY3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5k
ZXggb2YgaXRlbSB0byBzZWxlY3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVw
IG1lbnUgaXMgbm90IHNlbGVjdGVkIG9yIGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVu
c2lnbmVkIGludCBpbmRleCk7CisKKy8qKgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4K
KyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVy
ZSAocHJvYmFibHkKKyAqICAgICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8p
OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEz
Y2RmNmJkODdiYTg4YTZiMWFmMTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4
NzQ1ZThmYmZmNDkwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRE
aXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiAr
MzMsMTEgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7
Cit9CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1
Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1Vy
bF9SZXF1ZXN0OwpAQCAtODksNCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2Nv
bXBvc2l0aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBl
d2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1
cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+
JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3By
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAK
aW5kZXggMzliYzVhNGRiZWM2NWNjNGUyOWYwM2FhNDFiMzQyMTg5ZjA0ZjMxYy4uODAzM2UyNDk4
OGVlYWI1YzY2ZDUzMWZmNDg5YjZlMTMxOGM0OGU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAi
RVdLMlVuaXRUZXN0QmFzZS5oIgogCiAjaW5jbHVkZSAiRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
aCIKLSNpbmNsdWRlIDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTQyLDcgKzQx
LDkgQEAgc3RhdGljIHZvaWQgb25Mb2FkRmluaXNoZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2Jq
ZWN0KiB3ZWJWaWV3LCB2b2lkKiBldmVudEluZm8KIEVXSzJVbml0VGVzdEJhc2U6OkVXSzJVbml0
VGVzdEJhc2UoKQogICAgIDogbV9lY29yZUV2YXMoMCkKICAgICAsIG1fd2ViVmlldygwKQorICAg
ICwgbV9ld2tWaWV3Q2xhc3MoRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04o
IkJyb3dzZXJfVmlldyIpKQogeworICAgIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldCgmbV9ld2tW
aWV3Q2xhc3MpOwogfQogCiB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKQEAgLTYwLDcg
KzYxLDggQEAgdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCiAgICAgZWNvcmVfZXZhc19z
aG93KG1fZWNvcmVFdmFzKTsKICAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29y
ZUV2YXMpOwogCi0gICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfYWRkKGV2YXMpOworICAgIEV2YXNf
U21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJm1fZXdrVmlld0NsYXNzLnNjKTsK
KyAgICBtX3dlYlZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGV3a19jb250
ZXh0X2RlZmF1bHRfZ2V0KCkpOwogICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZpZXcsIGVu
dmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CiAKICAgICBldmFzX29iamVjdF9yZXNpemUobV93
ZWJWaWV3LCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTc3LDEwICs3OSwxNSBAQCB2b2lkIEVXSzJVbml0
VGVzdEJhc2U6OlRlYXJEb3duKCkKIAogdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpsb2FkVXJsU3lu
Yyhjb25zdCBjaGFyKiB1cmwpCiB7CisgICAgZXdrX3ZpZXdfdXJpX3NldChtX3dlYlZpZXcsIHVy
bCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0
QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKK3sKICAgICBib29sIGxvYWRGaW5pc2hlZCA9
IGZhbHNlOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fd2ViVmlldywg
ImxvYWQsZmluaXNoZWQiLCBvbkxvYWRGaW5pc2hlZCwgJmxvYWRGaW5pc2hlZCk7Ci0gICAgZXdr
X3ZpZXdfdXJpX3NldChtX3dlYlZpZXcsIHVybCk7CiAKICAgICB3aGlsZSAoIWxvYWRGaW5pc2hl
ZCkKICAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKaW5kZXggMjlkNTViZWU0OWNhZmQ5MGE1ZWMyODU2
ZGM1YmNhN2NkYTk3MmJlNS4uZmE2YWJkMTYwNDhjYWE4MzA5MGI1OTVhYjg5NWU5ZjcwYzExNjgy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKQEAgLTIw
LDYgKzIwLDcgQEAKICNpZm5kZWYgRVdLMlVuaXRUZXN0QmFzZV9oCiAjZGVmaW5lIEVXSzJVbml0
VGVzdEJhc2VfaAogCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRlIDxFY29yZV9FdmFz
Lmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0yOSw2
ICszMCw3IEBAIG5hbWVzcGFjZSBFV0syVW5pdFRlc3QgewogY2xhc3MgRVdLMlVuaXRUZXN0QmFz
ZSA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiB3
ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mq
IGV3a1ZpZXdDbGFzcygpIHsgcmV0dXJuICZtX2V3a1ZpZXdDbGFzczsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgRVdLMlVuaXRUZXN0QmFzZSgpOwpAQCAtMzcsMTIgKzM5LDE0IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKTsKIAogICAgIHZvaWQgbG9hZFVybFN5bmMoY29u
c3QgY2hhciogdXJsKTsKKyAgICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIHZv
aWQgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oY29uc3QgY2hhciogZXhwZWN0ZWRUaXRsZSk7CiAg
ICAgdm9pZCBtb3VzZUNsaWNrKGludCB4LCBpbnQgeSk7CiAKIHByaXZhdGU6CiAgICAgRXZhc19P
YmplY3QqIG1fd2ViVmlldzsKICAgICBFY29yZV9FdmFzKiBtX2Vjb3JlRXZhczsKKyAgICBFd2tf
Vmlld19TbWFydF9DbGFzcyBtX2V3a1ZpZXdDbGFzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEVX
SzJVbml0VGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCmluZGV4IDVlZGIwNDM3OWE1ZmQ4OTE0MTA2NGY2
MjI4YzE0NDk4YTYwMWMxZjEuLjgwZDA0NTc4MDI3MWE0NTBhZjQzZjhlN2NhOWQ0MTdjYzViYzA1
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl92aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTE4OCwzICsxODgsMzAgQEAgVEVTVF9GKEVXSzJV
bml0VGVzdEJhc2UsIGV3a192aWV3X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0KQogICAgIEFTU0VS
VF9UUlVFKGhhbmRsZWQpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJW
aWV3KCksICJmb3JtLHN1Ym1pc3Npb24scmVxdWVzdCIsIG9uRm9ybUFib3V0VG9CZVN1Ym1pdHRl
ZCk7CiB9CisKK3N0YXRpYyBFaW5hX0Jvb2wgcG9wdXBfbWVudV9zaG93KEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSwgRWluYV9SZWN0YW5nbGUsIEV3a19UZXh0X0RpcmVjdGlvbiwgZG91
YmxlLCBFaW5hX0xpc3QqLCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFWFBFQ1RfRVEoc2Vs
ZWN0ZWRJbmRleCwgMik7CisgICAgRVhQRUNUX1RSVUUoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxl
Y3Qoc21hcnREYXRhLT5zZWxmLCAwKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVEVTVF9G
KEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KQoreworICAgIGNv
bnN0IGNoYXIqIHNlbGVjdEhUTUwgPQorICAgICAgICAiPCFkb2N0eXBlIGh0bWw+PGJvZHk+PHNl
bGVjdCBvbmNoYW5nZT1cImRvY3VtZW50LnRpdGxlPXRoaXMudmFsdWU7XCI+IgorICAgICAgICAi
PG9wdGlvbj5maXJzdDwvb3B0aW9uPjxvcHRpb24+c2Vjb25kPC9vcHRpb24+PG9wdGlvbiBzZWxl
Y3RlZD50aGlyZDwvb3B0aW9uPiIKKyAgICAgICAgIjwvc2VsZWN0PjwvYm9keT4iOworCisgICAg
ZXdrVmlld0NsYXNzKCktPnBvcHVwX21lbnVfc2hvdyA9IHBvcHVwX21lbnVfc2hvdzsKKworICAg
IGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBzZWxlY3RIVE1MLCAiZmlsZTov
Ly8iLCAwKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBtb3VzZUNsaWNrKDMw
LCAyMCk7CisgICAgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oImZpcnN0Iik7CisgICAgQVNTRVJU
X1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAiZmlyc3QiKTsKKworICAgIEVY
UEVDVF9UUlVFKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2Uod2ViVmlldygpKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KHdlYlZpZXcoKSwgMCkpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94
eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZjBiMzdkNjdkZTU2MWU2NDlkMzk2ZTBjM2ZiMzRlZDI5MGY4
MWQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
b3B1cE1lbnVQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5j
bHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgor
I2luY2x1ZGUgImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBNZW51
UHJveHlFZmwoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQq
IGNsaWVudCkKKyAgICA6IFdlYlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fd2ViVmll
dyh3ZWJWaWV3KQoreworfQorCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldlYlBvcHVwTWVudVBy
b3h5RWZsKCkKK3sKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1BvcHVwTWVu
dShjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJs
ZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29u
c3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAg
IGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIHJlY3QsIHRleHRE
aXJlY3Rpb24sIHBhZ2VTY2FsZUZhY3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2
b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjpoaWRlUG9wdXBNZW51KCkKK3sKKyAgICBld2tfdmll
d19wb3B1cF9tZW51X2Nsb3NlKG1fd2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJv
eHlFZmw6OnZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2NsaWVu
dC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG5ld1NlbGVjdGVkSW5kZXgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmJmYzQ5ZDkwZjNiZDE2
NTE2NGY5ZTg0OGQxMDQ0ZjcwNGNlNDE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2Vi
UG9wdXBNZW51UHJveHlFZmxfaAorCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKKwor
dHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1YmxpYyBXZWJQ
b3B1cE1lbnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBN
ZW51UHJveHlFZmw+IGNyZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJv
eHk6OkNsaWVudCogY2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJQb3B1cE1lbnVQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQpKTsKKyAgICB9CisgICAgfldlYlBv
cHVwTWVudVByb3h5RWZsKCk7CisKKyAgICB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0
b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGhpZGVQb3B1cE1lbnUoKTsK
KworICAgIHZvaWQgdmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KTsKKworcHJpdmF0
ZToKKyAgICBXZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09iamVjdCosIFdlYlBvcHVwTWVudVBy
b3h5OjpDbGllbnQqKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBmMTExZTM1ZDgxYjY1MjdmMWQwYWQwNjBkMzcyM2E2YjEwZmIzZWJiLi5jODg4ZTAwZWEx
ZWMzZDBmZTM2MmU3MGJlZTI2ZDA3MTVkN2Q2YTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTItMDgtMjYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl0gSW1wbGVtZW50IFdlYlBvcHVwTWVudVByb3h5RWZsIHRvIHN1cHBvcnQgPHNl
bGVjdD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4
NjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCBmYXN0L2Zvcm1zL3NlbGVj
dC9tZW51bGlzdC1wb3B1cC1jcmFzaC5odG1sCisKIDIwMTItMDgtMjYgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5hbGx5IGlubGluaW5nIHNob3VsZCBjb3Jy
ZWN0bHkgdHJhY2sgdGhlIGNhdGNoIGNvbnRleHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlYWUxNDE2OGVkOWM0YmRkY2RlYWNjODJhOTU0
ZDhlZDA3OWE1NjExLi45ODQyYjI4YTNhNmU0N2JhNTAwY2RkY2YxOTQ0MWQ5MGFhZTQ0NDNiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0z
OCw3ICszOCw2IEBAIEJVR1dLRUZMIDogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN1c3Bl
bmQtYWN0aXZlLWRvbS1vYmplY3RzLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBpbnNwZWN0b3Iv
ZGVidWdnZXIvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3JpcHQuaHRtbCA9IENSQVNICiBCVUdX
S0VGTCA6IGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1ldmFsLW9uLWNhbGwtZnJhbWUuaHRt
bCA9IENSQVNICiBCVUdXS0VGTCA6IGZhc3QvbG9hZGVyL2RvY3VtZW50LXdpdGgtZnJhZ21lbnQt
dXJsLTEuaHRtbCA9IENSQVNICi1CVUdXS0VGTCA6IGZhc3QvZm9ybXMvc2VsZWN0L21lbnVsaXN0
LXBvcHVwLWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBmYXN0L2Zvcm1zL2ZpZWxkc2V0
L2ZpZWxkc2V0LWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBmYXN0L2V2ZW50cy9rZXll
dmVudC1pZnJhbWUtcmVtb3ZlZC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9v
dmVyZmxvdy9sb3RzLW9mLXNpYmxpbmctaW5saW5lLWJveGVzLmh0bWwgPSBDUkFTSAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160644</attachid>
            <date>2012-08-26 23:01:20 -0700</date>
            <delta_ts>2012-08-26 23:02:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120827150111.patch</filename>
            <type>text/plain</type>
            <size>34872</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYzZDI4N2YzMzA0ZTJh
YzllZTQxNzlhMzU5Mzk5YzQ2MDVmNmJhMC4uMjk4YjljZWJjNTY1OGEwZGE0MWRkOGUxMzgwZTkz
OTMwNzdhNDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTI2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OkVX
SzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNl
OjpTZXRVcCk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OmxvYWRV
cmxTeW5jKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgRXh0cmFjdGVkIGZyb20gbG9hZFVybFN5bmMgZm9y
IHRlc3RzIHVzaW5nIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQgdG8KKyAgICAgICAgc2hhcmUg
b25Mb2FkRmluaXNoZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJV
bml0VGVzdEJhc2U6OmV3a1ZpZXdDbGFzcyk6CisgICAgICAgIEFkZGVkIGV3a1ZpZXdDbGFzcyB0
byB0ZXN0IHNtYXJ0IG1ldGhvZHMgc3VjaCBhcyBwb3B1cF9tZW51X3Nob3cuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAocG9w
dXBfbWVudV9zaG93KToKKyAgICAgICAgKFRFU1RfRik6IEFkZGVkIGEgdGVzdCBjYXNlIGZvciBl
d2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCBhbmQgcmVsYXRlZCBjb2Rlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBN
ZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldl
YlBvcHVwTWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlF
Zmw6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVm
bDo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eUVmbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTI1ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNh
aXJvIEJ1aWxkIEJyb2tlbiBkdWUgdG8gbWlzc2luZyBleHBvcnQgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEy
ZDZjOGVhNi4uM2EwNTA1YzZhMTEzMThkMjg5MDQzMzllMjlkMjQ4N2ZiODRmYTdmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTU1LDYgKzU1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03NSw2
ICs3Niw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYkNv
b2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCkBAIC0xMjYsNiArMTI4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCkBAIC0yMDYsNiArMjA5LDcgQEAgU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKaW5kZXggZDk4MDIzZGU2ZTBlZmE2ZGUwN2ZjOWZiOGMyMTVkMzljYzQ4OTg3Yy4u
ZjFjMDkwZWRiYzQyNjg5MmFjNDhiZTk4ZjhjYmM5NjA4NjRhMzE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNs
dWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNsdWRlICJld2tfcG9w
dXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCA3MjZjYWFhZTFhMWVmYTk2MzhkYjc3NDc2NzZiMDFhMzFhMjFjNmI2Li5iYWNi
ZjMwMDA0M2YwMGZhZmZmMzk3YjE4NzJjMzlkMzI2NWFkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTIwNCwx
MCArMjA1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW4KIH0KICNlbmRpZgogCi1QYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51
UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NTUxNzA3MTZmOGIz
ZTlmNWExMmFjODg2YWMxZGYwODEyZjY3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcApAQCAtMCwwICsx
LDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19w
b3B1cF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAgX0V3
a19Qb3B1cF9NZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBwb3B1cCBtZW51IGRh
dGEuCisgKi8KK3N0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSB7CisgICAgRXdrX1BvcHVwX01l
bnVfSXRlbV9UeXBlIHR5cGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHRleHQ7CisKKyAgICBf
RXdrX1BvcHVwX01lbnVfSXRlbShFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgX3R5cGUsIGNvbnN0
IGNoYXIqIF90ZXh0KQorICAgICAgICA6IHR5cGUoX3R5cGUpCisgICAgICAgICwgdGV4dChfdGV4
dCkKKyAgICB7IH0KKworICAgIH5fRXdrX1BvcHVwX01lbnVfSXRlbSgpCisgICAgeworICAgIH0K
K307CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfU0VQQVJB
VE9SLCBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19QT1BVUF9NRU5VX0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKKy8qKgorICog
QGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLworRXdr
X1BvcHVwX01lbnVfSXRlbSogZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcoV2ViUG9wdXBJdGVtOjpU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRleHQpCit7CisgICAgcmV0dXJuIG5ldyBFd2tfUG9wdXBf
TWVudV9JdGVtKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4odHlwZSksIHRl
eHQpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfUG9wdXBfTWVudV9J
dGVtLgorICovCit2b2lkIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShFd2tfUG9wdXBfTWVudV9J
dGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOworICAg
IGRlbGV0ZSBpdGVtOworfQorCitFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgZXdrX3BvcHVwX21l
bnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfUE9QVVBfTUVOVV9VTktO
T1dOKTsKKworICAgIHJldHVybiBpdGVtLT50eXBlOworfQorCitjb25zdCBjaGFyKiBld2tfcG9w
dXBfbWVudV9pdGVtX3RleHRfZ2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisgICAgcmV0
dXJuIGl0ZW0tPnRleHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFiNGQ3YjJiZDJlMjIx
ZDE4YWViNTdmYmRlNzc5YjU4NmZmYWE2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgK
KyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfcG9wdXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVf
aXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1
cCBtZW51IGl0ZW0uICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFS
QVRPUiwKKyAgICBFV0tfUE9QVVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05P
V04gPSAtMQorfSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX1BvcHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Q
b3B1cF9NZW51X0l0ZW0gRXdrX1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5
cGUgb2YgdGhlIHBvcHVwIG1lbnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAg
bWVudSBpdGVtIGluc3RhbmNlCisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRl
bSBvciBAYyBFV0tfUE9QVVBfTUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VB
UEkgRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQo
Y29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSAqaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0
IG9mIHRoZSBwb3B1cCBtZW51IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1l
bnUgaXRlbSBpbnN0YW5jZQorICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0g
b3IgQGMgTlVMTCBpbiBjYXNlIG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3Bv
cHVwX21lbnVfaXRlbV90ZXh0X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtICppdGVtKTsK
KyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVw
X21lbnVfaXRlbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZmY5
ZGJkYzA1MTYzZDJiZDU5OWYyYmQ1NTFlM2QxN2QwZWE5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcG9wdXBfbWVu
dV9pdGVtX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAor
CisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19w
b3B1cF9tZW51X2l0ZW1fbmV3KFdlYktpdDo6V2ViUG9wdXBJdGVtOjpUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIHRleHQpOwordm9pZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSk7CisKKyNlbmRpZiAvLyBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IGNlN2Y3YjQ1NDk0NjNjMTBmYmFjY2I3NTczYTNiZWFhZGUyNTNiMGQuLjVhNzAwNDc4Y2E4NDNj
MzYzZDY2Yjk2ZDFiZDc3MzE4YjA3NjhkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMxLDEwICszMSwxNCBAQAogI2luY2x1ZGUgIldL
UmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgor
I2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVt
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODMsNiArODcs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNl
c01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFj
a0ZvcndhcmRMaXN0OwogCisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5
OworICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gK
ICAgICBib29sIGlzVXNpbmdFY29yZVg7CiAjZW5kaWYKQEAgLTk2LDYgKzEwMyw4IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkK
ICAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkK
KyAgICAgICAgLCBwb3B1cE1lbnVQcm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDAp
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNl
bmRpZgpAQCAtMTE0LDYgKzEyMywxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBl
d2tfYmFja19mb3J3YXJkX2xpc3RfZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIHZv
aWQqIGl0ZW07CisgICAgICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtKQor
ICAgICAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1
cF9NZW51X0l0ZW0qPihpdGVtKSk7CiAgICAgfQogfTsKIApAQCAtMTQ0OCwzICsxNDYxLDY3IEBA
IHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRD
aGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQs
IExUUik7CisKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBBU1NFUlQo
cG9wdXBNZW51KTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAg
ICBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKGV3a1ZpZXcpOworICAgIHByaXYtPnBvcHVwTWVu
dVByb3h5ID0gcG9wdXBNZW51OworCisgICAgRWluYV9MaXN0KiBwb3B1cEl0ZW1zID0gMDsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gZXdrX3Bv
cHVwX21lbnVfaXRlbV9uZXcoaXRlbXNbaV0ubV90eXBlLCBpdGVtc1tpXS5tX3RleHQudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRl
bXMsIGl0ZW0pOworICAgIH0KKyAgICBwcml2LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7
CisKKyAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwg
c3RhdGljX2Nhc3Q8RXdrX1RleHRfRGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxl
RmFjdG9yLCBwb3B1cEl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKworRWluYV9Cb29sIGV3a192
aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CisKKyAg
ICBpZiAoIXByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IDA7CisKKyAgICBpZiAoc21hcnREYXRhLT5hcGktPnBv
cHVwX21lbnVfaGlkZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlkZShz
bWFydERhdGEpOworCisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJFRShwcml2LT5w
b3B1cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0
YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZhbHNlKTsKKwor
ICAgIGlmIChzZWxlY3RlZEluZGV4ID49IGVpbmFfbGlzdF9jb3VudChwcml2LT5wb3B1cE1lbnVJ
dGVtcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5
LT52YWx1ZUNoYW5nZWQoc2VsZWN0ZWRJbmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGFmYTQ1ODQ2
ZjUxYzhmMGFkMzU5NmZhZjU3NTcyOGUyNTY0NDEwYjkuLmI2YTFlNDkzMTUyOGQ2OTYwZDEwYzQx
ODZlYWVjNzM4MTJmNWU2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaApAQCAtODMsNiArODMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8v
LyBFbnVtIHZhbHVlcyBjb250YWluaW5nIHRleHQgZGlyZWN0aW9uYWxpdHkgdmFsdWVzLgordHlw
ZWRlZiBlbnVtIHsKKyAgICBFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBF
V0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVAorfSBFd2tfVGV4dF9EaXJlY3Rpb247CisK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xh
c3M7CiAKQEAgLTkxLDYgKzk3LDkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAg
ICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJl
IGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29s
ICgqcG9wdXBfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5n
bGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9z
Y2FsZV9mYWN0b3IsIEVpbmFfTGlzdCAqaXRlbXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAg
RWluYV9Cb29sICgqcG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisK
ICAgICAvLyBldmVudCBoYW5kbGluZzoKICAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxl
ZAogICAgIC8vICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlm
IGRlc2lyZWQKQEAgLTEwOCw3ICsxMTcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNz
IHsKICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxk
CiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVm
aW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsxMjksNyBAQCBzdHJ1Y3Qg
X0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
CiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0
KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFy
dF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXpl
ciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkw
LDYgKzU5OSwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29s
IGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisv
KioKKyAqIFNlbGVjdHMgaW5kZXggb2YgY3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5k
ZXggb2YgaXRlbSB0byBzZWxlY3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVw
IG1lbnUgaXMgbm90IHNlbGVjdGVkIG9yIGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVu
c2lnbmVkIGludCBpbmRleCk7CisKKy8qKgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4K
KyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVy
ZSAocHJvYmFibHkKKyAqICAgICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8p
OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEz
Y2RmNmJkODdiYTg4YTZiMWFmMTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4
NzQ1ZThmYmZmNDkwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRE
aXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiAr
MzMsMTEgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7
Cit9CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1
Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1Vy
bF9SZXF1ZXN0OwpAQCAtODksNCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2Nv
bXBvc2l0aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBl
d2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1
cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+
JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3By
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAK
aW5kZXggMzliYzVhNGRiZWM2NWNjNGUyOWYwM2FhNDFiMzQyMTg5ZjA0ZjMxYy4uODAzM2UyNDk4
OGVlYWI1YzY2ZDUzMWZmNDg5YjZlMTMxOGM0OGU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAi
RVdLMlVuaXRUZXN0QmFzZS5oIgogCiAjaW5jbHVkZSAiRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
aCIKLSNpbmNsdWRlIDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTQyLDcgKzQx
LDkgQEAgc3RhdGljIHZvaWQgb25Mb2FkRmluaXNoZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2Jq
ZWN0KiB3ZWJWaWV3LCB2b2lkKiBldmVudEluZm8KIEVXSzJVbml0VGVzdEJhc2U6OkVXSzJVbml0
VGVzdEJhc2UoKQogICAgIDogbV9lY29yZUV2YXMoMCkKICAgICAsIG1fd2ViVmlldygwKQorICAg
ICwgbV9ld2tWaWV3Q2xhc3MoRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04o
IkJyb3dzZXJfVmlldyIpKQogeworICAgIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldCgmbV9ld2tW
aWV3Q2xhc3MpOwogfQogCiB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKQEAgLTYwLDcg
KzYxLDggQEAgdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCiAgICAgZWNvcmVfZXZhc19z
aG93KG1fZWNvcmVFdmFzKTsKICAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29y
ZUV2YXMpOwogCi0gICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfYWRkKGV2YXMpOworICAgIEV2YXNf
U21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJm1fZXdrVmlld0NsYXNzLnNjKTsK
KyAgICBtX3dlYlZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGV3a19jb250
ZXh0X2RlZmF1bHRfZ2V0KCkpOwogICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZpZXcsIGVu
dmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CiAKICAgICBldmFzX29iamVjdF9yZXNpemUobV93
ZWJWaWV3LCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTc3LDEwICs3OSwxNSBAQCB2b2lkIEVXSzJVbml0
VGVzdEJhc2U6OlRlYXJEb3duKCkKIAogdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpsb2FkVXJsU3lu
Yyhjb25zdCBjaGFyKiB1cmwpCiB7CisgICAgZXdrX3ZpZXdfdXJpX3NldChtX3dlYlZpZXcsIHVy
bCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0
QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKK3sKICAgICBib29sIGxvYWRGaW5pc2hlZCA9
IGZhbHNlOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fd2ViVmlldywg
ImxvYWQsZmluaXNoZWQiLCBvbkxvYWRGaW5pc2hlZCwgJmxvYWRGaW5pc2hlZCk7Ci0gICAgZXdr
X3ZpZXdfdXJpX3NldChtX3dlYlZpZXcsIHVybCk7CiAKICAgICB3aGlsZSAoIWxvYWRGaW5pc2hl
ZCkKICAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKaW5kZXggMjlkNTViZWU0OWNhZmQ5MGE1ZWMyODU2
ZGM1YmNhN2NkYTk3MmJlNS4uZmE2YWJkMTYwNDhjYWE4MzA5MGI1OTVhYjg5NWU5ZjcwYzExNjgy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKQEAgLTIw
LDYgKzIwLDcgQEAKICNpZm5kZWYgRVdLMlVuaXRUZXN0QmFzZV9oCiAjZGVmaW5lIEVXSzJVbml0
VGVzdEJhc2VfaAogCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRlIDxFY29yZV9FdmFz
Lmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0yOSw2
ICszMCw3IEBAIG5hbWVzcGFjZSBFV0syVW5pdFRlc3QgewogY2xhc3MgRVdLMlVuaXRUZXN0QmFz
ZSA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiB3
ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mq
IGV3a1ZpZXdDbGFzcygpIHsgcmV0dXJuICZtX2V3a1ZpZXdDbGFzczsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgRVdLMlVuaXRUZXN0QmFzZSgpOwpAQCAtMzcsMTIgKzM5LDE0IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKTsKIAogICAgIHZvaWQgbG9hZFVybFN5bmMoY29u
c3QgY2hhciogdXJsKTsKKyAgICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIHZv
aWQgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oY29uc3QgY2hhciogZXhwZWN0ZWRUaXRsZSk7CiAg
ICAgdm9pZCBtb3VzZUNsaWNrKGludCB4LCBpbnQgeSk7CiAKIHByaXZhdGU6CiAgICAgRXZhc19P
YmplY3QqIG1fd2ViVmlldzsKICAgICBFY29yZV9FdmFzKiBtX2Vjb3JlRXZhczsKKyAgICBFd2tf
Vmlld19TbWFydF9DbGFzcyBtX2V3a1ZpZXdDbGFzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEVX
SzJVbml0VGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCmluZGV4IDVlZGIwNDM3OWE1ZmQ4OTE0MTA2NGY2
MjI4YzE0NDk4YTYwMWMxZjEuLmJiZmIwMjEyNmRlYjJjNDdhZTEzNThmNWE1MjFkYmM3ZTQ2OGQ4
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl92aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTE4OCwzICsxODgsMzAgQEAgVEVTVF9GKEVXSzJV
bml0VGVzdEJhc2UsIGV3a192aWV3X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0KQogICAgIEFTU0VS
VF9UUlVFKGhhbmRsZWQpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJW
aWV3KCksICJmb3JtLHN1Ym1pc3Npb24scmVxdWVzdCIsIG9uRm9ybUFib3V0VG9CZVN1Ym1pdHRl
ZCk7CiB9CisKK3N0YXRpYyBib29sIHBvcHVwX21lbnVfc2hvdyhFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEsIEVpbmFfUmVjdGFuZ2xlLCBFd2tfVGV4dF9EaXJlY3Rpb24sIGRvdWJsZSwg
RWluYV9MaXN0KiwgaW50IHNlbGVjdGVkSW5kZXgpCit7CisgICAgRVhQRUNUX0VRKHNlbGVjdGVk
SW5kZXgsIDIpOworICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KHNt
YXJ0RGF0YS0+c2VsZiwgMCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCkKK3sKKyAgICBjb25zdCBj
aGFyKiBzZWxlY3RIVE1MID0KKyAgICAgICAgIjwhZG9jdHlwZSBodG1sPjxib2R5PjxzZWxlY3Qg
b25jaGFuZ2U9XCJkb2N1bWVudC50aXRsZT10aGlzLnZhbHVlO1wiPiIKKyAgICAgICAgIjxvcHRp
b24+Zmlyc3Q8L29wdGlvbj48b3B0aW9uPnNlY29uZDwvb3B0aW9uPjxvcHRpb24gc2VsZWN0ZWQ+
dGhpcmQ8L29wdGlvbj4iCisgICAgICAgICI8L3NlbGVjdD48L2JvZHk+IjsKKworICAgIGV3a1Zp
ZXdDbGFzcygpLT5wb3B1cF9tZW51X3Nob3cgPSBwb3B1cF9tZW51X3Nob3c7CisKKyAgICBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgc2VsZWN0SFRNTCwgImZpbGU6Ly8vIiwg
MCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgbW91c2VDbGljaygzMCwgMjAp
OworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJmaXJzdCIpOworICAgIEFTU0VSVF9TVFJF
UShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgImZpcnN0Iik7CisKKyAgICBFWFBFQ1Rf
VFJVRShld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKHdlYlZpZXcoKSkpOworICAgIEVYUEVDVF9G
QUxTRShld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCh3ZWJWaWV3KCksIDApKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWYwYjM3ZDY3ZGU1NjFlNjQ5ZDM5NmUwYzNmYjM0ZWQyOTBmODFkMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBN
ZW51UHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKKworI2luY2x1ZGUg
Ik5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKyNpbmNs
dWRlICJld2tfdmlldy5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5
RWZsKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGll
bnQpCisgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCisgICAgLCBtX3dlYlZpZXcod2Vi
VmlldykKK3sKK30KKworV2ViUG9wdXBNZW51UHJveHlFZmw6On5XZWJQb3B1cE1lbnVQcm94eUVm
bCgpCit7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OnNob3dQb3B1cE1lbnUoY29u
c3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFn
ZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBs
YXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBld2tf
dmlld19wb3B1cF9tZW51X3JlcXVlc3QobV93ZWJWaWV3LCB0aGlzLCByZWN0LCB0ZXh0RGlyZWN0
aW9uLCBwYWdlU2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBX
ZWJQb3B1cE1lbnVQcm94eUVmbDo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgZXdrX3ZpZXdfcG9w
dXBfbWVudV9jbG9zZShtX3dlYlZpZXcpOworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpCit7CisgICAgbV9jbGllbnQtPnZh
bHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBuZXdTZWxlY3RlZEluZGV4KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBvcHVwTWVudVByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZiZmM0OWQ5MGYzYmQxNjUxNjRm
OWU4NDhkMTA0NGY3MDRjZTQxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCisjZGVmaW5lIFdlYlBvcHVw
TWVudVByb3h5RWZsX2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK3R5cGVk
ZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgSW50UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2VQcm94eTsKKworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViUG9wdXBN
ZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVBy
b3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpD
bGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9w
dXBNZW51UHJveHlFZmwod2ViVmlldywgY2xpZW50KSk7CisgICAgfQorICAgIH5XZWJQb3B1cE1l
bnVQcm94eUVmbCgpOworCisgICAgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBj
b25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CisKKyAg
ICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCk7CisKK3ByaXZhdGU6Cisg
ICAgV2ViUG9wdXBNZW51UHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJQb3B1cE1lbnVQcm94eTo6
Q2xpZW50Kik7CisKKyAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZjExMWUzNWQ4MWI2NTI3ZjFkMGFkMDYwZDM3MjNhNmIxMGZiM2ViYi4uYzg4OGUwMGVhMWVjM2Qw
ZmUzNjJlNzBiZWUyNmQwNzE1ZDdkNmE1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA4
LTI2ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZM
XVtXSzJdIEltcGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBVbnNraXAgZmFzdC9mb3Jtcy9zZWxlY3QvbWVu
dWxpc3QtcG9wdXAtY3Jhc2guaHRtbAorCiAyMDEyLTA4LTI2ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CiAKICAgICAgICAgRmluYWxseSBpbmxpbmluZyBzaG91bGQgY29ycmVjdGx5
IHRyYWNrIHRoZSBjYXRjaCBjb250ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWFlMTQxNjhlZDljNGJkZGNkZWFjYzgyYTk1NGQ4ZWQw
NzlhNTYxMS4uOTg0MmIyOGEzYTZlNDdiYTUwMGNkZGNmMTk0NDFkOTBhYWU0NDQzYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzgsNyAr
MzgsNiBAQCBCVUdXS0VGTCA6IGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdXNwZW5kLWFj
dGl2ZS1kb20tb2JqZWN0cy5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogaW5zcGVjdG9yL2RlYnVn
Z2VyL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0Lmh0bWwgPSBDUkFTSAogQlVHV0tFRkwg
OiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItZXZhbC1vbi1jYWxsLWZyYW1lLmh0bWwgPSBD
UkFTSAogQlVHV0tFRkwgOiBmYXN0L2xvYWRlci9kb2N1bWVudC13aXRoLWZyYWdtZW50LXVybC0x
Lmh0bWwgPSBDUkFTSAotQlVHV0tFRkwgOiBmYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlzdC1wb3B1
cC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVs
ZHNldC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9ldmVudHMva2V5ZXZlbnQt
aWZyYW1lLXJlbW92ZWQtY3Jhc2guaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGZhc3Qvb3ZlcmZs
b3cvbG90cy1vZi1zaWJsaW5nLWlubGluZS1ib3hlcy5odG1sID0gQ1JBU0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160647</attachid>
            <date>2012-08-26 23:03:01 -0700</date>
            <delta_ts>2012-08-28 03:20:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120827150253.patch</filename>
            <type>text/plain</type>
            <size>34868</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYzZDI4N2YzMzA0ZTJh
YzllZTQxNzlhMzU5Mzk5YzQ2MDVmNmJhMC4uMjk4YjljZWJjNTY1OGEwZGE0MWRkOGUxMzgwZTkz
OTMwNzdhNDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTI2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHBvcHVw
IG1lbnUgcHJveHkgYW5kIGludGVyZmFjZSBmb3IgRWZsLgorCisgICAgICAgIEFwcGxpY2F0aW9u
cyBzaG91bGQgaW1wbGVtZW50IHBvcHVwIG1lbnUgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFy
dCBjbGFzcyBmdW5jdGlvbiB0byBzdXBwb3J0IHNlbGVjdCB0YWcuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJ
bmNsdWRlZCBld2tfcG9wdXBfbWVudV9pdGVtLmgKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW0p
OgorICAgICAgICAoX0V3a19Qb3B1cF9NZW51X0l0ZW06Ol9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjp+X0V3a19Qb3B1cF9NZW51X0l0ZW0pOgor
ICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV9mcmVlKToKKyAgICAgICAgKGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQpOiBB
ZGRlZCBBUEkgdG8gcmV0cmlldmUgdHlwZSBvZiBpdGVtLgorICAgICAgICAoZXdrX3BvcHVwX21l
bnVfaXRlbV90ZXh0X2dldCk6IEFkZGVkIEFQSSB0byByZXRyaWV2ZSB0ZXh0IG9mIGl0ZW0uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGE6On5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3Bv
cHVwX21lbnVfcmVxdWVzdCk6IEFkZGVkIHRvIGNhbGwgcG9wdXBfbWVudV9zaG93LCBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOiBBZGRl
ZCBBUEkgdG8gY2FsbCBwb3B1cF9tZW51X2hpZGUsIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorICAg
ICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOiBBZGRlZCBBUEkgdG8gY2hhbmdlIHNl
bGVjdGVkIGluZGV4LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6Cisg
ICAgICAgIEFkZGVkIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uIGZvciBhcHBsaWNhdGlvbnMgdG8gb3Zl
cnJpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OkVX
SzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNl
OjpTZXRVcCk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OmxvYWRV
cmxTeW5jKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgRXh0cmFjdGVkIGZyb20gbG9hZFVybFN5bmMgZm9y
IHRlc3RzIHVzaW5nIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQgdG8KKyAgICAgICAgc2hhcmUg
b25Mb2FkRmluaXNoZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJV
bml0VGVzdEJhc2U6OmV3a1ZpZXdDbGFzcyk6CisgICAgICAgIEFkZGVkIGV3a1ZpZXdDbGFzcyB0
byB0ZXN0IHNtYXJ0IG1ldGhvZHMgc3VjaCBhcyBwb3B1cF9tZW51X3Nob3cuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAocG9w
dXBfbWVudV9zaG93KToKKyAgICAgICAgKFRFU1RfRik6IEFkZGVkIGEgdGVzdCBjYXNlIGZvciBl
d2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCBhbmQgcmVsYXRlZCBjb2Rlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBN
ZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldl
YlBvcHVwTWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlF
Zmw6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVm
bDo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eUVmbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTI1ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNh
aXJvIEJ1aWxkIEJyb2tlbiBkdWUgdG8gbWlzc2luZyBleHBvcnQgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEy
ZDZjOGVhNi4uM2EwNTA1YzZhMTEzMThkMjg5MDQzMzllMjlkMjQ4N2ZiODRmYTdmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTU1LDYgKzU1LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03NSw2
ICs3Niw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYkNv
b2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCkBAIC0xMjYsNiArMTI4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCkBAIC0yMDYsNiArMjA5LDcgQEAgU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKaW5kZXggZDk4MDIzZGU2ZTBlZmE2ZGUwN2ZjOWZiOGMyMTVkMzljYzQ4OTg3Yy4u
ZjFjMDkwZWRiYzQyNjg5MmFjNDhiZTk4ZjhjYmM5NjA4NjRhMzE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNs
dWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNsdWRlICJld2tfcG9w
dXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCA3MjZjYWFhZTFhMWVmYTk2MzhkYjc3NDc2NzZiMDFhMzFhMjFjNmI2Li5iYWNi
ZjMwMDA0M2YwMGZhZmZmMzk3YjE4NzJjMzlkMzI2NWFkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTIwNCwx
MCArMjA1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW4KIH0KICNlbmRpZgogCi1QYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51
UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NTUxNzA3MTZmOGIz
ZTlmNWExMmFjODg2YWMxZGYwODEyZjY3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcApAQCAtMCwwICsx
LDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19w
b3B1cF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogXHN0cnVjdCAgX0V3
a19Qb3B1cF9NZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBwb3B1cCBtZW51IGRh
dGEuCisgKi8KK3N0cnVjdCBfRXdrX1BvcHVwX01lbnVfSXRlbSB7CisgICAgRXdrX1BvcHVwX01l
bnVfSXRlbV9UeXBlIHR5cGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHRleHQ7CisKKyAgICBf
RXdrX1BvcHVwX01lbnVfSXRlbShFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgX3R5cGUsIGNvbnN0
IGNoYXIqIF90ZXh0KQorICAgICAgICA6IHR5cGUoX3R5cGUpCisgICAgICAgICwgdGV4dChfdGV4
dCkKKyAgICB7IH0KKworICAgIH5fRXdrX1BvcHVwX01lbnVfSXRlbSgpCisgICAgeworICAgIH0K
K307CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BPUFVQX01FTlVfU0VQQVJB
VE9SLCBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19QT1BVUF9NRU5VX0lURU0sIFdlYlBvcHVwSXRlbTo6SXRlbSk7CisKKy8qKgorICog
QGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLworRXdr
X1BvcHVwX01lbnVfSXRlbSogZXdrX3BvcHVwX21lbnVfaXRlbV9uZXcoV2ViUG9wdXBJdGVtOjpU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRleHQpCit7CisgICAgcmV0dXJuIG5ldyBFd2tfUG9wdXBf
TWVudV9JdGVtKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZT4odHlwZSksIHRl
eHQpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogRnJlZXMgYSBFd2tfUG9wdXBfTWVudV9J
dGVtLgorICovCit2b2lkIGV3a19wb3B1cF9tZW51X2l0ZW1fZnJlZShFd2tfUG9wdXBfTWVudV9J
dGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOworICAg
IGRlbGV0ZSBpdGVtOworfQorCitFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGUgZXdrX3BvcHVwX21l
bnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfUE9QVVBfTUVOVV9VTktO
T1dOKTsKKworICAgIHJldHVybiBpdGVtLT50eXBlOworfQorCitjb25zdCBjaGFyKiBld2tfcG9w
dXBfbWVudV9pdGVtX3RleHRfZ2V0KGNvbnN0IEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0ZW0pCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisgICAgcmV0
dXJuIGl0ZW0tPnRleHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFiNGQ3YjJiZDJlMjIx
ZDE4YWViNTdmYmRlNzc5YjU4NmZmYWE2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfcG9wdXBfbWVudV9pdGVtLmgK
KyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfcG9wdXBfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVf
aXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIEVudW0gdmFsdWVzIGNvbnRhaW5pbmcgdHlwZSBvZiBwb3B1
cCBtZW51IGl0ZW0uICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19QT1BVUF9NRU5VX1NFUEFS
QVRPUiwKKyAgICBFV0tfUE9QVVBfTUVOVV9JVEVNLAorICAgIEVXS19QT1BVUF9NRU5VX1VOS05P
V04gPSAtMQorfSBFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU7CisKKy8qKiBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX1BvcHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Q
b3B1cF9NZW51X0l0ZW0gRXdrX1BvcHVwX01lbnVfSXRlbTsKKworLyoqCisgKiBSZXR1cm5zIHR5
cGUgb2YgdGhlIHBvcHVwIG1lbnUgaXRlbS4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgcG9wdXAg
bWVudSBpdGVtIGluc3RhbmNlCisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgQGEgaXRl
bSBvciBAYyBFV0tfUE9QVVBfTUVOVV9VTktOT1dOIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VB
UEkgRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlwZV9nZXQo
Y29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSAqaXRlbSk7CisKKy8qKgorICogUmV0dXJucyB0ZXh0
IG9mIHRoZSBwb3B1cCBtZW51IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1l
bnUgaXRlbSBpbnN0YW5jZQorICoKKyAqIEByZXR1cm4gdGhlIHRleHQgb2YgdGhlIEBhIGl0ZW0g
b3IgQGMgTlVMTCBpbiBjYXNlIG9mIGVycm9yLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3Bv
cHVwX21lbnVfaXRlbV90ZXh0X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtICppdGVtKTsK
KyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3BvcHVw
X21lbnVfaXRlbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZmY5
ZGJkYzA1MTYzZDJiZDU5OWYyYmQ1NTFlM2QxN2QwZWE5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcG9wdXBfbWVu
dV9pdGVtX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVfaAor
CisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKK0V3a19Qb3B1cF9NZW51X0l0ZW0qIGV3a19w
b3B1cF9tZW51X2l0ZW1fbmV3KFdlYktpdDo6V2ViUG9wdXBJdGVtOjpUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIHRleHQpOwordm9pZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01l
bnVfSXRlbSogaXRlbSk7CisKKyNlbmRpZiAvLyBld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IGNlN2Y3YjQ1NDk0NjNjMTBmYmFjY2I3NTczYTNiZWFhZGUyNTNiMGQuLjVhNzAwNDc4Y2E4NDNj
MzYzZDY2Yjk2ZDFiZDc3MzE4YjA3NjhkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMxLDEwICszMSwxNCBAQAogI2luY2x1ZGUgIldL
UmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgor
I2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVt
LmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODMsNiArODcs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNl
c01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFj
a0ZvcndhcmRMaXN0OwogCisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5
OworICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gK
ICAgICBib29sIGlzVXNpbmdFY29yZVg7CiAjZW5kaWYKQEAgLTk2LDYgKzEwMyw4IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkK
ICAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkK
KyAgICAgICAgLCBwb3B1cE1lbnVQcm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDAp
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNl
bmRpZgpAQCAtMTE0LDYgKzEyMywxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBl
d2tfYmFja19mb3J3YXJkX2xpc3RfZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIHZv
aWQqIGl0ZW07CisgICAgICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtKQor
ICAgICAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1
cF9NZW51X0l0ZW0qPihpdGVtKSk7CiAgICAgfQogfTsKIApAQCAtMTQ0OCwzICsxNDYxLDY3IEBA
IHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRD
aGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQs
IExUUik7CisKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBBU1NFUlQo
cG9wdXBNZW51KTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAg
ICBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKGV3a1ZpZXcpOworICAgIHByaXYtPnBvcHVwTWVu
dVByb3h5ID0gcG9wdXBNZW51OworCisgICAgRWluYV9MaXN0KiBwb3B1cEl0ZW1zID0gMDsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gZXdrX3Bv
cHVwX21lbnVfaXRlbV9uZXcoaXRlbXNbaV0ubV90eXBlLCBpdGVtc1tpXS5tX3RleHQudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRl
bXMsIGl0ZW0pOworICAgIH0KKyAgICBwcml2LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7
CisKKyAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwg
c3RhdGljX2Nhc3Q8RXdrX1RleHRfRGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxl
RmFjdG9yLCBwb3B1cEl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKworRWluYV9Cb29sIGV3a192
aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CisKKyAg
ICBpZiAoIXByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IDA7CisKKyAgICBpZiAoc21hcnREYXRhLT5hcGktPnBv
cHVwX21lbnVfaGlkZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlkZShz
bWFydERhdGEpOworCisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJFRShwcml2LT5w
b3B1cE1lbnVJdGVtcywgaXRlbSkKKyAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0
YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZhbHNlKTsKKwor
ICAgIGlmIChzZWxlY3RlZEluZGV4ID49IGVpbmFfbGlzdF9jb3VudChwcml2LT5wb3B1cE1lbnVJ
dGVtcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5
LT52YWx1ZUNoYW5nZWQoc2VsZWN0ZWRJbmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGFmYTQ1ODQ2
ZjUxYzhmMGFkMzU5NmZhZjU3NTcyOGUyNTY0NDEwYjkuLmI2YTFlNDkzMTUyOGQ2OTYwZDEwYzQx
ODZlYWVjNzM4MTJmNWU2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaApAQCAtODMsNiArODMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8v
LyBFbnVtIHZhbHVlcyBjb250YWluaW5nIHRleHQgZGlyZWN0aW9uYWxpdHkgdmFsdWVzLgordHlw
ZWRlZiBlbnVtIHsKKyAgICBFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBF
V0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVAorfSBFd2tfVGV4dF9EaXJlY3Rpb247CisK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xh
c3M7CiAKQEAgLTkxLDYgKzk3LDkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAg
ICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJl
IGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29s
ICgqcG9wdXBfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5n
bGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9z
Y2FsZV9mYWN0b3IsIEVpbmFfTGlzdCAqaXRlbXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAg
RWluYV9Cb29sICgqcG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisK
ICAgICAvLyBldmVudCBoYW5kbGluZzoKICAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxl
ZAogICAgIC8vICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlm
IGRlc2lyZWQKQEAgLTEwOCw3ICsxMTcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNz
IHsKICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxk
CiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVm
aW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsxMjksNyBAQCBzdHJ1Y3Qg
X0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
CiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0
KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFy
dF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXpl
ciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkw
LDYgKzU5OSwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29s
IGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisv
KioKKyAqIFNlbGVjdHMgaW5kZXggb2YgY3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5k
ZXggb2YgaXRlbSB0byBzZWxlY3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVw
IG1lbnUgaXMgbm90IHNlbGVjdGVkIG9yIGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVu
c2lnbmVkIGludCBpbmRleCk7CisKKy8qKgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4K
KyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVy
ZSAocHJvYmFibHkKKyAqICAgICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8p
OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEz
Y2RmNmJkODdiYTg4YTZiMWFmMTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4
NzQ1ZThmYmZmNDkwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRE
aXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiAr
MzMsMTEgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7
Cit9CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1
Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1Vy
bF9SZXF1ZXN0OwpAQCAtODksNCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2Nv
bXBvc2l0aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBl
d2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1
cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+
JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3By
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAK
aW5kZXggMzliYzVhNGRiZWM2NWNjNGUyOWYwM2FhNDFiMzQyMTg5ZjA0ZjMxYy4uODAzM2UyNDk4
OGVlYWI1YzY2ZDUzMWZmNDg5YjZlMTMxOGM0OGU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAi
RVdLMlVuaXRUZXN0QmFzZS5oIgogCiAjaW5jbHVkZSAiRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
aCIKLSNpbmNsdWRlIDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTQyLDcgKzQx
LDkgQEAgc3RhdGljIHZvaWQgb25Mb2FkRmluaXNoZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2Jq
ZWN0KiB3ZWJWaWV3LCB2b2lkKiBldmVudEluZm8KIEVXSzJVbml0VGVzdEJhc2U6OkVXSzJVbml0
VGVzdEJhc2UoKQogICAgIDogbV9lY29yZUV2YXMoMCkKICAgICAsIG1fd2ViVmlldygwKQorICAg
ICwgbV9ld2tWaWV3Q2xhc3MoRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04o
IkJyb3dzZXJfVmlldyIpKQogeworICAgIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldCgmbV9ld2tW
aWV3Q2xhc3MpOwogfQogCiB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKQEAgLTYwLDcg
KzYxLDggQEAgdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCiAgICAgZWNvcmVfZXZhc19z
aG93KG1fZWNvcmVFdmFzKTsKICAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29y
ZUV2YXMpOwogCi0gICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfYWRkKGV2YXMpOworICAgIEV2YXNf
U21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJm1fZXdrVmlld0NsYXNzLnNjKTsK
KyAgICBtX3dlYlZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGV3a19jb250
ZXh0X2RlZmF1bHRfZ2V0KCkpOwogICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZpZXcsIGVu
dmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CiAKICAgICBldmFzX29iamVjdF9yZXNpemUobV93
ZWJWaWV3LCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTc3LDEwICs3OSwxNSBAQCB2b2lkIEVXSzJVbml0
VGVzdEJhc2U6OlRlYXJEb3duKCkKIAogdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpsb2FkVXJsU3lu
Yyhjb25zdCBjaGFyKiB1cmwpCiB7CisgICAgZXdrX3ZpZXdfdXJpX3NldChtX3dlYlZpZXcsIHVy
bCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0
QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKK3sKICAgICBib29sIGxvYWRGaW5pc2hlZCA9
IGZhbHNlOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fd2ViVmlldywg
ImxvYWQsZmluaXNoZWQiLCBvbkxvYWRGaW5pc2hlZCwgJmxvYWRGaW5pc2hlZCk7Ci0gICAgZXdr
X3ZpZXdfdXJpX3NldChtX3dlYlZpZXcsIHVybCk7CiAKICAgICB3aGlsZSAoIWxvYWRGaW5pc2hl
ZCkKICAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKaW5kZXggMjlkNTViZWU0OWNhZmQ5MGE1ZWMyODU2
ZGM1YmNhN2NkYTk3MmJlNS4uZmE2YWJkMTYwNDhjYWE4MzA5MGI1OTVhYjg5NWU5ZjcwYzExNjgy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKQEAgLTIw
LDYgKzIwLDcgQEAKICNpZm5kZWYgRVdLMlVuaXRUZXN0QmFzZV9oCiAjZGVmaW5lIEVXSzJVbml0
VGVzdEJhc2VfaAogCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRlIDxFY29yZV9FdmFz
Lmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0yOSw2
ICszMCw3IEBAIG5hbWVzcGFjZSBFV0syVW5pdFRlc3QgewogY2xhc3MgRVdLMlVuaXRUZXN0QmFz
ZSA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiB3
ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mq
IGV3a1ZpZXdDbGFzcygpIHsgcmV0dXJuICZtX2V3a1ZpZXdDbGFzczsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgRVdLMlVuaXRUZXN0QmFzZSgpOwpAQCAtMzcsMTIgKzM5LDE0IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKTsKIAogICAgIHZvaWQgbG9hZFVybFN5bmMoY29u
c3QgY2hhciogdXJsKTsKKyAgICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIHZv
aWQgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oY29uc3QgY2hhciogZXhwZWN0ZWRUaXRsZSk7CiAg
ICAgdm9pZCBtb3VzZUNsaWNrKGludCB4LCBpbnQgeSk7CiAKIHByaXZhdGU6CiAgICAgRXZhc19P
YmplY3QqIG1fd2ViVmlldzsKICAgICBFY29yZV9FdmFzKiBtX2Vjb3JlRXZhczsKKyAgICBFd2tf
Vmlld19TbWFydF9DbGFzcyBtX2V3a1ZpZXdDbGFzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEVX
SzJVbml0VGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCmluZGV4IDVlZGIwNDM3OWE1ZmQ4OTE0MTA2NGY2
MjI4YzE0NDk4YTYwMWMxZjEuLmVmYWZhYzBjYmFlY2E3N2U3ZGQ1OTM1MTVjNGE2OWU5ODczZTU5
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl92aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTE4OCwzICsxODgsMzAgQEAgVEVTVF9GKEVXSzJV
bml0VGVzdEJhc2UsIGV3a192aWV3X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0KQogICAgIEFTU0VS
VF9UUlVFKGhhbmRsZWQpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJW
aWV3KCksICJmb3JtLHN1Ym1pc3Npb24scmVxdWVzdCIsIG9uRm9ybUFib3V0VG9CZVN1Ym1pdHRl
ZCk7CiB9CisKK3N0YXRpYyBib29sIHNob3dQb3B1cE1lbnUoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhLCBFaW5hX1JlY3RhbmdsZSwgRXdrX1RleHRfRGlyZWN0aW9uLCBkb3VibGUsIEVp
bmFfTGlzdCosIGludCBzZWxlY3RlZEluZGV4KQoreworICAgIEVYUEVDVF9FUShzZWxlY3RlZElu
ZGV4LCAyKTsKKyAgICBFWFBFQ1RfVFJVRShld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdChzbWFy
dERhdGEtPnNlbGYsIDApKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitURVNUX0YoRVdLMlVu
aXRUZXN0QmFzZSwgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpCit7CisgICAgY29uc3QgY2hh
ciogc2VsZWN0SFRNTCA9CisgICAgICAgICI8IWRvY3R5cGUgaHRtbD48Ym9keT48c2VsZWN0IG9u
Y2hhbmdlPVwiZG9jdW1lbnQudGl0bGU9dGhpcy52YWx1ZTtcIj4iCisgICAgICAgICI8b3B0aW9u
PmZpcnN0PC9vcHRpb24+PG9wdGlvbj5zZWNvbmQ8L29wdGlvbj48b3B0aW9uIHNlbGVjdGVkPnRo
aXJkPC9vcHRpb24+IgorICAgICAgICAiPC9zZWxlY3Q+PC9ib2R5PiI7CisKKyAgICBld2tWaWV3
Q2xhc3MoKS0+cG9wdXBfbWVudV9zaG93ID0gc2hvd1BvcHVwTWVudTsKKworICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBzZWxlY3RIVE1MLCAiZmlsZTovLy8iLCAwKTsK
KyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBtb3VzZUNsaWNrKDMwLCAyMCk7Cisg
ICAgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oImZpcnN0Iik7CisgICAgQVNTRVJUX1NUUkVRKGV3
a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAiZmlyc3QiKTsKKworICAgIEVYUEVDVF9UUlVF
KGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2Uod2ViVmlldygpKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KHdlYlZpZXcoKSwgMCkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZjBiMzdkNjdkZTU2MWU2NDlkMzk2ZTBjM2ZiMzRlZDI5MGY4MWQzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQ
cm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVkZSAiTmF0
aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUg
ImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBNZW51UHJveHlFZmwo
RXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkK
KyAgICA6IFdlYlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3
KQoreworfQorCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6fldlYlBvcHVwTWVudVByb3h5RWZsKCkK
K3sKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1BvcHVwTWVudShjb25zdCBJ
bnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2Nh
bGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGV3a192aWV3
X3BvcHVwX21lbnVfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIHJlY3QsIHRleHREaXJlY3Rpb24s
IHBhZ2VTY2FsZUZhY3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFdlYlBv
cHVwTWVudVByb3h5RWZsOjpoaWRlUG9wdXBNZW51KCkKK3sKKyAgICBld2tfdmlld19wb3B1cF9t
ZW51X2Nsb3NlKG1fd2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OnZh
bHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2NsaWVudC0+dmFsdWVD
aGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG5ld1NlbGVjdGVkSW5kZXgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUG9wdXBNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UG9wdXBNZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmJmYzQ5ZDkwZjNiZDE2NTE2NGY5ZTg0
OGQxMDQ0ZjcwNGNlNDE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViUG9wdXBNZW51
UHJveHlFZmxfaAorCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKKwordHlwZWRlZiBz
dHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVBy
b3h5OworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQ
cm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlF
Zmw+IGNyZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVu
dCogY2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1l
bnVQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQpKTsKKyAgICB9CisgICAgfldlYlBvcHVwTWVudVBy
b3h5RWZsKCk7CisKKyAgICB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0
IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50
MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKKworICAgIHZv
aWQgdmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KTsKKworcHJpdmF0ZToKKyAgICBX
ZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09iamVjdCosIFdlYlBvcHVwTWVudVByb3h5OjpDbGll
bnQqKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMTEx
ZTM1ZDgxYjY1MjdmMWQwYWQwNjBkMzcyM2E2YjEwZmIzZWJiLi5jODg4ZTAwZWExZWMzZDBmZTM2
MmU3MGJlZTI2ZDA3MTVkN2Q2YTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDgtMjYg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dL
Ml0gSW1wbGVtZW50IFdlYlBvcHVwTWVudVByb3h5RWZsIHRvIHN1cHBvcnQgPHNlbGVjdD4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NjE2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9l
Zmwtd2syL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCBmYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlz
dC1wb3B1cC1jcmFzaC5odG1sCisKIDIwMTItMDgtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaW5hbGx5IGlubGluaW5nIHNob3VsZCBjb3JyZWN0bHkgdHJh
Y2sgdGhlIGNhdGNoIGNvbnRleHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBlYWUxNDE2OGVkOWM0YmRkY2RlYWNjODJhOTU0ZDhlZDA3OWE1
NjExLi45ODQyYjI4YTNhNmU0N2JhNTAwY2RkY2YxOTQ0MWQ5MGFhZTQ0NDNiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0zOCw3ICszOCw2
IEBAIEJVR1dLRUZMIDogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN1c3BlbmQtYWN0aXZl
LWRvbS1vYmplY3RzLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBpbnNwZWN0b3IvZGVidWdnZXIv
ZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3JpcHQuaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGlu
c3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1ldmFsLW9uLWNhbGwtZnJhbWUuaHRtbCA9IENSQVNI
CiBCVUdXS0VGTCA6IGZhc3QvbG9hZGVyL2RvY3VtZW50LXdpdGgtZnJhZ21lbnQtdXJsLTEuaHRt
bCA9IENSQVNICi1CVUdXS0VGTCA6IGZhc3QvZm9ybXMvc2VsZWN0L21lbnVsaXN0LXBvcHVwLWNy
YXNoLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0
LWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBmYXN0L2V2ZW50cy9rZXlldmVudC1pZnJh
bWUtcmVtb3ZlZC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9vdmVyZmxvdy9s
b3RzLW9mLXNpYmxpbmctaW5saW5lLWJveGVzLmh0bWwgPSBDUkFTSAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160945</attachid>
            <date>2012-08-28 03:20:34 -0700</date>
            <delta_ts>2012-08-28 04:31:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88616-20120828192024.patch</filename>
            <type>text/plain</type>
            <size>35436</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDNiZTQwNWQwMjlmZmNj
OTAyOTEyMDM5NTE0OTFjMjJiY2FlZmM3Yy4uOGFkYjA1YmZhOWIzMThmY2Q1N2QwNjM5YWNjNzk3
NmViZDQ2ODNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTI4ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBXZWJQb3B1cE1lbnVQcm94eUVmbCB0byBzdXBwb3J0IDxzZWxlY3Q+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KKworICAgICAgICBJbXBsZW1lbnRlZCBwb3B1cCBt
ZW51IHByb3h5IGFuZCBpbnRlcmZhY2UgZm9yIEVmbC4KKworICAgICAgICBBcHBsaWNhdGlvbnMg
c2hvdWxkIGltcGxlbWVudCBwb3B1cCBtZW51IGJ5IG92ZXJyaWRpbmcKKyAgICAgICAgc21hcnQg
Y2xhc3MgZnVuY3Rpb24gdG8gc3VwcG9ydCBzZWxlY3QgdGFnLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDogSW5j
bHVkZWQgZXdrX3BvcHVwX21lbnVfaXRlbS5oCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
UGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1
cF9tZW51X2l0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtKToK
KyAgICAgICAgKF9Fd2tfUG9wdXBfTWVudV9JdGVtOjpfRXdrX1BvcHVwX01lbnVfSXRlbSk6Cisg
ICAgICAgIChld2tfcG9wdXBfbWVudV9pdGVtX25ldyk6CisgICAgICAgIChld2tfcG9wdXBfbWVu
dV9pdGVtX2ZyZWUpOgorICAgICAgICAoZXdrX3BvcHVwX21lbnVfaXRlbV90eXBlX2dldCk6IEFk
ZGVkIEFQSSB0byByZXRyaWV2ZSB0eXBlIG9mIGl0ZW0uCisgICAgICAgIChld2tfcG9wdXBfbWVu
dV9pdGVtX3RleHRfZ2V0KTogQWRkZWQgQVBJIHRvIHJldHJpZXZlIHRleHQgb2YgaXRlbS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRl
X0RhdGE6Ol9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZh
dGVfRGF0YTo6fl9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfcG9w
dXBfbWVudV9yZXF1ZXN0KTogQWRkZWQgdG8gY2FsbCBwb3B1cF9tZW51X3Nob3csIHNtYXJ0IGNs
YXNzIGZ1bmN0aW9uLgorICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZSk6IEFkZGVk
IEFQSSB0byBjYWxsIHBvcHVwX21lbnVfaGlkZSwgc21hcnQgY2xhc3MgZnVuY3Rpb24uCisgICAg
ICAgIChld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCk6IEFkZGVkIEFQSSB0byBjaGFuZ2Ugc2Vs
ZWN0ZWQgaW5kZXguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAg
ICAgICAgQWRkZWQgc21hcnQgY2xhc3MgZnVuY3Rpb24gZm9yIGFwcGxpY2F0aW9ucyB0byBvdmVy
cmlkZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RCYXNlLmNwcDoKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6RVdL
MlVuaXRUZXN0QmFzZSk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6
OlNldFVwKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6bG9hZFVy
bFN5bmMpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjp3YWl0VW50
aWxMb2FkRmluaXNoZWQpOgorICAgICAgICBFeHRyYWN0ZWQgZnJvbSBsb2FkVXJsU3luYyBmb3Ig
dGVzdHMgdXNpbmcgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCB0bworICAgICAgICBzaGFyZSBv
bkxvYWRGaW5pc2hlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaDoKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVu
aXRUZXN0QmFzZTo6ZXdrVmlld0NsYXNzKToKKyAgICAgICAgQWRkZWQgZXdrVmlld0NsYXNzIHRv
IHRlc3Qgc21hcnQgbWV0aG9kcyBzdWNoIGFzIHBvcHVwX21lbnVfc2hvdy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAgIChwb3B1
cF9tZW51X3Nob3cpOgorICAgICAgICAoVEVTVF9GKTogQWRkZWQgYSB0ZXN0IGNhc2UgZm9yIGV3
a192aWV3X3BvcHVwX21lbnVfc2VsZWN0IGFuZCByZWxhdGVkIGNvZGVzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1cE1l
bnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93
UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQ
b3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0yNyAgS2FuZ2lsIEhh
biAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBGaXggUGFn
ZUNsaWVudEltcGwgbGF5ZXIgdmlvbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IGQ0YjA4ZjhiZTAwM2Y4NGVmMjFhMGE0NGM4MTI2NWJhMmQ2YzhlYTYuLjNhMDUwNWM2YTExMzE4
ZDI4OTA0MzM5ZTI5ZDI0ODdmYjg0ZmE3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC01NSw2ICs1NSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfbWFpbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lf
ZGVjaXNpb24uY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcApAQCAtNzUsNiArNzYsNyBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKICAg
ICBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dl
YlBvcHVwTWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJlZmVyZW5jZXNF
ZmwuY3BwCiAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNw
cApAQCAtMTI2LDYgKzEyOCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2VmbCIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvRG93bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mv
ZWZsIgpAQCAtMjA2LDYgKzIwOSw3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2
aWNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfbWFpbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCisgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVt
LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3JlcXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IGQ5ODAyM2Rl
NmUwZWZhNmRlMDdmYzlmYjhjMjE1ZDM5Y2M0ODk4N2MuLmYxYzA5MGVkYmM0MjY4OTJhYzQ4YmU5
OGY4Y2JjOTYwODY0YTMxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImV3a19pbnRlbnRfc2Vydmlj
ZS5oIgogI2luY2x1ZGUgImV3a19tYWluLmgiCiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fcG9s
aWN5X2RlY2lzaW9uLmgiCisjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1
ZGUgImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKICNp
bmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNjk5MzZhMDlhZTk3
ZDAwMjdiMzI0MzFiN2RjZDJhNjNiMmJjNTNjMi4uOWJjM2NkZTg2NjRhNTUxMDA5NGQxNmFiYjE0
YmFhYTVkMWQwZThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51UHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRl
ICJld2tfY29udGV4dF9wcml2YXRlLmgiCkBAIC0xOTUsMTAgKzE5Niw5IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50Jiwg
Ym9vbCB3YXNFdmVuCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitQYXNz
UmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51
UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3
V2lkZ2V0LCBwYWdlKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRl
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9p
dGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMzM0MTI2MmM0NmRlNjVjZjUxMjhhYTM2MTc0OTU5ODc2YzZi
NDg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCisKKyNp
bmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9p
dGVtX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfUG9wdXBfTWVudV9JdGVtCisgKiBA
YnJpZWYgICBDb250YWlucyB0aGUgcG9wdXAgbWVudSBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19Q
b3B1cF9NZW51X0l0ZW0geworICAgIEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZSB0eXBlOworICAg
IFdLRWluYVNoYXJlZFN0cmluZyB0ZXh0OworCisgICAgX0V3a19Qb3B1cF9NZW51X0l0ZW0oRXdr
X1BvcHVwX01lbnVfSXRlbV9UeXBlIF90eXBlLCBjb25zdCBjaGFyKiBfdGV4dCkKKyAgICAgICAg
OiB0eXBlKF90eXBlKQorICAgICAgICAsIHRleHQoX3RleHQpCisgICAgeyB9Cit9OworCitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QT1BVUF9NRU5VX1NFUEFSQVRPUiwgV2ViUG9w
dXBJdGVtOjpTZXBhcmF0b3IpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUE9Q
VVBfTUVOVV9JVEVNLCBXZWJQb3B1cEl0ZW06Okl0ZW0pOworCisvKioKKyAqIEBpbnRlcm5hbAor
ICogQ29uc3RydWN0cyBhIEV3a19Qb3B1cF9NZW51X0l0ZW0uCisgKi8KK0V3a19Qb3B1cF9NZW51
X0l0ZW0qIGV3a19wb3B1cF9tZW51X2l0ZW1fbmV3KFdlYlBvcHVwSXRlbTo6VHlwZSB0eXBlLCBj
b25zdCBjaGFyKiB0ZXh0KQoreworICAgIHJldHVybiBuZXcgRXdrX1BvcHVwX01lbnVfSXRlbShz
dGF0aWNfY2FzdDxFd2tfUG9wdXBfTWVudV9JdGVtX1R5cGU+KHR5cGUpLCB0ZXh0KTsKK30KKwor
LyoqCisgKiBAaW50ZXJuYWwKKyAqIEZyZWVzIGEgRXdrX1BvcHVwX01lbnVfSXRlbS4KKyAqLwor
dm9pZCBld2tfcG9wdXBfbWVudV9pdGVtX2ZyZWUoRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihpdGVtKTsKKyAgICBkZWxldGUgaXRl
bTsKK30KKworRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIGV3a19wb3B1cF9tZW51X2l0ZW1fdHlw
ZV9nZXQoY29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRVdLX1BPUFVQX01FTlVfVU5LTk9XTik7CisKKyAg
ICByZXR1cm4gaXRlbS0+dHlwZTsKK30KKworY29uc3QgY2hhciogZXdrX3BvcHVwX21lbnVfaXRl
bV90ZXh0X2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCAwKTsKKworICAgIHJldHVybiBpdGVtLT50
ZXh0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BvcHVwX21lbnVfaXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BvcHVwX21lbnVfaXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxYjRkN2IyYmQyZTIyMWQxOGFlYjU3ZmJk
ZTc3OWI1ODZmZmFhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3BvcHVwX21lbnVfaXRlbS5oCisgKiBAYnJpZWYg
ICBEZXNjcmliZXMgdGhlIEV3ayBQb3B1cCBNZW51IEl0ZW0gQVBJLgorICovCisKKyNpZm5kZWYg
ZXdrX3BvcHVwX21lbnVfaXRlbV9oCisjZGVmaW5lIGV3a19wb3B1cF9tZW51X2l0ZW1faAorCisj
aW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKKy8qKiBFbnVtIHZhbHVlcyBjb250YWluaW5nIHR5cGUgb2YgcG9wdXAgbWVudSBpdGVt
LiAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfUE9QVVBfTUVOVV9TRVBBUkFUT1IsCisgICAg
RVdLX1BPUFVQX01FTlVfSVRFTSwKKyAgICBFV0tfUE9QVVBfTUVOVV9VTktOT1dOID0gLTEKK30g
RXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlOworCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
X0V3a19Qb3B1cF9NZW51X0l0ZW0gKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfUG9wdXBfTWVudV9J
dGVtIEV3a19Qb3B1cF9NZW51X0l0ZW07CisKKy8qKgorICogUmV0dXJucyB0eXBlIG9mIHRoZSBw
b3B1cCBtZW51IGl0ZW0uCisgKgorICogQHBhcmFtIGl0ZW0gdGhlIHBvcHVwIG1lbnUgaXRlbSBp
bnN0YW5jZQorICoKKyAqIEByZXR1cm4gdGhlIHR5cGUgb2YgdGhlIEBhIGl0ZW0gb3IgQGMgRVdL
X1BPUFVQX01FTlVfVU5LTk9XTiBpbiBjYXNlIG9mIGVycm9yLgorICovCitFQVBJIEV3a19Qb3B1
cF9NZW51X0l0ZW1fVHlwZSBld2tfcG9wdXBfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Q
b3B1cF9NZW51X0l0ZW0gKml0ZW0pOworCisvKioKKyAqIFJldHVybnMgdGV4dCBvZiB0aGUgcG9w
dXAgbWVudSBpdGVtLgorICoKKyAqIEBwYXJhbSBpdGVtIHRoZSBwb3B1cCBtZW51IGl0ZW0gaW5z
dGFuY2UKKyAqCisgKiBAcmV0dXJuIHRoZSB0ZXh0IG9mIHRoZSBAYSBpdGVtIG9yIEBjIE5VTEwg
aW4gY2FzZSBvZiBlcnJvci4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQg
dG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAg
c2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0
cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICog
ICAgICAgICBzdHJkdXAoKQorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19wb3B1cF9tZW51X2l0
ZW1fdGV4dF9nZXQoY29uc3QgRXdrX1BvcHVwX01lbnVfSXRlbSAqaXRlbSk7CisgICAgCisjaWZk
ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a19wb3B1cF9tZW51X2l0ZW1f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVw
X21lbnVfaXRlbV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGZmOWRiZGMwNTE2M2Qy
YmQ1OTlmMmJkNTUxZTNkMTdkMGVhOWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgKQEAgLTAs
MCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2
YXRlX2gKKyNkZWZpbmUgZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlX2gKKworI2luY2x1ZGUg
IldlYlBvcHVwSXRlbS5oIgorCitFd2tfUG9wdXBfTWVudV9JdGVtKiBld2tfcG9wdXBfbWVudV9p
dGVtX25ldyhXZWJLaXQ6OldlYlBvcHVwSXRlbTo6VHlwZSB0eXBlLCBjb25zdCBjaGFyKiB0ZXh0
KTsKK3ZvaWQgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKEV3a19Qb3B1cF9NZW51X0l0ZW0qIGl0
ZW0pOworCisjZW5kaWYgLy8gZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCBiOGZiZjNhYjQ0
ZDg3YTBkN2JhYjA4YjBmZWU3YjNmYTk2OTM2MTBkLi45ODI1OGFmNmMwYTE2MzlmNjU2YzQ2MzA1
YzNjMTA4ZGEwMTliOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCkBAIC0zMiwxMCArMzIsMTQgQEAKICNpbmNsdWRlICJXS1N0cmluZy5oIgog
I2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCiAjaW5jbHVk
ZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfaW50
ZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCisjaW5jbHVk
ZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODUsNiArODksOSBAQCBzdHJ1Y3Qg
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgTG9hZGluZ1Jlc291cmNlc01hcCBsb2FkaW5n
UmVzb3VyY2VzTWFwOwogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFja0ZvcndhcmRMaXN0
OwogCisgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5OworICAgIEVpbmFf
TGlzdCogcG9wdXBNZW51SXRlbXM7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gKICAgICBib29sIGlz
VXNpbmdFY29yZVg7CiAjZW5kaWYKQEAgLTk4LDYgKzEwNSw4IEBAIHN0cnVjdCBfRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhIHsKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkKICAgICAgICAgOiBj
dXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkKKyAgICAgICAgLCBw
b3B1cE1lbnVQcm94eSgwKQorICAgICAgICAsIHBvcHVwTWVudUl0ZW1zKDApCiAjaWZkZWYgSEFW
RV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNlbmRpZgpAQCAtMTE2
LDYgKzEyNSwxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgICAgICAg
ICBldmFzX29iamVjdF9kZWwoY3Vyc29yT2JqZWN0KTsKIAogICAgICAgICBld2tfYmFja19mb3J3
YXJkX2xpc3RfZnJlZShiYWNrRm9yd2FyZExpc3QpOworCisgICAgICAgIHZvaWQqIGl0ZW07Cisg
ICAgICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1zLCBpdGVtKQorICAgICAgICAgICAg
ZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0q
PihpdGVtKSk7CiAgICAgfQogfTsKIApAQCAtMTQ1OSwzICsxNDcyLDY3IEBAIHZvaWQgZXdrX3Zp
ZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25z
dCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRDaGFuZ2VDb250ZW50
c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CisKK3Zv
aWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQ
b3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGly
ZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3Rv
cjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBBU1NFUlQocG9wdXBNZW51KTsK
KworICAgIGlmICghc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKHByaXYtPnBvcHVwTWVudVByb3h5KQorICAgICAgICBld2tfdmlld19w
b3B1cF9tZW51X2Nsb3NlKGV3a1ZpZXcpOworICAgIHByaXYtPnBvcHVwTWVudVByb3h5ID0gcG9w
dXBNZW51OworCisgICAgRWluYV9MaXN0KiBwb3B1cEl0ZW1zID0gMDsKKyAgICBzaXplX3Qgc2l6
ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gZXdrX3BvcHVwX21lbnVfaXRl
bV9uZXcoaXRlbXNbaV0ubV90eXBlLCBpdGVtc1tpXS5tX3RleHQudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRlbXMsIGl0ZW0pOwor
ICAgIH0KKyAgICBwcml2LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7CisKKyAgICBzbWFy
dERhdGEtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwgc3RhdGljX2Nhc3Q8
RXdrX1RleHRfRGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBwb3B1
cEl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21l
bnVfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CisKKyAgICBpZiAoIXByaXYt
PnBvcHVwTWVudVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwcml2LT5wb3B1
cE1lbnVQcm94eSA9IDA7CisKKyAgICBpZiAoc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlk
ZSkKKyAgICAgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlkZShzbWFydERhdGEpOwor
CisgICAgdm9pZCogaXRlbTsKKyAgICBFSU5BX0xJU1RfRlJFRShwcml2LT5wb3B1cE1lbnVJdGVt
cywgaXRlbSkKKyAgICAgICAgZXdrX3BvcHVwX21lbnVfaXRlbV9mcmVlKHN0YXRpY19jYXN0PEV3
a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWlu
YV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1
bnNpZ25lZCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwocHJpdi0+cG9wdXBNZW51UHJveHksIGZhbHNlKTsKKworICAgIGlmIChzZWxl
Y3RlZEluZGV4ID49IGVpbmFfbGlzdF9jb3VudChwcml2LT5wb3B1cE1lbnVJdGVtcykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHByaXYtPnBvcHVwTWVudVByb3h5LT52YWx1ZUNoYW5n
ZWQoc2VsZWN0ZWRJbmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGFmYTQ1ODQ2ZjUxYzhmMGFkMzU5
NmZhZjU3NTcyOGUyNTY0NDEwYjkuLmI2YTFlNDkzMTUyOGQ2OTYwZDEwYzQxODZlYWVjNzM4MTJm
NWU2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApA
QCAtODMsNiArODMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8vLyBFbnVtIHZhbHVl
cyBjb250YWluaW5nIHRleHQgZGlyZWN0aW9uYWxpdHkgdmFsdWVzLgordHlwZWRlZiBlbnVtIHsK
KyAgICBFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfVEVYVF9ESVJF
Q1RJT05fTEVGVF9UT19SSUdIVAorfSBFd2tfVGV4dF9EaXJlY3Rpb247CisKIHR5cGVkZWYgc3Ry
dWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBlZGVmIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiAKQEAgLTkx
LDYgKzk3LDkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZhc19TbWFy
dF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICov
CiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29sICgqcG9wdXBfbWVu
dV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdr
X1RleHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3Is
IEVpbmFfTGlzdCAqaXRlbXMsIGludCBzZWxlY3RlZF9pbmRleCk7CisgICAgRWluYV9Cb29sICgq
cG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICAvLyBldmVu
dCBoYW5kbGluZzoKICAgICAvLyAgLSByZXR1cm5zIHRydWUgaWYgaGFuZGxlZAogICAgIC8vICAt
IGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQKQEAg
LTEwOCw3ICsxMTcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIFRoZSB2
ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUg
QGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVX
X1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZF
UlNJT04gMlVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0
X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsxMjksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAg
KiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZp
bmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xh
c3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0
KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEg
d2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkwLDYgKzU5OSwyNyBA
QCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3Rl
eHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisvKioKKyAqIFNlbGVj
dHMgaW5kZXggb2YgY3VycmVudCBwb3B1cCBtZW51LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IGNvbnRhaW5zIHBvcHVwIG1lbnUuCisgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgaXRlbSB0
byBzZWxlY3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHBvcHVwIG1lbnUgaXMgbm90
IHNlbGVjdGVkIG9yIGluZGV4IGlzIG91dCBvZiByYW5nZSkKKyAqLworRUFQSSBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBp
bmRleCk7CisKKy8qKgorICogQ2xvc2VzIGN1cnJlbnQgcG9wdXAgbWVudS4KKyAqCisgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBwb3B1cCBtZW51LgorICoKKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkK
KyAqICAgICAgICAgcG9wdXAgbWVudSBpcyBub3Qgc2VsZWN0ZWQpCisgKi8KK0VBUEkgRWluYV9C
b29sIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY0MDI5ODU4NzEzY2RmNmJkODdiYTg4
YTZiMWFmMTM2YTc3YzRmZmIuLmRiOGFiNjZhNjFiMTRmMTY3ZGFjZGQ1ZTk4NzQ1ZThmYmZmNDkw
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19wcml2YXRlLmgKQEAgLTIzLDcgKzIzLDkgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtMzEsNiArMzMsMTEgQEAgY2xh
c3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7Cit9CisKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBlZGVmIHN0
cnVjdCBfRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVx
dWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwpA
QCAtODksNCArOTYsNiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21v
ZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19hY2Nl
bGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
OwogI2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNj
YWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50
MzJfdCBzZWxlY3RlZEluZGV4KTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKaW5kZXggMzliYzVh
NGRiZWM2NWNjNGUyOWYwM2FhNDFiMzQyMTg5ZjA0ZjMxYy4uODAzM2UyNDk4OGVlYWI1YzY2ZDUz
MWZmNDg5YjZlMTMxOGM0OGU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEJhc2UuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiRVdLMlVuaXRUZXN0
QmFzZS5oIgogCiAjaW5jbHVkZSAiRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuaCIKLSNpbmNsdWRl
IDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTQyLDcgKzQxLDkgQEAgc3RhdGlj
IHZvaWQgb25Mb2FkRmluaXNoZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJWaWV3
LCB2b2lkKiBldmVudEluZm8KIEVXSzJVbml0VGVzdEJhc2U6OkVXSzJVbml0VGVzdEJhc2UoKQog
ICAgIDogbV9lY29yZUV2YXMoMCkKICAgICAsIG1fd2ViVmlldygwKQorICAgICwgbV9ld2tWaWV3
Q2xhc3MoRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04oIkJyb3dzZXJfVmll
dyIpKQogeworICAgIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldCgmbV9ld2tWaWV3Q2xhc3MpOwog
fQogCiB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKQEAgLTYwLDcgKzYxLDggQEAgdm9p
ZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCiAgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVF
dmFzKTsKICAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMpOwogCi0g
ICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfYWRkKGV2YXMpOworICAgIEV2YXNfU21hcnQqIHNtYXJ0
ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJm1fZXdrVmlld0NsYXNzLnNjKTsKKyAgICBtX3dlYlZp
ZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KCkpOwogICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZpZXcsIGVudmlyb25tZW50LT5k
ZWZhdWx0VGhlbWUoKSk7CiAKICAgICBldmFzX29iamVjdF9yZXNpemUobV93ZWJWaWV3LCB3aWR0
aCwgaGVpZ2h0KTsKQEAgLTc3LDEwICs3OSwxNSBAQCB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlRl
YXJEb3duKCkKIAogdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpsb2FkVXJsU3luYyhjb25zdCBjaGFy
KiB1cmwpCiB7CisgICAgZXdrX3ZpZXdfdXJpX3NldChtX3dlYlZpZXcsIHVybCk7CisgICAgd2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCkKK3sKICAgICBib29sIGxvYWRGaW5pc2hlZCA9IGZhbHNlOwogCiAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fd2ViVmlldywgImxvYWQsZmluaXNo
ZWQiLCBvbkxvYWRGaW5pc2hlZCwgJmxvYWRGaW5pc2hlZCk7Ci0gICAgZXdrX3ZpZXdfdXJpX3Nl
dChtX3dlYlZpZXcsIHVybCk7CiAKICAgICB3aGlsZSAoIWxvYWRGaW5pc2hlZCkKICAgICAgICAg
ZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VW5pdFRlc3RCYXNlLmgKaW5kZXggMjlkNTViZWU0OWNhZmQ5MGE1ZWMyODU2ZGM1YmNhN2NkYTk3
MmJlNS4uZmE2YWJkMTYwNDhjYWE4MzA5MGI1OTVhYjg5NWU5ZjcwYzExNjgyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0syVW5pdFRlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKQEAgLTIwLDYgKzIwLDcgQEAK
ICNpZm5kZWYgRVdLMlVuaXRUZXN0QmFzZV9oCiAjZGVmaW5lIEVXSzJVbml0VGVzdEJhc2VfaAog
CisjaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVk
ZSA8RXZhcy5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0yOSw2ICszMCw3IEBAIG5h
bWVzcGFjZSBFV0syVW5pdFRlc3QgewogY2xhc3MgRVdLMlVuaXRUZXN0QmFzZSA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCkgeyBy
ZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGV3a1ZpZXdDbGFz
cygpIHsgcmV0dXJuICZtX2V3a1ZpZXdDbGFzczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgRVdLMlVu
aXRUZXN0QmFzZSgpOwpAQCAtMzcsMTIgKzM5LDE0IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKTsKIAogICAgIHZvaWQgbG9hZFVybFN5bmMoY29uc3QgY2hhciogdXJs
KTsKKyAgICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIHZvaWQgd2FpdFVudGls
VGl0bGVDaGFuZ2VkVG8oY29uc3QgY2hhciogZXhwZWN0ZWRUaXRsZSk7CiAgICAgdm9pZCBtb3Vz
ZUNsaWNrKGludCB4LCBpbnQgeSk7CiAKIHByaXZhdGU6CiAgICAgRXZhc19PYmplY3QqIG1fd2Vi
VmlldzsKICAgICBFY29yZV9FdmFzKiBtX2Vjb3JlRXZhczsKKyAgICBFd2tfVmlld19TbWFydF9D
bGFzcyBtX2V3a1ZpZXdDbGFzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEVXSzJVbml0VGVzdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3ZpZXcuY3BwCmluZGV4IDVlZGIwNDM3OWE1ZmQ4OTE0MTA2NGY2MjI4YzE0NDk4YTYw
MWMxZjEuLjg4Y2Q2YjkxZDU4MTc3Yjc1ZjM4ZDVjMWVlYjg5ZmI4MDA3NGQxN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3
azJfdmlldy5jcHAKQEAgLTE4OCwzICsxODgsNDUgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2Us
IGV3a192aWV3X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0KQogICAgIEFTU0VSVF9UUlVFKGhhbmRs
ZWQpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3KCksICJmb3Jt
LHN1Ym1pc3Npb24scmVxdWVzdCIsIG9uRm9ybUFib3V0VG9CZVN1Ym1pdHRlZCk7CiB9CisKK3N0
YXRpYyBFaW5hX0Jvb2wgc2hvd1BvcHVwTWVudShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEsIEVpbmFfUmVjdGFuZ2xlLCBFd2tfVGV4dF9EaXJlY3Rpb24sIGRvdWJsZSwgRWluYV9MaXN0
KiBsaXN0LCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBFWFBFQ1RfRVEoc2VsZWN0ZWRJbmRl
eCwgMik7CisKKyAgICBFd2tfUG9wdXBfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdr
X1BvcHVwX01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMCkpOworICAgIEVYUEVDVF9F
UShld2tfcG9wdXBfbWVudV9pdGVtX3R5cGVfZ2V0KGl0ZW0pLCBFV0tfUE9QVVBfTUVOVV9JVEVN
KTsKKyAgICBFWFBFQ1RfU1RSRVEoZXdrX3BvcHVwX21lbnVfaXRlbV90ZXh0X2dldChpdGVtKSwg
ImZpcnN0Iik7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01lbnVfSXRlbSo+
KGVpbmFfbGlzdF9udGgobGlzdCwgMSkpOworICAgIEVYUEVDVF9FUShld2tfcG9wdXBfbWVudV9p
dGVtX3R5cGVfZ2V0KGl0ZW0pLCBFV0tfUE9QVVBfTUVOVV9JVEVNKTsKKyAgICBFWFBFQ1RfU1RS
RVEoZXdrX3BvcHVwX21lbnVfaXRlbV90ZXh0X2dldChpdGVtKSwgInNlY29uZCIpOworCisgICAg
aXRlbSA9IHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxp
c3QsIDIpKTsKKyAgICBFWFBFQ1RfRVEoZXdrX3BvcHVwX21lbnVfaXRlbV90eXBlX2dldChpdGVt
KSwgRVdLX1BPUFVQX01FTlVfSVRFTSk7CisgICAgRVhQRUNUX1NUUkVRKGV3a19wb3B1cF9tZW51
X2l0ZW1fdGV4dF9nZXQoaXRlbSksICJ0aGlyZCIpOworCisgICAgaXRlbSA9IHN0YXRpY19jYXN0
PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDMpKTsKKyAgICBFWFBF
Q1RfRVEoZXdrX3BvcHVwX21lbnVfaXRlbV90eXBlX2dldChpdGVtKSwgRVdLX1BPUFVQX01FTlVf
VU5LTk9XTik7CisgICAgRVhQRUNUX1NUUkVRKGV3a19wb3B1cF9tZW51X2l0ZW1fdGV4dF9nZXQo
aXRlbSksIDApOworCisgICAgRVhQRUNUX1RSVUUoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3Qo
c21hcnREYXRhLT5zZWxmLCAwKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCkKK3sKKyAgICBjb25zdCBj
aGFyKiBzZWxlY3RIVE1MID0KKyAgICAgICAgIjwhZG9jdHlwZSBodG1sPjxib2R5PjxzZWxlY3Qg
b25jaGFuZ2U9XCJkb2N1bWVudC50aXRsZT10aGlzLnZhbHVlO1wiPiIKKyAgICAgICAgIjxvcHRp
b24+Zmlyc3Q8L29wdGlvbj48b3B0aW9uPnNlY29uZDwvb3B0aW9uPjxvcHRpb24gc2VsZWN0ZWQ+
dGhpcmQ8L29wdGlvbj4iCisgICAgICAgICI8L3NlbGVjdD48L2JvZHk+IjsKKworICAgIGV3a1Zp
ZXdDbGFzcygpLT5wb3B1cF9tZW51X3Nob3cgPSBzaG93UG9wdXBNZW51OworCisgICAgZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHNlbGVjdEhUTUwsICJmaWxlOi8vLyIsIDAp
OworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsK
KyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiZmlyc3QiKTsKKworICAgIEVYUEVDVF9UUlVF
KGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2Uod2ViVmlldygpKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KHdlYlZpZXcoKSwgMCkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wM2Q1MDRiYTQ0MzgxOTgzNzMwMWJkZjI2YmUzZWEwZmUxNTM5ZDhhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQ
cm94eUVmbC5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorCisjaW5jbHVkZSAiTmF0
aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUg
ImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9wdXBNZW51UHJveHlFZmwo
RXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkK
KyAgICA6IFdlYlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3
KQoreworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93UG9wdXBNZW51KGNvbnN0
IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VT
Y2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0
Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9yZXF1ZXN0KG1fd2ViVmlldywgdGhpcywgcmVjdCwgdGV4dERpcmVjdGlv
biwgcGFnZVNjYWxlRmFjdG9yLCBpdGVtcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2Vi
UG9wdXBNZW51UHJveHlFZmw6OmhpZGVQb3B1cE1lbnUoKQoreworICAgIGV3a192aWV3X3BvcHVw
X21lbnVfY2xvc2UobV93ZWJWaWV3KTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6
dmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KQoreworICAgIG1fY2xpZW50LT52YWx1
ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgbmV3U2VsZWN0ZWRJbmRleCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQb3B1cE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNDA3NGFiMjdmNzRkYjg0OTE1MDdh
ZGNhYWI4ZGZlMWJjNTEzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViUG9wdXBNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJQb3B1cE1l
bnVQcm94eUVmbF9oCisKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgorCit0eXBlZGVm
IHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEludFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsIDogcHVibGljIFdlYlBvcHVwTWVu
dVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94
eUVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xp
ZW50KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVw
TWVudVByb3h5RWZsKHdlYlZpZXcsIGNsaWVudCkpOworICAgIH0KKworICAgIHZvaWQgc2hvd1Bv
cHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwg
ZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBjb25z
dCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworICAgIHZv
aWQgaGlkZVBvcHVwTWVudSgpOworCisgICAgdm9pZCB2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVj
dGVkSW5kZXgpOworCitwcml2YXRlOgorICAgIFdlYlBvcHVwTWVudVByb3h5RWZsKEV2YXNfT2Jq
ZWN0KiwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCopOworCisgICAgRXZhc19PYmplY3QqIG1f
d2ViVmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUG9w
dXBNZW51UHJveHlFZmxfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdlMWZjZjUyMGE1OTkwNTJkZjY2Yjk3NjQ5M2IxMzM0
NzNjYjNhM2YuLjg1ZDQyM2NjYzBhY2YyZDQxNDA4NWE2MWNmNzAwNWUyZDU4MmZlYmIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxMi0wOC0yOCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgV2ViUG9wdXBNZW51UHJv
eHlFZmwgdG8gc3VwcG9ydCA8c2VsZWN0PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODg2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBL
aW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tp
cCBmYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlzdC1wb3B1cC1jcmFzaC5odG1sCisKIDIwMTItMDgt
MjggIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogW1dlYkdMXSBBZGQgYSB0ZXN0IHRvIGNhdGNoIG5ldyBXZWJHTCBjb250ZXh0
IHN0YXRlcyBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwt
d2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggNTVmZGZlNjA0ODkyOTQ3YTY0ZmI5NDgwNzExNWYwMjZiZTliMmJl
Yy4uNmI5ZDVjMWE0OGU4MjliM2QxZGM0NzY2MzgzZjE3N2ZkZTM4NWZmYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzgsNyArMzgsNiBA
QCBCVUdXS0VGTCA6IGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdXNwZW5kLWFjdGl2ZS1k
b20tb2JqZWN0cy5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogaW5zcGVjdG9yL2RlYnVnZ2VyL2Rl
YnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0Lmh0bWwgPSBDUkFTSAogQlVHV0tFRkwgOiBpbnNw
ZWN0b3IvZGVidWdnZXIvZGVidWdnZXItZXZhbC1vbi1jYWxsLWZyYW1lLmh0bWwgPSBDUkFTSAog
QlVHV0tFRkwgOiBmYXN0L2xvYWRlci9kb2N1bWVudC13aXRoLWZyYWdtZW50LXVybC0xLmh0bWwg
PSBDUkFTSAotQlVHV0tFRkwgOiBmYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlzdC1wb3B1cC1jcmFz
aC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1j
cmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLRUZMIDogZmFzdC9ldmVudHMva2V5ZXZlbnQtaWZyYW1l
LXJlbW92ZWQtY3Jhc2guaHRtbCA9IENSQVNICiBCVUdXS0VGTCA6IGZhc3Qvb3ZlcmZsb3cvbG90
cy1vZi1zaWJsaW5nLWlubGluZS1ib3hlcy5odG1sID0gQ1JBU0gK
</data>

          </attachment>
      

    </bug>

</bugzilla>