<?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>110728</bug_id>
          
          <creation_ts>2013-02-24 23:34:59 -0800</creation_ts>
          <short_desc>[EFL][WK2] Add an API for adding and removing user style sheets from a page group</short_desc>
          <delta_ts>2013-03-15 07:52:10 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jinwoo Song">jinwoo7.song</reporter>
          <assigned_to name="Jinwoo Song">jinwoo7.song</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>840732</commentid>
    <comment_count>0</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-02-24 23:34:59 -0800</bug_when>
    <thetext>According to the CSS2.1 spec, the user may be able to specify style information for a particular document.
So this patch provides an API for adding and removing user style sheets from a page group.
Also it implements EwkPageGroup API as an interface between the applications and WKPageGroup APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840745</commentid>
    <comment_count>1</comment_count>
      <attachid>190005</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-02-25 00:03:59 -0800</bug_when>
    <thetext>Created attachment 190005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840772</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-25 00:47:29 -0800</bug_when>
    <thetext>Do we really need the concept of page group in our Ewk API? So far, we basically have 1 page group per Ewk context and the client defines which context the Ewk view should belong to. Therefore, I personally think adding this new API to Ewk context may be better. I do not want to make our API more complex unless we really need to. So far, we haven&apos;t needed page groups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841552</commentid>
    <comment_count>3</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-02-25 19:50:14 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Do we really need the concept of page group in our Ewk API? So far, we basically have 1 page group per Ewk context and the client defines which context the Ewk view should belong to. Therefore, I personally think adding this new API to Ewk context may be better. I do not want to make our API more complex unless we really need to. So far, we haven&apos;t needed page groups.

Currently, as we pass the pageGroup as NULL, we have one page group per Ewk context as you explained. So when we create a new Ewk context, then we have a new page group, too. It&apos;s still same even we pass the defaultPageGroup as in bug 109276. But a WebPreference is owned by a page group, so the views with different Ewk contexts can not share a same WebPreference. When an application wants to create views with different Ewk contexts but wants to apply one WebPreference, it should create the views with one page group created by same identifier. Ewk page group API is required for these use case. Also, I think it&apos;s more natural to be consistent with the parameters of WKView in creating the view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841680</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-25 23:32:08 -0800</bug_when>
    <thetext>Well, I&apos;d like to hear Kenneth&apos;s opinion on this then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841876</commentid>
    <comment_count>5</comment_count>
      <attachid>190005</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-26 04:30:10 -0800</bug_when>
    <thetext>Comment on attachment 190005
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:52
&gt; +    return WKArrayCreateAdoptingValues(stringVector.data(), stringVector.size());

stringVector.size() == count, right? can be reused here

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:62
&gt; +    if (!identifier)

it will never happen :)

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:64
&gt; +    else

&apos;?&apos; operator might be useful here

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h:55
&gt; +        return adoptRef(new EwkPageGroup(&quot;defaultPageGroupIdentifier&quot;));

1) I&apos;d prefer it&apos;s not hardcoded inside a function
2) is it OK that new instance is returned each time? looks suspicious in not &quot;create&quot; function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842549</commentid>
    <comment_count>6</comment_count>
      <attachid>190005</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-02-26 17:15:20 -0800</bug_when>
    <thetext>Comment on attachment 190005
Patch

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

I personally don&apos;t object to add EwkPageGroup class to wrap up WKPageGroup.h. I also would listen Kenneth or Apple folks opinions on this.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:-350
&gt; -

Please do not touch unrelated file with this patch.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:68
&gt; +void EwkPageGroup::addUserStyleSheet(const String&amp; source, const String&amp; baseURL, Eina_List* whitelist, Eina_List* blacklist, bool mainFrameOnly)

Wrong * place.

whitelist -&gt; whiteList ?

blacklist -&gt; blackList ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:86
&gt; +Ewk_Page_Group* ewk_page_group_create(const char *identifier)

Wrong * place

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:91
&gt; +Eina_Bool ewk_page_group_user_style_sheet_add(Ewk_Page_Group *ewkPageGroup, const char *source, const char *baseURL, Eina_List *whitelist, Eina_List *blacklist, Eina_Bool mainFrameOnly)

ditto

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:100
&gt; +Eina_Bool ewk_page_group_user_style_sheets_remove_all(Ewk_Page_Group *ewkPageGroup)

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.h:72
&gt; +EAPI Eina_Bool ewk_page_group_user_style_sheet_add(Ewk_Page_Group *page_group, const char *source, const char *base_url, Eina_List *whitelist, Eina_List *blacklist, Eina_Bool main_frame_only);

whitelist -&gt; white_list ?

blacklist -&gt; black_list ?

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:38
&gt; +

Unneeded line.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:111
&gt; +    

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842632</commentid>
    <comment_count>7</comment_count>
      <attachid>190005</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-02-26 20:03:35 -0800</bug_when>
    <thetext>Comment on attachment 190005
Patch

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

Applied the comments by Mikhail and Gyuyoung. Thanks for review!.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:52
&gt;&gt; +    return WKArrayCreateAdoptingValues(stringVector.data(), stringVector.size());
&gt; 
&gt; stringVector.size() == count, right? can be reused here

Yes, I&apos;ll reuse it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:62
&gt;&gt; +    if (!identifier)
&gt; 
&gt; it will never happen :)

Yes, you are right. I&apos;d better check if the identifier is empty in &apos;create&apos; function.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h:55
&gt;&gt; +        return adoptRef(new EwkPageGroup(&quot;defaultPageGroupIdentifier&quot;));
&gt; 
&gt; 1) I&apos;d prefer it&apos;s not hardcoded inside a function
&gt; 2) is it OK that new instance is returned each time? looks suspicious in not &quot;create&quot; function

I&apos;ll fix to use the const char. :) Also, it would better to remove this function and move the code into &apos;create&apos; function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842648</commentid>
    <comment_count>8</comment_count>
      <attachid>190432</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-02-26 20:30:00 -0800</bug_when>
    <thetext>Created attachment 190432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842672</commentid>
    <comment_count>9</comment_count>
      <attachid>190432</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-26 21:24:23 -0800</bug_when>
    <thetext>Comment on attachment 190432
Patch

Attachment 190432 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16833023

New failing tests:
fast/js/dfg-inline-resolve.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846124</commentid>
    <comment_count>10</comment_count>
      <attachid>191155</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-03 17:10:59 -0800</bug_when>
    <thetext>Created attachment 191155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846254</commentid>
    <comment_count>11</comment_count>
      <attachid>191155</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-04 02:22:21 -0800</bug_when>
    <thetext>Comment on attachment 191155
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:35
&gt; +    RefPtr&lt;EwkPageGroup&gt; pageGroup = pageGroupRef ? EwkPageGroup::create(pageGroupRef) : EwkPageGroup::create(String());

create(String()) isn&apos;t it worth having default argument?

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:325
&gt; +        smartData-&gt;priv = new EwkView(evasObject, context, pageGroup, behavior);

could it be simplified using &apos;?&apos; operator for page group initialization?

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.h:124
&gt; +    EwkPageGroup* ewkPageGroup() {return m_pageGroup.get(); }

space is needed after &apos;{&apos;.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:62
&gt; +    m_pageGroupRef = WKPageGroupCreateWithIdentifier(adoptWK(toCopiedAPI(identifier)).get());

adopt here?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h:39
&gt; +static const char* defaultIdentifier = &quot;defaultPageGroupIdentifier&quot;;

static const char defaultIdentifier[]. And please make it local (should it be accessible outside?), now it is created for every compilation unit and visible for everyone.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h:55
&gt; +    WKPageGroupRef wkPageGroup() { return m_pageGroupRef.get(); }

method should be const

&gt; Tools/MiniBrowser/efl/main.c:1191
&gt; +        Ewk_Page_Group *pageGroup = opener ? ewk_view_page_group_get(opener) : ewk_page_group_create(0);

ewk_page_group_create(&quot;&quot;); ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846368</commentid>
    <comment_count>12</comment_count>
      <attachid>191214</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-04 05:46:23 -0800</bug_when>
    <thetext>Created attachment 191214
Patch

Applied the comments by Mikhail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846397</commentid>
    <comment_count>13</comment_count>
      <attachid>191214</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-04 06:10:34 -0800</bug_when>
    <thetext>Comment on attachment 191214
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:322
&gt; +    smartData-&gt;priv = pageGroup ? new EwkView(evasObject, context, pageGroup, behavior) : new EwkView(evasObject, context, EwkPageGroup::create(), behavior);

new EwkView(evasObject, context, (pageGroup ? pageGroup : EwkPageGroup::create()), behavior) ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h:48
&gt; +    static PassRefPtr&lt;EwkPageGroup&gt; create(const String&amp; identifier = defaultIdentifier)

Default value is better to be empty.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h:50
&gt; +        return identifier.isEmpty() ? adoptRef(new EwkPageGroup(defaultIdentifier)) : adoptRef(new EwkPageGroup(identifier));

return adoptRef(new EwkPageGroup(identifier.isEmpty() ? defaultIdentifier : identifier)); ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846996</commentid>
    <comment_count>14</comment_count>
      <attachid>191343</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-04 16:31:10 -0800</bug_when>
    <thetext>Created attachment 191343
Patch

Reflected Mikail&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847475</commentid>
    <comment_count>15</comment_count>
      <attachid>191343</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-05 02:20:25 -0800</bug_when>
    <thetext>Comment on attachment 191343
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:37
&gt; +static WKArrayRef createWKArray(Eina_List* array)

looks very much like a WKArrayCreateWithUTF8CStringEinaList :-)

or maybe a generic WKArrayCreateWithEinaList(Eina_List*, WKTypeRef (*converter)(void*));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848451</commentid>
    <comment_count>16</comment_count>
      <attachid>191651</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-05 21:54:03 -0800</bug_when>
    <thetext>Created attachment 191651
Patch

Created and used a generic WKArrayCreateWithEinaList() with the advice of Kenneth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848453</commentid>
    <comment_count>17</comment_count>
      <attachid>191343</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-05 21:56:37 -0800</bug_when>
    <thetext>Comment on attachment 191343
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:37
&gt;&gt; +static WKArrayRef createWKArray(Eina_List* array)
&gt; 
&gt; looks very much like a WKArrayCreateWithUTF8CStringEinaList :-)
&gt; 
&gt; or maybe a generic WKArrayCreateWithEinaList(Eina_List*, WKTypeRef (*converter)(void*));

Thanks for nice advice! I uploaded the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848596</commentid>
    <comment_count>18</comment_count>
      <attachid>191651</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-06 01:03:54 -0800</bug_when>
    <thetext>Comment on attachment 191651
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:40
&gt; +WKTypeRef convertFromCharToWKString(void* data)

static ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848602</commentid>
    <comment_count>19</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-06 01:09:37 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 191651 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191651&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp:40
&gt; &gt; +WKTypeRef convertFromCharToWKString(void* data)
&gt; 
&gt; static
LGTM otherwise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849642</commentid>
    <comment_count>20</comment_count>
      <attachid>191897</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-06 19:30:25 -0800</bug_when>
    <thetext>Created attachment 191897
Patch

Added static to convertFromCharToWKString().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849682</commentid>
    <comment_count>21</comment_count>
      <attachid>191897</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-06 20:10:47 -0800</bug_when>
    <thetext>Comment on attachment 191897
Patch

Attachment 191897 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16988181

New failing tests:
inspector/debugger/debugger-expand-scope.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849685</commentid>
    <comment_count>22</comment_count>
      <attachid>191907</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-06 20:19:05 -0800</bug_when>
    <thetext>Created attachment 191907
Patch

Looks false alarm from mac-wk2-ews. This patch is irrelevant to mac-wk2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850795</commentid>
    <comment_count>23</comment_count>
      <attachid>191907</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-07 19:54:32 -0800</bug_when>
    <thetext>Comment on attachment 191907
Patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        According to the CSS2.1 spec, the user may be able to specify style information for a particular document.

This is irrelevant for the patch.

&gt; Source/WebKit2/ChangeLog:11
&gt; +        So this patch provides an API for adding and removing user style sheets from a page group.
&gt; +        Also it implements EwkPageGroup API as an interface between the applications and WKPageGroup API.
&gt; +        WKArrayCreateWithEinaList() is added as a generic WKArray creation API from Eina_List.

What your patch really does is encapsulate the APIs WKPageGroupAddUserStyleSheet and WKPageGroupRemoveAllUserStyleSheets behind a new class named EwkPageGroup.

The changelog could be improved I think.

&gt; Source/WebKit2/Shared/API/c/efl/WKArrayEfl.cpp:49
&gt; +    return WKArrayCreateAdoptingValues(vector.data(), count);

Adopting the values here is wrong given the naming conventions.
The converter should be name createWKType or something like that.

&gt; Source/WebKit2/Shared/API/c/efl/WKArrayEfl.h:29
&gt; +#include &lt;Eina.h&gt;

You should not need this.

&gt; Source/WebKit2/Shared/API/c/efl/WKArrayEfl.h:31
&gt; +#include &lt;WebKit2/WKRetainPtr.h&gt;

Nor this.

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:35
&gt; +    RefPtr&lt;EwkPageGroup&gt; pageGroup = pageGroupRef ? EwkPageGroup::create(pageGroupRef) : EwkPageGroup::create();

EwkPageGroup::create(pageGroupRef) should just return the right thing if !pageGroupRef. Instead of having the branch outside.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:58
&gt; +    // Add a user style sheet to the page group before creating a view

WebKit style.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:61
&gt; +    // Create a new web view with this page group

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:77
&gt; +    // Add a user style sheet to the page group after creating a view

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:92
&gt; +    // Add a user style sheet to the page group before creating a view

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:107
&gt; +    // Remove all user style sheets in the page group

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:111
&gt; +    // Add a user style sheet to the page group after creating a view

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:116
&gt; +    // Remove all user style sheets in the page group

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850919</commentid>
    <comment_count>24</comment_count>
      <attachid>191907</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-07 23:28:36 -0800</bug_when>
    <thetext>Comment on attachment 191907
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:11
&gt;&gt; +        WKArrayCreateWithEinaList() is added as a generic WKArray creation API from Eina_List.
&gt; 
&gt; What your patch really does is encapsulate the APIs WKPageGroupAddUserStyleSheet and WKPageGroupRemoveAllUserStyleSheets behind a new class named EwkPageGroup.
&gt; 
&gt; The changelog could be improved I think.

Okay, I&apos;ll improve the change log.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:35
&gt;&gt; +    RefPtr&lt;EwkPageGroup&gt; pageGroup = pageGroupRef ? EwkPageGroup::create(pageGroupRef) : EwkPageGroup::create();
&gt; 
&gt; EwkPageGroup::create(pageGroupRef) should just return the right thing if !pageGroupRef. Instead of having the branch outside.

I&apos;ll put inside the logic into the create() function.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_page_group.cpp:58
&gt;&gt; +    // Add a user style sheet to the page group before creating a view
&gt; 
&gt; WebKit style.

I&apos;ll add the period for the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850921</commentid>
    <comment_count>25</comment_count>
      <attachid>191907</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-07 23:32:02 -0800</bug_when>
    <thetext>Comment on attachment 191907
Patch

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

&gt;&gt; Source/WebKit2/Shared/API/c/efl/WKArrayEfl.cpp:49
&gt;&gt; +    return WKArrayCreateAdoptingValues(vector.data(), count);
&gt; 
&gt; Adopting the values here is wrong given the naming conventions.
&gt; The converter should be name createWKType or something like that.

I&apos;ll change the &apos;converter&apos; to &apos;createWKType&apos;. Is it right?

&gt;&gt; Source/WebKit2/Shared/API/c/efl/WKArrayEfl.h:29
&gt;&gt; +#include &lt;Eina.h&gt;
&gt; 
&gt; You should not need this.

&apos;Eina_List&apos; is used as a parameter in the WKArrayCreateWithEinaList() and &apos;Eina_List&apos; is inside the Eina.h. Could you give more hint how to remove this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852946</commentid>
    <comment_count>26</comment_count>
      <attachid>191907</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-11 18:15:07 -0700</bug_when>
    <thetext>Comment on attachment 191907
Patch

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

&gt;&gt;&gt; Source/WebKit2/Shared/API/c/efl/WKArrayEfl.h:29
&gt;&gt;&gt; +#include &lt;Eina.h&gt;
&gt;&gt; 
&gt;&gt; You should not need this.
&gt; 
&gt; &apos;Eina_List&apos; is used as a parameter in the WKArrayCreateWithEinaList() and &apos;Eina_List&apos; is inside the Eina.h. Could you give more hint how to remove this?

I forward declared the Eina_List structure not to include the &apos;Eina.h&apos; file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852952</commentid>
    <comment_count>27</comment_count>
      <attachid>192613</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-11 18:22:04 -0700</bug_when>
    <thetext>Created attachment 192613
Patch

Applied Benjamin&apos;s comments. Thanks for review. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853008</commentid>
    <comment_count>28</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-11 19:28:17 -0700</bug_when>
    <thetext>Add Benjamin in CC list for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853029</commentid>
    <comment_count>29</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-11 20:28:31 -0700</bug_when>
    <thetext>Signed off by me for WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854918</commentid>
    <comment_count>30</comment_count>
      <attachid>192613</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-03-13 20:43:04 -0700</bug_when>
    <thetext>Comment on attachment 192613
Patch

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

LGTM. Signed off by Benjamin for WK2.

&gt; Source/WebKit2/PlatformEfl.cmake:173
&gt; +    &quot;${WEBKIT2_DIR}/Shared/API/c/efl&quot;

Wrong alphabet order.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_page_group.h:35
&gt; +#include &lt;Evas.h&gt;

It looks this is not needed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855101</commentid>
    <comment_count>31</comment_count>
      <attachid>193096</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-14 03:02:04 -0700</bug_when>
    <thetext>Created attachment 193096
Patch

Applied Gyuyoung&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855203</commentid>
    <comment_count>32</comment_count>
      <attachid>193096</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 08:17:26 -0700</bug_when>
    <thetext>Comment on attachment 193096
Patch

Clearing flags on attachment: 193096

Committed r145812: &lt;http://trac.webkit.org/changeset/145812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855204</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 08:17:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855471</commentid>
    <comment_count>34</comment_count>
      <attachid>193096</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-14 14:00:11 -0700</bug_when>
    <thetext>Comment on attachment 193096
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:232
&gt; -EwkView::EwkView(Evas_Object* evasObject, PassRefPtr&lt;EwkContext&gt; context, WKPageGroupRef pageGroup, ViewBehavior behavior)
&gt; +EwkView::EwkView(Evas_Object* evasObject, PassRefPtr&lt;EwkContext&gt; context, PassRefPtr&lt;EwkPageGroup&gt; pageGroup, ViewBehavior behavior)

We were trying to get rid of passing of context here in another patch. Now you added another. Please discuss with Mikhail</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855473</commentid>
    <comment_count>35</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-14 14:02:49 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 193096 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193096&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:232
&gt; &gt; -EwkView::EwkView(Evas_Object* evasObject, PassRefPtr&lt;EwkContext&gt; context, WKPageGroupRef pageGroup, ViewBehavior behavior)
&gt; &gt; +EwkView::EwkView(Evas_Object* evasObject, PassRefPtr&lt;EwkContext&gt; context, PassRefPtr&lt;EwkPageGroup&gt; pageGroup, ViewBehavior behavior)
&gt; 
&gt; We were trying to get rid of passing of context here in another patch. Now you added another. Please discuss with Mikhail

Patch for https://bugs.webkit.org/show_bug.cgi?id=112364 will help (will be ready soon :-) )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855717</commentid>
    <comment_count>36</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2013-03-14 22:57:17 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; (From update of attachment 193096 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193096&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:232
&gt; &gt; &gt; -EwkView::EwkView(Evas_Object* evasObject, PassRefPtr&lt;EwkContext&gt; context, WKPageGroupRef pageGroup, ViewBehavior behavior)
&gt; &gt; &gt; +EwkView::EwkView(Evas_Object* evasObject, PassRefPtr&lt;EwkContext&gt; context, PassRefPtr&lt;EwkPageGroup&gt; pageGroup, ViewBehavior behavior)
&gt; &gt; 
&gt; &gt; We were trying to get rid of passing of context here in another patch. Now you added another. Please discuss with Mikhail
&gt; 
&gt; Patch for https://bugs.webkit.org/show_bug.cgi?id=112364 will help (will be ready soon :-) )

Thanks for following up patch. I&apos;ll look into it, too. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855728</commentid>
    <comment_count>37</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-03-14 23:18:15 -0700</bug_when>
    <thetext>(In reply to comment #36)

&gt; &gt; &gt; We were trying to get rid of passing of context here in another patch. Now you added another. Please discuss with Mikhail
&gt; &gt; 
&gt; &gt; Patch for https://bugs.webkit.org/show_bug.cgi?id=112364 will help (will be ready soon :-) )
&gt; 
&gt; Thanks for following up patch. I&apos;ll look into it, too. :)

Thank you for fast following it up. And, sorry about missing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855929</commentid>
    <comment_count>38</comment_count>
      <attachid>193096</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-15 06:08:24 -0700</bug_when>
    <thetext>Comment on attachment 193096
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:326
&gt; +    smartData-&gt;priv = new EwkView(evasObject, context, (pageGroup ? pageGroup : EwkPageGroup::create()), behavior);

here is a problem actually which I did not notice :( We should let pageGroup to be null, so that WebContext default page group is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855992</commentid>
    <comment_count>39</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-15 07:52:10 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 193096 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193096&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:326
&gt; &gt; +    smartData-&gt;priv = new EwkView(evasObject, context, (pageGroup ? pageGroup : EwkPageGroup::create()), behavior);
&gt; 
&gt; here is a problem actually which I did not notice :( We should let pageGroup to be null, so that WebContext default page group is used.

Will be solved with the same patch at https://bugs.webkit.org/show_bug.cgi?id=112364</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190005</attachid>
            <date>2013-02-25 00:03:59 -0800</date>
            <delta_ts>2013-02-26 20:29:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130225170010.patch</filename>
            <type>text/plain</type>
            <size>36847</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjljMDQ3YTM3ZWMzMjMz
YzlhOWJlZDdkZTc5YzU2YWE5YTg5ZTZmMi4uMjMyZjlkMTNlZTJlODhiMWViYTkzZTk1YTI0MDZj
N2M3NWNhMjY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAyLTI0ICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFjY29yZGluZyB0byB0aGUgQ1NTMi4xIHNwZWMsIHRoZSB1c2VyIG1heSBiZSBhYmxl
IHRvIHNwZWNpZnkgc3R5bGUgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBkb2N1bWVudC4K
KyAgICAgICAgU28gdGhpcyBwYXRjaCBwcm92aWRlcyBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVt
b3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJvbSBhIHBhZ2UgZ3JvdXAuCisgICAgICAgIEFsc28g
aXQgaW1wbGVtZW50cyBFd2tQYWdlR3JvdXAgQVBJIGFzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRo
ZSBhcHBsaWNhdGlvbnMgYW5kIFdLUGFnZUdyb3VwIEFQSS4KKworICAgICAgICAqIFBsYXRmb3Jt
RWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAg
ICAgICAgKGNyZWF0ZVdLVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktp
dDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAgICAgICAg
KEV3a1ZpZXc6OkV3a1ZpZXcpOgorICAgICAgICAoRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAoRXdrVmll
dzo6ZXdrUGFnZUdyb3VwKToKKyAgICAgICAgKEV3a1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKGV3a19jb250ZXh0X3Jlc291cmNl
X2NhY2hlX2NsZWFyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6
CisgICAgICAgIChld2tfdmlld19zbWFydF9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV9n
cm91cF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RC
YXNlLmNwcDoKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVu
aXRUZXN0QmFzZS5oOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpz
ZXRXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKwogMjAxMy0wMi0yNCAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGluY2x1ZGUgZ3JhcGgg
b2YgSlNET01CaW5kaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggN2ZhNGVjOTc1
MWI0ZjQxZjI4NGMxMzhiODU5YWJiOTA4ODVkZGJjZS4uYjE1M2RmMWU1ZWE0OTcwNzg0NWM1NWRm
N2Q4NzcwMDQxZWYyYzFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTcwLDYgKzcw
LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVj
dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZWN1cml0
eV9vcmlnaW4uY3BwCkBAIC0yODMsNiArMjg0LDcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAg
ICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mYXZp
Y29uX2RhdGFiYXNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZmlsZV9jaG9vc2VyX3JlcXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVx
dWVzdC5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3BhZ2VfZ3JvdXAuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAgICAgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24uaCIKQEAgLTM4NCw2ICszODYsNyBAQCBzZXQoRVdLMlVuaXRUZXN0c19C
SU5BUklFUwogICAgIHRlc3RfZXdrMl9mYXZpY29uX2RhdGFiYXNlCiAgICAgdGVzdF9ld2syX2Zp
bGVfY2hvb3Nlcl9yZXF1ZXN0CiAgICAgdGVzdF9ld2syX29iamVjdAorICAgIHRlc3RfZXdrMl9w
YWdlX2dyb3VwCiAgICAgdGVzdF9ld2syX3BvcHVwX21lbnUKICAgICB0ZXN0X2V3azJfcmVmcHRy
X2V2YXNfb2JqZWN0CiAgICAgdGVzdF9ld2syX3NldHRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKaW5kZXggMTc3OTExZmIyMzM5MmJlMmRlZjgz
NGMzNWNkNjViMmM2MDBiODkzOS4uNjVmMjY5YTcxY2ZkMWUwY2E5MmVjOGFkNzNmZDlmOGEzNzU1
YWExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0zMSw3ICszMiw5IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiBzdGF0aWMgaW5saW5lIFdLVmlld1JlZiBjcmVhdGVXS1ZpZXcoRXZhcyog
Y2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmLCBFd2tWaWV3OjpWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAgICAgUmVmUHRyPEV3a0Nv
bnRleHQ+IGNvbnRleHQgPSBjb250ZXh0UmVmID8gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRS
ZWYpIDogRXdrQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKTsKLSAgICBFdmFzX09iamVjdCogZXZh
c09iamVjdCA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBjb250ZXh0LCBwYWdl
R3JvdXBSZWYsIGJlaGF2aW9yKTsKKyAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAg
PSBwYWdlR3JvdXBSZWYgPyBFd2tQYWdlR3JvdXA6OmNyZWF0ZShwYWdlR3JvdXBSZWYpIDogRXdr
UGFnZUdyb3VwOjpjcmVhdGUoU3RyaW5nKCkpOworCisgICAgRXZhc19PYmplY3QqIGV2YXNPYmpl
Y3QgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgY29udGV4dCwgcGFnZUdyb3Vw
LCBiZWhhdmlvcik7CiAgICAgaWYgKCFldmFzT2JqZWN0KQogICAgICAgICByZXR1cm4gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggM2EyODY1
ZWU3OTMxZTVkMWQ0ZDMwZGZlNTAwOTZmNzRjZjRmZGQ1My4uYTljOGExNGU3OGIxZmVlNjkxOTU5
Y2QyY2I3MmE1MDVlZmRiZTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25f
ZGF0YS5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2lu
Y2x1ZGUgImV3a19vYmplY3QuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1
ZGUgImV3a19wb3B1cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgog
I2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggOGYzNDM5YjkwMzZkMDlkZTkxMGE2MmE2NmRh
MWM1NWE0M2U2OGY4NS4uMGRkMDY1ZjIzYjBjMDlmNTZhZDcwNDJmYzczZmFhMzhjZDJjOTcxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTUz
LDYgKzUzLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJh
c2VfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBf
bWVudV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKQEAgLTIyOCwxMSArMjI5
LDEyIEBAIHZvaWQgRXdrVmlld0V2ZW50SGFuZGxlcjxFVkFTX0NBTExCQUNLX0hJREU+OjpoYW5k
bGVFdmVudCh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhCiAKIC8vIEV3a1ZpZXcgaW1wbGVtZW50YXRp
b24uCiAKLUV3a1ZpZXc6OkV3a1ZpZXcoRXZhc19PYmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQ
dHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBWaWV3QmVo
YXZpb3IgYmVoYXZpb3IpCitFd2tWaWV3OjpFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0
LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3Vw
PiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKICAgICA6IG1fZXZhc09iamVjdChl
dmFzT2JqZWN0KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3BhZ2VHcm91cChw
YWdlR3JvdXApCiAgICAgLCBtX3BlbmRpbmdTdXJmYWNlUmVzaXplKGZhbHNlKQotICAgICwgbV93
ZWJWaWV3KGFkb3B0UmVmKG5ldyBXZWJWaWV3KHRvSW1wbChtX2NvbnRleHQtPndrQ29udGV4dCgp
KSwgdG9JbXBsKHBhZ2VHcm91cCksIHRoaXMpKSkKKyAgICAsIG1fd2ViVmlldyhhZG9wdFJlZihu
ZXcgV2ViVmlldyh0b0ltcGwobV9jb250ZXh0LT53a0NvbnRleHQoKSksIHRvSW1wbChtX3BhZ2VH
cm91cC0+d2tQYWdlR3JvdXAoKSksIHRoaXMpKSkKICAgICAsIG1fcGFnZUxvYWRDbGllbnQoUGFn
ZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQ
YWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQ
YWdlVUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKQEAgLTMwMCw3ICszMDIsNyBAQCBFd2tWaWV3
Ojp+RXdrVmlldygpCiAgICAgaWNvbkRhdGFiYXNlLT51bndhdGNoQ2hhbmdlcyhFd2tWaWV3Ojpo
YW5kbGVGYXZpY29uQ2hhbmdlZCk7CiB9CiAKLUV2YXNfT2JqZWN0KiBFd2tWaWV3OjpjcmVhdGVF
dmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdr
Q29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IpCitFdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFz
KiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRl
eHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhh
dmlvcikKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnQsIDApOwpAQCAtMzE3LDE1
ICszMTksMTcgQEAgRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyog
Y2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlAKIAogICAgIEFTU0VSVCghc21hcnRE
YXRhLT5wcml2KTsKIAotICAgIC8vIERlZmF1bHQgV2ViUGFnZUdyb3VwIGlzIGNyZWF0ZWQgaW4g
V2ViQ29udGV4dCBjb25zdHJ1Y3RvciBpZiB0aGUgcGFnZUdyb3VwUmVmIGlzIDAsCi0gICAgLy8g
c28gd2UgZG8gbm90IG5lZWQgdG8gY3JlYXRlIGl0IGhlcmUuCi0gICAgc21hcnREYXRhLT5wcml2
ID0gbmV3IEV3a1ZpZXcoZXZhc09iamVjdCwgY29udGV4dCwgcGFnZUdyb3VwUmVmLCBiZWhhdmlv
cik7CisgICAgaWYgKCFwYWdlR3JvdXApCisgICAgICAgIFJlZlB0cjxFd2tQYWdlR3JvdXA+IHBh
Z2VHcm91cCA9IEV3a1BhZ2VHcm91cDo6ZGVmYXVsdFBhZ2VHcm91cCgpOworCisgICAgc21hcnRE
YXRhLT5wcml2ID0gbmV3IEV3a1ZpZXcoZXZhc09iamVjdCwgY29udGV4dCwgcGFnZUdyb3VwLCBi
ZWhhdmlvcik7CisKICAgICByZXR1cm4gZXZhc09iamVjdDsKIH0KIAotRXZhc19PYmplY3QqIEV3
a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRl
eHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgVmlld0JlaGF2aW9yIGJl
aGF2aW9yKQorRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2Fu
dmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdy
b3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKIHsKLSAgICByZXR1cm4gY3Jl
YXRlRXZhc09iamVjdChjYW52YXMsIGRlZmF1bHRTbWFydENsYXNzSW5zdGFuY2UoKSwgY29udGV4
dCwgcGFnZUdyb3VwUmVmLCBiZWhhdmlvcik7CisgICAgcmV0dXJuIGNyZWF0ZUV2YXNPYmplY3Qo
Y2FudmFzLCBkZWZhdWx0U21hcnRDbGFzc0luc3RhbmNlKCksIGNvbnRleHQsIHBhZ2VHcm91cCwg
YmVoYXZpb3IpOwogfQogCiBib29sIEV3a1ZpZXc6OmluaXRTbWFydENsYXNzSW50ZXJmYWNlKEV3
a19WaWV3X1NtYXJ0X0NsYXNzJiBhcGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmgKaW5kZXggNzFkYWQyZDU3YTcwMWU2ZjU5MmMzYzY2N2M0ODEzNDU3ODBlMTc1
Mi4uNDhiZTA4MWRlYzhmNjAzMDQ2ZWZhMGM4MWU5N2U1YWZiZmJhYTU2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtODcsNiArODcsNyBAQCBjbGFz
cyBFd2tDb250ZXh0OwogY2xhc3MgRXdrQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgRXdrQ29sb3JQ
aWNrZXI7CiBjbGFzcyBFd2tDb250ZXh0TWVudTsKK2NsYXNzIEV3a1BhZ2VHcm91cDsKIGNsYXNz
IEV3a1BvcHVwTWVudTsKIGNsYXNzIEV3a1NldHRpbmdzOwogY2xhc3MgRXdrV2luZG93RmVhdHVy
ZXM7CkBAIC0xMDYsOCArMTA3LDggQEAgcHVibGljOgogICAgICAgICBEZWZhdWx0QmVoYXZpb3IK
ICAgICB9OwogCi0gICAgc3RhdGljIEV2YXNfT2JqZWN0KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMq
IGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4
dCwgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDAsIFZpZXdCZWhhdmlvciBiZWhhdmlv
ciA9IEV3a1ZpZXc6OkRlZmF1bHRCZWhhdmlvcik7Ci0gICAgc3RhdGljIEV2YXNfT2JqZWN0KiBj
cmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250
ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZp
b3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZpb3IpOworICAgIHN0YXRpYyBFdmFzX09iamVjdCog
Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVm
UHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsICBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdy
b3VwID0gMCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2aW9y
KTsKKyAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFz
LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3Vw
PiBwYWdlR3JvdXAgPSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0
QmVoYXZpb3IpOwogCiAgICAgc3RhdGljIGJvb2wgaW5pdFNtYXJ0Q2xhc3NJbnRlcmZhY2UoRXdr
X1ZpZXdfU21hcnRfQ2xhc3MmKTsKIApAQCAtMTIwLDYgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAg
IFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV93ZWJWaWV3LT5wYWdlKCk7
IH0KICAgICBFd2tDb250ZXh0KiBld2tDb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgp
OyB9CisgICAgRXdrUGFnZUdyb3VwKiBld2tQYWdlR3JvdXAoKSB7cmV0dXJuIG1fcGFnZUdyb3Vw
LmdldCgpOyB9CiAgICAgRXdrU2V0dGluZ3MqIHNldHRpbmdzKCkgeyByZXR1cm4gbV9zZXR0aW5n
cy5nZXQoKTsgfQogICAgIEV3a0JhY2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0KCkgeyBy
ZXR1cm4gbV9iYWNrRm9yd2FyZExpc3QuZ2V0KCk7IH0KICAgICBFd2tXaW5kb3dGZWF0dXJlcyog
d2luZG93RmVhdHVyZXMoKTsKQEAgLTIxMyw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHRha2VTbmFwc2hvdCgpOwogCiBwcml2YXRlOgotICAgIEV3
a1ZpZXcoRXZhc19PYmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29u
dGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IpOworICAgIEV3a1Zp
ZXcoRXZhc19PYmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4
dCwgUGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yKTsKICAg
ICB+RXdrVmlldygpOwogCiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCkgY29u
c3Q7CkBAIC0yNTIsNiArMjU0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBOb3RlLCBpbml0aWFsaXph
dGlvbiBvcmRlciBtYXR0ZXJzLgogICAgIEV2YXNfT2JqZWN0KiBtX2V2YXNPYmplY3Q7CiAgICAg
UmVmUHRyPEV3a0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBt
X3BhZ2VHcm91cDsKICAgICBPd25QdHI8RXZhc19HTD4gbV9ldmFzR0w7CiAgICAgT3duUHRyPFdl
YktpdDo6RXZhc0dMQ29udGV4dD4gbV9ldmFzR0xDb250ZXh0OwogICAgIE93blB0cjxXZWJLaXQ6
OkV2YXNHTFN1cmZhY2U+IG1fZXZhc0dMU3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCBhYmY5NmI0YTJkOGY2YjQzZTll
YjFlNzA4NGI4NmI4Y2Y5ZWY2ODg3Li44MzAwYzA3NTIwZmU3ZjY4MGQ4MWFiZWJlZDlmZGYwYTRh
NThiZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHQuY3BwCkBAIC0zNDcsNCArMzQ3LDMgQEAgdm9pZCBld2tfY29udGV4dF9yZXNvdXJjZV9j
YWNoZV9jbGVhcihFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIAogICAgIGltcGwtPmNsZWFyUmVz
b3VyY2VDYWNoZSgpOwogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcGFnZV9ncm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcGFnZV9ncm91cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YyMjhjNzc4ZjEzOWUyMzgwNzJj
YjcxZjAxNzg3YWE0ZDYzNDQ5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3Bh
Z2VfZ3JvdXAuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQXJyYXku
aCIKKyNpbmNsdWRlICJXS1BhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5j
bHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RhdGljIFdLQXJyYXlSZWYgY3Jl
YXRlV0tBcnJheShFaW5hX0xpc3QqIGFycmF5KQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gZWlu
YV9saXN0X2NvdW50KGFycmF5KTsKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm4gV0tB
cnJheVJlZigpOworCisgICAgVmVjdG9yPFdLVHlwZVJlZj4gc3RyaW5nVmVjdG9yOworICAgIHN0
cmluZ1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgIEVpbmFfTGlz
dCogbCA9IDA7CisgICAgdm9pZCogZGF0YSA9IDA7CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0goYXJy
YXksIGwsIGRhdGEpCisgICAgICAgIHN0cmluZ1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpKSk7CisKKyAg
ICByZXR1cm4gV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKHN0cmluZ1ZlY3Rvci5kYXRhKCks
IHN0cmluZ1ZlY3Rvci5zaXplKCkpOworfQorCitFd2tQYWdlR3JvdXA6OkV3a1BhZ2VHcm91cChX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCisgICAgOiBtX3BhZ2VHcm91cFJlZihwYWdlR3Jv
dXBSZWYpCit7Cit9CisKK0V3a1BhZ2VHcm91cDo6RXdrUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIG1fcGFnZUdyb3Vw
UmVmID0gV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcigwKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fcGFnZUdyb3VwUmVmID0gV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihhZG9w
dFdLKHRvQ29waWVkQVBJKGlkZW50aWZpZXIpKS5nZXQoKSk7Cit9CisKK3ZvaWQgRXdrUGFnZUdy
b3VwOjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBFaW5hX0xpc3QqIHdoaXRlbGlzdCwgRWluYV9MaXN0KiBibGFja2xpc3QsIGJv
b2wgbWFpbkZyYW1lT25seSkKK3sKKyAgICBBU1NFUlQoc291cmNlKTsKKworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB3a1NvdXJjZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkoc291cmNlKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrQmFzZVVSTCA9IGFkb3B0V0sodG9Db3BpZWRV
UkxBUEkoYmFzZVVSTCkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrV2hpdGVsaXN0
ID0gYWRvcHRXSyhjcmVhdGVXS0FycmF5KHdoaXRlbGlzdCkpOworICAgIFdLUmV0YWluUHRyPFdL
QXJyYXlSZWY+IHdrQmxhY2tsaXN0ID0gYWRvcHRXSyhjcmVhdGVXS0FycmF5KGJsYWNrbGlzdCkp
OworICAgIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyA9IG1haW5G
cmFtZU9ubHkgPyBrV0tJbmplY3RJblRvcEZyYW1lT25seSA6IGtXS0luamVjdEluQWxsRnJhbWVz
OworCisgICAgV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldChtX3BhZ2VHcm91cFJlZi5nZXQo
KSwgd2tTb3VyY2UuZ2V0KCksIHdrQmFzZVVSTC5nZXQoKSwgd2tXaGl0ZWxpc3QuZ2V0KCksIHdr
QmxhY2tsaXN0LmdldCgpLCBpbmplY3RlZEZyYW1lcyk7Cit9CisKK3ZvaWQgRXdrUGFnZUdyb3Vw
OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQoreworICAgIFdLUGFnZUdyb3VwUmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzKG1fcGFnZUdyb3VwUmVmLmdldCgpKTsKK30KKworRXdrX1BhZ2VfR3Jv
dXAqIGV3a19wYWdlX2dyb3VwX2NyZWF0ZShjb25zdCBjaGFyICppZGVudGlmaWVyKQoreworICAg
IHJldHVybiBFd2tQYWdlR3JvdXA6OmNyZWF0ZShpZGVudGlmaWVyKS5sZWFrUmVmKCk7Cit9CisK
K0VpbmFfQm9vbCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChFd2tfUGFnZV9H
cm91cCAqZXdrUGFnZUdyb3VwLCBjb25zdCBjaGFyICpzb3VyY2UsIGNvbnN0IGNoYXIgKmJhc2VV
UkwsIEVpbmFfTGlzdCAqd2hpdGVsaXN0LCBFaW5hX0xpc3QgKmJsYWNrbGlzdCwgRWluYV9Cb29s
IG1haW5GcmFtZU9ubHkpCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrUGFn
ZUdyb3VwLCBld2tQYWdlR3JvdXAsIGltcGwsIGZhbHNlKTsKKworICAgIGltcGwtPmFkZFVzZXJT
dHlsZVNoZWV0KHNvdXJjZSwgYmFzZVVSTCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIG1haW5GcmFt
ZU9ubHkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfcGFnZV9ncm91
cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKEV3a19QYWdlX0dyb3VwICpld2tQYWdlR3Jv
dXApCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrUGFnZUdyb3VwLCBld2tQ
YWdlR3JvdXAsIGltcGwsIGZhbHNlKTsKKworICAgIGltcGwtPnJlbW92ZUFsbFVzZXJTdHlsZVNo
ZWV0cygpOworCisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTMzOWM4MTI4OTMz
N2M0ZWY5ZTJkMGY5Nzk3ZjA3MzQzNGEzODFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaApAQCAtMCwwICsxLDg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3BhZ2VfZ3JvdXAu
aAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgUGFnZSBHcm91cCBBUEkuCisgKi8KKwor
I2lmbmRlZiBld2tfcGFnZV9ncm91cF9oCisjZGVmaW5lIGV3a19wYWdlX2dyb3VwX2gKKworI2lu
Y2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBEZWNsYXJlIEV3a19QYWdlX0dyb3VwIGFz
IEV3a19PYmplY3QuCisgKgorICogQHNlZSBFd2tfT2JqZWN0CisgKi8KK3R5cGVkZWYgc3RydWN0
IEV3a09iamVjdCBFd2tfUGFnZV9Hcm91cDsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IEV3a19Q
YWdlX0dyb3VwLgorICoKKyAqIFRoZSByZXR1cm5lZCBFd2tfUGFnZV9Hcm91cCBvYmplY3QgQGIg
c2hvdWxkIGJlIHVucmVmJ2VkIGFmdGVyIHVzZS4KKyAqCisgKiBAcmV0dXJuIEV3a19QYWdlX0dy
b3VwIG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQorICoKKyAqIEBzZWUg
ZXdrX29iamVjdF91bnJlZgorICovCitFQVBJIEV3a19QYWdlX0dyb3VwICpld2tfcGFnZV9ncm91
cF9jcmVhdGUoY29uc3QgY2hhciAqaWRlbnRpZmllcik7CisKKy8qKgorICogQWRkcyB0aGUgdXNl
ciBzdHlsZSBzaGVldCB0byB0aGlzIHBhZ2UgZ3JvdXAuCisgKgorICogQHBhcmFtIHBhZ2VfZ3Jv
dXAgZXdrX3BhZ2VfZ29ydXAgb2JqZWN0IHRvIGFkZCB0aGUgdXNlciBzdHlsZSBzaGVldAorICog
QHBhcmFtIHNvdXJjZSB0aGUgdXNlciBzdHlsZSBzaGVldAorICogQHBhcmFtIHVybCBiYXNlVVJM
CisgKiBAcGFyYW0gd2hpdGVsaXN0IHVybCBsaXN0IHRvIGFsbG93IGFkZGluZyB0aGUgdXNlciBz
dHlsZSBzaGVldAorICogQHBhcmFtIGJsYWNrbGlzdCB1cmwgbGlzdCB0byBkaXNhbGxvdyBhZGRp
bmcgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJhbSBtYWluX2ZyYW1lX29ubHkgYSBzdGF0
ZSB0byBhcHBseSB0aGUgdXNlciBzdHlsZSBzaGVldCBvbmx5IHRvIHRoZSBtYWluZnJhbWUKKyAq
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgdXNlciBzdHlsZSBzaGVldCBpcyBhZGRl
ZCB0byB0aGUgcGFnZSBncm91cCwgb3IKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9h
ZGQoRXdrX1BhZ2VfR3JvdXAgKnBhZ2VfZ3JvdXAsIGNvbnN0IGNoYXIgKnNvdXJjZSwgY29uc3Qg
Y2hhciAqYmFzZV91cmwsIEVpbmFfTGlzdCAqd2hpdGVsaXN0LCBFaW5hX0xpc3QgKmJsYWNrbGlz
dCwgRWluYV9Cb29sIG1haW5fZnJhbWVfb25seSk7CisKKy8qKgorICogUmVtb3ZlIGFsbCB0aGUg
dXNlciBzdHlsZSBzaGVldHMgZnJvbSB0aGlzIHBhZ2UgZ3JvdXAuCisgKgorICogQHBhcmFtIHBh
Z2VfZ3JvdXAgcGFnZSBncm91cCBvYmplY3QgdG8gcmVtb3ZlIGFsbCB0aGUgdXNlciBzdHlsZSBz
aGVldHMKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBhbGwgdGhlIHVzZXIgc3R5bGUg
c2hlZXQgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSBncm91cCwgb3IKKyAqICAgICAgICAgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBf
dXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbChFd2tfUGFnZV9Hcm91cCAqcGFnZV9ncm91cCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfcGFnZV9n
cm91cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
cGFnZV9ncm91cF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfcGFnZV9ncm91cF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ0ZjI1MGU3YmVkNWRiZWQ3YjUy
ZGJhMDUxZjQ0MDZmNGMzNmYxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZhdGUuaApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZV9o
CisjZGVmaW5lIGV3a19wYWdlX2dyb3VwX3ByaXZhdGVfaAorCisjaW5jbHVkZSAiZXdrX29iamVj
dF9wcml2YXRlLmgiCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworY2xhc3MgRXdrVmlldzsKKworY2xhc3MgRXdrUGFnZUdyb3VwIDogcHVibGljIEV3
a09iamVjdCB7CitwdWJsaWM6CisgICAgRVdLX09CSkVDVF9ERUNMQVJFKEV3a1BhZ2VHcm91cCkK
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gY3JlYXRlKFdLUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cFJlZikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdr
UGFnZUdyb3VwKHBhZ2VHcm91cFJlZikpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEV3a1BhZ2VHcm91cD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrUGFnZUdyb3VwKGlkZW50aWZpZXIpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IGRlZmF1bHRQYWdlR3Jv
dXAoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tQYWdlR3JvdXAoImRl
ZmF1bHRQYWdlR3JvdXBJZGVudGlmaWVyIikpOworICAgIH0KKworICAgIFdLUGFnZUdyb3VwUmVm
IHdrUGFnZUdyb3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXBSZWYuZ2V0KCk7IH0KKworICAgIHZv
aWQgYWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTCwgRWluYV9MaXN0KiB3aGl0ZWxpc3QsIEVpbmFfTGlzdCogYmxhY2tsaXN0LCBib29s
IG1haW5GcmFtZU9ubHkpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgRXdrUGFnZUdyb3VwKFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZik7CisgICAgZXhwbGljaXQgRXdrUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRp
Zmllcik7CisKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gbV9wYWdlR3JvdXBSZWY7
Cit9OworCisjZW5kaWYgLy8gZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggNGYxYTEzMWQyNWQ3NDM1
NGRlMGJlOTNmMWJiYjNkNjhmOTcxN2UzYi4uN2FlMThjN2YzOGVjZDVjNzUzOWUzYWIzODkwYmM4
ZjMzYWZmMzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5j
bHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFi
YXNlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgorI2luY2x1ZGUgImV3
a19wYWdlX2dyb3VwX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19zZXR0aW5nc19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgpAQCAt
ODYsOSArODgsOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfY2xhc3Nfc2V0KEV3a19WaWV3
X1NtYXJ0X0NsYXNzKiBhcGkpCiAgICAgcmV0dXJuIEV3a1ZpZXc6OmluaXRTbWFydENsYXNzSW50
ZXJmYWNlKCphcGkpOwogfQogCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMq
IGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjb250ZXh0KQorRXZhc19P
YmplY3QqIGV3a192aWV3X3NtYXJ0X2FkZChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0
LCBFd2tfQ29udGV4dCogY29udGV4dCwgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCkKIHsKLSAg
ICByZXR1cm4gRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChjYW52YXMsIHNtYXJ0LCBld2tfb2Jq
ZWN0X2Nhc3Q8RXdrQ29udGV4dCo+KGNvbnRleHQpKTsKKyAgICByZXR1cm4gRXdrVmlldzo6Y3Jl
YXRlRXZhc09iamVjdChjYW52YXMsIHNtYXJ0LCBld2tfb2JqZWN0X2Nhc3Q8RXdrQ29udGV4dCo+
KGNvbnRleHQpLCBld2tfb2JqZWN0X2Nhc3Q8RXdrUGFnZUdyb3VwKj4ocGFnZUdyb3VwKSk7CiB9
CiAKIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KEV2YXMqIGNhbnZhcywg
RXdrX0NvbnRleHQqIGNvbnRleHQpCkBAIC0xMDgsNiArMTEwLDEzIEBAIEV3a19Db250ZXh0KiBl
d2tfdmlld19jb250ZXh0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICByZXR1
cm4gaW1wbC0+ZXdrQ29udGV4dCgpOwogfQogCitFd2tfUGFnZV9Hcm91cCogZXdrX3ZpZXdfcGFn
ZV9ncm91cF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdf
SU1QTF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIDApOworCisgICAgcmV0dXJuIGltcGwt
PmV3a1BhZ2VHcm91cCgpOworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJsX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgY2hhciogdXJsKQogewogICAgIEVXS19WSUVXX0lNUExfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA1YjkyM2M0MmM2NmJlYWMxZmFlMjQ0NzVmNjIy
M2ZiNjJkMmNjZDEzLi5jZDBkMzE3NjNjYjMwNGJmYzE5M2YyMDc2Y2EyZmQxYTY5MTdiZDY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTgwLDYg
KzgwLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX2Rv
d25sb2FkX2pvYi5oIgogI2luY2x1ZGUgImV3a19lcnJvci5oIgorI2luY2x1ZGUgImV3a19wYWdl
X2dyb3VwLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnUuaCIKICNpbmNsdWRlICJld2tfc2Vj
dXJpdHlfb3JpZ2luLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgiCkBAIC0zMTYsMTAgKzMx
NywxMSBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgKmFwaSk7CiAgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNy
ZWF0ZSB0aGUgdmlldyBvYmplY3QKICAqIEBwYXJhbSBzbWFydCBFdmFzX1NtYXJ0IG9iamVjdC4g
SXRzIHR5cGUgc2hvdWxkIGJlIEVXS19WSUVXX1RZUEVfU1RSCiAgKiBAcGFyYW0gY29udGV4dCBF
d2tfQ29udGV4dCBvYmplY3Qgd2hpY2ggaXMgdXNlZCBmb3IgaW5pdGlhbGl6aW5nCisgKiBAcGFy
YW0gcGFnZUdyb3VwIEV3a19QYWdlX0dyb3VwIG9iamVjdCB3aGljaCBpcyB1c2VkIGZvciBpbml0
aWFsaXppbmcKICAqCiAgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVM
TCBvbiBmYWlsdXJlCiAgKi8KLUVBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X3NtYXJ0X2FkZChF
dmFzICplLCBFdmFzX1NtYXJ0ICpzbWFydCwgRXdrX0NvbnRleHQgKmNvbnRleHQpOworRUFQSSBF
dmFzX09iamVjdCAqZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMgKmUsIEV2YXNfU21hcnQgKnNtYXJ0
LCBFd2tfQ29udGV4dCAqY29udGV4dCwgRXdrX1BhZ2VfR3JvdXAgKnBhZ2VHcm91cCk7CiAKIC8q
KgogICogQ3JlYXRlcyBhIG5ldyBFRkwgV2ViS2l0IHZpZXcgb2JqZWN0LgpAQCAtMzUwLDYgKzM1
MiwxNSBAQCBFQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KEV2YXMg
KmUsIEV3a19Db250ZXh0ICpjb250ZXh0KTsKIEVBUEkgRXdrX0NvbnRleHQgKmV3a192aWV3X2Nv
bnRleHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCisgKiBHZXRzIHRoZSBFd2tf
UGFnZV9Hcm91cCBvZiB0aGlzIHZpZXcuCisgKgorICogQHBhcmFtIG8gdGhlIHZpZXcgb2JqZWN0
IHRvIGdldCB0aGUgRXdrX1BhZ2VfR3JvdXAKKyAqCisgKiBAcmV0dXJuIHRoZSBFd2tfUGFnZV9H
cm91cCBvZiB0aGlzIHZpZXcgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRXdrX1Bh
Z2VfR3JvdXAgKmV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
KworLyoqCiAgKiBBc2tzIHRoZSBvYmplY3QgdG8gbG9hZCB0aGUgZ2l2ZW4gVVJMLgogICoKICAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGxvYWQgQGEgVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVz
dEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAppbmRleCBlNjRmNGNjNzc1MzYyMmQ3NTg0MWY4
MTQ2ODhlYTUyZWJmYzY1MjQxLi42ZThiYWUyZDcwNmE3YmU0MzllZDg5NDNiMjcxNjcyZWMxYTI5
YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAK
QEAgLTYxLDExICs2MSwxNCBAQCB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKICAgICBF
dmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZtX2V3a1ZpZXdDbGFzcy5z
Yyk7CiAKICAgICBFd2tfQ29udGV4dCogbmV3Q29udGV4dCA9IGV3a19jb250ZXh0X25ldygpOwot
ICAgIG1fd2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgbmV3Q29udGV4
dCk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIG5ld1BhZ2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2Ny
ZWF0ZSgiVW5pdFRlc3QiKTsKKyAgICBtX3dlYlZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZh
cywgc21hcnQsIG5ld0NvbnRleHQsIG5ld1BhZ2VHcm91cCk7CisKICAgICAvLyBDbGVhciBIVFRQ
IGNhY2hlIGZpbGVzIGJlZm9yZSBydW5uaW5nIHRoZSB1bml0IHRlc3RzLCB3aGljaCBwcmV2ZW50
cyAKICAgICAvLyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBkdWUgdG8gc28gbWFueSBjYWNoZSBm
aWxlcy4KICAgICBld2tfY29udGV4dF9yZXNvdXJjZV9jYWNoZV9jbGVhcihuZXdDb250ZXh0KTsK
ICAgICBld2tfb2JqZWN0X3VucmVmKG5ld0NvbnRleHQpOworICAgIGV3a19vYmplY3RfdW5yZWYo
bmV3UGFnZUdyb3VwKTsKIAogICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZpZXcsIGVudmly
b25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VW5pdFRlc3RCYXNlLmgKaW5kZXggYmQ1ZTRiOTk1ODVmZDg5YTc3N2JhMDdjNDAxZDFjZWYzMTkz
Yjg3YS4uNTkyNGJlNjQxZmNkN2NiYjVhNjVmZTkxMzNlZmIzMzgyNzAxMzU5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0syVW5pdFRlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKQEAgLTM1LDYgKzM1LDcgQEAg
cHVibGljOgogICAgIEVjb3JlX0V2YXMqIGJhY2tpbmdTdG9yZSgpIHsgcmV0dXJuIG1fZWNvcmVF
dmFzOyB9CiAgICAgRXZhcyogY2FudmFzKCkgeyByZXR1cm4gZWNvcmVfZXZhc19nZXQobV9lY29y
ZUV2YXMpOyB9CiAgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7
IH0KKyAgICB2b2lkIHNldFdlYlZpZXcoRXZhc19PYmplY3QqIHdlYlZpZXcpIHsgbV93ZWJWaWV3
ID0gd2ViVmlldzsgfQogICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBld2tWaWV3Q2xhc3MoKSB7
IHJldHVybiAmbV9ld2tWaWV3Q2xhc3M7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3BhZ2VfZ3JvdXAu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Bh
Z2VfZ3JvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZWM3YjEwMGQ4Zjg1NTVjMDMzMmNkYWIzZWMxNmE3
M2ZiMmQ1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAKQEAgLTAsMCArMSwxMjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVW5p
dFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5p
dFRlc3Q7CisKK2V4dGVybiBFV0syVW5pdFRlc3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7CisK
K3N0YXRpYyBjb25zdCBjaGFyIGh0bWxTdHJpbmdbXSA9ICI8aHRtbD48aGVhZD48dGl0bGU+Rm9v
PC90aXRsZT48L2hlYWQ+PGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZCc+PHNjcmlw
dD5kb2N1bWVudC50aXRsZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5LCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJyk8L3NjcmlwdD5IRUxMTzwv
Ym9keT48L2h0bWw+IjsKK3N0YXRpYyBjb25zdCBjaGFyIHVzZXJTdHlsZVNoZWV0W10gPSAiYm9k
eSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7IH0iOworc3RhdGljIGNvbnN0
IGNoYXIgZ3JlZW5JblJHQltdID0gInJnYigwLCAxMjgsIDApIjsKK3N0YXRpYyBjb25zdCBjaGFy
IHJlZEluUkdCW10gPSAicmdiKDI1NSwgMCwgMCkiOworCisKK1RFU1RfRihFV0syVW5pdFRlc3RC
YXNlLCBld2tfcGFnZV9ncm91cCkKK3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21h
cnRfY2xhc3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAq
IHBhZ2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9U
UlVFKHBhZ2VHcm91cCk7CisKKyAgICBFdmFzX09iamVjdCogbmV3V2ViVmlldyA9IGV3a192aWV3
X3NtYXJ0X2FkZChjYW52YXMoKSwgc21hcnQsIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCksIHBh
Z2VHcm91cCk7CisgICAgc2V0V2ViVmlldyhuZXdXZWJWaWV3KTsKKworICAgIEFTU0VSVF9FUShw
YWdlR3JvdXAsIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG5ld1dlYlZpZXcpKTsKKyAgICBld2tf
b2JqZWN0X3VucmVmKHBhZ2VHcm91cCk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBl
d2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZF9iZWZvcmVfY3JlYXRpbmdfdmlldykK
K3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmll
d0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdl
X2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAg
ICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3VwIGJlZm9yZSBjcmVh
dGluZyBhIHZpZXcKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdl
R3JvdXAsIHVzZXJTdHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsKKworICAgIC8vIENyZWF0ZSBh
IG5ldyB3ZWIgdmlldyB3aXRoIHRoaXMgcGFnZSBncm91cAorICAgIEV2YXNfT2JqZWN0KiBuZXdX
ZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGNhbnZhcygpLCBzbWFydCwgZXdrX2NvbnRleHRf
ZGVmYXVsdF9nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3KG5ld1dlYlZpZXcpOwor
CisgICAgZXdrX29iamVjdF91bnJlZihwYWdlR3JvdXApOworICAgIGV3a192aWV3X3RoZW1lX3Nl
dCh3ZWJWaWV3KCksIGVudmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CisgICAgZXZhc19vYmpl
Y3RfcmVzaXplKHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRXaWR0aCgpLCBlbnZpcm9u
bWVudC0+ZGVmYXVsdEhlaWdodCgpKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdlYlZpZXcoKSk7
CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdlYlZpZXcoKSwgdHJ1ZSk7CisKKyAgICBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisgICAg
QVNTRVJUX1RSVUUod2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oZ3JlZW5JblJHQikpOworfQorCitU
RVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9h
ZGRfYWZ0ZXJfY3JlYXRpbmdfdmlldykKK3sKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0
IHRvIHRoZSBwYWdlIGdyb3VwIGFmdGVyIGNyZWF0aW5nIGEgdmlldworICAgIEV3a19QYWdlX0dy
b3VwKiBwYWdlR3JvdXAgPSBld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOworICAg
IEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9z
aGVldF9hZGQocGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisKKyAg
ICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7
CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oZ3JlZW5JblJHQikpOwor
fQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9z
aGVldHNfcmVtb3ZlX2FsbCkKK3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRf
Y2xhc3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBh
Z2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVF
KHBhZ2VHcm91cCk7CisKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdl
IGdyb3VwIGJlZm9yZSBjcmVhdGluZyBhIHZpZXcKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0
eWxlX3NoZWV0X2FkZChwYWdlR3JvdXAsIHVzZXJTdHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsK
KworICAgIC8vIENyZWF0ZSBhIG5ldyB3ZWIgdmlldyB3aXRoIHRoaXMgcGFnZSBncm91cAorICAg
IEV2YXNfT2JqZWN0KiBuZXdXZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGNhbnZhcygpLCBz
bWFydCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBzZXRXZWJW
aWV3KG5ld1dlYlZpZXcpOworCisgICAgZXdrX29iamVjdF91bnJlZihwYWdlR3JvdXApOworICAg
IGV3a192aWV3X3RoZW1lX3NldCh3ZWJWaWV3KCksIGVudmlyb25tZW50LT5kZWZhdWx0VGhlbWUo
KSk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1
bHRXaWR0aCgpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdEhlaWdodCgpKTsKKyAgICBldmFzX29iamVj
dF9zaG93KHdlYlZpZXcoKSk7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdlYlZpZXcoKSwg
dHJ1ZSk7CisKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0
cmluZywgMCwgMCk7CisKKyAgICAvLyBSZW1vdmUgYWxsIHVzZXIgc3R5bGUgc2hlZXRzIGluIHRo
ZSBwYWdlIGdyb3VwCisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3Zl
X2FsbChld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpKTsKKyAgICBBU1NFUlRfVFJV
RSh3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhyZWRJblJHQikpOworICAgIAorCisgICAgLy8gQWRk
IGEgdXNlciBzdHlsZSBzaGVldCB0byB0aGUgcGFnZSBncm91cCBhZnRlciBjcmVhdGluZyBhIHZp
ZXcKKyAgICBwYWdlR3JvdXAgPSBld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOwor
ICAgIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwgdXNlclN0
eWxlU2hlZXQsIDAsIDAsIDAsIHRydWUpOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQo
d2ViVmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKworICAgIC8vIFJlbW92ZSBhbGwgdXNlciBz
dHlsZSBzaGVldHMgaW4gdGhlIHBhZ2UgZ3JvdXAKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0
eWxlX3NoZWV0c19yZW1vdmVfYWxsKGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSkp
OworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKHJlZEluUkdCKSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggOWUyM2U1ZmUzMjg0ZTYxMDVmN2E0MTg5ZmFhMjM4Y2M2
N2Q2M2RkMi4uZTQxODNlZTI4M2UzOTIyODBhMjY2NWQ1ODQyMmNkODMxZmFjMmJlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3Rf
ZXdrMl92aWV3LmNwcApAQCAtNTU3LDYgKzU1NywxMyBAQCBURVNUX0YoRVdLMlVuaXRUZXN0QmFz
ZSwgZXdrX3ZpZXdfY29udGV4dF9nZXQpCiAgICAgQVNTRVJUX0VRKGNvbnRleHQsIGV3a192aWV3
X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSkpOwogfQogCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwg
ZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQpCit7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91
cCA9IGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSk7CisgICAgQVNTRVJUX1RSVUUo
cGFnZUdyb3VwKTsKKyAgICBBU1NFUlRfRVEocGFnZUdyb3VwLCBld2tfdmlld19wYWdlX2dyb3Vw
X2dldCh3ZWJWaWV3KCkpKTsKK30KKwogVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3
X2ZlZWRfdG91Y2hfZXZlbnQpCiB7CiAgICAgRWluYV9MaXN0KiBwb2ludHMgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNw
cAppbmRleCBmYTJlMDhkNjEwYWVmZDdhZGM0M2YxYWQ2OWRmYWM4ZTI5NTNjYTUyLi5kNzU4MDAx
ZTY5MjMzNWE1NDQ1YjZiZjdhNGNmOTE2MWNmM2RjYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2Vf
Z3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3
a192aWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FZmxJbnNwZWN0b3JVdGlsaXRpZXMuaD4KQEAg
LTEwMCw3ICsxMDEsOCBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRvIHVzZSBX
S1ZpZXdSZWYuCiAgICAgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYgPSB0b0FQSShwYWdlKCktPnBy
b2Nlc3MoKS0+Y29udGV4dCgpKTsKLSAgICBtX2luc3BlY3RvclZpZXcgPSBFd2tWaWV3OjpjcmVh
dGVFdmFzT2JqZWN0KGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgRXdrQ29udGV4
dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCB0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSksIEV3a1Zp
ZXc6OkxlZ2FjeUJlaGF2aW9yKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBFd2tWaWV3OjpjcmVh
dGVFdmFzT2JqZWN0KGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgRXdrQ29udGV4
dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCBFd2tQYWdlR3JvdXA6OmNyZWF0ZSh0b0FQSShpbnNwZWN0
b3JQYWdlR3JvdXAoKSkpLCBFd2tWaWV3OjpMZWdhY3lCZWhhdmlvcik7CisKICAgICBpZiAoIW1f
aW5zcGVjdG9yVmlldykKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZTQyNTlmZmE1M2RmOGU2OTA2YzZjNDRl
ZjJiNjVlNjA3MTM1NjRkLi43MDlmOTU0MDFhZjMwM2I4MTA3YmJjY2JkNGJhZTZmY2YzMzc1OWIy
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTMtMDItMjQgIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGFuIEFQSSBmb3IgYWRkaW5nIGFuZCBy
ZW1vdmluZyB1c2VyIHN0eWxlIHNoZWV0cyBmcm9tIGEgcGFnZSBncm91cAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBwYWdlIGdyb3VwIHRv
IGNyZWF0ZSB0aGUgdmlldyBvYmplY3QuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFp
bi5jOgorICAgICAgICAod2luZG93X2NyZWF0ZSk6CisKIDIwMTMtMDItMjQgIEd1c3Rhdm8gTm9y
b25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gR1RLKyAyIGJ1aWxk
IGJyb2tlbiBzaW5jZSBHVEtfQVBJX1ZFUlNJT05fMiBtb3ZlZCB0byBhdXRvY29uZmlnLmgKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9lZmwvbWFpbi5jCmluZGV4IGNlODE2ZWVhOGUyYWE3N2FlM2QzYjYwNzU3MzZjZDk4MTFlMWM0
MzkuLjJlZWZmOTc5ZTU4OWNmZGViNDcyNTU4NzM4MmI1OTdkOWZlOGY3NDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZs
L21haW4uYwpAQCAtMTE4Nyw4ICsxMTg3LDkgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5k
b3dfY3JlYXRlKEV2YXNfT2JqZWN0ICpvcGVuZXIsIGNvbnN0IGNoYXIgKnVybCwgaW50IHcKICAg
ICAgICAgd2luZG93LT5ld2tfdmlldyA9IChFdmFzX09iamVjdCopV0tWaWV3Q3JlYXRlKGV2YXMs
IDAsIDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19z
bWFydF9jbGFzc19uZXcoJmV3a1ZpZXdDbGFzcy0+c2MpOwotICAgICAgICBFd2tfQ29udGV4dCog
Y29udGV4dCA9IG9wZW5lciA/IGV3a192aWV3X2NvbnRleHRfZ2V0KG9wZW5lcikgOiBld2tfY29u
dGV4dF9kZWZhdWx0X2dldCgpOwotICAgICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3ZpZXdf
c21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBjb250ZXh0KTsKKyAgICAgICAgRXdrX0NvbnRleHQgKmNv
bnRleHQgPSBvcGVuZXIgPyBld2tfdmlld19jb250ZXh0X2dldChvcGVuZXIpIDogZXdrX2NvbnRl
eHRfZGVmYXVsdF9nZXQoKTsKKyAgICAgICAgRXdrX1BhZ2VfR3JvdXAgKnBhZ2VHcm91cCA9IG9w
ZW5lciA/IGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG9wZW5lcikgOiBld2tfcGFnZV9ncm91cF9j
cmVhdGUoMCk7CisgICAgICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSBld2tfdmlld19zbWFydF9hZGQo
ZXZhcywgc21hcnQsIGNvbnRleHQsIHBhZ2VHcm91cCk7CiAgICAgfQogICAgIGV3a192aWV3X3Ro
ZW1lX3NldCh3aW5kb3ctPmV3a192aWV3LCBUSEVNRV9ESVIgIi9kZWZhdWx0LmVkaiIpOwogICAg
IGlmIChkZXZpY2VfcGl4ZWxfcmF0aW8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190432</attachid>
            <date>2013-02-26 20:30:00 -0800</date>
            <delta_ts>2013-03-03 17:10:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130227132612.patch</filename>
            <type>text/plain</type>
            <size>36325</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjljMDQ3YTM3ZWMzMjMz
YzlhOWJlZDdkZTc5YzU2YWE5YTg5ZTZmMi4uMjMyZjlkMTNlZTJlODhiMWViYTkzZTk1YTI0MDZj
N2M3NWNhMjY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAyLTI0ICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFjY29yZGluZyB0byB0aGUgQ1NTMi4xIHNwZWMsIHRoZSB1c2VyIG1heSBiZSBhYmxl
IHRvIHNwZWNpZnkgc3R5bGUgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBkb2N1bWVudC4K
KyAgICAgICAgU28gdGhpcyBwYXRjaCBwcm92aWRlcyBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVt
b3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJvbSBhIHBhZ2UgZ3JvdXAuCisgICAgICAgIEFsc28g
aXQgaW1wbGVtZW50cyBFd2tQYWdlR3JvdXAgQVBJIGFzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRo
ZSBhcHBsaWNhdGlvbnMgYW5kIFdLUGFnZUdyb3VwIEFQSS4KKworICAgICAgICAqIFBsYXRmb3Jt
RWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAg
ICAgICAgKGNyZWF0ZVdLVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktp
dDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAgICAgICAg
KEV3a1ZpZXc6OkV3a1ZpZXcpOgorICAgICAgICAoRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAoRXdrVmll
dzo6ZXdrUGFnZUdyb3VwKToKKyAgICAgICAgKEV3a1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKGV3a19jb250ZXh0X3Jlc291cmNl
X2NhY2hlX2NsZWFyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6
CisgICAgICAgIChld2tfdmlld19zbWFydF9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV9n
cm91cF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RC
YXNlLmNwcDoKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVu
aXRUZXN0QmFzZS5oOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpz
ZXRXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKwogMjAxMy0wMi0yNCAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGluY2x1ZGUgZ3JhcGgg
b2YgSlNET01CaW5kaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggN2ZhNGVjOTc1
MWI0ZjQxZjI4NGMxMzhiODU5YWJiOTA4ODVkZGJjZS4uYjE1M2RmMWU1ZWE0OTcwNzg0NWM1NWRm
N2Q4NzcwMDQxZWYyYzFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTcwLDYgKzcw
LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVj
dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZWN1cml0
eV9vcmlnaW4uY3BwCkBAIC0yODMsNiArMjg0LDcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAg
ICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mYXZp
Y29uX2RhdGFiYXNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZmlsZV9jaG9vc2VyX3JlcXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVx
dWVzdC5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3BhZ2VfZ3JvdXAuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAgICAgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24uaCIKQEAgLTM4NCw2ICszODYsNyBAQCBzZXQoRVdLMlVuaXRUZXN0c19C
SU5BUklFUwogICAgIHRlc3RfZXdrMl9mYXZpY29uX2RhdGFiYXNlCiAgICAgdGVzdF9ld2syX2Zp
bGVfY2hvb3Nlcl9yZXF1ZXN0CiAgICAgdGVzdF9ld2syX29iamVjdAorICAgIHRlc3RfZXdrMl9w
YWdlX2dyb3VwCiAgICAgdGVzdF9ld2syX3BvcHVwX21lbnUKICAgICB0ZXN0X2V3azJfcmVmcHRy
X2V2YXNfb2JqZWN0CiAgICAgdGVzdF9ld2syX3NldHRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKaW5kZXggMTc3OTExZmIyMzM5MmJlMmRlZjgz
NGMzNWNkNjViMmM2MDBiODkzOS4uNjVmMjY5YTcxY2ZkMWUwY2E5MmVjOGFkNzNmZDlmOGEzNzU1
YWExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0zMSw3ICszMiw5IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiBzdGF0aWMgaW5saW5lIFdLVmlld1JlZiBjcmVhdGVXS1ZpZXcoRXZhcyog
Y2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmLCBFd2tWaWV3OjpWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAgICAgUmVmUHRyPEV3a0Nv
bnRleHQ+IGNvbnRleHQgPSBjb250ZXh0UmVmID8gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRS
ZWYpIDogRXdrQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKTsKLSAgICBFdmFzX09iamVjdCogZXZh
c09iamVjdCA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBjb250ZXh0LCBwYWdl
R3JvdXBSZWYsIGJlaGF2aW9yKTsKKyAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAg
PSBwYWdlR3JvdXBSZWYgPyBFd2tQYWdlR3JvdXA6OmNyZWF0ZShwYWdlR3JvdXBSZWYpIDogRXdr
UGFnZUdyb3VwOjpjcmVhdGUoU3RyaW5nKCkpOworCisgICAgRXZhc19PYmplY3QqIGV2YXNPYmpl
Y3QgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgY29udGV4dCwgcGFnZUdyb3Vw
LCBiZWhhdmlvcik7CiAgICAgaWYgKCFldmFzT2JqZWN0KQogICAgICAgICByZXR1cm4gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggM2EyODY1
ZWU3OTMxZTVkMWQ0ZDMwZGZlNTAwOTZmNzRjZjRmZGQ1My4uYTljOGExNGU3OGIxZmVlNjkxOTU5
Y2QyY2I3MmE1MDVlZmRiZTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25f
ZGF0YS5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2lu
Y2x1ZGUgImV3a19vYmplY3QuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1
ZGUgImV3a19wb3B1cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgog
I2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggOGYzNDM5YjkwMzZkMDlkZTkxMGE2MmE2NmRh
MWM1NWE0M2U2OGY4NS4uNTRkYWM2OGFmZjA2YzVhNTAwYjVmNjI0OTM5OWY4NDJlYWMyODNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTUz
LDYgKzUzLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJh
c2VfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBf
bWVudV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKQEAgLTIyOCwxMSArMjI5
LDEyIEBAIHZvaWQgRXdrVmlld0V2ZW50SGFuZGxlcjxFVkFTX0NBTExCQUNLX0hJREU+OjpoYW5k
bGVFdmVudCh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhCiAKIC8vIEV3a1ZpZXcgaW1wbGVtZW50YXRp
b24uCiAKLUV3a1ZpZXc6OkV3a1ZpZXcoRXZhc19PYmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQ
dHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBWaWV3QmVo
YXZpb3IgYmVoYXZpb3IpCitFd2tWaWV3OjpFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0
LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3Vw
PiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKICAgICA6IG1fZXZhc09iamVjdChl
dmFzT2JqZWN0KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3BhZ2VHcm91cChw
YWdlR3JvdXApCiAgICAgLCBtX3BlbmRpbmdTdXJmYWNlUmVzaXplKGZhbHNlKQotICAgICwgbV93
ZWJWaWV3KGFkb3B0UmVmKG5ldyBXZWJWaWV3KHRvSW1wbChtX2NvbnRleHQtPndrQ29udGV4dCgp
KSwgdG9JbXBsKHBhZ2VHcm91cCksIHRoaXMpKSkKKyAgICAsIG1fd2ViVmlldyhhZG9wdFJlZihu
ZXcgV2ViVmlldyh0b0ltcGwobV9jb250ZXh0LT53a0NvbnRleHQoKSksIHRvSW1wbChtX3BhZ2VH
cm91cC0+d2tQYWdlR3JvdXAoKSksIHRoaXMpKSkKICAgICAsIG1fcGFnZUxvYWRDbGllbnQoUGFn
ZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQ
YWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQ
YWdlVUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKQEAgLTMwMCw3ICszMDIsNyBAQCBFd2tWaWV3
Ojp+RXdrVmlldygpCiAgICAgaWNvbkRhdGFiYXNlLT51bndhdGNoQ2hhbmdlcyhFd2tWaWV3Ojpo
YW5kbGVGYXZpY29uQ2hhbmdlZCk7CiB9CiAKLUV2YXNfT2JqZWN0KiBFd2tWaWV3OjpjcmVhdGVF
dmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdr
Q29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IpCitFdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFz
KiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRl
eHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhh
dmlvcikKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnQsIDApOwpAQCAtMzE3LDE1
ICszMTksMTcgQEAgRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyog
Y2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlAKIAogICAgIEFTU0VSVCghc21hcnRE
YXRhLT5wcml2KTsKIAotICAgIC8vIERlZmF1bHQgV2ViUGFnZUdyb3VwIGlzIGNyZWF0ZWQgaW4g
V2ViQ29udGV4dCBjb25zdHJ1Y3RvciBpZiB0aGUgcGFnZUdyb3VwUmVmIGlzIDAsCi0gICAgLy8g
c28gd2UgZG8gbm90IG5lZWQgdG8gY3JlYXRlIGl0IGhlcmUuCi0gICAgc21hcnREYXRhLT5wcml2
ID0gbmV3IEV3a1ZpZXcoZXZhc09iamVjdCwgY29udGV4dCwgcGFnZUdyb3VwUmVmLCBiZWhhdmlv
cik7CisgICAgaWYgKCFwYWdlR3JvdXApCisgICAgICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBF
d2tWaWV3KGV2YXNPYmplY3QsIGNvbnRleHQsIEV3a1BhZ2VHcm91cDo6Y3JlYXRlKFN0cmluZygp
KSwgYmVoYXZpb3IpOworICAgIGVsc2UKKyAgICAgICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3
a1ZpZXcoZXZhc09iamVjdCwgY29udGV4dCwgcGFnZUdyb3VwLCBiZWhhdmlvcik7CisKICAgICBy
ZXR1cm4gZXZhc09iamVjdDsKIH0KIAotRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNP
YmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQorRXZhc19PYmpl
Y3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3
a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZp
ZXdCZWhhdmlvciBiZWhhdmlvcikKIHsKLSAgICByZXR1cm4gY3JlYXRlRXZhc09iamVjdChjYW52
YXMsIGRlZmF1bHRTbWFydENsYXNzSW5zdGFuY2UoKSwgY29udGV4dCwgcGFnZUdyb3VwUmVmLCBi
ZWhhdmlvcik7CisgICAgcmV0dXJuIGNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBkZWZhdWx0U21h
cnRDbGFzc0luc3RhbmNlKCksIGNvbnRleHQsIHBhZ2VHcm91cCwgYmVoYXZpb3IpOwogfQogCiBi
b29sIEV3a1ZpZXc6OmluaXRTbWFydENsYXNzSW50ZXJmYWNlKEV3a19WaWV3X1NtYXJ0X0NsYXNz
JiBhcGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXgg
NzFkYWQyZDU3YTcwMWU2ZjU5MmMzYzY2N2M0ODEzNDU3ODBlMTc1Mi4uNDhiZTA4MWRlYzhmNjAz
MDQ2ZWZhMGM4MWU5N2U1YWZiZmJhYTU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXcuaApAQCAtODcsNiArODcsNyBAQCBjbGFzcyBFd2tDb250ZXh0OwogY2xh
c3MgRXdrQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgRXdrQ29sb3JQaWNrZXI7CiBjbGFzcyBFd2tD
b250ZXh0TWVudTsKK2NsYXNzIEV3a1BhZ2VHcm91cDsKIGNsYXNzIEV3a1BvcHVwTWVudTsKIGNs
YXNzIEV3a1NldHRpbmdzOwogY2xhc3MgRXdrV2luZG93RmVhdHVyZXM7CkBAIC0xMDYsOCArMTA3
LDggQEAgcHVibGljOgogICAgICAgICBEZWZhdWx0QmVoYXZpb3IKICAgICB9OwogCi0gICAgc3Rh
dGljIEV2YXNfT2JqZWN0KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFy
dCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cFJlZiA9IDAsIFZpZXdCZWhhdmlvciBiZWhhdmlvciA9IEV3a1ZpZXc6OkRlZmF1
bHRCZWhhdmlvcik7Ci0gICAgc3RhdGljIEV2YXNfT2JqZWN0KiBjcmVhdGVFdmFzT2JqZWN0KEV2
YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYgPSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZh
dWx0QmVoYXZpb3IpOworICAgIHN0YXRpYyBFdmFzX09iamVjdCogY3JlYXRlRXZhc09iamVjdChF
dmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNv
bnRleHQsICBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwID0gMCwgVmlld0JlaGF2
aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2aW9yKTsKKyAgICBzdGF0aWMgRXZh
c19PYmplY3QqIGNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3a0Nv
bnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSAwLCBW
aWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZpb3IpOwogCiAgICAg
c3RhdGljIGJvb2wgaW5pdFNtYXJ0Q2xhc3NJbnRlcmZhY2UoRXdrX1ZpZXdfU21hcnRfQ2xhc3Mm
KTsKIApAQCAtMTIwLDYgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYktpdDo6V2ViUGFnZVBy
b3h5KiBwYWdlKCkgeyByZXR1cm4gbV93ZWJWaWV3LT5wYWdlKCk7IH0KICAgICBFd2tDb250ZXh0
KiBld2tDb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgRXdrUGFnZUdy
b3VwKiBld2tQYWdlR3JvdXAoKSB7cmV0dXJuIG1fcGFnZUdyb3VwLmdldCgpOyB9CiAgICAgRXdr
U2V0dGluZ3MqIHNldHRpbmdzKCkgeyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQogICAgIEV3
a0JhY2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0KCkgeyByZXR1cm4gbV9iYWNrRm9yd2Fy
ZExpc3QuZ2V0KCk7IH0KICAgICBFd2tXaW5kb3dGZWF0dXJlcyogd2luZG93RmVhdHVyZXMoKTsK
QEAgLTIxMyw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IHRha2VTbmFwc2hvdCgpOwogCiBwcml2YXRlOgotICAgIEV3a1ZpZXcoRXZhc19PYmplY3Qq
IGV2YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IpOworICAgIEV3a1ZpZXcoRXZhc19PYmplY3QqIGV2
YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxFd2tQ
YWdlR3JvdXA+IHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yKTsKICAgICB+RXdrVmlldygpOwogCiAg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCkgY29uc3Q7CkBAIC0yNTIsNiArMjU0
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBOb3RlLCBpbml0aWFsaXphdGlvbiBvcmRlciBtYXR0ZXJz
LgogICAgIEV2YXNfT2JqZWN0KiBtX2V2YXNPYmplY3Q7CiAgICAgUmVmUHRyPEV3a0NvbnRleHQ+
IG1fY29udGV4dDsKKyAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBtX3BhZ2VHcm91cDsKICAgICBP
d25QdHI8RXZhc19HTD4gbV9ldmFzR0w7CiAgICAgT3duUHRyPFdlYktpdDo6RXZhc0dMQ29udGV4
dD4gbV9ldmFzR0xDb250ZXh0OwogICAgIE93blB0cjxXZWJLaXQ6OkV2YXNHTFN1cmZhY2U+IG1f
ZXZhc0dMU3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wYWdlX2dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19wYWdlX2dyb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWZiYzVkMzZmMzdmMDAzNjViYjFiNjI3
YjA4MzNlMjI2YWUzMDk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9n
cm91cC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tBcnJheS5oIgor
I2luY2x1ZGUgIldLUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRl
ICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgV0tBcnJheVJlZiBjcmVhdGVX
S0FycmF5KEVpbmFfTGlzdCogYXJyYXkpCit7CisgICAgdW5zaWduZWQgY291bnQgPSBlaW5hX2xp
c3RfY291bnQoYXJyYXkpOworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybiBXS0FycmF5
UmVmKCk7CisKKyAgICBWZWN0b3I8V0tUeXBlUmVmPiBzdHJpbmdWZWN0b3I7CisgICAgc3RyaW5n
VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgRWluYV9MaXN0KiBs
ID0gMDsKKyAgICB2b2lkKiBkYXRhID0gMDsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChhcnJheSwg
bCwgZGF0YSkKKyAgICAgICAgc3RyaW5nVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSkpKTsKKworICAgIHJl
dHVybiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoc3RyaW5nVmVjdG9yLmRhdGEoKSwgY291
bnQpOworfQorCitFd2tQYWdlR3JvdXA6OkV3a1BhZ2VHcm91cChXS1BhZ2VHcm91cFJlZiBwYWdl
R3JvdXBSZWYpCisgICAgOiBtX3BhZ2VHcm91cFJlZihwYWdlR3JvdXBSZWYpCit7Cit9CisKK0V3
a1BhZ2VHcm91cDo6RXdrUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAg
ICBtX3BhZ2VHcm91cFJlZiA9IFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoYWRvcHRX
Syh0b0NvcGllZEFQSShpZGVudGlmaWVyKSkuZ2V0KCkpOworfQorCit2b2lkIEV3a1BhZ2VHcm91
cDo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTCwgRWluYV9MaXN0KiB3aGl0ZUxpc3QsIEVpbmFfTGlzdCogYmxhY2tMaXN0LCBib29s
IG1haW5GcmFtZU9ubHkpCit7CisgICAgQVNTRVJUKHNvdXJjZSk7CisKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tTb3VyY2UgPSBhZG9wdFdLKHRvQ29waWVkQVBJKHNvdXJjZSkpOwor
ICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a0Jhc2VVUkwgPSBhZG9wdFdLKHRvQ29waWVkVVJM
QVBJKGJhc2VVUkwpKTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1doaXRlbGlzdCA9
IGFkb3B0V0soY3JlYXRlV0tBcnJheSh3aGl0ZUxpc3QpKTsKKyAgICBXS1JldGFpblB0cjxXS0Fy
cmF5UmVmPiB3a0JsYWNrbGlzdCA9IGFkb3B0V0soY3JlYXRlV0tBcnJheShibGFja0xpc3QpKTsK
KyAgICBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMgPSBtYWluRnJh
bWVPbmx5ID8ga1dLSW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBrV0tJbmplY3RJbkFsbEZyYW1lczsK
KworICAgIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQobV9wYWdlR3JvdXBSZWYuZ2V0KCks
IHdrU291cmNlLmdldCgpLCB3a0Jhc2VVUkwuZ2V0KCksIHdrV2hpdGVsaXN0LmdldCgpLCB3a0Js
YWNrbGlzdC5nZXQoKSwgaW5qZWN0ZWRGcmFtZXMpOworfQorCit2b2lkIEV3a1BhZ2VHcm91cDo6
cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKK3sKKyAgICBXS1BhZ2VHcm91cFJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cyhtX3BhZ2VHcm91cFJlZi5nZXQoKSk7Cit9CisKK0V3a19QYWdlX0dyb3Vw
KiBld2tfcGFnZV9ncm91cF9jcmVhdGUoY29uc3QgY2hhciogaWRlbnRpZmllcikKK3sKKyAgICBy
ZXR1cm4gRXdrUGFnZUdyb3VwOjpjcmVhdGUoaWRlbnRpZmllcikubGVha1JlZigpOworfQorCitF
aW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQoRXdrX1BhZ2VfR3Jv
dXAqIGV3a1BhZ2VHcm91cCwgY29uc3QgY2hhciogc291cmNlLCBjb25zdCBjaGFyKiBiYXNlVVJM
LCBFaW5hX0xpc3QqIHdoaXRlTGlzdCwgRWluYV9MaXN0KiBibGFja0xpc3QsIEVpbmFfQm9vbCBt
YWluRnJhbWVPbmx5KQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a1BhZ2VH
cm91cCwgZXdrUGFnZUdyb3VwLCBpbXBsLCBmYWxzZSk7CisKKyAgICBpbXBsLT5hZGRVc2VyU3R5
bGVTaGVldChzb3VyY2UsIGJhc2VVUkwsIHdoaXRlTGlzdCwgYmxhY2tMaXN0LCBtYWluRnJhbWVP
bmx5KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBf
dXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbChFd2tfUGFnZV9Hcm91cCogZXdrUGFnZUdyb3Vw
KQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a1BhZ2VHcm91cCwgZXdrUGFn
ZUdyb3VwLCBpbXBsLCBmYWxzZSk7CisKKyAgICBpbXBsLT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVl
dHMoKTsKKworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRmOWY0Yjg4MDI0MzZi
YmMyMmM1ZDI3MGMxNWM2NjQ0NjViYTJlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmgKQEAgLTAsMCArMSw4OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19wYWdlX2dyb3VwLmgK
KyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFBhZ2UgR3JvdXAgQVBJLgorICovCisKKyNp
Zm5kZWYgZXdrX3BhZ2VfZ3JvdXBfaAorI2RlZmluZSBld2tfcGFnZV9ncm91cF9oCisKKyNpbmNs
dWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogRGVjbGFyZSBFd2tfUGFnZV9Hcm91cCBhcyBF
d2tfT2JqZWN0LgorICoKKyAqIEBzZWUgRXdrX09iamVjdAorICovCit0eXBlZGVmIHN0cnVjdCBF
d2tPYmplY3QgRXdrX1BhZ2VfR3JvdXA7CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBFd2tfUGFn
ZV9Hcm91cC4KKyAqCisgKiBUaGUgcmV0dXJuZWQgRXdrX1BhZ2VfR3JvdXAgb2JqZWN0IEBiIHNo
b3VsZCBiZSB1bnJlZidlZCBhZnRlciB1c2UuCisgKgorICogQHJldHVybiBFd2tfUGFnZV9Hcm91
cCBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3
a19vYmplY3RfdW5yZWYKKyAqLworRUFQSSBFd2tfUGFnZV9Hcm91cCAqZXdrX3BhZ2VfZ3JvdXBf
Y3JlYXRlKGNvbnN0IGNoYXIgKmlkZW50aWZpZXIpOworCisvKioKKyAqIEFkZHMgdGhlIHVzZXIg
c3R5bGUgc2hlZXQgdG8gdGhpcyBwYWdlIGdyb3VwLgorICoKKyAqIEBwYXJhbSBwYWdlX2dyb3Vw
IGV3a19wYWdlX2dvcnVwIG9iamVjdCB0byBhZGQgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBw
YXJhbSBzb3VyY2UgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJhbSB1cmwgYmFzZVVSTAor
ICogQHBhcmFtIHdoaXRlX2xpc3QgdXJsIGxpc3QgdG8gYWxsb3cgYWRkaW5nIHRoZSB1c2VyIHN0
eWxlIHNoZWV0CisgKiBAcGFyYW0gYmxhY2tfbGlzdCB1cmwgbGlzdCB0byBkaXNhbGxvdyBhZGRp
bmcgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJhbSBtYWluX2ZyYW1lX29ubHkgYSBzdGF0
ZSB0byBhcHBseSB0aGUgdXNlciBzdHlsZSBzaGVldCBvbmx5IHRvIHRoZSBtYWluZnJhbWUKKyAq
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgdXNlciBzdHlsZSBzaGVldCBpcyBhZGRl
ZCB0byB0aGUgcGFnZSBncm91cCwgb3IKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9h
ZGQoRXdrX1BhZ2VfR3JvdXAgKnBhZ2VfZ3JvdXAsIGNvbnN0IGNoYXIgKnNvdXJjZSwgY29uc3Qg
Y2hhciAqYmFzZV91cmwsIEVpbmFfTGlzdCAqd2hpdGVfbGlzdCwgRWluYV9MaXN0ICpibGFja19s
aXN0LCBFaW5hX0Jvb2wgbWFpbl9mcmFtZV9vbmx5KTsKKworLyoqCisgKiBSZW1vdmUgYWxsIHRo
ZSB1c2VyIHN0eWxlIHNoZWV0cyBmcm9tIHRoaXMgcGFnZSBncm91cC4KKyAqCisgKiBAcGFyYW0g
cGFnZV9ncm91cCBwYWdlIGdyb3VwIG9iamVjdCB0byByZW1vdmUgYWxsIHRoZSB1c2VyIHN0eWxl
IHNoZWV0cworICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGFsbCB0aGUgdXNlciBzdHls
ZSBzaGVldCBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwYWdlIGdyb3VwLCBvcgorICogICAgICAgICBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfcGFnZV9ncm91
cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKEV3a19QYWdlX0dyb3VwICpwYWdlX2dyb3Vw
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19wYWdl
X2dyb3VwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19wYWdlX2dyb3VwX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19wYWdlX2dyb3VwX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGVkM2RiNTY5ZjFiM2E5ZjEx
YmZmYzdiNTJlNzY0YzFkYmIwNTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcGFnZV9ncm91cF9wcml2YXRl
X2gKKyNkZWZpbmUgZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJld2tfb2Jq
ZWN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jh
c2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCitjbGFzcyBFd2tWaWV3OworCitzdGF0aWMgY29uc3QgY2hhciogZGVmYXVsdElk
ZW50aWZpZXIgPSAiZGVmYXVsdFBhZ2VHcm91cElkZW50aWZpZXIiOworCitjbGFzcyBFd2tQYWdl
R3JvdXAgOiBwdWJsaWMgRXdrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBFV0tfT0JKRUNUX0RFQ0xB
UkUoRXdrUGFnZUdyb3VwKQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBj
cmVhdGUoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBFd2tQYWdlR3JvdXAocGFnZUdyb3VwUmVmKSk7CisgICAgfQorCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIuaXNFbXB0eSgpID8gYWRv
cHRSZWYobmV3IEV3a1BhZ2VHcm91cChkZWZhdWx0SWRlbnRpZmllcikpIDogYWRvcHRSZWYobmV3
IEV3a1BhZ2VHcm91cChpZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgV0tQYWdlR3JvdXBSZWYg
d2tQYWdlR3JvdXAoKSB7IHJldHVybiBtX3BhZ2VHcm91cFJlZi5nZXQoKTsgfQorCisgICAgdm9p
ZCBhZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBFaW5hX0xpc3QqIHdoaXRlbGlzdCwgRWluYV9MaXN0KiBibGFja2xpc3QsIGJvb2wg
bWFpbkZyYW1lT25seSk7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBFd2tQYWdlR3JvdXAoV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmKTsKKyAgICBleHBsaWNpdCBFd2tQYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKTsKKworICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBtX3BhZ2VHcm91cFJlZjsK
K307CisKKyNlbmRpZiAvLyBld2tfcGFnZV9ncm91cF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA0ZjFhMTMxZDI1ZDc0MzU0
ZGUwYmU5M2YxYmJiM2Q2OGY5NzE3ZTNiLi43YWUxOGM3ZjM4ZWNkNWM3NTM5ZTNhYjM4OTBiYzhm
MzNhZmYzNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNs
dWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJh
c2VfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwLmgiCisjaW5jbHVkZSAiZXdr
X3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVk
ZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CkBAIC04
Niw5ICs4OCw5IEBAIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdrX1ZpZXdf
U21hcnRfQ2xhc3MqIGFwaSkKICAgICByZXR1cm4gRXdrVmlldzo6aW5pdFNtYXJ0Q2xhc3NJbnRl
cmZhY2UoKmFwaSk7CiB9CiAKLUV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyog
Y2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCitFdmFzX09i
amVjdCogZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQs
IEV3a19Db250ZXh0KiBjb250ZXh0LCBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwKQogewotICAg
IHJldHVybiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgc21hcnQsIGV3a19vYmpl
Y3RfY2FzdDxFd2tDb250ZXh0Kj4oY29udGV4dCkpOworICAgIHJldHVybiBFd2tWaWV3OjpjcmVh
dGVFdmFzT2JqZWN0KGNhbnZhcywgc21hcnQsIGV3a19vYmplY3RfY2FzdDxFd2tDb250ZXh0Kj4o
Y29udGV4dCksIGV3a19vYmplY3RfY2FzdDxFd2tQYWdlR3JvdXAqPihwYWdlR3JvdXApKTsKIH0K
IAogRXZhc19PYmplY3QqIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBF
d2tfQ29udGV4dCogY29udGV4dCkKQEAgLTEwOCw2ICsxMTAsMTMgQEAgRXdrX0NvbnRleHQqIGV3
a192aWV3X2NvbnRleHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHJldHVy
biBpbXBsLT5ld2tDb250ZXh0KCk7CiB9CiAKK0V3a19QYWdlX0dyb3VwKiBld2tfdmlld19wYWdl
X2dyb3VwX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19J
TVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgMCk7CisKKyAgICByZXR1cm4gaW1wbC0+
ZXdrUGFnZUdyb3VwKCk7Cit9CisKIEVpbmFfQm9vbCBld2tfdmlld191cmxfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1cmwpCiB7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDViOTIzYzQyYzY2YmVhYzFmYWUyNDQ3NWY2MjIz
ZmI2MmQyY2NkMTMuLmNkMGQzMTc2M2NiMzA0YmZjMTkzZjIwNzZjYTJmZDFhNjkxN2JkNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtODAsNiAr
ODAsNyBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnUuaCIKICNpbmNsdWRlICJld2tfZG93
bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2Vf
Z3JvdXAuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudS5oIgogI2luY2x1ZGUgImV3a19zZWN1
cml0eV9vcmlnaW4uaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKQEAgLTMxNiwxMCArMzE3
LDExIEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19T
bWFydF9DbGFzcyAqYXBpKTsKICAqIEBwYXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUgdG8gY3Jl
YXRlIHRoZSB2aWV3IG9iamVjdAogICogQHBhcmFtIHNtYXJ0IEV2YXNfU21hcnQgb2JqZWN0LiBJ
dHMgdHlwZSBzaG91bGQgYmUgRVdLX1ZJRVdfVFlQRV9TVFIKICAqIEBwYXJhbSBjb250ZXh0IEV3
a19Db250ZXh0IG9iamVjdCB3aGljaCBpcyB1c2VkIGZvciBpbml0aWFsaXppbmcKKyAqIEBwYXJh
bSBwYWdlR3JvdXAgRXdrX1BhZ2VfR3JvdXAgb2JqZWN0IHdoaWNoIGlzIHVzZWQgZm9yIGluaXRp
YWxpemluZwogICoKICAqIEByZXR1cm4gdmlldyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxM
IG9uIGZhaWx1cmUKICAqLwotRUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfc21hcnRfYWRkKEV2
YXMgKmUsIEV2YXNfU21hcnQgKnNtYXJ0LCBFd2tfQ29udGV4dCAqY29udGV4dCk7CitFQVBJIEV2
YXNfT2JqZWN0ICpld2tfdmlld19zbWFydF9hZGQoRXZhcyAqZSwgRXZhc19TbWFydCAqc21hcnQs
IEV3a19Db250ZXh0ICpjb250ZXh0LCBFd2tfUGFnZV9Hcm91cCAqcGFnZUdyb3VwKTsKIAogLyoq
CiAgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3QuCkBAIC0zNTAsNiArMzUy
LDE1IEBAIEVBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAq
ZSwgRXdrX0NvbnRleHQgKmNvbnRleHQpOwogRUFQSSBFd2tfQ29udGV4dCAqZXdrX3ZpZXdfY29u
dGV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKKyAqIEdldHMgdGhlIEV3a19Q
YWdlX0dyb3VwIG9mIHRoaXMgdmlldy4KKyAqCisgKiBAcGFyYW0gbyB0aGUgdmlldyBvYmplY3Qg
dG8gZ2V0IHRoZSBFd2tfUGFnZV9Hcm91cAorICoKKyAqIEByZXR1cm4gdGhlIEV3a19QYWdlX0dy
b3VwIG9mIHRoaXMgdmlldyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFd2tfUGFn
ZV9Hcm91cCAqZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwor
CisvKioKICAqIEFza3MgdGhlIG9iamVjdCB0byBsb2FkIHRoZSBnaXZlbiBVUkwuCiAgKgogICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbG9hZCBAYSBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCmluZGV4IGU2NGY0Y2M3NzUzNjIyZDc1ODQxZjgx
NDY4OGVhNTJlYmZjNjUyNDEuLjZlOGJhZTJkNzA2YTdiZTQzOWVkODk0M2IyNzE2NzJlYzFhMjli
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcApA
QCAtNjEsMTEgKzYxLDE0IEBAIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQogICAgIEV2
YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJm1fZXdrVmlld0NsYXNzLnNj
KTsKIAogICAgIEV3a19Db250ZXh0KiBuZXdDb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3KCk7Ci0g
ICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBuZXdDb250ZXh0
KTsKKyAgICBFd2tfUGFnZV9Hcm91cCogbmV3UGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3Jl
YXRlKCJVbml0VGVzdCIpOworICAgIG1fd2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFz
LCBzbWFydCwgbmV3Q29udGV4dCwgbmV3UGFnZUdyb3VwKTsKKwogICAgIC8vIENsZWFyIEhUVFAg
Y2FjaGUgZmlsZXMgYmVmb3JlIHJ1bm5pbmcgdGhlIHVuaXQgdGVzdHMsIHdoaWNoIHByZXZlbnRz
IAogICAgIC8vIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGR1ZSB0byBzbyBtYW55IGNhY2hlIGZp
bGVzLgogICAgIGV3a19jb250ZXh0X3Jlc291cmNlX2NhY2hlX2NsZWFyKG5ld0NvbnRleHQpOwog
ICAgIGV3a19vYmplY3RfdW5yZWYobmV3Q29udGV4dCk7CisgICAgZXdrX29iamVjdF91bnJlZihu
ZXdQYWdlR3JvdXApOwogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldywgZW52aXJv
bm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEJhc2UuaAppbmRleCBiZDVlNGI5OTU4NWZkODlhNzc3YmEwN2M0MDFkMWNlZjMxOTNi
ODdhLi41OTI0YmU2NDFmY2Q3Y2JiNWE2NWZlOTEzM2VmYjMzODI3MDEzNTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAtMzUsNiArMzUsNyBAQCBw
dWJsaWM6CiAgICAgRWNvcmVfRXZhcyogYmFja2luZ1N0b3JlKCkgeyByZXR1cm4gbV9lY29yZUV2
YXM7IH0KICAgICBFdmFzKiBjYW52YXMoKSB7IHJldHVybiBlY29yZV9ldmFzX2dldChtX2Vjb3Jl
RXZhcyk7IH0KICAgICBFdmFzX09iamVjdCogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsg
fQorICAgIHZvaWQgc2V0V2ViVmlldyhFdmFzX09iamVjdCogd2ViVmlldykgeyBtX3dlYlZpZXcg
PSB3ZWJWaWV3OyB9CiAgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGV3a1ZpZXdDbGFzcygpIHsg
cmV0dXJuICZtX2V3a1ZpZXdDbGFzczsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFn
ZV9ncm91cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmExMWM0NGRhODc4OGQyMmI2NmJkNDQxNDExNTM1ODU0
NDcyM2M0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYWdlX2dyb3VwLmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVbml0
VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0
VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsKKwor
c3RhdGljIGNvbnN0IGNoYXIgaHRtbFN0cmluZ1tdID0gIjxodG1sPjxoZWFkPjx0aXRsZT5Gb288
L3RpdGxlPjwvaGVhZD48Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkJz48c2NyaXB0
PmRvY3VtZW50LnRpdGxlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKTwvc2NyaXB0PkhFTExPPC9i
b2R5PjwvaHRtbD4iOworc3RhdGljIGNvbnN0IGNoYXIgdXNlclN0eWxlU2hlZXRbXSA9ICJib2R5
IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CitzdGF0aWMgY29uc3Qg
Y2hhciBncmVlbkluUkdCW10gPSAicmdiKDAsIDEyOCwgMCkiOworc3RhdGljIGNvbnN0IGNoYXIg
cmVkSW5SR0JbXSA9ICJyZ2IoMjU1LCAwLCAwKSI7CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNl
LCBld2tfcGFnZV9ncm91cCkKK3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRf
Y2xhc3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBh
Z2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVF
KHBhZ2VHcm91cCk7CisKKyAgICBFdmFzX09iamVjdCogbmV3V2ViVmlldyA9IGV3a192aWV3X3Nt
YXJ0X2FkZChjYW52YXMoKSwgc21hcnQsIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCksIHBhZ2VH
cm91cCk7CisgICAgc2V0V2ViVmlldyhuZXdXZWJWaWV3KTsKKworICAgIEFTU0VSVF9FUShwYWdl
R3JvdXAsIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG5ld1dlYlZpZXcpKTsKKyAgICBld2tfb2Jq
ZWN0X3VucmVmKHBhZ2VHcm91cCk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tf
cGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZF9iZWZvcmVfY3JlYXRpbmdfdmlldykKK3sK
KyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmlld0Ns
YXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdlX2dy
b3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAgICAv
LyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3VwIGJlZm9yZSBjcmVhdGlu
ZyBhIHZpZXcKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdlR3Jv
dXAsIHVzZXJTdHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsKKworICAgIC8vIENyZWF0ZSBhIG5l
dyB3ZWIgdmlldyB3aXRoIHRoaXMgcGFnZSBncm91cAorICAgIEV2YXNfT2JqZWN0KiBuZXdXZWJW
aWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGNhbnZhcygpLCBzbWFydCwgZXdrX2NvbnRleHRfZGVm
YXVsdF9nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3KG5ld1dlYlZpZXcpOworCisg
ICAgZXdrX29iamVjdF91bnJlZihwYWdlR3JvdXApOworICAgIGV3a192aWV3X3RoZW1lX3NldCh3
ZWJWaWV3KCksIGVudmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CisgICAgZXZhc19vYmplY3Rf
cmVzaXplKHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRXaWR0aCgpLCBlbnZpcm9ubWVu
dC0+ZGVmYXVsdEhlaWdodCgpKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdlYlZpZXcoKSk7Cisg
ICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdlYlZpZXcoKSwgdHJ1ZSk7CisKKyAgICBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisgICAgQVNT
RVJUX1RSVUUod2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oZ3JlZW5JblJHQikpOworfQorCitURVNU
X0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGRf
YWZ0ZXJfY3JlYXRpbmdfdmlldykKK3sKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRv
IHRoZSBwYWdlIGdyb3VwIGFmdGVyIGNyZWF0aW5nIGEgdmlldworICAgIEV3a19QYWdlX0dyb3Vw
KiBwYWdlR3JvdXAgPSBld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOworICAgIEFT
U0VSVF9UUlVFKHBhZ2VHcm91cCk7CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVl
dF9hZGQocGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisKKyAgICBl
d2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7Cisg
ICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oZ3JlZW5JblJHQikpOworfQor
CitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVl
dHNfcmVtb3ZlX2FsbCkKK3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xh
c3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VH
cm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBh
Z2VHcm91cCk7CisKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdy
b3VwIGJlZm9yZSBjcmVhdGluZyBhIHZpZXcKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxl
X3NoZWV0X2FkZChwYWdlR3JvdXAsIHVzZXJTdHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsKKwor
ICAgIC8vIENyZWF0ZSBhIG5ldyB3ZWIgdmlldyB3aXRoIHRoaXMgcGFnZSBncm91cAorICAgIEV2
YXNfT2JqZWN0KiBuZXdXZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGNhbnZhcygpLCBzbWFy
dCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3
KG5ld1dlYlZpZXcpOworCisgICAgZXdrX29iamVjdF91bnJlZihwYWdlR3JvdXApOworICAgIGV3
a192aWV3X3RoZW1lX3NldCh3ZWJWaWV3KCksIGVudmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7
CisgICAgZXZhc19vYmplY3RfcmVzaXplKHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRX
aWR0aCgpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdEhlaWdodCgpKTsKKyAgICBldmFzX29iamVjdF9z
aG93KHdlYlZpZXcoKSk7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdlYlZpZXcoKSwgdHJ1
ZSk7CisKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmlu
ZywgMCwgMCk7CisKKyAgICAvLyBSZW1vdmUgYWxsIHVzZXIgc3R5bGUgc2hlZXRzIGluIHRoZSBw
YWdlIGdyb3VwCisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2Fs
bChld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpKTsKKyAgICBBU1NFUlRfVFJVRSh3
YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhyZWRJblJHQikpOworCisgICAgLy8gQWRkIGEgdXNlciBz
dHlsZSBzaGVldCB0byB0aGUgcGFnZSBncm91cCBhZnRlciBjcmVhdGluZyBhIHZpZXcKKyAgICBw
YWdlR3JvdXAgPSBld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOworICAgIGV3a19w
YWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwgdXNlclN0eWxlU2hlZXQs
IDAsIDAsIDAsIHRydWUpOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygp
LCBodG1sU3RyaW5nLCAwLCAwKTsKKworICAgIC8vIFJlbW92ZSBhbGwgdXNlciBzdHlsZSBzaGVl
dHMgaW4gdGhlIHBhZ2UgZ3JvdXAKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0
c19yZW1vdmVfYWxsKGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSkpOworICAgIEFT
U0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKHJlZEluUkdCKSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHAKaW5kZXggOWUyM2U1ZmUzMjg0ZTYxMDVmN2E0MTg5ZmFhMjM4Y2M2N2Q2M2RkMi4u
ZTQxODNlZTI4M2UzOTIyODBhMjY2NWQ1ODQyMmNkODMxZmFjMmJlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3
LmNwcApAQCAtNTU3LDYgKzU1NywxMyBAQCBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3Zp
ZXdfY29udGV4dF9nZXQpCiAgICAgQVNTRVJUX0VRKGNvbnRleHQsIGV3a192aWV3X2NvbnRleHRf
Z2V0KHdlYlZpZXcoKSkpOwogfQogCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdf
cGFnZV9ncm91cF9nZXQpCit7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a192
aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSk7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3Vw
KTsKKyAgICBBU1NFUlRfRVEocGFnZUdyb3VwLCBld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJW
aWV3KCkpKTsKK30KKwogVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2ZlZWRfdG91
Y2hfZXZlbnQpCiB7CiAgICAgRWluYV9MaXN0KiBwb2ludHMgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAppbmRleCBm
YTJlMDhkNjEwYWVmZDdhZGM0M2YxYWQ2OWRmYWM4ZTI5NTNjYTUyLi5kNzU4MDAxZTY5MjMzNWE1
NDQ1YjZiZjdhNGNmOTE2MWNmM2RjYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9FZmxJbnNwZWN0b3JVdGlsaXRpZXMuaD4KQEAgLTEwMCw3ICsx
MDEsOCBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRvIHVzZSBXS1ZpZXdSZWYu
CiAgICAgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYgPSB0b0FQSShwYWdlKCktPnByb2Nlc3MoKS0+
Y29udGV4dCgpKTsKLSAgICBtX2luc3BlY3RvclZpZXcgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2Jq
ZWN0KGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgRXdrQ29udGV4dDo6Y3JlYXRl
KGNvbnRleHRSZWYpLCB0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSksIEV3a1ZpZXc6OkxlZ2Fj
eUJlaGF2aW9yKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2Jq
ZWN0KGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgRXdrQ29udGV4dDo6Y3JlYXRl
KGNvbnRleHRSZWYpLCBFd2tQYWdlR3JvdXA6OmNyZWF0ZSh0b0FQSShpbnNwZWN0b3JQYWdlR3Jv
dXAoKSkpLCBFd2tWaWV3OjpMZWdhY3lCZWhhdmlvcik7CisKICAgICBpZiAoIW1faW5zcGVjdG9y
VmlldykKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZTQyNTlmZmE1M2RmOGU2OTA2YzZjNDRlZjJiNjVlNjA3
MTM1NjRkLi43MDlmOTU0MDFhZjMwM2I4MTA3YmJjY2JkNGJhZTZmY2YzMzc1OWIyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTMtMDItMjQgIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgor
CisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGFuIEFQSSBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyB1
c2VyIHN0eWxlIHNoZWV0cyBmcm9tIGEgcGFnZSBncm91cAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBwYWdlIGdyb3VwIHRvIGNyZWF0ZSB0
aGUgdmlldyBvYmplY3QuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAg
ICAgICAod2luZG93X2NyZWF0ZSk6CisKIDIwMTMtMDItMjQgIEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gR1RLKyAyIGJ1aWxkIGJyb2tlbiBz
aW5jZSBHVEtfQVBJX1ZFUlNJT05fMiBtb3ZlZCB0byBhdXRvY29uZmlnLmgKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFp
bi5jCmluZGV4IGNlODE2ZWVhOGUyYWE3N2FlM2QzYjYwNzU3MzZjZDk4MTFlMWM0MzkuLjJlZWZm
OTc5ZTU4OWNmZGViNDcyNTU4NzM4MmI1OTdkOWZlOGY3NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpA
QCAtMTE4Nyw4ICsxMTg3LDkgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRl
KEV2YXNfT2JqZWN0ICpvcGVuZXIsIGNvbnN0IGNoYXIgKnVybCwgaW50IHcKICAgICAgICAgd2lu
ZG93LT5ld2tfdmlldyA9IChFdmFzX09iamVjdCopV0tWaWV3Q3JlYXRlKGV2YXMsIDAsIDApOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19zbWFydF9jbGFz
c19uZXcoJmV3a1ZpZXdDbGFzcy0+c2MpOwotICAgICAgICBFd2tfQ29udGV4dCogY29udGV4dCA9
IG9wZW5lciA/IGV3a192aWV3X2NvbnRleHRfZ2V0KG9wZW5lcikgOiBld2tfY29udGV4dF9kZWZh
dWx0X2dldCgpOwotICAgICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRk
KGV2YXMsIHNtYXJ0LCBjb250ZXh0KTsKKyAgICAgICAgRXdrX0NvbnRleHQgKmNvbnRleHQgPSBv
cGVuZXIgPyBld2tfdmlld19jb250ZXh0X2dldChvcGVuZXIpIDogZXdrX2NvbnRleHRfZGVmYXVs
dF9nZXQoKTsKKyAgICAgICAgRXdrX1BhZ2VfR3JvdXAgKnBhZ2VHcm91cCA9IG9wZW5lciA/IGV3
a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG9wZW5lcikgOiBld2tfcGFnZV9ncm91cF9jcmVhdGUoMCk7
CisgICAgICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21h
cnQsIGNvbnRleHQsIHBhZ2VHcm91cCk7CiAgICAgfQogICAgIGV3a192aWV3X3RoZW1lX3NldCh3
aW5kb3ctPmV3a192aWV3LCBUSEVNRV9ESVIgIi9kZWZhdWx0LmVkaiIpOwogICAgIGlmIChkZXZp
Y2VfcGl4ZWxfcmF0aW8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191155</attachid>
            <date>2013-03-03 17:10:59 -0800</date>
            <delta_ts>2013-03-04 05:46:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130304100706.patch</filename>
            <type>text/plain</type>
            <size>36917</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjQ4YzlkMzA2ZDRkMmYw
ZjY0NTJhZjk4YmY1ZmI0MjgxMGQ5NjdlOC4uZTVjNjZjMTAxZTYxZjM5NjQ2OTA0ZjVkYzUwZjBi
YjY3NzViYTU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAzLTAzICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBDU1MyLjEgc3BlYywgdGhlIHVzZXIgbWF5
IGJlIGFibGUgdG8gc3BlY2lmeSBzdHlsZSBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGRv
Y3VtZW50LgorICAgICAgICBTbyB0aGlzIHBhdGNoIHByb3ZpZGVzIGFuIEFQSSBmb3IgYWRkaW5n
IGFuZCByZW1vdmluZyB1c2VyIHN0eWxlIHNoZWV0cyBmcm9tIGEgcGFnZSBncm91cC4KKyAgICAg
ICAgQWxzbyBpdCBpbXBsZW1lbnRzIEV3a1BhZ2VHcm91cCBBUEkgYXMgYW4gaW50ZXJmYWNlIGJl
dHdlZW4gdGhlIGFwcGxpY2F0aW9ucyBhbmQgV0tQYWdlR3JvdXAgQVBJLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcu
Y3BwOgorICAgICAgICAoY3JlYXRlV0tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgor
ICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6CisgICAgICAgIChFd2tWaWV3OjpjcmVhdGVFdmFz
T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAg
IChFd2tWaWV3Ojpld2tQYWdlR3JvdXApOgorICAgICAgICAoRXdrVmlldyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNy
ZWF0ZVdLQXJyYXkpOgorICAgICAgICAoRXdrUGFnZUdyb3VwOjpFd2tQYWdlR3JvdXApOgorICAg
ICAgICAoRXdrUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChFd2tQYWdl
R3JvdXA6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChld2tfcGFnZV9ncm91
cF9jcmVhdGUpOgorICAgICAgICAoZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQp
OgorICAgICAgICAoZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEV3a1BhZ2VHcm91cCk6CisgICAgICAgIChFd2tQYWdlR3JvdXA6OmNyZWF0
ZSk6CisgICAgICAgIChFd2tQYWdlR3JvdXA6OndrUGFnZUdyb3VwKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmlld19zbWFydF9hZGQp
OgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcDoKKyAgICAgICAgKEVXSzJVbml0VGVz
dDo6RVdLMlVuaXRUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oOgorICAgICAgICAoRVdLMlVu
aXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHA6IEFkZGVkLgorICAgICAg
ICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKwogMjAxMy0wMy0wMyAgSHVhbmcgRG9u
Z3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbRUZMXVtRVF1bV0sy
XSBUdXJuIG9uIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IgYWx3YXlzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ZmE0ZWM5NzUxYjRmNDFmMjg0YzEzOGI4NTlhYmI5
MDg4NWRkYmNlLi5iMTUzZGYxZTVlYTQ5NzA3ODQ1YzU1ZGY3ZDg3NzAwNDFlZjJjMWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAsNiArNzAsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9kYXRhLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmNwcAorICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wYWdlX2dyb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1
cF9tZW51LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAKQEAgLTI4Myw2
ICsyODQsNyBAQCBzZXQoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zhdmljb25fZGF0YWJhc2UuaCIKICAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19maWxlX2No
b29zZXJfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmgiCisgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21h
aW4uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgpAQCAt
Mzg0LDYgKzM4Niw3IEBAIHNldChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAgdGVzdF9ld2sy
X2Zhdmljb25fZGF0YWJhc2UKICAgICB0ZXN0X2V3azJfZmlsZV9jaG9vc2VyX3JlcXVlc3QKICAg
ICB0ZXN0X2V3azJfb2JqZWN0CisgICAgdGVzdF9ld2syX3BhZ2VfZ3JvdXAKICAgICB0ZXN0X2V3
azJfcG9wdXBfbWVudQogICAgIHRlc3RfZXdrMl9yZWZwdHJfZXZhc19vYmplY3QKICAgICB0ZXN0
X2V3azJfc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcAppbmRleCAxNzc5MTFmYjIzMzkyYmUyZGVmODM0YzM1Y2Q2NWIyYzYwMGI4OTM5Li42
NWYyNjlhNzFjZmQxZTBjYTkyZWM4YWQ3M2ZkOWY4YTM3NTVhYTE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgImV3
a19jb250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgi
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlQ2Fpcm8uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKQEAgLTMxLDcgKzMyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHN0YXRpYyBp
bmxpbmUgV0tWaWV3UmVmIGNyZWF0ZVdLVmlldyhFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIEV3a1ZpZXc6OlZpZXdCZWhh
dmlvciBiZWhhdmlvcikKIHsKICAgICBSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCA9IGNvbnRl
eHRSZWYgPyBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZikgOiBFd2tDb250ZXh0OjpkZWZh
dWx0Q29udGV4dCgpOwotICAgIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0ID0gRXdrVmlldzo6Y3Jl
YXRlRXZhc09iamVjdChjYW52YXMsIGNvbnRleHQsIHBhZ2VHcm91cFJlZiwgYmVoYXZpb3IpOwor
ICAgIFJlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IHBhZ2VHcm91cFJlZiA/IEV3a1Bh
Z2VHcm91cDo6Y3JlYXRlKHBhZ2VHcm91cFJlZikgOiBFd2tQYWdlR3JvdXA6OmNyZWF0ZShTdHJp
bmcoKSk7CisKKyAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCA9IEV3a1ZpZXc6OmNyZWF0ZUV2
YXNPYmplY3QoY2FudmFzLCBjb250ZXh0LCBwYWdlR3JvdXAsIGJlaGF2aW9yKTsKICAgICBpZiAo
IWV2YXNPYmplY3QpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCAzYTI4NjVlZTc5MzFlNWQxZDRkMzBkZmU1MDA5
NmY3NGNmNGZkZDUzLi5hOWM4YTE0ZTc4YjFmZWU2OTE5NTljZDJjYjcyYTUwNWVmZGJlNjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAjaW5jbHVkZSAiZXdr
X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAjaW5jbHVkZSAiZXdrX29iamVjdC5oIgor
I2luY2x1ZGUgImV3a19wYWdlX2dyb3VwLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnUuaCIK
ICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5
X29yaWdpbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNw
cAppbmRleCAxNDYwYjcwNmY4MWU1MmFiMjFhY2QyM2JhYzY3NzExMjdmMTlmZTA3Li5iZTNkYTgz
ZDFjNDJlZmE5Y2YxOGZlODM0YTYyN2MzYzkyMGE1YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUg
ImV3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0
ZW1fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgpAQCAtMjI4LDExICsyMjksMTIgQEAgdm9pZCBFd2tWaWV3RXZl
bnRIYW5kbGVyPEVWQVNfQ0FMTEJBQ0tfSElERT46OmhhbmRsZUV2ZW50KHZvaWQqIGRhdGEsIEV2
YXMqLCBFdmEKIAogLy8gRXdrVmlldyBpbXBsZW1lbnRhdGlvbi4KIAotRXdrVmlldzo6RXdrVmll
dyhFdmFzX09iamVjdCogZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKK0V3a1Zp
ZXc6OkV3a1ZpZXcoRXZhc19PYmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4
dD4gY29udGV4dCwgUGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCwgVmlld0JlaGF2
aW9yIGJlaGF2aW9yKQogICAgIDogbV9ldmFzT2JqZWN0KGV2YXNPYmplY3QpCiAgICAgLCBtX2Nv
bnRleHQoY29udGV4dCkKKyAgICAsIG1fcGFnZUdyb3VwKHBhZ2VHcm91cCkKICAgICAsIG1fcGVu
ZGluZ1N1cmZhY2VSZXNpemUoZmFsc2UpCi0gICAgLCBtX3dlYlZpZXcoYWRvcHRSZWYobmV3IFdl
YlZpZXcodG9JbXBsKG1fY29udGV4dC0+d2tDb250ZXh0KCkpLCB0b0ltcGwocGFnZUdyb3VwKSwg
dGhpcykpKQorICAgICwgbV93ZWJWaWV3KGFkb3B0UmVmKG5ldyBXZWJWaWV3KHRvSW1wbChtX2Nv
bnRleHQtPndrQ29udGV4dCgpKSwgdG9JbXBsKG1fcGFnZUdyb3VwLT53a1BhZ2VHcm91cCgpKSwg
dGhpcykpKQogICAgICwgbV9wYWdlTG9hZENsaWVudChQYWdlTG9hZENsaWVudEVmbDo6Y3JlYXRl
KHRoaXMpKQogICAgICwgbV9wYWdlUG9saWN5Q2xpZW50KFBhZ2VQb2xpY3lDbGllbnRFZmw6OmNy
ZWF0ZSh0aGlzKSkKICAgICAsIG1fcGFnZVVJQ2xpZW50KFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRl
KHRoaXMpKQpAQCAtMzAwLDcgKzMwMiw3IEBAIEV3a1ZpZXc6On5Fd2tWaWV3KCkKICAgICBpY29u
RGF0YWJhc2UtPnVud2F0Y2hDaGFuZ2VzKEV3a1ZpZXc6OmhhbmRsZUZhdmljb25DaGFuZ2VkKTsK
IH0KIAotRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFz
LCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKK0V2YXNfT2Jq
ZWN0KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCog
c21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxFd2tQYWdl
R3JvdXA+IHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzbWFydCwgMCk7CkBAIC0zMTcsMTUgKzMxOSwxNyBAQCBFdmFzX09iamVj
dCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNt
YXJ0LCBQYXNzUmVmUAogCiAgICAgQVNTRVJUKCFzbWFydERhdGEtPnByaXYpOwogCi0gICAgLy8g
RGVmYXVsdCBXZWJQYWdlR3JvdXAgaXMgY3JlYXRlZCBpbiBXZWJDb250ZXh0IGNvbnN0cnVjdG9y
IGlmIHRoZSBwYWdlR3JvdXBSZWYgaXMgMCwKLSAgICAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byBj
cmVhdGUgaXQgaGVyZS4KLSAgICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlldyhldmFzT2Jq
ZWN0LCBjb250ZXh0LCBwYWdlR3JvdXBSZWYsIGJlaGF2aW9yKTsKKyAgICBpZiAoIXBhZ2VHcm91
cCkKKyAgICAgICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1ZpZXcoZXZhc09iamVjdCwgY29u
dGV4dCwgRXdrUGFnZUdyb3VwOjpjcmVhdGUoU3RyaW5nKCkpLCBiZWhhdmlvcik7CisgICAgZWxz
ZQorICAgICAgICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlldyhldmFzT2JqZWN0LCBjb250
ZXh0LCBwYWdlR3JvdXAsIGJlaGF2aW9yKTsKKwogICAgIHJldHVybiBldmFzT2JqZWN0OwogfQog
Ci1FdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIFBh
c3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
LCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCitFdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZh
c09iamVjdChFdmFzKiBjYW52YXMsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFz
c1JlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQog
ewotICAgIHJldHVybiBjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgZGVmYXVsdFNtYXJ0Q2xhc3NJ
bnN0YW5jZSgpLCBjb250ZXh0LCBwYWdlR3JvdXBSZWYsIGJlaGF2aW9yKTsKKyAgICByZXR1cm4g
Y3JlYXRlRXZhc09iamVjdChjYW52YXMsIGRlZmF1bHRTbWFydENsYXNzSW5zdGFuY2UoKSwgY29u
dGV4dCwgcGFnZUdyb3VwLCBiZWhhdmlvcik7CiB9CiAKIGJvb2wgRXdrVmlldzo6aW5pdFNtYXJ0
Q2xhc3NJbnRlcmZhY2UoRXdrX1ZpZXdfU21hcnRfQ2xhc3MmIGFwaSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCA3MWRhZDJkNTdhNzAxZTZmNTkyYzNj
NjY3YzQ4MTM0NTc4MGUxNzUyLi40OGJlMDgxZGVjOGY2MDMwNDZlZmEwYzgxZTk3ZTVhZmJmYmFh
NTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCkBAIC04
Nyw2ICs4Nyw3IEBAIGNsYXNzIEV3a0NvbnRleHQ7CiBjbGFzcyBFd2tCYWNrRm9yd2FyZExpc3Q7
CiBjbGFzcyBFd2tDb2xvclBpY2tlcjsKIGNsYXNzIEV3a0NvbnRleHRNZW51OworY2xhc3MgRXdr
UGFnZUdyb3VwOwogY2xhc3MgRXdrUG9wdXBNZW51OwogY2xhc3MgRXdrU2V0dGluZ3M7CiBjbGFz
cyBFd2tXaW5kb3dGZWF0dXJlczsKQEAgLTEwNiw4ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgICAg
IERlZmF1bHRCZWhhdmlvcgogICAgIH07CiAKLSAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0
ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxF
d2tDb250ZXh0PiBjb250ZXh0LCAgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmID0gMCwgVmll
d0JlaGF2aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2aW9yKTsKLSAgICBzdGF0
aWMgRXZhc19PYmplY3QqIGNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRy
PEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDAsIFZp
ZXdCZWhhdmlvciBiZWhhdmlvciA9IEV3a1ZpZXc6OkRlZmF1bHRCZWhhdmlvcik7CisgICAgc3Rh
dGljIEV2YXNfT2JqZWN0KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFy
dCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgIFBhc3NSZWZQdHI8RXdr
UGFnZUdyb3VwPiBwYWdlR3JvdXAgPSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3
OjpEZWZhdWx0QmVoYXZpb3IpOworICAgIHN0YXRpYyBFdmFzX09iamVjdCogY3JlYXRlRXZhc09i
amVjdChFdmFzKiBjYW52YXMsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzc1Jl
ZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IDAsIFZpZXdCZWhhdmlvciBiZWhhdmlvciA9
IEV3a1ZpZXc6OkRlZmF1bHRCZWhhdmlvcik7CiAKICAgICBzdGF0aWMgYm9vbCBpbml0U21hcnRD
bGFzc0ludGVyZmFjZShFd2tfVmlld19TbWFydF9DbGFzcyYpOwogCkBAIC0xMjAsNiArMTIxLDcg
QEAgcHVibGljOgogCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBt
X3dlYlZpZXctPnBhZ2UoKTsgfQogICAgIEV3a0NvbnRleHQqIGV3a0NvbnRleHQoKSB7IHJldHVy
biBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBFd2tQYWdlR3JvdXAqIGV3a1BhZ2VHcm91cCgpIHty
ZXR1cm4gbV9wYWdlR3JvdXAuZ2V0KCk7IH0KICAgICBFd2tTZXR0aW5ncyogc2V0dGluZ3MoKSB7
IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgRXdrQmFja0ZvcndhcmRMaXN0KiBiYWNr
Rm9yd2FyZExpc3QoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKTsgfQogICAgIEV3
a1dpbmRvd0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcygpOwpAQCAtMjEzLDcgKzIxNSw3IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gdGFrZVNuYXBzaG90KCk7CiAK
IHByaXZhdGU6Ci0gICAgRXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVjdCwgUGFzc1JlZlB0
cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFZpZXdCZWhh
dmlvcik7CisgICAgRXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVjdCwgUGFzc1JlZlB0cjxF
d2tDb250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwLCBW
aWV3QmVoYXZpb3IpOwogICAgIH5Fd2tWaWV3KCk7CiAKICAgICBFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEoKSBjb25zdDsKQEAgLTI1Miw2ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIC8v
IE5vdGUsIGluaXRpYWxpemF0aW9uIG9yZGVyIG1hdHRlcnMuCiAgICAgRXZhc19PYmplY3QqIG1f
ZXZhc09iamVjdDsKICAgICBSZWZQdHI8RXdrQ29udGV4dD4gbV9jb250ZXh0OworICAgIFJlZlB0
cjxFd2tQYWdlR3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIE93blB0cjxFdmFzX0dMPiBtX2V2YXNH
TDsKICAgICBPd25QdHI8V2ViS2l0OjpFdmFzR0xDb250ZXh0PiBtX2V2YXNHTENvbnRleHQ7CiAg
ICAgT3duUHRyPFdlYktpdDo6RXZhc0dMU3VyZmFjZT4gbV9ldmFzR0xTdXJmYWNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFhZmJjNWQzNmYzN2YwMDM2NWJiMWI2MjdiMDgzM2UyMjZhZTMwOTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9n
cm91cC5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwLmgiCisKKyNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tQYWdlR3JvdXAu
aCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwX3ByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK3N0YXRpYyBXS0FycmF5UmVmIGNyZWF0ZVdLQXJyYXkoRWluYV9MaXN0KiBhcnJh
eSkKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IGVpbmFfbGlzdF9jb3VudChhcnJheSk7CisgICAg
aWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuIFdLQXJyYXlSZWYoKTsKKworICAgIFZlY3RvcjxX
S1R5cGVSZWY+IHN0cmluZ1ZlY3RvcjsKKyAgICBzdHJpbmdWZWN0b3IucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShjb3VudCk7CisKKyAgICBFaW5hX0xpc3QqIGwgPSAwOworICAgIHZvaWQqIGRhdGEg
PSAwOworICAgIEVJTkFfTElTVF9GT1JFQUNIKGFycmF5LCBsLCBkYXRhKQorICAgICAgICBzdHJp
bmdWZWN0b3IudW5jaGVja2VkQXBwZW5kKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0
YXRpY19jYXN0PGNoYXIqPihkYXRhKSkpOworCisgICAgcmV0dXJuIFdLQXJyYXlDcmVhdGVBZG9w
dGluZ1ZhbHVlcyhzdHJpbmdWZWN0b3IuZGF0YSgpLCBjb3VudCk7Cit9CisKK0V3a1BhZ2VHcm91
cDo6RXdrUGFnZUdyb3VwKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKKyAgICA6IG1fcGFn
ZUdyb3VwUmVmKHBhZ2VHcm91cFJlZikKK3sKK30KKworRXdrUGFnZUdyb3VwOjpFd2tQYWdlR3Jv
dXAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIG1fcGFnZUdyb3VwUmVmID0gV0tQ
YWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihhZG9wdFdLKHRvQ29waWVkQVBJKGlkZW50aWZp
ZXIpKS5nZXQoKSk7Cit9CisKK3ZvaWQgRXdrUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBFaW5hX0xpc3QqIHdo
aXRlTGlzdCwgRWluYV9MaXN0KiBibGFja0xpc3QsIGJvb2wgbWFpbkZyYW1lT25seSkKK3sKKyAg
ICBBU1NFUlQoc291cmNlKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1NvdXJj
ZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkoc291cmNlKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IHdrQmFzZVVSTCA9IGFkb3B0V0sodG9Db3BpZWRVUkxBUEkoYmFzZVVSTCkpOworICAgIFdL
UmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrV2hpdGVsaXN0ID0gYWRvcHRXSyhjcmVhdGVXS0FycmF5
KHdoaXRlTGlzdCkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrQmxhY2tsaXN0ID0g
YWRvcHRXSyhjcmVhdGVXS0FycmF5KGJsYWNrTGlzdCkpOworICAgIFdLVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyA9IG1haW5GcmFtZU9ubHkgPyBrV0tJbmplY3RJblRv
cEZyYW1lT25seSA6IGtXS0luamVjdEluQWxsRnJhbWVzOworCisgICAgV0tQYWdlR3JvdXBBZGRV
c2VyU3R5bGVTaGVldChtX3BhZ2VHcm91cFJlZi5nZXQoKSwgd2tTb3VyY2UuZ2V0KCksIHdrQmFz
ZVVSTC5nZXQoKSwgd2tXaGl0ZWxpc3QuZ2V0KCksIHdrQmxhY2tsaXN0LmdldCgpLCBpbmplY3Rl
ZEZyYW1lcyk7Cit9CisKK3ZvaWQgRXdrUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVl
dHMoKQoreworICAgIFdLUGFnZUdyb3VwUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKG1fcGFnZUdy
b3VwUmVmLmdldCgpKTsKK30KKworRXdrX1BhZ2VfR3JvdXAqIGV3a19wYWdlX2dyb3VwX2NyZWF0
ZShjb25zdCBjaGFyKiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBFd2tQYWdlR3JvdXA6OmNy
ZWF0ZShpZGVudGlmaWVyKS5sZWFrUmVmKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfcGFnZV9ncm91
cF91c2VyX3N0eWxlX3NoZWV0X2FkZChFd2tfUGFnZV9Hcm91cCogZXdrUGFnZUdyb3VwLCBjb25z
dCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqIGJhc2VVUkwsIEVpbmFfTGlzdCogd2hpdGVMaXN0
LCBFaW5hX0xpc3QqIGJsYWNrTGlzdCwgRWluYV9Cb29sIG1haW5GcmFtZU9ubHkpCit7CisgICAg
RVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrUGFnZUdyb3VwLCBld2tQYWdlR3JvdXAsIGlt
cGwsIGZhbHNlKTsKKworICAgIGltcGwtPmFkZFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgYmFzZVVS
TCwgd2hpdGVMaXN0LCBibGFja0xpc3QsIG1haW5GcmFtZU9ubHkpOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK0VpbmFfQm9vbCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1v
dmVfYWxsKEV3a19QYWdlX0dyb3VwKiBld2tQYWdlR3JvdXApCit7CisgICAgRVdLX09CSl9HRVRf
SU1QTF9PUl9SRVRVUk4oRXdrUGFnZUdyb3VwLCBld2tQYWdlR3JvdXAsIGltcGwsIGZhbHNlKTsK
KworICAgIGltcGwtPnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
cGFnZV9ncm91cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2Vf
Z3JvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNGY5ZjRiODgwMjQzNmJiYzIyYzVkMjcwYzE1YzY2NDQ2NWJh
MmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3BhZ2VfZ3JvdXAuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qKgorICogQGZpbGUgICAgZXdrX3BhZ2VfZ3JvdXAuaAorICogQGJyaWVmICAgRGVzY3JpYmVz
IHRoZSBFd2sgUGFnZSBHcm91cCBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfcGFnZV9ncm91cF9o
CisjZGVmaW5lIGV3a19wYWdlX2dyb3VwX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRl
IDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
LyoqCisgKiBEZWNsYXJlIEV3a19QYWdlX0dyb3VwIGFzIEV3a19PYmplY3QuCisgKgorICogQHNl
ZSBFd2tfT2JqZWN0CisgKi8KK3R5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfUGFnZV9Hcm91
cDsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IEV3a19QYWdlX0dyb3VwLgorICoKKyAqIFRoZSBy
ZXR1cm5lZCBFd2tfUGFnZV9Hcm91cCBvYmplY3QgQGIgc2hvdWxkIGJlIHVucmVmJ2VkIGFmdGVy
IHVzZS4KKyAqCisgKiBAcmV0dXJuIEV3a19QYWdlX0dyb3VwIG9iamVjdCBvbiBzdWNjZXNzIG9y
IEBjIE5VTEwgb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX29iamVjdF91bnJlZgorICovCitF
QVBJIEV3a19QYWdlX0dyb3VwICpld2tfcGFnZV9ncm91cF9jcmVhdGUoY29uc3QgY2hhciAqaWRl
bnRpZmllcik7CisKKy8qKgorICogQWRkcyB0aGUgdXNlciBzdHlsZSBzaGVldCB0byB0aGlzIHBh
Z2UgZ3JvdXAuCisgKgorICogQHBhcmFtIHBhZ2VfZ3JvdXAgZXdrX3BhZ2VfZ29ydXAgb2JqZWN0
IHRvIGFkZCB0aGUgdXNlciBzdHlsZSBzaGVldAorICogQHBhcmFtIHNvdXJjZSB0aGUgdXNlciBz
dHlsZSBzaGVldAorICogQHBhcmFtIHVybCBiYXNlVVJMCisgKiBAcGFyYW0gd2hpdGVfbGlzdCB1
cmwgbGlzdCB0byBhbGxvdyBhZGRpbmcgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJhbSBi
bGFja19saXN0IHVybCBsaXN0IHRvIGRpc2FsbG93IGFkZGluZyB0aGUgdXNlciBzdHlsZSBzaGVl
dAorICogQHBhcmFtIG1haW5fZnJhbWVfb25seSBhIHN0YXRlIHRvIGFwcGx5IHRoZSB1c2VyIHN0
eWxlIHNoZWV0IG9ubHkgdG8gdGhlIG1haW5mcmFtZQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIGlmIHRoZSB1c2VyIHN0eWxlIHNoZWV0IGlzIGFkZGVkIHRvIHRoZSBwYWdlIGdyb3VwLCBv
cgorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9v
bCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChFd2tfUGFnZV9Hcm91cCAqcGFn
ZV9ncm91cCwgY29uc3QgY2hhciAqc291cmNlLCBjb25zdCBjaGFyICpiYXNlX3VybCwgRWluYV9M
aXN0ICp3aGl0ZV9saXN0LCBFaW5hX0xpc3QgKmJsYWNrX2xpc3QsIEVpbmFfQm9vbCBtYWluX2Zy
YW1lX29ubHkpOworCisvKioKKyAqIFJlbW92ZSBhbGwgdGhlIHVzZXIgc3R5bGUgc2hlZXRzIGZy
b20gdGhpcyBwYWdlIGdyb3VwLgorICoKKyAqIEBwYXJhbSBwYWdlX2dyb3VwIHBhZ2UgZ3JvdXAg
b2JqZWN0IHRvIHJlbW92ZSBhbGwgdGhlIHVzZXIgc3R5bGUgc2hlZXRzCisgKgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgYWxsIHRoZSB1c2VyIHN0eWxlIHNoZWV0IGFyZSByZW1vdmVkIGZy
b20gdGhlIHBhZ2UgZ3JvdXAsIG9yCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNl
CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3Jl
bW92ZV9hbGwoRXdrX1BhZ2VfR3JvdXAgKnBhZ2VfZ3JvdXApOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX3BhZ2VfZ3JvdXBfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkwZWQzZGI1NjlmMWIzYTlmMTFiZmZjN2I1MmU3NjRjMWRiYjA1MjkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
cGFnZV9ncm91cF9wcml2YXRlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIGV3a19wYWdlX2dyb3VwX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcGFnZV9n
cm91cF9wcml2YXRlX2gKKworI2luY2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK2NsYXNzIEV3a1Zp
ZXc7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0SWRlbnRpZmllciA9ICJkZWZhdWx0UGFn
ZUdyb3VwSWRlbnRpZmllciI7CisKK2NsYXNzIEV3a1BhZ2VHcm91cCA6IHB1YmxpYyBFd2tPYmpl
Y3QgeworcHVibGljOgorICAgIEVXS19PQkpFQ1RfREVDTEFSRShFd2tQYWdlR3JvdXApCisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IGNyZWF0ZShXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a1BhZ2VH
cm91cChwYWdlR3JvdXBSZWYpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tQ
YWdlR3JvdXA+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gaWRlbnRpZmllci5pc0VtcHR5KCkgPyBhZG9wdFJlZihuZXcgRXdrUGFnZUdyb3Vw
KGRlZmF1bHRJZGVudGlmaWVyKSkgOiBhZG9wdFJlZihuZXcgRXdrUGFnZUdyb3VwKGlkZW50aWZp
ZXIpKTsKKyAgICB9CisKKyAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCgpIHsgcmV0dXJu
IG1fcGFnZUdyb3VwUmVmLmdldCgpOyB9CisKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNv
bnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEVpbmFfTGlzdCogd2hp
dGVsaXN0LCBFaW5hX0xpc3QqIGJsYWNrbGlzdCwgYm9vbCBtYWluRnJhbWVPbmx5KTsKKyAgICB2
b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IEV3a1BhZ2VHcm91cChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpOworICAgIGV4cGxpY2l0
IEV3a1BhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlR3JvdXBSZWY+IG1fcGFnZUdyb3VwUmVmOworfTsKKworI2VuZGlmIC8vIGV3a19w
YWdlX2dyb3VwX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCmluZGV4IDRmMWExMzFkMjVkNzQzNTRkZTBiZTkzZjFiYmIzZDY4Zjk3MTdl
M2IuLjdhZTE4YzdmMzhlY2Q1Yzc1MzllM2FiMzg5MGJjOGYzM2FmZjM2NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTM0LDYgKzM0LDgg
QEAKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KQEAgLTg2LDkgKzg4LDkgQEAgRWluYV9Cb29s
IGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAg
IHJldHVybiBFd2tWaWV3Ojppbml0U21hcnRDbGFzc0ludGVyZmFjZSgqYXBpKTsKIH0KIAotRXZh
c19PYmplY3QqIGV3a192aWV3X3NtYXJ0X2FkZChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNt
YXJ0LCBFd2tfQ29udGV4dCogY29udGV4dCkKK0V2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9h
ZGQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQs
IEV3a19QYWdlX0dyb3VwKiBwYWdlR3JvdXApCiB7Ci0gICAgcmV0dXJuIEV3a1ZpZXc6OmNyZWF0
ZUV2YXNPYmplY3QoY2FudmFzLCBzbWFydCwgZXdrX29iamVjdF9jYXN0PEV3a0NvbnRleHQqPihj
b250ZXh0KSk7CisgICAgcmV0dXJuIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBz
bWFydCwgZXdrX29iamVjdF9jYXN0PEV3a0NvbnRleHQqPihjb250ZXh0KSwgZXdrX29iamVjdF9j
YXN0PEV3a1BhZ2VHcm91cCo+KHBhZ2VHcm91cCkpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3Zp
ZXdfYWRkX3dpdGhfY29udGV4dChFdmFzKiBjYW52YXMsIEV3a19Db250ZXh0KiBjb250ZXh0KQpA
QCAtMTA4LDYgKzExMCwxMyBAQCBFd2tfQ29udGV4dCogZXdrX3ZpZXdfY29udGV4dF9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgcmV0dXJuIGltcGwtPmV3a0NvbnRleHQoKTsK
IH0KIAorRXdrX1BhZ2VfR3JvdXAqIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBpbXBsLCAwKTsKKworICAgIHJldHVybiBpbXBsLT5ld2tQYWdlR3JvdXAoKTsKK30KKwog
RWluYV9Cb29sIGV3a192aWV3X3VybF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNo
YXIqIHVybCkKIHsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1w
bCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
aW5kZXggNWI5MjNjNDJjNjZiZWFjMWZhZTI0NDc1ZjYyMjNmYjYyZDJjY2QxMy4uY2QwZDMxNzYz
Y2IzMDRiZmMxOTNmMjA3NmNhMmZkMWE2OTE3YmQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAiZXdr
X2NvbnRleHRfbWVudS5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKICNpbmNsdWRl
ICJld2tfZXJyb3IuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1ZGUgImV3
a19wb3B1cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgogI2luY2x1
ZGUgImV3a19zZXR0aW5ncy5oIgpAQCAtMzE2LDEwICszMTcsMTEgQEAgRUFQSSBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc21hcnRfY2xhc3Nfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpOwogICog
QHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcgb2JqZWN0CiAg
KiBAcGFyYW0gc21hcnQgRXZhc19TbWFydCBvYmplY3QuIEl0cyB0eXBlIHNob3VsZCBiZSBFV0tf
VklFV19UWVBFX1NUUgogICogQHBhcmFtIGNvbnRleHQgRXdrX0NvbnRleHQgb2JqZWN0IHdoaWNo
IGlzIHVzZWQgZm9yIGluaXRpYWxpemluZworICogQHBhcmFtIHBhZ2VHcm91cCBFd2tfUGFnZV9H
cm91cCBvYmplY3Qgd2hpY2ggaXMgdXNlZCBmb3IgaW5pdGlhbGl6aW5nCiAgKgogICogQHJldHVy
biB2aWV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQogICovCi1FQVBJ
IEV2YXNfT2JqZWN0ICpld2tfdmlld19zbWFydF9hZGQoRXZhcyAqZSwgRXZhc19TbWFydCAqc21h
cnQsIEV3a19Db250ZXh0ICpjb250ZXh0KTsKK0VBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X3Nt
YXJ0X2FkZChFdmFzICplLCBFdmFzX1NtYXJ0ICpzbWFydCwgRXdrX0NvbnRleHQgKmNvbnRleHQs
IEV3a19QYWdlX0dyb3VwICpwYWdlR3JvdXApOwogCiAvKioKICAqIENyZWF0ZXMgYSBuZXcgRUZM
IFdlYktpdCB2aWV3IG9iamVjdC4KQEAgLTM1MCw2ICszNTIsMTUgQEAgRUFQSSBFdmFzX09iamVj
dCAqZXdrX3ZpZXdfYWRkX3dpdGhfY29udGV4dChFdmFzICplLCBFd2tfQ29udGV4dCAqY29udGV4
dCk7CiBFQVBJIEV3a19Db250ZXh0ICpld2tfdmlld19jb250ZXh0X2dldChjb25zdCBFdmFzX09i
amVjdCAqbyk7CiAKIC8qKgorICogR2V0cyB0aGUgRXdrX1BhZ2VfR3JvdXAgb2YgdGhpcyB2aWV3
LgorICoKKyAqIEBwYXJhbSBvIHRoZSB2aWV3IG9iamVjdCB0byBnZXQgdGhlIEV3a19QYWdlX0dy
b3VwCisgKgorICogQHJldHVybiB0aGUgRXdrX1BhZ2VfR3JvdXAgb2YgdGhpcyB2aWV3IG9yIEBj
IE5VTEwgb24gZmFpbHVyZQorICovCitFQVBJIEV3a19QYWdlX0dyb3VwICpld2tfdmlld19wYWdl
X2dyb3VwX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgogICogQXNrcyB0aGUgb2Jq
ZWN0IHRvIGxvYWQgdGhlIGdpdmVuIFVSTC4KICAqCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBsb2FkIEBhIFVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFz
ZS5jcHAKaW5kZXggZTY0ZjRjYzc3NTM2MjJkNzU4NDFmODE0Njg4ZWE1MmViZmM2NTI0MS4uNmU4
YmFlMmQ3MDZhN2JlNDM5ZWQ4OTQzYjI3MTY3MmVjMWEyOWJmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC02MSwxMSArNjEsMTQgQEAgdm9p
ZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCiAgICAgRXZhc19TbWFydCogc21hcnQgPSBldmFz
X3NtYXJ0X2NsYXNzX25ldygmbV9ld2tWaWV3Q2xhc3Muc2MpOwogCiAgICAgRXdrX0NvbnRleHQq
IG5ld0NvbnRleHQgPSBld2tfY29udGV4dF9uZXcoKTsKLSAgICBtX3dlYlZpZXcgPSBld2tfdmll
d19zbWFydF9hZGQoZXZhcywgc21hcnQsIG5ld0NvbnRleHQpOworICAgIEV3a19QYWdlX0dyb3Vw
KiBuZXdQYWdlR3JvdXAgPSBld2tfcGFnZV9ncm91cF9jcmVhdGUoIlVuaXRUZXN0Iik7CisgICAg
bV93ZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBuZXdDb250ZXh0LCBu
ZXdQYWdlR3JvdXApOworCiAgICAgLy8gQ2xlYXIgSFRUUCBjYWNoZSBmaWxlcyBiZWZvcmUgcnVu
bmluZyB0aGUgdW5pdCB0ZXN0cywgd2hpY2ggcHJldmVudHMgCiAgICAgLy8gcGVyZm9ybWFuY2Ug
ZGVncmFkYXRpb24gZHVlIHRvIHNvIG1hbnkgY2FjaGUgZmlsZXMuCiAgICAgZXdrX2NvbnRleHRf
cmVzb3VyY2VfY2FjaGVfY2xlYXIobmV3Q29udGV4dCk7CiAgICAgZXdrX29iamVjdF91bnJlZihu
ZXdDb250ZXh0KTsKKyAgICBld2tfb2JqZWN0X3VucmVmKG5ld1BhZ2VHcm91cCk7CiAKICAgICBl
d2tfdmlld190aGVtZV9zZXQobV93ZWJWaWV3LCBlbnZpcm9ubWVudC0+ZGVmYXVsdFRoZW1lKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCmluZGV4IGJk
NWU0Yjk5NTg1ZmQ4OWE3NzdiYTA3YzQwMWQxY2VmMzE5M2I4N2EuLjU5MjRiZTY0MWZjZDdjYmI1
YTY1ZmU5MTMzZWZiMzM4MjcwMTM1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0QmFzZS5oCkBAIC0zNSw2ICszNSw3IEBAIHB1YmxpYzoKICAgICBFY29yZV9FdmFz
KiBiYWNraW5nU3RvcmUoKSB7IHJldHVybiBtX2Vjb3JlRXZhczsgfQogICAgIEV2YXMqIGNhbnZh
cygpIHsgcmV0dXJuIGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzKTsgfQogICAgIEV2YXNfT2Jq
ZWN0KiB3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgdm9pZCBzZXRXZWJWaWV3
KEV2YXNfT2JqZWN0KiB3ZWJWaWV3KSB7IG1fd2ViVmlldyA9IHdlYlZpZXc7IH0KICAgICBFd2tf
Vmlld19TbWFydF9DbGFzcyogZXdrVmlld0NsYXNzKCkgeyByZXR1cm4gJm1fZXdrVmlld0NsYXNz
OyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYWdlX2dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYWdlX2dyb3VwLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYTExYzQ0ZGE4Nzg4ZDIyYjY2YmQ0NDE0MTE1MzU4NTQ0NzIzYzQxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Bh
Z2VfZ3JvdXAuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
QmFzZS5oIgorCit1c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVu
aXRUZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50OworCitzdGF0aWMgY29uc3QgY2hhciBodG1s
U3RyaW5nW10gPSAiPGh0bWw+PGhlYWQ+PHRpdGxlPkZvbzwvdGl0bGU+PC9oZWFkPjxib2R5IHN0
eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQnPjxzY3JpcHQ+ZG9jdW1lbnQudGl0bGU9d2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
YmFja2dyb3VuZC1jb2xvcicpPC9zY3JpcHQ+SEVMTE88L2JvZHk+PC9odG1sPiI7CitzdGF0aWMg
Y29uc3QgY2hhciB1c2VyU3R5bGVTaGVldFtdID0gImJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbiAhaW1wb3J0YW50OyB9IjsKK3N0YXRpYyBjb25zdCBjaGFyIGdyZWVuSW5SR0JbXSA9ICJy
Z2IoMCwgMTI4LCAwKSI7CitzdGF0aWMgY29uc3QgY2hhciByZWRJblJHQltdID0gInJnYigyNTUs
IDAsIDApIjsKKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYWdlX2dyb3VwKQorewor
ICAgIEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJihld2tWaWV3Q2xh
c3MoKS0+c2MpKTsKKyAgICBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3Jv
dXBfY3JlYXRlKCJ0ZXN0Iik7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKworICAgIEV2
YXNfT2JqZWN0KiBuZXdXZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGNhbnZhcygpLCBzbWFy
dCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3
KG5ld1dlYlZpZXcpOworCisgICAgQVNTRVJUX0VRKHBhZ2VHcm91cCwgZXdrX3ZpZXdfcGFnZV9n
cm91cF9nZXQobmV3V2ViVmlldykpOworICAgIGV3a19vYmplY3RfdW5yZWYocGFnZUdyb3VwKTsK
K30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVf
c2hlZXRfYWRkX2JlZm9yZV9jcmVhdGluZ192aWV3KQoreworICAgIEV2YXNfU21hcnQqIHNtYXJ0
ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJihld2tWaWV3Q2xhc3MoKS0+c2MpKTsKKyAgICBFd2tf
UGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKCJ0ZXN0Iik7Cisg
ICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKworICAgIC8vIEFkZCBhIHVzZXIgc3R5bGUgc2hl
ZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYmVmb3JlIGNyZWF0aW5nIGEgdmlldworICAgIGV3a19wYWdl
X2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwgdXNlclN0eWxlU2hlZXQsIDAs
IDAsIDAsIHRydWUpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IHdlYiB2aWV3IHdpdGggdGhpcyBw
YWdlIGdyb3VwCisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcgPSBld2tfdmlld19zbWFydF9h
ZGQoY2FudmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpLCBwYWdlR3JvdXAp
OworICAgIHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBld2tfb2JqZWN0X3VucmVmKHBh
Z2VHcm91cCk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdlYlZpZXcoKSwgZW52aXJvbm1lbnQt
PmRlZmF1bHRUaGVtZSgpKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUod2ViVmlldygpLCBlbnZp
cm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5kZWZhdWx0SGVpZ2h0KCkpOwor
ICAgIGV2YXNfb2JqZWN0X3Nob3cod2ViVmlldygpKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19z
ZXQod2ViVmlldygpLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2Vi
VmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRs
ZUNoYW5nZWRUbyhncmVlbkluUkdCKSk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBl
d2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZF9hZnRlcl9jcmVhdGluZ192aWV3KQor
eworICAgIC8vIEFkZCBhIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYWZ0ZXIg
Y3JlYXRpbmcgYSB2aWV3CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a192aWV3
X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSk7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsK
KyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdlR3JvdXAsIHVzZXJT
dHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xv
YWQod2ViVmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50
aWxUaXRsZUNoYW5nZWRUbyhncmVlbkluUkdCKSk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RC
YXNlLCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKQoreworICAg
IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJihld2tWaWV3Q2xhc3Mo
KS0+c2MpKTsKKyAgICBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBf
Y3JlYXRlKCJ0ZXN0Iik7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKworICAgIC8vIEFk
ZCBhIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYmVmb3JlIGNyZWF0aW5nIGEg
dmlldworICAgIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwg
dXNlclN0eWxlU2hlZXQsIDAsIDAsIDAsIHRydWUpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IHdl
YiB2aWV3IHdpdGggdGhpcyBwYWdlIGdyb3VwCisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcg
PSBld2tfdmlld19zbWFydF9hZGQoY2FudmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0
X2dldCgpLCBwYWdlR3JvdXApOworICAgIHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBl
d2tfb2JqZWN0X3VucmVmKHBhZ2VHcm91cCk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdlYlZp
ZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKKyAgICBldmFzX29iamVjdF9yZXNp
emUod2ViVmlldygpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5k
ZWZhdWx0SGVpZ2h0KCkpOworICAgIGV2YXNfb2JqZWN0X3Nob3cod2ViVmlldygpKTsKKyAgICBl
dmFzX29iamVjdF9mb2N1c19zZXQod2ViVmlldygpLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0
bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKworICAgIC8vIFJl
bW92ZSBhbGwgdXNlciBzdHlsZSBzaGVldHMgaW4gdGhlIHBhZ2UgZ3JvdXAKKyAgICBld2tfcGFn
ZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKGV3a192aWV3X3BhZ2VfZ3JvdXBf
Z2V0KHdlYlZpZXcoKSkpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRv
KHJlZEluUkdCKSk7CisKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdl
IGdyb3VwIGFmdGVyIGNyZWF0aW5nIGEgdmlldworICAgIHBhZ2VHcm91cCA9IGV3a192aWV3X3Bh
Z2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSk7CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9z
aGVldF9hZGQocGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisgICAg
ZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGh0bWxTdHJpbmcsIDAsIDApOwor
CisgICAgLy8gUmVtb3ZlIGFsbCB1c2VyIHN0eWxlIHNoZWV0cyBpbiB0aGUgcGFnZSBncm91cAor
ICAgIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3JlbW92ZV9hbGwoZXdrX3ZpZXdf
cGFnZV9ncm91cF9nZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVGl0
bGVDaGFuZ2VkVG8ocmVkSW5SR0IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA5ZTIzZTVm
ZTMyODRlNjEwNWY3YTQxODlmYWEyMzhjYzY3ZDYzZGQyLi5lNDE4M2VlMjgzZTM5MjI4MGEyNjY1
ZDU4NDIyY2Q4MzFmYWMyYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC01NTcsNiArNTU3LDEz
IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19jb250ZXh0X2dldCkKICAgICBB
U1NFUlRfRVEoY29udGV4dCwgZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKSk7CiB9CiAK
K1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19wYWdlX2dyb3VwX2dldCkKK3sKKyAg
ICBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQod2Vi
VmlldygpKTsKKyAgICBBU1NFUlRfVFJVRShwYWdlR3JvdXApOworICAgIEFTU0VSVF9FUShwYWdl
R3JvdXAsIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSkpOworfQorCiBURVNUX0Yo
RVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudCkKIHsKICAgICBFaW5h
X0xpc3QqIHBvaW50cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4IGZhMmUwOGQ2MTBhZWZkN2FkYzQzZjFh
ZDY5ZGZhYzhlMjk1M2NhNTIuLmQ3NTgwMDFlNjkyMzM1YTU0NDViNmJmN2E0Y2Y5MTYxY2YzZGNi
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9y
UHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVj
dG9yUHJveHlFZmwuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXdrVmlldy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdr
X3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Vm
bEluc3BlY3RvclV0aWxpdGllcy5oPgpAQCAtMTAwLDcgKzEwMSw4IEBAIFdlYlBhZ2VQcm94eSog
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAKICAgICAv
LyBGSVhNRTogUmVmYWN0b3IgdG8gdXNlIFdLVmlld1JlZi4KICAgICBXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiA9IHRvQVBJKHBhZ2UoKS0+cHJvY2VzcygpLT5jb250ZXh0KCkpOwotICAgIG1faW5z
cGVjdG9yVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoZWNvcmVfZXZhc19nZXQobV9p
bnNwZWN0b3JXaW5kb3cpLCBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIHRvQVBJKGlu
c3BlY3RvclBhZ2VHcm91cCgpKSwgRXdrVmlldzo6TGVnYWN5QmVoYXZpb3IpOworICAgIG1faW5z
cGVjdG9yVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoZWNvcmVfZXZhc19nZXQobV9p
bnNwZWN0b3JXaW5kb3cpLCBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIEV3a1BhZ2VH
cm91cDo6Y3JlYXRlKHRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSksIEV3a1ZpZXc6OkxlZ2Fj
eUJlaGF2aW9yKTsKKwogICAgIGlmICghbV9pbnNwZWN0b3JWaWV3KQogICAgICAgICByZXR1cm4g
MDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDYzODYyMDJlODIxZjI1MWY0OTZmZmMyOGY5MGU1MTYxMzU4MDdlZTQuLjM5NDE4NTJkNzA5NzMw
NDk0NDFjM2Y4YjVlODI5YTNlNTVjZDEzMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0wMyAgSmlud29v
IFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBB
ZGQgYW4gQVBJIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHVzZXIgc3R5bGUgc2hlZXRzIGZyb20g
YSBwYWdlIGdyb3VwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgdGhlIHBhZ2UgZ3JvdXAgdG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdC4KKworICAg
ICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAgICAgICh3aW5kb3dfY3JlYXRlKToK
KwogMjAxMy0wMy0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTb21lIHBlcmYuIHRlc3RzIGhhdmUgdmFyaWFuY2VzIHRoYXQgZGlmZmVyIGdyZWF0bHkgYmV0
d2VlbiBydW5zCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jIGIvVG9v
bHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwppbmRleCBjZTgxNmVlYThlMmFhNzdhZTNkM2I2MDc1
NzM2Y2Q5ODExZTFjNDM5Li4yZWVmZjk3OWU1ODljZmRlYjQ3MjU1ODczODJiNTk3ZDlmZThmNzQ1
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL2VmbC9tYWluLmMKQEAgLTExODcsOCArMTE4Nyw5IEBAIHN0YXRpYyBCcm93c2Vy
X1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqb3BlbmVyLCBjb25zdCBjaGFyICp1
cmwsIGludCB3CiAgICAgICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSAoRXZhc19PYmplY3QqKVdLVmll
d0NyZWF0ZShldmFzLCAwLCAwKTsKICAgICB9IGVsc2UgewogICAgICAgICBFdmFzX1NtYXJ0ICpz
bWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZld2tWaWV3Q2xhc3MtPnNjKTsKLSAgICAgICAg
RXdrX0NvbnRleHQqIGNvbnRleHQgPSBvcGVuZXIgPyBld2tfdmlld19jb250ZXh0X2dldChvcGVu
ZXIpIDogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKLSAgICAgICAgd2luZG93LT5ld2tfdmll
dyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgY29udGV4dCk7CisgICAgICAgIEV3
a19Db250ZXh0ICpjb250ZXh0ID0gb3BlbmVyID8gZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVy
KSA6IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CisgICAgICAgIEV3a19QYWdlX0dyb3VwICpw
YWdlR3JvdXAgPSBvcGVuZXIgPyBld2tfdmlld19wYWdlX2dyb3VwX2dldChvcGVuZXIpIDogZXdr
X3BhZ2VfZ3JvdXBfY3JlYXRlKDApOworICAgICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3Zp
ZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBjb250ZXh0LCBwYWdlR3JvdXApOwogICAgIH0KICAg
ICBld2tfdmlld190aGVtZV9zZXQod2luZG93LT5ld2tfdmlldywgVEhFTUVfRElSICIvZGVmYXVs
dC5lZGoiKTsKICAgICBpZiAoZGV2aWNlX3BpeGVsX3JhdGlvKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191214</attachid>
            <date>2013-03-04 05:46:23 -0800</date>
            <delta_ts>2013-03-04 16:31:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130304224229.patch</filename>
            <type>text/plain</type>
            <size>36912</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjQ4YzlkMzA2ZDRkMmYw
ZjY0NTJhZjk4YmY1ZmI0MjgxMGQ5NjdlOC4uZTVjNjZjMTAxZTYxZjM5NjQ2OTA0ZjVkYzUwZjBi
YjY3NzViYTU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAzLTAzICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBDU1MyLjEgc3BlYywgdGhlIHVzZXIgbWF5
IGJlIGFibGUgdG8gc3BlY2lmeSBzdHlsZSBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGRv
Y3VtZW50LgorICAgICAgICBTbyB0aGlzIHBhdGNoIHByb3ZpZGVzIGFuIEFQSSBmb3IgYWRkaW5n
IGFuZCByZW1vdmluZyB1c2VyIHN0eWxlIHNoZWV0cyBmcm9tIGEgcGFnZSBncm91cC4KKyAgICAg
ICAgQWxzbyBpdCBpbXBsZW1lbnRzIEV3a1BhZ2VHcm91cCBBUEkgYXMgYW4gaW50ZXJmYWNlIGJl
dHdlZW4gdGhlIGFwcGxpY2F0aW9ucyBhbmQgV0tQYWdlR3JvdXAgQVBJLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcu
Y3BwOgorICAgICAgICAoY3JlYXRlV0tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgor
ICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6CisgICAgICAgIChFd2tWaWV3OjpjcmVhdGVFdmFz
T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAg
IChFd2tWaWV3Ojpld2tQYWdlR3JvdXApOgorICAgICAgICAoRXdrVmlldyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNy
ZWF0ZVdLQXJyYXkpOgorICAgICAgICAoRXdrUGFnZUdyb3VwOjpFd2tQYWdlR3JvdXApOgorICAg
ICAgICAoRXdrUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChFd2tQYWdl
R3JvdXA6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChld2tfcGFnZV9ncm91
cF9jcmVhdGUpOgorICAgICAgICAoZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQp
OgorICAgICAgICAoZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEV3a1BhZ2VHcm91cCk6CisgICAgICAgIChFd2tQYWdlR3JvdXA6OmNyZWF0
ZSk6CisgICAgICAgIChFd2tQYWdlR3JvdXA6OndrUGFnZUdyb3VwKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmlld19zbWFydF9hZGQp
OgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcDoKKyAgICAgICAgKEVXSzJVbml0VGVz
dDo6RVdLMlVuaXRUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oOgorICAgICAgICAoRVdLMlVu
aXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHA6IEFkZGVkLgorICAgICAg
ICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKwogMjAxMy0wMy0wMyAgSHVhbmcgRG9u
Z3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbRUZMXVtRVF1bV0sy
XSBUdXJuIG9uIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IgYWx3YXlzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ZmE0ZWM5NzUxYjRmNDFmMjg0YzEzOGI4NTlhYmI5
MDg4NWRkYmNlLi5iMTUzZGYxZTVlYTQ5NzA3ODQ1YzU1ZGY3ZDg3NzAwNDFlZjJjMWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAsNiArNzAsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9kYXRhLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmNwcAorICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wYWdlX2dyb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1
cF9tZW51LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAKQEAgLTI4Myw2
ICsyODQsNyBAQCBzZXQoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zhdmljb25fZGF0YWJhc2UuaCIKICAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19maWxlX2No
b29zZXJfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmgiCisgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21h
aW4uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgpAQCAt
Mzg0LDYgKzM4Niw3IEBAIHNldChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAgdGVzdF9ld2sy
X2Zhdmljb25fZGF0YWJhc2UKICAgICB0ZXN0X2V3azJfZmlsZV9jaG9vc2VyX3JlcXVlc3QKICAg
ICB0ZXN0X2V3azJfb2JqZWN0CisgICAgdGVzdF9ld2syX3BhZ2VfZ3JvdXAKICAgICB0ZXN0X2V3
azJfcG9wdXBfbWVudQogICAgIHRlc3RfZXdrMl9yZWZwdHJfZXZhc19vYmplY3QKICAgICB0ZXN0
X2V3azJfc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcAppbmRleCAxNzc5MTFmYjIzMzkyYmUyZGVmODM0YzM1Y2Q2NWIyYzYwMGI4OTM5Li43
NWU0ZDgyOTBmM2E2YjJhNWU1NWQ3MGJmMDNhNGRhNWVkYTMwMDRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgImV3
a19jb250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgi
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlQ2Fpcm8uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKQEAgLTMxLDcgKzMyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHN0YXRpYyBp
bmxpbmUgV0tWaWV3UmVmIGNyZWF0ZVdLVmlldyhFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIEV3a1ZpZXc6OlZpZXdCZWhh
dmlvciBiZWhhdmlvcikKIHsKICAgICBSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCA9IGNvbnRl
eHRSZWYgPyBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZikgOiBFd2tDb250ZXh0OjpkZWZh
dWx0Q29udGV4dCgpOwotICAgIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0ID0gRXdrVmlldzo6Y3Jl
YXRlRXZhc09iamVjdChjYW52YXMsIGNvbnRleHQsIHBhZ2VHcm91cFJlZiwgYmVoYXZpb3IpOwor
ICAgIFJlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IHBhZ2VHcm91cFJlZiA/IEV3a1Bh
Z2VHcm91cDo6Y3JlYXRlKHBhZ2VHcm91cFJlZikgOiBFd2tQYWdlR3JvdXA6OmNyZWF0ZSgpOwor
CisgICAgRXZhc19PYmplY3QqIGV2YXNPYmplY3QgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0
KGNhbnZhcywgY29udGV4dCwgcGFnZUdyb3VwLCBiZWhhdmlvcik7CiAgICAgaWYgKCFldmFzT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0VXZWJLaXQyLmgKaW5kZXggM2EyODY1ZWU3OTMxZTVkMWQ0ZDMwZGZlNTAwOTZmNzRjZjRm
ZGQ1My4uYTljOGExNGU3OGIxZmVlNjkxOTU5Y2QyY2I3MmE1MDVlZmRiZTYzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC00Niw2ICs0Niw3IEBA
CiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fZGF0YS5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0
aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2luY2x1ZGUgImV3a19vYmplY3QuaCIKKyNpbmNsdWRl
ICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51LmgiCiAjaW5jbHVk
ZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXgg
MTQ2MGI3MDZmODFlNTJhYjIxYWNkMjNiYWM2NzcxMTI3ZjE5ZmUwNy4uMWVmOTI4YmFmMzBhMWEw
MmYzMDY1ZTMyNjYwMTM0ZmYzMTFiNzE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJld2tfY29u
dGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAj
aW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19w
YWdlX2dyb3VwX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdr
X3ByaXZhdGUuaCIKQEAgLTIyOCwxMSArMjI5LDEyIEBAIHZvaWQgRXdrVmlld0V2ZW50SGFuZGxl
cjxFVkFTX0NBTExCQUNLX0hJREU+OjpoYW5kbGVFdmVudCh2b2lkKiBkYXRhLCBFdmFzKiwgRXZh
CiAKIC8vIEV3a1ZpZXcgaW1wbGVtZW50YXRpb24uCiAKLUV3a1ZpZXc6OkV3a1ZpZXcoRXZhc19P
YmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCitFd2tWaWV3OjpFd2tW
aWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRl
eHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhh
dmlvcikKICAgICA6IG1fZXZhc09iamVjdChldmFzT2JqZWN0KQogICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCisgICAgLCBtX3BhZ2VHcm91cChwYWdlR3JvdXApCiAgICAgLCBtX3BlbmRpbmdTdXJm
YWNlUmVzaXplKGZhbHNlKQotICAgICwgbV93ZWJWaWV3KGFkb3B0UmVmKG5ldyBXZWJWaWV3KHRv
SW1wbChtX2NvbnRleHQtPndrQ29udGV4dCgpKSwgdG9JbXBsKHBhZ2VHcm91cCksIHRoaXMpKSkK
KyAgICAsIG1fd2ViVmlldyhhZG9wdFJlZihuZXcgV2ViVmlldyh0b0ltcGwobV9jb250ZXh0LT53
a0NvbnRleHQoKSksIHRvSW1wbChtX3BhZ2VHcm91cC0+d2tQYWdlR3JvdXAoKSksIHRoaXMpKSkK
ICAgICAsIG1fcGFnZUxvYWRDbGllbnQoUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhp
cykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQYWdlVUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
QEAgLTMwMCw3ICszMDIsNyBAQCBFd2tWaWV3Ojp+RXdrVmlldygpCiAgICAgaWNvbkRhdGFiYXNl
LT51bndhdGNoQ2hhbmdlcyhFd2tWaWV3OjpoYW5kbGVGYXZpY29uQ2hhbmdlZCk7CiB9CiAKLUV2
YXNfT2JqZWN0KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19T
bWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCitFdmFzX09iamVjdCogRXdr
Vmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQ
YXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBw
YWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnQsIDApOwpAQCAtMzE3LDE1ICszMTksMTQgQEAgRXZhc19PYmplY3QqIEV3a1Zp
ZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFz
c1JlZlAKIAogICAgIEFTU0VSVCghc21hcnREYXRhLT5wcml2KTsKIAotICAgIC8vIERlZmF1bHQg
V2ViUGFnZUdyb3VwIGlzIGNyZWF0ZWQgaW4gV2ViQ29udGV4dCBjb25zdHJ1Y3RvciBpZiB0aGUg
cGFnZUdyb3VwUmVmIGlzIDAsCi0gICAgLy8gc28gd2UgZG8gbm90IG5lZWQgdG8gY3JlYXRlIGl0
IGhlcmUuCi0gICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1ZpZXcoZXZhc09iamVjdCwgY29u
dGV4dCwgcGFnZUdyb3VwUmVmLCBiZWhhdmlvcik7CisgICAgc21hcnREYXRhLT5wcml2ID0gcGFn
ZUdyb3VwID8gbmV3IEV3a1ZpZXcoZXZhc09iamVjdCwgY29udGV4dCwgcGFnZUdyb3VwLCBiZWhh
dmlvcikgOiBuZXcgRXdrVmlldyhldmFzT2JqZWN0LCBjb250ZXh0LCBFd2tQYWdlR3JvdXA6OmNy
ZWF0ZSgpLCBiZWhhdmlvcik7CisKICAgICByZXR1cm4gZXZhc09iamVjdDsKIH0KIAotRXZhc19P
YmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRy
PEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgVmlld0Jl
aGF2aW9yIGJlaGF2aW9yKQorRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3Qo
RXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8
RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKIHsKLSAgICBy
ZXR1cm4gY3JlYXRlRXZhc09iamVjdChjYW52YXMsIGRlZmF1bHRTbWFydENsYXNzSW5zdGFuY2Uo
KSwgY29udGV4dCwgcGFnZUdyb3VwUmVmLCBiZWhhdmlvcik7CisgICAgcmV0dXJuIGNyZWF0ZUV2
YXNPYmplY3QoY2FudmFzLCBkZWZhdWx0U21hcnRDbGFzc0luc3RhbmNlKCksIGNvbnRleHQsIHBh
Z2VHcm91cCwgYmVoYXZpb3IpOwogfQogCiBib29sIEV3a1ZpZXc6OmluaXRTbWFydENsYXNzSW50
ZXJmYWNlKEV3a19WaWV3X1NtYXJ0X0NsYXNzJiBhcGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggNzFkYWQyZDU3YTcwMWU2ZjU5MmMzYzY2N2M0ODEz
NDU3ODBlMTc1Mi4uOGI0NTk0MWI3ODgxZWM0YTk2MWQ4YTAzZGYyZjgxYWQ2ODk4ZDEyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtODcsNiArODcs
NyBAQCBjbGFzcyBFd2tDb250ZXh0OwogY2xhc3MgRXdrQmFja0ZvcndhcmRMaXN0OwogY2xhc3Mg
RXdrQ29sb3JQaWNrZXI7CiBjbGFzcyBFd2tDb250ZXh0TWVudTsKK2NsYXNzIEV3a1BhZ2VHcm91
cDsKIGNsYXNzIEV3a1BvcHVwTWVudTsKIGNsYXNzIEV3a1NldHRpbmdzOwogY2xhc3MgRXdrV2lu
ZG93RmVhdHVyZXM7CkBAIC0xMDYsOCArMTA3LDggQEAgcHVibGljOgogICAgICAgICBEZWZhdWx0
QmVoYXZpb3IKICAgICB9OwogCi0gICAgc3RhdGljIEV2YXNfT2JqZWN0KiBjcmVhdGVFdmFzT2Jq
ZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4
dD4gY29udGV4dCwgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDAsIFZpZXdCZWhhdmlv
ciBiZWhhdmlvciA9IEV3a1ZpZXc6OkRlZmF1bHRCZWhhdmlvcik7Ci0gICAgc3RhdGljIEV2YXNf
T2JqZWN0KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250
ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZpb3IpOworICAgIHN0YXRpYyBFdmFz
X09iamVjdCogY3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0
LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsICBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91
cD4gcGFnZUdyb3VwID0gMCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVs
dEJlaGF2aW9yKTsKKyAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZUV2YXNPYmplY3QoRXZh
cyogY2FudmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdr
UGFnZUdyb3VwPiBwYWdlR3JvdXAgPSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3
OjpEZWZhdWx0QmVoYXZpb3IpOwogCiAgICAgc3RhdGljIGJvb2wgaW5pdFNtYXJ0Q2xhc3NJbnRl
cmZhY2UoRXdrX1ZpZXdfU21hcnRfQ2xhc3MmKTsKIApAQCAtMTIwLDYgKzEyMSw3IEBAIHB1Ymxp
YzoKIAogICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV93ZWJWaWV3
LT5wYWdlKCk7IH0KICAgICBFd2tDb250ZXh0KiBld2tDb250ZXh0KCkgeyByZXR1cm4gbV9jb250
ZXh0LmdldCgpOyB9CisgICAgRXdrUGFnZUdyb3VwKiBld2tQYWdlR3JvdXAoKSB7IHJldHVybiBt
X3BhZ2VHcm91cC5nZXQoKTsgfQogICAgIEV3a1NldHRpbmdzKiBzZXR0aW5ncygpIHsgcmV0dXJu
IG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICBFd2tCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJk
TGlzdCgpIHsgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0LmdldCgpOyB9CiAgICAgRXdrV2luZG93
RmVhdHVyZXMqIHdpbmRvd0ZlYXR1cmVzKCk7CkBAIC0yMTMsNyArMjE1LDcgQEAgcHVibGljOgog
ICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiB0YWtlU25hcHNob3QoKTsKIAogcHJpdmF0
ZToKLSAgICBFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRyPEV3a0Nv
bnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yKTsK
KyAgICBFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRyPEV3a0NvbnRl
eHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhh
dmlvcik7CiAgICAgfkV3a1ZpZXcoKTsKIAogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSgpIGNvbnN0OwpAQCAtMjUyLDYgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gTm90ZSwg
aW5pdGlhbGl6YXRpb24gb3JkZXIgbWF0dGVycy4KICAgICBFdmFzX09iamVjdCogbV9ldmFzT2Jq
ZWN0OwogICAgIFJlZlB0cjxFd2tDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmUHRyPEV3a1Bh
Z2VHcm91cD4gbV9wYWdlR3JvdXA7CiAgICAgT3duUHRyPEV2YXNfR0w+IG1fZXZhc0dMOwogICAg
IE93blB0cjxXZWJLaXQ6OkV2YXNHTENvbnRleHQ+IG1fZXZhc0dMQ29udGV4dDsKICAgICBPd25Q
dHI8V2ViS2l0OjpFdmFzR0xTdXJmYWNlPiBtX2V2YXNHTFN1cmZhY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzgwNDBjODBmMGUwZTcyY2I0YTNhZDA4ZjRkYjZhMmMyNjEzMzhhMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmNw
cApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVs
ZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKKworI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRlICJXS1BhZ2VHcm91cC5oIgorI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgV0tBcnJheVJlZiBjcmVhdGVXS0Fy
cmF5KEVpbmFfTGlzdCogYXJyYXkpCit7CisgICAgdW5zaWduZWQgY291bnQgPSBlaW5hX2xpc3Rf
Y291bnQoYXJyYXkpOworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybiBXS0FycmF5UmVm
KCk7CisKKyAgICBWZWN0b3I8V0tUeXBlUmVmPiBzdHJpbmdWZWN0b3I7CisgICAgc3RyaW5nVmVj
dG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgRWluYV9MaXN0KiBsID0g
MDsKKyAgICB2b2lkKiBkYXRhID0gMDsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChhcnJheSwgbCwg
ZGF0YSkKKyAgICAgICAgc3RyaW5nVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSkpKTsKKworICAgIHJldHVy
biBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoc3RyaW5nVmVjdG9yLmRhdGEoKSwgY291bnQp
OworfQorCitjb25zdCBjaGFyIEV3a1BhZ2VHcm91cDo6ZGVmYXVsdElkZW50aWZpZXJbXSA9ICJk
ZWZhdWx0UGFnZUdyb3VwSWRlbnRpZmllciI7CisKK0V3a1BhZ2VHcm91cDo6RXdrUGFnZUdyb3Vw
KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKKyAgICA6IG1fcGFnZUdyb3VwUmVmKHBhZ2VH
cm91cFJlZikKK3sKK30KKworRXdrUGFnZUdyb3VwOjpFd2tQYWdlR3JvdXAoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKQoreworICAgIG1fcGFnZUdyb3VwUmVmID0gYWRvcHRXSyhXS1BhZ2VHcm91
cENyZWF0ZVdpdGhJZGVudGlmaWVyKGFkb3B0V0sodG9Db3BpZWRBUEkoaWRlbnRpZmllcikpLmdl
dCgpKSk7Cit9CisKK3ZvaWQgRXdrUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBFaW5hX0xpc3QqIHdoaXRlTGlz
dCwgRWluYV9MaXN0KiBibGFja0xpc3QsIGJvb2wgbWFpbkZyYW1lT25seSkKK3sKKyAgICBBU1NF
UlQoc291cmNlKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1NvdXJjZSA9IGFk
b3B0V0sodG9Db3BpZWRBUEkoc291cmNlKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdr
QmFzZVVSTCA9IGFkb3B0V0sodG9Db3BpZWRVUkxBUEkoYmFzZVVSTCkpOworICAgIFdLUmV0YWlu
UHRyPFdLQXJyYXlSZWY+IHdrV2hpdGVsaXN0ID0gYWRvcHRXSyhjcmVhdGVXS0FycmF5KHdoaXRl
TGlzdCkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrQmxhY2tsaXN0ID0gYWRvcHRX
SyhjcmVhdGVXS0FycmF5KGJsYWNrTGlzdCkpOworICAgIFdLVXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lcyA9IG1haW5GcmFtZU9ubHkgPyBrV0tJbmplY3RJblRvcEZyYW1l
T25seSA6IGtXS0luamVjdEluQWxsRnJhbWVzOworCisgICAgV0tQYWdlR3JvdXBBZGRVc2VyU3R5
bGVTaGVldChtX3BhZ2VHcm91cFJlZi5nZXQoKSwgd2tTb3VyY2UuZ2V0KCksIHdrQmFzZVVSTC5n
ZXQoKSwgd2tXaGl0ZWxpc3QuZ2V0KCksIHdrQmxhY2tsaXN0LmdldCgpLCBpbmplY3RlZEZyYW1l
cyk7Cit9CisKK3ZvaWQgRXdrUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQor
eworICAgIFdLUGFnZUdyb3VwUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKG1fcGFnZUdyb3VwUmVm
LmdldCgpKTsKK30KKworRXdrX1BhZ2VfR3JvdXAqIGV3a19wYWdlX2dyb3VwX2NyZWF0ZShjb25z
dCBjaGFyKiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBFd2tQYWdlR3JvdXA6OmNyZWF0ZShp
ZGVudGlmaWVyKS5sZWFrUmVmKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfcGFnZV9ncm91cF91c2Vy
X3N0eWxlX3NoZWV0X2FkZChFd2tfUGFnZV9Hcm91cCogZXdrUGFnZUdyb3VwLCBjb25zdCBjaGFy
KiBzb3VyY2UsIGNvbnN0IGNoYXIqIGJhc2VVUkwsIEVpbmFfTGlzdCogd2hpdGVMaXN0LCBFaW5h
X0xpc3QqIGJsYWNrTGlzdCwgRWluYV9Cb29sIG1haW5GcmFtZU9ubHkpCit7CisgICAgRVdLX09C
Sl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrUGFnZUdyb3VwLCBld2tQYWdlR3JvdXAsIGltcGwsIGZh
bHNlKTsKKworICAgIGltcGwtPmFkZFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgYmFzZVVSTCwgd2hp
dGVMaXN0LCBibGFja0xpc3QsIG1haW5GcmFtZU9ubHkpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK0VpbmFfQm9vbCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxs
KEV3a19QYWdlX0dyb3VwKiBld2tQYWdlR3JvdXApCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9P
Ul9SRVRVUk4oRXdrUGFnZUdyb3VwLCBld2tQYWdlR3JvdXAsIGltcGwsIGZhbHNlKTsKKworICAg
IGltcGwtPnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9n
cm91cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNGY5ZjRiODgwMjQzNmJiYzIyYzVkMjcwYzE1YzY2NDQ2NWJhMmVlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bh
Z2VfZ3JvdXAuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgor
ICogQGZpbGUgICAgZXdrX3BhZ2VfZ3JvdXAuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBF
d2sgUGFnZSBHcm91cCBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfcGFnZV9ncm91cF9oCisjZGVm
aW5lIGV3a19wYWdlX2dyb3VwX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxFdmFz
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisg
KiBEZWNsYXJlIEV3a19QYWdlX0dyb3VwIGFzIEV3a19PYmplY3QuCisgKgorICogQHNlZSBFd2tf
T2JqZWN0CisgKi8KK3R5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfUGFnZV9Hcm91cDsKKwor
LyoqCisgKiBDcmVhdGVzIGEgbmV3IEV3a19QYWdlX0dyb3VwLgorICoKKyAqIFRoZSByZXR1cm5l
ZCBFd2tfUGFnZV9Hcm91cCBvYmplY3QgQGIgc2hvdWxkIGJlIHVucmVmJ2VkIGFmdGVyIHVzZS4K
KyAqCisgKiBAcmV0dXJuIEV3a19QYWdlX0dyb3VwIG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5V
TEwgb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX29iamVjdF91bnJlZgorICovCitFQVBJIEV3
a19QYWdlX0dyb3VwICpld2tfcGFnZV9ncm91cF9jcmVhdGUoY29uc3QgY2hhciAqaWRlbnRpZmll
cik7CisKKy8qKgorICogQWRkcyB0aGUgdXNlciBzdHlsZSBzaGVldCB0byB0aGlzIHBhZ2UgZ3Jv
dXAuCisgKgorICogQHBhcmFtIHBhZ2VfZ3JvdXAgZXdrX3BhZ2VfZ29ydXAgb2JqZWN0IHRvIGFk
ZCB0aGUgdXNlciBzdHlsZSBzaGVldAorICogQHBhcmFtIHNvdXJjZSB0aGUgdXNlciBzdHlsZSBz
aGVldAorICogQHBhcmFtIHVybCBiYXNlVVJMCisgKiBAcGFyYW0gd2hpdGVfbGlzdCB1cmwgbGlz
dCB0byBhbGxvdyBhZGRpbmcgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJhbSBibGFja19s
aXN0IHVybCBsaXN0IHRvIGRpc2FsbG93IGFkZGluZyB0aGUgdXNlciBzdHlsZSBzaGVldAorICog
QHBhcmFtIG1haW5fZnJhbWVfb25seSBhIHN0YXRlIHRvIGFwcGx5IHRoZSB1c2VyIHN0eWxlIHNo
ZWV0IG9ubHkgdG8gdGhlIG1haW5mcmFtZQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlm
IHRoZSB1c2VyIHN0eWxlIHNoZWV0IGlzIGFkZGVkIHRvIHRoZSBwYWdlIGdyb3VwLCBvcgorICog
ICAgICAgICBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tf
cGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChFd2tfUGFnZV9Hcm91cCAqcGFnZV9ncm91
cCwgY29uc3QgY2hhciAqc291cmNlLCBjb25zdCBjaGFyICpiYXNlX3VybCwgRWluYV9MaXN0ICp3
aGl0ZV9saXN0LCBFaW5hX0xpc3QgKmJsYWNrX2xpc3QsIEVpbmFfQm9vbCBtYWluX2ZyYW1lX29u
bHkpOworCisvKioKKyAqIFJlbW92ZSBhbGwgdGhlIHVzZXIgc3R5bGUgc2hlZXRzIGZyb20gdGhp
cyBwYWdlIGdyb3VwLgorICoKKyAqIEBwYXJhbSBwYWdlX2dyb3VwIHBhZ2UgZ3JvdXAgb2JqZWN0
IHRvIHJlbW92ZSBhbGwgdGhlIHVzZXIgc3R5bGUgc2hlZXRzCisgKgorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgYWxsIHRoZSB1c2VyIHN0eWxlIHNoZWV0IGFyZSByZW1vdmVkIGZyb20gdGhl
IHBhZ2UgZ3JvdXAsIG9yCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3JlbW92ZV9h
bGwoRXdrX1BhZ2VfR3JvdXAgKnBhZ2VfZ3JvdXApOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX3BhZ2VfZ3JvdXBfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBmYjRjNWQ3NzQ2YTg1ODUyN2FhNjMxNjZlNjAxNmYwYzg4NGNhMjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9n
cm91cF9wcml2YXRlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIGV3a19wYWdlX2dyb3VwX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcGFnZV9ncm91cF9w
cml2YXRlX2gKKworI2luY2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEV2
YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tS
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK2NsYXNzIEV3a1ZpZXc7CisK
K2NsYXNzIEV3a1BhZ2VHcm91cCA6IHB1YmxpYyBFd2tPYmplY3QgeworcHVibGljOgorICAgIEVX
S19PQkpFQ1RfREVDTEFSRShFd2tQYWdlR3JvdXApCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxF
d2tQYWdlR3JvdXA+IGNyZWF0ZShXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a1BhZ2VHcm91cChwYWdlR3JvdXBSZWYpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIgPSBkZWZhdWx0SWRlbnRpZmllcikKKyAgICB7CisgICAgICAg
IHJldHVybiBpZGVudGlmaWVyLmlzRW1wdHkoKSA/IGFkb3B0UmVmKG5ldyBFd2tQYWdlR3JvdXAo
ZGVmYXVsdElkZW50aWZpZXIpKSA6IGFkb3B0UmVmKG5ldyBFd2tQYWdlR3JvdXAoaWRlbnRpZmll
cikpOworICAgIH0KKworICAgIFdLUGFnZUdyb3VwUmVmIHdrUGFnZUdyb3VwKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlR3JvdXBSZWYuZ2V0KCk7IH0KKworICAgIHZvaWQgYWRkVXNlclN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgRWluYV9MaXN0
KiB3aGl0ZWxpc3QsIEVpbmFfTGlzdCogYmxhY2tsaXN0LCBib29sIG1haW5GcmFtZU9ubHkpOwor
ICAgIHZvaWQgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgRXdrUGFnZUdyb3VwKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZik7CisgICAgZXhw
bGljaXQgRXdrUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CisKKyAgICBzdGF0
aWMgY29uc3QgY2hhciBkZWZhdWx0SWRlbnRpZmllcltdOworCisgICAgV0tSZXRhaW5QdHI8V0tQ
YWdlR3JvdXBSZWY+IG1fcGFnZUdyb3VwUmVmOworfTsKKworI2VuZGlmIC8vIGV3a19wYWdlX2dy
b3VwX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCmluZGV4IDRmMWExMzFkMjVkNzQzNTRkZTBiZTkzZjFiYmIzZDY4Zjk3MTdlM2IuLjdh
ZTE4YzdmMzhlY2Q1Yzc1MzllM2FiMzg5MGJjOGYzM2FmZjM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNp
bmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3BhZ2VfZ3JvdXAuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5j
bHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KQEAgLTg2LDkgKzg4LDkgQEAgRWluYV9Cb29sIGV3a192
aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAgIHJldHVy
biBFd2tWaWV3Ojppbml0U21hcnRDbGFzc0ludGVyZmFjZSgqYXBpKTsKIH0KIAotRXZhc19PYmpl
Y3QqIGV3a192aWV3X3NtYXJ0X2FkZChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBF
d2tfQ29udGV4dCogY29udGV4dCkKK0V2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZh
cyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQsIEV3a19Q
YWdlX0dyb3VwKiBwYWdlR3JvdXApCiB7Ci0gICAgcmV0dXJuIEV3a1ZpZXc6OmNyZWF0ZUV2YXNP
YmplY3QoY2FudmFzLCBzbWFydCwgZXdrX29iamVjdF9jYXN0PEV3a0NvbnRleHQqPihjb250ZXh0
KSk7CisgICAgcmV0dXJuIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBzbWFydCwg
ZXdrX29iamVjdF9jYXN0PEV3a0NvbnRleHQqPihjb250ZXh0KSwgZXdrX29iamVjdF9jYXN0PEV3
a1BhZ2VHcm91cCo+KHBhZ2VHcm91cCkpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRk
X3dpdGhfY29udGV4dChFdmFzKiBjYW52YXMsIEV3a19Db250ZXh0KiBjb250ZXh0KQpAQCAtMTA4
LDYgKzExMCwxMyBAQCBFd2tfQ29udGV4dCogZXdrX3ZpZXdfY29udGV4dF9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiAgICAgcmV0dXJuIGltcGwtPmV3a0NvbnRleHQoKTsKIH0KIAor
RXdrX1BhZ2VfR3JvdXAqIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBp
bXBsLCAwKTsKKworICAgIHJldHVybiBpbXBsLT5ld2tQYWdlR3JvdXAoKTsKK30KKwogRWluYV9C
b29sIGV3a192aWV3X3VybF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVy
bCkKIHsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgZmFs
c2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXgg
NWI5MjNjNDJjNjZiZWFjMWZhZTI0NDc1ZjYyMjNmYjYyZDJjY2QxMy4uY2QwZDMxNzYzY2IzMDRi
ZmMxOTNmMjA3NmNhMmZkMWE2OTE3YmQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRl
eHRfbWVudS5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKICNpbmNsdWRlICJld2tf
ZXJyb3IuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1ZGUgImV3a19wb3B1
cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgogI2luY2x1ZGUgImV3
a19zZXR0aW5ncy5oIgpAQCAtMzE2LDEwICszMTcsMTEgQEAgRUFQSSBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc21hcnRfY2xhc3Nfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpOwogICogQHBhcmFt
IGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcgb2JqZWN0CiAgKiBAcGFy
YW0gc21hcnQgRXZhc19TbWFydCBvYmplY3QuIEl0cyB0eXBlIHNob3VsZCBiZSBFV0tfVklFV19U
WVBFX1NUUgogICogQHBhcmFtIGNvbnRleHQgRXdrX0NvbnRleHQgb2JqZWN0IHdoaWNoIGlzIHVz
ZWQgZm9yIGluaXRpYWxpemluZworICogQHBhcmFtIHBhZ2VHcm91cCBFd2tfUGFnZV9Hcm91cCBv
YmplY3Qgd2hpY2ggaXMgdXNlZCBmb3IgaW5pdGlhbGl6aW5nCiAgKgogICogQHJldHVybiB2aWV3
IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQogICovCi1FQVBJIEV2YXNf
T2JqZWN0ICpld2tfdmlld19zbWFydF9hZGQoRXZhcyAqZSwgRXZhc19TbWFydCAqc21hcnQsIEV3
a19Db250ZXh0ICpjb250ZXh0KTsKK0VBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X3NtYXJ0X2Fk
ZChFdmFzICplLCBFdmFzX1NtYXJ0ICpzbWFydCwgRXdrX0NvbnRleHQgKmNvbnRleHQsIEV3a19Q
YWdlX0dyb3VwICpwYWdlR3JvdXApOwogCiAvKioKICAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktp
dCB2aWV3IG9iamVjdC4KQEAgLTM1MCw2ICszNTIsMTUgQEAgRUFQSSBFdmFzX09iamVjdCAqZXdr
X3ZpZXdfYWRkX3dpdGhfY29udGV4dChFdmFzICplLCBFd2tfQ29udGV4dCAqY29udGV4dCk7CiBF
QVBJIEV3a19Db250ZXh0ICpld2tfdmlld19jb250ZXh0X2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7CiAKIC8qKgorICogR2V0cyB0aGUgRXdrX1BhZ2VfR3JvdXAgb2YgdGhpcyB2aWV3LgorICoK
KyAqIEBwYXJhbSBvIHRoZSB2aWV3IG9iamVjdCB0byBnZXQgdGhlIEV3a19QYWdlX0dyb3VwCisg
KgorICogQHJldHVybiB0aGUgRXdrX1BhZ2VfR3JvdXAgb2YgdGhpcyB2aWV3IG9yIEBjIE5VTEwg
b24gZmFpbHVyZQorICovCitFQVBJIEV3a19QYWdlX0dyb3VwICpld2tfdmlld19wYWdlX2dyb3Vw
X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgogICogQXNrcyB0aGUgb2JqZWN0IHRv
IGxvYWQgdGhlIGdpdmVuIFVSTC4KICAqCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBsb2Fk
IEBhIFVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAK
aW5kZXggZTY0ZjRjYzc3NTM2MjJkNzU4NDFmODE0Njg4ZWE1MmViZmM2NTI0MS4uNmU4YmFlMmQ3
MDZhN2JlNDM5ZWQ4OTQzYjI3MTY3MmVjMWEyOWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC02MSwxMSArNjEsMTQgQEAgdm9pZCBFV0sy
VW5pdFRlc3RCYXNlOjpTZXRVcCgpCiAgICAgRXZhc19TbWFydCogc21hcnQgPSBldmFzX3NtYXJ0
X2NsYXNzX25ldygmbV9ld2tWaWV3Q2xhc3Muc2MpOwogCiAgICAgRXdrX0NvbnRleHQqIG5ld0Nv
bnRleHQgPSBld2tfY29udGV4dF9uZXcoKTsKLSAgICBtX3dlYlZpZXcgPSBld2tfdmlld19zbWFy
dF9hZGQoZXZhcywgc21hcnQsIG5ld0NvbnRleHQpOworICAgIEV3a19QYWdlX0dyb3VwKiBuZXdQ
YWdlR3JvdXAgPSBld2tfcGFnZV9ncm91cF9jcmVhdGUoIlVuaXRUZXN0Iik7CisgICAgbV93ZWJW
aWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBuZXdDb250ZXh0LCBuZXdQYWdl
R3JvdXApOworCiAgICAgLy8gQ2xlYXIgSFRUUCBjYWNoZSBmaWxlcyBiZWZvcmUgcnVubmluZyB0
aGUgdW5pdCB0ZXN0cywgd2hpY2ggcHJldmVudHMgCiAgICAgLy8gcGVyZm9ybWFuY2UgZGVncmFk
YXRpb24gZHVlIHRvIHNvIG1hbnkgY2FjaGUgZmlsZXMuCiAgICAgZXdrX2NvbnRleHRfcmVzb3Vy
Y2VfY2FjaGVfY2xlYXIobmV3Q29udGV4dCk7CiAgICAgZXdrX29iamVjdF91bnJlZihuZXdDb250
ZXh0KTsKKyAgICBld2tfb2JqZWN0X3VucmVmKG5ld1BhZ2VHcm91cCk7CiAKICAgICBld2tfdmll
d190aGVtZV9zZXQobV93ZWJWaWV3LCBlbnZpcm9ubWVudC0+ZGVmYXVsdFRoZW1lKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCmluZGV4IGJkNWU0Yjk5
NTg1ZmQ4OWE3NzdiYTA3YzQwMWQxY2VmMzE5M2I4N2EuLjU5MjRiZTY0MWZjZDdjYmI1YTY1ZmU5
MTMzZWZiMzM4MjcwMTM1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5oCkBAIC0zNSw2ICszNSw3IEBAIHB1YmxpYzoKICAgICBFY29yZV9FdmFzKiBiYWNr
aW5nU3RvcmUoKSB7IHJldHVybiBtX2Vjb3JlRXZhczsgfQogICAgIEV2YXMqIGNhbnZhcygpIHsg
cmV0dXJuIGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzKTsgfQogICAgIEV2YXNfT2JqZWN0KiB3
ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgdm9pZCBzZXRXZWJWaWV3KEV2YXNf
T2JqZWN0KiB3ZWJWaWV3KSB7IG1fd2ViVmlldyA9IHdlYlZpZXc7IH0KICAgICBFd2tfVmlld19T
bWFydF9DbGFzcyogZXdrVmlld0NsYXNzKCkgeyByZXR1cm4gJm1fZXdrVmlld0NsYXNzOyB9CiAK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9wYWdlX2dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYWdlX2dyb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTEx
YzQ0ZGE4Nzg4ZDIyYjY2YmQ0NDE0MTE1MzU4NTQ0NzIzYzQxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3BhZ2VfZ3Jv
dXAuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1
bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5o
IgorCit1c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVuaXRUZXN0
RW52aXJvbm1lbnQqIGVudmlyb25tZW50OworCitzdGF0aWMgY29uc3QgY2hhciBodG1sU3RyaW5n
W10gPSAiPGh0bWw+PGhlYWQ+PHRpdGxlPkZvbzwvdGl0bGU+PC9oZWFkPjxib2R5IHN0eWxlPSdi
YWNrZ3JvdW5kLWNvbG9yOiByZWQnPjxzY3JpcHQ+ZG9jdW1lbnQudGl0bGU9d2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dy
b3VuZC1jb2xvcicpPC9zY3JpcHQ+SEVMTE88L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgY29uc3Qg
Y2hhciB1c2VyU3R5bGVTaGVldFtdID0gImJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiAh
aW1wb3J0YW50OyB9IjsKK3N0YXRpYyBjb25zdCBjaGFyIGdyZWVuSW5SR0JbXSA9ICJyZ2IoMCwg
MTI4LCAwKSI7CitzdGF0aWMgY29uc3QgY2hhciByZWRJblJHQltdID0gInJnYigyNTUsIDAsIDAp
IjsKKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYWdlX2dyb3VwKQoreworICAgIEV2
YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJihld2tWaWV3Q2xhc3MoKS0+
c2MpKTsKKyAgICBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3Jl
YXRlKCJ0ZXN0Iik7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKworICAgIEV2YXNfT2Jq
ZWN0KiBuZXdXZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGNhbnZhcygpLCBzbWFydCwgZXdr
X2NvbnRleHRfZGVmYXVsdF9nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3KG5ld1dl
YlZpZXcpOworCisgICAgQVNTRVJUX0VRKHBhZ2VHcm91cCwgZXdrX3ZpZXdfcGFnZV9ncm91cF9n
ZXQobmV3V2ViVmlldykpOworICAgIGV3a19vYmplY3RfdW5yZWYocGFnZUdyb3VwKTsKK30KKwor
VEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRf
YWRkX2JlZm9yZV9jcmVhdGluZ192aWV3KQoreworICAgIEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZh
c19zbWFydF9jbGFzc19uZXcoJihld2tWaWV3Q2xhc3MoKS0+c2MpKTsKKyAgICBFd2tfUGFnZV9H
cm91cCogcGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKCJ0ZXN0Iik7CisgICAgQVNT
RVJUX1RSVUUocGFnZUdyb3VwKTsKKworICAgIC8vIEFkZCBhIHVzZXIgc3R5bGUgc2hlZXQgdG8g
dGhlIHBhZ2UgZ3JvdXAgYmVmb3JlIGNyZWF0aW5nIGEgdmlldworICAgIGV3a19wYWdlX2dyb3Vw
X3VzZXJfc3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwgdXNlclN0eWxlU2hlZXQsIDAsIDAsIDAs
IHRydWUpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IHdlYiB2aWV3IHdpdGggdGhpcyBwYWdlIGdy
b3VwCisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoY2Fu
dmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpLCBwYWdlR3JvdXApOworICAg
IHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBld2tfb2JqZWN0X3VucmVmKHBhZ2VHcm91
cCk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1
bHRUaGVtZSgpKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUod2ViVmlldygpLCBlbnZpcm9ubWVu
dC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5kZWZhdWx0SGVpZ2h0KCkpOworICAgIGV2
YXNfb2JqZWN0X3Nob3cod2ViVmlldygpKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2Vi
VmlldygpLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygp
LCBodG1sU3RyaW5nLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNoYW5n
ZWRUbyhncmVlbkluUkdCKSk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFn
ZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZF9hZnRlcl9jcmVhdGluZ192aWV3KQoreworICAg
IC8vIEFkZCBhIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYWZ0ZXIgY3JlYXRp
bmcgYSB2aWV3CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a192aWV3X3BhZ2Vf
Z3JvdXBfZ2V0KHdlYlZpZXcoKSk7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKyAgICBl
d2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdlR3JvdXAsIHVzZXJTdHlsZVNo
ZWV0LCAwLCAwLCAwLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2Vi
VmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRs
ZUNoYW5nZWRUbyhncmVlbkluUkdCKSk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBl
d2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKQoreworICAgIEV2YXNf
U21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJihld2tWaWV3Q2xhc3MoKS0+c2Mp
KTsKKyAgICBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3JlYXRl
KCJ0ZXN0Iik7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKworICAgIC8vIEFkZCBhIHVz
ZXIgc3R5bGUgc2hlZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYmVmb3JlIGNyZWF0aW5nIGEgdmlldwor
ICAgIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwgdXNlclN0
eWxlU2hlZXQsIDAsIDAsIDAsIHRydWUpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IHdlYiB2aWV3
IHdpdGggdGhpcyBwYWdlIGdyb3VwCisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcgPSBld2tf
dmlld19zbWFydF9hZGQoY2FudmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgp
LCBwYWdlR3JvdXApOworICAgIHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBld2tfb2Jq
ZWN0X3VucmVmKHBhZ2VHcm91cCk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdlYlZpZXcoKSwg
ZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUod2Vi
VmlldygpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5kZWZhdWx0
SGVpZ2h0KCkpOworICAgIGV2YXNfb2JqZWN0X3Nob3cod2ViVmlldygpKTsKKyAgICBldmFzX29i
amVjdF9mb2N1c19zZXQod2ViVmlldygpLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3Ry
aW5nX2xvYWQod2ViVmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKworICAgIC8vIFJlbW92ZSBh
bGwgdXNlciBzdHlsZSBzaGVldHMgaW4gdGhlIHBhZ2UgZ3JvdXAKKyAgICBld2tfcGFnZV9ncm91
cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdl
YlZpZXcoKSkpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKHJlZElu
UkdCKSk7CisKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3Vw
IGFmdGVyIGNyZWF0aW5nIGEgdmlldworICAgIHBhZ2VHcm91cCA9IGV3a192aWV3X3BhZ2VfZ3Jv
dXBfZ2V0KHdlYlZpZXcoKSk7CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9h
ZGQocGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisgICAgZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGh0bWxTdHJpbmcsIDAsIDApOworCisgICAg
Ly8gUmVtb3ZlIGFsbCB1c2VyIHN0eWxlIHNoZWV0cyBpbiB0aGUgcGFnZSBncm91cAorICAgIGV3
a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3JlbW92ZV9hbGwoZXdrX3ZpZXdfcGFnZV9n
cm91cF9nZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVGl0bGVDaGFu
Z2VkVG8ocmVkSW5SR0IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA5ZTIzZTVmZTMyODRl
NjEwNWY3YTQxODlmYWEyMzhjYzY3ZDYzZGQyLi5lNDE4M2VlMjgzZTM5MjI4MGEyNjY1ZDU4NDIy
Y2Q4MzFmYWMyYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC01NTcsNiArNTU3LDEzIEBAIFRF
U1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19jb250ZXh0X2dldCkKICAgICBBU1NFUlRf
RVEoY29udGV4dCwgZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKSk7CiB9CiAKK1RFU1Rf
RihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19wYWdlX2dyb3VwX2dldCkKK3sKKyAgICBFd2tf
UGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQod2ViVmlldygp
KTsKKyAgICBBU1NFUlRfVFJVRShwYWdlR3JvdXApOworICAgIEFTU0VSVF9FUShwYWdlR3JvdXAs
IGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSkpOworfQorCiBURVNUX0YoRVdLMlVu
aXRUZXN0QmFzZSwgZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudCkKIHsKICAgICBFaW5hX0xpc3Qq
IHBvaW50cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
Ykluc3BlY3RvclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4IGZhMmUwOGQ2MTBhZWZkN2FkYzQzZjFhZDY5ZGZh
YzhlMjk1M2NhNTIuLmQ3NTgwMDFlNjkyMzM1YTU0NDViNmJmN2E0Y2Y5MTYxY2YzZGNiYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJv
eHlFZmwuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIK
KyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRp
bmdzLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0VmbEluc3Bl
Y3RvclV0aWxpdGllcy5oPgpAQCAtMTAwLDcgKzEwMSw4IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAKICAgICAvLyBGSVhN
RTogUmVmYWN0b3IgdG8gdXNlIFdLVmlld1JlZi4KICAgICBXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiA9IHRvQVBJKHBhZ2UoKS0+cHJvY2VzcygpLT5jb250ZXh0KCkpOwotICAgIG1faW5zcGVjdG9y
VmlldyA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoZWNvcmVfZXZhc19nZXQobV9pbnNwZWN0
b3JXaW5kb3cpLCBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIHRvQVBJKGluc3BlY3Rv
clBhZ2VHcm91cCgpKSwgRXdrVmlldzo6TGVnYWN5QmVoYXZpb3IpOworICAgIG1faW5zcGVjdG9y
VmlldyA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoZWNvcmVfZXZhc19nZXQobV9pbnNwZWN0
b3JXaW5kb3cpLCBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIEV3a1BhZ2VHcm91cDo6
Y3JlYXRlKHRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSksIEV3a1ZpZXc6OkxlZ2FjeUJlaGF2
aW9yKTsKKwogICAgIGlmICghbV9pbnNwZWN0b3JWaWV3KQogICAgICAgICByZXR1cm4gMDsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYzODYy
MDJlODIxZjI1MWY0OTZmZmMyOGY5MGU1MTYxMzU4MDdlZTQuLjM5NDE4NTJkNzA5NzMwNDk0NDFj
M2Y4YjVlODI5YTNlNTVjZDEzMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0wMyAgSmlud29vIFNvbmcg
IDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgYW4g
QVBJIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHVzZXIgc3R5bGUgc2hlZXRzIGZyb20gYSBwYWdl
IGdyb3VwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTA3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgdGhlIHBhZ2UgZ3JvdXAgdG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdC4KKworICAgICAgICAq
IE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAgICAgICh3aW5kb3dfY3JlYXRlKToKKwogMjAx
My0wMy0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBTb21l
IHBlcmYuIHRlc3RzIGhhdmUgdmFyaWFuY2VzIHRoYXQgZGlmZmVyIGdyZWF0bHkgYmV0d2VlbiBy
dW5zCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZWZsL21haW4uYwppbmRleCBjZTgxNmVlYThlMmFhNzdhZTNkM2I2MDc1NzM2Y2Q5
ODExZTFjNDM5Li4wNjNkNDJmZTcxNzk1YTA3Njg4MjA5ODM2OWYwYTczOTA2ZDk5YWE2IDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL2VmbC9tYWluLmMKQEAgLTExODcsOCArMTE4Nyw5IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRv
dyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqb3BlbmVyLCBjb25zdCBjaGFyICp1cmwsIGlu
dCB3CiAgICAgICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSAoRXZhc19PYmplY3QqKVdLVmlld0NyZWF0
ZShldmFzLCAwLCAwKTsKICAgICB9IGVsc2UgewogICAgICAgICBFdmFzX1NtYXJ0ICpzbWFydCA9
IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZld2tWaWV3Q2xhc3MtPnNjKTsKLSAgICAgICAgRXdrX0Nv
bnRleHQqIGNvbnRleHQgPSBvcGVuZXIgPyBld2tfdmlld19jb250ZXh0X2dldChvcGVuZXIpIDog
ZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKLSAgICAgICAgd2luZG93LT5ld2tfdmlldyA9IGV3
a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgY29udGV4dCk7CisgICAgICAgIEV3a19Db250
ZXh0ICpjb250ZXh0ID0gb3BlbmVyID8gZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVyKSA6IGV3
a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CisgICAgICAgIEV3a19QYWdlX0dyb3VwICpwYWdlR3Jv
dXAgPSBvcGVuZXIgPyBld2tfdmlld19wYWdlX2dyb3VwX2dldChvcGVuZXIpIDogZXdrX3BhZ2Vf
Z3JvdXBfY3JlYXRlKCIiKTsKKyAgICAgICAgd2luZG93LT5ld2tfdmlldyA9IGV3a192aWV3X3Nt
YXJ0X2FkZChldmFzLCBzbWFydCwgY29udGV4dCwgcGFnZUdyb3VwKTsKICAgICB9CiAgICAgZXdr
X3ZpZXdfdGhlbWVfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIFRIRU1FX0RJUiAiL2RlZmF1bHQuZWRq
Iik7CiAgICAgaWYgKGRldmljZV9waXhlbF9yYXRpbykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191343</attachid>
            <date>2013-03-04 16:31:10 -0800</date>
            <delta_ts>2013-03-05 21:56:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130305092714.patch</filename>
            <type>text/plain</type>
            <size>36833</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjQ4YzlkMzA2ZDRkMmYw
ZjY0NTJhZjk4YmY1ZmI0MjgxMGQ5NjdlOC4uZTVjNjZjMTAxZTYxZjM5NjQ2OTA0ZjVkYzUwZjBi
YjY3NzViYTU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAzLTAzICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBDU1MyLjEgc3BlYywgdGhlIHVzZXIgbWF5
IGJlIGFibGUgdG8gc3BlY2lmeSBzdHlsZSBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGRv
Y3VtZW50LgorICAgICAgICBTbyB0aGlzIHBhdGNoIHByb3ZpZGVzIGFuIEFQSSBmb3IgYWRkaW5n
IGFuZCByZW1vdmluZyB1c2VyIHN0eWxlIHNoZWV0cyBmcm9tIGEgcGFnZSBncm91cC4KKyAgICAg
ICAgQWxzbyBpdCBpbXBsZW1lbnRzIEV3a1BhZ2VHcm91cCBBUEkgYXMgYW4gaW50ZXJmYWNlIGJl
dHdlZW4gdGhlIGFwcGxpY2F0aW9ucyBhbmQgV0tQYWdlR3JvdXAgQVBJLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcu
Y3BwOgorICAgICAgICAoY3JlYXRlV0tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgor
ICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6CisgICAgICAgIChFd2tWaWV3OjpjcmVhdGVFdmFz
T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAg
IChFd2tWaWV3Ojpld2tQYWdlR3JvdXApOgorICAgICAgICAoRXdrVmlldyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNy
ZWF0ZVdLQXJyYXkpOgorICAgICAgICAoRXdrUGFnZUdyb3VwOjpFd2tQYWdlR3JvdXApOgorICAg
ICAgICAoRXdrUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChFd2tQYWdl
R3JvdXA6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChld2tfcGFnZV9ncm91
cF9jcmVhdGUpOgorICAgICAgICAoZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQp
OgorICAgICAgICAoZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEV3a1BhZ2VHcm91cCk6CisgICAgICAgIChFd2tQYWdlR3JvdXA6OmNyZWF0
ZSk6CisgICAgICAgIChFd2tQYWdlR3JvdXA6OndrUGFnZUdyb3VwKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmlld19zbWFydF9hZGQp
OgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcDoKKyAgICAgICAgKEVXSzJVbml0VGVz
dDo6RVdLMlVuaXRUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oOgorICAgICAgICAoRVdLMlVu
aXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHA6IEFkZGVkLgorICAgICAg
ICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKwogMjAxMy0wMy0wMyAgSHVhbmcgRG9u
Z3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbRUZMXVtRVF1bV0sy
XSBUdXJuIG9uIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IgYWx3YXlzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ZmE0ZWM5NzUxYjRmNDFmMjg0YzEzOGI4NTlhYmI5
MDg4NWRkYmNlLi5iMTUzZGYxZTVlYTQ5NzA3ODQ1YzU1ZGY3ZDg3NzAwNDFlZjJjMWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAsNiArNzAsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9kYXRhLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmNwcAorICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wYWdlX2dyb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1
cF9tZW51LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAKQEAgLTI4Myw2
ICsyODQsNyBAQCBzZXQoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zhdmljb25fZGF0YWJhc2UuaCIKICAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19maWxlX2No
b29zZXJfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmgiCisgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21h
aW4uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgpAQCAt
Mzg0LDYgKzM4Niw3IEBAIHNldChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAgdGVzdF9ld2sy
X2Zhdmljb25fZGF0YWJhc2UKICAgICB0ZXN0X2V3azJfZmlsZV9jaG9vc2VyX3JlcXVlc3QKICAg
ICB0ZXN0X2V3azJfb2JqZWN0CisgICAgdGVzdF9ld2syX3BhZ2VfZ3JvdXAKICAgICB0ZXN0X2V3
azJfcG9wdXBfbWVudQogICAgIHRlc3RfZXdrMl9yZWZwdHJfZXZhc19vYmplY3QKICAgICB0ZXN0
X2V3azJfc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcAppbmRleCAxNzc5MTFmYjIzMzkyYmUyZGVmODM0YzM1Y2Q2NWIyYzYwMGI4OTM5Li43
NWU0ZDgyOTBmM2E2YjJhNWU1NWQ3MGJmMDNhNGRhNWVkYTMwMDRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgImV3
a19jb250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgi
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlQ2Fpcm8uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKQEAgLTMxLDcgKzMyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHN0YXRpYyBp
bmxpbmUgV0tWaWV3UmVmIGNyZWF0ZVdLVmlldyhFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIEV3a1ZpZXc6OlZpZXdCZWhh
dmlvciBiZWhhdmlvcikKIHsKICAgICBSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCA9IGNvbnRl
eHRSZWYgPyBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZikgOiBFd2tDb250ZXh0OjpkZWZh
dWx0Q29udGV4dCgpOwotICAgIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0ID0gRXdrVmlldzo6Y3Jl
YXRlRXZhc09iamVjdChjYW52YXMsIGNvbnRleHQsIHBhZ2VHcm91cFJlZiwgYmVoYXZpb3IpOwor
ICAgIFJlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IHBhZ2VHcm91cFJlZiA/IEV3a1Bh
Z2VHcm91cDo6Y3JlYXRlKHBhZ2VHcm91cFJlZikgOiBFd2tQYWdlR3JvdXA6OmNyZWF0ZSgpOwor
CisgICAgRXZhc19PYmplY3QqIGV2YXNPYmplY3QgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0
KGNhbnZhcywgY29udGV4dCwgcGFnZUdyb3VwLCBiZWhhdmlvcik7CiAgICAgaWYgKCFldmFzT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0VXZWJLaXQyLmgKaW5kZXggM2EyODY1ZWU3OTMxZTVkMWQ0ZDMwZGZlNTAwOTZmNzRjZjRm
ZGQ1My4uYTljOGExNGU3OGIxZmVlNjkxOTU5Y2QyY2I3MmE1MDVlZmRiZTYzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC00Niw2ICs0Niw3IEBA
CiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fZGF0YS5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0
aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2luY2x1ZGUgImV3a19vYmplY3QuaCIKKyNpbmNsdWRl
ICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51LmgiCiAjaW5jbHVk
ZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXgg
MTQ2MGI3MDZmODFlNTJhYjIxYWNkMjNiYWM2NzcxMTI3ZjE5ZmUwNy4uOTJkYzI4MDFlMTY1MjU1
NmQ3YjlkYmJmZDQ5ODIzZTljNDE4NDczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJld2tfY29u
dGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAj
aW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19w
YWdlX2dyb3VwX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdr
X3ByaXZhdGUuaCIKQEAgLTIyOCwxMSArMjI5LDEyIEBAIHZvaWQgRXdrVmlld0V2ZW50SGFuZGxl
cjxFVkFTX0NBTExCQUNLX0hJREU+OjpoYW5kbGVFdmVudCh2b2lkKiBkYXRhLCBFdmFzKiwgRXZh
CiAKIC8vIEV3a1ZpZXcgaW1wbGVtZW50YXRpb24uCiAKLUV3a1ZpZXc6OkV3a1ZpZXcoRXZhc19P
YmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCitFd2tWaWV3OjpFd2tW
aWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRl
eHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhh
dmlvcikKICAgICA6IG1fZXZhc09iamVjdChldmFzT2JqZWN0KQogICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCisgICAgLCBtX3BhZ2VHcm91cChwYWdlR3JvdXApCiAgICAgLCBtX3BlbmRpbmdTdXJm
YWNlUmVzaXplKGZhbHNlKQotICAgICwgbV93ZWJWaWV3KGFkb3B0UmVmKG5ldyBXZWJWaWV3KHRv
SW1wbChtX2NvbnRleHQtPndrQ29udGV4dCgpKSwgdG9JbXBsKHBhZ2VHcm91cCksIHRoaXMpKSkK
KyAgICAsIG1fd2ViVmlldyhhZG9wdFJlZihuZXcgV2ViVmlldyh0b0ltcGwobV9jb250ZXh0LT53
a0NvbnRleHQoKSksIHRvSW1wbChtX3BhZ2VHcm91cC0+d2tQYWdlR3JvdXAoKSksIHRoaXMpKSkK
ICAgICAsIG1fcGFnZUxvYWRDbGllbnQoUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhp
cykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQYWdlVUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
QEAgLTMwMCw3ICszMDIsNyBAQCBFd2tWaWV3Ojp+RXdrVmlldygpCiAgICAgaWNvbkRhdGFiYXNl
LT51bndhdGNoQ2hhbmdlcyhFd2tWaWV3OjpoYW5kbGVGYXZpY29uQ2hhbmdlZCk7CiB9CiAKLUV2
YXNfT2JqZWN0KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19T
bWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCitFdmFzX09iamVjdCogRXdr
Vmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQ
YXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBw
YWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnQsIDApOwpAQCAtMzE3LDE1ICszMTksMTQgQEAgRXZhc19PYmplY3QqIEV3a1Zp
ZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFz
c1JlZlAKIAogICAgIEFTU0VSVCghc21hcnREYXRhLT5wcml2KTsKIAotICAgIC8vIERlZmF1bHQg
V2ViUGFnZUdyb3VwIGlzIGNyZWF0ZWQgaW4gV2ViQ29udGV4dCBjb25zdHJ1Y3RvciBpZiB0aGUg
cGFnZUdyb3VwUmVmIGlzIDAsCi0gICAgLy8gc28gd2UgZG8gbm90IG5lZWQgdG8gY3JlYXRlIGl0
IGhlcmUuCi0gICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1ZpZXcoZXZhc09iamVjdCwgY29u
dGV4dCwgcGFnZUdyb3VwUmVmLCBiZWhhdmlvcik7CisgICAgc21hcnREYXRhLT5wcml2ID0gbmV3
IEV3a1ZpZXcoZXZhc09iamVjdCwgY29udGV4dCwgKHBhZ2VHcm91cCA/IHBhZ2VHcm91cCA6IEV3
a1BhZ2VHcm91cDo6Y3JlYXRlKCkpLCBiZWhhdmlvcik7CisKICAgICByZXR1cm4gZXZhc09iamVj
dDsKIH0KIAotRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2Fu
dmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZiwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQorRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNy
ZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRl
eHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhh
dmlvcikKIHsKLSAgICByZXR1cm4gY3JlYXRlRXZhc09iamVjdChjYW52YXMsIGRlZmF1bHRTbWFy
dENsYXNzSW5zdGFuY2UoKSwgY29udGV4dCwgcGFnZUdyb3VwUmVmLCBiZWhhdmlvcik7CisgICAg
cmV0dXJuIGNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBkZWZhdWx0U21hcnRDbGFzc0luc3RhbmNl
KCksIGNvbnRleHQsIHBhZ2VHcm91cCwgYmVoYXZpb3IpOwogfQogCiBib29sIEV3a1ZpZXc6Omlu
aXRTbWFydENsYXNzSW50ZXJmYWNlKEV3a19WaWV3X1NtYXJ0X0NsYXNzJiBhcGkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggNzFkYWQyZDU3YTcwMWU2
ZjU5MmMzYzY2N2M0ODEzNDU3ODBlMTc1Mi4uOGI0NTk0MWI3ODgxZWM0YTk2MWQ4YTAzZGYyZjgx
YWQ2ODk4ZDEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
aApAQCAtODcsNiArODcsNyBAQCBjbGFzcyBFd2tDb250ZXh0OwogY2xhc3MgRXdrQmFja0Zvcndh
cmRMaXN0OwogY2xhc3MgRXdrQ29sb3JQaWNrZXI7CiBjbGFzcyBFd2tDb250ZXh0TWVudTsKK2Ns
YXNzIEV3a1BhZ2VHcm91cDsKIGNsYXNzIEV3a1BvcHVwTWVudTsKIGNsYXNzIEV3a1NldHRpbmdz
OwogY2xhc3MgRXdrV2luZG93RmVhdHVyZXM7CkBAIC0xMDYsOCArMTA3LDggQEAgcHVibGljOgog
ICAgICAgICBEZWZhdWx0QmVoYXZpb3IKICAgICB9OwogCi0gICAgc3RhdGljIEV2YXNfT2JqZWN0
KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NS
ZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9
IDAsIFZpZXdCZWhhdmlvciBiZWhhdmlvciA9IEV3a1ZpZXc6OkRlZmF1bHRCZWhhdmlvcik7Ci0g
ICAgc3RhdGljIEV2YXNfT2JqZWN0KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgUGFz
c1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYg
PSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZpb3IpOwor
ICAgIHN0YXRpYyBFdmFzX09iamVjdCogY3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2
YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsICBQYXNzUmVm
UHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwID0gMCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yID0g
RXdrVmlldzo6RGVmYXVsdEJlaGF2aW9yKTsKKyAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0
ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQs
IFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSAwLCBWaWV3QmVoYXZpb3IgYmVo
YXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZpb3IpOwogCiAgICAgc3RhdGljIGJvb2wgaW5p
dFNtYXJ0Q2xhc3NJbnRlcmZhY2UoRXdrX1ZpZXdfU21hcnRfQ2xhc3MmKTsKIApAQCAtMTIwLDYg
KzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkgeyBy
ZXR1cm4gbV93ZWJWaWV3LT5wYWdlKCk7IH0KICAgICBFd2tDb250ZXh0KiBld2tDb250ZXh0KCkg
eyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgRXdrUGFnZUdyb3VwKiBld2tQYWdlR3Jv
dXAoKSB7IHJldHVybiBtX3BhZ2VHcm91cC5nZXQoKTsgfQogICAgIEV3a1NldHRpbmdzKiBzZXR0
aW5ncygpIHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICBFd2tCYWNrRm9yd2FyZExp
c3QqIGJhY2tGb3J3YXJkTGlzdCgpIHsgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0LmdldCgpOyB9
CiAgICAgRXdrV2luZG93RmVhdHVyZXMqIHdpbmRvd0ZlYXR1cmVzKCk7CkBAIC0yMTMsNyArMjE1
LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiB0YWtlU25hcHNo
b3QoKTsKIAogcHJpdmF0ZToKLSAgICBFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQ
YXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwg
Vmlld0JlaGF2aW9yKTsKKyAgICBFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNz
UmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdl
R3JvdXAsIFZpZXdCZWhhdmlvcik7CiAgICAgfkV3a1ZpZXcoKTsKIAogICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSgpIGNvbnN0OwpAQCAtMjUyLDYgKzI1NCw3IEBAIHByaXZhdGU6
CiAgICAgLy8gTm90ZSwgaW5pdGlhbGl6YXRpb24gb3JkZXIgbWF0dGVycy4KICAgICBFdmFzX09i
amVjdCogbV9ldmFzT2JqZWN0OwogICAgIFJlZlB0cjxFd2tDb250ZXh0PiBtX2NvbnRleHQ7Cisg
ICAgUmVmUHRyPEV3a1BhZ2VHcm91cD4gbV9wYWdlR3JvdXA7CiAgICAgT3duUHRyPEV2YXNfR0w+
IG1fZXZhc0dMOwogICAgIE93blB0cjxXZWJLaXQ6OkV2YXNHTENvbnRleHQ+IG1fZXZhc0dMQ29u
dGV4dDsKICAgICBPd25QdHI8V2ViS2l0OjpFdmFzR0xTdXJmYWNlPiBtX2V2YXNHTFN1cmZhY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9n
cm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91
cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzgwNDBjODBmMGUwZTcyY2I0YTNhZDA4ZjRkYjZhMmMyNjEzMzhh
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19wYWdlX2dyb3VwLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKKworI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRlICJXS1Bh
Z2VHcm91cC5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3Jv
dXBfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgV0tBcnJh
eVJlZiBjcmVhdGVXS0FycmF5KEVpbmFfTGlzdCogYXJyYXkpCit7CisgICAgdW5zaWduZWQgY291
bnQgPSBlaW5hX2xpc3RfY291bnQoYXJyYXkpOworICAgIGlmICghY291bnQpCisgICAgICAgIHJl
dHVybiBXS0FycmF5UmVmKCk7CisKKyAgICBWZWN0b3I8V0tUeXBlUmVmPiBzdHJpbmdWZWN0b3I7
CisgICAgc3RyaW5nVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAg
RWluYV9MaXN0KiBsID0gMDsKKyAgICB2b2lkKiBkYXRhID0gMDsKKyAgICBFSU5BX0xJU1RfRk9S
RUFDSChhcnJheSwgbCwgZGF0YSkKKyAgICAgICAgc3RyaW5nVmVjdG9yLnVuY2hlY2tlZEFwcGVu
ZChXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSkp
KTsKKworICAgIHJldHVybiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoc3RyaW5nVmVjdG9y
LmRhdGEoKSwgY291bnQpOworfQorCitjb25zdCBjaGFyIEV3a1BhZ2VHcm91cDo6ZGVmYXVsdElk
ZW50aWZpZXJbXSA9ICJkZWZhdWx0UGFnZUdyb3VwSWRlbnRpZmllciI7CisKK0V3a1BhZ2VHcm91
cDo6RXdrUGFnZUdyb3VwKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKKyAgICA6IG1fcGFn
ZUdyb3VwUmVmKHBhZ2VHcm91cFJlZikKK3sKK30KKworRXdrUGFnZUdyb3VwOjpFd2tQYWdlR3Jv
dXAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIG1fcGFnZUdyb3VwUmVmID0gYWRv
cHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKGFkb3B0V0sodG9Db3BpZWRBUEko
aWRlbnRpZmllcikpLmdldCgpKSk7Cit9CisKK3ZvaWQgRXdrUGFnZUdyb3VwOjphZGRVc2VyU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBFaW5h
X0xpc3QqIHdoaXRlTGlzdCwgRWluYV9MaXN0KiBibGFja0xpc3QsIGJvb2wgbWFpbkZyYW1lT25s
eSkKK3sKKyAgICBBU1NFUlQoc291cmNlKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiB3a1NvdXJjZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkoc291cmNlKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IHdrQmFzZVVSTCA9IGFkb3B0V0sodG9Db3BpZWRVUkxBUEkoYmFzZVVSTCkp
OworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrV2hpdGVsaXN0ID0gYWRvcHRXSyhjcmVh
dGVXS0FycmF5KHdoaXRlTGlzdCkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrQmxh
Y2tsaXN0ID0gYWRvcHRXSyhjcmVhdGVXS0FycmF5KGJsYWNrTGlzdCkpOworICAgIFdLVXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyA9IG1haW5GcmFtZU9ubHkgPyBrV0tJ
bmplY3RJblRvcEZyYW1lT25seSA6IGtXS0luamVjdEluQWxsRnJhbWVzOworCisgICAgV0tQYWdl
R3JvdXBBZGRVc2VyU3R5bGVTaGVldChtX3BhZ2VHcm91cFJlZi5nZXQoKSwgd2tTb3VyY2UuZ2V0
KCksIHdrQmFzZVVSTC5nZXQoKSwgd2tXaGl0ZWxpc3QuZ2V0KCksIHdrQmxhY2tsaXN0LmdldCgp
LCBpbmplY3RlZEZyYW1lcyk7Cit9CisKK3ZvaWQgRXdrUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHMoKQoreworICAgIFdLUGFnZUdyb3VwUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRz
KG1fcGFnZUdyb3VwUmVmLmdldCgpKTsKK30KKworRXdrX1BhZ2VfR3JvdXAqIGV3a19wYWdlX2dy
b3VwX2NyZWF0ZShjb25zdCBjaGFyKiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBFd2tQYWdl
R3JvdXA6OmNyZWF0ZShpZGVudGlmaWVyKS5sZWFrUmVmKCk7Cit9CisKK0VpbmFfQm9vbCBld2tf
cGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChFd2tfUGFnZV9Hcm91cCogZXdrUGFnZUdy
b3VwLCBjb25zdCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqIGJhc2VVUkwsIEVpbmFfTGlzdCog
d2hpdGVMaXN0LCBFaW5hX0xpc3QqIGJsYWNrTGlzdCwgRWluYV9Cb29sIG1haW5GcmFtZU9ubHkp
Cit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrUGFnZUdyb3VwLCBld2tQYWdl
R3JvdXAsIGltcGwsIGZhbHNlKTsKKworICAgIGltcGwtPmFkZFVzZXJTdHlsZVNoZWV0KHNvdXJj
ZSwgYmFzZVVSTCwgd2hpdGVMaXN0LCBibGFja0xpc3QsIG1haW5GcmFtZU9ubHkpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3No
ZWV0c19yZW1vdmVfYWxsKEV3a19QYWdlX0dyb3VwKiBld2tQYWdlR3JvdXApCit7CisgICAgRVdL
X09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrUGFnZUdyb3VwLCBld2tQYWdlR3JvdXAsIGltcGws
IGZhbHNlKTsKKworICAgIGltcGwtPnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcGFnZV9ncm91cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3BhZ2VfZ3JvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGY5ZjRiODgwMjQzNmJiYzIyYzVkMjcwYzE1
YzY2NDQ2NWJhMmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3BhZ2VfZ3JvdXAuaAorICogQGJyaWVmICAg
RGVzY3JpYmVzIHRoZSBFd2sgUGFnZSBHcm91cCBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfcGFn
ZV9ncm91cF9oCisjZGVmaW5lIGV3a19wYWdlX2dyb3VwX2gKKworI2luY2x1ZGUgPEVpbmEuaD4K
KyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworLyoqCisgKiBEZWNsYXJlIEV3a19QYWdlX0dyb3VwIGFzIEV3a19PYmplY3QuCisg
KgorICogQHNlZSBFd2tfT2JqZWN0CisgKi8KK3R5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tf
UGFnZV9Hcm91cDsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IEV3a19QYWdlX0dyb3VwLgorICoK
KyAqIFRoZSByZXR1cm5lZCBFd2tfUGFnZV9Hcm91cCBvYmplY3QgQGIgc2hvdWxkIGJlIHVucmVm
J2VkIGFmdGVyIHVzZS4KKyAqCisgKiBAcmV0dXJuIEV3a19QYWdlX0dyb3VwIG9iamVjdCBvbiBz
dWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX29iamVjdF91bnJl
ZgorICovCitFQVBJIEV3a19QYWdlX0dyb3VwICpld2tfcGFnZV9ncm91cF9jcmVhdGUoY29uc3Qg
Y2hhciAqaWRlbnRpZmllcik7CisKKy8qKgorICogQWRkcyB0aGUgdXNlciBzdHlsZSBzaGVldCB0
byB0aGlzIHBhZ2UgZ3JvdXAuCisgKgorICogQHBhcmFtIHBhZ2VfZ3JvdXAgZXdrX3BhZ2VfZ29y
dXAgb2JqZWN0IHRvIGFkZCB0aGUgdXNlciBzdHlsZSBzaGVldAorICogQHBhcmFtIHNvdXJjZSB0
aGUgdXNlciBzdHlsZSBzaGVldAorICogQHBhcmFtIHVybCBiYXNlVVJMCisgKiBAcGFyYW0gd2hp
dGVfbGlzdCB1cmwgbGlzdCB0byBhbGxvdyBhZGRpbmcgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAq
IEBwYXJhbSBibGFja19saXN0IHVybCBsaXN0IHRvIGRpc2FsbG93IGFkZGluZyB0aGUgdXNlciBz
dHlsZSBzaGVldAorICogQHBhcmFtIG1haW5fZnJhbWVfb25seSBhIHN0YXRlIHRvIGFwcGx5IHRo
ZSB1c2VyIHN0eWxlIHNoZWV0IG9ubHkgdG8gdGhlIG1haW5mcmFtZQorICoKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHRoZSB1c2VyIHN0eWxlIHNoZWV0IGlzIGFkZGVkIHRvIHRoZSBwYWdl
IGdyb3VwLCBvcgorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJ
IEVpbmFfQm9vbCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChFd2tfUGFnZV9H
cm91cCAqcGFnZV9ncm91cCwgY29uc3QgY2hhciAqc291cmNlLCBjb25zdCBjaGFyICpiYXNlX3Vy
bCwgRWluYV9MaXN0ICp3aGl0ZV9saXN0LCBFaW5hX0xpc3QgKmJsYWNrX2xpc3QsIEVpbmFfQm9v
bCBtYWluX2ZyYW1lX29ubHkpOworCisvKioKKyAqIFJlbW92ZSBhbGwgdGhlIHVzZXIgc3R5bGUg
c2hlZXRzIGZyb20gdGhpcyBwYWdlIGdyb3VwLgorICoKKyAqIEBwYXJhbSBwYWdlX2dyb3VwIHBh
Z2UgZ3JvdXAgb2JqZWN0IHRvIHJlbW92ZSBhbGwgdGhlIHVzZXIgc3R5bGUgc2hlZXRzCisgKgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgYWxsIHRoZSB1c2VyIHN0eWxlIHNoZWV0IGFyZSBy
ZW1vdmVkIGZyb20gdGhlIHBhZ2UgZ3JvdXAsIG9yCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVf
c2hlZXRzX3JlbW92ZV9hbGwoRXdrX1BhZ2VfR3JvdXAgKnBhZ2VfZ3JvdXApOworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX3BhZ2VfZ3JvdXBfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3Jv
dXBfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxOTA1MTVkODU5N2Q1NjdlY2RjYTQyMzUzODdlOGZh
MDk1ZjQ3MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcGFnZV9ncm91cF9wcml2YXRlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19wYWdlX2dyb3VwX3ByaXZhdGVfaAorI2RlZmluZSBl
d2tfcGFnZV9ncm91cF9wcml2YXRlX2gKKworI2luY2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5o
IgorI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK2Ns
YXNzIEV3a1ZpZXc7CisKK2NsYXNzIEV3a1BhZ2VHcm91cCA6IHB1YmxpYyBFd2tPYmplY3Qgewor
cHVibGljOgorICAgIEVXS19PQkpFQ1RfREVDTEFSRShFd2tQYWdlR3JvdXApCisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IGNyZWF0ZShXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a1BhZ2VHcm91cChw
YWdlR3JvdXBSZWYpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tQYWdlR3Jv
dXA+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIgPSBTdHJpbmcoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrUGFnZUdyb3VwKGlkZW50aWZpZXIuaXNFbXB0
eSgpID8gZGVmYXVsdElkZW50aWZpZXIgOiBpZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgV0tQ
YWdlR3JvdXBSZWYgd2tQYWdlR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VHcm91cFJlZi5n
ZXQoKTsgfQorCisgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBFaW5hX0xpc3QqIHdoaXRlbGlzdCwgRWluYV9MaXN0
KiBibGFja2xpc3QsIGJvb2wgbWFpbkZyYW1lT25seSk7CisgICAgdm9pZCByZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHMoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBFd2tQYWdlR3JvdXAoV0tQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKTsKKyAgICBleHBsaWNpdCBFd2tQYWdlR3JvdXAoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRJ
ZGVudGlmaWVyW107CisKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gbV9wYWdlR3Jv
dXBSZWY7Cit9OworCisjZW5kaWYgLy8gZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggNGYxYTEzMWQy
NWQ3NDM1NGRlMGJlOTNmMWJiYjNkNjhmOTcxN2UzYi4uN2FlMThjN2YzOGVjZDVjNzUzOWUzYWIz
ODkwYmM4ZjMzYWZmMzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0Lmgi
CiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29u
X2RhdGFiYXNlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgorI2luY2x1
ZGUgImV3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a19zZXR0aW5nc19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5o
PgpAQCAtODYsOSArODgsOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfY2xhc3Nfc2V0KEV3
a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiAgICAgcmV0dXJuIEV3a1ZpZXc6OmluaXRTbWFydENs
YXNzSW50ZXJmYWNlKCphcGkpOwogfQogCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRfYWRk
KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjb250ZXh0KQor
RXZhc19PYmplY3QqIGV3a192aWV3X3NtYXJ0X2FkZChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQq
IHNtYXJ0LCBFd2tfQ29udGV4dCogY29udGV4dCwgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCkK
IHsKLSAgICByZXR1cm4gRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChjYW52YXMsIHNtYXJ0LCBl
d2tfb2JqZWN0X2Nhc3Q8RXdrQ29udGV4dCo+KGNvbnRleHQpKTsKKyAgICByZXR1cm4gRXdrVmll
dzo6Y3JlYXRlRXZhc09iamVjdChjYW52YXMsIHNtYXJ0LCBld2tfb2JqZWN0X2Nhc3Q8RXdrQ29u
dGV4dCo+KGNvbnRleHQpLCBld2tfb2JqZWN0X2Nhc3Q8RXdrUGFnZUdyb3VwKj4ocGFnZUdyb3Vw
KSk7CiB9CiAKIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KEV2YXMqIGNh
bnZhcywgRXdrX0NvbnRleHQqIGNvbnRleHQpCkBAIC0xMDgsNiArMTEwLDEzIEBAIEV3a19Db250
ZXh0KiBld2tfdmlld19jb250ZXh0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAg
ICByZXR1cm4gaW1wbC0+ZXdrQ29udGV4dCgpOwogfQogCitFd2tfUGFnZV9Hcm91cCogZXdrX3Zp
ZXdfcGFnZV9ncm91cF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdL
X1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIDApOworCisgICAgcmV0dXJu
IGltcGwtPmV3a1BhZ2VHcm91cCgpOworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJsX3NldChF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdXJsKQogewogICAgIEVXS19WSUVXX0lN
UExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA1YjkyM2M0MmM2NmJlYWMxZmFlMjQ0
NzVmNjIyM2ZiNjJkMmNjZDEzLi5jZDBkMzE3NjNjYjMwNGJmYzE5M2YyMDc2Y2EyZmQxYTY5MTdi
ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAg
LTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCiAjaW5jbHVkZSAi
ZXdrX2Rvd25sb2FkX2pvYi5oIgogI2luY2x1ZGUgImV3a19lcnJvci5oIgorI2luY2x1ZGUgImV3
a19wYWdlX2dyb3VwLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnUuaCIKICNpbmNsdWRlICJl
d2tfc2VjdXJpdHlfb3JpZ2luLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgiCkBAIC0zMTYs
MTAgKzMxNywxMSBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdr
X1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSk7CiAgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJl
IHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3QKICAqIEBwYXJhbSBzbWFydCBFdmFzX1NtYXJ0IG9i
amVjdC4gSXRzIHR5cGUgc2hvdWxkIGJlIEVXS19WSUVXX1RZUEVfU1RSCiAgKiBAcGFyYW0gY29u
dGV4dCBFd2tfQ29udGV4dCBvYmplY3Qgd2hpY2ggaXMgdXNlZCBmb3IgaW5pdGlhbGl6aW5nCisg
KiBAcGFyYW0gcGFnZUdyb3VwIEV3a19QYWdlX0dyb3VwIG9iamVjdCB3aGljaCBpcyB1c2VkIGZv
ciBpbml0aWFsaXppbmcKICAqCiAgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3Ig
QGMgTlVMTCBvbiBmYWlsdXJlCiAgKi8KLUVBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X3NtYXJ0
X2FkZChFdmFzICplLCBFdmFzX1NtYXJ0ICpzbWFydCwgRXdrX0NvbnRleHQgKmNvbnRleHQpOwor
RUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMgKmUsIEV2YXNfU21hcnQg
KnNtYXJ0LCBFd2tfQ29udGV4dCAqY29udGV4dCwgRXdrX1BhZ2VfR3JvdXAgKnBhZ2VHcm91cCk7
CiAKIC8qKgogICogQ3JlYXRlcyBhIG5ldyBFRkwgV2ViS2l0IHZpZXcgb2JqZWN0LgpAQCAtMzUw
LDYgKzM1MiwxNSBAQCBFQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld19hZGRfd2l0aF9jb250ZXh0
KEV2YXMgKmUsIEV3a19Db250ZXh0ICpjb250ZXh0KTsKIEVBUEkgRXdrX0NvbnRleHQgKmV3a192
aWV3X2NvbnRleHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCisgKiBHZXRzIHRo
ZSBFd2tfUGFnZV9Hcm91cCBvZiB0aGlzIHZpZXcuCisgKgorICogQHBhcmFtIG8gdGhlIHZpZXcg
b2JqZWN0IHRvIGdldCB0aGUgRXdrX1BhZ2VfR3JvdXAKKyAqCisgKiBAcmV0dXJuIHRoZSBFd2tf
UGFnZV9Hcm91cCBvZiB0aGlzIHZpZXcgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKi8KK0VBUEkg
RXdrX1BhZ2VfR3JvdXAgKmV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKKworLyoqCiAgKiBBc2tzIHRoZSBvYmplY3QgdG8gbG9hZCB0aGUgZ2l2ZW4gVVJMLgog
ICoKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGxvYWQgQGEgVVJMCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAppbmRleCBlNjRmNGNjNzc1MzYyMmQ3
NTg0MWY4MTQ2ODhlYTUyZWJmYzY1MjQxLi42ZThiYWUyZDcwNmE3YmU0MzllZDg5NDNiMjcxNjcy
ZWMxYTI5YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFz
ZS5jcHAKQEAgLTYxLDExICs2MSwxNCBAQCB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkK
ICAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZtX2V3a1ZpZXdD
bGFzcy5zYyk7CiAKICAgICBFd2tfQ29udGV4dCogbmV3Q29udGV4dCA9IGV3a19jb250ZXh0X25l
dygpOwotICAgIG1fd2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgbmV3
Q29udGV4dCk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIG5ld1BhZ2VHcm91cCA9IGV3a19wYWdlX2dy
b3VwX2NyZWF0ZSgiVW5pdFRlc3QiKTsKKyAgICBtX3dlYlZpZXcgPSBld2tfdmlld19zbWFydF9h
ZGQoZXZhcywgc21hcnQsIG5ld0NvbnRleHQsIG5ld1BhZ2VHcm91cCk7CisKICAgICAvLyBDbGVh
ciBIVFRQIGNhY2hlIGZpbGVzIGJlZm9yZSBydW5uaW5nIHRoZSB1bml0IHRlc3RzLCB3aGljaCBw
cmV2ZW50cyAKICAgICAvLyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBkdWUgdG8gc28gbWFueSBj
YWNoZSBmaWxlcy4KICAgICBld2tfY29udGV4dF9yZXNvdXJjZV9jYWNoZV9jbGVhcihuZXdDb250
ZXh0KTsKICAgICBld2tfb2JqZWN0X3VucmVmKG5ld0NvbnRleHQpOworICAgIGV3a19vYmplY3Rf
dW5yZWYobmV3UGFnZUdyb3VwKTsKIAogICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZpZXcs
IGVudmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFz
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmgKaW5kZXggYmQ1ZTRiOTk1ODVmZDg5YTc3N2JhMDdjNDAxZDFj
ZWYzMTkzYjg3YS4uNTkyNGJlNjQxZmNkN2NiYjVhNjVmZTkxMzNlZmIzMzgyNzAxMzU5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0syVW5pdFRlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKQEAgLTM1LDYgKzM1
LDcgQEAgcHVibGljOgogICAgIEVjb3JlX0V2YXMqIGJhY2tpbmdTdG9yZSgpIHsgcmV0dXJuIG1f
ZWNvcmVFdmFzOyB9CiAgICAgRXZhcyogY2FudmFzKCkgeyByZXR1cm4gZWNvcmVfZXZhc19nZXQo
bV9lY29yZUV2YXMpOyB9CiAgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dl
YlZpZXc7IH0KKyAgICB2b2lkIHNldFdlYlZpZXcoRXZhc19PYmplY3QqIHdlYlZpZXcpIHsgbV93
ZWJWaWV3ID0gd2ViVmlldzsgfQogICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBld2tWaWV3Q2xh
c3MoKSB7IHJldHVybiAmbV9ld2tWaWV3Q2xhc3M7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3BhZ2Vf
Z3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX3BhZ2VfZ3JvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMTFjNDRkYTg3ODhkMjJiNjZiZDQ0MTQx
MTUzNTg1NDQ3MjNjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAKQEAgLTAsMCArMSwxMTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBF
V0syVW5pdFRlc3Q7CisKK2V4dGVybiBFV0syVW5pdFRlc3RFbnZpcm9ubWVudCogZW52aXJvbm1l
bnQ7CisKK3N0YXRpYyBjb25zdCBjaGFyIGh0bWxTdHJpbmdbXSA9ICI8aHRtbD48aGVhZD48dGl0
bGU+Rm9vPC90aXRsZT48L2hlYWQ+PGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZCc+
PHNjcmlwdD5kb2N1bWVudC50aXRsZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5i
b2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJyk8L3NjcmlwdD5I
RUxMTzwvYm9keT48L2h0bWw+IjsKK3N0YXRpYyBjb25zdCBjaGFyIHVzZXJTdHlsZVNoZWV0W10g
PSAiYm9keSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7IH0iOworc3RhdGlj
IGNvbnN0IGNoYXIgZ3JlZW5JblJHQltdID0gInJnYigwLCAxMjgsIDApIjsKK3N0YXRpYyBjb25z
dCBjaGFyIHJlZEluUkdCW10gPSAicmdiKDI1NSwgMCwgMCkiOworCitURVNUX0YoRVdLMlVuaXRU
ZXN0QmFzZSwgZXdrX3BhZ2VfZ3JvdXApCit7CisgICAgRXZhc19TbWFydCogc21hcnQgPSBldmFz
X3NtYXJ0X2NsYXNzX25ldygmKGV3a1ZpZXdDbGFzcygpLT5zYykpOworICAgIEV3a19QYWdlX0dy
b3VwKiBwYWdlR3JvdXAgPSBld2tfcGFnZV9ncm91cF9jcmVhdGUoInRlc3QiKTsKKyAgICBBU1NF
UlRfVFJVRShwYWdlR3JvdXApOworCisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcgPSBld2tf
dmlld19zbWFydF9hZGQoY2FudmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgp
LCBwYWdlR3JvdXApOworICAgIHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBBU1NFUlRf
RVEocGFnZUdyb3VwLCBld2tfdmlld19wYWdlX2dyb3VwX2dldChuZXdXZWJWaWV3KSk7CisgICAg
ZXdrX29iamVjdF91bnJlZihwYWdlR3JvdXApOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFz
ZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGRfYmVmb3JlX2NyZWF0aW5nX3Zp
ZXcpCit7CisgICAgRXZhc19TbWFydCogc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmKGV3
a1ZpZXdDbGFzcygpLT5zYykpOworICAgIEV3a19QYWdlX0dyb3VwKiBwYWdlR3JvdXAgPSBld2tf
cGFnZV9ncm91cF9jcmVhdGUoInRlc3QiKTsKKyAgICBBU1NFUlRfVFJVRShwYWdlR3JvdXApOwor
CisgICAgLy8gQWRkIGEgdXNlciBzdHlsZSBzaGVldCB0byB0aGUgcGFnZSBncm91cCBiZWZvcmUg
Y3JlYXRpbmcgYSB2aWV3CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQo
cGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisKKyAgICAvLyBDcmVh
dGUgYSBuZXcgd2ViIHZpZXcgd2l0aCB0aGlzIHBhZ2UgZ3JvdXAKKyAgICBFdmFzX09iamVjdCog
bmV3V2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChjYW52YXMoKSwgc21hcnQsIGV3a19jb250
ZXh0X2RlZmF1bHRfZ2V0KCksIHBhZ2VHcm91cCk7CisgICAgc2V0V2ViVmlldyhuZXdXZWJWaWV3
KTsKKworICAgIGV3a19vYmplY3RfdW5yZWYocGFnZUdyb3VwKTsKKyAgICBld2tfdmlld190aGVt
ZV9zZXQod2ViVmlldygpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdFRoZW1lKCkpOworICAgIGV2YXNf
b2JqZWN0X3Jlc2l6ZSh3ZWJWaWV3KCksIGVudmlyb25tZW50LT5kZWZhdWx0V2lkdGgoKSwgZW52
aXJvbm1lbnQtPmRlZmF1bHRIZWlnaHQoKSk7CisgICAgZXZhc19vYmplY3Rfc2hvdyh3ZWJWaWV3
KCkpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3ZWJWaWV3KCksIHRydWUpOworCisgICAg
ZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGh0bWxTdHJpbmcsIDAsIDApOwor
ICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKGdyZWVuSW5SR0IpKTsKK30K
KworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hl
ZXRfYWRkX2FmdGVyX2NyZWF0aW5nX3ZpZXcpCit7CisgICAgLy8gQWRkIGEgdXNlciBzdHlsZSBz
aGVldCB0byB0aGUgcGFnZSBncm91cCBhZnRlciBjcmVhdGluZyBhIHZpZXcKKyAgICBFd2tfUGFn
ZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQod2ViVmlldygpKTsK
KyAgICBBU1NFUlRfVFJVRShwYWdlR3JvdXApOworICAgIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5
bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwgdXNlclN0eWxlU2hlZXQsIDAsIDAsIDAsIHRydWUpOwor
CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGh0bWxTdHJpbmcsIDAs
IDApOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKGdyZWVuSW5SR0Ip
KTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5
bGVfc2hlZXRzX3JlbW92ZV9hbGwpCit7CisgICAgRXZhc19TbWFydCogc21hcnQgPSBldmFzX3Nt
YXJ0X2NsYXNzX25ldygmKGV3a1ZpZXdDbGFzcygpLT5zYykpOworICAgIEV3a19QYWdlX0dyb3Vw
KiBwYWdlR3JvdXAgPSBld2tfcGFnZV9ncm91cF9jcmVhdGUoInRlc3QiKTsKKyAgICBBU1NFUlRf
VFJVRShwYWdlR3JvdXApOworCisgICAgLy8gQWRkIGEgdXNlciBzdHlsZSBzaGVldCB0byB0aGUg
cGFnZSBncm91cCBiZWZvcmUgY3JlYXRpbmcgYSB2aWV3CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNl
cl9zdHlsZV9zaGVldF9hZGQocGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1
ZSk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgd2ViIHZpZXcgd2l0aCB0aGlzIHBhZ2UgZ3JvdXAK
KyAgICBFdmFzX09iamVjdCogbmV3V2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChjYW52YXMo
KSwgc21hcnQsIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCksIHBhZ2VHcm91cCk7CisgICAgc2V0
V2ViVmlldyhuZXdXZWJWaWV3KTsKKworICAgIGV3a19vYmplY3RfdW5yZWYocGFnZUdyb3VwKTsK
KyAgICBld2tfdmlld190aGVtZV9zZXQod2ViVmlldygpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdFRo
ZW1lKCkpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZSh3ZWJWaWV3KCksIGVudmlyb25tZW50LT5k
ZWZhdWx0V2lkdGgoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRIZWlnaHQoKSk7CisgICAgZXZhc19v
YmplY3Rfc2hvdyh3ZWJWaWV3KCkpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3ZWJWaWV3
KCksIHRydWUpOworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGh0
bWxTdHJpbmcsIDAsIDApOworCisgICAgLy8gUmVtb3ZlIGFsbCB1c2VyIHN0eWxlIHNoZWV0cyBp
biB0aGUgcGFnZSBncm91cAorICAgIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3Jl
bW92ZV9hbGwoZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJU
X1RSVUUod2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8ocmVkSW5SR0IpKTsKKworICAgIC8vIEFkZCBh
IHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYWZ0ZXIgY3JlYXRpbmcgYSB2aWV3
CisgICAgcGFnZUdyb3VwID0gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQod2ViVmlldygpKTsKKyAg
ICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdlR3JvdXAsIHVzZXJTdHls
ZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdl
YlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisKKyAgICAvLyBSZW1vdmUgYWxsIHVzZXIgc3R5
bGUgc2hlZXRzIGluIHRoZSBwYWdlIGdyb3VwCisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHls
ZV9zaGVldHNfcmVtb3ZlX2FsbChld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpKTsK
KyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhyZWRJblJHQikpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3ZpZXcuY3BwCmluZGV4IDllMjNlNWZlMzI4NGU2MTA1ZjdhNDE4OWZhYTIzOGNjNjdk
NjNkZDIuLmU0MTgzZWUyODNlMzkyMjgwYTI2NjVkNTg0MjJjZDgzMWZhYzJiZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3
azJfdmlldy5jcHAKQEAgLTU1Nyw2ICs1NTcsMTMgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2Us
IGV3a192aWV3X2NvbnRleHRfZ2V0KQogICAgIEFTU0VSVF9FUShjb250ZXh0LCBld2tfdmlld19j
b250ZXh0X2dldCh3ZWJWaWV3KCkpKTsKIH0KIAorVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3
a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KQoreworICAgIEV3a19QYWdlX0dyb3VwKiBwYWdlR3JvdXAg
PSBld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOworICAgIEFTU0VSVF9UUlVFKHBh
Z2VHcm91cCk7CisgICAgQVNTRVJUX0VRKHBhZ2VHcm91cCwgZXdrX3ZpZXdfcGFnZV9ncm91cF9n
ZXQod2ViVmlldygpKSk7Cit9CisKIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19m
ZWVkX3RvdWNoX2V2ZW50KQogewogICAgIEVpbmFfTGlzdCogcG9pbnRzID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAK
aW5kZXggZmEyZTA4ZDYxMGFlZmQ3YWRjNDNmMWFkNjlkZmFjOGUyOTUzY2E1Mi4uZDc1ODAwMWU2
OTIzMzVhNTQ0NWI2YmY3YTRjZjkxNjFjZjNkY2JiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJFd2tWaWV3LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dy
b3VwX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKICNpbmNsdWRlICJld2tf
dmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWZsSW5zcGVjdG9yVXRpbGl0aWVzLmg+CkBAIC0x
MDAsNyArMTAxLDggQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1D
cmVhdGVJbnNwZWN0b3JQYWdlKCkKIAogICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0byB1c2UgV0tW
aWV3UmVmLgogICAgIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmID0gdG9BUEkocGFnZSgpLT5wcm9j
ZXNzKCktPmNvbnRleHQoKSk7Ci0gICAgbV9pbnNwZWN0b3JWaWV3ID0gRXdrVmlldzo6Y3JlYXRl
RXZhc09iamVjdChlY29yZV9ldmFzX2dldChtX2luc3BlY3RvcldpbmRvdyksIEV3a0NvbnRleHQ6
OmNyZWF0ZShjb250ZXh0UmVmKSwgdG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpLCBFd2tWaWV3
OjpMZWdhY3lCZWhhdmlvcik7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gRXdrVmlldzo6Y3JlYXRl
RXZhc09iamVjdChlY29yZV9ldmFzX2dldChtX2luc3BlY3RvcldpbmRvdyksIEV3a0NvbnRleHQ6
OmNyZWF0ZShjb250ZXh0UmVmKSwgRXdrUGFnZUdyb3VwOjpjcmVhdGUodG9BUEkoaW5zcGVjdG9y
UGFnZUdyb3VwKCkpKSwgRXdrVmlldzo6TGVnYWN5QmVoYXZpb3IpOworCiAgICAgaWYgKCFtX2lu
c3BlY3RvclZpZXcpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjM4NjIwMmU4MjFmMjUxZjQ5NmZmYzI4Zjkw
ZTUxNjEzNTgwN2VlNC4uMzk0MTg1MmQ3MDk3MzA0OTQ0MWMzZjhiNWU4MjlhM2U1NWNkMTMyYSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEzLTAzLTAzICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVt
b3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJvbSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgcGFnZSBncm91cCB0byBj
cmVhdGUgdGhlIHZpZXcgb2JqZWN0LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZsL21haW4u
YzoKKyAgICAgICAgKHdpbmRvd19jcmVhdGUpOgorCiAyMDEzLTAzLTAzICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFNvbWUgcGVyZi4gdGVzdHMgaGF2ZSB2YXJp
YW5jZXMgdGhhdCBkaWZmZXIgZ3JlYXRseSBiZXR3ZWVuIHJ1bnMKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmlu
ZGV4IGNlODE2ZWVhOGUyYWE3N2FlM2QzYjYwNzU3MzZjZDk4MTFlMWM0MzkuLjA2M2Q0MmZlNzE3
OTVhMDc2ODgyMDk4MzY5ZjBhNzM5MDZkOTlhYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpAQCAtMTE4
Nyw4ICsxMTg3LDkgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2YXNf
T2JqZWN0ICpvcGVuZXIsIGNvbnN0IGNoYXIgKnVybCwgaW50IHcKICAgICAgICAgd2luZG93LT5l
d2tfdmlldyA9IChFdmFzX09iamVjdCopV0tWaWV3Q3JlYXRlKGV2YXMsIDAsIDApOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXco
JmV3a1ZpZXdDbGFzcy0+c2MpOwotICAgICAgICBFd2tfQ29udGV4dCogY29udGV4dCA9IG9wZW5l
ciA/IGV3a192aWV3X2NvbnRleHRfZ2V0KG9wZW5lcikgOiBld2tfY29udGV4dF9kZWZhdWx0X2dl
dCgpOwotICAgICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMs
IHNtYXJ0LCBjb250ZXh0KTsKKyAgICAgICAgRXdrX0NvbnRleHQgKmNvbnRleHQgPSBvcGVuZXIg
PyBld2tfdmlld19jb250ZXh0X2dldChvcGVuZXIpIDogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQo
KTsKKyAgICAgICAgRXdrX1BhZ2VfR3JvdXAgKnBhZ2VHcm91cCA9IG9wZW5lciA/IGV3a192aWV3
X3BhZ2VfZ3JvdXBfZ2V0KG9wZW5lcikgOiBld2tfcGFnZV9ncm91cF9jcmVhdGUoIiIpOworICAg
ICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBj
b250ZXh0LCBwYWdlR3JvdXApOwogICAgIH0KICAgICBld2tfdmlld190aGVtZV9zZXQod2luZG93
LT5ld2tfdmlldywgVEhFTUVfRElSICIvZGVmYXVsdC5lZGoiKTsKICAgICBpZiAoZGV2aWNlX3Bp
eGVsX3JhdGlvKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191651</attachid>
            <date>2013-03-05 21:54:03 -0800</date>
            <delta_ts>2013-03-06 19:30:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130306145007.patch</filename>
            <type>text/plain</type>
            <size>41649</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjQ4YzlkMzA2ZDRkMmYw
ZjY0NTJhZjk4YmY1ZmI0MjgxMGQ5NjdlOC4uMjVlY2Y3NTc0MTE4ZjczZDFkN2VkZDMwODkwNGY3
MTIxZDY4MWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAzLTA1ICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFjY29yZGluZyB0byB0aGUgQ1NTMi4xIHNwZWMsIHRoZSB1c2VyIG1heSBiZSBhYmxl
IHRvIHNwZWNpZnkgc3R5bGUgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBkb2N1bWVudC4K
KyAgICAgICAgU28gdGhpcyBwYXRjaCBwcm92aWRlcyBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVt
b3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJvbSBhIHBhZ2UgZ3JvdXAuCisgICAgICAgIEFsc28g
aXQgaW1wbGVtZW50cyBFd2tQYWdlR3JvdXAgQVBJIGFzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRo
ZSBhcHBsaWNhdGlvbnMgYW5kIFdLUGFnZUdyb3VwIEFQSS4KKyAgICAgICAgV0tBcnJheUNyZWF0
ZVdpdGhFaW5hTGlzdCgpIGlzIGFkZGVkIGFzIGEgZ2VuZXJpYyBXS0FycmF5IGNyZWF0aW9uIEFQ
SSBmcm9tIEVpbmFfTGlzdC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV0tB
cnJheUNyZWF0ZVdpdGhFaW5hTGlzdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2VmbC9XS0Fy
cmF5RWZsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cDoKKyAgICAgICAgKGNyZWF0ZVdLVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAg
ICAgICAgKEV3a1ZpZXc6OkV3a1ZpZXcpOgorICAgICAgICAoRXdrVmlldzo6Y3JlYXRlRXZhc09i
amVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAo
RXdrVmlldzo6ZXdrUGFnZUdyb3VwKToKKyAgICAgICAgKEV3a1ZpZXcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmNwcDogQWRkZWQuCisgICAgICAgIChjb252
ZXJ0RnJvbUNoYXJUb1dLU3RyaW5nKToKKyAgICAgICAgKEV3a1BhZ2VHcm91cDo6RXdrUGFnZUdy
b3VwKToKKyAgICAgICAgKEV3a1BhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAg
ICAoRXdrUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoZXdr
X3BhZ2VfZ3JvdXBfY3JlYXRlKToKKyAgICAgICAgKGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVf
c2hlZXRfYWRkKToKKyAgICAgICAgKGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3Jl
bW92ZV9hbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgIChFd2tQYWdlR3JvdXApOgorICAgICAgICAoRXdrUGFnZUdy
b3VwOjpjcmVhdGUpOgorICAgICAgICAoRXdrUGFnZUdyb3VwOjp3a1BhZ2VHcm91cCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdf
c21hcnRfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHA6CisgICAgICAgIChF
V0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OlNldFVwKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaDoKKyAgICAg
ICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6c2V0V2ViVmlldyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3BhZ2VfZ3JvdXAuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisKIDIwMTMtMDMtMDMg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW0VG
TF1bUVRdW1dLMl0gVHVybiBvbiBBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIGFs
d2F5cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggN2ZhNGVjOTc1MWI0ZjQxZjI4NGMx
MzhiODU5YWJiOTA4ODVkZGJjZS4uZTljOWUxMzM0ZWJmZTRiNmMyNjUzZWNhMGZiYTliYWNmNTQz
YjRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEyLDYgKzEyLDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nl
c3NVbml4LmNwcAogCiAgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKKyAg
ICBTaGFyZWQvQVBJL2MvZWZsL1dLQXJyYXlFZmwuY3BwCiAKICAgICBTaGFyZWQvRG93bmxvYWRz
L2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCiAgICAgU2hhcmVkL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHAKQEAgLTcwLDYgKzcxLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcGFnZV9ncm91cC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVu
dS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCkBAIC0xNjgsNiArMTcw
LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIKICAgICAiJHtXRUJDT1JFX0RJUn0vc3Zn
L2dyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvRG93bmxvYWRzL3NvdXAiCisg
ICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9BUEkvYy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1NoYXJlZC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCkBAIC0yODMsNiArMjg2LDcgQEAgc2V0
KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19mYXZpY29uX2RhdGFiYXNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZmlsZV9jaG9vc2VyX3JlcXVlc3Qu
aCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaCIKICAgICAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlv
bl9kYXRhLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKQEAgLTM4NCw2ICszODgsNyBA
QCBzZXQoRVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9mYXZpY29uX2RhdGFi
YXNlCiAgICAgdGVzdF9ld2syX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0CiAgICAgdGVzdF9ld2syX29i
amVjdAorICAgIHRlc3RfZXdrMl9wYWdlX2dyb3VwCiAgICAgdGVzdF9ld2syX3BvcHVwX21lbnUK
ICAgICB0ZXN0X2V3azJfcmVmcHRyX2V2YXNfb2JqZWN0CiAgICAgdGVzdF9ld2syX3NldHRpbmdz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQXJyYXlFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mYjEyZGNmM2RiNjYyZjJmOWViMzY5ZDc3NTdhNmFmMzcxYjhjY2M0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmNw
cApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXS0FycmF5RWZsLmgiCisKKyNpbmNsdWRlICJXS0FycmF5LmgiCisj
aW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK1dLQXJyYXlSZWYgV0tBcnJheUNyZWF0ZVdpdGhFaW5hTGlzdChF
aW5hX0xpc3QqIGFycmF5LCBXS1R5cGVSZWYgKCpjb252ZXJ0ZXIpKHZvaWQqKSkKK3sKKyAgICB1
bnNpZ25lZCBjb3VudCA9IGVpbmFfbGlzdF9jb3VudChhcnJheSk7CisgICAgaWYgKCFjb3VudCkK
KyAgICAgICAgcmV0dXJuIFdLQXJyYXlSZWYoKTsKKworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHZl
Y3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBF
aW5hX0xpc3QqIGwgPSAwOworICAgIHZvaWQqIGRhdGEgPSAwOworICAgIEVJTkFfTElTVF9GT1JF
QUNIKGFycmF5LCBsLCBkYXRhKQorICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKGNvbnZl
cnRlcihkYXRhKSk7CisKKyAgICByZXR1cm4gV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKHZl
Y3Rvci5kYXRhKCksIGNvdW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2Vm
bC9XS0FycmF5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RiMDQ2NDRkN2U0MjZmN2I4NjNjYzM2ZjIzYmIw
MGE5OGU2ZWRiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9lZmwvV0tBcnJheUVmbC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS0FycmF5RWZsX2gKKyNkZWZpbmUgV0tBcnJheUVmbF9oCisKKyNpbmNsdWRl
IDxFaW5hLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLUmV0YWluUHRyLmg+CisKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGVXaXRo
RWluYUxpc3QoRWluYV9MaXN0KiwgV0tUeXBlUmVmICgqY29udmVydGVyKSh2b2lkKikpOworCisj
ZW5kaWYgLy8gV0tBcnJheUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLVmlldy5jcHAKaW5kZXggMTc3OTExZmIyMzM5MmJlMmRlZjgzNGMzNWNkNjViMmM2MDBi
ODkzOS4uNzVlNGQ4MjkwZjNhNmIyYTVlNTVkNzBiZjAzYTRkYTVlZGEzMDA0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtMjQsNiArMjQs
NyBAQAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNs
dWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CkBAIC0zMSw3ICszMiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBz
dGF0aWMgaW5saW5lIFdLVmlld1JlZiBjcmVhdGVXS1ZpZXcoRXZhcyogY2FudmFzLCBXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBFd2tWaWV3OjpW
aWV3QmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAgICAgUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQg
PSBjb250ZXh0UmVmID8gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpIDogRXdrQ29udGV4
dDo6ZGVmYXVsdENvbnRleHQoKTsKLSAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCA9IEV3a1Zp
ZXc6OmNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBjb250ZXh0LCBwYWdlR3JvdXBSZWYsIGJlaGF2
aW9yKTsKKyAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBwYWdlR3JvdXBSZWYg
PyBFd2tQYWdlR3JvdXA6OmNyZWF0ZShwYWdlR3JvdXBSZWYpIDogRXdrUGFnZUdyb3VwOjpjcmVh
dGUoKTsKKworICAgIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0ID0gRXdrVmlldzo6Y3JlYXRlRXZh
c09iamVjdChjYW52YXMsIGNvbnRleHQsIHBhZ2VHcm91cCwgYmVoYXZpb3IpOwogICAgIGlmICgh
ZXZhc09iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDNhMjg2NWVlNzkzMWU1ZDFkNGQzMGRmZTUwMDk2
Zjc0Y2Y0ZmRkNTMuLmE5YzhhMTRlNzhiMWZlZTY5MTk1OWNkMmNiNzJhNTA1ZWZkYmU2MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNsdWRlICJld2tf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKICNpbmNsdWRlICJld2tfb2JqZWN0LmgiCisj
aW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudS5oIgog
I2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlf
b3JpZ2luLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
CmluZGV4IDE0NjBiNzA2ZjgxZTUyYWIyMWFjZDIzYmFjNjc3MTEyN2YxOWZlMDcuLjkyZGMyODAx
ZTE2NTI1NTZkN2I5ZGJiZmQ0OTgyM2U5YzQxODQ3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAi
ZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRl
bV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCkBAIC0yMjgsMTEgKzIyOSwxMiBAQCB2b2lkIEV3a1ZpZXdFdmVu
dEhhbmRsZXI8RVZBU19DQUxMQkFDS19ISURFPjo6aGFuZGxlRXZlbnQodm9pZCogZGF0YSwgRXZh
cyosIEV2YQogCiAvLyBFd2tWaWV3IGltcGxlbWVudGF0aW9uLgogCi1Fd2tWaWV3OjpFd2tWaWV3
KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQorRXdrVmll
dzo6RXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IpCiAgICAgOiBtX2V2YXNPYmplY3QoZXZhc09iamVjdCkKICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQorICAgICwgbV9wYWdlR3JvdXAocGFnZUdyb3VwKQogICAgICwgbV9wZW5k
aW5nU3VyZmFjZVJlc2l6ZShmYWxzZSkKLSAgICAsIG1fd2ViVmlldyhhZG9wdFJlZihuZXcgV2Vi
Vmlldyh0b0ltcGwobV9jb250ZXh0LT53a0NvbnRleHQoKSksIHRvSW1wbChwYWdlR3JvdXApLCB0
aGlzKSkpCisgICAgLCBtX3dlYlZpZXcoYWRvcHRSZWYobmV3IFdlYlZpZXcodG9JbXBsKG1fY29u
dGV4dC0+d2tDb250ZXh0KCkpLCB0b0ltcGwobV9wYWdlR3JvdXAtPndrUGFnZUdyb3VwKCkpLCB0
aGlzKSkpCiAgICAgLCBtX3BhZ2VMb2FkQ2xpZW50KFBhZ2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUo
dGhpcykpCiAgICAgLCBtX3BhZ2VQb2xpY3lDbGllbnQoUGFnZVBvbGljeUNsaWVudEVmbDo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9wYWdlVUlDbGllbnQoUGFnZVVJQ2xpZW50RWZsOjpjcmVhdGUo
dGhpcykpCkBAIC0zMDAsNyArMzAyLDcgQEAgRXdrVmlldzo6fkV3a1ZpZXcoKQogICAgIGljb25E
YXRhYmFzZS0+dW53YXRjaENoYW5nZXMoRXdrVmlldzo6aGFuZGxlRmF2aWNvbkNoYW5nZWQpOwog
fQogCi1FdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMs
IEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQorRXZhc19PYmpl
Y3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBz
bWFydCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VH
cm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0LCAwKTsKQEAgLTMxNywxNSArMzE5LDE0IEBAIEV2YXNfT2JqZWN0
KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21h
cnQsIFBhc3NSZWZQCiAKICAgICBBU1NFUlQoIXNtYXJ0RGF0YS0+cHJpdik7CiAKLSAgICAvLyBE
ZWZhdWx0IFdlYlBhZ2VHcm91cCBpcyBjcmVhdGVkIGluIFdlYkNvbnRleHQgY29uc3RydWN0b3Ig
aWYgdGhlIHBhZ2VHcm91cFJlZiBpcyAwLAotICAgIC8vIHNvIHdlIGRvIG5vdCBuZWVkIHRvIGNy
ZWF0ZSBpdCBoZXJlLgotICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3KGV2YXNPYmpl
Y3QsIGNvbnRleHQsIHBhZ2VHcm91cFJlZiwgYmVoYXZpb3IpOworICAgIHNtYXJ0RGF0YS0+cHJp
diA9IG5ldyBFd2tWaWV3KGV2YXNPYmplY3QsIGNvbnRleHQsIChwYWdlR3JvdXAgPyBwYWdlR3Jv
dXAgOiBFd2tQYWdlR3JvdXA6OmNyZWF0ZSgpKSwgYmVoYXZpb3IpOworCiAgICAgcmV0dXJuIGV2
YXNPYmplY3Q7CiB9CiAKLUV2YXNfT2JqZWN0KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2
YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKK0V2YXNfT2JqZWN0KiBFd2tW
aWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBkZWZh
dWx0U21hcnRDbGFzc0luc3RhbmNlKCksIGNvbnRleHQsIHBhZ2VHcm91cFJlZiwgYmVoYXZpb3Ip
OworICAgIHJldHVybiBjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgZGVmYXVsdFNtYXJ0Q2xhc3NJ
bnN0YW5jZSgpLCBjb250ZXh0LCBwYWdlR3JvdXAsIGJlaGF2aW9yKTsKIH0KIAogYm9vbCBFd2tW
aWV3Ojppbml0U21hcnRDbGFzc0ludGVyZmFjZShFd2tfVmlld19TbWFydF9DbGFzcyYgYXBpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IDcxZGFkMmQ1
N2E3MDFlNmY1OTJjM2M2NjdjNDgxMzQ1NzgwZTE3NTIuLjhiNDU5NDFiNzg4MWVjNGE5NjFkOGEw
M2RmMmY4MWFkNjg5OGQxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmgKQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgRXdrQ29udGV4dDsKIGNsYXNzIEV3a0Jh
Y2tGb3J3YXJkTGlzdDsKIGNsYXNzIEV3a0NvbG9yUGlja2VyOwogY2xhc3MgRXdrQ29udGV4dE1l
bnU7CitjbGFzcyBFd2tQYWdlR3JvdXA7CiBjbGFzcyBFd2tQb3B1cE1lbnU7CiBjbGFzcyBFd2tT
ZXR0aW5nczsKIGNsYXNzIEV3a1dpbmRvd0ZlYXR1cmVzOwpAQCAtMTA2LDggKzEwNyw4IEBAIHB1
YmxpYzoKICAgICAgICAgRGVmYXVsdEJlaGF2aW9yCiAgICAgfTsKIAotICAgIHN0YXRpYyBFdmFz
X09iamVjdCogY3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0
LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsICBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYgPSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZp
b3IpOwotICAgIHN0YXRpYyBFdmFzX09iamVjdCogY3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52
YXMsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmID0gMCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2
aW9yKTsKKyAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2Fu
dmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCAg
UGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IDAsIFZpZXdCZWhhdmlvciBiZWhh
dmlvciA9IEV3a1ZpZXc6OkRlZmF1bHRCZWhhdmlvcik7CisgICAgc3RhdGljIEV2YXNfT2JqZWN0
KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBj
b250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwID0gMCwgVmlld0JlaGF2
aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2aW9yKTsKIAogICAgIHN0YXRpYyBi
b29sIGluaXRTbWFydENsYXNzSW50ZXJmYWNlKEV3a19WaWV3X1NtYXJ0X0NsYXNzJik7CiAKQEAg
LTEyMCw2ICsxMjEsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFn
ZSgpIHsgcmV0dXJuIG1fd2ViVmlldy0+cGFnZSgpOyB9CiAgICAgRXdrQ29udGV4dCogZXdrQ29u
dGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEV3a1BhZ2VHcm91cCogZXdr
UGFnZUdyb3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXAuZ2V0KCk7IH0KICAgICBFd2tTZXR0aW5n
cyogc2V0dGluZ3MoKSB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgRXdrQmFja0Zv
cndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC5n
ZXQoKTsgfQogICAgIEV3a1dpbmRvd0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcygpOwpAQCAtMjEz
LDcgKzIxNSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gdGFr
ZVNuYXBzaG90KCk7CiAKIHByaXZhdGU6Ci0gICAgRXdrVmlldyhFdmFzX09iamVjdCogZXZhc09i
amVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdl
R3JvdXAsIFZpZXdCZWhhdmlvcik7CisgICAgRXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVj
dCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91
cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IpOwogICAgIH5Fd2tWaWV3KCk7CiAKICAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEoKSBjb25zdDsKQEAgLTI1Miw2ICsyNTQsNyBAQCBw
cml2YXRlOgogICAgIC8vIE5vdGUsIGluaXRpYWxpemF0aW9uIG9yZGVyIG1hdHRlcnMuCiAgICAg
RXZhc19PYmplY3QqIG1fZXZhc09iamVjdDsKICAgICBSZWZQdHI8RXdrQ29udGV4dD4gbV9jb250
ZXh0OworICAgIFJlZlB0cjxFd2tQYWdlR3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIE93blB0cjxF
dmFzX0dMPiBtX2V2YXNHTDsKICAgICBPd25QdHI8V2ViS2l0OjpFdmFzR0xDb250ZXh0PiBtX2V2
YXNHTENvbnRleHQ7CiAgICAgT3duUHRyPFdlYktpdDo6RXZhc0dMU3VyZmFjZT4gbV9ldmFzR0xT
dXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BhZ2VfZ3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bh
Z2VfZ3JvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxNmUxNWY3YzU5MGQ5NGJkN2U1ZTRmMWI0NWVmNjVk
MzNiOWVkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcGFnZV9ncm91cC5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIK
KworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRl
ICJXS0FycmF5RWZsLmgiCisjaW5jbHVkZSAiV0tQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXS1N0
cmluZy5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworY29uc3QgY2hhciBFd2tQYWdlR3JvdXA6OmRlZmF1bHRJZGVudGlm
aWVyW10gPSAiZGVmYXVsdFBhZ2VHcm91cElkZW50aWZpZXIiOworCitXS1R5cGVSZWYgY29udmVy
dEZyb21DaGFyVG9XS1N0cmluZyh2b2lkKiBkYXRhKQoreworICAgIHJldHVybiBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSkpOworfQorCitFd2tQ
YWdlR3JvdXA6OkV3a1BhZ2VHcm91cChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCisgICAg
OiBtX3BhZ2VHcm91cFJlZihwYWdlR3JvdXBSZWYpCit7Cit9CisKK0V3a1BhZ2VHcm91cDo6RXdr
UGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBtX3BhZ2VHcm91cFJl
ZiA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihhZG9wdFdLKHRvQ29w
aWVkQVBJKGlkZW50aWZpZXIpKS5nZXQoKSkpOworfQorCit2b2lkIEV3a1BhZ2VHcm91cDo6YWRk
VXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgRWluYV9MaXN0KiB3aGl0ZUxpc3QsIEVpbmFfTGlzdCogYmxhY2tMaXN0LCBib29sIG1haW5G
cmFtZU9ubHkpCit7CisgICAgQVNTRVJUKHNvdXJjZSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gd2tTb3VyY2UgPSBhZG9wdFdLKHRvQ29waWVkQVBJKHNvdXJjZSkpOworICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiB3a0Jhc2VVUkwgPSBhZG9wdFdLKHRvQ29waWVkVVJMQVBJKGJh
c2VVUkwpKTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1doaXRlbGlzdCA9IGFkb3B0
V0soV0tBcnJheUNyZWF0ZVdpdGhFaW5hTGlzdCh3aGl0ZUxpc3QsIGNvbnZlcnRGcm9tQ2hhclRv
V0tTdHJpbmcpKTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a0JsYWNrbGlzdCA9IGFk
b3B0V0soV0tBcnJheUNyZWF0ZVdpdGhFaW5hTGlzdChibGFja0xpc3QsIGNvbnZlcnRGcm9tQ2hh
clRvV0tTdHJpbmcpKTsKKyAgICBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMgPSBtYWluRnJhbWVPbmx5ID8ga1dLSW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBrV0tJbmpl
Y3RJbkFsbEZyYW1lczsKKworICAgIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQobV9wYWdl
R3JvdXBSZWYuZ2V0KCksIHdrU291cmNlLmdldCgpLCB3a0Jhc2VVUkwuZ2V0KCksIHdrV2hpdGVs
aXN0LmdldCgpLCB3a0JsYWNrbGlzdC5nZXQoKSwgaW5qZWN0ZWRGcmFtZXMpOworfQorCit2b2lk
IEV3a1BhZ2VHcm91cDo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKK3sKKyAgICBXS1BhZ2VH
cm91cFJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhtX3BhZ2VHcm91cFJlZi5nZXQoKSk7Cit9CisK
K0V3a19QYWdlX0dyb3VwKiBld2tfcGFnZV9ncm91cF9jcmVhdGUoY29uc3QgY2hhciogaWRlbnRp
ZmllcikKK3sKKyAgICByZXR1cm4gRXdrUGFnZUdyb3VwOjpjcmVhdGUoaWRlbnRpZmllcikubGVh
a1JlZigpOworfQorCitFaW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9h
ZGQoRXdrX1BhZ2VfR3JvdXAqIGV3a1BhZ2VHcm91cCwgY29uc3QgY2hhciogc291cmNlLCBjb25z
dCBjaGFyKiBiYXNlVVJMLCBFaW5hX0xpc3QqIHdoaXRlTGlzdCwgRWluYV9MaXN0KiBibGFja0xp
c3QsIEVpbmFfQm9vbCBtYWluRnJhbWVPbmx5KQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1Jf
UkVUVVJOKEV3a1BhZ2VHcm91cCwgZXdrUGFnZUdyb3VwLCBpbXBsLCBmYWxzZSk7CisKKyAgICBp
bXBsLT5hZGRVc2VyU3R5bGVTaGVldChzb3VyY2UsIGJhc2VVUkwsIHdoaXRlTGlzdCwgYmxhY2tM
aXN0LCBtYWluRnJhbWVPbmx5KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wg
ZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbChFd2tfUGFnZV9Hcm91
cCogZXdrUGFnZUdyb3VwKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a1Bh
Z2VHcm91cCwgZXdrUGFnZUdyb3VwLCBpbXBsLCBmYWxzZSk7CisKKyAgICBpbXBsLT5yZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMoKTsKKworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjRmOWY0Yjg4MDI0MzZiYmMyMmM1ZDI3MGMxNWM2NjQ0NjViYTJlZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmgKQEAg
LTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3
a19wYWdlX2dyb3VwLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFBhZ2UgR3JvdXAg
QVBJLgorICovCisKKyNpZm5kZWYgZXdrX3BhZ2VfZ3JvdXBfaAorI2RlZmluZSBld2tfcGFnZV9n
cm91cF9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYg
X19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogRGVjbGFyZSBFd2tf
UGFnZV9Hcm91cCBhcyBFd2tfT2JqZWN0LgorICoKKyAqIEBzZWUgRXdrX09iamVjdAorICovCit0
eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX1BhZ2VfR3JvdXA7CisKKy8qKgorICogQ3JlYXRl
cyBhIG5ldyBFd2tfUGFnZV9Hcm91cC4KKyAqCisgKiBUaGUgcmV0dXJuZWQgRXdrX1BhZ2VfR3Jv
dXAgb2JqZWN0IEBiIHNob3VsZCBiZSB1bnJlZidlZCBhZnRlciB1c2UuCisgKgorICogQHJldHVy
biBFd2tfUGFnZV9Hcm91cCBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUK
KyAqCisgKiBAc2VlIGV3a19vYmplY3RfdW5yZWYKKyAqLworRUFQSSBFd2tfUGFnZV9Hcm91cCAq
ZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKGNvbnN0IGNoYXIgKmlkZW50aWZpZXIpOworCisvKioKKyAq
IEFkZHMgdGhlIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhpcyBwYWdlIGdyb3VwLgorICoKKyAqIEBw
YXJhbSBwYWdlX2dyb3VwIGV3a19wYWdlX2dvcnVwIG9iamVjdCB0byBhZGQgdGhlIHVzZXIgc3R5
bGUgc2hlZXQKKyAqIEBwYXJhbSBzb3VyY2UgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJh
bSB1cmwgYmFzZVVSTAorICogQHBhcmFtIHdoaXRlX2xpc3QgdXJsIGxpc3QgdG8gYWxsb3cgYWRk
aW5nIHRoZSB1c2VyIHN0eWxlIHNoZWV0CisgKiBAcGFyYW0gYmxhY2tfbGlzdCB1cmwgbGlzdCB0
byBkaXNhbGxvdyBhZGRpbmcgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJhbSBtYWluX2Zy
YW1lX29ubHkgYSBzdGF0ZSB0byBhcHBseSB0aGUgdXNlciBzdHlsZSBzaGVldCBvbmx5IHRvIHRo
ZSBtYWluZnJhbWUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgdXNlciBzdHls
ZSBzaGVldCBpcyBhZGRlZCB0byB0aGUgcGFnZSBncm91cCwgb3IKKyAqICAgICAgICAgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBfdXNl
cl9zdHlsZV9zaGVldF9hZGQoRXdrX1BhZ2VfR3JvdXAgKnBhZ2VfZ3JvdXAsIGNvbnN0IGNoYXIg
KnNvdXJjZSwgY29uc3QgY2hhciAqYmFzZV91cmwsIEVpbmFfTGlzdCAqd2hpdGVfbGlzdCwgRWlu
YV9MaXN0ICpibGFja19saXN0LCBFaW5hX0Jvb2wgbWFpbl9mcmFtZV9vbmx5KTsKKworLyoqCisg
KiBSZW1vdmUgYWxsIHRoZSB1c2VyIHN0eWxlIHNoZWV0cyBmcm9tIHRoaXMgcGFnZSBncm91cC4K
KyAqCisgKiBAcGFyYW0gcGFnZV9ncm91cCBwYWdlIGdyb3VwIG9iamVjdCB0byByZW1vdmUgYWxs
IHRoZSB1c2VyIHN0eWxlIHNoZWV0cworICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGFs
bCB0aGUgdXNlciBzdHlsZSBzaGVldCBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwYWdlIGdyb3VwLCBv
cgorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9v
bCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKEV3a19QYWdlX0dy
b3VwICpwYWdlX2dyb3VwKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8vIGV3a19wYWdlX2dyb3VwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTkw
NTE1ZDg1OTdkNTY3ZWNkY2E0MjM1Mzg3ZThmYTA5NWY0NzA1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5o
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVj
dHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcGFn
ZV9ncm91cF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZV9oCisKKyNp
bmNsdWRlICJld2tfb2JqZWN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitjbGFzcyBFd2tWaWV3OworCitjbGFzcyBFd2tQYWdl
R3JvdXAgOiBwdWJsaWMgRXdrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBFV0tfT0JKRUNUX0RFQ0xB
UkUoRXdrUGFnZUdyb3VwKQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBj
cmVhdGUoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBFd2tQYWdlR3JvdXAocGFnZUdyb3VwUmVmKSk7CisgICAgfQorCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyID0gU3RyaW5nKCkpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3
a1BhZ2VHcm91cChpZGVudGlmaWVyLmlzRW1wdHkoKSA/IGRlZmF1bHRJZGVudGlmaWVyIDogaWRl
bnRpZmllcikpOworICAgIH0KKworICAgIFdLUGFnZUdyb3VwUmVmIHdrUGFnZUdyb3VwKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlR3JvdXBSZWYuZ2V0KCk7IH0KKworICAgIHZvaWQgYWRkVXNlclN0
eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgRWlu
YV9MaXN0KiB3aGl0ZWxpc3QsIEVpbmFfTGlzdCogYmxhY2tsaXN0LCBib29sIG1haW5GcmFtZU9u
bHkpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgRXdrUGFnZUdyb3VwKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZik7Cisg
ICAgZXhwbGljaXQgRXdrUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CisKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciBkZWZhdWx0SWRlbnRpZmllcltdOworCisgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlR3JvdXBSZWY+IG1fcGFnZUdyb3VwUmVmOworfTsKKworI2VuZGlmIC8vIGV3a19w
YWdlX2dyb3VwX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCmluZGV4IDRmMWExMzFkMjVkNzQzNTRkZTBiZTkzZjFiYmIzZDY4Zjk3MTdl
M2IuLjdhZTE4YzdmMzhlY2Q1Yzc1MzllM2FiMzg5MGJjOGYzM2FmZjM2NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTM0LDYgKzM0LDgg
QEAKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KQEAgLTg2LDkgKzg4LDkgQEAgRWluYV9Cb29s
IGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAg
IHJldHVybiBFd2tWaWV3Ojppbml0U21hcnRDbGFzc0ludGVyZmFjZSgqYXBpKTsKIH0KIAotRXZh
c19PYmplY3QqIGV3a192aWV3X3NtYXJ0X2FkZChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNt
YXJ0LCBFd2tfQ29udGV4dCogY29udGV4dCkKK0V2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9h
ZGQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQs
IEV3a19QYWdlX0dyb3VwKiBwYWdlR3JvdXApCiB7Ci0gICAgcmV0dXJuIEV3a1ZpZXc6OmNyZWF0
ZUV2YXNPYmplY3QoY2FudmFzLCBzbWFydCwgZXdrX29iamVjdF9jYXN0PEV3a0NvbnRleHQqPihj
b250ZXh0KSk7CisgICAgcmV0dXJuIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBz
bWFydCwgZXdrX29iamVjdF9jYXN0PEV3a0NvbnRleHQqPihjb250ZXh0KSwgZXdrX29iamVjdF9j
YXN0PEV3a1BhZ2VHcm91cCo+KHBhZ2VHcm91cCkpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3Zp
ZXdfYWRkX3dpdGhfY29udGV4dChFdmFzKiBjYW52YXMsIEV3a19Db250ZXh0KiBjb250ZXh0KQpA
QCAtMTA4LDYgKzExMCwxMyBAQCBFd2tfQ29udGV4dCogZXdrX3ZpZXdfY29udGV4dF9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgcmV0dXJuIGltcGwtPmV3a0NvbnRleHQoKTsK
IH0KIAorRXdrX1BhZ2VfR3JvdXAqIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBpbXBsLCAwKTsKKworICAgIHJldHVybiBpbXBsLT5ld2tQYWdlR3JvdXAoKTsKK30KKwog
RWluYV9Cb29sIGV3a192aWV3X3VybF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNo
YXIqIHVybCkKIHsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1w
bCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
aW5kZXggNWI5MjNjNDJjNjZiZWFjMWZhZTI0NDc1ZjYyMjNmYjYyZDJjY2QxMy4uY2QwZDMxNzYz
Y2IzMDRiZmMxOTNmMjA3NmNhMmZkMWE2OTE3YmQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAiZXdr
X2NvbnRleHRfbWVudS5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKICNpbmNsdWRl
ICJld2tfZXJyb3IuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1ZGUgImV3
a19wb3B1cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgogI2luY2x1
ZGUgImV3a19zZXR0aW5ncy5oIgpAQCAtMzE2LDEwICszMTcsMTEgQEAgRUFQSSBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc21hcnRfY2xhc3Nfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpOwogICog
QHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcgb2JqZWN0CiAg
KiBAcGFyYW0gc21hcnQgRXZhc19TbWFydCBvYmplY3QuIEl0cyB0eXBlIHNob3VsZCBiZSBFV0tf
VklFV19UWVBFX1NUUgogICogQHBhcmFtIGNvbnRleHQgRXdrX0NvbnRleHQgb2JqZWN0IHdoaWNo
IGlzIHVzZWQgZm9yIGluaXRpYWxpemluZworICogQHBhcmFtIHBhZ2VHcm91cCBFd2tfUGFnZV9H
cm91cCBvYmplY3Qgd2hpY2ggaXMgdXNlZCBmb3IgaW5pdGlhbGl6aW5nCiAgKgogICogQHJldHVy
biB2aWV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQogICovCi1FQVBJ
IEV2YXNfT2JqZWN0ICpld2tfdmlld19zbWFydF9hZGQoRXZhcyAqZSwgRXZhc19TbWFydCAqc21h
cnQsIEV3a19Db250ZXh0ICpjb250ZXh0KTsKK0VBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X3Nt
YXJ0X2FkZChFdmFzICplLCBFdmFzX1NtYXJ0ICpzbWFydCwgRXdrX0NvbnRleHQgKmNvbnRleHQs
IEV3a19QYWdlX0dyb3VwICpwYWdlR3JvdXApOwogCiAvKioKICAqIENyZWF0ZXMgYSBuZXcgRUZM
IFdlYktpdCB2aWV3IG9iamVjdC4KQEAgLTM1MCw2ICszNTIsMTUgQEAgRUFQSSBFdmFzX09iamVj
dCAqZXdrX3ZpZXdfYWRkX3dpdGhfY29udGV4dChFdmFzICplLCBFd2tfQ29udGV4dCAqY29udGV4
dCk7CiBFQVBJIEV3a19Db250ZXh0ICpld2tfdmlld19jb250ZXh0X2dldChjb25zdCBFdmFzX09i
amVjdCAqbyk7CiAKIC8qKgorICogR2V0cyB0aGUgRXdrX1BhZ2VfR3JvdXAgb2YgdGhpcyB2aWV3
LgorICoKKyAqIEBwYXJhbSBvIHRoZSB2aWV3IG9iamVjdCB0byBnZXQgdGhlIEV3a19QYWdlX0dy
b3VwCisgKgorICogQHJldHVybiB0aGUgRXdrX1BhZ2VfR3JvdXAgb2YgdGhpcyB2aWV3IG9yIEBj
IE5VTEwgb24gZmFpbHVyZQorICovCitFQVBJIEV3a19QYWdlX0dyb3VwICpld2tfdmlld19wYWdl
X2dyb3VwX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgogICogQXNrcyB0aGUgb2Jq
ZWN0IHRvIGxvYWQgdGhlIGdpdmVuIFVSTC4KICAqCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBsb2FkIEBhIFVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFz
ZS5jcHAKaW5kZXggZTY0ZjRjYzc3NTM2MjJkNzU4NDFmODE0Njg4ZWE1MmViZmM2NTI0MS4uNmU4
YmFlMmQ3MDZhN2JlNDM5ZWQ4OTQzYjI3MTY3MmVjMWEyOWJmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC02MSwxMSArNjEsMTQgQEAgdm9p
ZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCiAgICAgRXZhc19TbWFydCogc21hcnQgPSBldmFz
X3NtYXJ0X2NsYXNzX25ldygmbV9ld2tWaWV3Q2xhc3Muc2MpOwogCiAgICAgRXdrX0NvbnRleHQq
IG5ld0NvbnRleHQgPSBld2tfY29udGV4dF9uZXcoKTsKLSAgICBtX3dlYlZpZXcgPSBld2tfdmll
d19zbWFydF9hZGQoZXZhcywgc21hcnQsIG5ld0NvbnRleHQpOworICAgIEV3a19QYWdlX0dyb3Vw
KiBuZXdQYWdlR3JvdXAgPSBld2tfcGFnZV9ncm91cF9jcmVhdGUoIlVuaXRUZXN0Iik7CisgICAg
bV93ZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBuZXdDb250ZXh0LCBu
ZXdQYWdlR3JvdXApOworCiAgICAgLy8gQ2xlYXIgSFRUUCBjYWNoZSBmaWxlcyBiZWZvcmUgcnVu
bmluZyB0aGUgdW5pdCB0ZXN0cywgd2hpY2ggcHJldmVudHMgCiAgICAgLy8gcGVyZm9ybWFuY2Ug
ZGVncmFkYXRpb24gZHVlIHRvIHNvIG1hbnkgY2FjaGUgZmlsZXMuCiAgICAgZXdrX2NvbnRleHRf
cmVzb3VyY2VfY2FjaGVfY2xlYXIobmV3Q29udGV4dCk7CiAgICAgZXdrX29iamVjdF91bnJlZihu
ZXdDb250ZXh0KTsKKyAgICBld2tfb2JqZWN0X3VucmVmKG5ld1BhZ2VHcm91cCk7CiAKICAgICBl
d2tfdmlld190aGVtZV9zZXQobV93ZWJWaWV3LCBlbnZpcm9ubWVudC0+ZGVmYXVsdFRoZW1lKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCmluZGV4IGJk
NWU0Yjk5NTg1ZmQ4OWE3NzdiYTA3YzQwMWQxY2VmMzE5M2I4N2EuLjU5MjRiZTY0MWZjZDdjYmI1
YTY1ZmU5MTMzZWZiMzM4MjcwMTM1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0QmFzZS5oCkBAIC0zNSw2ICszNSw3IEBAIHB1YmxpYzoKICAgICBFY29yZV9FdmFz
KiBiYWNraW5nU3RvcmUoKSB7IHJldHVybiBtX2Vjb3JlRXZhczsgfQogICAgIEV2YXMqIGNhbnZh
cygpIHsgcmV0dXJuIGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzKTsgfQogICAgIEV2YXNfT2Jq
ZWN0KiB3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgdm9pZCBzZXRXZWJWaWV3
KEV2YXNfT2JqZWN0KiB3ZWJWaWV3KSB7IG1fd2ViVmlldyA9IHdlYlZpZXc7IH0KICAgICBFd2tf
Vmlld19TbWFydF9DbGFzcyogZXdrVmlld0NsYXNzKCkgeyByZXR1cm4gJm1fZXdrVmlld0NsYXNz
OyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYWdlX2dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYWdlX2dyb3VwLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYTExYzQ0ZGE4Nzg4ZDIyYjY2YmQ0NDE0MTE1MzU4NTQ0NzIzYzQxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Bh
Z2VfZ3JvdXAuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
QmFzZS5oIgorCit1c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVu
aXRUZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50OworCitzdGF0aWMgY29uc3QgY2hhciBodG1s
U3RyaW5nW10gPSAiPGh0bWw+PGhlYWQ+PHRpdGxlPkZvbzwvdGl0bGU+PC9oZWFkPjxib2R5IHN0
eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQnPjxzY3JpcHQ+ZG9jdW1lbnQudGl0bGU9d2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
YmFja2dyb3VuZC1jb2xvcicpPC9zY3JpcHQ+SEVMTE88L2JvZHk+PC9odG1sPiI7CitzdGF0aWMg
Y29uc3QgY2hhciB1c2VyU3R5bGVTaGVldFtdID0gImJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbiAhaW1wb3J0YW50OyB9IjsKK3N0YXRpYyBjb25zdCBjaGFyIGdyZWVuSW5SR0JbXSA9ICJy
Z2IoMCwgMTI4LCAwKSI7CitzdGF0aWMgY29uc3QgY2hhciByZWRJblJHQltdID0gInJnYigyNTUs
IDAsIDApIjsKKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYWdlX2dyb3VwKQorewor
ICAgIEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJihld2tWaWV3Q2xh
c3MoKS0+c2MpKTsKKyAgICBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3Jv
dXBfY3JlYXRlKCJ0ZXN0Iik7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKworICAgIEV2
YXNfT2JqZWN0KiBuZXdXZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGNhbnZhcygpLCBzbWFy
dCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3
KG5ld1dlYlZpZXcpOworCisgICAgQVNTRVJUX0VRKHBhZ2VHcm91cCwgZXdrX3ZpZXdfcGFnZV9n
cm91cF9nZXQobmV3V2ViVmlldykpOworICAgIGV3a19vYmplY3RfdW5yZWYocGFnZUdyb3VwKTsK
K30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVf
c2hlZXRfYWRkX2JlZm9yZV9jcmVhdGluZ192aWV3KQoreworICAgIEV2YXNfU21hcnQqIHNtYXJ0
ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJihld2tWaWV3Q2xhc3MoKS0+c2MpKTsKKyAgICBFd2tf
UGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKCJ0ZXN0Iik7Cisg
ICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKworICAgIC8vIEFkZCBhIHVzZXIgc3R5bGUgc2hl
ZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYmVmb3JlIGNyZWF0aW5nIGEgdmlldworICAgIGV3a19wYWdl
X2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwgdXNlclN0eWxlU2hlZXQsIDAs
IDAsIDAsIHRydWUpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IHdlYiB2aWV3IHdpdGggdGhpcyBw
YWdlIGdyb3VwCisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcgPSBld2tfdmlld19zbWFydF9h
ZGQoY2FudmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpLCBwYWdlR3JvdXAp
OworICAgIHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBld2tfb2JqZWN0X3VucmVmKHBh
Z2VHcm91cCk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdlYlZpZXcoKSwgZW52aXJvbm1lbnQt
PmRlZmF1bHRUaGVtZSgpKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUod2ViVmlldygpLCBlbnZp
cm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5kZWZhdWx0SGVpZ2h0KCkpOwor
ICAgIGV2YXNfb2JqZWN0X3Nob3cod2ViVmlldygpKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19z
ZXQod2ViVmlldygpLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2Vi
VmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRs
ZUNoYW5nZWRUbyhncmVlbkluUkdCKSk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBl
d2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZF9hZnRlcl9jcmVhdGluZ192aWV3KQor
eworICAgIC8vIEFkZCBhIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYWZ0ZXIg
Y3JlYXRpbmcgYSB2aWV3CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a192aWV3
X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSk7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsK
KyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdlR3JvdXAsIHVzZXJT
dHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xv
YWQod2ViVmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50
aWxUaXRsZUNoYW5nZWRUbyhncmVlbkluUkdCKSk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RC
YXNlLCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKQoreworICAg
IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJihld2tWaWV3Q2xhc3Mo
KS0+c2MpKTsKKyAgICBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBf
Y3JlYXRlKCJ0ZXN0Iik7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKworICAgIC8vIEFk
ZCBhIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYmVmb3JlIGNyZWF0aW5nIGEg
dmlldworICAgIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwg
dXNlclN0eWxlU2hlZXQsIDAsIDAsIDAsIHRydWUpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IHdl
YiB2aWV3IHdpdGggdGhpcyBwYWdlIGdyb3VwCisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcg
PSBld2tfdmlld19zbWFydF9hZGQoY2FudmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0
X2dldCgpLCBwYWdlR3JvdXApOworICAgIHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBl
d2tfb2JqZWN0X3VucmVmKHBhZ2VHcm91cCk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdlYlZp
ZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKKyAgICBldmFzX29iamVjdF9yZXNp
emUod2ViVmlldygpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5k
ZWZhdWx0SGVpZ2h0KCkpOworICAgIGV2YXNfb2JqZWN0X3Nob3cod2ViVmlldygpKTsKKyAgICBl
dmFzX29iamVjdF9mb2N1c19zZXQod2ViVmlldygpLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0
bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKworICAgIC8vIFJl
bW92ZSBhbGwgdXNlciBzdHlsZSBzaGVldHMgaW4gdGhlIHBhZ2UgZ3JvdXAKKyAgICBld2tfcGFn
ZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKGV3a192aWV3X3BhZ2VfZ3JvdXBf
Z2V0KHdlYlZpZXcoKSkpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRv
KHJlZEluUkdCKSk7CisKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdl
IGdyb3VwIGFmdGVyIGNyZWF0aW5nIGEgdmlldworICAgIHBhZ2VHcm91cCA9IGV3a192aWV3X3Bh
Z2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSk7CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9z
aGVldF9hZGQocGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisgICAg
ZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGh0bWxTdHJpbmcsIDAsIDApOwor
CisgICAgLy8gUmVtb3ZlIGFsbCB1c2VyIHN0eWxlIHNoZWV0cyBpbiB0aGUgcGFnZSBncm91cAor
ICAgIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3JlbW92ZV9hbGwoZXdrX3ZpZXdf
cGFnZV9ncm91cF9nZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVGl0
bGVDaGFuZ2VkVG8ocmVkSW5SR0IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA5ZTIzZTVm
ZTMyODRlNjEwNWY3YTQxODlmYWEyMzhjYzY3ZDYzZGQyLi5lNDE4M2VlMjgzZTM5MjI4MGEyNjY1
ZDU4NDIyY2Q4MzFmYWMyYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC01NTcsNiArNTU3LDEz
IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19jb250ZXh0X2dldCkKICAgICBB
U1NFUlRfRVEoY29udGV4dCwgZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKSk7CiB9CiAK
K1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19wYWdlX2dyb3VwX2dldCkKK3sKKyAg
ICBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQod2Vi
VmlldygpKTsKKyAgICBBU1NFUlRfVFJVRShwYWdlR3JvdXApOworICAgIEFTU0VSVF9FUShwYWdl
R3JvdXAsIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSkpOworfQorCiBURVNUX0Yo
RVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudCkKIHsKICAgICBFaW5h
X0xpc3QqIHBvaW50cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4IGZhMmUwOGQ2MTBhZWZkN2FkYzQzZjFh
ZDY5ZGZhYzhlMjk1M2NhNTIuLmQ3NTgwMDFlNjkyMzM1YTU0NDViNmJmN2E0Y2Y5MTYxY2YzZGNi
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9y
UHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVj
dG9yUHJveHlFZmwuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXdrVmlldy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdr
X3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Vm
bEluc3BlY3RvclV0aWxpdGllcy5oPgpAQCAtMTAwLDcgKzEwMSw4IEBAIFdlYlBhZ2VQcm94eSog
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAKICAgICAv
LyBGSVhNRTogUmVmYWN0b3IgdG8gdXNlIFdLVmlld1JlZi4KICAgICBXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiA9IHRvQVBJKHBhZ2UoKS0+cHJvY2VzcygpLT5jb250ZXh0KCkpOwotICAgIG1faW5z
cGVjdG9yVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoZWNvcmVfZXZhc19nZXQobV9p
bnNwZWN0b3JXaW5kb3cpLCBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIHRvQVBJKGlu
c3BlY3RvclBhZ2VHcm91cCgpKSwgRXdrVmlldzo6TGVnYWN5QmVoYXZpb3IpOworICAgIG1faW5z
cGVjdG9yVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoZWNvcmVfZXZhc19nZXQobV9p
bnNwZWN0b3JXaW5kb3cpLCBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIEV3a1BhZ2VH
cm91cDo6Y3JlYXRlKHRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSksIEV3a1ZpZXc6OkxlZ2Fj
eUJlaGF2aW9yKTsKKwogICAgIGlmICghbV9pbnNwZWN0b3JWaWV3KQogICAgICAgICByZXR1cm4g
MDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDYzODYyMDJlODIxZjI1MWY0OTZmZmMyOGY5MGU1MTYxMzU4MDdlZTQuLjk5MTVhMzkzM2FkMzEz
NjkwYmNkZGMyY2I3ZjU2OWYyODQ4NTdiNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0wNSAgSmlud29v
IFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBB
ZGQgYW4gQVBJIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHVzZXIgc3R5bGUgc2hlZXRzIGZyb20g
YSBwYWdlIGdyb3VwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgdGhlIHBhZ2UgZ3JvdXAgdG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdC4KKworICAg
ICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAgICAgICh3aW5kb3dfY3JlYXRlKToK
KwogMjAxMy0wMy0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTb21lIHBlcmYuIHRlc3RzIGhhdmUgdmFyaWFuY2VzIHRoYXQgZGlmZmVyIGdyZWF0bHkgYmV0
d2VlbiBydW5zCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jIGIvVG9v
bHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwppbmRleCBjZTgxNmVlYThlMmFhNzdhZTNkM2I2MDc1
NzM2Y2Q5ODExZTFjNDM5Li4wNjNkNDJmZTcxNzk1YTA3Njg4MjA5ODM2OWYwYTczOTA2ZDk5YWE2
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL2VmbC9tYWluLmMKQEAgLTExODcsOCArMTE4Nyw5IEBAIHN0YXRpYyBCcm93c2Vy
X1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqb3BlbmVyLCBjb25zdCBjaGFyICp1
cmwsIGludCB3CiAgICAgICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSAoRXZhc19PYmplY3QqKVdLVmll
d0NyZWF0ZShldmFzLCAwLCAwKTsKICAgICB9IGVsc2UgewogICAgICAgICBFdmFzX1NtYXJ0ICpz
bWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZld2tWaWV3Q2xhc3MtPnNjKTsKLSAgICAgICAg
RXdrX0NvbnRleHQqIGNvbnRleHQgPSBvcGVuZXIgPyBld2tfdmlld19jb250ZXh0X2dldChvcGVu
ZXIpIDogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKLSAgICAgICAgd2luZG93LT5ld2tfdmll
dyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgY29udGV4dCk7CisgICAgICAgIEV3
a19Db250ZXh0ICpjb250ZXh0ID0gb3BlbmVyID8gZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVy
KSA6IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CisgICAgICAgIEV3a19QYWdlX0dyb3VwICpw
YWdlR3JvdXAgPSBvcGVuZXIgPyBld2tfdmlld19wYWdlX2dyb3VwX2dldChvcGVuZXIpIDogZXdr
X3BhZ2VfZ3JvdXBfY3JlYXRlKCIiKTsKKyAgICAgICAgd2luZG93LT5ld2tfdmlldyA9IGV3a192
aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgY29udGV4dCwgcGFnZUdyb3VwKTsKICAgICB9CiAg
ICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIFRIRU1FX0RJUiAiL2RlZmF1
bHQuZWRqIik7CiAgICAgaWYgKGRldmljZV9waXhlbF9yYXRpbykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191897</attachid>
            <date>2013-03-06 19:30:25 -0800</date>
            <delta_ts>2013-03-06 20:18:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130307122628.patch</filename>
            <type>text/plain</type>
            <size>41656</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjQ4YzlkMzA2ZDRkMmYw
ZjY0NTJhZjk4YmY1ZmI0MjgxMGQ5NjdlOC4uMjVlY2Y3NTc0MTE4ZjczZDFkN2VkZDMwODkwNGY3
MTIxZDY4MWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAzLTA1ICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFjY29yZGluZyB0byB0aGUgQ1NTMi4xIHNwZWMsIHRoZSB1c2VyIG1heSBiZSBhYmxl
IHRvIHNwZWNpZnkgc3R5bGUgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBkb2N1bWVudC4K
KyAgICAgICAgU28gdGhpcyBwYXRjaCBwcm92aWRlcyBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVt
b3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJvbSBhIHBhZ2UgZ3JvdXAuCisgICAgICAgIEFsc28g
aXQgaW1wbGVtZW50cyBFd2tQYWdlR3JvdXAgQVBJIGFzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRo
ZSBhcHBsaWNhdGlvbnMgYW5kIFdLUGFnZUdyb3VwIEFQSS4KKyAgICAgICAgV0tBcnJheUNyZWF0
ZVdpdGhFaW5hTGlzdCgpIGlzIGFkZGVkIGFzIGEgZ2VuZXJpYyBXS0FycmF5IGNyZWF0aW9uIEFQ
SSBmcm9tIEVpbmFfTGlzdC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV0tB
cnJheUNyZWF0ZVdpdGhFaW5hTGlzdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2VmbC9XS0Fy
cmF5RWZsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cDoKKyAgICAgICAgKGNyZWF0ZVdLVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAg
ICAgICAgKEV3a1ZpZXc6OkV3a1ZpZXcpOgorICAgICAgICAoRXdrVmlldzo6Y3JlYXRlRXZhc09i
amVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAo
RXdrVmlldzo6ZXdrUGFnZUdyb3VwKToKKyAgICAgICAgKEV3a1ZpZXcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmNwcDogQWRkZWQuCisgICAgICAgIChjb252
ZXJ0RnJvbUNoYXJUb1dLU3RyaW5nKToKKyAgICAgICAgKEV3a1BhZ2VHcm91cDo6RXdrUGFnZUdy
b3VwKToKKyAgICAgICAgKEV3a1BhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAg
ICAoRXdrUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoZXdr
X3BhZ2VfZ3JvdXBfY3JlYXRlKToKKyAgICAgICAgKGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVf
c2hlZXRfYWRkKToKKyAgICAgICAgKGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3Jl
bW92ZV9hbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgIChFd2tQYWdlR3JvdXApOgorICAgICAgICAoRXdrUGFnZUdy
b3VwOjpjcmVhdGUpOgorICAgICAgICAoRXdrUGFnZUdyb3VwOjp3a1BhZ2VHcm91cCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdf
c21hcnRfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHA6CisgICAgICAgIChF
V0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OlNldFVwKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaDoKKyAgICAg
ICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6c2V0V2ViVmlldyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3BhZ2VfZ3JvdXAuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisKIDIwMTMtMDMtMDMg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW0VG
TF1bUVRdW1dLMl0gVHVybiBvbiBBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIGFs
d2F5cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggN2ZhNGVjOTc1MWI0ZjQxZjI4NGMx
MzhiODU5YWJiOTA4ODVkZGJjZS4uZTljOWUxMzM0ZWJmZTRiNmMyNjUzZWNhMGZiYTliYWNmNTQz
YjRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEyLDYgKzEyLDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nl
c3NVbml4LmNwcAogCiAgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKKyAg
ICBTaGFyZWQvQVBJL2MvZWZsL1dLQXJyYXlFZmwuY3BwCiAKICAgICBTaGFyZWQvRG93bmxvYWRz
L2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCiAgICAgU2hhcmVkL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHAKQEAgLTcwLDYgKzcxLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcGFnZV9ncm91cC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVu
dS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCkBAIC0xNjgsNiArMTcw
LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIKICAgICAiJHtXRUJDT1JFX0RJUn0vc3Zn
L2dyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvRG93bmxvYWRzL3NvdXAiCisg
ICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9BUEkvYy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1NoYXJlZC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCkBAIC0yODMsNiArMjg2LDcgQEAgc2V0
KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19mYXZpY29uX2RhdGFiYXNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZmlsZV9jaG9vc2VyX3JlcXVlc3Qu
aCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaCIKICAgICAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlv
bl9kYXRhLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKQEAgLTM4NCw2ICszODgsNyBA
QCBzZXQoRVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9mYXZpY29uX2RhdGFi
YXNlCiAgICAgdGVzdF9ld2syX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0CiAgICAgdGVzdF9ld2syX29i
amVjdAorICAgIHRlc3RfZXdrMl9wYWdlX2dyb3VwCiAgICAgdGVzdF9ld2syX3BvcHVwX21lbnUK
ICAgICB0ZXN0X2V3azJfcmVmcHRyX2V2YXNfb2JqZWN0CiAgICAgdGVzdF9ld2syX3NldHRpbmdz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQXJyYXlFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mYjEyZGNmM2RiNjYyZjJmOWViMzY5ZDc3NTdhNmFmMzcxYjhjY2M0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmNw
cApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXS0FycmF5RWZsLmgiCisKKyNpbmNsdWRlICJXS0FycmF5LmgiCisj
aW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK1dLQXJyYXlSZWYgV0tBcnJheUNyZWF0ZVdpdGhFaW5hTGlzdChF
aW5hX0xpc3QqIGFycmF5LCBXS1R5cGVSZWYgKCpjb252ZXJ0ZXIpKHZvaWQqKSkKK3sKKyAgICB1
bnNpZ25lZCBjb3VudCA9IGVpbmFfbGlzdF9jb3VudChhcnJheSk7CisgICAgaWYgKCFjb3VudCkK
KyAgICAgICAgcmV0dXJuIFdLQXJyYXlSZWYoKTsKKworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHZl
Y3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBF
aW5hX0xpc3QqIGwgPSAwOworICAgIHZvaWQqIGRhdGEgPSAwOworICAgIEVJTkFfTElTVF9GT1JF
QUNIKGFycmF5LCBsLCBkYXRhKQorICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKGNvbnZl
cnRlcihkYXRhKSk7CisKKyAgICByZXR1cm4gV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKHZl
Y3Rvci5kYXRhKCksIGNvdW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2Vm
bC9XS0FycmF5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RiMDQ2NDRkN2U0MjZmN2I4NjNjYzM2ZjIzYmIw
MGE5OGU2ZWRiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9lZmwvV0tBcnJheUVmbC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS0FycmF5RWZsX2gKKyNkZWZpbmUgV0tBcnJheUVmbF9oCisKKyNpbmNsdWRl
IDxFaW5hLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLUmV0YWluUHRyLmg+CisKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGVXaXRo
RWluYUxpc3QoRWluYV9MaXN0KiwgV0tUeXBlUmVmICgqY29udmVydGVyKSh2b2lkKikpOworCisj
ZW5kaWYgLy8gV0tBcnJheUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLVmlldy5jcHAKaW5kZXggMTc3OTExZmIyMzM5MmJlMmRlZjgzNGMzNWNkNjViMmM2MDBi
ODkzOS4uNzVlNGQ4MjkwZjNhNmIyYTVlNTVkNzBiZjAzYTRkYTVlZGEzMDA0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtMjQsNiArMjQs
NyBAQAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNs
dWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CkBAIC0zMSw3ICszMiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBz
dGF0aWMgaW5saW5lIFdLVmlld1JlZiBjcmVhdGVXS1ZpZXcoRXZhcyogY2FudmFzLCBXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBFd2tWaWV3OjpW
aWV3QmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAgICAgUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQg
PSBjb250ZXh0UmVmID8gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpIDogRXdrQ29udGV4
dDo6ZGVmYXVsdENvbnRleHQoKTsKLSAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCA9IEV3a1Zp
ZXc6OmNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBjb250ZXh0LCBwYWdlR3JvdXBSZWYsIGJlaGF2
aW9yKTsKKyAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBwYWdlR3JvdXBSZWYg
PyBFd2tQYWdlR3JvdXA6OmNyZWF0ZShwYWdlR3JvdXBSZWYpIDogRXdrUGFnZUdyb3VwOjpjcmVh
dGUoKTsKKworICAgIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0ID0gRXdrVmlldzo6Y3JlYXRlRXZh
c09iamVjdChjYW52YXMsIGNvbnRleHQsIHBhZ2VHcm91cCwgYmVoYXZpb3IpOwogICAgIGlmICgh
ZXZhc09iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDNhMjg2NWVlNzkzMWU1ZDFkNGQzMGRmZTUwMDk2
Zjc0Y2Y0ZmRkNTMuLmE5YzhhMTRlNzhiMWZlZTY5MTk1OWNkMmNiNzJhNTA1ZWZkYmU2MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNsdWRlICJld2tf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKICNpbmNsdWRlICJld2tfb2JqZWN0LmgiCisj
aW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudS5oIgog
I2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlf
b3JpZ2luLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
CmluZGV4IDE0NjBiNzA2ZjgxZTUyYWIyMWFjZDIzYmFjNjc3MTEyN2YxOWZlMDcuLjkyZGMyODAx
ZTE2NTI1NTZkN2I5ZGJiZmQ0OTgyM2U5YzQxODQ3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAi
ZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRl
bV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCkBAIC0yMjgsMTEgKzIyOSwxMiBAQCB2b2lkIEV3a1ZpZXdFdmVu
dEhhbmRsZXI8RVZBU19DQUxMQkFDS19ISURFPjo6aGFuZGxlRXZlbnQodm9pZCogZGF0YSwgRXZh
cyosIEV2YQogCiAvLyBFd2tWaWV3IGltcGxlbWVudGF0aW9uLgogCi1Fd2tWaWV3OjpFd2tWaWV3
KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQorRXdrVmll
dzo6RXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IpCiAgICAgOiBtX2V2YXNPYmplY3QoZXZhc09iamVjdCkKICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQorICAgICwgbV9wYWdlR3JvdXAocGFnZUdyb3VwKQogICAgICwgbV9wZW5k
aW5nU3VyZmFjZVJlc2l6ZShmYWxzZSkKLSAgICAsIG1fd2ViVmlldyhhZG9wdFJlZihuZXcgV2Vi
Vmlldyh0b0ltcGwobV9jb250ZXh0LT53a0NvbnRleHQoKSksIHRvSW1wbChwYWdlR3JvdXApLCB0
aGlzKSkpCisgICAgLCBtX3dlYlZpZXcoYWRvcHRSZWYobmV3IFdlYlZpZXcodG9JbXBsKG1fY29u
dGV4dC0+d2tDb250ZXh0KCkpLCB0b0ltcGwobV9wYWdlR3JvdXAtPndrUGFnZUdyb3VwKCkpLCB0
aGlzKSkpCiAgICAgLCBtX3BhZ2VMb2FkQ2xpZW50KFBhZ2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUo
dGhpcykpCiAgICAgLCBtX3BhZ2VQb2xpY3lDbGllbnQoUGFnZVBvbGljeUNsaWVudEVmbDo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9wYWdlVUlDbGllbnQoUGFnZVVJQ2xpZW50RWZsOjpjcmVhdGUo
dGhpcykpCkBAIC0zMDAsNyArMzAyLDcgQEAgRXdrVmlldzo6fkV3a1ZpZXcoKQogICAgIGljb25E
YXRhYmFzZS0+dW53YXRjaENoYW5nZXMoRXdrVmlldzo6aGFuZGxlRmF2aWNvbkNoYW5nZWQpOwog
fQogCi1FdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMs
IEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQorRXZhc19PYmpl
Y3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBz
bWFydCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VH
cm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0LCAwKTsKQEAgLTMxNywxNSArMzE5LDE0IEBAIEV2YXNfT2JqZWN0
KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21h
cnQsIFBhc3NSZWZQCiAKICAgICBBU1NFUlQoIXNtYXJ0RGF0YS0+cHJpdik7CiAKLSAgICAvLyBE
ZWZhdWx0IFdlYlBhZ2VHcm91cCBpcyBjcmVhdGVkIGluIFdlYkNvbnRleHQgY29uc3RydWN0b3Ig
aWYgdGhlIHBhZ2VHcm91cFJlZiBpcyAwLAotICAgIC8vIHNvIHdlIGRvIG5vdCBuZWVkIHRvIGNy
ZWF0ZSBpdCBoZXJlLgotICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3KGV2YXNPYmpl
Y3QsIGNvbnRleHQsIHBhZ2VHcm91cFJlZiwgYmVoYXZpb3IpOworICAgIHNtYXJ0RGF0YS0+cHJp
diA9IG5ldyBFd2tWaWV3KGV2YXNPYmplY3QsIGNvbnRleHQsIChwYWdlR3JvdXAgPyBwYWdlR3Jv
dXAgOiBFd2tQYWdlR3JvdXA6OmNyZWF0ZSgpKSwgYmVoYXZpb3IpOworCiAgICAgcmV0dXJuIGV2
YXNPYmplY3Q7CiB9CiAKLUV2YXNfT2JqZWN0KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2
YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKK0V2YXNfT2JqZWN0KiBFd2tW
aWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBkZWZh
dWx0U21hcnRDbGFzc0luc3RhbmNlKCksIGNvbnRleHQsIHBhZ2VHcm91cFJlZiwgYmVoYXZpb3Ip
OworICAgIHJldHVybiBjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgZGVmYXVsdFNtYXJ0Q2xhc3NJ
bnN0YW5jZSgpLCBjb250ZXh0LCBwYWdlR3JvdXAsIGJlaGF2aW9yKTsKIH0KIAogYm9vbCBFd2tW
aWV3Ojppbml0U21hcnRDbGFzc0ludGVyZmFjZShFd2tfVmlld19TbWFydF9DbGFzcyYgYXBpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IDcxZGFkMmQ1
N2E3MDFlNmY1OTJjM2M2NjdjNDgxMzQ1NzgwZTE3NTIuLjhiNDU5NDFiNzg4MWVjNGE5NjFkOGEw
M2RmMmY4MWFkNjg5OGQxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmgKQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgRXdrQ29udGV4dDsKIGNsYXNzIEV3a0Jh
Y2tGb3J3YXJkTGlzdDsKIGNsYXNzIEV3a0NvbG9yUGlja2VyOwogY2xhc3MgRXdrQ29udGV4dE1l
bnU7CitjbGFzcyBFd2tQYWdlR3JvdXA7CiBjbGFzcyBFd2tQb3B1cE1lbnU7CiBjbGFzcyBFd2tT
ZXR0aW5nczsKIGNsYXNzIEV3a1dpbmRvd0ZlYXR1cmVzOwpAQCAtMTA2LDggKzEwNyw4IEBAIHB1
YmxpYzoKICAgICAgICAgRGVmYXVsdEJlaGF2aW9yCiAgICAgfTsKIAotICAgIHN0YXRpYyBFdmFz
X09iamVjdCogY3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0
LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsICBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYgPSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZp
b3IpOwotICAgIHN0YXRpYyBFdmFzX09iamVjdCogY3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52
YXMsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmID0gMCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2
aW9yKTsKKyAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2Fu
dmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCAg
UGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IDAsIFZpZXdCZWhhdmlvciBiZWhh
dmlvciA9IEV3a1ZpZXc6OkRlZmF1bHRCZWhhdmlvcik7CisgICAgc3RhdGljIEV2YXNfT2JqZWN0
KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBj
b250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwID0gMCwgVmlld0JlaGF2
aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2aW9yKTsKIAogICAgIHN0YXRpYyBi
b29sIGluaXRTbWFydENsYXNzSW50ZXJmYWNlKEV3a19WaWV3X1NtYXJ0X0NsYXNzJik7CiAKQEAg
LTEyMCw2ICsxMjEsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFn
ZSgpIHsgcmV0dXJuIG1fd2ViVmlldy0+cGFnZSgpOyB9CiAgICAgRXdrQ29udGV4dCogZXdrQ29u
dGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEV3a1BhZ2VHcm91cCogZXdr
UGFnZUdyb3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXAuZ2V0KCk7IH0KICAgICBFd2tTZXR0aW5n
cyogc2V0dGluZ3MoKSB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgRXdrQmFja0Zv
cndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC5n
ZXQoKTsgfQogICAgIEV3a1dpbmRvd0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcygpOwpAQCAtMjEz
LDcgKzIxNSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gdGFr
ZVNuYXBzaG90KCk7CiAKIHByaXZhdGU6Ci0gICAgRXdrVmlldyhFdmFzX09iamVjdCogZXZhc09i
amVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdl
R3JvdXAsIFZpZXdCZWhhdmlvcik7CisgICAgRXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVj
dCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91
cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IpOwogICAgIH5Fd2tWaWV3KCk7CiAKICAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEoKSBjb25zdDsKQEAgLTI1Miw2ICsyNTQsNyBAQCBw
cml2YXRlOgogICAgIC8vIE5vdGUsIGluaXRpYWxpemF0aW9uIG9yZGVyIG1hdHRlcnMuCiAgICAg
RXZhc19PYmplY3QqIG1fZXZhc09iamVjdDsKICAgICBSZWZQdHI8RXdrQ29udGV4dD4gbV9jb250
ZXh0OworICAgIFJlZlB0cjxFd2tQYWdlR3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIE93blB0cjxF
dmFzX0dMPiBtX2V2YXNHTDsKICAgICBPd25QdHI8V2ViS2l0OjpFdmFzR0xDb250ZXh0PiBtX2V2
YXNHTENvbnRleHQ7CiAgICAgT3duUHRyPFdlYktpdDo6RXZhc0dMU3VyZmFjZT4gbV9ldmFzR0xT
dXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BhZ2VfZ3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bh
Z2VfZ3JvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMjM4ZTRjZmUxZWYxODhmMDJlODYyMjQzMDZkNDhj
MjRiNzRjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcGFnZV9ncm91cC5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIK
KworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRl
ICJXS0FycmF5RWZsLmgiCisjaW5jbHVkZSAiV0tQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXS1N0
cmluZy5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworY29uc3QgY2hhciBFd2tQYWdlR3JvdXA6OmRlZmF1bHRJZGVudGlm
aWVyW10gPSAiZGVmYXVsdFBhZ2VHcm91cElkZW50aWZpZXIiOworCitzdGF0aWMgV0tUeXBlUmVm
IGNvbnZlcnRGcm9tQ2hhclRvV0tTdHJpbmcodm9pZCogZGF0YSkKK3sKKyAgICByZXR1cm4gV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpKTsKK30K
KworRXdrUGFnZUdyb3VwOjpFd2tQYWdlR3JvdXAoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
KQorICAgIDogbV9wYWdlR3JvdXBSZWYocGFnZUdyb3VwUmVmKQoreworfQorCitFd2tQYWdlR3Jv
dXA6OkV3a1BhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgbV9wYWdl
R3JvdXBSZWYgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoYWRvcHRX
Syh0b0NvcGllZEFQSShpZGVudGlmaWVyKSkuZ2V0KCkpKTsKK30KKwordm9pZCBFd2tQYWdlR3Jv
dXA6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEVpbmFfTGlzdCogd2hpdGVMaXN0LCBFaW5hX0xpc3QqIGJsYWNrTGlzdCwgYm9v
bCBtYWluRnJhbWVPbmx5KQoreworICAgIEFTU0VSVChzb3VyY2UpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrU291cmNlID0gYWRvcHRXSyh0b0NvcGllZEFQSShzb3VyY2UpKTsK
KyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tCYXNlVVJMID0gYWRvcHRXSyh0b0NvcGllZFVS
TEFQSShiYXNlVVJMKSk7CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tXaGl0ZWxpc3Qg
PSBhZG9wdFdLKFdLQXJyYXlDcmVhdGVXaXRoRWluYUxpc3Qod2hpdGVMaXN0LCBjb252ZXJ0RnJv
bUNoYXJUb1dLU3RyaW5nKSk7CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tCbGFja2xp
c3QgPSBhZG9wdFdLKFdLQXJyYXlDcmVhdGVXaXRoRWluYUxpc3QoYmxhY2tMaXN0LCBjb252ZXJ0
RnJvbUNoYXJUb1dLU3RyaW5nKSk7CisgICAgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGlu
amVjdGVkRnJhbWVzID0gbWFpbkZyYW1lT25seSA/IGtXS0luamVjdEluVG9wRnJhbWVPbmx5IDog
a1dLSW5qZWN0SW5BbGxGcmFtZXM7CisKKyAgICBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0
KG1fcGFnZUdyb3VwUmVmLmdldCgpLCB3a1NvdXJjZS5nZXQoKSwgd2tCYXNlVVJMLmdldCgpLCB3
a1doaXRlbGlzdC5nZXQoKSwgd2tCbGFja2xpc3QuZ2V0KCksIGluamVjdGVkRnJhbWVzKTsKK30K
Kwordm9pZCBFd2tQYWdlR3JvdXA6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCit7CisgICAg
V0tQYWdlR3JvdXBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMobV9wYWdlR3JvdXBSZWYuZ2V0KCkp
OworfQorCitFd2tfUGFnZV9Hcm91cCogZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKGNvbnN0IGNoYXIq
IGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIEV3a1BhZ2VHcm91cDo6Y3JlYXRlKGlkZW50aWZp
ZXIpLmxlYWtSZWYoKTsKK30KKworRWluYV9Cb29sIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVf
c2hlZXRfYWRkKEV3a19QYWdlX0dyb3VwKiBld2tQYWdlR3JvdXAsIGNvbnN0IGNoYXIqIHNvdXJj
ZSwgY29uc3QgY2hhciogYmFzZVVSTCwgRWluYV9MaXN0KiB3aGl0ZUxpc3QsIEVpbmFfTGlzdCog
YmxhY2tMaXN0LCBFaW5hX0Jvb2wgbWFpbkZyYW1lT25seSkKK3sKKyAgICBFV0tfT0JKX0dFVF9J
TVBMX09SX1JFVFVSTihFd2tQYWdlR3JvdXAsIGV3a1BhZ2VHcm91cCwgaW1wbCwgZmFsc2UpOwor
CisgICAgaW1wbC0+YWRkVXNlclN0eWxlU2hlZXQoc291cmNlLCBiYXNlVVJMLCB3aGl0ZUxpc3Qs
IGJsYWNrTGlzdCwgbWFpbkZyYW1lT25seSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWlu
YV9Cb29sIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3JlbW92ZV9hbGwoRXdrX1Bh
Z2VfR3JvdXAqIGV3a1BhZ2VHcm91cCkKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVS
TihFd2tQYWdlR3JvdXAsIGV3a1BhZ2VHcm91cCwgaW1wbCwgZmFsc2UpOworCisgICAgaW1wbC0+
cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI0ZjlmNGI4ODAyNDM2YmJjMjJjNWQyNzBjMTVjNjY0NDY1YmEyZWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91
cC5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBF
bGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmls
ZSAgICBld2tfcGFnZV9ncm91cC5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBQYWdl
IEdyb3VwIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19wYWdlX2dyb3VwX2gKKyNkZWZpbmUgZXdr
X3BhZ2VfZ3JvdXBfaAorCisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPEV2YXMuaD4KKwor
I2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIERlY2xh
cmUgRXdrX1BhZ2VfR3JvdXAgYXMgRXdrX09iamVjdC4KKyAqCisgKiBAc2VlIEV3a19PYmplY3QK
KyAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19QYWdlX0dyb3VwOworCisvKioKKyAq
IENyZWF0ZXMgYSBuZXcgRXdrX1BhZ2VfR3JvdXAuCisgKgorICogVGhlIHJldHVybmVkIEV3a19Q
YWdlX0dyb3VwIG9iamVjdCBAYiBzaG91bGQgYmUgdW5yZWYnZWQgYWZ0ZXIgdXNlLgorICoKKyAq
IEByZXR1cm4gRXdrX1BhZ2VfR3JvdXAgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBm
YWlsdXJlCisgKgorICogQHNlZSBld2tfb2JqZWN0X3VucmVmCisgKi8KK0VBUEkgRXdrX1BhZ2Vf
R3JvdXAgKmV3a19wYWdlX2dyb3VwX2NyZWF0ZShjb25zdCBjaGFyICppZGVudGlmaWVyKTsKKwor
LyoqCisgKiBBZGRzIHRoZSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoaXMgcGFnZSBncm91cC4KKyAq
CisgKiBAcGFyYW0gcGFnZV9ncm91cCBld2tfcGFnZV9nb3J1cCBvYmplY3QgdG8gYWRkIHRoZSB1
c2VyIHN0eWxlIHNoZWV0CisgKiBAcGFyYW0gc291cmNlIHRoZSB1c2VyIHN0eWxlIHNoZWV0Cisg
KiBAcGFyYW0gdXJsIGJhc2VVUkwKKyAqIEBwYXJhbSB3aGl0ZV9saXN0IHVybCBsaXN0IHRvIGFs
bG93IGFkZGluZyB0aGUgdXNlciBzdHlsZSBzaGVldAorICogQHBhcmFtIGJsYWNrX2xpc3QgdXJs
IGxpc3QgdG8gZGlzYWxsb3cgYWRkaW5nIHRoZSB1c2VyIHN0eWxlIHNoZWV0CisgKiBAcGFyYW0g
bWFpbl9mcmFtZV9vbmx5IGEgc3RhdGUgdG8gYXBwbHkgdGhlIHVzZXIgc3R5bGUgc2hlZXQgb25s
eSB0byB0aGUgbWFpbmZyYW1lCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHVz
ZXIgc3R5bGUgc2hlZXQgaXMgYWRkZWQgdG8gdGhlIHBhZ2UgZ3JvdXAsIG9yCisgKiAgICAgICAg
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19wYWdlX2dy
b3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKEV3a19QYWdlX0dyb3VwICpwYWdlX2dyb3VwLCBjb25z
dCBjaGFyICpzb3VyY2UsIGNvbnN0IGNoYXIgKmJhc2VfdXJsLCBFaW5hX0xpc3QgKndoaXRlX2xp
c3QsIEVpbmFfTGlzdCAqYmxhY2tfbGlzdCwgRWluYV9Cb29sIG1haW5fZnJhbWVfb25seSk7CisK
Ky8qKgorICogUmVtb3ZlIGFsbCB0aGUgdXNlciBzdHlsZSBzaGVldHMgZnJvbSB0aGlzIHBhZ2Ug
Z3JvdXAuCisgKgorICogQHBhcmFtIHBhZ2VfZ3JvdXAgcGFnZSBncm91cCBvYmplY3QgdG8gcmVt
b3ZlIGFsbCB0aGUgdXNlciBzdHlsZSBzaGVldHMKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBpZiBhbGwgdGhlIHVzZXIgc3R5bGUgc2hlZXQgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSBn
cm91cCwgb3IKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBF
aW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbChFd2tf
UGFnZV9Hcm91cCAqcGFnZV9ncm91cCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisKKyNlbmRpZiAvLyBld2tfcGFnZV9ncm91cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cF9wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cF9wcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDE5MDUxNWQ4NTk3ZDU2N2VjZGNhNDIzNTM4N2U4ZmEwOTVmNDcwNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3By
aXZhdGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1
bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
ZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19wYWdlX2dyb3VwX3ByaXZhdGVf
aAorCisjaW5jbHVkZSAiZXdrX29iamVjdF9wcml2YXRlLmgiCisjaW5jbHVkZSA8RXZhcy5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworY2xhc3MgRXdrVmlldzsKKworY2xhc3Mg
RXdrUGFnZUdyb3VwIDogcHVibGljIEV3a09iamVjdCB7CitwdWJsaWM6CisgICAgRVdLX09CSkVD
VF9ERUNMQVJFKEV3a1BhZ2VHcm91cCkKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a1BhZ2VH
cm91cD4gY3JlYXRlKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRXdrUGFnZUdyb3VwKHBhZ2VHcm91cFJlZikpOworICAgIH0K
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciA9IFN0cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBFd2tQYWdlR3JvdXAoaWRlbnRpZmllci5pc0VtcHR5KCkgPyBkZWZhdWx0SWRlbnRpZmll
ciA6IGlkZW50aWZpZXIpKTsKKyAgICB9CisKKyAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91
cCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUdyb3VwUmVmLmdldCgpOyB9CisKKyAgICB2b2lkIGFk
ZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEVpbmFfTGlzdCogd2hpdGVsaXN0LCBFaW5hX0xpc3QqIGJsYWNrbGlzdCwgYm9vbCBtYWlu
RnJhbWVPbmx5KTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IEV3a1BhZ2VHcm91cChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBS
ZWYpOworICAgIGV4cGxpY2l0IEV3a1BhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
OworCisgICAgc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdElkZW50aWZpZXJbXTsKKworICAgIFdL
UmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBtX3BhZ2VHcm91cFJlZjsKK307CisKKyNlbmRpZiAv
LyBld2tfcGFnZV9ncm91cF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA0ZjFhMTMxZDI1ZDc0MzU0ZGUwYmU5M2YxYmJiM2Q2
OGY5NzE3ZTNiLi43YWUxOGM3ZjM4ZWNkNWM3NTM5ZTNhYjM4OTBiYzhmMzNhZmYzNjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zNCw2
ICszNCw4IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgImV3a19wYWdlX2dyb3VwLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdz
X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CkBAIC04Niw5ICs4OCw5IEBAIEVp
bmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFw
aSkKICAgICByZXR1cm4gRXdrVmlldzo6aW5pdFNtYXJ0Q2xhc3NJbnRlcmZhY2UoKmFwaSk7CiB9
CiAKLUV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1Nt
YXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCitFdmFzX09iamVjdCogZXdrX3ZpZXdf
c21hcnRfYWRkKEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBj
b250ZXh0LCBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwKQogewotICAgIHJldHVybiBFd2tWaWV3
OjpjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgc21hcnQsIGV3a19vYmplY3RfY2FzdDxFd2tDb250
ZXh0Kj4oY29udGV4dCkpOworICAgIHJldHVybiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGNh
bnZhcywgc21hcnQsIGV3a19vYmplY3RfY2FzdDxFd2tDb250ZXh0Kj4oY29udGV4dCksIGV3a19v
YmplY3RfY2FzdDxFd2tQYWdlR3JvdXAqPihwYWdlR3JvdXApKTsKIH0KIAogRXZhc19PYmplY3Qq
IGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29u
dGV4dCkKQEAgLTEwOCw2ICsxMTAsMTMgQEAgRXdrX0NvbnRleHQqIGV3a192aWV3X2NvbnRleHRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHJldHVybiBpbXBsLT5ld2tDb250
ZXh0KCk7CiB9CiAKK0V3a19QYWdlX0dyb3VwKiBld2tfdmlld19wYWdlX2dyb3VwX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgaW1wbCwgMCk7CisKKyAgICByZXR1cm4gaW1wbC0+ZXdrUGFnZUdyb3VwKCk7
Cit9CisKIEVpbmFfQm9vbCBld2tfdmlld191cmxfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBjaGFyKiB1cmwpCiB7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIGltcGwsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5oCmluZGV4IDViOTIzYzQyYzY2YmVhYzFmYWUyNDQ3NWY2MjIzZmI2MmQyY2NkMTMuLmNk
MGQzMTc2M2NiMzA0YmZjMTkzZjIwNzZjYTJmZDFhNjkxN2JkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtODAsNiArODAsNyBAQAogI2luY2x1
ZGUgImV3a19jb250ZXh0X21lbnUuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCiAj
aW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKICNpbmNs
dWRlICJld2tfcG9wdXBfbWVudS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIK
ICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKQEAgLTMxNiwxMCArMzE3LDExIEBAIEVBUEkgRWlu
YV9Cb29sIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFydF9DbGFzcyAqYXBp
KTsKICAqIEBwYXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUgdG8gY3JlYXRlIHRoZSB2aWV3IG9i
amVjdAogICogQHBhcmFtIHNtYXJ0IEV2YXNfU21hcnQgb2JqZWN0LiBJdHMgdHlwZSBzaG91bGQg
YmUgRVdLX1ZJRVdfVFlQRV9TVFIKICAqIEBwYXJhbSBjb250ZXh0IEV3a19Db250ZXh0IG9iamVj
dCB3aGljaCBpcyB1c2VkIGZvciBpbml0aWFsaXppbmcKKyAqIEBwYXJhbSBwYWdlR3JvdXAgRXdr
X1BhZ2VfR3JvdXAgb2JqZWN0IHdoaWNoIGlzIHVzZWQgZm9yIGluaXRpYWxpemluZwogICoKICAq
IEByZXR1cm4gdmlldyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAq
LwotRUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMgKmUsIEV2YXNfU21h
cnQgKnNtYXJ0LCBFd2tfQ29udGV4dCAqY29udGV4dCk7CitFQVBJIEV2YXNfT2JqZWN0ICpld2tf
dmlld19zbWFydF9hZGQoRXZhcyAqZSwgRXZhc19TbWFydCAqc21hcnQsIEV3a19Db250ZXh0ICpj
b250ZXh0LCBFd2tfUGFnZV9Hcm91cCAqcGFnZUdyb3VwKTsKIAogLyoqCiAgKiBDcmVhdGVzIGEg
bmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3QuCkBAIC0zNTAsNiArMzUyLDE1IEBAIEVBUEkgRXZh
c19PYmplY3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0NvbnRleHQg
KmNvbnRleHQpOwogRUFQSSBFd2tfQ29udGV4dCAqZXdrX3ZpZXdfY29udGV4dF9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pOwogCiAvKioKKyAqIEdldHMgdGhlIEV3a19QYWdlX0dyb3VwIG9mIHRo
aXMgdmlldy4KKyAqCisgKiBAcGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBFd2tf
UGFnZV9Hcm91cAorICoKKyAqIEByZXR1cm4gdGhlIEV3a19QYWdlX0dyb3VwIG9mIHRoaXMgdmll
dyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFd2tfUGFnZV9Hcm91cCAqZXdrX3Zp
ZXdfcGFnZV9ncm91cF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKICAqIEFza3Mg
dGhlIG9iamVjdCB0byBsb2FkIHRoZSBnaXZlbiBVUkwuCiAgKgogICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gbG9hZCBAYSBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdEJhc2UuY3BwCmluZGV4IGU2NGY0Y2M3NzUzNjIyZDc1ODQxZjgxNDY4OGVhNTJlYmZjNjUy
NDEuLjZlOGJhZTJkNzA2YTdiZTQzOWVkODk0M2IyNzE2NzJlYzFhMjliZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcApAQCAtNjEsMTEgKzYxLDE0
IEBAIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQogICAgIEV2YXNfU21hcnQqIHNtYXJ0
ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJm1fZXdrVmlld0NsYXNzLnNjKTsKIAogICAgIEV3a19D
b250ZXh0KiBuZXdDb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3KCk7Ci0gICAgbV93ZWJWaWV3ID0g
ZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBuZXdDb250ZXh0KTsKKyAgICBFd2tfUGFn
ZV9Hcm91cCogbmV3UGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKCJVbml0VGVzdCIp
OworICAgIG1fd2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgbmV3Q29u
dGV4dCwgbmV3UGFnZUdyb3VwKTsKKwogICAgIC8vIENsZWFyIEhUVFAgY2FjaGUgZmlsZXMgYmVm
b3JlIHJ1bm5pbmcgdGhlIHVuaXQgdGVzdHMsIHdoaWNoIHByZXZlbnRzIAogICAgIC8vIHBlcmZv
cm1hbmNlIGRlZ3JhZGF0aW9uIGR1ZSB0byBzbyBtYW55IGNhY2hlIGZpbGVzLgogICAgIGV3a19j
b250ZXh0X3Jlc291cmNlX2NhY2hlX2NsZWFyKG5ld0NvbnRleHQpOwogICAgIGV3a19vYmplY3Rf
dW5yZWYobmV3Q29udGV4dCk7CisgICAgZXdrX29iamVjdF91bnJlZihuZXdQYWdlR3JvdXApOwog
CiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldywgZW52aXJvbm1lbnQtPmRlZmF1bHRU
aGVtZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApp
bmRleCBiZDVlNGI5OTU4NWZkODlhNzc3YmEwN2M0MDFkMWNlZjMxOTNiODdhLi41OTI0YmU2NDFm
Y2Q3Y2JiNWE2NWZlOTEzM2VmYjMzODI3MDEzNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAtMzUsNiArMzUsNyBAQCBwdWJsaWM6CiAgICAgRWNv
cmVfRXZhcyogYmFja2luZ1N0b3JlKCkgeyByZXR1cm4gbV9lY29yZUV2YXM7IH0KICAgICBFdmFz
KiBjYW52YXMoKSB7IHJldHVybiBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcyk7IH0KICAgICBF
dmFzX09iamVjdCogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQorICAgIHZvaWQgc2V0
V2ViVmlldyhFdmFzX09iamVjdCogd2ViVmlldykgeyBtX3dlYlZpZXcgPSB3ZWJWaWV3OyB9CiAg
ICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGV3a1ZpZXdDbGFzcygpIHsgcmV0dXJuICZtX2V3a1Zp
ZXdDbGFzczsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmExMWM0NGRhODc4OGQyMmI2NmJkNDQxNDExNTM1ODU0NDcyM2M0MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3Rf
ZXdrMl9wYWdlX2dyb3VwLmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEJhc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0VGVzdDsKKworZXh0ZXJu
IEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsKKworc3RhdGljIGNvbnN0IGNo
YXIgaHRtbFN0cmluZ1tdID0gIjxodG1sPjxoZWFkPjx0aXRsZT5Gb288L3RpdGxlPjwvaGVhZD48
Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkJz48c2NyaXB0PmRvY3VtZW50LnRpdGxl
PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKTwvc2NyaXB0PkhFTExPPC9ib2R5PjwvaHRtbD4iOwor
c3RhdGljIGNvbnN0IGNoYXIgdXNlclN0eWxlU2hlZXRbXSA9ICJib2R5IHsgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CitzdGF0aWMgY29uc3QgY2hhciBncmVlbkluUkdC
W10gPSAicmdiKDAsIDEyOCwgMCkiOworc3RhdGljIGNvbnN0IGNoYXIgcmVkSW5SR0JbXSA9ICJy
Z2IoMjU1LCAwLCAwKSI7CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFnZV9ncm91
cCkKK3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdr
Vmlld0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19w
YWdlX2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisK
KyAgICBFdmFzX09iamVjdCogbmV3V2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChjYW52YXMo
KSwgc21hcnQsIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCksIHBhZ2VHcm91cCk7CisgICAgc2V0
V2ViVmlldyhuZXdXZWJWaWV3KTsKKworICAgIEFTU0VSVF9FUShwYWdlR3JvdXAsIGV3a192aWV3
X3BhZ2VfZ3JvdXBfZ2V0KG5ld1dlYlZpZXcpKTsKKyAgICBld2tfb2JqZWN0X3VucmVmKHBhZ2VH
cm91cCk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFnZV9ncm91cF91c2Vy
X3N0eWxlX3NoZWV0X2FkZF9iZWZvcmVfY3JlYXRpbmdfdmlldykKK3sKKyAgICBFdmFzX1NtYXJ0
KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7Cisg
ICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgidGVz
dCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAgICAvLyBBZGQgYSB1c2VyIHN0
eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3VwIGJlZm9yZSBjcmVhdGluZyBhIHZpZXcKKyAgICBl
d2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdlR3JvdXAsIHVzZXJTdHlsZVNo
ZWV0LCAwLCAwLCAwLCB0cnVlKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyB3ZWIgdmlldyB3aXRo
IHRoaXMgcGFnZSBncm91cAorICAgIEV2YXNfT2JqZWN0KiBuZXdXZWJWaWV3ID0gZXdrX3ZpZXdf
c21hcnRfYWRkKGNhbnZhcygpLCBzbWFydCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSwgcGFn
ZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3KG5ld1dlYlZpZXcpOworCisgICAgZXdrX29iamVjdF91
bnJlZihwYWdlR3JvdXApOworICAgIGV3a192aWV3X3RoZW1lX3NldCh3ZWJWaWV3KCksIGVudmly
b25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKHdlYlZpZXco
KSwgZW52aXJvbm1lbnQtPmRlZmF1bHRXaWR0aCgpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdEhlaWdo
dCgpKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdlYlZpZXcoKSk7CisgICAgZXZhc19vYmplY3Rf
Zm9jdXNfc2V0KHdlYlZpZXcoKSwgdHJ1ZSk7CisKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19s
b2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVu
dGlsVGl0bGVDaGFuZ2VkVG8oZ3JlZW5JblJHQikpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0
QmFzZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGRfYWZ0ZXJfY3JlYXRpbmdf
dmlldykKK3sKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3Vw
IGFmdGVyIGNyZWF0aW5nIGEgdmlldworICAgIEV3a19QYWdlX0dyb3VwKiBwYWdlR3JvdXAgPSBl
d2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VH
cm91cCk7CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQocGFnZUdyb3Vw
LCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisKKyAgICBld2tfdmlld19odG1sX3N0
cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisgICAgQVNTRVJUX1RSVUUo
d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oZ3JlZW5JblJHQikpOworfQorCitURVNUX0YoRVdLMlVu
aXRUZXN0QmFzZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbCkK
K3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmll
d0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdl
X2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAg
ICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3VwIGJlZm9yZSBjcmVh
dGluZyBhIHZpZXcKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdl
R3JvdXAsIHVzZXJTdHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsKKworICAgIC8vIENyZWF0ZSBh
IG5ldyB3ZWIgdmlldyB3aXRoIHRoaXMgcGFnZSBncm91cAorICAgIEV2YXNfT2JqZWN0KiBuZXdX
ZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGNhbnZhcygpLCBzbWFydCwgZXdrX2NvbnRleHRf
ZGVmYXVsdF9nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3KG5ld1dlYlZpZXcpOwor
CisgICAgZXdrX29iamVjdF91bnJlZihwYWdlR3JvdXApOworICAgIGV3a192aWV3X3RoZW1lX3Nl
dCh3ZWJWaWV3KCksIGVudmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CisgICAgZXZhc19vYmpl
Y3RfcmVzaXplKHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRXaWR0aCgpLCBlbnZpcm9u
bWVudC0+ZGVmYXVsdEhlaWdodCgpKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdlYlZpZXcoKSk7
CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdlYlZpZXcoKSwgdHJ1ZSk7CisKKyAgICBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisKKyAg
ICAvLyBSZW1vdmUgYWxsIHVzZXIgc3R5bGUgc2hlZXRzIGluIHRoZSBwYWdlIGdyb3VwCisgICAg
ZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbChld2tfdmlld19wYWdl
X2dyb3VwX2dldCh3ZWJWaWV3KCkpKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNo
YW5nZWRUbyhyZWRJblJHQikpOworCisgICAgLy8gQWRkIGEgdXNlciBzdHlsZSBzaGVldCB0byB0
aGUgcGFnZSBncm91cCBhZnRlciBjcmVhdGluZyBhIHZpZXcKKyAgICBwYWdlR3JvdXAgPSBld2tf
dmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOworICAgIGV3a19wYWdlX2dyb3VwX3VzZXJf
c3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwgdXNlclN0eWxlU2hlZXQsIDAsIDAsIDAsIHRydWUp
OworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBodG1sU3RyaW5nLCAw
LCAwKTsKKworICAgIC8vIFJlbW92ZSBhbGwgdXNlciBzdHlsZSBzaGVldHMgaW4gdGhlIHBhZ2Ug
Z3JvdXAKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKGV3
a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSkpOworICAgIEFTU0VSVF9UUlVFKHdhaXRV
bnRpbFRpdGxlQ2hhbmdlZFRvKHJlZEluUkdCKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXgg
OWUyM2U1ZmUzMjg0ZTYxMDVmN2E0MTg5ZmFhMjM4Y2M2N2Q2M2RkMi4uZTQxODNlZTI4M2UzOTIy
ODBhMjY2NWQ1ODQyMmNkODMxZmFjMmJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtNTU3LDYg
KzU1NywxMyBAQCBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfY29udGV4dF9nZXQp
CiAgICAgQVNTRVJUX0VRKGNvbnRleHQsIGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSkp
OwogfQogCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQp
Cit7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a192aWV3X3BhZ2VfZ3JvdXBf
Z2V0KHdlYlZpZXcoKSk7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKyAgICBBU1NFUlRf
RVEocGFnZUdyb3VwLCBld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpKTsKK30KKwog
VEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQpCiB7CiAg
ICAgRWluYV9MaXN0KiBwb2ludHMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAppbmRleCBmYTJlMDhkNjEwYWVmZDdh
ZGM0M2YxYWQ2OWRmYWM4ZTI5NTNjYTUyLi5kNzU4MDAxZTY5MjMzNWE1NDQ1YjZiZjdhNGNmOTE2
MWNmM2RjYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
Ykluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV3a1Zp
ZXcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9FZmxJbnNwZWN0b3JVdGlsaXRpZXMuaD4KQEAgLTEwMCw3ICsxMDEsOCBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQog
CiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRvIHVzZSBXS1ZpZXdSZWYuCiAgICAgV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYgPSB0b0FQSShwYWdlKCktPnByb2Nlc3MoKS0+Y29udGV4dCgpKTsKLSAg
ICBtX2luc3BlY3RvclZpZXcgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGVjb3JlX2V2YXNf
Z2V0KG1faW5zcGVjdG9yV2luZG93KSwgRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCB0
b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSksIEV3a1ZpZXc6OkxlZ2FjeUJlaGF2aW9yKTsKKyAg
ICBtX2luc3BlY3RvclZpZXcgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGVjb3JlX2V2YXNf
Z2V0KG1faW5zcGVjdG9yV2luZG93KSwgRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCBF
d2tQYWdlR3JvdXA6OmNyZWF0ZSh0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSkpLCBFd2tWaWV3
OjpMZWdhY3lCZWhhdmlvcik7CisKICAgICBpZiAoIW1faW5zcGVjdG9yVmlldykKICAgICAgICAg
cmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA2Mzg2MjAyZTgyMWYyNTFmNDk2ZmZjMjhmOTBlNTE2MTM1ODA3ZWU0Li45OTE1YTM5
MzNhZDMxMzY5MGJjZGRjMmNiN2Y1NjlmMjg0ODU3YjYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMDUg
IEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxd
W1dLMl0gQWRkIGFuIEFQSSBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyB1c2VyIHN0eWxlIHNoZWV0
cyBmcm9tIGEgcGFnZSBncm91cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwNzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXNlIHRoZSBwYWdlIGdyb3VwIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3Qu
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAgICAgICAod2luZG93X2Ny
ZWF0ZSk6CisKIDIwMTMtMDMtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgU29tZSBwZXJmLiB0ZXN0cyBoYXZlIHZhcmlhbmNlcyB0aGF0IGRpZmZlciBncmVh
dGx5IGJldHdlZW4gcnVucwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4u
YyBiL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKaW5kZXggY2U4MTZlZWE4ZTJhYTc3YWUz
ZDNiNjA3NTczNmNkOTgxMWUxYzQzOS4uMDYzZDQyZmU3MTc5NWEwNzY4ODIwOTgzNjlmMGE3Mzkw
NmQ5OWFhNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYworKysgYi9U
b29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCkBAIC0xMTg3LDggKzExODcsOSBAQCBzdGF0aWMg
QnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5lciwgY29uc3Qg
Y2hhciAqdXJsLCBpbnQgdwogICAgICAgICB3aW5kb3ctPmV3a192aWV3ID0gKEV2YXNfT2JqZWN0
KilXS1ZpZXdDcmVhdGUoZXZhcywgMCwgMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgRXZhc19T
bWFydCAqc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmZXdrVmlld0NsYXNzLT5zYyk7Ci0g
ICAgICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gb3BlbmVyID8gZXdrX3ZpZXdfY29udGV4dF9n
ZXQob3BlbmVyKSA6IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7Ci0gICAgICAgIHdpbmRvdy0+
ZXdrX3ZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGNvbnRleHQpOworICAg
ICAgICBFd2tfQ29udGV4dCAqY29udGV4dCA9IG9wZW5lciA/IGV3a192aWV3X2NvbnRleHRfZ2V0
KG9wZW5lcikgOiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOworICAgICAgICBFd2tfUGFnZV9H
cm91cCAqcGFnZUdyb3VwID0gb3BlbmVyID8gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQob3BlbmVy
KSA6IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgiIik7CisgICAgICAgIHdpbmRvdy0+ZXdrX3ZpZXcg
PSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGNvbnRleHQsIHBhZ2VHcm91cCk7CiAg
ICAgfQogICAgIGV3a192aWV3X3RoZW1lX3NldCh3aW5kb3ctPmV3a192aWV3LCBUSEVNRV9ESVIg
Ii9kZWZhdWx0LmVkaiIpOwogICAgIGlmIChkZXZpY2VfcGl4ZWxfcmF0aW8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191907</attachid>
            <date>2013-03-06 20:19:05 -0800</date>
            <delta_ts>2013-03-11 18:21:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130307131508.patch</filename>
            <type>text/plain</type>
            <size>41656</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjQ4YzlkMzA2ZDRkMmYw
ZjY0NTJhZjk4YmY1ZmI0MjgxMGQ5NjdlOC4uMjVlY2Y3NTc0MTE4ZjczZDFkN2VkZDMwODkwNGY3
MTIxZDY4MWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAzLTA1ICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFjY29yZGluZyB0byB0aGUgQ1NTMi4xIHNwZWMsIHRoZSB1c2VyIG1heSBiZSBhYmxl
IHRvIHNwZWNpZnkgc3R5bGUgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBkb2N1bWVudC4K
KyAgICAgICAgU28gdGhpcyBwYXRjaCBwcm92aWRlcyBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVt
b3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJvbSBhIHBhZ2UgZ3JvdXAuCisgICAgICAgIEFsc28g
aXQgaW1wbGVtZW50cyBFd2tQYWdlR3JvdXAgQVBJIGFzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRo
ZSBhcHBsaWNhdGlvbnMgYW5kIFdLUGFnZUdyb3VwIEFQSS4KKyAgICAgICAgV0tBcnJheUNyZWF0
ZVdpdGhFaW5hTGlzdCgpIGlzIGFkZGVkIGFzIGEgZ2VuZXJpYyBXS0FycmF5IGNyZWF0aW9uIEFQ
SSBmcm9tIEVpbmFfTGlzdC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV0tB
cnJheUNyZWF0ZVdpdGhFaW5hTGlzdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2VmbC9XS0Fy
cmF5RWZsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cDoKKyAgICAgICAgKGNyZWF0ZVdLVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAg
ICAgICAgKEV3a1ZpZXc6OkV3a1ZpZXcpOgorICAgICAgICAoRXdrVmlldzo6Y3JlYXRlRXZhc09i
amVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAo
RXdrVmlldzo6ZXdrUGFnZUdyb3VwKToKKyAgICAgICAgKEV3a1ZpZXcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmNwcDogQWRkZWQuCisgICAgICAgIChjb252
ZXJ0RnJvbUNoYXJUb1dLU3RyaW5nKToKKyAgICAgICAgKEV3a1BhZ2VHcm91cDo6RXdrUGFnZUdy
b3VwKToKKyAgICAgICAgKEV3a1BhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAg
ICAoRXdrUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoZXdr
X3BhZ2VfZ3JvdXBfY3JlYXRlKToKKyAgICAgICAgKGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVf
c2hlZXRfYWRkKToKKyAgICAgICAgKGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3Jl
bW92ZV9hbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgIChFd2tQYWdlR3JvdXApOgorICAgICAgICAoRXdrUGFnZUdy
b3VwOjpjcmVhdGUpOgorICAgICAgICAoRXdrUGFnZUdyb3VwOjp3a1BhZ2VHcm91cCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdf
c21hcnRfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHA6CisgICAgICAgIChF
V0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OlNldFVwKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaDoKKyAgICAg
ICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6c2V0V2ViVmlldyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3BhZ2VfZ3JvdXAuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisKIDIwMTMtMDMtMDMg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW0VG
TF1bUVRdW1dLMl0gVHVybiBvbiBBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIGFs
d2F5cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggN2ZhNGVjOTc1MWI0ZjQxZjI4NGMx
MzhiODU5YWJiOTA4ODVkZGJjZS4uZTljOWUxMzM0ZWJmZTRiNmMyNjUzZWNhMGZiYTliYWNmNTQz
YjRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEyLDYgKzEyLDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nl
c3NVbml4LmNwcAogCiAgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKKyAg
ICBTaGFyZWQvQVBJL2MvZWZsL1dLQXJyYXlFZmwuY3BwCiAKICAgICBTaGFyZWQvRG93bmxvYWRz
L2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCiAgICAgU2hhcmVkL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHAKQEAgLTcwLDYgKzcxLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcGFnZV9ncm91cC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVu
dS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCkBAIC0xNjgsNiArMTcw
LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIKICAgICAiJHtXRUJDT1JFX0RJUn0vc3Zn
L2dyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvRG93bmxvYWRzL3NvdXAiCisg
ICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9BUEkvYy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1NoYXJlZC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCkBAIC0yODMsNiArMjg2LDcgQEAgc2V0
KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19mYXZpY29uX2RhdGFiYXNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZmlsZV9jaG9vc2VyX3JlcXVlc3Qu
aCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuaCIKICAgICAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlv
bl9kYXRhLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKQEAgLTM4NCw2ICszODgsNyBA
QCBzZXQoRVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9mYXZpY29uX2RhdGFi
YXNlCiAgICAgdGVzdF9ld2syX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0CiAgICAgdGVzdF9ld2syX29i
amVjdAorICAgIHRlc3RfZXdrMl9wYWdlX2dyb3VwCiAgICAgdGVzdF9ld2syX3BvcHVwX21lbnUK
ICAgICB0ZXN0X2V3azJfcmVmcHRyX2V2YXNfb2JqZWN0CiAgICAgdGVzdF9ld2syX3NldHRpbmdz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQXJyYXlFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mYjEyZGNmM2RiNjYyZjJmOWViMzY5ZDc3NTdhNmFmMzcxYjhjY2M0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmNw
cApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXS0FycmF5RWZsLmgiCisKKyNpbmNsdWRlICJXS0FycmF5LmgiCisj
aW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK1dLQXJyYXlSZWYgV0tBcnJheUNyZWF0ZVdpdGhFaW5hTGlzdChF
aW5hX0xpc3QqIGFycmF5LCBXS1R5cGVSZWYgKCpjb252ZXJ0ZXIpKHZvaWQqKSkKK3sKKyAgICB1
bnNpZ25lZCBjb3VudCA9IGVpbmFfbGlzdF9jb3VudChhcnJheSk7CisgICAgaWYgKCFjb3VudCkK
KyAgICAgICAgcmV0dXJuIFdLQXJyYXlSZWYoKTsKKworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHZl
Y3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBF
aW5hX0xpc3QqIGwgPSAwOworICAgIHZvaWQqIGRhdGEgPSAwOworICAgIEVJTkFfTElTVF9GT1JF
QUNIKGFycmF5LCBsLCBkYXRhKQorICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKGNvbnZl
cnRlcihkYXRhKSk7CisKKyAgICByZXR1cm4gV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKHZl
Y3Rvci5kYXRhKCksIGNvdW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2Vm
bC9XS0FycmF5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RiMDQ2NDRkN2U0MjZmN2I4NjNjYzM2ZjIzYmIw
MGE5OGU2ZWRiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9lZmwvV0tBcnJheUVmbC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS0FycmF5RWZsX2gKKyNkZWZpbmUgV0tBcnJheUVmbF9oCisKKyNpbmNsdWRl
IDxFaW5hLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLUmV0YWluUHRyLmg+CisKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGVXaXRo
RWluYUxpc3QoRWluYV9MaXN0KiwgV0tUeXBlUmVmICgqY29udmVydGVyKSh2b2lkKikpOworCisj
ZW5kaWYgLy8gV0tBcnJheUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLVmlldy5jcHAKaW5kZXggMTc3OTExZmIyMzM5MmJlMmRlZjgzNGMzNWNkNjViMmM2MDBi
ODkzOS4uNzVlNGQ4MjkwZjNhNmIyYTVlNTVkNzBiZjAzYTRkYTVlZGEzMDA0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtMjQsNiArMjQs
NyBAQAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNs
dWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CkBAIC0zMSw3ICszMiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBz
dGF0aWMgaW5saW5lIFdLVmlld1JlZiBjcmVhdGVXS1ZpZXcoRXZhcyogY2FudmFzLCBXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBFd2tWaWV3OjpW
aWV3QmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAgICAgUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQg
PSBjb250ZXh0UmVmID8gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpIDogRXdrQ29udGV4
dDo6ZGVmYXVsdENvbnRleHQoKTsKLSAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCA9IEV3a1Zp
ZXc6OmNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBjb250ZXh0LCBwYWdlR3JvdXBSZWYsIGJlaGF2
aW9yKTsKKyAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBwYWdlR3JvdXBSZWYg
PyBFd2tQYWdlR3JvdXA6OmNyZWF0ZShwYWdlR3JvdXBSZWYpIDogRXdrUGFnZUdyb3VwOjpjcmVh
dGUoKTsKKworICAgIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0ID0gRXdrVmlldzo6Y3JlYXRlRXZh
c09iamVjdChjYW52YXMsIGNvbnRleHQsIHBhZ2VHcm91cCwgYmVoYXZpb3IpOwogICAgIGlmICgh
ZXZhc09iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDNhMjg2NWVlNzkzMWU1ZDFkNGQzMGRmZTUwMDk2
Zjc0Y2Y0ZmRkNTMuLmE5YzhhMTRlNzhiMWZlZTY5MTk1OWNkMmNiNzJhNTA1ZWZkYmU2MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNsdWRlICJld2tf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKICNpbmNsdWRlICJld2tfb2JqZWN0LmgiCisj
aW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudS5oIgog
I2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlf
b3JpZ2luLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
CmluZGV4IDE0NjBiNzA2ZjgxZTUyYWIyMWFjZDIzYmFjNjc3MTEyN2YxOWZlMDcuLjkyZGMyODAx
ZTE2NTI1NTZkN2I5ZGJiZmQ0OTgyM2U5YzQxODQ3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAi
ZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRl
bV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCkBAIC0yMjgsMTEgKzIyOSwxMiBAQCB2b2lkIEV3a1ZpZXdFdmVu
dEhhbmRsZXI8RVZBU19DQUxMQkFDS19ISURFPjo6aGFuZGxlRXZlbnQodm9pZCogZGF0YSwgRXZh
cyosIEV2YQogCiAvLyBFd2tWaWV3IGltcGxlbWVudGF0aW9uLgogCi1Fd2tWaWV3OjpFd2tWaWV3
KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQorRXdrVmll
dzo6RXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IpCiAgICAgOiBtX2V2YXNPYmplY3QoZXZhc09iamVjdCkKICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQorICAgICwgbV9wYWdlR3JvdXAocGFnZUdyb3VwKQogICAgICwgbV9wZW5k
aW5nU3VyZmFjZVJlc2l6ZShmYWxzZSkKLSAgICAsIG1fd2ViVmlldyhhZG9wdFJlZihuZXcgV2Vi
Vmlldyh0b0ltcGwobV9jb250ZXh0LT53a0NvbnRleHQoKSksIHRvSW1wbChwYWdlR3JvdXApLCB0
aGlzKSkpCisgICAgLCBtX3dlYlZpZXcoYWRvcHRSZWYobmV3IFdlYlZpZXcodG9JbXBsKG1fY29u
dGV4dC0+d2tDb250ZXh0KCkpLCB0b0ltcGwobV9wYWdlR3JvdXAtPndrUGFnZUdyb3VwKCkpLCB0
aGlzKSkpCiAgICAgLCBtX3BhZ2VMb2FkQ2xpZW50KFBhZ2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUo
dGhpcykpCiAgICAgLCBtX3BhZ2VQb2xpY3lDbGllbnQoUGFnZVBvbGljeUNsaWVudEVmbDo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9wYWdlVUlDbGllbnQoUGFnZVVJQ2xpZW50RWZsOjpjcmVhdGUo
dGhpcykpCkBAIC0zMDAsNyArMzAyLDcgQEAgRXdrVmlldzo6fkV3a1ZpZXcoKQogICAgIGljb25E
YXRhYmFzZS0+dW53YXRjaENoYW5nZXMoRXdrVmlldzo6aGFuZGxlRmF2aWNvbkNoYW5nZWQpOwog
fQogCi1FdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMs
IEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQorRXZhc19PYmpl
Y3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBz
bWFydCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VH
cm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0LCAwKTsKQEAgLTMxNywxNSArMzE5LDE0IEBAIEV2YXNfT2JqZWN0
KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21h
cnQsIFBhc3NSZWZQCiAKICAgICBBU1NFUlQoIXNtYXJ0RGF0YS0+cHJpdik7CiAKLSAgICAvLyBE
ZWZhdWx0IFdlYlBhZ2VHcm91cCBpcyBjcmVhdGVkIGluIFdlYkNvbnRleHQgY29uc3RydWN0b3Ig
aWYgdGhlIHBhZ2VHcm91cFJlZiBpcyAwLAotICAgIC8vIHNvIHdlIGRvIG5vdCBuZWVkIHRvIGNy
ZWF0ZSBpdCBoZXJlLgotICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3KGV2YXNPYmpl
Y3QsIGNvbnRleHQsIHBhZ2VHcm91cFJlZiwgYmVoYXZpb3IpOworICAgIHNtYXJ0RGF0YS0+cHJp
diA9IG5ldyBFd2tWaWV3KGV2YXNPYmplY3QsIGNvbnRleHQsIChwYWdlR3JvdXAgPyBwYWdlR3Jv
dXAgOiBFd2tQYWdlR3JvdXA6OmNyZWF0ZSgpKSwgYmVoYXZpb3IpOworCiAgICAgcmV0dXJuIGV2
YXNPYmplY3Q7CiB9CiAKLUV2YXNfT2JqZWN0KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2
YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKK0V2YXNfT2JqZWN0KiBFd2tW
aWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBkZWZh
dWx0U21hcnRDbGFzc0luc3RhbmNlKCksIGNvbnRleHQsIHBhZ2VHcm91cFJlZiwgYmVoYXZpb3Ip
OworICAgIHJldHVybiBjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgZGVmYXVsdFNtYXJ0Q2xhc3NJ
bnN0YW5jZSgpLCBjb250ZXh0LCBwYWdlR3JvdXAsIGJlaGF2aW9yKTsKIH0KIAogYm9vbCBFd2tW
aWV3Ojppbml0U21hcnRDbGFzc0ludGVyZmFjZShFd2tfVmlld19TbWFydF9DbGFzcyYgYXBpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IDcxZGFkMmQ1
N2E3MDFlNmY1OTJjM2M2NjdjNDgxMzQ1NzgwZTE3NTIuLjhiNDU5NDFiNzg4MWVjNGE5NjFkOGEw
M2RmMmY4MWFkNjg5OGQxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmgKQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgRXdrQ29udGV4dDsKIGNsYXNzIEV3a0Jh
Y2tGb3J3YXJkTGlzdDsKIGNsYXNzIEV3a0NvbG9yUGlja2VyOwogY2xhc3MgRXdrQ29udGV4dE1l
bnU7CitjbGFzcyBFd2tQYWdlR3JvdXA7CiBjbGFzcyBFd2tQb3B1cE1lbnU7CiBjbGFzcyBFd2tT
ZXR0aW5nczsKIGNsYXNzIEV3a1dpbmRvd0ZlYXR1cmVzOwpAQCAtMTA2LDggKzEwNyw4IEBAIHB1
YmxpYzoKICAgICAgICAgRGVmYXVsdEJlaGF2aW9yCiAgICAgfTsKIAotICAgIHN0YXRpYyBFdmFz
X09iamVjdCogY3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0
LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsICBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYgPSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZp
b3IpOwotICAgIHN0YXRpYyBFdmFzX09iamVjdCogY3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52
YXMsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmID0gMCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2
aW9yKTsKKyAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2Fu
dmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCAg
UGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IDAsIFZpZXdCZWhhdmlvciBiZWhh
dmlvciA9IEV3a1ZpZXc6OkRlZmF1bHRCZWhhdmlvcik7CisgICAgc3RhdGljIEV2YXNfT2JqZWN0
KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBj
b250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwID0gMCwgVmlld0JlaGF2
aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2aW9yKTsKIAogICAgIHN0YXRpYyBi
b29sIGluaXRTbWFydENsYXNzSW50ZXJmYWNlKEV3a19WaWV3X1NtYXJ0X0NsYXNzJik7CiAKQEAg
LTEyMCw2ICsxMjEsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFn
ZSgpIHsgcmV0dXJuIG1fd2ViVmlldy0+cGFnZSgpOyB9CiAgICAgRXdrQ29udGV4dCogZXdrQ29u
dGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEV3a1BhZ2VHcm91cCogZXdr
UGFnZUdyb3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXAuZ2V0KCk7IH0KICAgICBFd2tTZXR0aW5n
cyogc2V0dGluZ3MoKSB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgRXdrQmFja0Zv
cndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC5n
ZXQoKTsgfQogICAgIEV3a1dpbmRvd0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcygpOwpAQCAtMjEz
LDcgKzIxNSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gdGFr
ZVNuYXBzaG90KCk7CiAKIHByaXZhdGU6Ci0gICAgRXdrVmlldyhFdmFzX09iamVjdCogZXZhc09i
amVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdl
R3JvdXAsIFZpZXdCZWhhdmlvcik7CisgICAgRXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVj
dCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91
cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IpOwogICAgIH5Fd2tWaWV3KCk7CiAKICAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEoKSBjb25zdDsKQEAgLTI1Miw2ICsyNTQsNyBAQCBw
cml2YXRlOgogICAgIC8vIE5vdGUsIGluaXRpYWxpemF0aW9uIG9yZGVyIG1hdHRlcnMuCiAgICAg
RXZhc19PYmplY3QqIG1fZXZhc09iamVjdDsKICAgICBSZWZQdHI8RXdrQ29udGV4dD4gbV9jb250
ZXh0OworICAgIFJlZlB0cjxFd2tQYWdlR3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIE93blB0cjxF
dmFzX0dMPiBtX2V2YXNHTDsKICAgICBPd25QdHI8V2ViS2l0OjpFdmFzR0xDb250ZXh0PiBtX2V2
YXNHTENvbnRleHQ7CiAgICAgT3duUHRyPFdlYktpdDo6RXZhc0dMU3VyZmFjZT4gbV9ldmFzR0xT
dXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BhZ2VfZ3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bh
Z2VfZ3JvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMjM4ZTRjZmUxZWYxODhmMDJlODYyMjQzMDZkNDhj
MjRiNzRjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcGFnZV9ncm91cC5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIK
KworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRl
ICJXS0FycmF5RWZsLmgiCisjaW5jbHVkZSAiV0tQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXS1N0
cmluZy5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworY29uc3QgY2hhciBFd2tQYWdlR3JvdXA6OmRlZmF1bHRJZGVudGlm
aWVyW10gPSAiZGVmYXVsdFBhZ2VHcm91cElkZW50aWZpZXIiOworCitzdGF0aWMgV0tUeXBlUmVm
IGNvbnZlcnRGcm9tQ2hhclRvV0tTdHJpbmcodm9pZCogZGF0YSkKK3sKKyAgICByZXR1cm4gV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpKTsKK30K
KworRXdrUGFnZUdyb3VwOjpFd2tQYWdlR3JvdXAoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
KQorICAgIDogbV9wYWdlR3JvdXBSZWYocGFnZUdyb3VwUmVmKQoreworfQorCitFd2tQYWdlR3Jv
dXA6OkV3a1BhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgbV9wYWdl
R3JvdXBSZWYgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoYWRvcHRX
Syh0b0NvcGllZEFQSShpZGVudGlmaWVyKSkuZ2V0KCkpKTsKK30KKwordm9pZCBFd2tQYWdlR3Jv
dXA6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEVpbmFfTGlzdCogd2hpdGVMaXN0LCBFaW5hX0xpc3QqIGJsYWNrTGlzdCwgYm9v
bCBtYWluRnJhbWVPbmx5KQoreworICAgIEFTU0VSVChzb3VyY2UpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrU291cmNlID0gYWRvcHRXSyh0b0NvcGllZEFQSShzb3VyY2UpKTsK
KyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tCYXNlVVJMID0gYWRvcHRXSyh0b0NvcGllZFVS
TEFQSShiYXNlVVJMKSk7CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tXaGl0ZWxpc3Qg
PSBhZG9wdFdLKFdLQXJyYXlDcmVhdGVXaXRoRWluYUxpc3Qod2hpdGVMaXN0LCBjb252ZXJ0RnJv
bUNoYXJUb1dLU3RyaW5nKSk7CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tCbGFja2xp
c3QgPSBhZG9wdFdLKFdLQXJyYXlDcmVhdGVXaXRoRWluYUxpc3QoYmxhY2tMaXN0LCBjb252ZXJ0
RnJvbUNoYXJUb1dLU3RyaW5nKSk7CisgICAgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGlu
amVjdGVkRnJhbWVzID0gbWFpbkZyYW1lT25seSA/IGtXS0luamVjdEluVG9wRnJhbWVPbmx5IDog
a1dLSW5qZWN0SW5BbGxGcmFtZXM7CisKKyAgICBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0
KG1fcGFnZUdyb3VwUmVmLmdldCgpLCB3a1NvdXJjZS5nZXQoKSwgd2tCYXNlVVJMLmdldCgpLCB3
a1doaXRlbGlzdC5nZXQoKSwgd2tCbGFja2xpc3QuZ2V0KCksIGluamVjdGVkRnJhbWVzKTsKK30K
Kwordm9pZCBFd2tQYWdlR3JvdXA6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCit7CisgICAg
V0tQYWdlR3JvdXBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMobV9wYWdlR3JvdXBSZWYuZ2V0KCkp
OworfQorCitFd2tfUGFnZV9Hcm91cCogZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKGNvbnN0IGNoYXIq
IGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIEV3a1BhZ2VHcm91cDo6Y3JlYXRlKGlkZW50aWZp
ZXIpLmxlYWtSZWYoKTsKK30KKworRWluYV9Cb29sIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVf
c2hlZXRfYWRkKEV3a19QYWdlX0dyb3VwKiBld2tQYWdlR3JvdXAsIGNvbnN0IGNoYXIqIHNvdXJj
ZSwgY29uc3QgY2hhciogYmFzZVVSTCwgRWluYV9MaXN0KiB3aGl0ZUxpc3QsIEVpbmFfTGlzdCog
YmxhY2tMaXN0LCBFaW5hX0Jvb2wgbWFpbkZyYW1lT25seSkKK3sKKyAgICBFV0tfT0JKX0dFVF9J
TVBMX09SX1JFVFVSTihFd2tQYWdlR3JvdXAsIGV3a1BhZ2VHcm91cCwgaW1wbCwgZmFsc2UpOwor
CisgICAgaW1wbC0+YWRkVXNlclN0eWxlU2hlZXQoc291cmNlLCBiYXNlVVJMLCB3aGl0ZUxpc3Qs
IGJsYWNrTGlzdCwgbWFpbkZyYW1lT25seSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWlu
YV9Cb29sIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3JlbW92ZV9hbGwoRXdrX1Bh
Z2VfR3JvdXAqIGV3a1BhZ2VHcm91cCkKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVS
TihFd2tQYWdlR3JvdXAsIGV3a1BhZ2VHcm91cCwgaW1wbCwgZmFsc2UpOworCisgICAgaW1wbC0+
cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI0ZjlmNGI4ODAyNDM2YmJjMjJjNWQyNzBjMTVjNjY0NDY1YmEyZWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91
cC5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBF
bGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmls
ZSAgICBld2tfcGFnZV9ncm91cC5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBQYWdl
IEdyb3VwIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19wYWdlX2dyb3VwX2gKKyNkZWZpbmUgZXdr
X3BhZ2VfZ3JvdXBfaAorCisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPEV2YXMuaD4KKwor
I2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIERlY2xh
cmUgRXdrX1BhZ2VfR3JvdXAgYXMgRXdrX09iamVjdC4KKyAqCisgKiBAc2VlIEV3a19PYmplY3QK
KyAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19QYWdlX0dyb3VwOworCisvKioKKyAq
IENyZWF0ZXMgYSBuZXcgRXdrX1BhZ2VfR3JvdXAuCisgKgorICogVGhlIHJldHVybmVkIEV3a19Q
YWdlX0dyb3VwIG9iamVjdCBAYiBzaG91bGQgYmUgdW5yZWYnZWQgYWZ0ZXIgdXNlLgorICoKKyAq
IEByZXR1cm4gRXdrX1BhZ2VfR3JvdXAgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBm
YWlsdXJlCisgKgorICogQHNlZSBld2tfb2JqZWN0X3VucmVmCisgKi8KK0VBUEkgRXdrX1BhZ2Vf
R3JvdXAgKmV3a19wYWdlX2dyb3VwX2NyZWF0ZShjb25zdCBjaGFyICppZGVudGlmaWVyKTsKKwor
LyoqCisgKiBBZGRzIHRoZSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoaXMgcGFnZSBncm91cC4KKyAq
CisgKiBAcGFyYW0gcGFnZV9ncm91cCBld2tfcGFnZV9nb3J1cCBvYmplY3QgdG8gYWRkIHRoZSB1
c2VyIHN0eWxlIHNoZWV0CisgKiBAcGFyYW0gc291cmNlIHRoZSB1c2VyIHN0eWxlIHNoZWV0Cisg
KiBAcGFyYW0gdXJsIGJhc2VVUkwKKyAqIEBwYXJhbSB3aGl0ZV9saXN0IHVybCBsaXN0IHRvIGFs
bG93IGFkZGluZyB0aGUgdXNlciBzdHlsZSBzaGVldAorICogQHBhcmFtIGJsYWNrX2xpc3QgdXJs
IGxpc3QgdG8gZGlzYWxsb3cgYWRkaW5nIHRoZSB1c2VyIHN0eWxlIHNoZWV0CisgKiBAcGFyYW0g
bWFpbl9mcmFtZV9vbmx5IGEgc3RhdGUgdG8gYXBwbHkgdGhlIHVzZXIgc3R5bGUgc2hlZXQgb25s
eSB0byB0aGUgbWFpbmZyYW1lCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHVz
ZXIgc3R5bGUgc2hlZXQgaXMgYWRkZWQgdG8gdGhlIHBhZ2UgZ3JvdXAsIG9yCisgKiAgICAgICAg
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19wYWdlX2dy
b3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKEV3a19QYWdlX0dyb3VwICpwYWdlX2dyb3VwLCBjb25z
dCBjaGFyICpzb3VyY2UsIGNvbnN0IGNoYXIgKmJhc2VfdXJsLCBFaW5hX0xpc3QgKndoaXRlX2xp
c3QsIEVpbmFfTGlzdCAqYmxhY2tfbGlzdCwgRWluYV9Cb29sIG1haW5fZnJhbWVfb25seSk7CisK
Ky8qKgorICogUmVtb3ZlIGFsbCB0aGUgdXNlciBzdHlsZSBzaGVldHMgZnJvbSB0aGlzIHBhZ2Ug
Z3JvdXAuCisgKgorICogQHBhcmFtIHBhZ2VfZ3JvdXAgcGFnZSBncm91cCBvYmplY3QgdG8gcmVt
b3ZlIGFsbCB0aGUgdXNlciBzdHlsZSBzaGVldHMKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBpZiBhbGwgdGhlIHVzZXIgc3R5bGUgc2hlZXQgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSBn
cm91cCwgb3IKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBF
aW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbChFd2tf
UGFnZV9Hcm91cCAqcGFnZV9ncm91cCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisKKyNlbmRpZiAvLyBld2tfcGFnZV9ncm91cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cF9wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cF9wcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDE5MDUxNWQ4NTk3ZDU2N2VjZGNhNDIzNTM4N2U4ZmEwOTVmNDcwNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3By
aXZhdGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1
bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
ZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19wYWdlX2dyb3VwX3ByaXZhdGVf
aAorCisjaW5jbHVkZSAiZXdrX29iamVjdF9wcml2YXRlLmgiCisjaW5jbHVkZSA8RXZhcy5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworY2xhc3MgRXdrVmlldzsKKworY2xhc3Mg
RXdrUGFnZUdyb3VwIDogcHVibGljIEV3a09iamVjdCB7CitwdWJsaWM6CisgICAgRVdLX09CSkVD
VF9ERUNMQVJFKEV3a1BhZ2VHcm91cCkKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a1BhZ2VH
cm91cD4gY3JlYXRlKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRXdrUGFnZUdyb3VwKHBhZ2VHcm91cFJlZikpOworICAgIH0K
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciA9IFN0cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBFd2tQYWdlR3JvdXAoaWRlbnRpZmllci5pc0VtcHR5KCkgPyBkZWZhdWx0SWRlbnRpZmll
ciA6IGlkZW50aWZpZXIpKTsKKyAgICB9CisKKyAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91
cCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUdyb3VwUmVmLmdldCgpOyB9CisKKyAgICB2b2lkIGFk
ZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEVpbmFfTGlzdCogd2hpdGVsaXN0LCBFaW5hX0xpc3QqIGJsYWNrbGlzdCwgYm9vbCBtYWlu
RnJhbWVPbmx5KTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IEV3a1BhZ2VHcm91cChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBS
ZWYpOworICAgIGV4cGxpY2l0IEV3a1BhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
OworCisgICAgc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdElkZW50aWZpZXJbXTsKKworICAgIFdL
UmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBtX3BhZ2VHcm91cFJlZjsKK307CisKKyNlbmRpZiAv
LyBld2tfcGFnZV9ncm91cF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA0ZjFhMTMxZDI1ZDc0MzU0ZGUwYmU5M2YxYmJiM2Q2
OGY5NzE3ZTNiLi43YWUxOGM3ZjM4ZWNkNWM3NTM5ZTNhYjM4OTBiYzhmMzNhZmYzNjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zNCw2
ICszNCw4IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgImV3a19wYWdlX2dyb3VwLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdz
X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CkBAIC04Niw5ICs4OCw5IEBAIEVp
bmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFw
aSkKICAgICByZXR1cm4gRXdrVmlldzo6aW5pdFNtYXJ0Q2xhc3NJbnRlcmZhY2UoKmFwaSk7CiB9
CiAKLUV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1Nt
YXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCitFdmFzX09iamVjdCogZXdrX3ZpZXdf
c21hcnRfYWRkKEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBj
b250ZXh0LCBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwKQogewotICAgIHJldHVybiBFd2tWaWV3
OjpjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgc21hcnQsIGV3a19vYmplY3RfY2FzdDxFd2tDb250
ZXh0Kj4oY29udGV4dCkpOworICAgIHJldHVybiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGNh
bnZhcywgc21hcnQsIGV3a19vYmplY3RfY2FzdDxFd2tDb250ZXh0Kj4oY29udGV4dCksIGV3a19v
YmplY3RfY2FzdDxFd2tQYWdlR3JvdXAqPihwYWdlR3JvdXApKTsKIH0KIAogRXZhc19PYmplY3Qq
IGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29u
dGV4dCkKQEAgLTEwOCw2ICsxMTAsMTMgQEAgRXdrX0NvbnRleHQqIGV3a192aWV3X2NvbnRleHRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHJldHVybiBpbXBsLT5ld2tDb250
ZXh0KCk7CiB9CiAKK0V3a19QYWdlX0dyb3VwKiBld2tfdmlld19wYWdlX2dyb3VwX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgaW1wbCwgMCk7CisKKyAgICByZXR1cm4gaW1wbC0+ZXdrUGFnZUdyb3VwKCk7
Cit9CisKIEVpbmFfQm9vbCBld2tfdmlld191cmxfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBjaGFyKiB1cmwpCiB7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIGltcGwsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5oCmluZGV4IDViOTIzYzQyYzY2YmVhYzFmYWUyNDQ3NWY2MjIzZmI2MmQyY2NkMTMuLmNk
MGQzMTc2M2NiMzA0YmZjMTkzZjIwNzZjYTJmZDFhNjkxN2JkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtODAsNiArODAsNyBAQAogI2luY2x1
ZGUgImV3a19jb250ZXh0X21lbnUuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCiAj
aW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKICNpbmNs
dWRlICJld2tfcG9wdXBfbWVudS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIK
ICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKQEAgLTMxNiwxMCArMzE3LDExIEBAIEVBUEkgRWlu
YV9Cb29sIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFydF9DbGFzcyAqYXBp
KTsKICAqIEBwYXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUgdG8gY3JlYXRlIHRoZSB2aWV3IG9i
amVjdAogICogQHBhcmFtIHNtYXJ0IEV2YXNfU21hcnQgb2JqZWN0LiBJdHMgdHlwZSBzaG91bGQg
YmUgRVdLX1ZJRVdfVFlQRV9TVFIKICAqIEBwYXJhbSBjb250ZXh0IEV3a19Db250ZXh0IG9iamVj
dCB3aGljaCBpcyB1c2VkIGZvciBpbml0aWFsaXppbmcKKyAqIEBwYXJhbSBwYWdlR3JvdXAgRXdr
X1BhZ2VfR3JvdXAgb2JqZWN0IHdoaWNoIGlzIHVzZWQgZm9yIGluaXRpYWxpemluZwogICoKICAq
IEByZXR1cm4gdmlldyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAq
LwotRUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMgKmUsIEV2YXNfU21h
cnQgKnNtYXJ0LCBFd2tfQ29udGV4dCAqY29udGV4dCk7CitFQVBJIEV2YXNfT2JqZWN0ICpld2tf
dmlld19zbWFydF9hZGQoRXZhcyAqZSwgRXZhc19TbWFydCAqc21hcnQsIEV3a19Db250ZXh0ICpj
b250ZXh0LCBFd2tfUGFnZV9Hcm91cCAqcGFnZUdyb3VwKTsKIAogLyoqCiAgKiBDcmVhdGVzIGEg
bmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3QuCkBAIC0zNTAsNiArMzUyLDE1IEBAIEVBUEkgRXZh
c19PYmplY3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0NvbnRleHQg
KmNvbnRleHQpOwogRUFQSSBFd2tfQ29udGV4dCAqZXdrX3ZpZXdfY29udGV4dF9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pOwogCiAvKioKKyAqIEdldHMgdGhlIEV3a19QYWdlX0dyb3VwIG9mIHRo
aXMgdmlldy4KKyAqCisgKiBAcGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBFd2tf
UGFnZV9Hcm91cAorICoKKyAqIEByZXR1cm4gdGhlIEV3a19QYWdlX0dyb3VwIG9mIHRoaXMgdmll
dyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFd2tfUGFnZV9Hcm91cCAqZXdrX3Zp
ZXdfcGFnZV9ncm91cF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKICAqIEFza3Mg
dGhlIG9iamVjdCB0byBsb2FkIHRoZSBnaXZlbiBVUkwuCiAgKgogICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gbG9hZCBAYSBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdEJhc2UuY3BwCmluZGV4IGU2NGY0Y2M3NzUzNjIyZDc1ODQxZjgxNDY4OGVhNTJlYmZjNjUy
NDEuLjZlOGJhZTJkNzA2YTdiZTQzOWVkODk0M2IyNzE2NzJlYzFhMjliZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcApAQCAtNjEsMTEgKzYxLDE0
IEBAIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQogICAgIEV2YXNfU21hcnQqIHNtYXJ0
ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJm1fZXdrVmlld0NsYXNzLnNjKTsKIAogICAgIEV3a19D
b250ZXh0KiBuZXdDb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3KCk7Ci0gICAgbV93ZWJWaWV3ID0g
ZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBuZXdDb250ZXh0KTsKKyAgICBFd2tfUGFn
ZV9Hcm91cCogbmV3UGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKCJVbml0VGVzdCIp
OworICAgIG1fd2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgbmV3Q29u
dGV4dCwgbmV3UGFnZUdyb3VwKTsKKwogICAgIC8vIENsZWFyIEhUVFAgY2FjaGUgZmlsZXMgYmVm
b3JlIHJ1bm5pbmcgdGhlIHVuaXQgdGVzdHMsIHdoaWNoIHByZXZlbnRzIAogICAgIC8vIHBlcmZv
cm1hbmNlIGRlZ3JhZGF0aW9uIGR1ZSB0byBzbyBtYW55IGNhY2hlIGZpbGVzLgogICAgIGV3a19j
b250ZXh0X3Jlc291cmNlX2NhY2hlX2NsZWFyKG5ld0NvbnRleHQpOwogICAgIGV3a19vYmplY3Rf
dW5yZWYobmV3Q29udGV4dCk7CisgICAgZXdrX29iamVjdF91bnJlZihuZXdQYWdlR3JvdXApOwog
CiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldywgZW52aXJvbm1lbnQtPmRlZmF1bHRU
aGVtZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApp
bmRleCBiZDVlNGI5OTU4NWZkODlhNzc3YmEwN2M0MDFkMWNlZjMxOTNiODdhLi41OTI0YmU2NDFm
Y2Q3Y2JiNWE2NWZlOTEzM2VmYjMzODI3MDEzNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAtMzUsNiArMzUsNyBAQCBwdWJsaWM6CiAgICAgRWNv
cmVfRXZhcyogYmFja2luZ1N0b3JlKCkgeyByZXR1cm4gbV9lY29yZUV2YXM7IH0KICAgICBFdmFz
KiBjYW52YXMoKSB7IHJldHVybiBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcyk7IH0KICAgICBF
dmFzX09iamVjdCogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQorICAgIHZvaWQgc2V0
V2ViVmlldyhFdmFzX09iamVjdCogd2ViVmlldykgeyBtX3dlYlZpZXcgPSB3ZWJWaWV3OyB9CiAg
ICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGV3a1ZpZXdDbGFzcygpIHsgcmV0dXJuICZtX2V3a1Zp
ZXdDbGFzczsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmExMWM0NGRhODc4OGQyMmI2NmJkNDQxNDExNTM1ODU0NDcyM2M0MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3Rf
ZXdrMl9wYWdlX2dyb3VwLmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEJhc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0VGVzdDsKKworZXh0ZXJu
IEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsKKworc3RhdGljIGNvbnN0IGNo
YXIgaHRtbFN0cmluZ1tdID0gIjxodG1sPjxoZWFkPjx0aXRsZT5Gb288L3RpdGxlPjwvaGVhZD48
Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkJz48c2NyaXB0PmRvY3VtZW50LnRpdGxl
PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKTwvc2NyaXB0PkhFTExPPC9ib2R5PjwvaHRtbD4iOwor
c3RhdGljIGNvbnN0IGNoYXIgdXNlclN0eWxlU2hlZXRbXSA9ICJib2R5IHsgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CitzdGF0aWMgY29uc3QgY2hhciBncmVlbkluUkdC
W10gPSAicmdiKDAsIDEyOCwgMCkiOworc3RhdGljIGNvbnN0IGNoYXIgcmVkSW5SR0JbXSA9ICJy
Z2IoMjU1LCAwLCAwKSI7CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFnZV9ncm91
cCkKK3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdr
Vmlld0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19w
YWdlX2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisK
KyAgICBFdmFzX09iamVjdCogbmV3V2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChjYW52YXMo
KSwgc21hcnQsIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCksIHBhZ2VHcm91cCk7CisgICAgc2V0
V2ViVmlldyhuZXdXZWJWaWV3KTsKKworICAgIEFTU0VSVF9FUShwYWdlR3JvdXAsIGV3a192aWV3
X3BhZ2VfZ3JvdXBfZ2V0KG5ld1dlYlZpZXcpKTsKKyAgICBld2tfb2JqZWN0X3VucmVmKHBhZ2VH
cm91cCk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFnZV9ncm91cF91c2Vy
X3N0eWxlX3NoZWV0X2FkZF9iZWZvcmVfY3JlYXRpbmdfdmlldykKK3sKKyAgICBFdmFzX1NtYXJ0
KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7Cisg
ICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgidGVz
dCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAgICAvLyBBZGQgYSB1c2VyIHN0
eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3VwIGJlZm9yZSBjcmVhdGluZyBhIHZpZXcKKyAgICBl
d2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdlR3JvdXAsIHVzZXJTdHlsZVNo
ZWV0LCAwLCAwLCAwLCB0cnVlKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyB3ZWIgdmlldyB3aXRo
IHRoaXMgcGFnZSBncm91cAorICAgIEV2YXNfT2JqZWN0KiBuZXdXZWJWaWV3ID0gZXdrX3ZpZXdf
c21hcnRfYWRkKGNhbnZhcygpLCBzbWFydCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSwgcGFn
ZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3KG5ld1dlYlZpZXcpOworCisgICAgZXdrX29iamVjdF91
bnJlZihwYWdlR3JvdXApOworICAgIGV3a192aWV3X3RoZW1lX3NldCh3ZWJWaWV3KCksIGVudmly
b25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKHdlYlZpZXco
KSwgZW52aXJvbm1lbnQtPmRlZmF1bHRXaWR0aCgpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdEhlaWdo
dCgpKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdlYlZpZXcoKSk7CisgICAgZXZhc19vYmplY3Rf
Zm9jdXNfc2V0KHdlYlZpZXcoKSwgdHJ1ZSk7CisKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19s
b2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVu
dGlsVGl0bGVDaGFuZ2VkVG8oZ3JlZW5JblJHQikpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0
QmFzZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGRfYWZ0ZXJfY3JlYXRpbmdf
dmlldykKK3sKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3Vw
IGFmdGVyIGNyZWF0aW5nIGEgdmlldworICAgIEV3a19QYWdlX0dyb3VwKiBwYWdlR3JvdXAgPSBl
d2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VH
cm91cCk7CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQocGFnZUdyb3Vw
LCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisKKyAgICBld2tfdmlld19odG1sX3N0
cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisgICAgQVNTRVJUX1RSVUUo
d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oZ3JlZW5JblJHQikpOworfQorCitURVNUX0YoRVdLMlVu
aXRUZXN0QmFzZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbCkK
K3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmll
d0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdl
X2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAg
ICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3VwIGJlZm9yZSBjcmVh
dGluZyBhIHZpZXcKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZChwYWdl
R3JvdXAsIHVzZXJTdHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsKKworICAgIC8vIENyZWF0ZSBh
IG5ldyB3ZWIgdmlldyB3aXRoIHRoaXMgcGFnZSBncm91cAorICAgIEV2YXNfT2JqZWN0KiBuZXdX
ZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGNhbnZhcygpLCBzbWFydCwgZXdrX2NvbnRleHRf
ZGVmYXVsdF9nZXQoKSwgcGFnZUdyb3VwKTsKKyAgICBzZXRXZWJWaWV3KG5ld1dlYlZpZXcpOwor
CisgICAgZXdrX29iamVjdF91bnJlZihwYWdlR3JvdXApOworICAgIGV3a192aWV3X3RoZW1lX3Nl
dCh3ZWJWaWV3KCksIGVudmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CisgICAgZXZhc19vYmpl
Y3RfcmVzaXplKHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRXaWR0aCgpLCBlbnZpcm9u
bWVudC0+ZGVmYXVsdEhlaWdodCgpKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdlYlZpZXcoKSk7
CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdlYlZpZXcoKSwgdHJ1ZSk7CisKKyAgICBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisKKyAg
ICAvLyBSZW1vdmUgYWxsIHVzZXIgc3R5bGUgc2hlZXRzIGluIHRoZSBwYWdlIGdyb3VwCisgICAg
ZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbChld2tfdmlld19wYWdl
X2dyb3VwX2dldCh3ZWJWaWV3KCkpKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNo
YW5nZWRUbyhyZWRJblJHQikpOworCisgICAgLy8gQWRkIGEgdXNlciBzdHlsZSBzaGVldCB0byB0
aGUgcGFnZSBncm91cCBhZnRlciBjcmVhdGluZyBhIHZpZXcKKyAgICBwYWdlR3JvdXAgPSBld2tf
dmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOworICAgIGV3a19wYWdlX2dyb3VwX3VzZXJf
c3R5bGVfc2hlZXRfYWRkKHBhZ2VHcm91cCwgdXNlclN0eWxlU2hlZXQsIDAsIDAsIDAsIHRydWUp
OworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBodG1sU3RyaW5nLCAw
LCAwKTsKKworICAgIC8vIFJlbW92ZSBhbGwgdXNlciBzdHlsZSBzaGVldHMgaW4gdGhlIHBhZ2Ug
Z3JvdXAKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKGV3
a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSkpOworICAgIEFTU0VSVF9UUlVFKHdhaXRV
bnRpbFRpdGxlQ2hhbmdlZFRvKHJlZEluUkdCKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXgg
OWUyM2U1ZmUzMjg0ZTYxMDVmN2E0MTg5ZmFhMjM4Y2M2N2Q2M2RkMi4uZTQxODNlZTI4M2UzOTIy
ODBhMjY2NWQ1ODQyMmNkODMxZmFjMmJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtNTU3LDYg
KzU1NywxMyBAQCBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfY29udGV4dF9nZXQp
CiAgICAgQVNTRVJUX0VRKGNvbnRleHQsIGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSkp
OwogfQogCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQp
Cit7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a192aWV3X3BhZ2VfZ3JvdXBf
Z2V0KHdlYlZpZXcoKSk7CisgICAgQVNTRVJUX1RSVUUocGFnZUdyb3VwKTsKKyAgICBBU1NFUlRf
RVEocGFnZUdyb3VwLCBld2tfdmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpKTsKK30KKwog
VEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQpCiB7CiAg
ICAgRWluYV9MaXN0KiBwb2ludHMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAppbmRleCBmYTJlMDhkNjEwYWVmZDdh
ZGM0M2YxYWQ2OWRmYWM4ZTI5NTNjYTUyLi5kNzU4MDAxZTY5MjMzNWE1NDQ1YjZiZjdhNGNmOTE2
MWNmM2RjYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
Ykluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV3a1Zp
ZXcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9FZmxJbnNwZWN0b3JVdGlsaXRpZXMuaD4KQEAgLTEwMCw3ICsxMDEsOCBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQog
CiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRvIHVzZSBXS1ZpZXdSZWYuCiAgICAgV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYgPSB0b0FQSShwYWdlKCktPnByb2Nlc3MoKS0+Y29udGV4dCgpKTsKLSAg
ICBtX2luc3BlY3RvclZpZXcgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGVjb3JlX2V2YXNf
Z2V0KG1faW5zcGVjdG9yV2luZG93KSwgRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCB0
b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSksIEV3a1ZpZXc6OkxlZ2FjeUJlaGF2aW9yKTsKKyAg
ICBtX2luc3BlY3RvclZpZXcgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGVjb3JlX2V2YXNf
Z2V0KG1faW5zcGVjdG9yV2luZG93KSwgRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCBF
d2tQYWdlR3JvdXA6OmNyZWF0ZSh0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSkpLCBFd2tWaWV3
OjpMZWdhY3lCZWhhdmlvcik7CisKICAgICBpZiAoIW1faW5zcGVjdG9yVmlldykKICAgICAgICAg
cmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA2Mzg2MjAyZTgyMWYyNTFmNDk2ZmZjMjhmOTBlNTE2MTM1ODA3ZWU0Li45OTE1YTM5
MzNhZDMxMzY5MGJjZGRjMmNiN2Y1NjlmMjg0ODU3YjYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMDUg
IEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxd
W1dLMl0gQWRkIGFuIEFQSSBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyB1c2VyIHN0eWxlIHNoZWV0
cyBmcm9tIGEgcGFnZSBncm91cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwNzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXNlIHRoZSBwYWdlIGdyb3VwIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3Qu
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAgICAgICAod2luZG93X2Ny
ZWF0ZSk6CisKIDIwMTMtMDMtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgU29tZSBwZXJmLiB0ZXN0cyBoYXZlIHZhcmlhbmNlcyB0aGF0IGRpZmZlciBncmVh
dGx5IGJldHdlZW4gcnVucwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4u
YyBiL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKaW5kZXggY2U4MTZlZWE4ZTJhYTc3YWUz
ZDNiNjA3NTczNmNkOTgxMWUxYzQzOS4uMDYzZDQyZmU3MTc5NWEwNzY4ODIwOTgzNjlmMGE3Mzkw
NmQ5OWFhNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYworKysgYi9U
b29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCkBAIC0xMTg3LDggKzExODcsOSBAQCBzdGF0aWMg
QnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5lciwgY29uc3Qg
Y2hhciAqdXJsLCBpbnQgdwogICAgICAgICB3aW5kb3ctPmV3a192aWV3ID0gKEV2YXNfT2JqZWN0
KilXS1ZpZXdDcmVhdGUoZXZhcywgMCwgMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgRXZhc19T
bWFydCAqc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmZXdrVmlld0NsYXNzLT5zYyk7Ci0g
ICAgICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gb3BlbmVyID8gZXdrX3ZpZXdfY29udGV4dF9n
ZXQob3BlbmVyKSA6IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7Ci0gICAgICAgIHdpbmRvdy0+
ZXdrX3ZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGNvbnRleHQpOworICAg
ICAgICBFd2tfQ29udGV4dCAqY29udGV4dCA9IG9wZW5lciA/IGV3a192aWV3X2NvbnRleHRfZ2V0
KG9wZW5lcikgOiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOworICAgICAgICBFd2tfUGFnZV9H
cm91cCAqcGFnZUdyb3VwID0gb3BlbmVyID8gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQob3BlbmVy
KSA6IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgiIik7CisgICAgICAgIHdpbmRvdy0+ZXdrX3ZpZXcg
PSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGNvbnRleHQsIHBhZ2VHcm91cCk7CiAg
ICAgfQogICAgIGV3a192aWV3X3RoZW1lX3NldCh3aW5kb3ctPmV3a192aWV3LCBUSEVNRV9ESVIg
Ii9kZWZhdWx0LmVkaiIpOwogICAgIGlmIChkZXZpY2VfcGl4ZWxfcmF0aW8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192613</attachid>
            <date>2013-03-11 18:22:04 -0700</date>
            <delta_ts>2013-03-14 03:01:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130312101802.patch</filename>
            <type>text/plain</type>
            <size>41943</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjQ4YzlkMzA2ZDRkMmYw
ZjY0NTJhZjk4YmY1ZmI0MjgxMGQ5NjdlOC4uOTk0YWNjY2ZiZGRlMmE0NTBmNzI2ODVhMTFmNzY0
ZDA0MGY2ZWFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTAzLTA1ICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBFd2tQYWdlR3JvdXAgQVBJIHRvIHByb3ZpZGUg
dGhlIGludGVyZmFjZSBvZiBXS1BhZ2VHcm91cC4gVXNpbmcgdGhlIEV3a1BhZ2VHcm91cCwKKyAg
ICAgICAgYXBwbGljYXRpb25zIG1heSBjcmVhdGUgdGhlIHZpZXdzIHdpdGggYSBwYWdlIGdyb3Vw
IGZvciB0aGUgc3BlY2lmaWMgaWRlbnRpZmllci4gQWxzbywgdGhpcyBwYXRjaAorICAgICAgICBl
bmNhcHN1bGF0ZXMgdGhlIEFQSXMgV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCBhbmQgV0tQ
YWdlR3JvdXBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMgYmVoaW5kCisgICAgICAgIHRoZSBFd2tQ
YWdlR3JvdXAgY2xhc3MgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMg
ZnJvbSBhIHBhZ2UgZ3JvdXAuIFdLQXJyYXlDcmVhdGVXaXRoRWluYUxpc3QoKQorICAgICAgICBp
cyBhZGRlZCBhcyBhIGdlbmVyaWMgV0tBcnJheSBjcmVhdGlvbiBBUEkgZnJvbSBFaW5hX0xpc3Qu
CisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
ZWZsL1dLQXJyYXlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQXJyYXlDcmVhdGVXaXRoRWlu
YUxpc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAgIChjcmVh
dGVXS1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpF
d2tWaWV3KToKKyAgICAgICAgKEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKEV3a1ZpZXc6OmV3a1BhZ2VH
cm91cCk6CisgICAgICAgIChFd2tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfcGFnZV9ncm91cC5jcHA6IEFkZGVkLgorICAgICAgICAoY29udmVydEZyb21DaGFyVG9XS1N0
cmluZyk6CisgICAgICAgIChFd2tQYWdlR3JvdXA6OkV3a1BhZ2VHcm91cCk6CisgICAgICAgIChF
d2tQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKEV3a1BhZ2VHcm91cDo6
cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKGV3a19wYWdlX2dyb3VwX2NyZWF0
ZSk6CisgICAgICAgIChld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZCk6CisgICAg
ICAgIChld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cF9wcml2YXRlLmg6IEFkZGVkLgorICAg
ICAgICAoRXdrUGFnZUdyb3VwKToKKyAgICAgICAgKEV3a1BhZ2VHcm91cDo6Y3JlYXRlKToKKyAg
ICAgICAgKEV3a1BhZ2VHcm91cDo6d2tQYWdlR3JvdXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X2FkZCk6CisgICAg
ICAgIChld2tfdmlld19wYWdlX2dyb3VwX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0sy
VW5pdFRlc3RCYXNlOjpTZXRVcCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgIChFV0syVW5pdFRlc3Q6
OkVXSzJVbml0VGVzdEJhc2U6OnNldFdlYlZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYWdlX2dyb3VwLmNwcDogQWRkZWQuCisgICAgICAgIChURVNU
X0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNw
cDoKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0
b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorCiAyMDEzLTAzLTAzICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtFRkxdW1FUXVtXSzJdIFR1cm4g
b24gQXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBhbHdheXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCmluZGV4IDdmYTRlYzk3NTFiNGY0MWYyODRjMTM4Yjg1OWFiYjkwODg1ZGRi
Y2UuLmU5YzllMTMzNGViZmU0YjZjMjY1M2VjYTBmYmE5YmFjZjU0M2I0YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0xMiw2ICsxMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAKIAogICAg
IFNoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisgICAgU2hhcmVkL0FQSS9jL2Vm
bC9XS0FycmF5RWZsLmNwcAogCiAgICAgU2hhcmVkL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRTb3Vw
RXJyb3JzRWZsLmNwcAogICAgIFNoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3Bw
CkBAIC03MCw2ICs3MSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX2RhdGEuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19vYmplY3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcApAQCAtMTY4LDYgKzE3MCw3IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS90ZXh0L2VuY2hhbnQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3N2Zy9ncmFwaGljcyIKICAgICAi
JHtXRUJLSVQyX0RJUn0vU2hhcmVkL0Rvd25sb2Fkcy9zb3VwIgorICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQvQVBJL2MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvZWZsIgogICAg
ICIke1dFQktJVDJfRElSfS9TaGFyZWQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9DL2NhaXJvIgpAQCAtMjgzLDYgKzI4Niw3IEBAIHNldChFV2ViS2l0Ml9IRUFERVJT
CiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
ZmF2aWNvbl9kYXRhYmFzZS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0LmgiCiAgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9u
X3JlcXVlc3QuaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wYWdlX2dyb3VwLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5oIgogICAgICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgc2V0KEVXSzJVbml0VGVz
dHNfQklOQVJJRVMKICAgICB0ZXN0X2V3azJfZmF2aWNvbl9kYXRhYmFzZQogICAgIHRlc3RfZXdr
Ml9maWxlX2Nob29zZXJfcmVxdWVzdAogICAgIHRlc3RfZXdrMl9vYmplY3QKKyAgICB0ZXN0X2V3
azJfcGFnZV9ncm91cAogICAgIHRlc3RfZXdrMl9wb3B1cF9tZW51CiAgICAgdGVzdF9ld2syX3Jl
ZnB0cl9ldmFzX29iamVjdAogICAgIHRlc3RfZXdrMl9zZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc3OGE5OWU4
YjhhMzJmZjA2OTE5OTcwNGQ5ZjY0OThkN2FkOGQwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5jcHAKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V0tBcnJheUVmbC5oIgorCisjaW5jbHVkZSAiV0tBcnJheS5oIgorI2luY2x1ZGUgIldLU3RyaW5n
LmgiCisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dL
QXJyYXlSZWYgV0tBcnJheUNyZWF0ZVdpdGhFaW5hTGlzdChFaW5hX0xpc3QqIGFycmF5LCBXS1R5
cGVSZWYgKCpjcmVhdGVXS1R5cGUpKHZvaWQqKSkKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IGVp
bmFfbGlzdF9jb3VudChhcnJheSk7CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuIFdL
QXJyYXlSZWYoKTsKKworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHZlY3RvcjsKKyAgICB2ZWN0b3Iu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBFaW5hX0xpc3QqIGwgPSAwOwor
ICAgIHZvaWQqIGRhdGEgPSAwOworICAgIEVJTkFfTElTVF9GT1JFQUNIKGFycmF5LCBsLCBkYXRh
KQorICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKGNyZWF0ZVdLVHlwZShkYXRhKSk7CisK
KyAgICByZXR1cm4gV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKHZlY3Rvci5kYXRhKCksIGNv
dW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tB
cnJheUVmbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmQ0YjlhNTdiYWE0YmY3OGExOWEwYzAyMDJiNTgyNDhjMDFiMzg5NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVm
bC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBF
bGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0Fy
cmF5RWZsX2gKKyNkZWZpbmUgV0tBcnJheUVmbF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFz
ZS5oPgorCisvKioKKyAqIEB0eXBlZGVmIEVpbmFfTGlzdAorICogVHlwZSBmb3IgYSBnZW5lcmlj
IGRvdWJsZSBsaW5rZWQgbGlzdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0VpbmFfTGlzdCBFaW5h
X0xpc3Q7CisKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGVXaXRoRWluYUxpc3Qo
RWluYV9MaXN0KiwgV0tUeXBlUmVmICgqY3JlYXRlV0tUeXBlKSh2b2lkKikpOworCisjZW5kaWYg
Ly8gV0tBcnJheUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5jcHAKaW5kZXggMTc3OTExZmIyMzM5MmJlMmRlZjgzNGMzNWNkNjViMmM2MDBiODkzOS4u
ZTFmMDNmZDJhOTM5ZjY1ZDQ2Mjc1MjM0ODAzMTU4N2M3ZjdmMWMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtMjQsNiArMjQsNyBAQAog
I2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CkBAIC0zMSw3ICszMiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBzdGF0aWMg
aW5saW5lIFdLVmlld1JlZiBjcmVhdGVXS1ZpZXcoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBFd2tWaWV3OjpWaWV3QmVo
YXZpb3IgYmVoYXZpb3IpCiB7CiAgICAgUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQgPSBjb250
ZXh0UmVmID8gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpIDogRXdrQ29udGV4dDo6ZGVm
YXVsdENvbnRleHQoKTsKLSAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCA9IEV3a1ZpZXc6OmNy
ZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBjb250ZXh0LCBwYWdlR3JvdXBSZWYsIGJlaGF2aW9yKTsK
KyAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBFd2tQYWdlR3JvdXA6OmNyZWF0
ZShwYWdlR3JvdXBSZWYpOworCisgICAgRXZhc19PYmplY3QqIGV2YXNPYmplY3QgPSBFd2tWaWV3
OjpjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgY29udGV4dCwgcGFnZUdyb3VwLCBiZWhhdmlvcik7
CiAgICAgaWYgKCFldmFzT2JqZWN0KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggM2EyODY1ZWU3OTMxZTVkMWQ0
ZDMwZGZlNTAwOTZmNzRjZjRmZGQ1My4uYTljOGExNGU3OGIxZmVlNjkxOTU5Y2QyY2I3MmE1MDVl
ZmRiZTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdl
YktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
CkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fZGF0YS5oIgogI2lu
Y2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2luY2x1ZGUgImV3a19v
YmplY3QuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1ZGUgImV3a19wb3B1
cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1ZGUgImV3
a19zZWN1cml0eV9vcmlnaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5jcHAKaW5kZXggMTQ2MGI3MDZmODFlNTJhYjIxYWNkMjNiYWM2NzcxMTI3ZjE5ZmUw
Ny4uOTJkYzI4MDFlMTY1MjU1NmQ3YjlkYmJmZDQ5ODIzZTljNDE4NDczNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTUzLDYgKzUzLDcgQEAK
ICNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29u
dGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5o
IgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9w
dXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKQEAgLTIyOCwxMSArMjI5LDEyIEBAIHZvaWQg
RXdrVmlld0V2ZW50SGFuZGxlcjxFVkFTX0NBTExCQUNLX0hJREU+OjpoYW5kbGVFdmVudCh2b2lk
KiBkYXRhLCBFdmFzKiwgRXZhCiAKIC8vIEV3a1ZpZXcgaW1wbGVtZW50YXRpb24uCiAKLUV3a1Zp
ZXc6OkV3a1ZpZXcoRXZhc19PYmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4
dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IgYmVoYXZp
b3IpCitFd2tWaWV3OjpFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRy
PEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAs
IFZpZXdCZWhhdmlvciBiZWhhdmlvcikKICAgICA6IG1fZXZhc09iamVjdChldmFzT2JqZWN0KQog
ICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3BhZ2VHcm91cChwYWdlR3JvdXApCiAg
ICAgLCBtX3BlbmRpbmdTdXJmYWNlUmVzaXplKGZhbHNlKQotICAgICwgbV93ZWJWaWV3KGFkb3B0
UmVmKG5ldyBXZWJWaWV3KHRvSW1wbChtX2NvbnRleHQtPndrQ29udGV4dCgpKSwgdG9JbXBsKHBh
Z2VHcm91cCksIHRoaXMpKSkKKyAgICAsIG1fd2ViVmlldyhhZG9wdFJlZihuZXcgV2ViVmlldyh0
b0ltcGwobV9jb250ZXh0LT53a0NvbnRleHQoKSksIHRvSW1wbChtX3BhZ2VHcm91cC0+d2tQYWdl
R3JvdXAoKSksIHRoaXMpKSkKICAgICAsIG1fcGFnZUxvYWRDbGllbnQoUGFnZUxvYWRDbGllbnRF
Zmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xp
ZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQYWdlVUlDbGllbnRF
Zmw6OmNyZWF0ZSh0aGlzKSkKQEAgLTMwMCw3ICszMDIsNyBAQCBFd2tWaWV3Ojp+RXdrVmlldygp
CiAgICAgaWNvbkRhdGFiYXNlLT51bndhdGNoQ2hhbmdlcyhFd2tWaWV3OjpoYW5kbGVGYXZpY29u
Q2hhbmdlZCk7CiB9CiAKLUV2YXNfT2JqZWN0KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2
YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29u
dGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3Ip
CitFdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2
YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQ
dHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhhdmlvcikKIHsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnQsIDApOwpAQCAtMzE3LDE1ICszMTksMTQgQEAg
RXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBFdmFz
X1NtYXJ0KiBzbWFydCwgUGFzc1JlZlAKIAogICAgIEFTU0VSVCghc21hcnREYXRhLT5wcml2KTsK
IAotICAgIC8vIERlZmF1bHQgV2ViUGFnZUdyb3VwIGlzIGNyZWF0ZWQgaW4gV2ViQ29udGV4dCBj
b25zdHJ1Y3RvciBpZiB0aGUgcGFnZUdyb3VwUmVmIGlzIDAsCi0gICAgLy8gc28gd2UgZG8gbm90
IG5lZWQgdG8gY3JlYXRlIGl0IGhlcmUuCi0gICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1Zp
ZXcoZXZhc09iamVjdCwgY29udGV4dCwgcGFnZUdyb3VwUmVmLCBiZWhhdmlvcik7CisgICAgc21h
cnREYXRhLT5wcml2ID0gbmV3IEV3a1ZpZXcoZXZhc09iamVjdCwgY29udGV4dCwgKHBhZ2VHcm91
cCA/IHBhZ2VHcm91cCA6IEV3a1BhZ2VHcm91cDo6Y3JlYXRlKCkpLCBiZWhhdmlvcik7CisKICAg
ICByZXR1cm4gZXZhc09iamVjdDsKIH0KIAotRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2
YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdL
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQorRXZhc19P
YmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRy
PEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAs
IFZpZXdCZWhhdmlvciBiZWhhdmlvcikKIHsKLSAgICByZXR1cm4gY3JlYXRlRXZhc09iamVjdChj
YW52YXMsIGRlZmF1bHRTbWFydENsYXNzSW5zdGFuY2UoKSwgY29udGV4dCwgcGFnZUdyb3VwUmVm
LCBiZWhhdmlvcik7CisgICAgcmV0dXJuIGNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBkZWZhdWx0
U21hcnRDbGFzc0luc3RhbmNlKCksIGNvbnRleHQsIHBhZ2VHcm91cCwgYmVoYXZpb3IpOwogfQog
CiBib29sIEV3a1ZpZXc6OmluaXRTbWFydENsYXNzSW50ZXJmYWNlKEV3a19WaWV3X1NtYXJ0X0Ns
YXNzJiBhcGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5k
ZXggNzFkYWQyZDU3YTcwMWU2ZjU5MmMzYzY2N2M0ODEzNDU3ODBlMTc1Mi4uOGI0NTk0MWI3ODgx
ZWM0YTk2MWQ4YTAzZGYyZjgxYWQ2ODk4ZDEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtODcsNiArODcsNyBAQCBjbGFzcyBFd2tDb250ZXh0Owog
Y2xhc3MgRXdrQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgRXdrQ29sb3JQaWNrZXI7CiBjbGFzcyBF
d2tDb250ZXh0TWVudTsKK2NsYXNzIEV3a1BhZ2VHcm91cDsKIGNsYXNzIEV3a1BvcHVwTWVudTsK
IGNsYXNzIEV3a1NldHRpbmdzOwogY2xhc3MgRXdrV2luZG93RmVhdHVyZXM7CkBAIC0xMDYsOCAr
MTA3LDggQEAgcHVibGljOgogICAgICAgICBEZWZhdWx0QmVoYXZpb3IKICAgICB9OwogCi0gICAg
c3RhdGljIEV2YXNfT2JqZWN0KiBjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywgRXZhc19T
bWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgIFdLUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cFJlZiA9IDAsIFZpZXdCZWhhdmlvciBiZWhhdmlvciA9IEV3a1ZpZXc6OkRl
ZmF1bHRCZWhhdmlvcik7Ci0gICAgc3RhdGljIEV2YXNfT2JqZWN0KiBjcmVhdGVFdmFzT2JqZWN0
KEV2YXMqIGNhbnZhcywgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91
cFJlZiBwYWdlR3JvdXBSZWYgPSAwLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpE
ZWZhdWx0QmVoYXZpb3IpOworICAgIHN0YXRpYyBFdmFzX09iamVjdCogY3JlYXRlRXZhc09iamVj
dChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+
IGNvbnRleHQsICBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwID0gMCwgVmlld0Jl
aGF2aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6RGVmYXVsdEJlaGF2aW9yKTsKKyAgICBzdGF0aWMg
RXZhc19PYmplY3QqIGNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3
a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSAw
LCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZpb3IpOwogCiAg
ICAgc3RhdGljIGJvb2wgaW5pdFNtYXJ0Q2xhc3NJbnRlcmZhY2UoRXdrX1ZpZXdfU21hcnRfQ2xh
c3MmKTsKIApAQCAtMTIwLDYgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYktpdDo6V2ViUGFn
ZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV93ZWJWaWV3LT5wYWdlKCk7IH0KICAgICBFd2tDb250
ZXh0KiBld2tDb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgRXdrUGFn
ZUdyb3VwKiBld2tQYWdlR3JvdXAoKSB7IHJldHVybiBtX3BhZ2VHcm91cC5nZXQoKTsgfQogICAg
IEV3a1NldHRpbmdzKiBzZXR0aW5ncygpIHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAg
ICBFd2tCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCgpIHsgcmV0dXJuIG1fYmFja0Zv
cndhcmRMaXN0LmdldCgpOyB9CiAgICAgRXdrV2luZG93RmVhdHVyZXMqIHdpbmRvd0ZlYXR1cmVz
KCk7CkBAIC0yMTMsNyArMjE1LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiB0YWtlU25hcHNob3QoKTsKIAogcHJpdmF0ZToKLSAgICBFd2tWaWV3KEV2YXNfT2Jq
ZWN0KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yKTsKKyAgICBFd2tWaWV3KEV2YXNfT2JqZWN0
KiBldmFzT2JqZWN0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8
RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvcik7CiAgICAgfkV3a1ZpZXcoKTsK
IAogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSgpIGNvbnN0OwpAQCAtMjUyLDYg
KzI1NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gTm90ZSwgaW5pdGlhbGl6YXRpb24gb3JkZXIgbWF0
dGVycy4KICAgICBFdmFzX09iamVjdCogbV9ldmFzT2JqZWN0OwogICAgIFJlZlB0cjxFd2tDb250
ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmUHRyPEV3a1BhZ2VHcm91cD4gbV9wYWdlR3JvdXA7CiAg
ICAgT3duUHRyPEV2YXNfR0w+IG1fZXZhc0dMOwogICAgIE93blB0cjxXZWJLaXQ6OkV2YXNHTENv
bnRleHQ+IG1fZXZhc0dMQ29udGV4dDsKICAgICBPd25QdHI8V2ViS2l0OjpFdmFzR0xTdXJmYWNl
PiBtX2V2YXNHTFN1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcGFnZV9ncm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcGFnZV9ncm91cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEyMzhlNGNmZTFlZjE4OGYwMmU4
NjIyNDMwNmQ0OGMyNGI3NGNlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfcGFn
ZV9ncm91cC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tBcnJheS5o
IgorI2luY2x1ZGUgIldLQXJyYXlFZmwuaCIKKyNpbmNsdWRlICJXS1BhZ2VHcm91cC5oIgorI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitjb25zdCBjaGFyIEV3a1BhZ2VHcm91cDo6ZGVm
YXVsdElkZW50aWZpZXJbXSA9ICJkZWZhdWx0UGFnZUdyb3VwSWRlbnRpZmllciI7CisKK3N0YXRp
YyBXS1R5cGVSZWYgY29udmVydEZyb21DaGFyVG9XS1N0cmluZyh2b2lkKiBkYXRhKQoreworICAg
IHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdGF0aWNfY2FzdDxjaGFyKj4o
ZGF0YSkpOworfQorCitFd2tQYWdlR3JvdXA6OkV3a1BhZ2VHcm91cChXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYpCisgICAgOiBtX3BhZ2VHcm91cFJlZihwYWdlR3JvdXBSZWYpCit7Cit9CisK
K0V3a1BhZ2VHcm91cDo6RXdrUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sK
KyAgICBtX3BhZ2VHcm91cFJlZiA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRp
ZmllcihhZG9wdFdLKHRvQ29waWVkQVBJKGlkZW50aWZpZXIpKS5nZXQoKSkpOworfQorCit2b2lk
IEV3a1BhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgRWluYV9MaXN0KiB3aGl0ZUxpc3QsIEVpbmFfTGlzdCogYmxh
Y2tMaXN0LCBib29sIG1haW5GcmFtZU9ubHkpCit7CisgICAgQVNTRVJUKHNvdXJjZSk7CisKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTb3VyY2UgPSBhZG9wdFdLKHRvQ29waWVkQVBJ
KHNvdXJjZSkpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a0Jhc2VVUkwgPSBhZG9wdFdL
KHRvQ29waWVkVVJMQVBJKGJhc2VVUkwpKTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3
a1doaXRlbGlzdCA9IGFkb3B0V0soV0tBcnJheUNyZWF0ZVdpdGhFaW5hTGlzdCh3aGl0ZUxpc3Qs
IGNvbnZlcnRGcm9tQ2hhclRvV0tTdHJpbmcpKTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVm
PiB3a0JsYWNrbGlzdCA9IGFkb3B0V0soV0tBcnJheUNyZWF0ZVdpdGhFaW5hTGlzdChibGFja0xp
c3QsIGNvbnZlcnRGcm9tQ2hhclRvV0tTdHJpbmcpKTsKKyAgICBXS1VzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMgPSBtYWluRnJhbWVPbmx5ID8ga1dLSW5qZWN0SW5Ub3BG
cmFtZU9ubHkgOiBrV0tJbmplY3RJbkFsbEZyYW1lczsKKworICAgIFdLUGFnZUdyb3VwQWRkVXNl
clN0eWxlU2hlZXQobV9wYWdlR3JvdXBSZWYuZ2V0KCksIHdrU291cmNlLmdldCgpLCB3a0Jhc2VV
UkwuZ2V0KCksIHdrV2hpdGVsaXN0LmdldCgpLCB3a0JsYWNrbGlzdC5nZXQoKSwgaW5qZWN0ZWRG
cmFtZXMpOworfQorCit2b2lkIEV3a1BhZ2VHcm91cDo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRz
KCkKK3sKKyAgICBXS1BhZ2VHcm91cFJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhtX3BhZ2VHcm91
cFJlZi5nZXQoKSk7Cit9CisKK0V3a19QYWdlX0dyb3VwKiBld2tfcGFnZV9ncm91cF9jcmVhdGUo
Y29uc3QgY2hhciogaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gRXdrUGFnZUdyb3VwOjpjcmVh
dGUoaWRlbnRpZmllcikubGVha1JlZigpOworfQorCitFaW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBf
dXNlcl9zdHlsZV9zaGVldF9hZGQoRXdrX1BhZ2VfR3JvdXAqIGV3a1BhZ2VHcm91cCwgY29uc3Qg
Y2hhciogc291cmNlLCBjb25zdCBjaGFyKiBiYXNlVVJMLCBFaW5hX0xpc3QqIHdoaXRlTGlzdCwg
RWluYV9MaXN0KiBibGFja0xpc3QsIEVpbmFfQm9vbCBtYWluRnJhbWVPbmx5KQoreworICAgIEVX
S19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a1BhZ2VHcm91cCwgZXdrUGFnZUdyb3VwLCBpbXBs
LCBmYWxzZSk7CisKKyAgICBpbXBsLT5hZGRVc2VyU3R5bGVTaGVldChzb3VyY2UsIGJhc2VVUkws
IHdoaXRlTGlzdCwgYmxhY2tMaXN0LCBtYWluRnJhbWVPbmx5KTsKKworICAgIHJldHVybiB0cnVl
OworfQorCitFaW5hX0Jvb2wgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3Zl
X2FsbChFd2tfUGFnZV9Hcm91cCogZXdrUGFnZUdyb3VwKQoreworICAgIEVXS19PQkpfR0VUX0lN
UExfT1JfUkVUVVJOKEV3a1BhZ2VHcm91cCwgZXdrUGFnZUdyb3VwLCBpbXBsLCBmYWxzZSk7CisK
KyAgICBpbXBsLT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKKworICAgIHJldHVybiB0cnVl
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bh
Z2VfZ3JvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dy
b3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjRmOWY0Yjg4MDI0MzZiYmMyMmM1ZDI3MGMxNWM2NjQ0NjViYTJl
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19wYWdlX2dyb3VwLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisv
KioKKyAqIEBmaWxlICAgIGV3a19wYWdlX2dyb3VwLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0
aGUgRXdrIFBhZ2UgR3JvdXAgQVBJLgorICovCisKKyNpZm5kZWYgZXdrX3BhZ2VfZ3JvdXBfaAor
I2RlZmluZSBld2tfcGFnZV9ncm91cF9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8
RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8q
KgorICogRGVjbGFyZSBFd2tfUGFnZV9Hcm91cCBhcyBFd2tfT2JqZWN0LgorICoKKyAqIEBzZWUg
RXdrX09iamVjdAorICovCit0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX1BhZ2VfR3JvdXA7
CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBFd2tfUGFnZV9Hcm91cC4KKyAqCisgKiBUaGUgcmV0
dXJuZWQgRXdrX1BhZ2VfR3JvdXAgb2JqZWN0IEBiIHNob3VsZCBiZSB1bnJlZidlZCBhZnRlciB1
c2UuCisgKgorICogQHJldHVybiBFd2tfUGFnZV9Hcm91cCBvYmplY3Qgb24gc3VjY2VzcyBvciBA
YyBOVUxMIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19vYmplY3RfdW5yZWYKKyAqLworRUFQ
SSBFd2tfUGFnZV9Hcm91cCAqZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKGNvbnN0IGNoYXIgKmlkZW50
aWZpZXIpOworCisvKioKKyAqIEFkZHMgdGhlIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhpcyBwYWdl
IGdyb3VwLgorICoKKyAqIEBwYXJhbSBwYWdlX2dyb3VwIGV3a19wYWdlX2dvcnVwIG9iamVjdCB0
byBhZGQgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJhbSBzb3VyY2UgdGhlIHVzZXIgc3R5
bGUgc2hlZXQKKyAqIEBwYXJhbSB1cmwgYmFzZVVSTAorICogQHBhcmFtIHdoaXRlX2xpc3QgdXJs
IGxpc3QgdG8gYWxsb3cgYWRkaW5nIHRoZSB1c2VyIHN0eWxlIHNoZWV0CisgKiBAcGFyYW0gYmxh
Y2tfbGlzdCB1cmwgbGlzdCB0byBkaXNhbGxvdyBhZGRpbmcgdGhlIHVzZXIgc3R5bGUgc2hlZXQK
KyAqIEBwYXJhbSBtYWluX2ZyYW1lX29ubHkgYSBzdGF0ZSB0byBhcHBseSB0aGUgdXNlciBzdHls
ZSBzaGVldCBvbmx5IHRvIHRoZSBtYWluZnJhbWUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBpZiB0aGUgdXNlciBzdHlsZSBzaGVldCBpcyBhZGRlZCB0byB0aGUgcGFnZSBncm91cCwgb3IK
KyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wg
ZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQoRXdrX1BhZ2VfR3JvdXAgKnBhZ2Vf
Z3JvdXAsIGNvbnN0IGNoYXIgKnNvdXJjZSwgY29uc3QgY2hhciAqYmFzZV91cmwsIEVpbmFfTGlz
dCAqd2hpdGVfbGlzdCwgRWluYV9MaXN0ICpibGFja19saXN0LCBFaW5hX0Jvb2wgbWFpbl9mcmFt
ZV9vbmx5KTsKKworLyoqCisgKiBSZW1vdmUgYWxsIHRoZSB1c2VyIHN0eWxlIHNoZWV0cyBmcm9t
IHRoaXMgcGFnZSBncm91cC4KKyAqCisgKiBAcGFyYW0gcGFnZV9ncm91cCBwYWdlIGdyb3VwIG9i
amVjdCB0byByZW1vdmUgYWxsIHRoZSB1c2VyIHN0eWxlIHNoZWV0cworICoKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIGFsbCB0aGUgdXNlciBzdHlsZSBzaGVldCBhcmUgcmVtb3ZlZCBmcm9t
IHRoZSBwYWdlIGdyb3VwLCBvcgorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQor
ICovCitFQVBJIEVpbmFfQm9vbCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1v
dmVfYWxsKEV3a19QYWdlX0dyb3VwICpwYWdlX2dyb3VwKTsKKworI2lmZGVmIF9fY3BsdXNwbHVz
Cit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19wYWdlX2dyb3VwX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZTJlMmI2MjkwNzhiNzc3YTU1MWEwNzYzYzk5ZmEyZmFhM2NmMTI1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bh
Z2VfZ3JvdXBfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBld2tfcGFnZV9ncm91cF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfZ3Jv
dXBfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJld2tfb2JqZWN0X3ByaXZhdGUuaCIKKyNpbmNsdWRl
IDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitjbGFzcyBFd2tWaWV3
OworCitjbGFzcyBFd2tQYWdlR3JvdXAgOiBwdWJsaWMgRXdrT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICBFV0tfT0JKRUNUX0RFQ0xBUkUoRXdrUGFnZUdyb3VwKQorCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RXdrUGFnZUdyb3VwPiBjcmVhdGUoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorICAg
IHsKKyAgICAgICAgaWYgKCFwYWdlR3JvdXBSZWYpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEV3a1BhZ2VHcm91cChkZWZhdWx0SWRlbnRpZmllcikpOworCisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRXdrUGFnZUdyb3VwKHBhZ2VHcm91cFJlZikpOworICAgIH0KKworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEV3a1BhZ2VHcm91cD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciA9IFN0cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBF
d2tQYWdlR3JvdXAoaWRlbnRpZmllci5pc0VtcHR5KCkgPyBkZWZhdWx0SWRlbnRpZmllciA6IGlk
ZW50aWZpZXIpKTsKKyAgICB9CisKKyAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZUdyb3VwUmVmLmdldCgpOyB9CisKKyAgICB2b2lkIGFkZFVzZXJT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEVp
bmFfTGlzdCogd2hpdGVsaXN0LCBFaW5hX0xpc3QqIGJsYWNrbGlzdCwgYm9vbCBtYWluRnJhbWVP
bmx5KTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IEV3a1BhZ2VHcm91cChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpOwor
ICAgIGV4cGxpY2l0IEV3a1BhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOworCisg
ICAgc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdElkZW50aWZpZXJbXTsKKworICAgIFdLUmV0YWlu
UHRyPFdLUGFnZUdyb3VwUmVmPiBtX3BhZ2VHcm91cFJlZjsKK307CisKKyNlbmRpZiAvLyBld2tf
cGFnZV9ncm91cF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAppbmRleCA0ZjFhMTMxZDI1ZDc0MzU0ZGUwYmU5M2YxYmJiM2Q2OGY5NzE3
ZTNiLi43YWUxOGM3ZjM4ZWNkNWM3NTM5ZTNhYjM4OTBiYzhmMzNhZmYzNjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zNCw2ICszNCw4
IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2
YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgImV3a19wYWdlX2dyb3VwLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZh
dGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CkBAIC04Niw5ICs4OCw5IEBAIEVpbmFfQm9v
bCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAg
ICByZXR1cm4gRXdrVmlldzo6aW5pdFNtYXJ0Q2xhc3NJbnRlcmZhY2UoKmFwaSk7CiB9CiAKLUV2
YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBz
bWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCitFdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRf
YWRkKEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjb250ZXh0
LCBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwKQogewotICAgIHJldHVybiBFd2tWaWV3OjpjcmVh
dGVFdmFzT2JqZWN0KGNhbnZhcywgc21hcnQsIGV3a19vYmplY3RfY2FzdDxFd2tDb250ZXh0Kj4o
Y29udGV4dCkpOworICAgIHJldHVybiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywg
c21hcnQsIGV3a19vYmplY3RfY2FzdDxFd2tDb250ZXh0Kj4oY29udGV4dCksIGV3a19vYmplY3Rf
Y2FzdDxFd2tQYWdlR3JvdXAqPihwYWdlR3JvdXApKTsKIH0KIAogRXZhc19PYmplY3QqIGV3a192
aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29udGV4dCkK
QEAgLTEwOCw2ICsxMTAsMTMgQEAgRXdrX0NvbnRleHQqIGV3a192aWV3X2NvbnRleHRfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHJldHVybiBpbXBsLT5ld2tDb250ZXh0KCk7
CiB9CiAKK0V3a19QYWdlX0dyb3VwKiBld2tfdmlld19wYWdlX2dyb3VwX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdr
VmlldywgaW1wbCwgMCk7CisKKyAgICByZXR1cm4gaW1wbC0+ZXdrUGFnZUdyb3VwKCk7Cit9CisK
IEVpbmFfQm9vbCBld2tfdmlld191cmxfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBj
aGFyKiB1cmwpCiB7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGlt
cGwsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
CmluZGV4IDViOTIzYzQyYzY2YmVhYzFmYWUyNDQ3NWY2MjIzZmI2MmQyY2NkMTMuLmNkMGQzMTc2
M2NiMzA0YmZjMTkzZjIwNzZjYTJmZDFhNjkxN2JkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgImV3
a19jb250ZXh0X21lbnUuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVk
ZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKICNpbmNsdWRlICJl
d2tfcG9wdXBfbWVudS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKICNpbmNs
dWRlICJld2tfc2V0dGluZ3MuaCIKQEAgLTMxNiwxMCArMzE3LDExIEBAIEVBUEkgRWluYV9Cb29s
IGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpKTsKICAq
IEBwYXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUgdG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdAog
ICogQHBhcmFtIHNtYXJ0IEV2YXNfU21hcnQgb2JqZWN0LiBJdHMgdHlwZSBzaG91bGQgYmUgRVdL
X1ZJRVdfVFlQRV9TVFIKICAqIEBwYXJhbSBjb250ZXh0IEV3a19Db250ZXh0IG9iamVjdCB3aGlj
aCBpcyB1c2VkIGZvciBpbml0aWFsaXppbmcKKyAqIEBwYXJhbSBwYWdlR3JvdXAgRXdrX1BhZ2Vf
R3JvdXAgb2JqZWN0IHdoaWNoIGlzIHVzZWQgZm9yIGluaXRpYWxpemluZwogICoKICAqIEByZXR1
cm4gdmlldyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAqLwotRUFQ
SSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMgKmUsIEV2YXNfU21hcnQgKnNt
YXJ0LCBFd2tfQ29udGV4dCAqY29udGV4dCk7CitFQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld19z
bWFydF9hZGQoRXZhcyAqZSwgRXZhc19TbWFydCAqc21hcnQsIEV3a19Db250ZXh0ICpjb250ZXh0
LCBFd2tfUGFnZV9Hcm91cCAqcGFnZUdyb3VwKTsKIAogLyoqCiAgKiBDcmVhdGVzIGEgbmV3IEVG
TCBXZWJLaXQgdmlldyBvYmplY3QuCkBAIC0zNTAsNiArMzUyLDE1IEBAIEVBUEkgRXZhc19PYmpl
Y3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0NvbnRleHQgKmNvbnRl
eHQpOwogRUFQSSBFd2tfQ29udGV4dCAqZXdrX3ZpZXdfY29udGV4dF9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pOwogCiAvKioKKyAqIEdldHMgdGhlIEV3a19QYWdlX0dyb3VwIG9mIHRoaXMgdmll
dy4KKyAqCisgKiBAcGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBFd2tfUGFnZV9H
cm91cAorICoKKyAqIEByZXR1cm4gdGhlIEV3a19QYWdlX0dyb3VwIG9mIHRoaXMgdmlldyBvciBA
YyBOVUxMIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFd2tfUGFnZV9Hcm91cCAqZXdrX3ZpZXdfcGFn
ZV9ncm91cF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKICAqIEFza3MgdGhlIG9i
amVjdCB0byBsb2FkIHRoZSBnaXZlbiBVUkwuCiAgKgogICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gbG9hZCBAYSBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJh
c2UuY3BwCmluZGV4IGU2NGY0Y2M3NzUzNjIyZDc1ODQxZjgxNDY4OGVhNTJlYmZjNjUyNDEuLjZl
OGJhZTJkNzA2YTdiZTQzOWVkODk0M2IyNzE2NzJlYzFhMjliZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcApAQCAtNjEsMTEgKzYxLDE0IEBAIHZv
aWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQogICAgIEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZh
c19zbWFydF9jbGFzc19uZXcoJm1fZXdrVmlld0NsYXNzLnNjKTsKIAogICAgIEV3a19Db250ZXh0
KiBuZXdDb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3KCk7Ci0gICAgbV93ZWJWaWV3ID0gZXdrX3Zp
ZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBuZXdDb250ZXh0KTsKKyAgICBFd2tfUGFnZV9Hcm91
cCogbmV3UGFnZUdyb3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKCJVbml0VGVzdCIpOworICAg
IG1fd2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgbmV3Q29udGV4dCwg
bmV3UGFnZUdyb3VwKTsKKwogICAgIC8vIENsZWFyIEhUVFAgY2FjaGUgZmlsZXMgYmVmb3JlIHJ1
bm5pbmcgdGhlIHVuaXQgdGVzdHMsIHdoaWNoIHByZXZlbnRzIAogICAgIC8vIHBlcmZvcm1hbmNl
IGRlZ3JhZGF0aW9uIGR1ZSB0byBzbyBtYW55IGNhY2hlIGZpbGVzLgogICAgIGV3a19jb250ZXh0
X3Jlc291cmNlX2NhY2hlX2NsZWFyKG5ld0NvbnRleHQpOwogICAgIGV3a19vYmplY3RfdW5yZWYo
bmV3Q29udGV4dCk7CisgICAgZXdrX29iamVjdF91bnJlZihuZXdQYWdlR3JvdXApOwogCiAgICAg
ZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldywgZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAppbmRleCBi
ZDVlNGI5OTU4NWZkODlhNzc3YmEwN2M0MDFkMWNlZjMxOTNiODdhLi41OTI0YmU2NDFmY2Q3Y2Ji
NWE2NWZlOTEzM2VmYjMzODI3MDEzNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEJhc2UuaApAQCAtMzUsNiArMzUsNyBAQCBwdWJsaWM6CiAgICAgRWNvcmVfRXZh
cyogYmFja2luZ1N0b3JlKCkgeyByZXR1cm4gbV9lY29yZUV2YXM7IH0KICAgICBFdmFzKiBjYW52
YXMoKSB7IHJldHVybiBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcyk7IH0KICAgICBFdmFzX09i
amVjdCogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQorICAgIHZvaWQgc2V0V2ViVmll
dyhFdmFzX09iamVjdCogd2ViVmlldykgeyBtX3dlYlZpZXcgPSB3ZWJWaWV3OyB9CiAgICAgRXdr
X1ZpZXdfU21hcnRfQ2xhc3MqIGV3a1ZpZXdDbGFzcygpIHsgcmV0dXJuICZtX2V3a1ZpZXdDbGFz
czsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjVjYTU5NzcxN2IyNmNhNzRhZmM3OWUwY2Q1ZDU3ZGJjOWY2NWY3MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9w
YWdlX2dyb3VwLmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVz
dEJhc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0VGVzdDsKKworZXh0ZXJuIEVXSzJV
bml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsKKworc3RhdGljIGNvbnN0IGNoYXIgaHRt
bFN0cmluZ1tdID0gIjxodG1sPjxoZWFkPjx0aXRsZT5Gb288L3RpdGxlPjwvaGVhZD48Ym9keSBz
dHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkJz48c2NyaXB0PmRvY3VtZW50LnRpdGxlPXdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JhY2tncm91bmQtY29sb3InKTwvc2NyaXB0PkhFTExPPC9ib2R5PjwvaHRtbD4iOworc3RhdGlj
IGNvbnN0IGNoYXIgdXNlclN0eWxlU2hlZXRbXSA9ICJib2R5IHsgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW4gIWltcG9ydGFudDsgfSI7CitzdGF0aWMgY29uc3QgY2hhciBncmVlbkluUkdCW10gPSAi
cmdiKDAsIDEyOCwgMCkiOworc3RhdGljIGNvbnN0IGNoYXIgcmVkSW5SR0JbXSA9ICJyZ2IoMjU1
LCAwLCAwKSI7CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFnZV9ncm91cCkKK3sK
KyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmlld0Ns
YXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdlX2dy
b3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAgICBF
dmFzX09iamVjdCogbmV3V2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChjYW52YXMoKSwgc21h
cnQsIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCksIHBhZ2VHcm91cCk7CisgICAgc2V0V2ViVmll
dyhuZXdXZWJWaWV3KTsKKworICAgIEFTU0VSVF9FUShwYWdlR3JvdXAsIGV3a192aWV3X3BhZ2Vf
Z3JvdXBfZ2V0KG5ld1dlYlZpZXcpKTsKKyAgICBld2tfb2JqZWN0X3VucmVmKHBhZ2VHcm91cCk7
Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxl
X3NoZWV0X2FkZF9iZWZvcmVfY3JlYXRpbmdfdmlldykKK3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFy
dCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7CisgICAgRXdr
X1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgidGVzdCIpOwor
ICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNo
ZWV0IHRvIHRoZSBwYWdlIGdyb3VwIGJlZm9yZSBjcmVhdGluZyBhIHZpZXcuCisgICAgZXdrX3Bh
Z2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQocGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVldCwg
MCwgMCwgMCwgdHJ1ZSk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgd2ViIHZpZXcgd2l0aCB0aGlz
IHBhZ2UgZ3JvdXAuCisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcgPSBld2tfdmlld19zbWFy
dF9hZGQoY2FudmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpLCBwYWdlR3Jv
dXApOworICAgIHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBld2tfb2JqZWN0X3VucmVm
KHBhZ2VHcm91cCk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdlYlZpZXcoKSwgZW52aXJvbm1l
bnQtPmRlZmF1bHRUaGVtZSgpKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUod2ViVmlldygpLCBl
bnZpcm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5kZWZhdWx0SGVpZ2h0KCkp
OworICAgIGV2YXNfb2JqZWN0X3Nob3cod2ViVmlldygpKTsKKyAgICBldmFzX29iamVjdF9mb2N1
c19zZXQod2ViVmlldygpLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQo
d2ViVmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxU
aXRsZUNoYW5nZWRUbyhncmVlbkluUkdCKSk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNl
LCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZF9hZnRlcl9jcmVhdGluZ192aWV3
KQoreworICAgIC8vIEFkZCBhIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYWZ0
ZXIgY3JlYXRpbmcgYSB2aWV3LgorICAgIEV3a19QYWdlX0dyb3VwKiBwYWdlR3JvdXAgPSBld2tf
dmlld19wYWdlX2dyb3VwX2dldCh3ZWJWaWV3KCkpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91
cCk7CisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQocGFnZUdyb3VwLCB1
c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisKKyAgICBld2tfdmlld19odG1sX3N0cmlu
Z19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisgICAgQVNTRVJUX1RSVUUod2Fp
dFVudGlsVGl0bGVDaGFuZ2VkVG8oZ3JlZW5JblJHQikpOworfQorCitURVNUX0YoRVdLMlVuaXRU
ZXN0QmFzZSwgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbCkKK3sK
KyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmlld0Ns
YXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdlX2dy
b3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAgICAv
LyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3VwIGJlZm9yZSBjcmVhdGlu
ZyBhIHZpZXcuCisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQocGFnZUdy
b3VwLCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisKKyAgICAvLyBDcmVhdGUgYSBu
ZXcgd2ViIHZpZXcgd2l0aCB0aGlzIHBhZ2UgZ3JvdXAuCisgICAgRXZhc19PYmplY3QqIG5ld1dl
YlZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoY2FudmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9k
ZWZhdWx0X2dldCgpLCBwYWdlR3JvdXApOworICAgIHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisK
KyAgICBld2tfb2JqZWN0X3VucmVmKHBhZ2VHcm91cCk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0
KHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKKyAgICBldmFzX29iamVj
dF9yZXNpemUod2ViVmlldygpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25t
ZW50LT5kZWZhdWx0SGVpZ2h0KCkpOworICAgIGV2YXNfb2JqZWN0X3Nob3cod2ViVmlldygpKTsK
KyAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2ViVmlldygpLCB0cnVlKTsKKworICAgIGV3a192
aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKworICAg
IC8vIFJlbW92ZSBhbGwgdXNlciBzdHlsZSBzaGVldHMgaW4gdGhlIHBhZ2UgZ3JvdXAuCisgICAg
ZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbChld2tfdmlld19wYWdl
X2dyb3VwX2dldCh3ZWJWaWV3KCkpKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNo
YW5nZWRUbyhyZWRJblJHQikpOworCisgICAgLy8gQWRkIGEgdXNlciBzdHlsZSBzaGVldCB0byB0
aGUgcGFnZSBncm91cCBhZnRlciBjcmVhdGluZyBhIHZpZXcuCisgICAgcGFnZUdyb3VwID0gZXdr
X3ZpZXdfcGFnZV9ncm91cF9nZXQod2ViVmlldygpKTsKKyAgICBld2tfcGFnZV9ncm91cF91c2Vy
X3N0eWxlX3NoZWV0X2FkZChwYWdlR3JvdXAsIHVzZXJTdHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVl
KTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywg
MCwgMCk7CisKKyAgICAvLyBSZW1vdmUgYWxsIHVzZXIgc3R5bGUgc2hlZXRzIGluIHRoZSBwYWdl
IGdyb3VwLgorICAgIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3JlbW92ZV9hbGwo
ZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJUX1RSVUUod2Fp
dFVudGlsVGl0bGVDaGFuZ2VkVG8ocmVkSW5SR0IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRl
eCA5ZTIzZTVmZTMyODRlNjEwNWY3YTQxODlmYWEyMzhjYzY3ZDYzZGQyLi5lNDE4M2VlMjgzZTM5
MjI4MGEyNjY1ZDU4NDIyY2Q4MzFmYWMyYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC01NTcs
NiArNTU3LDEzIEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19jb250ZXh0X2dl
dCkKICAgICBBU1NFUlRfRVEoY29udGV4dCwgZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygp
KSk7CiB9CiAKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19wYWdlX2dyb3VwX2dl
dCkKK3sKKyAgICBFd2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3ZpZXdfcGFnZV9ncm91
cF9nZXQod2ViVmlldygpKTsKKyAgICBBU1NFUlRfVFJVRShwYWdlR3JvdXApOworICAgIEFTU0VS
VF9FUShwYWdlR3JvdXAsIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSkpOworfQor
CiBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudCkKIHsK
ICAgICBFaW5hX0xpc3QqIHBvaW50cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4IGZhMmUwOGQ2MTBhZWZk
N2FkYzQzZjFhZDY5ZGZhYzhlMjk1M2NhNTIuLmQ3NTgwMDFlNjkyMzM1YTU0NDViNmJmN2E0Y2Y5
MTYxY2YzZGNiYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXdr
Vmlldy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgImV3a19jb250
ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5j
bHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0VmbEluc3BlY3RvclV0aWxpdGllcy5oPgpAQCAtMTAwLDcgKzEwMSw4IEBAIFdlYlBh
Z2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgp
CiAKICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdG8gdXNlIFdLVmlld1JlZi4KICAgICBXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiA9IHRvQVBJKHBhZ2UoKS0+cHJvY2VzcygpLT5jb250ZXh0KCkpOwot
ICAgIG1faW5zcGVjdG9yVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoZWNvcmVfZXZh
c19nZXQobV9pbnNwZWN0b3JXaW5kb3cpLCBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiks
IHRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSwgRXdrVmlldzo6TGVnYWN5QmVoYXZpb3IpOwor
ICAgIG1faW5zcGVjdG9yVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoZWNvcmVfZXZh
c19nZXQobV9pbnNwZWN0b3JXaW5kb3cpLCBFd2tDb250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiks
IEV3a1BhZ2VHcm91cDo6Y3JlYXRlKHRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSksIEV3a1Zp
ZXc6OkxlZ2FjeUJlaGF2aW9yKTsKKwogICAgIGlmICghbV9pbnNwZWN0b3JWaWV3KQogICAgICAg
ICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDYzODYyMDJlODIxZjI1MWY0OTZmZmMyOGY5MGU1MTYxMzU4MDdlZTQuLjk5MTVh
MzkzM2FkMzEzNjkwYmNkZGMyY2I3ZjU2OWYyODQ4NTdiNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0w
NSAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgYW4gQVBJIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHVzZXIgc3R5bGUgc2hl
ZXRzIGZyb20gYSBwYWdlIGdyb3VwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTA3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVc2UgdGhlIHBhZ2UgZ3JvdXAgdG8gY3JlYXRlIHRoZSB2aWV3IG9iamVj
dC4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAgICAgICh3aW5kb3df
Y3JlYXRlKToKKwogMjAxMy0wMy0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBTb21lIHBlcmYuIHRlc3RzIGhhdmUgdmFyaWFuY2VzIHRoYXQgZGlmZmVyIGdy
ZWF0bHkgYmV0d2VlbiBydW5zCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFp
bi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwppbmRleCBjZTgxNmVlYThlMmFhNzdh
ZTNkM2I2MDc1NzM2Y2Q5ODExZTFjNDM5Li4wNjNkNDJmZTcxNzk1YTA3Njg4MjA5ODM2OWYwYTcz
OTA2ZDk5YWE2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKQEAgLTExODcsOCArMTE4Nyw5IEBAIHN0YXRp
YyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqb3BlbmVyLCBjb25z
dCBjaGFyICp1cmwsIGludCB3CiAgICAgICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSAoRXZhc19PYmpl
Y3QqKVdLVmlld0NyZWF0ZShldmFzLCAwLCAwKTsKICAgICB9IGVsc2UgewogICAgICAgICBFdmFz
X1NtYXJ0ICpzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZld2tWaWV3Q2xhc3MtPnNjKTsK
LSAgICAgICAgRXdrX0NvbnRleHQqIGNvbnRleHQgPSBvcGVuZXIgPyBld2tfdmlld19jb250ZXh0
X2dldChvcGVuZXIpIDogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKLSAgICAgICAgd2luZG93
LT5ld2tfdmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgY29udGV4dCk7Cisg
ICAgICAgIEV3a19Db250ZXh0ICpjb250ZXh0ID0gb3BlbmVyID8gZXdrX3ZpZXdfY29udGV4dF9n
ZXQob3BlbmVyKSA6IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CisgICAgICAgIEV3a19QYWdl
X0dyb3VwICpwYWdlR3JvdXAgPSBvcGVuZXIgPyBld2tfdmlld19wYWdlX2dyb3VwX2dldChvcGVu
ZXIpIDogZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKCIiKTsKKyAgICAgICAgd2luZG93LT5ld2tfdmll
dyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgY29udGV4dCwgcGFnZUdyb3VwKTsK
ICAgICB9CiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIFRIRU1FX0RJ
UiAiL2RlZmF1bHQuZWRqIik7CiAgICAgaWYgKGRldmljZV9waXhlbF9yYXRpbykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193096</attachid>
            <date>2013-03-14 03:02:04 -0700</date>
            <delta_ts>2013-03-15 06:08:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110728-20130314185759.patch</filename>
            <type>text/plain</type>
            <size>41132</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDY3NjIyMTZlNWFlOGFj
N2MyZTcwOTQxODA1ZGZlYmRlOWY4ZDdkYi4uOTI1Yzg3MDI5MThkYjllM2E3Nzk0NjUzZmU0ZDMw
M2JhMDg3NjMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAzLTE0ICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEFkZCBhbiBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJv
bSBhIHBhZ2UgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgRXdrUGFnZUdyb3VwIEFQSSB0byBwcm92aWRlIHRo
ZSBpbnRlcmZhY2Ugb2YgV0tQYWdlR3JvdXAuIFVzaW5nIHRoZSBFd2tQYWdlR3JvdXAsCisgICAg
ICAgIGFwcGxpY2F0aW9ucyBtYXkgY3JlYXRlIHRoZSB2aWV3cyB3aXRoIGEgcGFnZSBncm91cCBm
b3IgdGhlIHNwZWNpZmljIGlkZW50aWZpZXIuIEFsc28sIHRoaXMgcGF0Y2gKKyAgICAgICAgZW5j
YXBzdWxhdGVzIHRoZSBBUElzIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQgYW5kIFdLUGFn
ZUdyb3VwUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzIGJlaGluZAorICAgICAgICB0aGUgRXdrUGFn
ZUdyb3VwIGNsYXNzIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHVzZXIgc3R5bGUgc2hlZXRzIGZy
b20gYSBwYWdlIGdyb3VwLiBXS0FycmF5Q3JlYXRlV2l0aEVpbmFMaXN0KCkKKyAgICAgICAgaXMg
YWRkZWQgYXMgYSBnZW5lcmljIFdLQXJyYXkgY3JlYXRpb24gQVBJIGZyb20gRWluYV9MaXN0Lgor
CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoY3JlYXRlV0tWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6CisgICAgICAgIChFd2tWaWV3
OjpjcmVhdGVFdmFzT2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
Lmg6CisgICAgICAgIChFd2tWaWV3Ojpld2tQYWdlR3JvdXApOgorICAgICAgICAoRXdrVmlldyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdr
X3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHA6CisgICAg
ICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OlNldFVwKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaDoK
KyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6c2V0V2ViVmlldyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAg
ICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSk6CisKIDIwMTMtMDMtMTIgIENocmlzdG9waGUgRHVtZXogIDxjaC5k
dW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gZXdrX3BvcHVwX21l
bnVfY2xvc2UoKSBkb2VzIG5vdCB3b3JrIGFzIGludGVuZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IDhmNmI5YmEyZjM4ODVkZWUzMGZiNjUyNTkzNmI1NDU4NWYxNWM5NGQuLjc4NGRj
ZDI2NjY4NTVkYzQwNmEwZTBhMzc5ZWU1ZjYyNzkxZDAzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC0xMiw2ICsxMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAKIAogICAgIFNoYXJlZC9B
UEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisgICAgU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5
RWZsLmNwcAogCiAgICAgU2hhcmVkL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRTb3VwRXJyb3JzRWZs
LmNwcAogICAgIFNoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCkBAIC03MCw2
ICs3MSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19uYXZpZ2F0aW9uX2RhdGEuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19v
YmplY3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2Vj
dXJpdHlfb3JpZ2luLmNwcApAQCAtMTY3LDYgKzE2OSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIKICAgICAi
JHtXRUJDT1JFX0RJUn0vc3ZnL2dyYXBoaWNzIgorICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQv
QVBJL2MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvRG93bmxvYWRzL3NvdXAiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJl
ZC9zb3VwIgpAQCAtMjg2LDYgKzI4OSw3IEBAIHNldChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZmF2aWNvbl9k
YXRhYmFzZS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Qu
aCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19wYWdlX2dyb3VwLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfbWFpbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5
X2RlY2lzaW9uLmgiCkBAIC0zODcsNiArMzkxLDcgQEAgc2V0KEVXSzJVbml0VGVzdHNfQklOQVJJ
RVMKICAgICB0ZXN0X2V3azJfZmF2aWNvbl9kYXRhYmFzZQogICAgIHRlc3RfZXdrMl9maWxlX2No
b29zZXJfcmVxdWVzdAogICAgIHRlc3RfZXdrMl9vYmplY3QKKyAgICB0ZXN0X2V3azJfcGFnZV9n
cm91cAogICAgIHRlc3RfZXdrMl9wb3B1cF9tZW51CiAgICAgdGVzdF9ld2syX3JlZnB0cl9ldmFz
X29iamVjdAogICAgIHRlc3RfZXdrMl9zZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc3OGE5OWU4YjhhMzJmZjA2
OTE5OTcwNGQ5ZjY0OThkN2FkOGQwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tBcnJheUVm
bC5oIgorCisjaW5jbHVkZSAiV0tBcnJheS5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5j
bHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLQXJyYXlSZWYg
V0tBcnJheUNyZWF0ZVdpdGhFaW5hTGlzdChFaW5hX0xpc3QqIGFycmF5LCBXS1R5cGVSZWYgKCpj
cmVhdGVXS1R5cGUpKHZvaWQqKSkKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IGVpbmFfbGlzdF9j
b3VudChhcnJheSk7CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuIFdLQXJyYXlSZWYo
KTsKKworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHZlY3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBFaW5hX0xpc3QqIGwgPSAwOworICAgIHZvaWQq
IGRhdGEgPSAwOworICAgIEVJTkFfTElTVF9GT1JFQUNIKGFycmF5LCBsLCBkYXRhKQorICAgICAg
ICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKGNyZWF0ZVdLVHlwZShkYXRhKSk7CisKKyAgICByZXR1
cm4gV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKHZlY3Rvci5kYXRhKCksIGNvdW50KTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0FycmF5RWZsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmQ0YjlhNTdiYWE0YmY3OGExOWEwYzAyMDJiNTgyNDhjMDFiMzg5NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tBcnJheUVmbC5oCkBAIC0w
LDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0FycmF5RWZsX2gK
KyNkZWZpbmUgV0tBcnJheUVmbF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisv
KioKKyAqIEB0eXBlZGVmIEVpbmFfTGlzdAorICogVHlwZSBmb3IgYSBnZW5lcmljIGRvdWJsZSBs
aW5rZWQgbGlzdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0VpbmFfTGlzdCBFaW5hX0xpc3Q7CisK
K1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGVXaXRoRWluYUxpc3QoRWluYV9MaXN0
KiwgV0tUeXBlUmVmICgqY3JlYXRlV0tUeXBlKSh2b2lkKikpOworCisjZW5kaWYgLy8gV0tBcnJh
eUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAK
aW5kZXggOWRkNjkxMTE3OWJkZTVhMzcyZGI5YmU0NTdkNWYwY2JmMTYxZDdiYi4uZGNkM2UyYzg1
YzJjOGY3ZmJhYTRjNDllNDM5YWYzYzZiZjJlNmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IkV3a1ZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBA
IC0zMSw3ICszMiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBzdGF0aWMgaW5saW5lIFdL
Vmlld1JlZiBjcmVhdGVXS1ZpZXcoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBFd2tWaWV3OjpWaWV3QmVoYXZpb3IgYmVo
YXZpb3IpCiB7CiAgICAgUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQgPSBjb250ZXh0UmVmID8g
RXdrQ29udGV4dDo6ZmluZE9yQ3JlYXRlV3JhcHBlcihjb250ZXh0UmVmKSA6IEV3a0NvbnRleHQ6
OmRlZmF1bHRDb250ZXh0KCk7Ci0gICAgRXZhc19PYmplY3QqIGV2YXNPYmplY3QgPSBFd2tWaWV3
OjpjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgY29udGV4dCwgcGFnZUdyb3VwUmVmLCBiZWhhdmlv
cik7CisgICAgUmVmUHRyPEV3a1BhZ2VHcm91cD4gcGFnZUdyb3VwID0gRXdrUGFnZUdyb3VwOjpj
cmVhdGUocGFnZUdyb3VwUmVmKTsKKyAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCA9IEV3a1Zp
ZXc6OmNyZWF0ZUV2YXNPYmplY3QoY2FudmFzLCBjb250ZXh0LCBwYWdlR3JvdXAsIGJlaGF2aW9y
KTsKICAgICBpZiAoIWV2YXNPYmplY3QpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCAzYTI4NjVlZTc5MzFlNWQx
ZDRkMzBkZmU1MDA5NmY3NGNmNGZkZDUzLi5hOWM4YTE0ZTc4YjFmZWU2OTE5NTljZDJjYjcyYTUw
NWVmZGJlNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQy
LmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAj
aW5jbHVkZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAjaW5jbHVkZSAiZXdr
X29iamVjdC5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwLmgiCiAjaW5jbHVkZSAiZXdrX3Bv
cHVwX21lbnUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAi
ZXdrX3NlY3VyaXR5X29yaWdpbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmNwcAppbmRleCAwN2Q3MjY2Yjg0ZjlhZmUwNWNiOTE2OGFiZGMyMDM1NWE1YWFj
MjFhLi5jZTdkNmFjOTFlM2JiMzQxMDJhMmQ3YTZkM2EyNTQxMWMzZjMxOTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtNTMsNiArNTMsNyBA
QAogI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19j
b250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19w
b3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgpAQCAtMjI4LDExICsyMjksMTIgQEAgdm9p
ZCBFd2tWaWV3RXZlbnRIYW5kbGVyPEVWQVNfQ0FMTEJBQ0tfSElERT46OmhhbmRsZUV2ZW50KHZv
aWQqIGRhdGEsIEV2YXMqLCBFdmEKIAogLy8gRXdrVmlldyBpbXBsZW1lbnRhdGlvbi4KIAotRXdr
Vmlldzo6RXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250
ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvciBiZWhh
dmlvcikKK0V3a1ZpZXc6OkV3a1ZpZXcoRXZhc19PYmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQ
dHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91
cCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQogICAgIDogbV9ldmFzT2JqZWN0KGV2YXNPYmplY3Qp
CiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcGFnZUdyb3VwKHBhZ2VHcm91cCkK
ICAgICAsIG1fcGVuZGluZ1N1cmZhY2VSZXNpemUoZmFsc2UpCi0gICAgLCBtX3dlYlZpZXcoYWRv
cHRSZWYobmV3IFdlYlZpZXcodG9JbXBsKG1fY29udGV4dC0+d2tDb250ZXh0KCkpLCB0b0ltcGwo
cGFnZUdyb3VwKSwgdGhpcykpKQorICAgICwgbV93ZWJWaWV3KGFkb3B0UmVmKG5ldyBXZWJWaWV3
KHRvSW1wbChtX2NvbnRleHQtPndrQ29udGV4dCgpKSwgdG9JbXBsKG1fcGFnZUdyb3VwLT53a1Bh
Z2VHcm91cCgpKSwgdGhpcykpKQogICAgICwgbV9wYWdlTG9hZENsaWVudChQYWdlTG9hZENsaWVu
dEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9wYWdlUG9saWN5Q2xpZW50KFBhZ2VQb2xpY3lD
bGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcGFnZVVJQ2xpZW50KFBhZ2VVSUNsaWVu
dEVmbDo6Y3JlYXRlKHRoaXMpKQpAQCAtMzA0LDcgKzMwNiw3IEBAIEV3a1ZpZXc6On5Fd2tWaWV3
KCkKICAgICBpY29uRGF0YWJhc2UtPnVud2F0Y2hDaGFuZ2VzKEV3a1ZpZXc6OmhhbmRsZUZhdmlj
b25DaGFuZ2VkKTsKIH0KIAotRXZhc19PYmplY3QqIEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3Qo
RXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBj
b250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFZpZXdCZWhhdmlvciBiZWhhdmlv
cikKK0V2YXNfT2JqZWN0KiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KEV2YXMqIGNhbnZhcywg
RXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzc1Jl
ZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQogewog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydCwgMCk7CkBAIC0zMjEsMTUgKzMyMywxNCBA
QCBFdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIEV2
YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUAogCiAgICAgQVNTRVJUKCFzbWFydERhdGEtPnByaXYp
OwogCi0gICAgLy8gRGVmYXVsdCBXZWJQYWdlR3JvdXAgaXMgY3JlYXRlZCBpbiBXZWJDb250ZXh0
IGNvbnN0cnVjdG9yIGlmIHRoZSBwYWdlR3JvdXBSZWYgaXMgMCwKLSAgICAvLyBzbyB3ZSBkbyBu
b3QgbmVlZCB0byBjcmVhdGUgaXQgaGVyZS4KLSAgICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdr
VmlldyhldmFzT2JqZWN0LCBjb250ZXh0LCBwYWdlR3JvdXBSZWYsIGJlaGF2aW9yKTsKKyAgICBz
bWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlldyhldmFzT2JqZWN0LCBjb250ZXh0LCAocGFnZUdy
b3VwID8gcGFnZUdyb3VwIDogRXdrUGFnZUdyb3VwOjpjcmVhdGUoKSksIGJlaGF2aW9yKTsKKwog
ICAgIHJldHVybiBldmFzT2JqZWN0OwogfQogCi1FdmFzX09iamVjdCogRXdrVmlldzo6Y3JlYXRl
RXZhc09iamVjdChFdmFzKiBjYW52YXMsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwg
V0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBWaWV3QmVoYXZpb3IgYmVoYXZpb3IpCitFdmFz
X09iamVjdCogRXdrVmlldzo6Y3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIFBhc3NSZWZQ
dHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91
cCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yKQogewotICAgIHJldHVybiBjcmVhdGVFdmFzT2JqZWN0
KGNhbnZhcywgZGVmYXVsdFNtYXJ0Q2xhc3NJbnN0YW5jZSgpLCBjb250ZXh0LCBwYWdlR3JvdXBS
ZWYsIGJlaGF2aW9yKTsKKyAgICByZXR1cm4gY3JlYXRlRXZhc09iamVjdChjYW52YXMsIGRlZmF1
bHRTbWFydENsYXNzSW5zdGFuY2UoKSwgY29udGV4dCwgcGFnZUdyb3VwLCBiZWhhdmlvcik7CiB9
CiAKIGJvb2wgRXdrVmlldzo6aW5pdFNtYXJ0Q2xhc3NJbnRlcmZhY2UoRXdrX1ZpZXdfU21hcnRf
Q2xhc3MmIGFwaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApp
bmRleCBhNmI1NzA5OGRjYWZjYjFiNDBlMGExYTE0ODg2ZmZiNjk4Y2FlNDdhLi5jM2RmNzYwOTlm
OTRjYjFiMTI1MTgwZjdmN2I0N2Y4YzgxNzlhZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5oCkBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIEV3a0NvbnRleHQ7
CiBjbGFzcyBFd2tCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBFd2tDb2xvclBpY2tlcjsKIGNsYXNz
IEV3a0NvbnRleHRNZW51OworY2xhc3MgRXdrUGFnZUdyb3VwOwogY2xhc3MgRXdrUG9wdXBNZW51
OwogY2xhc3MgRXdrU2V0dGluZ3M7CiBjbGFzcyBFd2tXaW5kb3dGZWF0dXJlczsKQEAgLTEwNiw4
ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgICAgIERlZmF1bHRCZWhhdmlvcgogICAgIH07CiAKLSAg
ICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZUV2YXNPYmplY3QoRXZhcyogY2FudmFzLCBFdmFz
X1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCAgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmID0gMCwgVmlld0JlaGF2aW9yIGJlaGF2aW9yID0gRXdrVmlldzo6
RGVmYXVsdEJlaGF2aW9yKTsKLSAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZUV2YXNPYmpl
Y3QoRXZhcyogY2FudmFzLCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZiA9IDAsIFZpZXdCZWhhdmlvciBiZWhhdmlvciA9IEV3a1ZpZXc6
OkRlZmF1bHRCZWhhdmlvcik7CisgICAgc3RhdGljIEV2YXNfT2JqZWN0KiBjcmVhdGVFdmFzT2Jq
ZWN0KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrQ29udGV4
dD4gY29udGV4dCwgIFBhc3NSZWZQdHI8RXdrUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSAwLCBWaWV3
QmVoYXZpb3IgYmVoYXZpb3IgPSBFd2tWaWV3OjpEZWZhdWx0QmVoYXZpb3IpOworICAgIHN0YXRp
YyBFdmFzX09iamVjdCogY3JlYXRlRXZhc09iamVjdChFdmFzKiBjYW52YXMsIFBhc3NSZWZQdHI8
RXdrQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCA9
IDAsIFZpZXdCZWhhdmlvciBiZWhhdmlvciA9IEV3a1ZpZXc6OkRlZmF1bHRCZWhhdmlvcik7CiAK
ICAgICBzdGF0aWMgYm9vbCBpbml0U21hcnRDbGFzc0ludGVyZmFjZShFd2tfVmlld19TbWFydF9D
bGFzcyYpOwogCkBAIC0xMjAsNiArMTIxLDcgQEAgcHVibGljOgogCiAgICAgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBtX3dlYlZpZXctPnBhZ2UoKTsgfQogICAgIEV3a0Nv
bnRleHQqIGV3a0NvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBFd2tQ
YWdlR3JvdXAqIGV3a1BhZ2VHcm91cCgpIHsgcmV0dXJuIG1fcGFnZUdyb3VwLmdldCgpOyB9CiAg
ICAgRXdrU2V0dGluZ3MqIHNldHRpbmdzKCkgeyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQog
ICAgIEV3a0JhY2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0KCkgeyByZXR1cm4gbV9iYWNr
Rm9yd2FyZExpc3QuZ2V0KCk7IH0KICAgICBFd2tXaW5kb3dGZWF0dXJlcyogd2luZG93RmVhdHVy
ZXMoKTsKQEAgLTIxMiw3ICsyMTQsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IHRha2VTbmFwc2hvdCgpOwogCiBwcml2YXRlOgotICAgIEV3a1ZpZXcoRXZhc19P
YmplY3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwLCBWaWV3QmVoYXZpb3IpOworICAgIEV3a1ZpZXcoRXZhc19PYmpl
Y3QqIGV2YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0
cjxFd2tQYWdlR3JvdXA+IHBhZ2VHcm91cCwgVmlld0JlaGF2aW9yKTsKICAgICB+RXdrVmlldygp
OwogCiAgICAgdm9pZCBzZXREZXZpY2VTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKQEAg
LTI1Miw2ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIC8vIE5vdGUsIGluaXRpYWxpemF0aW9uIG9y
ZGVyIG1hdHRlcnMuCiAgICAgRXZhc19PYmplY3QqIG1fZXZhc09iamVjdDsKICAgICBSZWZQdHI8
RXdrQ29udGV4dD4gbV9jb250ZXh0OworICAgIFJlZlB0cjxFd2tQYWdlR3JvdXA+IG1fcGFnZUdy
b3VwOwogICAgIE93blB0cjxFdmFzX0dMPiBtX2V2YXNHTDsKICAgICBPd25QdHI8V2ViS2l0OjpF
dmFzR0xDb250ZXh0PiBtX2V2YXNHTENvbnRleHQ7CiAgICAgT3duUHRyPFdlYktpdDo6RXZhc0dM
U3VyZmFjZT4gbV9ldmFzR0xTdXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMjM4ZTRjZmUxZWYx
ODhmMDJlODYyMjQzMDZkNDhjMjRiNzRjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFnZV9ncm91cC5jcHAKQEAgLTAsMCArMSw5NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
ZXdrX3BhZ2VfZ3JvdXAuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
QXJyYXkuaCIKKyNpbmNsdWRlICJXS0FycmF5RWZsLmgiCisjaW5jbHVkZSAiV0tQYWdlR3JvdXAu
aCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwX3ByaXZh
dGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworY29uc3QgY2hhciBFd2tQYWdlR3Jv
dXA6OmRlZmF1bHRJZGVudGlmaWVyW10gPSAiZGVmYXVsdFBhZ2VHcm91cElkZW50aWZpZXIiOwor
CitzdGF0aWMgV0tUeXBlUmVmIGNvbnZlcnRGcm9tQ2hhclRvV0tTdHJpbmcodm9pZCogZGF0YSkK
K3sKKyAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RhdGljX2Nhc3Q8
Y2hhcio+KGRhdGEpKTsKK30KKworRXdrUGFnZUdyb3VwOjpFd2tQYWdlR3JvdXAoV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmKQorICAgIDogbV9wYWdlR3JvdXBSZWYocGFnZUdyb3VwUmVmKQor
eworfQorCitFd2tQYWdlR3JvdXA6OkV3a1BhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIpCit7CisgICAgbV9wYWdlR3JvdXBSZWYgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0
aElkZW50aWZpZXIoYWRvcHRXSyh0b0NvcGllZEFQSShpZGVudGlmaWVyKSkuZ2V0KCkpKTsKK30K
Kwordm9pZCBFd2tQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEVpbmFfTGlzdCogd2hpdGVMaXN0LCBFaW5hX0xp
c3QqIGJsYWNrTGlzdCwgYm9vbCBtYWluRnJhbWVPbmx5KQoreworICAgIEFTU0VSVChzb3VyY2Up
OworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrU291cmNlID0gYWRvcHRXSyh0b0Nv
cGllZEFQSShzb3VyY2UpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tCYXNlVVJMID0g
YWRvcHRXSyh0b0NvcGllZFVSTEFQSShiYXNlVVJMKSk7CisgICAgV0tSZXRhaW5QdHI8V0tBcnJh
eVJlZj4gd2tXaGl0ZWxpc3QgPSBhZG9wdFdLKFdLQXJyYXlDcmVhdGVXaXRoRWluYUxpc3Qod2hp
dGVMaXN0LCBjb252ZXJ0RnJvbUNoYXJUb1dLU3RyaW5nKSk7CisgICAgV0tSZXRhaW5QdHI8V0tB
cnJheVJlZj4gd2tCbGFja2xpc3QgPSBhZG9wdFdLKFdLQXJyYXlDcmVhdGVXaXRoRWluYUxpc3Qo
YmxhY2tMaXN0LCBjb252ZXJ0RnJvbUNoYXJUb1dLU3RyaW5nKSk7CisgICAgV0tVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzID0gbWFpbkZyYW1lT25seSA/IGtXS0luamVj
dEluVG9wRnJhbWVPbmx5IDoga1dLSW5qZWN0SW5BbGxGcmFtZXM7CisKKyAgICBXS1BhZ2VHcm91
cEFkZFVzZXJTdHlsZVNoZWV0KG1fcGFnZUdyb3VwUmVmLmdldCgpLCB3a1NvdXJjZS5nZXQoKSwg
d2tCYXNlVVJMLmdldCgpLCB3a1doaXRlbGlzdC5nZXQoKSwgd2tCbGFja2xpc3QuZ2V0KCksIGlu
amVjdGVkRnJhbWVzKTsKK30KKwordm9pZCBFd2tQYWdlR3JvdXA6OnJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cygpCit7CisgICAgV0tQYWdlR3JvdXBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMobV9w
YWdlR3JvdXBSZWYuZ2V0KCkpOworfQorCitFd2tfUGFnZV9Hcm91cCogZXdrX3BhZ2VfZ3JvdXBf
Y3JlYXRlKGNvbnN0IGNoYXIqIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIEV3a1BhZ2VHcm91
cDo6Y3JlYXRlKGlkZW50aWZpZXIpLmxlYWtSZWYoKTsKK30KKworRWluYV9Cb29sIGV3a19wYWdl
X2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRfYWRkKEV3a19QYWdlX0dyb3VwKiBld2tQYWdlR3JvdXAs
IGNvbnN0IGNoYXIqIHNvdXJjZSwgY29uc3QgY2hhciogYmFzZVVSTCwgRWluYV9MaXN0KiB3aGl0
ZUxpc3QsIEVpbmFfTGlzdCogYmxhY2tMaXN0LCBFaW5hX0Jvb2wgbWFpbkZyYW1lT25seSkKK3sK
KyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihFd2tQYWdlR3JvdXAsIGV3a1BhZ2VHcm91
cCwgaW1wbCwgZmFsc2UpOworCisgICAgaW1wbC0+YWRkVXNlclN0eWxlU2hlZXQoc291cmNlLCBi
YXNlVVJMLCB3aGl0ZUxpc3QsIGJsYWNrTGlzdCwgbWFpbkZyYW1lT25seSk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRz
X3JlbW92ZV9hbGwoRXdrX1BhZ2VfR3JvdXAqIGV3a1BhZ2VHcm91cCkKK3sKKyAgICBFV0tfT0JK
X0dFVF9JTVBMX09SX1JFVFVSTihFd2tQYWdlR3JvdXAsIGV3a1BhZ2VHcm91cCwgaW1wbCwgZmFs
c2UpOworCisgICAgaW1wbC0+cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19wYWdlX2dyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
cGFnZV9ncm91cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNWVkYjAzOWY5NWVjNzU3M2JkMDliM2RhYzkzNGJj
YzVhZDE2NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcGFnZV9ncm91cC5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLyoqCisgKiBAZmlsZSAgICBld2tfcGFnZV9ncm91cC5oCisgKiBAYnJpZWYgICBEZXNj
cmliZXMgdGhlIEV3ayBQYWdlIEdyb3VwIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19wYWdlX2dy
b3VwX2gKKyNkZWZpbmUgZXdrX3BhZ2VfZ3JvdXBfaAorCisjaW5jbHVkZSA8RWluYS5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogRGVjbGFy
ZSBFd2tfUGFnZV9Hcm91cCBhcyBFd2tfT2JqZWN0LgorICoKKyAqIEBzZWUgRXdrX09iamVjdAor
ICovCit0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX1BhZ2VfR3JvdXA7CisKKy8qKgorICog
Q3JlYXRlcyBhIG5ldyBFd2tfUGFnZV9Hcm91cC4KKyAqCisgKiBUaGUgcmV0dXJuZWQgRXdrX1Bh
Z2VfR3JvdXAgb2JqZWN0IEBiIHNob3VsZCBiZSB1bnJlZidlZCBhZnRlciB1c2UuCisgKgorICog
QHJldHVybiBFd2tfUGFnZV9Hcm91cCBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZh
aWx1cmUKKyAqCisgKiBAc2VlIGV3a19vYmplY3RfdW5yZWYKKyAqLworRUFQSSBFd2tfUGFnZV9H
cm91cCAqZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKGNvbnN0IGNoYXIgKmlkZW50aWZpZXIpOworCisv
KioKKyAqIEFkZHMgdGhlIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhpcyBwYWdlIGdyb3VwLgorICoK
KyAqIEBwYXJhbSBwYWdlX2dyb3VwIGV3a19wYWdlX2dvcnVwIG9iamVjdCB0byBhZGQgdGhlIHVz
ZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJhbSBzb3VyY2UgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAq
IEBwYXJhbSB1cmwgYmFzZVVSTAorICogQHBhcmFtIHdoaXRlX2xpc3QgdXJsIGxpc3QgdG8gYWxs
b3cgYWRkaW5nIHRoZSB1c2VyIHN0eWxlIHNoZWV0CisgKiBAcGFyYW0gYmxhY2tfbGlzdCB1cmwg
bGlzdCB0byBkaXNhbGxvdyBhZGRpbmcgdGhlIHVzZXIgc3R5bGUgc2hlZXQKKyAqIEBwYXJhbSBt
YWluX2ZyYW1lX29ubHkgYSBzdGF0ZSB0byBhcHBseSB0aGUgdXNlciBzdHlsZSBzaGVldCBvbmx5
IHRvIHRoZSBtYWluZnJhbWUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgdXNl
ciBzdHlsZSBzaGVldCBpcyBhZGRlZCB0byB0aGUgcGFnZSBncm91cCwgb3IKKyAqICAgICAgICAg
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3BhZ2VfZ3Jv
dXBfdXNlcl9zdHlsZV9zaGVldF9hZGQoRXdrX1BhZ2VfR3JvdXAgKnBhZ2VfZ3JvdXAsIGNvbnN0
IGNoYXIgKnNvdXJjZSwgY29uc3QgY2hhciAqYmFzZV91cmwsIEVpbmFfTGlzdCAqd2hpdGVfbGlz
dCwgRWluYV9MaXN0ICpibGFja19saXN0LCBFaW5hX0Jvb2wgbWFpbl9mcmFtZV9vbmx5KTsKKwor
LyoqCisgKiBSZW1vdmUgYWxsIHRoZSB1c2VyIHN0eWxlIHNoZWV0cyBmcm9tIHRoaXMgcGFnZSBn
cm91cC4KKyAqCisgKiBAcGFyYW0gcGFnZV9ncm91cCBwYWdlIGdyb3VwIG9iamVjdCB0byByZW1v
dmUgYWxsIHRoZSB1c2VyIHN0eWxlIHNoZWV0cworICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIGFsbCB0aGUgdXNlciBzdHlsZSBzaGVldCBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwYWdlIGdy
b3VwLCBvcgorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVp
bmFfQm9vbCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0c19yZW1vdmVfYWxsKEV3a19Q
YWdlX0dyb3VwICpwYWdlX2dyb3VwKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmIC8vIGV3a19wYWdlX2dyb3VwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwX3ByaXZhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZTJlMmI2MjkwNzhiNzc3YTU1MWEwNzYzYzk5ZmEyZmFhM2NmMTI1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXBfcHJp
dmF0ZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3Vu
ZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBl
d2tfcGFnZV9ncm91cF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZV9o
CisKKyNpbmNsdWRlICJld2tfb2JqZWN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFdmFzLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitjbGFzcyBFd2tWaWV3OworCitjbGFzcyBF
d2tQYWdlR3JvdXAgOiBwdWJsaWMgRXdrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBFV0tfT0JKRUNU
X0RFQ0xBUkUoRXdrUGFnZUdyb3VwKQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrUGFnZUdy
b3VwPiBjcmVhdGUoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorICAgIHsKKyAgICAgICAg
aWYgKCFwYWdlR3JvdXBSZWYpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a1Bh
Z2VHcm91cChkZWZhdWx0SWRlbnRpZmllcikpOworCisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRXdrUGFnZUdyb3VwKHBhZ2VHcm91cFJlZikpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEV3a1BhZ2VHcm91cD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA9IFN0
cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tQYWdlR3JvdXAo
aWRlbnRpZmllci5pc0VtcHR5KCkgPyBkZWZhdWx0SWRlbnRpZmllciA6IGlkZW50aWZpZXIpKTsK
KyAgICB9CisKKyAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZUdyb3VwUmVmLmdldCgpOyB9CisKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNv
bnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEVpbmFfTGlzdCogd2hp
dGVsaXN0LCBFaW5hX0xpc3QqIGJsYWNrbGlzdCwgYm9vbCBtYWluRnJhbWVPbmx5KTsKKyAgICB2
b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IEV3a1BhZ2VHcm91cChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpOworICAgIGV4cGxpY2l0
IEV3a1BhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOworCisgICAgc3RhdGljIGNv
bnN0IGNoYXIgZGVmYXVsdElkZW50aWZpZXJbXTsKKworICAgIFdLUmV0YWluUHRyPFdLUGFnZUdy
b3VwUmVmPiBtX3BhZ2VHcm91cFJlZjsKK307CisKKyNlbmRpZiAvLyBld2tfcGFnZV9ncm91cF9w
cml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cAppbmRleCA0ZjFhMTMxZDI1ZDc0MzU0ZGUwYmU5M2YxYmJiM2Q2OGY5NzE3ZTNiLi43YWUxOGM3
ZjM4ZWNkNWM3NTM5ZTNhYjM4OTBiYzhmMzNhZmYzNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVk
ZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5j
bHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wYWdl
X2dyb3VwLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUuaCIKICNpbmNs
dWRlIDxFY29yZV9FdmFzLmg+CkBAIC04Niw5ICs4OCw5IEBAIEVpbmFfQm9vbCBld2tfdmlld19z
bWFydF9jbGFzc19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICByZXR1cm4gRXdr
Vmlldzo6aW5pdFNtYXJ0Q2xhc3NJbnRlcmZhY2UoKmFwaSk7CiB9CiAKLUV2YXNfT2JqZWN0KiBl
d2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdrX0Nv
bnRleHQqIGNvbnRleHQpCitFdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMqIGNh
bnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjb250ZXh0LCBFd2tfUGFnZV9H
cm91cCogcGFnZUdyb3VwKQogewotICAgIHJldHVybiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0
KGNhbnZhcywgc21hcnQsIGV3a19vYmplY3RfY2FzdDxFd2tDb250ZXh0Kj4oY29udGV4dCkpOwor
ICAgIHJldHVybiBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGNhbnZhcywgc21hcnQsIGV3a19v
YmplY3RfY2FzdDxFd2tDb250ZXh0Kj4oY29udGV4dCksIGV3a19vYmplY3RfY2FzdDxFd2tQYWdl
R3JvdXAqPihwYWdlR3JvdXApKTsKIH0KIAogRXZhc19PYmplY3QqIGV3a192aWV3X2FkZF93aXRo
X2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29udGV4dCkKQEAgLTEwOCw2ICsx
MTAsMTMgQEAgRXdrX0NvbnRleHQqIGV3a192aWV3X2NvbnRleHRfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogICAgIHJldHVybiBpbXBsLT5ld2tDb250ZXh0KCk7CiB9CiAKK0V3a19Q
YWdlX0dyb3VwKiBld2tfdmlld19wYWdlX2dyb3VwX2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKK3sKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwg
MCk7CisKKyAgICByZXR1cm4gaW1wbC0+ZXdrUGFnZUdyb3VwKCk7Cit9CisKIEVpbmFfQm9vbCBl
d2tfdmlld191cmxfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1cmwpCiB7
CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIGZhbHNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDViOTIz
YzQyYzY2YmVhYzFmYWUyNDQ3NWY2MjIzZmI2MmQyY2NkMTMuLmNkMGQzMTc2M2NiMzA0YmZjMTkz
ZjIwNzZjYTJmZDFhNjkxN2JkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApAQCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0X21l
bnUuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9y
LmgiCisjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXAuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVu
dS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKICNpbmNsdWRlICJld2tfc2V0
dGluZ3MuaCIKQEAgLTMxNiwxMCArMzE3LDExIEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3Nt
YXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpKTsKICAqIEBwYXJhbSBlIGNh
bnZhcyBvYmplY3Qgd2hlcmUgdG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdAogICogQHBhcmFtIHNt
YXJ0IEV2YXNfU21hcnQgb2JqZWN0LiBJdHMgdHlwZSBzaG91bGQgYmUgRVdLX1ZJRVdfVFlQRV9T
VFIKICAqIEBwYXJhbSBjb250ZXh0IEV3a19Db250ZXh0IG9iamVjdCB3aGljaCBpcyB1c2VkIGZv
ciBpbml0aWFsaXppbmcKKyAqIEBwYXJhbSBwYWdlR3JvdXAgRXdrX1BhZ2VfR3JvdXAgb2JqZWN0
IHdoaWNoIGlzIHVzZWQgZm9yIGluaXRpYWxpemluZwogICoKICAqIEByZXR1cm4gdmlldyBvYmpl
Y3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAqLwotRUFQSSBFdmFzX09iamVj
dCAqZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMgKmUsIEV2YXNfU21hcnQgKnNtYXJ0LCBFd2tfQ29u
dGV4dCAqY29udGV4dCk7CitFQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld19zbWFydF9hZGQoRXZh
cyAqZSwgRXZhc19TbWFydCAqc21hcnQsIEV3a19Db250ZXh0ICpjb250ZXh0LCBFd2tfUGFnZV9H
cm91cCAqcGFnZUdyb3VwKTsKIAogLyoqCiAgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgdmll
dyBvYmplY3QuCkBAIC0zNTAsNiArMzUyLDE1IEBAIEVBUEkgRXZhc19PYmplY3QgKmV3a192aWV3
X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0NvbnRleHQgKmNvbnRleHQpOwogRUFQSSBF
d2tfQ29udGV4dCAqZXdrX3ZpZXdfY29udGV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwog
CiAvKioKKyAqIEdldHMgdGhlIEV3a19QYWdlX0dyb3VwIG9mIHRoaXMgdmlldy4KKyAqCisgKiBA
cGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBFd2tfUGFnZV9Hcm91cAorICoKKyAq
IEByZXR1cm4gdGhlIEV3a19QYWdlX0dyb3VwIG9mIHRoaXMgdmlldyBvciBAYyBOVUxMIG9uIGZh
aWx1cmUKKyAqLworRUFQSSBFd2tfUGFnZV9Hcm91cCAqZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKICAqIEFza3MgdGhlIG9iamVjdCB0byBsb2Fk
IHRoZSBnaXZlbiBVUkwuCiAgKgogICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbG9hZCBAYSBV
UkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCmluZGV4
IGU2NGY0Y2M3NzUzNjIyZDc1ODQxZjgxNDY4OGVhNTJlYmZjNjUyNDEuLjZlOGJhZTJkNzA2YTdi
ZTQzOWVkODk0M2IyNzE2NzJlYzFhMjliZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmNwcApAQCAtNjEsMTEgKzYxLDE0IEBAIHZvaWQgRVdLMlVuaXRU
ZXN0QmFzZTo6U2V0VXAoKQogICAgIEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFz
c19uZXcoJm1fZXdrVmlld0NsYXNzLnNjKTsKIAogICAgIEV3a19Db250ZXh0KiBuZXdDb250ZXh0
ID0gZXdrX2NvbnRleHRfbmV3KCk7Ci0gICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRk
KGV2YXMsIHNtYXJ0LCBuZXdDb250ZXh0KTsKKyAgICBFd2tfUGFnZV9Hcm91cCogbmV3UGFnZUdy
b3VwID0gZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKCJVbml0VGVzdCIpOworICAgIG1fd2ViVmlldyA9
IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgbmV3Q29udGV4dCwgbmV3UGFnZUdyb3Vw
KTsKKwogICAgIC8vIENsZWFyIEhUVFAgY2FjaGUgZmlsZXMgYmVmb3JlIHJ1bm5pbmcgdGhlIHVu
aXQgdGVzdHMsIHdoaWNoIHByZXZlbnRzIAogICAgIC8vIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9u
IGR1ZSB0byBzbyBtYW55IGNhY2hlIGZpbGVzLgogICAgIGV3a19jb250ZXh0X3Jlc291cmNlX2Nh
Y2hlX2NsZWFyKG5ld0NvbnRleHQpOwogICAgIGV3a19vYmplY3RfdW5yZWYobmV3Q29udGV4dCk7
CisgICAgZXdrX29iamVjdF91bnJlZihuZXdQYWdlR3JvdXApOwogCiAgICAgZXdrX3ZpZXdfdGhl
bWVfc2V0KG1fd2ViVmlldywgZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAppbmRleCBiZDVlNGI5OTU4NWZk
ODlhNzc3YmEwN2M0MDFkMWNlZjMxOTNiODdhLi41OTI0YmU2NDFmY2Q3Y2JiNWE2NWZlOTEzM2Vm
YjMzODI3MDEzNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJh
c2UuaApAQCAtMzUsNiArMzUsNyBAQCBwdWJsaWM6CiAgICAgRWNvcmVfRXZhcyogYmFja2luZ1N0
b3JlKCkgeyByZXR1cm4gbV9lY29yZUV2YXM7IH0KICAgICBFdmFzKiBjYW52YXMoKSB7IHJldHVy
biBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcyk7IH0KICAgICBFdmFzX09iamVjdCogd2ViVmll
dygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQorICAgIHZvaWQgc2V0V2ViVmlldyhFdmFzX09iamVj
dCogd2ViVmlldykgeyBtX3dlYlZpZXcgPSB3ZWJWaWV3OyB9CiAgICAgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MqIGV3a1ZpZXdDbGFzcygpIHsgcmV0dXJuICZtX2V3a1ZpZXdDbGFzczsgfQogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfcGFnZV9ncm91cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVjYTU5Nzcx
N2IyNmNhNzRhZmM3OWUwY2Q1ZDU3ZGJjOWY2NWY3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYWdlX2dyb3VwLmNw
cApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVs
ZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmly
b25tZW50KiBlbnZpcm9ubWVudDsKKworc3RhdGljIGNvbnN0IGNoYXIgaHRtbFN0cmluZ1tdID0g
IjxodG1sPjxoZWFkPjx0aXRsZT5Gb288L3RpdGxlPjwvaGVhZD48Ym9keSBzdHlsZT0nYmFja2dy
b3VuZC1jb2xvcjogcmVkJz48c2NyaXB0PmRvY3VtZW50LnRpdGxlPXdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQt
Y29sb3InKTwvc2NyaXB0PkhFTExPPC9ib2R5PjwvaHRtbD4iOworc3RhdGljIGNvbnN0IGNoYXIg
dXNlclN0eWxlU2hlZXRbXSA9ICJib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4gIWltcG9y
dGFudDsgfSI7CitzdGF0aWMgY29uc3QgY2hhciBncmVlbkluUkdCW10gPSAicmdiKDAsIDEyOCwg
MCkiOworc3RhdGljIGNvbnN0IGNoYXIgcmVkSW5SR0JbXSA9ICJyZ2IoMjU1LCAwLCAwKSI7CisK
K1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFnZV9ncm91cCkKK3sKKyAgICBFdmFzX1Nt
YXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7
CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgi
dGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAgICBFdmFzX09iamVjdCog
bmV3V2ViVmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChjYW52YXMoKSwgc21hcnQsIGV3a19jb250
ZXh0X2RlZmF1bHRfZ2V0KCksIHBhZ2VHcm91cCk7CisgICAgc2V0V2ViVmlldyhuZXdXZWJWaWV3
KTsKKworICAgIEFTU0VSVF9FUShwYWdlR3JvdXAsIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG5l
d1dlYlZpZXcpKTsKKyAgICBld2tfb2JqZWN0X3VucmVmKHBhZ2VHcm91cCk7Cit9CisKK1RFU1Rf
RihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZF9i
ZWZvcmVfY3JlYXRpbmdfdmlldykKK3sKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21h
cnRfY2xhc3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7CisgICAgRXdrX1BhZ2VfR3JvdXAq
IHBhZ2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgidGVzdCIpOworICAgIEFTU0VSVF9U
UlVFKHBhZ2VHcm91cCk7CisKKyAgICAvLyBBZGQgYSB1c2VyIHN0eWxlIHNoZWV0IHRvIHRoZSBw
YWdlIGdyb3VwIGJlZm9yZSBjcmVhdGluZyBhIHZpZXcuCisgICAgZXdrX3BhZ2VfZ3JvdXBfdXNl
cl9zdHlsZV9zaGVldF9hZGQocGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVldCwgMCwgMCwgMCwgdHJ1
ZSk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgd2ViIHZpZXcgd2l0aCB0aGlzIHBhZ2UgZ3JvdXAu
CisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoY2FudmFz
KCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpLCBwYWdlR3JvdXApOworICAgIHNl
dFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBld2tfb2JqZWN0X3VucmVmKHBhZ2VHcm91cCk7
CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRU
aGVtZSgpKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUod2ViVmlldygpLCBlbnZpcm9ubWVudC0+
ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5kZWZhdWx0SGVpZ2h0KCkpOworICAgIGV2YXNf
b2JqZWN0X3Nob3cod2ViVmlldygpKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2ViVmll
dygpLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBo
dG1sU3RyaW5nLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNoYW5nZWRU
byhncmVlbkluUkdCKSk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfcGFnZV9n
cm91cF91c2VyX3N0eWxlX3NoZWV0X2FkZF9hZnRlcl9jcmVhdGluZ192aWV3KQoreworICAgIC8v
IEFkZCBhIHVzZXIgc3R5bGUgc2hlZXQgdG8gdGhlIHBhZ2UgZ3JvdXAgYWZ0ZXIgY3JlYXRpbmcg
YSB2aWV3LgorICAgIEV3a19QYWdlX0dyb3VwKiBwYWdlR3JvdXAgPSBld2tfdmlld19wYWdlX2dy
b3VwX2dldCh3ZWJWaWV3KCkpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisgICAgZXdr
X3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQocGFnZUdyb3VwLCB1c2VyU3R5bGVTaGVl
dCwgMCwgMCwgMCwgdHJ1ZSk7CisKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZp
ZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVGl0bGVD
aGFuZ2VkVG8oZ3JlZW5JblJHQikpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdr
X3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbCkKK3sKKyAgICBFdmFzX1Nt
YXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCYoZXdrVmlld0NsYXNzKCktPnNjKSk7
CisgICAgRXdrX1BhZ2VfR3JvdXAqIHBhZ2VHcm91cCA9IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgi
dGVzdCIpOworICAgIEFTU0VSVF9UUlVFKHBhZ2VHcm91cCk7CisKKyAgICAvLyBBZGQgYSB1c2Vy
IHN0eWxlIHNoZWV0IHRvIHRoZSBwYWdlIGdyb3VwIGJlZm9yZSBjcmVhdGluZyBhIHZpZXcuCisg
ICAgZXdrX3BhZ2VfZ3JvdXBfdXNlcl9zdHlsZV9zaGVldF9hZGQocGFnZUdyb3VwLCB1c2VyU3R5
bGVTaGVldCwgMCwgMCwgMCwgdHJ1ZSk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgd2ViIHZpZXcg
d2l0aCB0aGlzIHBhZ2UgZ3JvdXAuCisgICAgRXZhc19PYmplY3QqIG5ld1dlYlZpZXcgPSBld2tf
dmlld19zbWFydF9hZGQoY2FudmFzKCksIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgp
LCBwYWdlR3JvdXApOworICAgIHNldFdlYlZpZXcobmV3V2ViVmlldyk7CisKKyAgICBld2tfb2Jq
ZWN0X3VucmVmKHBhZ2VHcm91cCk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdlYlZpZXcoKSwg
ZW52aXJvbm1lbnQtPmRlZmF1bHRUaGVtZSgpKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUod2Vi
VmlldygpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5kZWZhdWx0
SGVpZ2h0KCkpOworICAgIGV2YXNfb2JqZWN0X3Nob3cod2ViVmlldygpKTsKKyAgICBldmFzX29i
amVjdF9mb2N1c19zZXQod2ViVmlldygpLCB0cnVlKTsKKworICAgIGV3a192aWV3X2h0bWxfc3Ry
aW5nX2xvYWQod2ViVmlldygpLCBodG1sU3RyaW5nLCAwLCAwKTsKKworICAgIC8vIFJlbW92ZSBh
bGwgdXNlciBzdHlsZSBzaGVldHMgaW4gdGhlIHBhZ2UgZ3JvdXAuCisgICAgZXdrX3BhZ2VfZ3Jv
dXBfdXNlcl9zdHlsZV9zaGVldHNfcmVtb3ZlX2FsbChld2tfdmlld19wYWdlX2dyb3VwX2dldCh3
ZWJWaWV3KCkpKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhyZWRJ
blJHQikpOworCisgICAgLy8gQWRkIGEgdXNlciBzdHlsZSBzaGVldCB0byB0aGUgcGFnZSBncm91
cCBhZnRlciBjcmVhdGluZyBhIHZpZXcuCisgICAgcGFnZUdyb3VwID0gZXdrX3ZpZXdfcGFnZV9n
cm91cF9nZXQod2ViVmlldygpKTsKKyAgICBld2tfcGFnZV9ncm91cF91c2VyX3N0eWxlX3NoZWV0
X2FkZChwYWdlR3JvdXAsIHVzZXJTdHlsZVNoZWV0LCAwLCAwLCAwLCB0cnVlKTsKKyAgICBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaHRtbFN0cmluZywgMCwgMCk7CisKKyAg
ICAvLyBSZW1vdmUgYWxsIHVzZXIgc3R5bGUgc2hlZXRzIGluIHRoZSBwYWdlIGdyb3VwLgorICAg
IGV3a19wYWdlX2dyb3VwX3VzZXJfc3R5bGVfc2hlZXRzX3JlbW92ZV9hbGwoZXdrX3ZpZXdfcGFn
ZV9ncm91cF9nZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVGl0bGVD
aGFuZ2VkVG8ocmVkSW5SR0IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA5ZTIzZTVmZTMy
ODRlNjEwNWY3YTQxODlmYWEyMzhjYzY3ZDYzZGQyLi5lNDE4M2VlMjgzZTM5MjI4MGEyNjY1ZDU4
NDIyY2Q4MzFmYWMyYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC01NTcsNiArNTU3LDEzIEBA
IFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19jb250ZXh0X2dldCkKICAgICBBU1NF
UlRfRVEoY29udGV4dCwgZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKSk7CiB9CiAKK1RF
U1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19wYWdlX2dyb3VwX2dldCkKK3sKKyAgICBF
d2tfUGFnZV9Hcm91cCogcGFnZUdyb3VwID0gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQod2ViVmll
dygpKTsKKyAgICBBU1NFUlRfVFJVRShwYWdlR3JvdXApOworICAgIEFTU0VSVF9FUShwYWdlR3Jv
dXAsIGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdlYlZpZXcoKSkpOworfQorCiBURVNUX0YoRVdL
MlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudCkKIHsKICAgICBFaW5hX0xp
c3QqIHBvaW50cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4IGFjYWMzY2ZhNTdhZGNmNDdlMWFjZWRhMzcy
NDE5MjJiZGFjMTU5MmUuLjI0MGNiYjM0MjE1Yzc0ZDA2MjU5ZmZmZWZmM2MxZGNjYmE0MzMzOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJv
eHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9y
UHJveHlFZmwuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXdrVmlldy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUu
aCIKKyNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3Nl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0VmbElu
c3BlY3RvclV0aWxpdGllcy5oPgpAQCAtMTAwLDcgKzEwMSw3IEBAIFdlYlBhZ2VQcm94eSogV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAKICAgICAvLyBG
SVhNRTogUmVmYWN0b3IgdG8gdXNlIFdLVmlld1JlZi4KICAgICBXS0NvbnRleHRSZWYgY29udGV4
dFJlZiA9IHRvQVBJKHBhZ2UoKS0+cHJvY2VzcygpLT5jb250ZXh0KCkpOwotICAgIG1faW5zcGVj
dG9yVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZUV2YXNPYmplY3QoZWNvcmVfZXZhc19nZXQobV9pbnNw
ZWN0b3JXaW5kb3cpLCBFd2tDb250ZXh0OjpmaW5kT3JDcmVhdGVXcmFwcGVyKGNvbnRleHRSZWYp
LCB0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSksIEV3a1ZpZXc6OkxlZ2FjeUJlaGF2aW9yKTsK
KyAgICBtX2luc3BlY3RvclZpZXcgPSBFd2tWaWV3OjpjcmVhdGVFdmFzT2JqZWN0KGVjb3JlX2V2
YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgRXdrQ29udGV4dDo6ZmluZE9yQ3JlYXRlV3JhcHBl
cihjb250ZXh0UmVmKSwgRXdrUGFnZUdyb3VwOjpjcmVhdGUodG9BUEkoaW5zcGVjdG9yUGFnZUdy
b3VwKCkpKSwgRXdrVmlldzo6TGVnYWN5QmVoYXZpb3IpOwogICAgIGlmICghbV9pbnNwZWN0b3JW
aWV3KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA4MWFkNWFhOTFiYTQwNDk5MWQ3MmE5ODEyY2I4YmJjNzA0
ODI2ZmQuLjFhYTkzMjE1ZTI0OGRjOWY1OGVkYmY1YjU4YmM1YzQzNGQzZGNhNDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMy0wMy0xNCAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBBZGQgYW4gQVBJIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHVz
ZXIgc3R5bGUgc2hlZXRzIGZyb20gYSBwYWdlIGdyb3VwCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBH
eXV5b3VuZyBLaW0uCisKKyAgICAgICAgVXNlIHRoZSBwYWdlIGdyb3VwIHRvIGNyZWF0ZSB0aGUg
dmlldyBvYmplY3QuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAgICAg
ICAod2luZG93X2NyZWF0ZSk6CisKIDIwMTMtMDMtMTIgIEp1bGllIFBhcmVudCAgPGpwYXJlbnRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIENsZWFudXA6IE1vdmUgZmxhdHRlbi10cmllIHRvIGxv
YWRlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9N
aW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IDBhZWIyNjQwMzhkZmVkOGFkN2Q1Yjg5MTFjNmYy
OTBjZjBiMjQzYTguLjkxOTQzMDQ0ZGY0M2ZlOGRmMmE0NTY1YzVhYWJkZjY1N2Q5YjUzOGQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvZWZsL21haW4uYwpAQCAtMTI4MCw4ICsxMjgwLDkgQEAgc3RhdGljIEJyb3dzZXJfV2lu
ZG93ICp3aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0ICpvcGVuZXIsIGNvbnN0IGNoYXIgKnVybCwg
aW50IHcKICAgICAgICAgd2luZG93LT5ld2tfdmlldyA9IChFdmFzX09iamVjdCopV0tWaWV3Q3Jl
YXRlKGV2YXMsIDAsIDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEV2YXNfU21hcnQgKnNtYXJ0
ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJmV3a1ZpZXdDbGFzcy0+c2MpOwotICAgICAgICBFd2tf
Q29udGV4dCogY29udGV4dCA9IG9wZW5lciA/IGV3a192aWV3X2NvbnRleHRfZ2V0KG9wZW5lcikg
OiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOwotICAgICAgICB3aW5kb3ctPmV3a192aWV3ID0g
ZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBjb250ZXh0KTsKKyAgICAgICAgRXdrX0Nv
bnRleHQgKmNvbnRleHQgPSBvcGVuZXIgPyBld2tfdmlld19jb250ZXh0X2dldChvcGVuZXIpIDog
ZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKKyAgICAgICAgRXdrX1BhZ2VfR3JvdXAgKnBhZ2VH
cm91cCA9IG9wZW5lciA/IGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG9wZW5lcikgOiBld2tfcGFn
ZV9ncm91cF9jcmVhdGUoIiIpOworICAgICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3ZpZXdf
c21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBjb250ZXh0LCBwYWdlR3JvdXApOwogICAgIH0KICAgICBl
d2tfdmlld190aGVtZV9zZXQod2luZG93LT5ld2tfdmlldywgVEhFTUVfRElSICIvZGVmYXVsdC5l
ZGoiKTsKICAgICBpZiAoZGV2aWNlX3BpeGVsX3JhdGlvKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>