<?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>98931</bug_id>
          
          <creation_ts>2012-10-10 11:29:01 -0700</creation_ts>
          <short_desc>[GTK] Enable touch features</short_desc>
          <delta_ts>2014-02-10 01:13:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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>Gtk, LayoutTestFailure</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>128170</dependson>
    
    <dependson>128171</dependson>
    
    <dependson>128250</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>bunhere</cc>
    
    <cc>calvaris</cc>
    
    <cc>carlosg</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>william.jon.mccann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>739160</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-10 11:29:01 -0700</bug_when>
    <thetext>This bug is meant to cover any addition of the touch support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962458</commentid>
    <comment_count>1</comment_count>
      <attachid>219912</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-23 05:53:21 -0800</bug_when>
    <thetext>Created attachment 219912
[GTK] Add touch events to WK2

This patch uses GdkEventTouch events available in GTK+ &gt;= 3.4 in order to implement web touch events, emulation if pointer events on the right situations is also implemented, so interacting on a WebKitWebView with touch devices works at least like it currently does through GTK+ builtin pointer emulation. TBH interaction with touch devices might still improve greatly (scrolling, zooming, and whatnot), but one thing at a time...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962480</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-23 08:36:21 -0800</bug_when>
    <thetext>Nice work! I recommend uploading the patch with webkit-patch because it will point out all style errors before it hits the bug tracker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962481</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-23 08:37:30 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962482</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-23 08:37:39 -0800</bug_when>
    <thetext>Attachment 219912 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/PlatformGTK.cmake&apos;, u&apos;Source/WebCore/bindings/gobject/GNUmakefile.am&apos;, u&apos;Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp&apos;, u&apos;Source/WebCore/platform/gtk/GtkTouchContextHelper.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.list.am&apos;, u&apos;Source/WebKit2/PlatformGTK.cmake&apos;, u&apos;Source/WebKit2/Shared/NativeWebTouchEvent.h&apos;, u&apos;Source/WebKit2/Shared/gtk/NativeWebTouchEventGtk.cpp&apos;, u&apos;Source/WebKit2/Shared/gtk/WebEventFactory.cpp&apos;, u&apos;Source/WebKit2/Shared/gtk/WebEventFactory.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp&apos;, u&apos;Source/autotools/SetupWebKitFeatures.m4&apos;, u&apos;Source/cmake/OptionsGTK.cmake&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:54:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:211:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:212:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:218:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:244:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:252:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:258:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:260:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:261:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:267:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:273:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:276:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:281:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:282:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:342:  Declaration has space between type name and * in const GdkEvent *touch_event  [whitespace/declaration] [3]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:347:  Declaration has space between type name and * in GdkEvent *pointer_event  [whitespace/declaration] [3]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:350:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:359:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:361:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:365:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:374:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:377:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:378:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:379:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebKit2/Shared/NativeWebTouchEvent.h:53:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebCore/ChangeLog:11:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:727:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 31 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962483</commentid>
    <comment_count>5</comment_count>
      <attachid>219912</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-23 08:44:56 -0800</bug_when>
    <thetext>Comment on attachment 219912
[GTK] Add touch events to WK2

Attachment 219912 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/49128213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962484</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-23 08:47:02 -0800</bug_when>
    <thetext>Oh, heh :), too used to C coding styles, I&apos;ll update the patch and check errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962519</commentid>
    <comment_count>7</comment_count>
      <attachid>219912</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-12-23 11:05:35 -0800</bug_when>
    <thetext>Comment on attachment 219912
[GTK] Add touch events to WK2

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

Thanks for the patch, I&apos;ve made a few more comments apart form the styles issues mentioned by the style bot.

&gt; ChangeLog:6
&gt; +        set ENABLE_TOUCH_EVENTS to 1 if building with GTK+
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=98931

Please move the bug url right below the bug title, and the bug description after the Reviewed by line.

&gt; Source/WebCore/ChangeLog:7
&gt; +        Building and linking to that code is necessary if the GTK code is to implement
&gt; +        touch events.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=98931

Ditto.

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests (OOPS!).

This should be removed if the patch doesn&apos;t affect any layout test.

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:28
&gt; +#include &quot;GtkTouchContextHelper.h&quot;
&gt; +#include &lt;gtk/gtk.h&gt;

There should be a line between these.

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:36
&gt; +bool GtkTouchContextHelper::handle(GdkEvent *touchEvent)

This could be handleTouchEvent or just handleEvent

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:38
&gt; +#if GTK_CHECK_VERSION(3, 4, 0)

We depend on gtk 3.6, if this is not available in gtk2 use GTK_API_VERSION_2 instead.

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:41
&gt; +    uint32_t sequence;
&gt; +
&gt; +    sequence = GPOINTER_TO_UINT (gdk_event_get_event_sequence (touchEvent));

This should be a single line. Why are we converting it to an integer?

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:52
&gt; +        return FALSE;

FALSE -&gt; false

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:56
&gt; +    return TRUE;

TRUE -&gt; true

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:59
&gt; +Vector&lt;GdkEvent*&gt; GtkTouchContextHelper::getTouchEvents(void) const

For methods returning a value the name should be without the get, just GtkTouchContextHelper::touchEvents(). However, in this case we could leave the name and make the function receive a reference

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.h:29
&gt; +#include &quot;GRefPtrGtk.h&quot;

This doesn&apos;t seem to be used.

&gt; Source/WebKit/gtk/ChangeLog:8
&gt; +        Need the bug URL (OOPS!).

Bug url is missing. you can use Tools/Scripts/prepare-ChangeLog script to create the changelog entries.

&gt; Source/WebKit2/ChangeLog:9
&gt; +        In GTK+ &gt;= 3.4.0, GdkEventTouch is available to inform about multitouch events. Use these to implement
&gt; +        touch events on this platform. If a touch is left unhandled and is the &quot;pointer emulating&quot; one, mouse
&gt; +        events will be generated as a fallback.
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=98931

Same comments here.

&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:53
&gt; +    NativeWebTouchEvent(GdkEvent*,WebCore::GtkTouchContextHelper&amp;);

Leave a space between ,WebCore::

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:207
&gt; +#if GTK_CHECK_VERSION(3, 4, 0)

This is not needed, we depend on gtk 3.6 and wk2 doesn&apos;t support gtk2

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:214
&gt; +        else if (current-&gt;type == GDK_TOUCH_BEGIN)

Don&apos;t use else after a return.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:218
&gt; +    } else {
&gt; +        return WebPlatformTouchPoint::TouchStationary;
&gt; +    }

Don&apos;t uses braces here.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:248
&gt; +    Vector&lt;GdkEvent*&gt; touchEvents;
&gt; +    touchEvents = touchContext.getTouchEvents();

Use single line here, unless we change the function to receive a reference as I suggested before.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:249
&gt; +    touchPointList.reserveInitialCapacity(touchEvents.size() + 1);

Move the touchPointList delclaration here, when it&apos;s first used.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:262
&gt; +        WebPlatformTouchPoint touchPoint(identifier, touchPhaseFromEvents (event, touchEvents[i]),
&gt; +                                         IntPoint(root_x, root_y), IntPoint(x, y));
&gt; +        touchPointList.uncheckedAppend(touchPoint);

This can probably be a single line:

touchPointList.uncheckedAppend(WebPlatformTouchPoint(identifier, touchPhaseFromEvents(event, touchEvents[i]), IntPoint(root_x, root_y), IntPoint(x, y)));

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:266
&gt; +        // Touch was already removed from the GtkTouchContextHelper, add it here

Nit: Finish the comments with a period.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:277
&gt; +        touchPointList.uncheckedAppend(touchPoint);

This is mostly the same than previous block, we can probably make a helper function like appendTouchEvent(Vector&lt;WebPlatformTouchPoint&gt;&amp;, GdkEvent*, WebPlatformTouchPoint::TouchPointState);

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:340
&gt; +#if GTK_CHECK_VERSION(3, 4, 0)

This is not needed either.

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:341
&gt; +    // emulate pointer events if unhandled

Nit: start comments with capital letter and finish with period.

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:347
&gt; +    GdkEvent *pointer_event;

Use GOwnPtr here.

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:360
&gt; +        if (touch_event-&gt;type == GDK_TOUCH_BEGIN) {
&gt; +            pointer_event = gdk_event_new (GDK_BUTTON_PRESS);
&gt; +        } else if (touch_event-&gt;type == GDK_TOUCH_END) {

Don&apos;t use braces for single statement ifs. You can probably use a switch here instead.

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:378
&gt; +    gdk_event_free (pointer_event);

You don&apos;t need this when using GOwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962651</commentid>
    <comment_count>8</comment_count>
      <attachid>219943</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-23 17:00:27 -0800</bug_when>
    <thetext>Created attachment 219943
A more polished patch, passes style checks locally</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962658</commentid>
    <comment_count>9</comment_count>
      <attachid>219947</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-23 17:18:51 -0800</bug_when>
    <thetext>Created attachment 219947
third patch, minor fix this time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962660</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-23 17:19:42 -0800</bug_when>
    <thetext>Thanks KaL for the comments! All style issues are fixed, I&apos;m replying below to some things

(In reply to comment #7)
&gt; &gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:41
&gt; &gt; +    uint32_t sequence;
&gt; &gt; +
&gt; &gt; +    sequence = GPOINTER_TO_UINT (gdk_event_get_event_sequence (touchEvent));
&gt; 
&gt; This should be a single line. Why are we converting it to an integer?

Hmm well, GdkEventSequence is essentially a GINT_TO_POINTER(), and web touch events also prefer ints as IDs, I thought it made sense to do the same all through.

&gt; &gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:59
&gt; &gt; +Vector&lt;GdkEvent*&gt; GtkTouchContextHelper::getTouchEvents(void) const
&gt; 
&gt; For methods returning a value the name should be without the get, just GtkTouchContextHelper::touchEvents(). However, in this case we could leave the name and make the function receive a reference

I guess you mean a reference on the container? I kind of liked not having to copy GdkEvents around there :)

&gt; &gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:277
&gt; &gt; +        touchPointList.uncheckedAppend(touchPoint);
&gt; 
&gt; This is mostly the same than previous block, we can probably make a helper function like appendTouchEvent(Vector&lt;WebPlatformTouchPoint&gt;&amp;, GdkEvent*, WebPlatformTouchPoint::TouchPointState);

Indeed, refactored that out in my last patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962667</commentid>
    <comment_count>11</comment_count>
      <attachid>219947</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-23 17:33:38 -0800</bug_when>
    <thetext>Comment on attachment 219947
third patch, minor fix this time

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

Thanks for updating the patch. I have a few, mostly stylistic, nits.

&gt; Source/WebCore/PlatformGTK.cmake:631
&gt; +    if (ENABLE_TOUCH_EVENTS)
&gt; +        list(APPEND GObjectDOMBindings_IDL_FILES
&gt; +            dom/Touch.idl
&gt; +        )
&gt; +    endif ()
&gt; +

We are enabling touch events unconditionally for GTK+ and this conditional isn&apos;t mirrored in the autotools version of the build, so I think it makes sense to unconditionally add the file to the list here as well.

Thank you very kindly for updating the CMake build!

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:37
&gt; +bool GtkTouchContextHelper::handleEvent(GdkEvent *touchEvent)

The asterisk here is on the wrong side.

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:64
&gt; +Vector&lt;GdkEvent*&gt; GtkTouchContextHelper::touchEvents(void) const
&gt; +{
&gt; +    Vector&lt;GdkEvent*&gt; touchEvents;
&gt; +    copyValuesToVector(m_touchEvents, touchEvents);
&gt; +    return touchEvents;
&gt; +}
&gt; +

Perhaps you could just do:

HashMapValuesProxy&amp; GtkTouchContextHelper::touchEvents() const
{
    return m_touchEvents.values();
}

That would avoid the copy. WebKit uses empty argument lists instead of void.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:207
&gt; +#ifndef GTK_API_VERSION_2

No need for this check here, since WebKit2 is only available for GTK+ 3 builds.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:232
&gt; +    gdouble root_x, root_y;

Please use rootX and rootY here.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:272
&gt; +    return WebTouchEvent(type, touchPointList, modifiersForEvent(event), (double) gdk_event_get_time(event));

Please use a static_cast here instead of the C style cast. Does an implicit cast work?

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:346
&gt; +    const GdkEvent* touch_event = event.nativeEvent();
&gt; +
&gt; +    if (!touch_event-&gt;touch.emulating_pointer)
&gt; +        return;

touch_event -&gt; touchEvent.

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:349
&gt; +

pointer_event -&gt; pointerEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962679</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-23 18:14:39 -0800</bug_when>
    <thetext>Thanks for the review Martin, only a few comments below so far:

(In reply to comment #11)
&gt; (From update of attachment 219947 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219947&amp;action=review
&gt; 
&gt; Thanks for updating the patch. I have a few, mostly stylistic, nits.
&gt; 
&gt; &gt; Source/WebCore/PlatformGTK.cmake:631
&gt; &gt; +    if (ENABLE_TOUCH_EVENTS)
&gt; &gt; +        list(APPEND GObjectDOMBindings_IDL_FILES
&gt; &gt; +            dom/Touch.idl
&gt; &gt; +        )
&gt; &gt; +    endif ()
&gt; &gt; +
&gt; 
&gt; We are enabling touch events unconditionally for GTK+ and this conditional isn&apos;t mirrored in the autotools version of the build, so I think it makes sense to unconditionally add the file to the list here as well.

hmm, Isn&apos;t that done on the change to Source/autotools/SetupWebKitFeatures.m4? or should I be doing that somewhere else?

&gt; 
&gt; Thank you very kindly for updating the CMake build!

:), that was the part that I did somewhat more blindly tbh

&gt; 
&gt; &gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:207
&gt; &gt; +#ifndef GTK_API_VERSION_2
&gt; 
&gt; No need for this check here, since WebKit2 is only available for GTK+ 3 builds.

Isn&apos;t that code used on the webprocess? I got errors when compiling otherwise, from what I checked it was linking to gtk+2 at that time.

&gt; &gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:272
&gt; &gt; +    return WebTouchEvent(type, touchPointList, modifiersForEvent(event), (double) gdk_event_get_time(event));
&gt; 
&gt; Please use a static_cast here instead of the C style cast. Does an implicit cast work?
&gt; 

Right, saw other similar pieces of code casting implicitly, will update that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962681</commentid>
    <comment_count>13</comment_count>
      <attachid>219947</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-23 18:18:41 -0800</bug_when>
    <thetext>Comment on attachment 219947
third patch, minor fix this time

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

&gt;&gt;&gt; Source/WebCore/PlatformGTK.cmake:631
&gt;&gt;&gt; +
&gt;&gt; 
&gt;&gt; We are enabling touch events unconditionally for GTK+ and this conditional isn&apos;t mirrored in the autotools version of the build, so I think it makes sense to unconditionally add the file to the list here as well.
&gt;&gt; 
&gt;&gt; Thank you very kindly for updating the CMake build!
&gt; 
&gt; hmm, Isn&apos;t that done on the change to Source/autotools/SetupWebKitFeatures.m4? or should I be doing that somewhere else?

I only meant that you shouldn&apos;t need to check for ENABLE_TOUCH_EVENTS since we are turning it on always. That does remind me that you should change the setting in Source/cmake/OptionsGTK.cmake as well though.

&gt;&gt;&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:207
&gt;&gt;&gt; +#ifndef GTK_API_VERSION_2
&gt;&gt; 
&gt;&gt; No need for this check here, since WebKit2 is only available for GTK+ 3 builds.
&gt; 
&gt; Isn&apos;t that code used on the webprocess? I got errors when compiling otherwise, from what I checked it was linking to gtk+2 at that time.

Ah! A few files are compiled into the plugin process as well, which does indeed compile against GTK+2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962743</commentid>
    <comment_count>14</comment_count>
      <attachid>219947</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-24 01:38:45 -0800</bug_when>
    <thetext>Comment on attachment 219947
third patch, minor fix this time

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

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:35
&gt; +GtkTouchContextHelper::GtkTouchContextHelper()
&gt; +{
&gt; +}

This constructor is not necessary.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:222
&gt; +    } else
&gt; +        return WebPlatformTouchPoint::TouchStationary;
&gt; +
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return WebPlatformTouchPoint::TouchStationary;

You can remove the `else` branch and ASSERT_NOT_REACHED call and just return WebPlatformTouchPoint::TouchStationary when the event sequences differ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962757</commentid>
    <comment_count>15</comment_count>
      <attachid>219967</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-24 05:47:24 -0800</bug_when>
    <thetext>Created attachment 219967
Updated patch

This new patch applies suggestions in comments #11 and #14, adds new spawned symbols to .symbols file, and fixes dubious memory management of GdkEvents in the helper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962758</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-24 05:49:29 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Perhaps you could just do:
&gt; 
&gt; HashMapValuesProxy&amp; GtkTouchContextHelper::touchEvents() const
&gt; {
&gt;     return m_touchEvents.values();
&gt; }
&gt; 
&gt; That would avoid the copy. WebKit uses empty argument lists instead of void.

I tried that, but HashMapValuesProxy seems private to HashMap, so the type is unknown there, I&apos;ve finally resorted to returning the HashMap, and have the caller iterate over values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962767</commentid>
    <comment_count>17</comment_count>
      <attachid>219967</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-12-24 07:09:52 -0800</bug_when>
    <thetext>Comment on attachment 219967
Updated patch

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

It looks much better, I have a just a few more minor comments. I also wonder if this makes tests in fast/events/touch pass, this bug is listed in the TestExpectations file, so I would expect a patch here to also unskip touch those tests (at least for WebKit2 tests in this case)

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.h:30
&gt; +#include &lt;wtf/Vector.h&gt;

This is no longer needed now that you are returning the HashMap

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.h:37
&gt; +class GtkTouchContextHelper {
&gt; +public:

We probably want to make this non copyable. You only need to add here (before the public:) WTF_MAKE_NONCOPYABLE(GtkTouchContextHelper);

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.h:38
&gt; +    GtkTouchContextHelper() { };

I don&apos;t understand why this is needed.

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.h:42
&gt; +    const HashMap&lt;uint32_t, GdkEvent*&gt;&amp; touchEvents() const { return m_touchEvents; };

I would use a typedef for this, something like

typedef TouchEventsMap HashMap&lt;uint32_t, GdkEvent*&gt;;

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:208
&gt; +

Nit: remove this empty line here.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:239
&gt; +

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:722
&gt; +    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
&gt; +    WebKitWebViewBasePrivate* priv = webViewBase-&gt;priv;

We are only using priv, this could be just:

WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(widget)-&gt;priv;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962772</commentid>
    <comment_count>18</comment_count>
      <attachid>219970</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-24 08:49:59 -0800</bug_when>
    <thetext>Created attachment 219970
updated patch

Further suggestions applied, and I also added code to implement missing touch events on EventSenderProxy, I&apos;ve been however unable to run any test, so couldn&apos;t really tell if events in fast/events/touch are passing as it&apos;d be expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962773</commentid>
    <comment_count>19</comment_count>
      <attachid>219971</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-24 08:59:49 -0800</bug_when>
    <thetext>Created attachment 219971
minor update, fix touch event leak in EventSenderProxyGtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962774</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-24 09:01:11 -0800</bug_when>
    <thetext>Attachment 219971 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/platform/gtk/TestExpectations&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/PlatformGTK.cmake&apos;, u&apos;Source/WebCore/bindings/gobject/GNUmakefile.am&apos;, u&apos;Source/WebCore/bindings/gobject/webkitdom.symbols&apos;, u&apos;Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp&apos;, u&apos;Source/WebCore/platform/gtk/GtkTouchContextHelper.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.list.am&apos;, u&apos;Source/WebKit2/PlatformGTK.cmake&apos;, u&apos;Source/WebKit2/Shared/NativeWebTouchEvent.h&apos;, u&apos;Source/WebKit2/Shared/gtk/NativeWebTouchEventGtk.cpp&apos;, u&apos;Source/WebKit2/Shared/gtk/WebEventFactory.cpp&apos;, u&apos;Source/WebKit2/Shared/gtk/WebEventFactory.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp&apos;, u&apos;Source/autotools/SetupWebKitFeatures.m4&apos;, u&apos;Source/cmake/OptionsGTK.cmake&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/WebKitTestRunner/EventSenderProxy.h&apos;, u&apos;Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:520:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962775</commentid>
    <comment_count>21</comment_count>
      <attachid>219972</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-24 09:02:31 -0800</bug_when>
    <thetext>Created attachment 219972
another patch fixing an style issue that was introduced

I&apos;ll stop churning patches now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962811</commentid>
    <comment_count>22</comment_count>
      <attachid>219984</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2013-12-24 16:34:08 -0800</bug_when>
    <thetext>Created attachment 219984
a last patch hopefully, fixes silly mistake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976274</commentid>
    <comment_count>23</comment_count>
      <attachid>223095</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2014-02-04 03:54:34 -0800</bug_when>
    <thetext>Created attachment 223095
Updated patch, minor fixups and updates test situation

I&apos;ve finally went through all hops awaiting in LayoutTests/, In order to run tests fine with this patch, the patches in bugs #128170 and #128171 need to be applied first.

Even though, I had to expect failures for some touch tests in GTK+, as they were testing platform specific behavior that&apos;s hard and pointless to replicate here, I&apos;ve filed bug #128172 about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976275</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-04 03:57:34 -0800</bug_when>
    <thetext>Attachment 223095 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:519:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:548:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebKit2/Shared/gtk/WebEventFactory.cpp:266:  Declaration has space between type name and * in GdkEvent *storedEvent  [whitespace/declaration] [3]
Total errors found: 3 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976277</commentid>
    <comment_count>25</comment_count>
      <attachid>223096</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2014-02-04 04:10:05 -0800</bug_when>
    <thetext>Created attachment 223096
patch, fixing style...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976360</commentid>
    <comment_count>26</comment_count>
      <attachid>223121</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2014-02-04 08:19:41 -0800</bug_when>
    <thetext>Created attachment 223121
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976401</commentid>
    <comment_count>27</comment_count>
      <attachid>223121</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-02-04 09:50:00 -0800</bug_when>
    <thetext>Comment on attachment 223121
rebased patch

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

Look good to me in general, I still have a few comments.

&gt; LayoutTests/ChangeLog:8
&gt; +        * platform/gtk/TestExpectations: remove fast/events/touch

Do these tests pass in wk1 now? if touch support is wk2 only, they should still be skipped in wk1

&gt; LayoutTests/platform/gtk-wk2/TestExpectations:189
&gt; +fast/events/touch [ Pass ]

If they pass, you can simply remove this :-)

&gt; Source/WebCore/bindings/gobject/GNUmakefile.am:266
&gt; +	DerivedSources/webkitdom/WebKitDOMTouch.cpp \
&gt; +	DerivedSources/webkitdom/WebKitDOMTouchPrivate.h \

I wonder what happens with this API in wk1, I guess it simply won&apos;t work.

&gt; Source/WebCore/bindings/gobject/GNUmakefile.am:438
&gt; +

This extra line looks unneeded.

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:47
&gt; +    GdkEvent* event = m_touchEvents.take(sequence);
&gt; +    if (event)
&gt; +        gdk_event_free(event);

You should use GUniquePtr for this. That way you could use remove instead of take.

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.h:36
&gt; +typedef HashMap&lt;uint32_t, GdkEvent*&gt; TouchEventsMap;

This could be typedef HashMap&lt;uint32_t, GUniquePtr&lt;GdkEvent&gt;&gt; TouchEventsMap;

&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:37
&gt; +typedef union _GdkEvent GdkEvent;

This is no longer needed now, because GUniquePtrGtk.h includes gdk

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:244
&gt; +    TouchEventsMap touchEvents = touchContext.touchEvents();

const TouchEventsMap&amp; ? or even auto touchEvents = touchContext.touchEvents();

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:267
&gt; +        GdkEvent* storedEvent = it-&gt;value;
&gt; +        appendTouchEvent(touchPointList, storedEvent, touchPhaseFromEvents(storedEvent, event));

This could be just one line

appendTouchEvent(touchPointList, it-&gt;value, touchPhaseFromEvents(it-&gt;value, event));

&gt; Tools/DumpRenderTree/gtk/EventSender.cpp:917
&gt; +    return JSValueMakeUndefined(context);

We don&apos;t need to do anything here?

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:460
&gt; +    touchEvent-&gt;touch.sequence = (GdkEventSequence*) GINT_TO_POINTER(id);

Use C++ style cast

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:471
&gt; +    GdkEvent* event = createTouchEvent((GdkEventType) GDK_TOUCH_BEGIN, m_touchEvents.size() + 1);

Ditto.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:520
&gt; +    for (unsigned i = 0; i &lt; m_touchEvents.size(); ++i)
&gt; +        gdk_event_free(m_touchEvents[i]);

I think this could be something like:

for (auto event : m_touchEvents)
    gdk_event_free(event);

But now that we have GUniquePtr, we could use GUniquePtrGtk.h here, since it&apos;s implemented in the header and you could use it to define the Vector as something like Vector&lt;GUniquePtr&lt;GdkEvent&gt;&gt; m_touchEvents and then you wouldn&apos;t need the for loop.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:549
&gt; +    for (unsigned i = 0; i &lt; m_touchEvents.size(); ++i) {
&gt; +        GdkEvent* event = m_touchEvents[i];

This could probably be a modern loop too :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976743</commentid>
    <comment_count>28</comment_count>
      <attachid>223121</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2014-02-05 08:14:54 -0800</bug_when>
    <thetext>Comment on attachment 223121
rebased patch

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

I think I could do an informal review that should be reviewed by another reviewer. I hope you can make some use of my comments.

&gt; Source/WebCore/PlatformGTK.cmake:201
&gt; +    platform/gtk/GtkTouchContextHelper.cpp

Incorrectly sorted.

&gt; Source/WebCore/PlatformGTK.cmake:216
&gt; +    platform/gtk/PlatformTouchEventGtk.cpp

Why are you including this file? It doesn&apos;t seem to be in the build and it will break it. (And it would be incorrectly sorted).

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:36
&gt; +    for (auto it = m_touchEvents.begin(); it != m_touchEvents.end(); ++it)
&gt; +        gdk_event_free(it-&gt;value);

I guess you can avoid the loop if using GUniquePtr.

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:55
&gt; +    GdkEvent* event = m_touchEvents.take(sequence);
&gt; +    if (event)
&gt; +        gdk_event_free(event);
&gt; +
&gt; +    switch (touchEvent-&gt;type) {
&gt; +    case GDK_TOUCH_BEGIN:
&gt; +    case GDK_TOUCH_UPDATE:
&gt; +        m_touchEvents.set(sequence, gdk_event_copy(touchEvent));
&gt; +        break;
&gt; +    case GDK_TOUCH_END:
&gt; +        break;

If you use GUniquePtr you can avoid the take and just use remove in the _END.

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.h:41
&gt; +    GtkTouchContextHelper() { };

Can&apos;t this constructor go as Zan says?

&gt; Source/WebKit2/ChangeLog:31
&gt; +        * GNUmakefile.list.am:
&gt; +        * PlatformGTK.cmake:
&gt; +        * Shared/gtk/NativeWebTouchEventGtk.cpp:
&gt; +        * Shared/NativeWebTouchEvent.h:
&gt; +        (WebKit::NativeWebTouchEvent::nativeEvent):
&gt; +        (WebKit::NativeWebTouchEvent::touchContext): Add GTK+ implementation of NativeWebTouchEvent
&gt; +        * Shared/gtk/WebEventFactory.cpp:
&gt; +        (WebKit::touchPhaseFromEvents):
&gt; +        (WebKit::WebEventFactory::createWebTouchEvent): Add methods to generate NativeWebTouchEvents out
&gt; +        of GdkEventTouch events, a GtkTouchContextHelper object is used to hold information about all current
&gt; +        touches, in order to build information about all individual touchpoints.
&gt; +        * Shared/gtk/WebEventFactory.h:
&gt; +        * UIProcess/API/gtk/PageClientImpl.cpp:
&gt; +        (WebKit::PageClientImpl::doneWithTouchEvent): Implement pointer emulation if the pointer emulating
&gt; +        touch was unhandled.
&gt; +        * UIProcess/API/gtk/PageClientImpl.h:
&gt; +        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
&gt; +        (webkitWebViewBaseRealize): Listen for touch events
&gt; +        (webkitWebViewBaseTouchEvent):
&gt; +        (webkit_web_view_base_class_init): Add implementation for the touch_events() handler.

I think this could be a bit more descriptive.

&gt; Source/WebKit2/PlatformGTK.cmake:60
&gt; +    Shared/gtk/NativeWebTouchEventGtk.cpp

Incorrectly sorted.

&gt; Source/WebKit2/PlatformGTK.cmake:570
&gt; +        Shared/WebTouchEvent.cpp

Incorrectly sorted.

Also, Shared/WebPlatformTouchPoint.cpp is missing here, otherwise, it won&apos;t link.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:243
&gt; +    WebEvent::Type type = static_cast&lt;WebEvent::Type&gt;(0);

What about NoType instead of 0?

&gt; Source/cmake/OptionsGTK.cmake:69
&gt; +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS ON)

If both EFL and GTK have now ENABLE_TOUCH_EVENTS ON we could remove this line and the one for EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976746</commentid>
    <comment_count>29</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2014-02-05 08:31:50 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; &gt; Source/cmake/OptionsGTK.cmake:69
&gt; &gt; +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS ON)
&gt; 
&gt; If both EFL and GTK have now ENABLE_TOUCH_EVENTS ON we could remove this line and the one for EFL.

If you do that, to enable ON by default, you need to change Source/cmake/WebKitFeatures.cmake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977558</commentid>
    <comment_count>30</comment_count>
      <attachid>223391</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2014-02-06 15:19:16 -0800</bug_when>
    <thetext>Created attachment 223391
Updated patch, applies most suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977570</commentid>
    <comment_count>31</comment_count>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2014-02-06 15:36:23 -0800</bug_when>
    <thetext>I applied all suggestions, just a few comments below

(In reply to comment #27)
&gt; &gt; Source/WebCore/bindings/gobject/GNUmakefile.am:266
&gt; &gt; +	DerivedSources/webkitdom/WebKitDOMTouch.cpp \
&gt; &gt; +	DerivedSources/webkitdom/WebKitDOMTouchPrivate.h \
&gt; 
&gt; I wonder what happens with this API in wk1, I guess it simply won&apos;t work.

Yes. I did the bare minimum to have things compiling in WK1. That said, it should work
just like always wrt touch events, just knowing about pointer emulation.

&gt; &gt; Tools/DumpRenderTree/gtk/EventSender.cpp:917
&gt; &gt; +    return JSValueMakeUndefined(context);
&gt; 
&gt; We don&apos;t need to do anything here?

IIRC I had to add that so WK1 compiled after I added the touch IDLs to build, shouldn&apos;t be ever triggered.

(In reply to comment #28)
&gt; &gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.h:41
&gt; &gt; +    GtkTouchContextHelper() { };
&gt; 
&gt; Can&apos;t this constructor go as Zan says?
&gt; 

I tried and no dice, WTF_MAKE_NONCOPYABLE seems to like having a constructor

&gt; &gt; Source/WebKit2/ChangeLog:31
&gt; &gt; +        * GNUmakefile.list.am:
&gt; &gt; +        * PlatformGTK.cmake:
&gt; &gt; +        * Shared/gtk/NativeWebTouchEventGtk.cpp:
&gt; &gt; +        * Shared/NativeWebTouchEvent.h:
&gt; &gt; +        (WebKit::NativeWebTouchEvent::nativeEvent):
&gt; &gt; +        (WebKit::NativeWebTouchEvent::touchContext): Add GTK+ implementation of NativeWebTouchEvent
&gt; &gt; +        * Shared/gtk/WebEventFactory.cpp:
&gt; &gt; +        (WebKit::touchPhaseFromEvents):
&gt; &gt; +        (WebKit::WebEventFactory::createWebTouchEvent): Add methods to generate NativeWebTouchEvents out
&gt; &gt; +        of GdkEventTouch events, a GtkTouchContextHelper object is used to hold information about all current
&gt; &gt; +        touches, in order to build information about all individual touchpoints.
&gt; &gt; +        * Shared/gtk/WebEventFactory.h:
&gt; &gt; +        * UIProcess/API/gtk/PageClientImpl.cpp:
&gt; &gt; +        (WebKit::PageClientImpl::doneWithTouchEvent): Implement pointer emulation if the pointer emulating
&gt; &gt; +        touch was unhandled.
&gt; &gt; +        * UIProcess/API/gtk/PageClientImpl.h:
&gt; &gt; +        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
&gt; &gt; +        (webkitWebViewBaseRealize): Listen for touch events
&gt; &gt; +        (webkitWebViewBaseTouchEvent):
&gt; &gt; +        (webkit_web_view_base_class_init): Add implementation for the touch_events() handler.
&gt; 
&gt; I think this could be a bit more descriptive.

I tried being more verbose there :), but actually not a lot happens there, just plenty of data structure wrapping.

&gt; 
&gt; &gt; Source/WebKit2/PlatformGTK.cmake:570
&gt; &gt; +        Shared/WebTouchEvent.cpp
&gt; 
&gt; Incorrectly sorted.
&gt; 
&gt; Also, Shared/WebPlatformTouchPoint.cpp is missing here, otherwise, it won&apos;t link.

Good catch :)

&gt; 
&gt; If both EFL and GTK have now ENABLE_TOUCH_EVENTS ON we could remove this line and the one for EFL.

Yup, did that on WebKitFeatures.cmake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977890</commentid>
    <comment_count>32</comment_count>
      <attachid>223469</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2014-02-07 10:33:58 -0800</bug_when>
    <thetext>Created attachment 223469
patch

Minor fix. This patch uses HashSet on EventSenderProxy to track the updated events, so the code is easier to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977897</commentid>
    <comment_count>33</comment_count>
      <attachid>223469</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-02-07 10:38:57 -0800</bug_when>
    <thetext>Comment on attachment 223469
patch

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

&gt; Source/cmake/OptionsEfl.cmake:-92
&gt; -WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS ON)

I think this has the side-effect of enabling this for WinCE, so you should probably just switch the port default for GTK+.

&gt; Source/cmake/WebKitFeatures.cmake:112
&gt; -    WEBKIT_OPTION_DEFINE(ENABLE_TOUCH_EVENTS &quot;Toggle Touch Events support&quot; OFF)
&gt; +    WEBKIT_OPTION_DEFINE(ENABLE_TOUCH_EVENTS &quot;Toggle Touch Events support&quot; ON)

See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977906</commentid>
    <comment_count>34</comment_count>
      <attachid>223472</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2014-02-07 10:50:44 -0800</bug_when>
    <thetext>Created attachment 223472
patch, turn back to GTK+-only config options</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978556</commentid>
    <comment_count>35</comment_count>
      <attachid>223617</attachid>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2014-02-09 01:45:28 -0800</bug_when>
    <thetext>Created attachment 223617
patch, add missing symbol to webkitdom.symbols

About the gtk-wk1 build failing in the previous patch, it looked like another case of older files in DerivedSources/WebCore/... but it does build fine here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978561</commentid>
    <comment_count>36</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-02-09 02:13:32 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Created an attachment (id=223617) [details]
&gt; patch, add missing symbol to webkitdom.symbols
&gt; 
&gt; About the gtk-wk1 build failing in the previous patch, it looked like another case of older files in DerivedSources/WebCore/... but it does build fine here

It has happened again, I tried the patch as well locally and it built.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978566</commentid>
    <comment_count>37</comment_count>
      <attachid>223617</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-02-09 02:21:30 -0800</bug_when>
    <thetext>Comment on attachment 223617
patch, add missing symbol to webkitdom.symbols

Ok, it seems EWS bots need a clean build or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978577</commentid>
    <comment_count>38</comment_count>
      <attachid>223617</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-09 02:50:53 -0800</bug_when>
    <thetext>Comment on attachment 223617
patch, add missing symbol to webkitdom.symbols

Clearing flags on attachment: 223617

Committed r163749: &lt;http://trac.webkit.org/changeset/163749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978578</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-09 02:50:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978781</commentid>
    <comment_count>40</comment_count>
      <attachid>223617</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-10 01:13:29 -0800</bug_when>
    <thetext>Comment on attachment 223617
patch, add missing symbol to webkitdom.symbols

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

Landed a couple of fixes that were crashing the related tests in 
http://trac.webkit.org/changeset/163774

&gt; Source/WebCore/platform/gtk/GtkTouchContextHelper.cpp:40
&gt; +    case GDK_TOUCH_BEGIN: {
&gt; +        ASSERT(m_touchEvents.contains(sequence));

This ASSERT now checks for the opposite, which is what was most likely intended.

&gt; Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:475
&gt; +    m_touchEvents.append(std::move(event));
&gt; +    m_updatedTouchEvents.add(GPOINTER_TO_INT(event-&gt;touch.sequence));

std::move() moves the event object into the vector and invalidates the local variable, so dereferencing that variable caused crashes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219912</attachid>
            <date>2013-12-23 05:53:21 -0800</date>
            <delta_ts>2013-12-23 17:00:27 -0800</delta_ts>
            <desc>[GTK] Add touch events to WK2</desc>
            <filename>gtk-touch-events.patch</filename>
            <type>text/plain</type>
            <size>30228</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NmE3NDk4Li44OTBhYzJk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAg
ICAgIFtHVEtdIEVuYWJsZSB0b3VjaCBmZWF0dXJlcworCisgICAgICAgIHNldCBFTkFCTEVfVE9V
Q0hfRVZFTlRTIHRvIDEgaWYgYnVpbGRpbmcgd2l0aCBHVEsrCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9TZXR1cFdlYktp
dEZlYXR1cmVzLm00OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOiBz
ZXQgRU5BQkxFX1RPVUNIX0VWRU5UUyB0byAxLgorCiAyMDEzLTEyLTE4ICBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdW0NNYWtlXSBtYWtlIGxp
YmphdmFzY3JpcHRjb3JlZ3RrIGEgcHVibGljIHNoYXJlZCBsaWJyYXJ5IGFnYWluCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYjNiNTJjYi4uODkxMDhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEz
LTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAgICAgICBb
R1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29kZSB0byBidWlsZAorCisgICAgICAgIEJ1
aWxkaW5nIGFuZCBsaW5raW5nIHRvIHRoYXQgY29kZSBpcyBuZWNlc3NhcnkgaWYgdGhlIEdUSyBj
b2RlIGlzIHRvIGltcGxlbWVudAorICAgICAgICB0b3VjaCBldmVudHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oOiBBZGQgaGVscGVyIG9i
amVjdCB0byB0cmFjayBhbGwgdG91Y2hwb2ludHMsIGhhbmR5CisgICAgICAgIHdoZW4gY3JlYXRp
bmcgV2ViVG91Y2hFdmVudHMuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1h
a2VmaWxlLmFtOiBBZGQgdG91Y2ggcmVsYXRlZCBjb2RlIGFuZCBpZGxzIHRvIGJ1aWxkCisKIDIw
MTMtMTItMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTT1VQXSBSZXNvdXJjZUhhbmRsZVNvdXAgc2hvdWxkIHVzZSBhc3luYyBjbGllbnQg
Y2FsbGJhY2tzIHdoZW4gY2xpZW50IHVzZXMgYXN5bmMgY2FsbGJhY2tzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCAzNjAzM2RiLi4xYWRjYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTMwMTcsOCArMzAxNywxMSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0Tm9kZVRyYXZlcnNhbC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0Tm9kZVRyYXZlcnNhbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VG91Y2guaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vVG91Y2hFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hMaXN0
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVHJhbnNmb3JtU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2Zvcm1T
b3VyY2VMaWJ4c2x0LmNwcCBcCkBAIC02MjQ4LDYgKzYyNTEsOCBAQCBwbGF0Zm9ybWd0a19zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BvcHVwTWVudS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1ZlcnNpb25pbmcuYyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGFjNWE5OTYu
LjkwODljMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xODEsNiArMTgxLDcgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ndGsv
R1JlZlB0ckd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCiAgICAgcGxh
dGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5jcHAKKyAgICBwbGF0Zm9ybS9ndGsvR3RrVG91Y2hD
b250ZXh0SGVscGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwCiAgICAgcGxhdGZv
cm0vZ3RrL0d0a1BsdWdpbldpZGdldC5jcHAKQEAgLTE5NSw2ICsxOTYsNyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlUGxhdGZvcm1HVEtfU09VUkNFUwogICAgIHBsYXRmb3JtL2d0ay9NYWluRnJhbWVT
Y3JvbGxiYXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCiAgICAg
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCisgICAgcGxhdGZvcm0vZ3RrL1BsYXRm
b3JtVG91Y2hFdmVudEd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCiAg
ICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcApAQCAtNjIxLDYgKzYyMywxMiBA
QCBpZiAoRU5BQkxFX1dFQktJVDIpCiAgICAgICAgIHhtbC9YUGF0aFJlc3VsdC5pZGwKICAgICAp
CiAKKyAgICBpZiAoRU5BQkxFX1RPVUNIX0VWRU5UUykKKyAgICAgICAgbGlzdChBUFBFTkQgR09i
amVjdERPTUJpbmRpbmdzX0lETF9GSUxFUworICAgICAgICAgICAgZG9tL1RvdWNoLmlkbAorICAg
ICAgICApCisgICAgZW5kaWYgKCkKKwogICAgIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dF
Ql9BVURJTykKICAgICAgICAgbGlzdChBUFBFTkQgR09iamVjdERPTUJpbmRpbmdzX0lETF9GSUxF
UwogICAgICAgICAgICAgaHRtbC9IVE1MQXVkaW9FbGVtZW50LmlkbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KaW5kZXggNjg2NGUxMC4uZGY0MmNm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmls
ZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFt
CkBAIC0yNjIsNiArMjYyLDggQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyArPSBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVN0eWxlU2hlZXRQcml2YXRlLmggXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01Ub3VjaC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01Ub3VjaFByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTVRpbWVSYW5nZXMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0
RE9NVGltZVJhbmdlc1ByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktp
dERPTVRyZWVXYWxrZXIuY3BwIFwKQEAgLTMyMyw2ICszMjUsNyBAQCB3ZWJraXRndGtfZ2RvbV9i
dWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
UmFuZ2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHQuaCBcCisJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRvdWNoLmggXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmVlV2Fsa2VyLmggXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01VSUV2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9X
ZWJLaXRET01CbG9iLmggXApAQCAtNDMyLDYgKzQzNSw3IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0
X2hfYXBpICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vd2Via2l0ZG9tLmggXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLmgKIAorCiBpZiBFTkFCTEVf
VklERU8KIHdlYmtpdGd0a19nZG9tX2J1aWx0X2hfYXBpICs9IFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYmI0MGI0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3Nn
QGdub21lLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd0
a1RvdWNoQ29udGV4dEhlbHBlci5oIgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitHdGtUb3VjaENvbnRleHRIZWxwZXI6Okd0a1RvdWNoQ29udGV4dEhlbHBl
cigpCit7Cit9CisKK2Jvb2wgR3RrVG91Y2hDb250ZXh0SGVscGVyOjpoYW5kbGUoR2RrRXZlbnQg
KnRvdWNoRXZlbnQpCit7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgNCwgMCkKKyAgICB1aW50
MzJfdCBzZXF1ZW5jZTsKKworICAgIHNlcXVlbmNlID0gR1BPSU5URVJfVE9fVUlOVCAoZ2RrX2V2
ZW50X2dldF9ldmVudF9zZXF1ZW5jZSAodG91Y2hFdmVudCkpOworCisgICAgc3dpdGNoICh0b3Vj
aEV2ZW50LT50eXBlKSB7CisgICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgY2FzZSBHREtf
VE9VQ0hfVVBEQVRFOgorICAgICAgICBtX3RvdWNoRXZlbnRzLnNldChzZXF1ZW5jZSwgdG91Y2hF
dmVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAg
bV90b3VjaEV2ZW50cy5yZW1vdmUgKHNlcXVlbmNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyNlbmRpZiAvL0dUS19DSEVDS19W
RVJTSU9OCisKKyAgICByZXR1cm4gVFJVRTsKK30KKworVmVjdG9yPEdka0V2ZW50Kj4gR3RrVG91
Y2hDb250ZXh0SGVscGVyOjpnZXRUb3VjaEV2ZW50cyh2b2lkKSBjb25zdAoreworICAgIFZlY3Rv
cjxHZGtFdmVudCo+IHRvdWNoRXZlbnRzOworICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3RvdWNo
RXZlbnRzLCB0b3VjaEV2ZW50cyk7CisgICAgcmV0dXJuIHRvdWNoRXZlbnRzOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrVG91Y2hDb250ZXh0SGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjY2ZTgxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gKKyNkZWZpbmUgR3RrVG91Y2hDb250
ZXh0SGVscGVyX2gKKworI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordHlwZWRlZiB1bmlvbiBfR2RrRXZl
bnQgR2RrRXZlbnQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3RrVG91Y2hDb250
ZXh0SGVscGVyIHsKK3B1YmxpYzoKKyAgICBHdGtUb3VjaENvbnRleHRIZWxwZXIoKTsKKyAgICBi
b29sIGhhbmRsZShHZGtFdmVudCopOworICAgIFZlY3RvcjxHZGtFdmVudCo+IGdldFRvdWNoRXZl
bnRzKHZvaWQpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhhc2hNYXA8dWludDMyX3QsIEdka0V2
ZW50Kj4gbV90b3VjaEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNTllMmRmOS4uZjM0YTg2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3Nn
QGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBbGxvdyBidWlsZGluZyB3aXRoIHRvdWNoIGV2
ZW50cyBlbmFibGVkCisKKyAgICAgICAgRXZlbiB0aG91Z2ggV2ViS2l0MSBHVEsgY29kZSBkb2Vz
bid0IGltcGxlbWVudCB0b3VjaCBldmVudHMsCisgICAgICAgIEZpeCBidWlsZCBpZiBFTkFCTEVf
VE9VQ0hfRVZFTlRTIGlzIHByZXNlbnQgZm9yIFdLMi4KKworICAgICAgICBOZWVkIHRoZSBidWcg
VVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50OjpuZWVkVG91Y2hFdmVudHMpOiBBZGQgZW1wdHkgc3R1YgorCiAyMDEz
LTEyLTIwICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gVGhlIGZ1bGxzY3JlZW4gQVBJIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRl
ZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmgKaW5kZXggNTFkNDNhYS4uNTQ0ZWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTE0NCw2ICsxNDQsMTAg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZl
bnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpIHsgfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICAgICAgdmlydHVhbCB2b2lkIG5lZWRUb3VjaEV2ZW50cyhib29sKSB7IH0KKyNlbmRp
ZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAKICAgICAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiwgR3JhcGhpY3NMYXllciopOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGMzMGIwNGQuLjhjOWQxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NiBAQAorMjAxMy0xMi0yMyAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisK
KyAgICAgICAgW0dUS10gSW1wbGVtZW50IHN1cHBvcnQgdG91Y2ggZXZlbnRzCisKKyAgICAgICAg
SW4gR1RLKyA+PSAzLjQuMCwgR2RrRXZlbnRUb3VjaCBpcyBhdmFpbGFibGUgdG8gaW5mb3JtIGFi
b3V0IG11bHRpdG91Y2ggZXZlbnRzLiBVc2UgdGhlc2UgdG8gaW1wbGVtZW50CisgICAgICAgIHRv
dWNoIGV2ZW50cyBvbiB0aGlzIHBsYXRmb3JtLiBJZiBhIHRvdWNoIGlzIGxlZnQgdW5oYW5kbGVk
IGFuZCBpcyB0aGUgInBvaW50ZXIgZW11bGF0aW5nIiBvbmUsIG1vdXNlCisgICAgICAgIGV2ZW50
cyB3aWxsIGJlIGdlbmVyYXRlZCBhcyBhIGZhbGxiYWNrLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL05hdGl2ZVdlYlRv
dWNoRXZlbnRHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6Om5hdGl2ZUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6dG91Y2hDb250ZXh0KTogQWRkIEdU
SysgaW1wbGVtZW50YXRpb24gb2YgTmF0aXZlV2ViVG91Y2hFdmVudAorICAgICAgICAqIFNoYXJl
ZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG91Y2hQaGFzZUZy
b21FdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRv
dWNoRXZlbnQpOiBBZGQgbWV0aG9kcyB0byBnZW5lcmF0ZSBOYXRpdmVXZWJUb3VjaEV2ZW50cyBv
dXQKKyAgICAgICAgb2YgR2RrRXZlbnRUb3VjaCBldmVudHMsIGEgR3RrVG91Y2hDb250ZXh0SGVs
cGVyIG9iamVjdCBpcyB1c2VkIHRvIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGN1cnJlbnQK
KyAgICAgICAgdG91Y2hlcywgaW4gb3JkZXIgdG8gYnVpbGQgaW5mb3JtYXRpb24gYWJvdXQgYWxs
IGluZGl2aWR1YWwgdG91Y2hwb2ludHMuCisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZh
Y3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQpOiBJ
bXBsZW1lbnQgcG9pbnRlciBlbXVsYXRpb24gaWYgdGhlIHBvaW50ZXIgZW11bGF0aW5nCisgICAg
ICAgIHRvdWNoIHdhcyB1bmhhbmRsZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUpOiBMaXN0ZW4gZm9y
IHRvdWNoIGV2ZW50cworICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VUb3VjaEV2ZW50KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQpOiBBZGQgaW1wbGVtZW50YXRp
b24gZm9yIHRoZSB0b3VjaF9ldmVudHMoKSBoYW5kbGVyLgorCiAyMDEzLTEyLTIxICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBUZXN0
IC93ZWJraXQyL1dlYktpdFdlYlJlc291cmNlL21pbWUtdHlwZSBmYWlscyB3aGVuIHJ1biBhZnRl
ciAvd2Via2l0Mi9XZWJLaXRXZWJWaWV3L3Jlc291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggN2VjZjA3NS4uMDYzNzAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC00OTMsNiArNDkzLDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IGU3YTlhOTQuLjlkYzNlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC00Niw2ICs0Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9n
dGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdl
Yk1vdXNlRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50R3Rr
LmNwcAorICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICBTaGFy
ZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAKICAgICBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxl
UGF0aEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTU0MSwx
MiArNTQyLDE0IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1MpCiAgICAgICAgIFNoYXJlZC9X
ZWJLaXQySW5pdGlhbGl6ZS5jcHAKICAgICAgICAgU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCiAg
ICAgICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAorICAgICAgICBTaGFyZWQvV2ViVG91Y2hF
dmVudC5jcHAKIAogICAgICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3Bw
CiAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcAogICAg
ICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCiAgICAgICAgIFNoYXJl
ZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICAgICAgU2hhcmVkL2d0ay9OYXRp
dmVXZWJUb3VjaEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCmluZGV4IDBkNGIy
Y2YuLmRlOTE5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJU
b3VjaEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZl
bnQuaApAQCAtMzEsOSArMzEsMTEgQEAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogT0JKQ19DTEFTUyBVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6
ZXI7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQotCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYg
UExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgordHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZl
bnQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtNDYsOCArNDgsMTIgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBleHBs
aWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXpl
ciAqKTsKICAgICBjb25zdCBVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIqIG5hdGl2
ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQotI2VuZGlmCi0j
aWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIE5hdGl2ZVdlYlRvdWNo
RXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYpOworICAgIE5hdGl2ZVdlYlRvdWNoRXZl
bnQoR2RrRXZlbnQqLFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYpOworICAgIGNvbnN0
IEdka0V2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0
KCk7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImIHRvdWNoQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hDb250ZXh0OyB9CisjZWxpZiBQTEFURk9STShF
RkwpCiAgICAgTmF0aXZlV2ViVG91Y2hFdmVudChFd2tUb3VjaEV2ZW50KiwgY29uc3QgV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtJik7CiAgICAgY29uc3QgRXdrVG91Y2hFdmVudCogbmF0aXZlRXZl
bnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CiAjZW5kaWYKQEAgLTU1
LDggKzYxLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJl
dGFpblB0cjxVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXI+IG1fbmF0aXZlRXZlbnQ7
Ci0jZW5kaWYKLSNpZiBQTEFURk9STShFRkwpCisjZWxpZiBQTEFURk9STShHVEspCisgICAgR093
blB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKKyAgICBjb25zdCBXZWJDb3JlOjpHdGtUb3Vj
aENvbnRleHRIZWxwZXImIG1fdG91Y2hDb250ZXh0OworI2VsaWYgUExBVEZPUk0oRUZMKQogICAg
IFJlZlB0cjxFd2tUb3VjaEV2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkxMjNhYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5j
cHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBDYXJsb3MgR2Fy
bmFjaG8gPGNhcmxvc2dAZ25vbWUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgorCisjaW5jbHVkZSAiV2ViRXZlbnRG
YWN0b3J5LmgiCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChHZGtFdmVudCogZXZlbnQs
IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgY29udGV4dCkKKyAgICA6IFdlYlRvdWNo
RXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KGV2ZW50LCBjb250ZXh0
KSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKQorICAgICwgbV90
b3VjaENvbnRleHQoY29udGV4dCkKK3sKK30KKworTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZl
V2ViVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKKyAgICA6IFdl
YlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KGV2ZW50Lm5h
dGl2ZUV2ZW50KCksIGV2ZW50LnRvdWNoQ29udGV4dCgpKSkKKyAgICAsIG1fbmF0aXZlRXZlbnQo
Z2RrX2V2ZW50X2NvcHkoZXZlbnQubmF0aXZlRXZlbnQoKSkpCisgICAgLCBtX3RvdWNoQ29udGV4
dChldmVudC50b3VjaENvbnRleHQoKSkKK3sKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBj
Yjg4YTgyLi4zMWZlOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVu
dEZhY3RvcnkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAj
aW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1Zl
cnNpb25pbmcuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgog
I2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4K
QEAgLTIwMyw0ICsyMDQsODUgQEAgV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdka19ldmVudF9nZXRfdGltZShldmVudCkpOwogfQogCisjaWYgR1RL
X0NIRUNLX1ZFUlNJT04oMywgNCwgMCkKKworc3RhdGljIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hQb2ludFN0YXRlIHRvdWNoUGhhc2VGcm9tRXZlbnRzKGNvbnN0IEdka0V2ZW50ICpjdXJy
ZW50LCBjb25zdCBHZGtFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKGdka19ldmVudF9nZXRfZXZl
bnRfc2VxdWVuY2UgKGN1cnJlbnQpID09IGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2UgKGV2
ZW50KSkgeworICAgICAgICBpZiAoY3VycmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfVVBEQVRFKQor
ICAgICAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAg
ICAgICAgZWxzZSBpZiAoY3VycmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfQkVHSU4pCisgICAgICAg
ICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQ7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9u
YXJ5OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKK30KKworI2VuZGlmIC8vIEdUS19D
SEVDS19WRVJTSU9OCisKK1dlYlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJU
b3VjaEV2ZW50KGNvbnN0IEdka0V2ZW50ICpldmVudCwgY29uc3QgV2ViQ29yZTo6R3RrVG91Y2hD
b250ZXh0SGVscGVyJiB0b3VjaENvbnRleHQpCit7CisgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91
Y2hQb2ludD4gdG91Y2hQb2ludExpc3Q7CisKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0LCAw
KQorICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJFdmVudDo6VHlwZT4o
MCk7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7CisgICAgY2FzZSBHREtfVE9VQ0hfQkVH
SU46CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6VG91Y2hTdGFydDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6OlRv
dWNoTW92ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAgICAg
ICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoRW5kOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQgKCk7CisgICAgfQorCisgICAgVmVjdG9yPEdk
a0V2ZW50Kj4gdG91Y2hFdmVudHM7CisgICAgdG91Y2hFdmVudHMgPSB0b3VjaENvbnRleHQuZ2V0
VG91Y2hFdmVudHMoKTsKKyAgICB0b3VjaFBvaW50TGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHRvdWNoRXZlbnRzLnNpemUoKSArIDEpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRvdWNoRXZlbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHVpbnQzMl90IGlkZW50aWZpZXIg
PSBHUE9JTlRFUl9UT19VSU5UIChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlICh0b3VjaEV2
ZW50c1tpXSkpOworCisgICAgICAgIGdkb3VibGUgeCwgeTsKKyAgICAgICAgZ2RrX2V2ZW50X2dl
dF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7CisKKyAgICAgICAgZ2RvdWJsZSByb290X3gsIHJvb3Rf
eTsKKyAgICAgICAgZ2RrX2V2ZW50X2dldF9yb290X2Nvb3JkcyAoZXZlbnQsICZyb290X3gsICZy
b290X3kpOworCisgICAgICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludCB0b3VjaFBvaW50KGlkZW50
aWZpZXIsIHRvdWNoUGhhc2VGcm9tRXZlbnRzIChldmVudCwgdG91Y2hFdmVudHNbaV0pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChyb290X3gsIHJv
b3RfeSksIEludFBvaW50KHgsIHkpKTsKKyAgICAgICAgdG91Y2hQb2ludExpc3QudW5jaGVja2Vk
QXBwZW5kKHRvdWNoUG9pbnQpOworICAgIH0KKworICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtf
VE9VQ0hfRU5EKSB7CisgICAgICAgIC8vIFRvdWNoIHdhcyBhbHJlYWR5IHJlbW92ZWQgZnJvbSB0
aGUgR3RrVG91Y2hDb250ZXh0SGVscGVyLCBhZGQgaXQgaGVyZQorICAgICAgICB1aW50MzJfdCBp
ZGVudGlmaWVyID0gR1BPSU5URVJfVE9fVUlOVCAoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5j
ZSAoZXZlbnQpKTsKKworICAgICAgICBnZG91YmxlIHgsIHk7CisgICAgICAgIGdka19ldmVudF9n
ZXRfY29vcmRzKGV2ZW50LCAmeCwgJnkpOworCisgICAgICAgIGdkb3VibGUgcm9vdF94LCByb290
X3k7CisgICAgICAgIGdka19ldmVudF9nZXRfcm9vdF9jb29yZHMgKGV2ZW50LCAmcm9vdF94LCAm
cm9vdF95KTsKKworICAgICAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQgdG91Y2hQb2ludChpZGVu
dGlmaWVyLCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHJvb3RfeCwgcm9vdF95KSwg
SW50UG9pbnQoeCwgeSkpOworICAgICAgICB0b3VjaFBvaW50TGlzdC51bmNoZWNrZWRBcHBlbmQo
dG91Y2hQb2ludCk7CisgICAgfQorCisgICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQgKHR5cGUsIHRv
dWNoUG9pbnRMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVu
dChldmVudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpIGdka19ldmVudF9n
ZXRfdGltZShldmVudCkpOworI2Vsc2UKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCAoKTsKKyNl
bmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IDA4NTgxNWMu
LmZjMzAyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRG
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rvcnku
aApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbXBvc2l0aW9uUmVzdWx0cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hD
b250ZXh0SGVscGVyLmg+CiAKIHR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogCkBA
IC0zOSw2ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVX
ZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiwgaW50KTsKICAgICBzdGF0aWMgV2ViV2hlZWxF
dmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50Kik7CiAgICAgc3RhdGljIFdl
YktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCosIGNv
bnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYpOworICAgIHN0YXRpYyBXZWJUb3VjaEV2
ZW50IGNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpH
dGtUb3VjaENvbnRleHRIZWxwZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CmluZGV4IGVlZDY0OWIuLjdiYWQ2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTMzMiw2ICszMzIsNTQgQEAgdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6YmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBJbnRSZWN0JiBpbml0
aWFsRnJhbWUsIGNvbnN0IEludFIKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVu
dCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIGlmICh3YXNFdmVudEhhbmRs
ZWQpCisgICAgICAgIHJldHVybjsKKworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDQsIDApCisg
ICAgLy8gZW11bGF0ZSBwb2ludGVyIGV2ZW50cyBpZiB1bmhhbmRsZWQKKyAgICBjb25zdCBHZGtF
dmVudCAqdG91Y2hfZXZlbnQgPSBldmVudC5uYXRpdmVFdmVudCgpOworCisgICAgaWYgKCF0b3Vj
aF9ldmVudC0+dG91Y2guZW11bGF0aW5nX3BvaW50ZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IEdka0V2ZW50ICpwb2ludGVyX2V2ZW50OworCisgICAgaWYgKHRvdWNoX2V2ZW50LT50eXBlID09
IEdES19UT1VDSF9VUERBVEUpIHsKKyAgICAgICAgcG9pbnRlcl9ldmVudCA9IGdka19ldmVudF9u
ZXcgKEdES19NT1RJT05fTk9USUZZKTsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+bW90aW9uLnRp
bWUgPSB0b3VjaF9ldmVudC0+dG91Y2gudGltZTsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+bW90
aW9uLnggPSB0b3VjaF9ldmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+bW90
aW9uLnkgPSB0b3VjaF9ldmVudC0+dG91Y2gueTsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+bW90
aW9uLnhfcm9vdCA9IHRvdWNoX2V2ZW50LT50b3VjaC54X3Jvb3Q7CisgICAgICAgIHBvaW50ZXJf
ZXZlbnQtPm1vdGlvbi55X3Jvb3QgPSB0b3VjaF9ldmVudC0+dG91Y2gueV9yb290OworICAgICAg
ICBwb2ludGVyX2V2ZW50LT5tb3Rpb24uc3RhdGUgPSB0b3VjaF9ldmVudC0+dG91Y2guc3RhdGUg
fCBHREtfQlVUVE9OMV9NQVNLOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh0b3VjaF9ldmVu
dC0+dHlwZSA9PSBHREtfVE9VQ0hfQkVHSU4pIHsKKyAgICAgICAgICAgIHBvaW50ZXJfZXZlbnQg
PSBnZGtfZXZlbnRfbmV3IChHREtfQlVUVE9OX1BSRVNTKTsKKyAgICAgICAgfSBlbHNlIGlmICh0
b3VjaF9ldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKSB7CisgICAgICAgICAgICBwb2ludGVy
X2V2ZW50ID0gZ2RrX2V2ZW50X25ldyAoR0RLX0JVVFRPTl9SRUxFQVNFKTsKKyAgICAgICAgICAg
IHBvaW50ZXJfZXZlbnQtPmJ1dHRvbi5zdGF0ZSA9IHRvdWNoX2V2ZW50LT50b3VjaC5zdGF0ZSB8
IEdES19CVVRUT04xX01BU0s7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHBvaW50ZXJfZXZlbnQtPmJ1dHRv
bi50aW1lID0gdG91Y2hfZXZlbnQtPnRvdWNoLnRpbWU7CisgICAgICAgIHBvaW50ZXJfZXZlbnQt
PmJ1dHRvbi54ID0gdG91Y2hfZXZlbnQtPnRvdWNoLng7CisgICAgICAgIHBvaW50ZXJfZXZlbnQt
PmJ1dHRvbi55ID0gdG91Y2hfZXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBvaW50ZXJfZXZlbnQt
PmJ1dHRvbi54X3Jvb3QgPSB0b3VjaF9ldmVudC0+dG91Y2gueF9yb290OworICAgICAgICBwb2lu
dGVyX2V2ZW50LT5idXR0b24ueV9yb290ID0gdG91Y2hfZXZlbnQtPnRvdWNoLnlfcm9vdDsKKyAg
ICB9CisKKyAgICBwb2ludGVyX2V2ZW50LT5hbnkud2luZG93ID0gR0RLX1dJTkRPVyAoZ19vYmpl
Y3RfcmVmICh0b3VjaF9ldmVudC0+YW55LndpbmRvdykpOworICAgIHBvaW50ZXJfZXZlbnQtPmFu
eS5zZW5kX2V2ZW50ID0gVFJVRTsKKworICAgIGd0a193aWRnZXRfZXZlbnQgKG1fdmlld1dpZGdl
dCwgcG9pbnRlcl9ldmVudCk7CisgICAgZ2RrX2V2ZW50X2ZyZWUgKHBvaW50ZXJfZXZlbnQpOwor
I2VuZGlmIC8vR1RLX0NIRUNLX1ZFUlNJT04KK30KKworCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGUwYzE4ZTUuLjRkN2Qx
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaApAQCAtMTIyLDYgKzEyMiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBi
ZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFtZSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmluYWxGcmFtZSkgT1ZFUlJJREU7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hF
dmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIE9W
RVJSSURFOworI2VuZGlmCisKICAgICAvLyBNZW1iZXJzIG9mIFBhZ2VDbGllbnRJbXBsIGNsYXNz
CiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVy
IG1fdW5kb0NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggYzc4YzRlNy4uZWU0Mzc0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0
ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrQ2xpY2tDb3VudGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HdGtEcmFnQW5kRHJvcEhlbHBlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hD
b250ZXh0SGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CkBAIC0xMTEsNiArMTEyLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUgewogICAgIEdPd25QdHI8R2RrRXZlbnQ+IGNvbnRleHRNZW51RXZlbnQ7CiAgICAgV2Vi
Q29udGV4dE1lbnVQcm94eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQcm94eTsKICAgICBXZWJWaWV3
QmFzZUlucHV0TWV0aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVyOworICAgIEd0a1RvdWNoQ29u
dGV4dEhlbHBlciB0b3VjaENvbnRleHQ7CiAKICAgICBHdGtXaW5kb3cqIHRvcGxldmVsT25TY3Jl
ZW5XaW5kb3c7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFJlc2l6ZUdyaXBWaXNpYmlsaXR5
SUQ7CkBAIC0yNzMsNyArMjc1LDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFs
aXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgICAgICB8IEdES19CVVRUT05fTU9USU9OX01BU0sK
ICAgICAgICAgfCBHREtfQlVUVE9OMV9NT1RJT05fTUFTSwogICAgICAgICB8IEdES19CVVRUT04y
X01PVElPTl9NQVNLCi0gICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0s7CisgICAgICAg
IHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0sKKyAgICAgICAgfCBHREtfVE9VQ0hfTUFTSzsKIAog
ICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dBX1ZJ
U1VBTDsKIApAQCAtNzEzLDYgKzcxNiwyMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmll
d0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNbwogICAg
IHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VUb3Vj
aEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFRvdWNoKiBldmVudCkKK3sKKyAgICBX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRn
ZXQpOworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5w
cml2OworCisgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0aW9uRGlhbG9nKQorICAgICAgICByZXR1
cm4gVFJVRTsKKworICAgIHByaXYtPnRvdWNoQ29udGV4dC5oYW5kbGUgKHJlaW50ZXJwcmV0X2Nh
c3Q8R2RrRXZlbnQqPihldmVudCkpOworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlVG91Y2hF
dmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVu
dCksIHByaXYtPnRvdWNoQ29udGV4dCkpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZVF1ZXJ5VG9vbHRpcChHdGtXaWRnZXQqIHdpZGdl
dCwgZ2ludCB4LCBnaW50IHksIGdib29sZWFuIGtleWJvYXJkTW9kZSwgR3RrVG9vbHRpcCogdG9v
bHRpcCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VC
X1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2OwpAQCAtODk3LDYgKzkxNCw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyog
d2Via2l0V2ViVmllCiAgICAgd2lkZ2V0Q2xhc3MtPmJ1dHRvbl9yZWxlYXNlX2V2ZW50ID0gd2Vi
a2l0V2ViVmlld0Jhc2VCdXR0b25SZWxlYXNlRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnNjcm9s
bF9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlU2Nyb2xsRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3Mt
Pm1vdGlvbl9ub3RpZnlfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZU1vdGlvbk5vdGlmeUV2ZW50
OworICAgIHdpZGdldENsYXNzLT50b3VjaF9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hF
dmVudDsKICAgICB3aWRnZXRDbGFzcy0+cXVlcnlfdG9vbHRpcCA9IHdlYmtpdFdlYlZpZXdCYXNl
UXVlcnlUb29sdGlwOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgd2lkZ2V0Q2xhc3Mt
PmRyYWdfZW5kID0gd2Via2l0V2ViVmlld0Jhc2VEcmFnRW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1
cFdlYktpdEZlYXR1cmVzLm00CmluZGV4IDY0N2MyODQ0Li5iM2RlYTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKKysrIGIvU291cmNlL2F1dG90
b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CkBAIC0xNzYsNyArMTc2LDcgQEAgJHNyY2Rpci9U
b29scy9ndGsvZ2VuZXJhdGUtZmVhdHVyZS1kZWZpbmVzLWZpbGVzICRDT05GSUdVUkFCTEVfRkVB
VFVSRV9ERUZJTkVTIFwKICAgICBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDPTFc
CiAgICAgRU5BQkxFX1RFWFRfQVVUT1NJWklORz0wIFwKICAgICBFTkFCTEVfVEhSRUFERURfSFRN
TF9QQVJTRVI9MCBcCi0gICAgRU5BQkxFX1RPVUNIX0VWRU5UUz0wIFwKKyAgICBFTkFCTEVfVE9V
Q0hfRVZFTlRTPTEgXAogICAgIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MCBcCiAgICAgRU5B
QkxFX1VTRVJfVElNSU5HPTAgXAogICAgIEVOQUJMRV9WSUJSQVRJT049MCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RL
LmNtYWtlCmluZGV4IGNlNjA0MjQuLjA0Y2E2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0z
OSw3ICszOSw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFE
T1dfRE9NIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFS
RURfV09SS0VSUyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9T
UEVMTENIRUNLIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RF
TVBMQVRFX0VMRU1FTlQgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfVE9VQ0hfRVZFTlRTIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfVVNFUlNFTEVDVF9BTEwgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfVklCUkFUSU9OIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9WSURFTyBPTikK
</data>
<flag name="review"
          id="243577"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="243578"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219943</attachid>
            <date>2013-12-23 17:00:27 -0800</date>
            <delta_ts>2013-12-23 17:18:51 -0800</delta_ts>
            <desc>A more polished patch, passes style checks locally</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>29866</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NmE3NDk4Li4xMDFhZjAz
NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVh
dHVyZXMubTQ6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IHNldCBF
TkFCTEVfVE9VQ0hfRVZFTlRTIHRvIDEgaWYgYnVpbGRpbmcgd2l0aCBHVEsrLgorCiAyMDEzLTEy
LTE4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtH
VEtdW0NNYWtlXSBtYWtlIGxpYmphdmFzY3JpcHRjb3JlZ3RrIGEgcHVibGljIHNoYXJlZCBsaWJy
YXJ5IGFnYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNiNTJjYi4uNjlmZjg1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21l
Lm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29kZSB0byBi
dWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5
MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sg
YWxsIHRvdWNocG9pbnRzLCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZl
bnRzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1H
VEsuY21ha2U6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRk
IHRvdWNoIHJlbGF0ZWQgY29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAg
IG5lY2Vzc2FyeSBub3cgdGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDEz
LTEyLTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbU09VUF0gUmVzb3VyY2VIYW5kbGVTb3VwIHNob3VsZCB1c2UgYXN5bmMgY2xpZW50IGNh
bGxiYWNrcyB3aGVuIGNsaWVudCB1c2VzIGFzeW5jIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggMzYwMzNkYi4uMWFkY2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zMDE3LDggKzMwMTcsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBc
CisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291
cmNlTGlieHNsdC5jcHAgXApAQCAtNjI0OCw2ICs2MjUxLDggQEAgcGxhdGZvcm1ndGtfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtWZXJzaW9uaW5nLmMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhYzVhOTk2Li45
MDg5YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgxLDYgKzE4MSw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0dS
ZWZQdHJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9HdGtDbGlja0NvdW50ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29u
dGV4dEhlbHBlci5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3Bw
CiAgICAgcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIHBsYXRmb3Jt
L2d0ay9HdGtQbHVnaW5XaWRnZXQuY3BwCkBAIC0xOTUsNiArMTk2LDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Ny
b2xsYmFyR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9y
bVRvdWNoRXZlbnRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dEd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKQEAgLTYyMSw2ICs2MjMsMTIgQEAg
aWYgKEVOQUJMRV9XRUJLSVQyKQogICAgICAgICB4bWwvWFBhdGhSZXN1bHQuaWRsCiAgICAgKQog
CisgICAgaWYgKEVOQUJMRV9UT1VDSF9FVkVOVFMpCisgICAgICAgIGxpc3QoQVBQRU5EIEdPYmpl
Y3RET01CaW5kaW5nc19JRExfRklMRVMKKyAgICAgICAgICAgIGRvbS9Ub3VjaC5pZGwKKyAgICAg
ICAgKQorICAgIGVuZGlmICgpCisKICAgICBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJf
QVVESU8pCiAgICAgICAgIGxpc3QoQVBQRU5EIEdPYmplY3RET01CaW5kaW5nc19JRExfRklMRVMK
ICAgICAgICAgICAgIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IDY4NjRlMTAuLmRmNDJjZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpA
QCAtMjYyLDYgKzI2Miw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01TdHlsZVNoZWV0UHJpdmF0ZS5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVG91Y2guY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NVG91Y2hQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01UaW1lUmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERP
TVRpbWVSYW5nZXNQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UcmVlV2Fsa2VyLmNwcCBcCkBAIC0zMjMsNiArMzI1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVp
bHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVJh
bmdlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0LmggXAorCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Ub3VjaC5oIFwKIAlEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NVHJlZVdhbGtlci5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJr
aXRkb20vV2ViS2l0RE9NVUlFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NQmxvYi5oIFwKQEAgLTQzMiw2ICs0MzUsNyBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9o
X2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbS5oIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy5oCiAKKwogaWYgRU5BQkxFX1ZJ
REVPCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2suaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE1YzM1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmNwcApAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bn
bm9tZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHdGtU
b3VjaENvbnRleHRIZWxwZXIuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitHdGtUb3VjaENvbnRleHRIZWxwZXI6Okd0a1RvdWNoQ29udGV4dEhlbHBl
cigpCit7Cit9CisKK2Jvb2wgR3RrVG91Y2hDb250ZXh0SGVscGVyOjpoYW5kbGVFdmVudChHZGtF
dmVudCAqdG91Y2hFdmVudCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICB1aW50
MzJfdCBzZXF1ZW5jZSA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1
ZW5jZSh0b3VjaEV2ZW50KSk7CisKKyAgICBzd2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAg
ICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAgICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAg
ICAgIG1fdG91Y2hFdmVudHMuc2V0KHNlcXVlbmNlLCB0b3VjaEV2ZW50KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAgICAgICBtX3RvdWNoRXZlbnRzLnJlbW92
ZShzZXF1ZW5jZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKKworICAgIHJldHVy
biB0cnVlOworfQorCitWZWN0b3I8R2RrRXZlbnQqPiBHdGtUb3VjaENvbnRleHRIZWxwZXI6OnRv
dWNoRXZlbnRzKHZvaWQpIGNvbnN0Cit7CisgICAgVmVjdG9yPEdka0V2ZW50Kj4gdG91Y2hFdmVu
dHM7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fdG91Y2hFdmVudHMsIHRvdWNoRXZlbnRzKTsK
KyAgICByZXR1cm4gdG91Y2hFdmVudHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjNjNmIwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBl
ci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdh
cm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHdGtUb3VjaENv
bnRleHRIZWxwZXJfaAorI2RlZmluZSBHdGtUb3VjaENvbnRleHRIZWxwZXJfaAorCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3R5cGVkZWYgdW5p
b24gX0dka0V2ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd0
a1RvdWNoQ29udGV4dEhlbHBlciB7CitwdWJsaWM6CisgICAgR3RrVG91Y2hDb250ZXh0SGVscGVy
KCk7CisgICAgYm9vbCBoYW5kbGVFdmVudChHZGtFdmVudCopOworICAgIFZlY3RvcjxHZGtFdmVu
dCo+IHRvdWNoRXZlbnRzKHZvaWQpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhhc2hNYXA8dWlu
dDMyX3QsIEdka0V2ZW50Kj4gbV90b3VjaEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNTllMmRmOS4uZDExMGE2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFj
aG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBbGxvdyBidWlsZGluZyB3
aXRoIHRvdWNoIGV2ZW50cyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEV2ZW4gdGhvdWdoIFdlYktpdDEgR1RLIGNvZGUgZG9lc24ndCBpbXBs
ZW1lbnQgdG91Y2ggZXZlbnRzLAorICAgICAgICBGaXggYnVpbGQgaWYgRU5BQkxFX1RPVUNIX0VW
RU5UUyBpcyBwcmVzZW50IGZvciBXSzIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpuZWVkVG91Y2hF
dmVudHMpOiBBZGQgZW1wdHkgc3R1YgorCiAyMDEzLTEyLTIwICBFbnJpcXVlIE9jYcOxYSBHb256
w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVGhlIGZ1bGxzY3Jl
ZW4gQVBJIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggNTFkNDNhYS4uNTQ0
ZWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKQEAgLTE0NCw2ICsxNDQsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQp
IHsgfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgdmlydHVhbCB2b2lkIG5l
ZWRUb3VjaEV2ZW50cyhib29sKSB7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKSAKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KEZyYW1lKiwgR3JhcGhpY3NMYXllciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNP
bmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMzMGIwNGQuLjFj
ZTc5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMy0xMi0yMyAgQ2FybG9zIEdh
cm5hY2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHN1
cHBvcnQgdG91Y2ggZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEluIEdUSysgPj0gMy40LjAsIEdka0V2ZW50VG91Y2ggaXMgYXZhaWxhYmxlIHRv
IGluZm9ybSBhYm91dCBtdWx0aXRvdWNoIGV2ZW50cy4gVXNlIHRoZXNlIHRvIGltcGxlbWVudAor
ICAgICAgICB0b3VjaCBldmVudHMgb24gdGhpcyBwbGF0Zm9ybS4gSWYgYSB0b3VjaCBpcyBsZWZ0
IHVuaGFuZGxlZCBhbmQgaXMgdGhlICJwb2ludGVyIGVtdWxhdGluZyIgb25lLCBtb3VzZQorICAg
ICAgICBldmVudHMgd2lsbCBiZSBnZW5lcmF0ZWQgYXMgYSBmYWxsYmFjay4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJU
b3VjaEV2ZW50OjpuYXRpdmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNo
RXZlbnQ6OnRvdWNoQ29udGV4dCk6IEFkZCBHVEsrIGltcGxlbWVudGF0aW9uIG9mIE5hdGl2ZVdl
YlRvdWNoRXZlbnQKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnRvdWNoUGhhc2VGcm9tRXZlbnRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KTogQWRkIG1ldGhvZHMgdG8gZ2Vu
ZXJhdGUgTmF0aXZlV2ViVG91Y2hFdmVudHMgb3V0CisgICAgICAgIG9mIEdka0V2ZW50VG91Y2gg
ZXZlbnRzLCBhIEd0a1RvdWNoQ29udGV4dEhlbHBlciBvYmplY3QgaXMgdXNlZCB0byBob2xkIGlu
Zm9ybWF0aW9uIGFib3V0IGFsbCBjdXJyZW50CisgICAgICAgIHRvdWNoZXMsIGluIG9yZGVyIHRv
IGJ1aWxkIGluZm9ybWF0aW9uIGFib3V0IGFsbCBpbmRpdmlkdWFsIHRvdWNocG9pbnRzLgorICAg
ICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KTogSW1wbGVtZW50IHBvaW50ZXIgZW11bGF0aW9uIGlm
IHRoZSBwb2ludGVyIGVtdWxhdGluZworICAgICAgICB0b3VjaCB3YXMgdW5oYW5kbGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2VSZWFsaXplKTogTGlzdGVuIGZvciB0b3VjaCBldmVudHMKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlVG91Y2hFdmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9j
bGFzc19pbml0KTogQWRkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgdG91Y2hfZXZlbnRzKCkgaGFu
ZGxlci4KKwogMjAxMy0xMi0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gVGVzdCAvd2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS9t
aW1lLXR5cGUgZmFpbHMgd2hlbiBydW4gYWZ0ZXIgL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9yZXNv
dXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDdlY2YwNzUuLjA2MzcwMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDkzLDYgKzQ5Myw3IEBAIHdlYmtp
dDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9MYXllclRyZWVDb250
ZXh0R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3Vz
ZUV2ZW50R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3Vj
aEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVl
bEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9QcmludEluZm9HdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0
ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlN2E5YTk0Li45ZGMzZWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDYsNiArNDYsNyBAQCBsaXN0KEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsu
Y3BwCiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAogICAgIFNoYXJl
ZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICBTaGFyZWQvZ3RrL05hdGl2ZVdl
YlRvdWNoRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9HdGsuY3BwCiAgICAg
U2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuY3BwCkBAIC01NDEsMTIgKzU0MiwxNCBAQCBpZiAoRU5BQkxFX1BMVUdJ
Tl9QUk9DRVNTKQogICAgICAgICBTaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCiAgICAgICAg
IFNoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcAogICAgICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5j
cHAKKyAgICAgICAgU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwCiAKICAgICAgICAgU2hhcmVkL2Nh
aXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3Vz
ZUV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsu
Y3BwCisgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAg
ICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgICAgIFNoYXJl
ZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYlRvdWNoRXZlbnQuaAppbmRleCAwZDRiMmNmLi45NTI5NDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaWYg
UExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgVUlX
ZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
LQotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxHT3du
UHRyR3RrLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtUb3VjaENvbnRleHRIZWxwZXIuaD4KK3R5
cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworI2VsaWYgUExBVEZPUk0oRUZMKQogI2lu
Y2x1ZGUgIkV3a1RvdWNoRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9y
bS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ2LDggKzQ4LDEyIEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChVSVdl
YlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKik7CiAgICAgY29uc3QgVUlXZWJUb3VjaEV2
ZW50c0dlc3R1cmVSZWNvZ25pemVyKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0
aXZlRXZlbnQuZ2V0KCk7IH0KLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRG
T1JNKEdUSykKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZl
bnQmKTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiwgV2ViQ29yZTo6R3RrVG91
Y2hDb250ZXh0SGVscGVyJik7CisgICAgY29uc3QgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6Okd0
a1RvdWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90b3Vj
aENvbnRleHQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBOYXRpdmVXZWJUb3VjaEV2ZW50
KEV3a1RvdWNoRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBj
b25zdCBFd2tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZl
RXZlbnQuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNTUsOCArNjEsMTAgQEAgcHVibGljOgogcHJpdmF0
ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPFVJV2ViVG91Y2hFdmVudHNHZXN0
dXJlUmVjb2duaXplcj4gbV9uYXRpdmVFdmVudDsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkK
KyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBHT3duUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50
OworICAgIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgbV90b3VjaENvbnRl
eHQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUmVmUHRyPEV3a1RvdWNoRXZlbnQ+IG1fbmF0
aXZlRXZlbnQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMmNkNGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJUb3VjaEV2
ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKyNpbmNsdWRlIDxnZGsvZ2Rr
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVX
ZWJUb3VjaEV2ZW50KEdka0V2ZW50KiBldmVudCwgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVs
cGVyJiBjb250ZXh0KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0
ZVdlYlRvdWNoRXZlbnQoZXZlbnQsIGNvbnRleHQpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtf
ZXZlbnRfY29weShldmVudCkpCisgICAgLCBtX3RvdWNoQ29udGV4dChjb250ZXh0KQoreworfQor
CitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdl
YlRvdWNoRXZlbnQmIGV2ZW50KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgZXZlbnQudG91Y2hDb250
ZXh0KCkpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudC5uYXRpdmVF
dmVudCgpKSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGV2ZW50LnRvdWNoQ29udGV4dCgpKQorewor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsv
V2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBjYjg4YTgyLi4yMzU4MjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5o
PgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
MjAzLDQgKzIwNCw3NSBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKKyNpZm5kZWYgR1RL
X0FQSV9WRVJTSU9OXzIKKworc3RhdGljIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2lu
dFN0YXRlIHRvdWNoUGhhc2VGcm9tRXZlbnRzKGNvbnN0IEdka0V2ZW50KiBjdXJyZW50LCBjb25z
dCBHZGtFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVu
Y2UoY3VycmVudCkgPT0gZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkpIHsKKyAg
ICAgICAgaWYgKGN1cnJlbnQtPnR5cGUgPT0gR0RLX1RPVUNIX1VQREFURSkKKyAgICAgICAgICAg
IHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAgICAgIGlmIChj
dXJyZW50LT50eXBlID09IEdES19UT1VDSF9CRUdJTikKKyAgICAgICAgICAgIHJldHVybiBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAgICAgICAgaWYgKGN1cnJlbnQtPnR5
cGUgPT0gR0RLX1RPVUNIX0VORCkKKyAgICAgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsK
K30KKworc3RhdGljIHZvaWQgYXBwZW5kVG91Y2hFdmVudChWZWN0b3I8V2ViUGxhdGZvcm1Ub3Vj
aFBvaW50PiYgdG91Y2hQb2ludExpc3QsIGNvbnN0IEdka0V2ZW50KiBldmVudCwgY29uc3QgR2Rr
RXZlbnQqIGN1cnJlbnRFdmVudCkKK3sKKyAgICB1aW50MzJfdCBpZGVudGlmaWVyID0gR1BPSU5U
RVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKGV2ZW50KSk7CisKKyAgICBn
ZG91YmxlIHgsIHk7CisgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7CisK
KyAgICBnZG91YmxlIHJvb3RfeCwgcm9vdF95OworICAgIGdka19ldmVudF9nZXRfcm9vdF9jb29y
ZHMoZXZlbnQsICZyb290X3gsICZyb290X3kpOworCisgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50
IHRvdWNoUG9pbnQoaWRlbnRpZmllciwgdG91Y2hQaGFzZUZyb21FdmVudHMoY3VycmVudEV2ZW50
LCBldmVudCksIEludFBvaW50KHJvb3RfeCwgcm9vdF95KSwgSW50UG9pbnQoeCwgeSkpOworICAg
IHRvdWNoUG9pbnRMaXN0LnVuY2hlY2tlZEFwcGVuZCh0b3VjaFBvaW50KTsKK30KKworI2VuZGlm
IC8vIEdUS19BUElfVkVSU0lPTl8yCisKK1dlYlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgY29uc3QgV2ViQ29yZTo6
R3RrVG91Y2hDb250ZXh0SGVscGVyJiB0b3VjaENvbnRleHQpCit7CisjaWZuZGVmIEdUS19BUElf
VkVSU0lPTl8yCisgICAgV2ViRXZlbnQ6OlR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFdlYkV2ZW50
OjpUeXBlPigwKTsKKworICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19U
T1VDSF9CRUdJTjoKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaFN0YXJ0OworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAgIHR5cGUgPSBXZWJF
dmVudDo6VG91Y2hNb3ZlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6
CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6VG91Y2hFbmQ7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIFZl
Y3RvcjxHZGtFdmVudCo+IHRvdWNoRXZlbnRzID0gdG91Y2hDb250ZXh0LnRvdWNoRXZlbnRzKCk7
CisKKyAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiB0b3VjaFBvaW50TGlzdDsKKyAg
ICB0b3VjaFBvaW50TGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRvdWNoRXZlbnRzLnNpemUo
KSArIDEpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoRXZlbnRzLnNpemUo
KTsgKytpKQorICAgICAgICBhcHBlbmRUb3VjaEV2ZW50KHRvdWNoUG9pbnRMaXN0LCB0b3VjaEV2
ZW50c1tpXSwgZXZlbnQpOworCisgICAgLy8gVG91Y2ggd2FzIGFscmVhZHkgcmVtb3ZlZCBmcm9t
IHRoZSBHdGtUb3VjaENvbnRleHRIZWxwZXIsIGFkZCBpdCBoZXJlLgorICAgIGlmIChldmVudC0+
dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICBhcHBlbmRUb3VjaEV2ZW50KHRvdWNoUG9p
bnRMaXN0LCBldmVudCwgZXZlbnQpOworCisgICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQodHlwZSwg
dG91Y2hQb2ludExpc3QsIG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KSwgKGRvdWJsZSkgZ2RrX2V2
ZW50X2dldF90aW1lKGV2ZW50KSk7CisjZWxzZQorICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KCk7
CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAppbmRleCAwODU4
MTVjLi5mYzMwMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2
ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0
b3J5LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db21wb3NpdGlvblJlc3VsdHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1Rv
dWNoQ29udGV4dEhlbHBlci5oPgogCiB0eXBlZGVmIHVuaW9uIF9HZGtFdmVudCBHZGtFdmVudDsK
IApAQCAtMzksNiArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3Jl
YXRlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCosIGludCk7CiAgICAgc3RhdGljIFdlYldo
ZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCopOwogICAgIHN0YXRp
YyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgR2RrRXZlbnQq
LCBjb25zdCBXZWJDb3JlOjpDb21wb3NpdGlvblJlc3VsdHMmKTsKKyAgICBzdGF0aWMgV2ViVG91
Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2ViQ29y
ZTo6R3RrVG91Y2hDb250ZXh0SGVscGVyJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCBlZWQ2NDliLi5lODJjNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMzQsNCArMzM0LDU0IEBA
IHZvaWQgUGFnZUNsaWVudEltcGw6OmJlZ2FuRXhpdEZ1bGxTY3JlZW4oY29uc3QgSW50UmVjdCYg
aW5pdGlhbEZyYW1lLCBjb25zdCBJbnRSCiAKICNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRp
dmVXZWJUb3VjaEV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpCit7CisgICAgaWYg
KHdhc0V2ZW50SGFuZGxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRW11bGF0ZSBwb2lu
dGVyIGV2ZW50cyBpZiB1bmhhbmRsZWQuCisgICAgY29uc3QgR2RrRXZlbnQqIHRvdWNoX2V2ZW50
ID0gZXZlbnQubmF0aXZlRXZlbnQoKTsKKworICAgIGlmICghdG91Y2hfZXZlbnQtPnRvdWNoLmVt
dWxhdGluZ19wb2ludGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBHT3duUHRyPEdka0V2ZW50
PiBwb2ludGVyX2V2ZW50OworCisgICAgaWYgKHRvdWNoX2V2ZW50LT50eXBlID09IEdES19UT1VD
SF9VUERBVEUpIHsKKyAgICAgICAgcG9pbnRlcl9ldmVudC5zZXQoZ2RrX2V2ZW50X25ldyhHREtf
TU9USU9OX05PVElGWSkpOworICAgICAgICBwb2ludGVyX2V2ZW50LT5tb3Rpb24udGltZSA9IHRv
dWNoX2V2ZW50LT50b3VjaC50aW1lOworICAgICAgICBwb2ludGVyX2V2ZW50LT5tb3Rpb24ueCA9
IHRvdWNoX2V2ZW50LT50b3VjaC54OworICAgICAgICBwb2ludGVyX2V2ZW50LT5tb3Rpb24ueSA9
IHRvdWNoX2V2ZW50LT50b3VjaC55OworICAgICAgICBwb2ludGVyX2V2ZW50LT5tb3Rpb24ueF9y
b290ID0gdG91Y2hfZXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+
bW90aW9uLnlfcm9vdCA9IHRvdWNoX2V2ZW50LT50b3VjaC55X3Jvb3Q7CisgICAgICAgIHBvaW50
ZXJfZXZlbnQtPm1vdGlvbi5zdGF0ZSA9IHRvdWNoX2V2ZW50LT50b3VjaC5zdGF0ZSB8IEdES19C
VVRUT04xX01BU0s7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dpdGNoICh0b3VjaF9ldmVudC0+
dHlwZSkgeworICAgICAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgICAgICBwb2ludGVy
X2V2ZW50LnNldChnZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUkVMRUFTRSkpOworICAgICAgICAg
ICAgcG9pbnRlcl9ldmVudC0+YnV0dG9uLnN0YXRlID0gdG91Y2hfZXZlbnQtPnRvdWNoLnN0YXRl
IHwgR0RLX0JVVFRPTjFfTUFTSzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdE
S19UT1VDSF9CRUdJTjoKKyAgICAgICAgICAgIHBvaW50ZXJfZXZlbnQuc2V0KGdka19ldmVudF9u
ZXcoR0RLX0JVVFRPTl9QUkVTUykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHBvaW50ZXJfZXZlbnQtPmJ1dHRvbi5idXR0b24gPSAxOworICAgICAgICBwb2ludGVyX2V2
ZW50LT5idXR0b24udGltZSA9IHRvdWNoX2V2ZW50LT50b3VjaC50aW1lOworICAgICAgICBwb2lu
dGVyX2V2ZW50LT5idXR0b24ueCA9IHRvdWNoX2V2ZW50LT50b3VjaC54OworICAgICAgICBwb2lu
dGVyX2V2ZW50LT5idXR0b24ueSA9IHRvdWNoX2V2ZW50LT50b3VjaC55OworICAgICAgICBwb2lu
dGVyX2V2ZW50LT5idXR0b24ueF9yb290ID0gdG91Y2hfZXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAg
ICAgICAgcG9pbnRlcl9ldmVudC0+YnV0dG9uLnlfcm9vdCA9IHRvdWNoX2V2ZW50LT50b3VjaC55
X3Jvb3Q7CisgICAgfQorCisgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UocG9pbnRlcl9ldmVudC5n
ZXQoKSwgZ2RrX2V2ZW50X2dldF9kZXZpY2UodG91Y2hfZXZlbnQpKTsKKyAgICBnZGtfZXZlbnRf
c2V0X3NvdXJjZV9kZXZpY2UocG9pbnRlcl9ldmVudC5nZXQoKSwgZ2RrX2V2ZW50X2dldF9zb3Vy
Y2VfZGV2aWNlKHRvdWNoX2V2ZW50KSk7CisgICAgcG9pbnRlcl9ldmVudC0+YW55LndpbmRvdyA9
IEdES19XSU5ET1coZ19vYmplY3RfcmVmKHRvdWNoX2V2ZW50LT5hbnkud2luZG93KSk7CisgICAg
cG9pbnRlcl9ldmVudC0+YW55LnNlbmRfZXZlbnQgPSBUUlVFOworCisgICAgZ3RrX3dpZGdldF9l
dmVudChtX3ZpZXdXaWRnZXQsIHBvaW50ZXJfZXZlbnQuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oCmluZGV4IGUwYzE4ZTUuLjRkN2QxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtMTIyLDYgKzEyMiwx
MCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZmluYWxGcmFtZSkgT1ZFUlJJREU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3Vj
aEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIE9WRVJSSURFOworI2VuZGlmCisKICAgICAv
LyBNZW1iZXJzIG9mIFBhZ2VDbGllbnRJbXBsIGNsYXNzCiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdX
aWRnZXQ7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKaW5kZXggYzc4YzRlNy4uODBmN2Q1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTMsNiArNTMs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
R3RrQ2xpY2tDb3VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtEcmFnQW5kRHJvcEhlbHBl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25p
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMTEsNiArMTEy
LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIEdPd25QdHI8R2Rr
RXZlbnQ+IGNvbnRleHRNZW51RXZlbnQ7CiAgICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogYWN0
aXZlQ29udGV4dE1lbnVQcm94eTsKICAgICBXZWJWaWV3QmFzZUlucHV0TWV0aG9kRmlsdGVyIGlu
cHV0TWV0aG9kRmlsdGVyOworICAgIEd0a1RvdWNoQ29udGV4dEhlbHBlciB0b3VjaENvbnRleHQ7
CiAKICAgICBHdGtXaW5kb3cqIHRvcGxldmVsT25TY3JlZW5XaW5kb3c7CiAgICAgdW5zaWduZWQg
bG9uZyB0b3BsZXZlbFJlc2l6ZUdyaXBWaXNpYmlsaXR5SUQ7CkBAIC0yNzMsNyArMjc1LDggQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQog
ICAgICAgICB8IEdES19CVVRUT05fTU9USU9OX01BU0sKICAgICAgICAgfCBHREtfQlVUVE9OMV9N
T1RJT05fTUFTSwogICAgICAgICB8IEdES19CVVRUT04yX01PVElPTl9NQVNLCi0gICAgICAgIHwg
R0RLX0JVVFRPTjNfTU9USU9OX01BU0s7CisgICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01B
U0sKKyAgICAgICAgfCBHREtfVE9VQ0hfTUFTSzsKIAogICAgIGdpbnQgYXR0cmlidXRlc01hc2sg
PSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsKIApAQCAtNzEzLDYgKzcxNiwy
MCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNbwogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VUb3VjaEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0
LCBHZGtFdmVudFRvdWNoKiBldmVudCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOworICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OworCisgICAgaWYgKHByaXYtPmF1
dGhlbnRpY2F0aW9uRGlhbG9nKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIHByaXYtPnRv
dWNoQ29udGV4dC5oYW5kbGVFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQp
KTsKKyAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hF
dmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCBwcml2LT50b3VjaENvbnRl
eHQpKTsKKworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld0Jhc2VRdWVyeVRvb2x0aXAoR3RrV2lkZ2V0KiB3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LCBn
Ym9vbGVhbiBrZXlib2FyZE1vZGUsIEd0a1Rvb2x0aXAqIHRvb2x0aXApCiB7CiAgICAgV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+
cHJpdjsKQEAgLTg5Nyw2ICs5MTQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFz
ZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIHdp
ZGdldENsYXNzLT5idXR0b25fcmVsZWFzZV9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9u
UmVsZWFzZUV2ZW50OwogICAgIHdpZGdldENsYXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRXZWJW
aWV3QmFzZVNjcm9sbEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5X2V2ZW50
ID0gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudDsKKyAgICB3aWRnZXRDbGFzcy0+
dG91Y2hfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZlbnQ7CiAgICAgd2lkZ2V0Q2xh
c3MtPnF1ZXJ5X3Rvb2x0aXAgPSB3ZWJraXRXZWJWaWV3QmFzZVF1ZXJ5VG9vbHRpcDsKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHdpZGdldENsYXNzLT5kcmFnX2VuZCA9IHdlYmtpdFdl
YlZpZXdCYXNlRHJhZ0VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJL
aXRGZWF0dXJlcy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNApp
bmRleCA2NDdjMjg0NC4uYjNkZWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1
cFdlYktpdEZlYXR1cmVzLm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0
dXJlcy5tNApAQCAtMTc2LDcgKzE3Niw3IEBAICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVyYXRlLWZl
YXR1cmUtZGVmaW5lcy1maWxlcyAkQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBcCiAgICAg
RU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQz0xXAogICAgIEVOQUJMRV9URVhUX0FV
VE9TSVpJTkc9MCBcCiAgICAgRU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSPTAgXAotICAgIEVO
QUJMRV9UT1VDSF9FVkVOVFM9MCBcCisgICAgRU5BQkxFX1RPVUNIX0VWRU5UUz0xIFwKICAgICBF
TkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTAgXAogICAgIEVOQUJMRV9VU0VSX1RJTUlORz0wIFwK
ICAgICBFTkFCTEVfVklCUkFUSU9OPTAgXApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBjZTYwNDI0
Li4wNGNhNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMzksNyArMzksNyBAQCBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBRE9XX0RPTSBPRkYpCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBUkVEX1dPUktFUlMgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU1BFTExDSEVDSyBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UIE9OKQot
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPRkYp
CitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
IE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBP
RkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU8gT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219947</attachid>
            <date>2013-12-23 17:18:51 -0800</date>
            <delta_ts>2013-12-24 05:47:24 -0800</delta_ts>
            <desc>third patch, minor fix this time</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>29915</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NmE3NDk4Li4xMDFhZjAz
NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVh
dHVyZXMubTQ6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IHNldCBF
TkFCTEVfVE9VQ0hfRVZFTlRTIHRvIDEgaWYgYnVpbGRpbmcgd2l0aCBHVEsrLgorCiAyMDEzLTEy
LTE4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtH
VEtdW0NNYWtlXSBtYWtlIGxpYmphdmFzY3JpcHRjb3JlZ3RrIGEgcHVibGljIHNoYXJlZCBsaWJy
YXJ5IGFnYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNiNTJjYi4uNjlmZjg1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21l
Lm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29kZSB0byBi
dWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5
MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sg
YWxsIHRvdWNocG9pbnRzLCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZl
bnRzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1H
VEsuY21ha2U6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRk
IHRvdWNoIHJlbGF0ZWQgY29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAg
IG5lY2Vzc2FyeSBub3cgdGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDEz
LTEyLTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbU09VUF0gUmVzb3VyY2VIYW5kbGVTb3VwIHNob3VsZCB1c2UgYXN5bmMgY2xpZW50IGNh
bGxiYWNrcyB3aGVuIGNsaWVudCB1c2VzIGFzeW5jIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggMzYwMzNkYi4uMWFkY2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zMDE3LDggKzMwMTcsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBc
CisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291
cmNlTGlieHNsdC5jcHAgXApAQCAtNjI0OCw2ICs2MjUxLDggQEAgcGxhdGZvcm1ndGtfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtWZXJzaW9uaW5nLmMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhYzVhOTk2Li45
MDg5YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgxLDYgKzE4MSw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0dS
ZWZQdHJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9HdGtDbGlja0NvdW50ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29u
dGV4dEhlbHBlci5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3Bw
CiAgICAgcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIHBsYXRmb3Jt
L2d0ay9HdGtQbHVnaW5XaWRnZXQuY3BwCkBAIC0xOTUsNiArMTk2LDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Ny
b2xsYmFyR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9y
bVRvdWNoRXZlbnRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dEd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKQEAgLTYyMSw2ICs2MjMsMTIgQEAg
aWYgKEVOQUJMRV9XRUJLSVQyKQogICAgICAgICB4bWwvWFBhdGhSZXN1bHQuaWRsCiAgICAgKQog
CisgICAgaWYgKEVOQUJMRV9UT1VDSF9FVkVOVFMpCisgICAgICAgIGxpc3QoQVBQRU5EIEdPYmpl
Y3RET01CaW5kaW5nc19JRExfRklMRVMKKyAgICAgICAgICAgIGRvbS9Ub3VjaC5pZGwKKyAgICAg
ICAgKQorICAgIGVuZGlmICgpCisKICAgICBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJf
QVVESU8pCiAgICAgICAgIGxpc3QoQVBQRU5EIEdPYmplY3RET01CaW5kaW5nc19JRExfRklMRVMK
ICAgICAgICAgICAgIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IDY4NjRlMTAuLmRmNDJjZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpA
QCAtMjYyLDYgKzI2Miw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01TdHlsZVNoZWV0UHJpdmF0ZS5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVG91Y2guY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NVG91Y2hQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01UaW1lUmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERP
TVRpbWVSYW5nZXNQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UcmVlV2Fsa2VyLmNwcCBcCkBAIC0zMjMsNiArMzI1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVp
bHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVJh
bmdlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0LmggXAorCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Ub3VjaC5oIFwKIAlEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NVHJlZVdhbGtlci5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJr
aXRkb20vV2ViS2l0RE9NVUlFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NQmxvYi5oIFwKQEAgLTQzMiw2ICs0MzUsNyBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9o
X2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbS5oIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy5oCiAKKwogaWYgRU5BQkxFX1ZJ
REVPCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2suaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE1YzM1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmNwcApAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bn
bm9tZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHdGtU
b3VjaENvbnRleHRIZWxwZXIuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitHdGtUb3VjaENvbnRleHRIZWxwZXI6Okd0a1RvdWNoQ29udGV4dEhlbHBl
cigpCit7Cit9CisKK2Jvb2wgR3RrVG91Y2hDb250ZXh0SGVscGVyOjpoYW5kbGVFdmVudChHZGtF
dmVudCAqdG91Y2hFdmVudCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICB1aW50
MzJfdCBzZXF1ZW5jZSA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1
ZW5jZSh0b3VjaEV2ZW50KSk7CisKKyAgICBzd2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAg
ICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAgICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAg
ICAgIG1fdG91Y2hFdmVudHMuc2V0KHNlcXVlbmNlLCB0b3VjaEV2ZW50KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAgICAgICBtX3RvdWNoRXZlbnRzLnJlbW92
ZShzZXF1ZW5jZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKKworICAgIHJldHVy
biB0cnVlOworfQorCitWZWN0b3I8R2RrRXZlbnQqPiBHdGtUb3VjaENvbnRleHRIZWxwZXI6OnRv
dWNoRXZlbnRzKHZvaWQpIGNvbnN0Cit7CisgICAgVmVjdG9yPEdka0V2ZW50Kj4gdG91Y2hFdmVu
dHM7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fdG91Y2hFdmVudHMsIHRvdWNoRXZlbnRzKTsK
KyAgICByZXR1cm4gdG91Y2hFdmVudHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjNjNmIwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBl
ci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdh
cm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHdGtUb3VjaENv
bnRleHRIZWxwZXJfaAorI2RlZmluZSBHdGtUb3VjaENvbnRleHRIZWxwZXJfaAorCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3R5cGVkZWYgdW5p
b24gX0dka0V2ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd0
a1RvdWNoQ29udGV4dEhlbHBlciB7CitwdWJsaWM6CisgICAgR3RrVG91Y2hDb250ZXh0SGVscGVy
KCk7CisgICAgYm9vbCBoYW5kbGVFdmVudChHZGtFdmVudCopOworICAgIFZlY3RvcjxHZGtFdmVu
dCo+IHRvdWNoRXZlbnRzKHZvaWQpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhhc2hNYXA8dWlu
dDMyX3QsIEdka0V2ZW50Kj4gbV90b3VjaEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNTllMmRmOS4uZDExMGE2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFj
aG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBbGxvdyBidWlsZGluZyB3
aXRoIHRvdWNoIGV2ZW50cyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEV2ZW4gdGhvdWdoIFdlYktpdDEgR1RLIGNvZGUgZG9lc24ndCBpbXBs
ZW1lbnQgdG91Y2ggZXZlbnRzLAorICAgICAgICBGaXggYnVpbGQgaWYgRU5BQkxFX1RPVUNIX0VW
RU5UUyBpcyBwcmVzZW50IGZvciBXSzIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpuZWVkVG91Y2hF
dmVudHMpOiBBZGQgZW1wdHkgc3R1YgorCiAyMDEzLTEyLTIwICBFbnJpcXVlIE9jYcOxYSBHb256
w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVGhlIGZ1bGxzY3Jl
ZW4gQVBJIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggNTFkNDNhYS4uNTQ0
ZWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKQEAgLTE0NCw2ICsxNDQsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQp
IHsgfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgdmlydHVhbCB2b2lkIG5l
ZWRUb3VjaEV2ZW50cyhib29sKSB7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKSAKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KEZyYW1lKiwgR3JhcGhpY3NMYXllciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNP
bmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMzMGIwNGQuLjFj
ZTc5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMy0xMi0yMyAgQ2FybG9zIEdh
cm5hY2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHN1
cHBvcnQgdG91Y2ggZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEluIEdUSysgPj0gMy40LjAsIEdka0V2ZW50VG91Y2ggaXMgYXZhaWxhYmxlIHRv
IGluZm9ybSBhYm91dCBtdWx0aXRvdWNoIGV2ZW50cy4gVXNlIHRoZXNlIHRvIGltcGxlbWVudAor
ICAgICAgICB0b3VjaCBldmVudHMgb24gdGhpcyBwbGF0Zm9ybS4gSWYgYSB0b3VjaCBpcyBsZWZ0
IHVuaGFuZGxlZCBhbmQgaXMgdGhlICJwb2ludGVyIGVtdWxhdGluZyIgb25lLCBtb3VzZQorICAg
ICAgICBldmVudHMgd2lsbCBiZSBnZW5lcmF0ZWQgYXMgYSBmYWxsYmFjay4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJU
b3VjaEV2ZW50OjpuYXRpdmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNo
RXZlbnQ6OnRvdWNoQ29udGV4dCk6IEFkZCBHVEsrIGltcGxlbWVudGF0aW9uIG9mIE5hdGl2ZVdl
YlRvdWNoRXZlbnQKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnRvdWNoUGhhc2VGcm9tRXZlbnRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KTogQWRkIG1ldGhvZHMgdG8gZ2Vu
ZXJhdGUgTmF0aXZlV2ViVG91Y2hFdmVudHMgb3V0CisgICAgICAgIG9mIEdka0V2ZW50VG91Y2gg
ZXZlbnRzLCBhIEd0a1RvdWNoQ29udGV4dEhlbHBlciBvYmplY3QgaXMgdXNlZCB0byBob2xkIGlu
Zm9ybWF0aW9uIGFib3V0IGFsbCBjdXJyZW50CisgICAgICAgIHRvdWNoZXMsIGluIG9yZGVyIHRv
IGJ1aWxkIGluZm9ybWF0aW9uIGFib3V0IGFsbCBpbmRpdmlkdWFsIHRvdWNocG9pbnRzLgorICAg
ICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KTogSW1wbGVtZW50IHBvaW50ZXIgZW11bGF0aW9uIGlm
IHRoZSBwb2ludGVyIGVtdWxhdGluZworICAgICAgICB0b3VjaCB3YXMgdW5oYW5kbGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2VSZWFsaXplKTogTGlzdGVuIGZvciB0b3VjaCBldmVudHMKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlVG91Y2hFdmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9j
bGFzc19pbml0KTogQWRkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgdG91Y2hfZXZlbnRzKCkgaGFu
ZGxlci4KKwogMjAxMy0xMi0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gVGVzdCAvd2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS9t
aW1lLXR5cGUgZmFpbHMgd2hlbiBydW4gYWZ0ZXIgL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9yZXNv
dXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDdlY2YwNzUuLjA2MzcwMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDkzLDYgKzQ5Myw3IEBAIHdlYmtp
dDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9MYXllclRyZWVDb250
ZXh0R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3Vz
ZUV2ZW50R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3Vj
aEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVl
bEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9QcmludEluZm9HdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0
ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlN2E5YTk0Li45ZGMzZWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDYsNiArNDYsNyBAQCBsaXN0KEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsu
Y3BwCiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAogICAgIFNoYXJl
ZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICBTaGFyZWQvZ3RrL05hdGl2ZVdl
YlRvdWNoRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9HdGsuY3BwCiAgICAg
U2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuY3BwCkBAIC01NDEsMTIgKzU0MiwxNCBAQCBpZiAoRU5BQkxFX1BMVUdJ
Tl9QUk9DRVNTKQogICAgICAgICBTaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCiAgICAgICAg
IFNoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcAogICAgICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5j
cHAKKyAgICAgICAgU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwCiAKICAgICAgICAgU2hhcmVkL2Nh
aXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3Vz
ZUV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsu
Y3BwCisgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAg
ICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgICAgIFNoYXJl
ZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYlRvdWNoRXZlbnQuaAppbmRleCAwZDRiMmNmLi45NTI5NDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaWYg
UExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgVUlX
ZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
LQotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxHT3du
UHRyR3RrLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtUb3VjaENvbnRleHRIZWxwZXIuaD4KK3R5
cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworI2VsaWYgUExBVEZPUk0oRUZMKQogI2lu
Y2x1ZGUgIkV3a1RvdWNoRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9y
bS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ2LDggKzQ4LDEyIEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChVSVdl
YlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKik7CiAgICAgY29uc3QgVUlXZWJUb3VjaEV2
ZW50c0dlc3R1cmVSZWNvZ25pemVyKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0
aXZlRXZlbnQuZ2V0KCk7IH0KLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRG
T1JNKEdUSykKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZl
bnQmKTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiwgV2ViQ29yZTo6R3RrVG91
Y2hDb250ZXh0SGVscGVyJik7CisgICAgY29uc3QgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6Okd0
a1RvdWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90b3Vj
aENvbnRleHQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBOYXRpdmVXZWJUb3VjaEV2ZW50
KEV3a1RvdWNoRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBj
b25zdCBFd2tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZl
RXZlbnQuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNTUsOCArNjEsMTAgQEAgcHVibGljOgogcHJpdmF0
ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPFVJV2ViVG91Y2hFdmVudHNHZXN0
dXJlUmVjb2duaXplcj4gbV9uYXRpdmVFdmVudDsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkK
KyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBHT3duUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50
OworICAgIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgbV90b3VjaENvbnRl
eHQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUmVmUHRyPEV3a1RvdWNoRXZlbnQ+IG1fbmF0
aXZlRXZlbnQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMmNkNGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJUb3VjaEV2
ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKyNpbmNsdWRlIDxnZGsvZ2Rr
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVX
ZWJUb3VjaEV2ZW50KEdka0V2ZW50KiBldmVudCwgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVs
cGVyJiBjb250ZXh0KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0
ZVdlYlRvdWNoRXZlbnQoZXZlbnQsIGNvbnRleHQpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtf
ZXZlbnRfY29weShldmVudCkpCisgICAgLCBtX3RvdWNoQ29udGV4dChjb250ZXh0KQoreworfQor
CitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdl
YlRvdWNoRXZlbnQmIGV2ZW50KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgZXZlbnQudG91Y2hDb250
ZXh0KCkpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudC5uYXRpdmVF
dmVudCgpKSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGV2ZW50LnRvdWNoQ29udGV4dCgpKQorewor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsv
V2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBjYjg4YTgyLi5hYzZmZDk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5o
PgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
MjAzLDQgKzIwNCw3NSBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKKyNpZm5kZWYgR1RL
X0FQSV9WRVJTSU9OXzIKKworc3RhdGljIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2lu
dFN0YXRlIHRvdWNoUGhhc2VGcm9tRXZlbnRzKGNvbnN0IEdka0V2ZW50KiBjdXJyZW50LCBjb25z
dCBHZGtFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVu
Y2UoY3VycmVudCkgPT0gZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkpIHsKKyAg
ICAgICAgaWYgKGN1cnJlbnQtPnR5cGUgPT0gR0RLX1RPVUNIX1VQREFURSkKKyAgICAgICAgICAg
IHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAgICAgIGlmIChj
dXJyZW50LT50eXBlID09IEdES19UT1VDSF9CRUdJTikKKyAgICAgICAgICAgIHJldHVybiBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAgICAgICAgaWYgKGN1cnJlbnQtPnR5
cGUgPT0gR0RLX1RPVUNIX0VORCkKKyAgICAgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsK
K30KKworc3RhdGljIHZvaWQgYXBwZW5kVG91Y2hFdmVudChWZWN0b3I8V2ViUGxhdGZvcm1Ub3Vj
aFBvaW50PiYgdG91Y2hQb2ludExpc3QsIGNvbnN0IEdka0V2ZW50KiBldmVudCwgV2ViUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGUpCit7CisgICAgdWludDMyX3QgaWRl
bnRpZmllciA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShl
dmVudCkpOworCisgICAgZ2RvdWJsZSB4LCB5OworICAgIGdka19ldmVudF9nZXRfY29vcmRzKGV2
ZW50LCAmeCwgJnkpOworCisgICAgZ2RvdWJsZSByb290X3gsIHJvb3RfeTsKKyAgICBnZGtfZXZl
bnRfZ2V0X3Jvb3RfY29vcmRzKGV2ZW50LCAmcm9vdF94LCAmcm9vdF95KTsKKworICAgIFdlYlBs
YXRmb3JtVG91Y2hQb2ludCB0b3VjaFBvaW50KGlkZW50aWZpZXIsIHN0YXRlLCBJbnRQb2ludChy
b290X3gsIHJvb3RfeSksIEludFBvaW50KHgsIHkpKTsKKyAgICB0b3VjaFBvaW50TGlzdC51bmNo
ZWNrZWRBcHBlbmQodG91Y2hQb2ludCk7Cit9CisKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05f
MgorCitXZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChj
b25zdCBHZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBl
ciYgdG91Y2hDb250ZXh0KQoreworI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIFdlYkV2
ZW50OjpUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisKKyAgICBz
d2l0Y2ggKGV2ZW50LT50eXBlKSB7CisgICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgICAg
IHR5cGUgPSBXZWJFdmVudDo6VG91Y2hTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBH
REtfVE9VQ0hfVVBEQVRFOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoTW92ZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAgICAgICB0eXBlID0gV2Vi
RXZlbnQ6OlRvdWNoRW5kOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBWZWN0b3I8R2RrRXZlbnQqPiB0b3Vj
aEV2ZW50cyA9IHRvdWNoQ29udGV4dC50b3VjaEV2ZW50cygpOworCisgICAgVmVjdG9yPFdlYlBs
YXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludExpc3Q7CisgICAgdG91Y2hQb2ludExpc3QucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b3VjaEV2ZW50cy5zaXplKCkgKyAxKTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaEV2ZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgYXBw
ZW5kVG91Y2hFdmVudCh0b3VjaFBvaW50TGlzdCwgdG91Y2hFdmVudHNbaV0sIHRvdWNoUGhhc2VG
cm9tRXZlbnRzKHRvdWNoRXZlbnRzW2ldLCBldmVudCkpOworCisgICAgLy8gVG91Y2ggd2FzIGFs
cmVhZHkgcmVtb3ZlZCBmcm9tIHRoZSBHdGtUb3VjaENvbnRleHRIZWxwZXIsIGFkZCBpdCBoZXJl
LgorICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICBhcHBlbmRU
b3VjaEV2ZW50KHRvdWNoUG9pbnRMaXN0LCBldmVudCwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFJlbGVhc2VkKTsKKworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGUsIHRvdWNoUG9p
bnRMaXN0LCBtb2RpZmllcnNGb3JFdmVudChldmVudCksIChkb3VibGUpIGdka19ldmVudF9nZXRf
dGltZShldmVudCkpOworI2Vsc2UKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCgpOworI2VuZGlm
IC8vIEdUS19BUElfVkVSU0lPTl8yCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggMDg1ODE1Yy4uZmMz
MDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCkBA
IC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29tcG9zaXRpb25SZXN1bHRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtUb3VjaENvbnRl
eHRIZWxwZXIuaD4KIAogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAKQEAgLTM5
LDYgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1v
dXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50
IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqKTsKICAgICBzdGF0aWMgV2ViS2V5
Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3Qg
V2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJik7CisgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQg
Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6Okd0a1Rv
dWNoQ29udGV4dEhlbHBlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5k
ZXggZWVkNjQ5Yi4uZTgyYzc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzM0LDQgKzMzNCw1NCBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3QmIGluaXRpYWxG
cmFtZSwgY29uc3QgSW50UgogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91
Y2hFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIGlmICh3YXNFdmVu
dEhhbmRsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEVtdWxhdGUgcG9pbnRlciBldmVu
dHMgaWYgdW5oYW5kbGVkLgorICAgIGNvbnN0IEdka0V2ZW50KiB0b3VjaF9ldmVudCA9IGV2ZW50
Lm5hdGl2ZUV2ZW50KCk7CisKKyAgICBpZiAoIXRvdWNoX2V2ZW50LT50b3VjaC5lbXVsYXRpbmdf
cG9pbnRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR093blB0cjxHZGtFdmVudD4gcG9pbnRl
cl9ldmVudDsKKworICAgIGlmICh0b3VjaF9ldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfVVBEQVRF
KSB7CisgICAgICAgIHBvaW50ZXJfZXZlbnQuc2V0KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9O
T1RJRlkpKTsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+bW90aW9uLnRpbWUgPSB0b3VjaF9ldmVu
dC0+dG91Y2gudGltZTsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+bW90aW9uLnggPSB0b3VjaF9l
dmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+bW90aW9uLnkgPSB0b3VjaF9l
dmVudC0+dG91Y2gueTsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+bW90aW9uLnhfcm9vdCA9IHRv
dWNoX2V2ZW50LT50b3VjaC54X3Jvb3Q7CisgICAgICAgIHBvaW50ZXJfZXZlbnQtPm1vdGlvbi55
X3Jvb3QgPSB0b3VjaF9ldmVudC0+dG91Y2gueV9yb290OworICAgICAgICBwb2ludGVyX2V2ZW50
LT5tb3Rpb24uc3RhdGUgPSB0b3VjaF9ldmVudC0+dG91Y2guc3RhdGUgfCBHREtfQlVUVE9OMV9N
QVNLOworICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAodG91Y2hfZXZlbnQtPnR5cGUpIHsK
KyAgICAgICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAgICAgICAgICAgcG9pbnRlcl9ldmVudC5z
ZXQoZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1JFTEVBU0UpKTsKKyAgICAgICAgICAgIHBvaW50
ZXJfZXZlbnQtPmJ1dHRvbi5zdGF0ZSA9IHRvdWNoX2V2ZW50LT50b3VjaC5zdGF0ZSB8IEdES19C
VVRUT04xX01BU0s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHREtfVE9VQ0hf
QkVHSU46CisgICAgICAgICAgICBwb2ludGVyX2V2ZW50LnNldChnZGtfZXZlbnRfbmV3KEdES19C
VVRUT05fUFJFU1MpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBwb2lu
dGVyX2V2ZW50LT5idXR0b24uYnV0dG9uID0gMTsKKyAgICAgICAgcG9pbnRlcl9ldmVudC0+YnV0
dG9uLnRpbWUgPSB0b3VjaF9ldmVudC0+dG91Y2gudGltZTsKKyAgICAgICAgcG9pbnRlcl9ldmVu
dC0+YnV0dG9uLnggPSB0b3VjaF9ldmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRlcl9ldmVu
dC0+YnV0dG9uLnkgPSB0b3VjaF9ldmVudC0+dG91Y2gueTsKKyAgICAgICAgcG9pbnRlcl9ldmVu
dC0+YnV0dG9uLnhfcm9vdCA9IHRvdWNoX2V2ZW50LT50b3VjaC54X3Jvb3Q7CisgICAgICAgIHBv
aW50ZXJfZXZlbnQtPmJ1dHRvbi55X3Jvb3QgPSB0b3VjaF9ldmVudC0+dG91Y2gueV9yb290Owor
ICAgIH0KKworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHBvaW50ZXJfZXZlbnQuZ2V0KCksIGdk
a19ldmVudF9nZXRfZGV2aWNlKHRvdWNoX2V2ZW50KSk7CisgICAgZ2RrX2V2ZW50X3NldF9zb3Vy
Y2VfZGV2aWNlKHBvaW50ZXJfZXZlbnQuZ2V0KCksIGdka19ldmVudF9nZXRfc291cmNlX2Rldmlj
ZSh0b3VjaF9ldmVudCkpOworICAgIHBvaW50ZXJfZXZlbnQtPmFueS53aW5kb3cgPSBHREtfV0lO
RE9XKGdfb2JqZWN0X3JlZih0b3VjaF9ldmVudC0+YW55LndpbmRvdykpOworICAgIHBvaW50ZXJf
ZXZlbnQtPmFueS5zZW5kX2V2ZW50ID0gVFJVRTsKKworICAgIGd0a193aWRnZXRfZXZlbnQobV92
aWV3V2lkZ2V0LCBwb2ludGVyX2V2ZW50LmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaAppbmRleCBlMGMxOGU1Li40ZDdkMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEyMiw2ICsxMjIsMTAgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJh
bWUpIE9WRVJSSURFOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZp
cnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYs
IGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBPVkVSUklERTsKKyNlbmRpZgorCiAgICAgLy8gTWVtYmVy
cyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFzcwogICAgIEd0a1dpZGdldCogbV92aWV3V2lkZ2V0Owog
ICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3VuZG9Db250cm9sbGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IGM3OGM0ZTcuLjgwZjdkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0dPd25QdHJHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a0NsaWNr
Q291bnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrRHJhZ0FuZERyb3BIZWxwZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTExLDYgKzExMiw3IEBAIHN0
cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICBHT3duUHRyPEdka0V2ZW50PiBj
b250ZXh0TWVudUV2ZW50OwogICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsqIGFjdGl2ZUNvbnRl
eHRNZW51UHJveHk7CiAgICAgV2ViVmlld0Jhc2VJbnB1dE1ldGhvZEZpbHRlciBpbnB1dE1ldGhv
ZEZpbHRlcjsKKyAgICBHdGtUb3VjaENvbnRleHRIZWxwZXIgdG91Y2hDb250ZXh0OwogCiAgICAg
R3RrV2luZG93KiB0b3BsZXZlbE9uU2NyZWVuV2luZG93OwogICAgIHVuc2lnbmVkIGxvbmcgdG9w
bGV2ZWxSZXNpemVHcmlwVmlzaWJpbGl0eUlEOwpAQCAtMjczLDcgKzI3NSw4IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKICAgICAgICAg
fCBHREtfQlVUVE9OX01PVElPTl9NQVNLCiAgICAgICAgIHwgR0RLX0JVVFRPTjFfTU9USU9OX01B
U0sKICAgICAgICAgfCBHREtfQlVUVE9OMl9NT1RJT05fTUFTSwotICAgICAgICB8IEdES19CVVRU
T04zX01PVElPTl9NQVNLOworICAgICAgICB8IEdES19CVVRUT04zX01PVElPTl9NQVNLCisgICAg
ICAgIHwgR0RLX1RPVUNIX01BU0s7CiAKICAgICBnaW50IGF0dHJpYnV0ZXNNYXNrID0gR0RLX1dB
X1ggfCBHREtfV0FfWSB8IEdES19XQV9WSVNVQUw7CiAKQEAgLTcxMyw2ICs3MTYsMjAgQEAgc3Rh
dGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka0V2ZW50TW8KICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29s
ZWFuIHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZl
bnRUb3VjaCogZXZlbnQpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0g
V0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKKworICAgIGlmIChwcml2LT5hdXRoZW50aWNh
dGlvbkRpYWxvZykKKyAgICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICBwcml2LT50b3VjaENvbnRl
eHQuaGFuZGxlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSk7CisgICAg
cHJpdi0+cGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQocmVp
bnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgcHJpdi0+dG91Y2hDb250ZXh0KSk7CisK
KyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNl
UXVlcnlUb29sdGlwKEd0a1dpZGdldCogd2lkZ2V0LCBnaW50IHgsIGdpbnQgeSwgZ2Jvb2xlYW4g
a2V5Ym9hcmRNb2RlLCBHdGtUb29sdGlwKiB0b29sdGlwKQogewogICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXY7CkBA
IC04OTcsNiArOTE0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICB3aWRnZXRDbGFz
cy0+YnV0dG9uX3JlbGVhc2VfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblJlbGVhc2VF
dmVudDsKICAgICB3aWRnZXRDbGFzcy0+c2Nyb2xsX2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VT
Y3JvbGxFdmVudDsKICAgICB3aWRnZXRDbGFzcy0+bW90aW9uX25vdGlmeV9ldmVudCA9IHdlYmtp
dFdlYlZpZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQ7CisgICAgd2lkZ2V0Q2xhc3MtPnRvdWNoX2V2
ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VUb3VjaEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5xdWVy
eV90b29sdGlwID0gd2Via2l0V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXA7CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICB3aWRnZXRDbGFzcy0+ZHJhZ19lbmQgPSB3ZWJraXRXZWJWaWV3QmFz
ZURyYWdFbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVy
ZXMubTQgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKaW5kZXggNjQ3
YzI4NDQuLmIzZGVhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRG
ZWF0dXJlcy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQK
QEAgLTE3Niw3ICsxNzYsNyBAQCAkc3JjZGlyL1Rvb2xzL2d0ay9nZW5lcmF0ZS1mZWF0dXJlLWRl
ZmluZXMtZmlsZXMgJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgXAogICAgIEVOQUJMRV9T
QVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUM9MVwKICAgICBFTkFCTEVfVEVYVF9BVVRPU0laSU5H
PTAgXAogICAgIEVOQUJMRV9USFJFQURFRF9IVE1MX1BBUlNFUj0wIFwKLSAgICBFTkFCTEVfVE9V
Q0hfRVZFTlRTPTAgXAorICAgIEVOQUJMRV9UT1VDSF9FVkVOVFM9MSBcCiAgICAgRU5BQkxFX1RP
VUNIX0lDT05fTE9BRElORz0wIFwKICAgICBFTkFCTEVfVVNFUl9USU1JTkc9MCBcCiAgICAgRU5B
QkxFX1ZJQlJBVElPTj0wIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggY2U2MDQyNC4uMDRjYTY3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNl
L2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTM5LDcgKzM5LDcgQEAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NIQURPV19ET00gT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NIQVJFRF9XT1JLRVJTIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NQRUxMQ0hFQ0sgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCBPTikKLVdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT0ZGKQorV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSUJSQVRJT04gT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIE9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219967</attachid>
            <date>2013-12-24 05:47:24 -0800</date>
            <delta_ts>2013-12-24 08:49:59 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>31116</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NmE3NDk4Li4xMDFhZjAz
NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVh
dHVyZXMubTQ6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IHNldCBF
TkFCTEVfVE9VQ0hfRVZFTlRTIHRvIDEgaWYgYnVpbGRpbmcgd2l0aCBHVEsrLgorCiAyMDEzLTEy
LTE4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtH
VEtdW0NNYWtlXSBtYWtlIGxpYmphdmFzY3JpcHRjb3JlZ3RrIGEgcHVibGljIHNoYXJlZCBsaWJy
YXJ5IGFnYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNiNTJjYi4uNjlmZjg1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21l
Lm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29kZSB0byBi
dWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5
MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sg
YWxsIHRvdWNocG9pbnRzLCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZl
bnRzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1H
VEsuY21ha2U6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRk
IHRvdWNoIHJlbGF0ZWQgY29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAg
IG5lY2Vzc2FyeSBub3cgdGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDEz
LTEyLTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbU09VUF0gUmVzb3VyY2VIYW5kbGVTb3VwIHNob3VsZCB1c2UgYXN5bmMgY2xpZW50IGNh
bGxiYWNrcyB3aGVuIGNsaWVudCB1c2VzIGFzeW5jIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggMzYwMzNkYi4uMWFkY2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zMDE3LDggKzMwMTcsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBc
CisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291
cmNlTGlieHNsdC5jcHAgXApAQCAtNjI0OCw2ICs2MjUxLDggQEAgcGxhdGZvcm1ndGtfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtWZXJzaW9uaW5nLmMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhYzVhOTk2Li5j
NGYyYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgxLDYgKzE4MSw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0dS
ZWZQdHJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9HdGtDbGlja0NvdW50ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29u
dGV4dEhlbHBlci5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3Bw
CiAgICAgcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIHBsYXRmb3Jt
L2d0ay9HdGtQbHVnaW5XaWRnZXQuY3BwCkBAIC0xOTUsNiArMTk2LDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Ny
b2xsYmFyR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9y
bVRvdWNoRXZlbnRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dEd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKQEAgLTUxNCw2ICs1MTYsNyBAQCBp
ZiAoRU5BQkxFX1dFQktJVDIpCiAgICAgICAgIGRvbS9SYW5nZS5pZGwKICAgICAgICAgZG9tL1No
YWRvd1Jvb3QuaWRsCiAgICAgICAgIGRvbS9UZXh0LmlkbAorICAgICAgICBkb20vVG91Y2guaWRs
CiAgICAgICAgIGRvbS9UcmVlV2Fsa2VyLmlkbAogICAgICAgICBkb20vVUlFdmVudC5pZGwKICAg
ICAgICAgZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IDY4NjRlMTAuLmRmNDJjZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpAQCAtMjYyLDYg
KzI2Miw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01TdHlsZVNoZWV0UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01UZXh0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NVG91Y2guY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
VG91Y2hQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UaW1l
UmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRpbWVSYW5n
ZXNQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmVlV2Fs
a2VyLmNwcCBcCkBAIC0zMjMsNiArMzI1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVJhbmdlLmggXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0LmggXAorCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01Ub3VjaC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NVHJlZVdhbGtlci5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVUlFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQmxv
Yi5oIFwKQEAgLTQzMiw2ICs0MzUsNyBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbS5oIFwKIAlEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy5oCiAKKwogaWYgRU5BQkxFX1ZJREVPCiB3ZWJr
aXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTUF1ZGlvVHJhY2suaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC93ZWJraXRkb20uc3ltYm9scwppbmRleCBiMTJmZjU3Li43NGRkMmFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMKQEAgLTE2
NDgsNiArMTY0OCwxOCBAQCBnbG9uZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9k
ZWx0YV94KFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2xvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVu
dF9nZXRfd2hlZWxfZGVsdGFfeShXZWJLaXRET01XaGVlbEV2ZW50KikKIGdsb25nIHdlYmtpdF9k
b21fd2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhKFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2Jv
b2xlYW4gd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2Via2l0X2RpcmVjdGlvbl9pbnZlcnRl
ZF9mcm9tX2RldmljZShXZWJLaXRET01XaGVlbEV2ZW50KikKK1dlYktpdERPTUV2ZW50VGFyZ2V0
KiB3ZWJraXRfZG9tX3RvdWNoX2dldF90YXJnZXQoV2ViS2l0RE9NVG91Y2gqKQorZ2Zsb2F0IHdl
YmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9mb3JjZShXZWJLaXRET01Ub3VjaCopCitnZmxvYXQg
d2Via2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X3JvdGF0aW9uX2FuZ2xlKFdlYktpdERPTVRvdWNo
KikKK2dsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X2NsaWVudF94KFdlYktpdERPTVRvdWNoKikK
K2dsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X2NsaWVudF95KFdlYktpdERPTVRvdWNoKikKK2ds
b25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3BhZ2VfeChXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3
ZWJraXRfZG9tX3RvdWNoX2dldF9wYWdlX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0
X2RvbV90b3VjaF9nZXRfc2NyZWVuX3goV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2Rv
bV90b3VjaF9nZXRfc2NyZWVuX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90
b3VjaF9nZXRfd2Via2l0X3JhZGl1c194KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9k
b21fdG91Y2hfZ2V0X3dlYmtpdF9yYWRpdXNfeShXZWJLaXRET01Ub3VjaCopCitndWxvbmcgd2Vi
a2l0X2RvbV90b3VjaF9nZXRfaWRlbnRpZmllcihXZWJLaXRET01Ub3VjaCopCiBnY2hhciogd2Vi
a2l0X2RvbV9hdWRpb190cmFja19nZXRfaWQoV2ViS2l0RE9NQXVkaW9UcmFjayopCiBnY2hhciog
d2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfa2luZChXZWJLaXRET01BdWRpb1RyYWNrKikKIGdj
aGFyKiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2dldF9sYWJlbChXZWJLaXRET01BdWRpb1RyYWNr
KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRl
eHRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4
dEhlbHBlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NhNjM2Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENv
bnRleHRIZWxwZXIuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd0a1RvdWNoQ29udGV4dEhlbHBlci5oIgorCisjaW5j
bHVkZSA8Z3RrL2d0ay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0d0a1RvdWNoQ29udGV4
dEhlbHBlcjo6fkd0a1RvdWNoQ29udGV4dEhlbHBlcigpCit7CisgICAgZm9yIChjb25zdCBhdXRv
JiBzdG9yZWRFdmVudCA6IG1fdG91Y2hFdmVudHMudmFsdWVzKCkpCisgICAgICAgIGdka19ldmVu
dF9mcmVlKHN0b3JlZEV2ZW50KTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisKK2Jv
b2wgR3RrVG91Y2hDb250ZXh0SGVscGVyOjpoYW5kbGVFdmVudChHZGtFdmVudCogdG91Y2hFdmVu
dCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICB1aW50MzJfdCBzZXF1ZW5jZSA9
IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZSh0b3VjaEV2ZW50
KSk7CisKKyAgICBzd2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VD
SF9CRUdJTjoKKyAgICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAgIG1fdG91Y2hFdmVu
dHMuc2V0KHNlcXVlbmNlLCBnZGtfZXZlbnRfY29weSh0b3VjaEV2ZW50KSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgZ2RrX2V2ZW50X2ZyZWUobV90
b3VjaEV2ZW50cy50YWtlKHNlcXVlbmNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9O
XzIKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1OTczYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIu
aApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJu
YWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR3RrVG91Y2hDb250
ZXh0SGVscGVyX2gKKyNkZWZpbmUgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gKKworI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit0eXBlZGVmIHVuaW9u
IF9HZGtFdmVudCBHZGtFdmVudDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHdGtU
b3VjaENvbnRleHRIZWxwZXIgeworcHVibGljOgorICAgIEd0a1RvdWNoQ29udGV4dEhlbHBlcigp
IHsgfTsKKyAgICB+R3RrVG91Y2hDb250ZXh0SGVscGVyKCk7CisKKyAgICBib29sIGhhbmRsZUV2
ZW50KEdka0V2ZW50Kik7CisgICAgY29uc3QgSGFzaE1hcDx1aW50MzJfdCwgR2RrRXZlbnQqPiYg
dG91Y2hFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoRXZlbnRzOyB9OworCitwcml2YXRl
OgorICAgIEhhc2hNYXA8dWludDMyX3QsIEdka0V2ZW50Kj4gbV90b3VjaEV2ZW50czsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNTll
MmRmOS4uZDExMGE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEy
LTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RL
XSBBbGxvdyBidWlsZGluZyB3aXRoIHRvdWNoIGV2ZW50cyBlbmFibGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZW4gdGhvdWdoIFdlYktpdDEgR1RL
IGNvZGUgZG9lc24ndCBpbXBsZW1lbnQgdG91Y2ggZXZlbnRzLAorICAgICAgICBGaXggYnVpbGQg
aWYgRU5BQkxFX1RPVUNIX0VWRU5UUyBpcyBwcmVzZW50IGZvciBXSzIuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21l
Q2xpZW50OjpuZWVkVG91Y2hFdmVudHMpOiBBZGQgZW1wdHkgc3R1YgorCiAyMDEzLTEyLTIwICBF
bnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gVGhlIGZ1bGxzY3JlZW4gQVBJIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
aW5kZXggNTFkNDNhYS4uYmRjODkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTE0Myw2ICsxNDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2ZW50
SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIG5lZWRU
b3VjaEV2ZW50cyhib29sKSB7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykg
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSosIEdy
YXBoaWNzTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMzBiMDRkLi4xY2U3OTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzUgQEAKKzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dA
Z25vbWUub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBzdXBwb3J0IHRvdWNoIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBHVEsr
ID49IDMuNC4wLCBHZGtFdmVudFRvdWNoIGlzIGF2YWlsYWJsZSB0byBpbmZvcm0gYWJvdXQgbXVs
dGl0b3VjaCBldmVudHMuIFVzZSB0aGVzZSB0byBpbXBsZW1lbnQKKyAgICAgICAgdG91Y2ggZXZl
bnRzIG9uIHRoaXMgcGxhdGZvcm0uIElmIGEgdG91Y2ggaXMgbGVmdCB1bmhhbmRsZWQgYW5kIGlz
IHRoZSAicG9pbnRlciBlbXVsYXRpbmciIG9uZSwgbW91c2UKKyAgICAgICAgZXZlbnRzIHdpbGwg
YmUgZ2VuZXJhdGVkIGFzIGEgZmFsbGJhY2suCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9ndGsv
TmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHA6CisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRv
dWNoRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6bmF0aXZl
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50Ojp0b3VjaENvbnRl
eHQpOiBBZGQgR1RLKyBpbXBsZW1lbnRhdGlvbiBvZiBOYXRpdmVXZWJUb3VjaEV2ZW50CisgICAg
ICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0Ojp0
b3VjaFBoYXNlRnJvbUV2ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudCk6IEFkZCBtZXRob2RzIHRvIGdlbmVyYXRlIE5hdGl2ZVdlYlRv
dWNoRXZlbnRzIG91dAorICAgICAgICBvZiBHZGtFdmVudFRvdWNoIGV2ZW50cywgYSBHdGtUb3Vj
aENvbnRleHRIZWxwZXIgb2JqZWN0IGlzIHVzZWQgdG8gaG9sZCBpbmZvcm1hdGlvbiBhYm91dCBh
bGwgY3VycmVudAorICAgICAgICB0b3VjaGVzLCBpbiBvcmRlciB0byBidWlsZCBpbmZvcm1hdGlv
biBhYm91dCBhbGwgaW5kaXZpZHVhbCB0b3VjaHBvaW50cy4KKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L1dlYkV2ZW50RmFjdG9yeS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91
Y2hFdmVudCk6IEltcGxlbWVudCBwb2ludGVyIGVtdWxhdGlvbiBpZiB0aGUgcG9pbnRlciBlbXVs
YXRpbmcKKyAgICAgICAgdG91Y2ggd2FzIHVuaGFuZGxlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZSk6
IExpc3RlbiBmb3IgdG91Y2ggZXZlbnRzCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRvdWNo
RXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdCk6IEFkZCBp
bXBsZW1lbnRhdGlvbiBmb3IgdGhlIHRvdWNoX2V2ZW50cygpIGhhbmRsZXIuCisKIDIwMTMtMTIt
MjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFRlc3QgL3dlYmtpdDIvV2ViS2l0V2ViUmVzb3VyY2UvbWltZS10eXBlIGZhaWxzIHdo
ZW4gcnVuIGFmdGVyIC93ZWJraXQyL1dlYktpdFdlYlZpZXcvcmVzb3VyY2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA3ZWNmMDc1Li4wNjM3MDBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTQ5Myw2ICs0OTMsNyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTGF5ZXJUcmVlQ29udGV4dEd0ay5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJpbnRJbmZvR3RrLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggZTdhOWE5NC4uOWRjM2VkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UKQEAgLTQ2LDYgKzQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcAogICAgIFNoYXJlZC9n
dGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYldo
ZWVsRXZlbnRHdGsuY3BwCisgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNw
cAogICAgIFNoYXJlZC9ndGsvUHJpbnRJbmZvR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNw
cApAQCAtNTQxLDEyICs1NDIsMTQgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICAg
ICAgU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAogICAgICAgICBTaGFyZWQvV2ViTW91c2VF
dmVudC5jcHAKICAgICAgICAgU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwCisgICAgICAgIFNoYXJl
ZC9XZWJUb3VjaEV2ZW50LmNwcAogCiAgICAgICAgIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRt
YXBDYWlyby5jcHAKIAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRH
dGsuY3BwCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKICAg
ICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcAorICAgICAgICBTaGFy
ZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCiAgICAgICAgIFNoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRv
dWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgK
aW5kZXggMGQ0YjJjZi4uOTUyOTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYlRvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZl
V2ViVG91Y2hFdmVudC5oCkBAIC0zMSw5ICszMSwxMSBAQAogI2lmIFBMQVRGT1JNKElPUykKICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBPQkpDX0NMQVNTIFVJV2ViVG91Y2hFdmVudHNHZXN0
dXJlUmVjb2duaXplcjsKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0KLSNpZiBQTEFURk9STShF
RkwpCisjZWxpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8R093blB0ckd0ay5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+Cit0eXBlZGVmIHVuaW9uIF9HZGtF
dmVudCBHZGtFdmVudDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJFd2tUb3VjaEV2
ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC00Niw4ICs0OCwxMiBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIGV4cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoVUlXZWJUb3VjaEV2ZW50c0dlc3R1
cmVSZWNvZ25pemVyICopOwogICAgIGNvbnN0IFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2du
aXplciogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9
Ci0jZW5kaWYKLSNpZiBQTEFURk9STShFRkwpCisjZWxpZiBQTEFURk9STShHVEspCisgICAgTmF0
aXZlV2ViVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50Jik7CisgICAgTmF0aXZl
V2ViVG91Y2hFdmVudChHZGtFdmVudCosIFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYp
OworICAgIGNvbnN0IEdka0V2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0
aXZlRXZlbnQuZ2V0KCk7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxw
ZXImIHRvdWNoQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hDb250ZXh0OyB9CisjZWxp
ZiBQTEFURk9STShFRkwpCiAgICAgTmF0aXZlV2ViVG91Y2hFdmVudChFd2tUb3VjaEV2ZW50Kiwg
Y29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJik7CiAgICAgY29uc3QgRXdrVG91Y2hFdmVu
dCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CiAj
ZW5kaWYKQEAgLTU1LDggKzYxLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFJldGFpblB0cjxVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXI+IG1f
bmF0aXZlRXZlbnQ7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShFRkwpCisjZWxpZiBQTEFURk9STShH
VEspCisgICAgR093blB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKKyAgICBjb25zdCBXZWJD
b3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImIG1fdG91Y2hDb250ZXh0OworI2VsaWYgUExBVEZP
Uk0oRUZMKQogICAgIFJlZlB0cjxFd2tUb3VjaEV2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VuZGlm
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3Vj
aEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hF
dmVudEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJjZDRhNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViVG91
Y2hFdmVudEd0ay5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBDYXJsb3MgR2FybmFjaG8gPGNhcmxvc2dAZ25vbWUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgorCisjaW5jbHVk
ZSAiV2ViRXZlbnRGYWN0b3J5LmgiCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChHZGtF
dmVudCogZXZlbnQsIFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgY29udGV4dCkKKyAg
ICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KGV2
ZW50LCBjb250ZXh0KSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQp
KQorICAgICwgbV90b3VjaENvbnRleHQoY29udGV4dCkKK3sKK30KKworTmF0aXZlV2ViVG91Y2hF
dmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVu
dCkKKyAgICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2
ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIGV2ZW50LnRvdWNoQ29udGV4dCgpKSkKKyAgICAsIG1f
bmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQubmF0aXZlRXZlbnQoKSkpCisgICAgLCBt
X3RvdWNoQ29udGV4dChldmVudC50b3VjaENvbnRleHQoKSkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5j
cHAKaW5kZXggY2I4OGE4Mi4uZTk0NTQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrVmVyc2lvbmluZy5oPgogI2luY2x1ZGUgPGdkay9nZGsuaD4KICNpbmNsdWRlIDxnZGsv
Z2Rra2V5c3ltcy5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTIwMyw0ICsyMDQsNzcgQEAg
V2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQo
Y29uc3QgR2RrRXZlbnQqIGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka19l
dmVudF9nZXRfdGltZShldmVudCkpOwogfQogCisjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCisK
K3N0YXRpYyBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSB0b3VjaFBoYXNl
RnJvbUV2ZW50cyhjb25zdCBHZGtFdmVudCogY3VycmVudCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50
KQoreworICAgIGlmIChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKGN1cnJlbnQpICE9IGdk
a19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2UoZXZlbnQpKQorICAgICAgICByZXR1cm4gV2ViUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisKKyAgICBzd2l0Y2ggKGN1cnJlbnQt
PnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAgIHJldHVybiBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46
CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAg
ICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgIH0KK30KKworc3RhdGljIHZvaWQg
YXBwZW5kVG91Y2hFdmVudChWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiYgdG91Y2hQb2lu
dExpc3QsIGNvbnN0IEdka0V2ZW50KiBldmVudCwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aFBvaW50U3RhdGUgc3RhdGUpCit7CisgICAgdWludDMyX3QgaWRlbnRpZmllciA9IEdQT0lOVEVS
X1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkpOworCisgICAgZ2Rv
dWJsZSB4LCB5OworICAgIGdka19ldmVudF9nZXRfY29vcmRzKGV2ZW50LCAmeCwgJnkpOworCisg
ICAgZ2RvdWJsZSB4Um9vdCwgeVJvb3Q7CisgICAgZ2RrX2V2ZW50X2dldF9yb290X2Nvb3Jkcyhl
dmVudCwgJnhSb290LCAmeVJvb3QpOworCisgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50IHRvdWNo
UG9pbnQoaWRlbnRpZmllciwgc3RhdGUsIEludFBvaW50KHhSb290LCB5Um9vdCksIEludFBvaW50
KHgsIHkpKTsKKyAgICB0b3VjaFBvaW50TGlzdC51bmNoZWNrZWRBcHBlbmQodG91Y2hQb2ludCk7
Cit9CisKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCitXZWJUb3VjaEV2ZW50IFdlYkV2
ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGNv
bnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KQoreworI2lm
bmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBzdGF0aWNf
Y2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisgICAgSGFzaE1hcDx1aW50MzJfdCwgR2RrRXZlbnQq
PiB0b3VjaEV2ZW50cyA9IHRvdWNoQ29udGV4dC50b3VjaEV2ZW50cygpOworICAgIGludCBudW1F
dmVudHMgPSB0b3VjaEV2ZW50cy5zaXplKCk7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7
CisgICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6VG91
Y2hTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOgorICAg
ICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoTW92ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBHREtfVE9VQ0hfRU5EOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoRW5kOworICAg
ICAgICArK251bUV2ZW50czsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91
Y2hQb2ludD4gdG91Y2hQb2ludExpc3Q7CisgICAgdG91Y2hQb2ludExpc3QucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShudW1FdmVudHMpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBzdG9yZWRFdmVu
dCA6IHRvdWNoRXZlbnRzLnZhbHVlcygpKQorICAgICAgICBhcHBlbmRUb3VjaEV2ZW50KHRvdWNo
UG9pbnRMaXN0LCBzdG9yZWRFdmVudCwgdG91Y2hQaGFzZUZyb21FdmVudHMoc3RvcmVkRXZlbnQs
IGV2ZW50KSk7CisKKyAgICAvLyBUb3VjaCB3YXMgYWxyZWFkeSByZW1vdmVkIGZyb20gdGhlIEd0
a1RvdWNoQ29udGV4dEhlbHBlciwgYWRkIGl0IGhlcmUuCisgICAgaWYgKGV2ZW50LT50eXBlID09
IEdES19UT1VDSF9FTkQpCisgICAgICAgIGFwcGVuZFRvdWNoRXZlbnQodG91Y2hQb2ludExpc3Qs
IGV2ZW50LCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQpOworCisgICAgcmV0
dXJuIFdlYlRvdWNoRXZlbnQodHlwZSwgdG91Y2hQb2ludExpc3QsIG1vZGlmaWVyc0ZvckV2ZW50
KGV2ZW50KSwgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CisjZWxzZQorICAgIHJldHVybiBX
ZWJUb3VjaEV2ZW50KCk7CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuaAppbmRleCAwODU4MTVjLi5mYzMwMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvV2ViRXZlbnRGYWN0b3J5LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIldlYkV2
ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db21wb3NpdGlvblJlc3VsdHMuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgogCiB0eXBlZGVmIHVuaW9uIF9HZGtF
dmVudCBHZGtFdmVudDsKIApAQCAtMzksNiArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdl
Yk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCosIGludCk7CiAg
ICAgc3RhdGljIFdlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVu
dCopOwogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQo
Y29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpDb21wb3NpdGlvblJlc3VsdHMmKTsKKyAg
ICBzdGF0aWMgV2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IEdka0V2ZW50
KiwgY29uc3QgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVyJik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBlZWQ2NDliLi43MzcxNzZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0z
MzQsNCArMzM0LDU0IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmJlZ2FuRXhpdEZ1bGxTY3JlZW4o
Y29uc3QgSW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBJbnRSCiAKICNlbmRpZiAvLyBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91Y2hF
dmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRs
ZWQpCit7CisgICAgaWYgKHdhc0V2ZW50SGFuZGxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gRW11bGF0ZSBwb2ludGVyIGV2ZW50cyBpZiB1bmhhbmRsZWQuCisgICAgY29uc3QgR2RrRXZl
bnQqIHRvdWNoRXZlbnQgPSBldmVudC5uYXRpdmVFdmVudCgpOworCisgICAgaWYgKCF0b3VjaEV2
ZW50LT50b3VjaC5lbXVsYXRpbmdfcG9pbnRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR093
blB0cjxHZGtFdmVudD4gcG9pbnRlckV2ZW50OworCisgICAgaWYgKHRvdWNoRXZlbnQtPnR5cGUg
PT0gR0RLX1RPVUNIX1VQREFURSkgeworICAgICAgICBwb2ludGVyRXZlbnQuc2V0KGdka19ldmVu
dF9uZXcoR0RLX01PVElPTl9OT1RJRlkpKTsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24u
dGltZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnRpbWU7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90
aW9uLnggPSB0b3VjaEV2ZW50LT50b3VjaC54OworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlv
bi55ID0gdG91Y2hFdmVudC0+dG91Y2gueTsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24u
eF9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueF9yb290OworICAgICAgICBwb2ludGVyRXZlbnQt
Pm1vdGlvbi55X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3VjaC55X3Jvb3Q7CisgICAgICAgIHBvaW50
ZXJFdmVudC0+bW90aW9uLnN0YXRlID0gdG91Y2hFdmVudC0+dG91Y2guc3RhdGUgfCBHREtfQlVU
VE9OMV9NQVNLOworICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAodG91Y2hFdmVudC0+dHlw
ZSkgeworICAgICAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgICAgICBwb2ludGVyRXZl
bnQuc2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9SRUxFQVNFKSk7CisgICAgICAgICAgICBw
b2ludGVyRXZlbnQtPmJ1dHRvbi5zdGF0ZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnN0YXRlIHwgR0RL
X0JVVFRPTjFfTUFTSzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdES19UT1VD
SF9CRUdJTjoKKyAgICAgICAgICAgIHBvaW50ZXJFdmVudC5zZXQoZ2RrX2V2ZW50X25ldyhHREtf
QlVUVE9OX1BSRVNTKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgcG9p
bnRlckV2ZW50LT5idXR0b24uYnV0dG9uID0gMTsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0
b24udGltZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnRpbWU7CisgICAgICAgIHBvaW50ZXJFdmVudC0+
YnV0dG9uLnggPSB0b3VjaEV2ZW50LT50b3VjaC54OworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1
dHRvbi55ID0gdG91Y2hFdmVudC0+dG91Y2gueTsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0
b24ueF9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueF9yb290OworICAgICAgICBwb2ludGVyRXZl
bnQtPmJ1dHRvbi55X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3VjaC55X3Jvb3Q7CisgICAgfQorCisg
ICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UocG9pbnRlckV2ZW50LmdldCgpLCBnZGtfZXZlbnRfZ2V0
X2RldmljZSh0b3VjaEV2ZW50KSk7CisgICAgZ2RrX2V2ZW50X3NldF9zb3VyY2VfZGV2aWNlKHBv
aW50ZXJFdmVudC5nZXQoKSwgZ2RrX2V2ZW50X2dldF9zb3VyY2VfZGV2aWNlKHRvdWNoRXZlbnQp
KTsKKyAgICBwb2ludGVyRXZlbnQtPmFueS53aW5kb3cgPSBHREtfV0lORE9XKGdfb2JqZWN0X3Jl
Zih0b3VjaEV2ZW50LT5hbnkud2luZG93KSk7CisgICAgcG9pbnRlckV2ZW50LT5hbnkuc2VuZF9l
dmVudCA9IFRSVUU7CisKKyAgICBndGtfd2lkZ2V0X2V2ZW50KG1fdmlld1dpZGdldCwgcG9pbnRl
ckV2ZW50LmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCBlMGMxOGU1
Li4zNmRiY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmgKQEAgLTEyMiw2ICsxMjIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxG
cmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmluYWxGcmFtZSkgT1ZFUlJJREU7CiAjZW5k
aWYKIAorICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2Vi
VG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBPVkVSUklERTsKKwogICAgIC8vIE1l
bWJlcnMgb2YgUGFnZUNsaWVudEltcGwgY2xhc3MKICAgICBHdGtXaWRnZXQqIG1fdmlld1dpZGdl
dDsKICAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAppbmRleCBjNzhjNGU3Li44MGY3ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC01Myw2ICs1Myw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9HT3duUHRyR3RrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtD
bGlja0NvdW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a0RyYWdBbmREcm9wSGVscGVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtUb3VjaENvbnRleHRIZWxwZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTExMSw2ICsxMTIsNyBA
QCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAgR093blB0cjxHZGtFdmVu
dD4gY29udGV4dE1lbnVFdmVudDsKICAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKiBhY3RpdmVD
b250ZXh0TWVudVByb3h5OwogICAgIFdlYlZpZXdCYXNlSW5wdXRNZXRob2RGaWx0ZXIgaW5wdXRN
ZXRob2RGaWx0ZXI7CisgICAgR3RrVG91Y2hDb250ZXh0SGVscGVyIHRvdWNoQ29udGV4dDsKIAog
ICAgIEd0a1dpbmRvdyogdG9wbGV2ZWxPblNjcmVlbldpbmRvdzsKICAgICB1bnNpZ25lZCBsb25n
IHRvcGxldmVsUmVzaXplR3JpcFZpc2liaWxpdHlJRDsKQEAgLTI3Myw3ICsyNzUsOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAg
ICAgIHwgR0RLX0JVVFRPTl9NT1RJT05fTUFTSwogICAgICAgICB8IEdES19CVVRUT04xX01PVElP
Tl9NQVNLCiAgICAgICAgIHwgR0RLX0JVVFRPTjJfTU9USU9OX01BU0sKLSAgICAgICAgfCBHREtf
QlVUVE9OM19NT1RJT05fTUFTSzsKKyAgICAgICAgfCBHREtfQlVUVE9OM19NT1RJT05fTUFTSwor
ICAgICAgICB8IEdES19UT1VDSF9NQVNLOwogCiAgICAgZ2ludCBhdHRyaWJ1dGVzTWFzayA9IEdE
S19XQV9YIHwgR0RLX1dBX1kgfCBHREtfV0FfVklTVUFMOwogCkBAIC03MTMsNiArNzE2LDIwIEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZU1vdGlvbk5vdGlmeUV2ZW50KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudE1vCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdk
a0V2ZW50VG91Y2gqIGV2ZW50KQoreworICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CisKKyAgICBpZiAocHJpdi0+YXV0aGVu
dGljYXRpb25EaWFsb2cpCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgcHJpdi0+dG91Y2hD
b250ZXh0LmhhbmRsZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCkpOwor
ICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50
KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksIHByaXYtPnRvdWNoQ29udGV4dCkp
OworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3
QmFzZVF1ZXJ5VG9vbHRpcChHdGtXaWRnZXQqIHdpZGdldCwgZ2ludCB4LCBnaW50IHksIGdib29s
ZWFuIGtleWJvYXJkTW9kZSwgR3RrVG9vbHRpcCogdG9vbHRpcCkKIHsKICAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2
OwpAQCAtODk3LDYgKzkxNCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2Ns
YXNzX2luaXQoV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiAgICAgd2lkZ2V0
Q2xhc3MtPmJ1dHRvbl9yZWxlYXNlX2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VCdXR0b25SZWxl
YXNlRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnNjcm9sbF9ldmVudCA9IHdlYmtpdFdlYlZpZXdC
YXNlU2Nyb2xsRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPm1vdGlvbl9ub3RpZnlfZXZlbnQgPSB3
ZWJraXRXZWJWaWV3QmFzZU1vdGlvbk5vdGlmeUV2ZW50OworICAgIHdpZGdldENsYXNzLT50b3Vj
aF9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hFdmVudDsKICAgICB3aWRnZXRDbGFzcy0+
cXVlcnlfdG9vbHRpcCA9IHdlYmtpdFdlYlZpZXdCYXNlUXVlcnlUb29sdGlwOwogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgd2lkZ2V0Q2xhc3MtPmRyYWdfZW5kID0gd2Via2l0V2ViVmll
d0Jhc2VEcmFnRW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZl
YXR1cmVzLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CmluZGV4
IDY0N2MyODQ0Li5iM2RlYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2Vi
S2l0RmVhdHVyZXMubTQKKysrIGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVz
Lm00CkBAIC0xNzYsNyArMTc2LDcgQEAgJHNyY2Rpci9Ub29scy9ndGsvZ2VuZXJhdGUtZmVhdHVy
ZS1kZWZpbmVzLWZpbGVzICRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIFwKICAgICBFTkFC
TEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDPTFcCiAgICAgRU5BQkxFX1RFWFRfQVVUT1NJ
WklORz0wIFwKICAgICBFTkFCTEVfVEhSRUFERURfSFRNTF9QQVJTRVI9MCBcCi0gICAgRU5BQkxF
X1RPVUNIX0VWRU5UUz0wIFwKKyAgICBFTkFCTEVfVE9VQ0hfRVZFTlRTPTEgXAogICAgIEVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkc9MCBcCiAgICAgRU5BQkxFX1VTRVJfVElNSU5HPTAgXAogICAg
IEVOQUJMRV9WSUJSQVRJT049MCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGNlNjA0MjQuLjA0
Y2E2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0zOSw3ICszOSw3IEBAIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFET1dfRE9NIE9GRikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFSRURfV09SS0VSUyBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TUEVMTENIRUNLIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQgT04pCi1XRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9GRikKK1dF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVVNFUlNFTEVDVF9BTEwgT04p
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklCUkFUSU9OIE9GRikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFTyBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219970</attachid>
            <date>2013-12-24 08:49:59 -0800</date>
            <delta_ts>2013-12-24 08:59:49 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>38415</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NmE3NDk4Li4xMDFhZjAz
NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVh
dHVyZXMubTQ6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IHNldCBF
TkFCTEVfVE9VQ0hfRVZFTlRTIHRvIDEgaWYgYnVpbGRpbmcgd2l0aCBHVEsrLgorCiAyMDEzLTEy
LTE4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtH
VEtdW0NNYWtlXSBtYWtlIGxpYmphdmFzY3JpcHRjb3JlZ3RrIGEgcHVibGljIHNoYXJlZCBsaWJy
YXJ5IGFnYWluCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODY1MTE5Ny4uMmM4ZjFiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczog
Y2hlY2sgdGVzdHMgaW4gZmFzdC9ldmVudHMvdG91Y2gKKwogMjAxMy0xMi0wOSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IEltYWdlQnVm
ZmVyIHRvIHJlLXVzZSBJT1N1cmZhY2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGMxMjRiNzIuLjU4NmE4MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzIsNyArMTcyLDcgQEAgd2Via2l0Lm9yZy9iLzYx
MTQwIGZhc3Qvbm90aWZpY2F0aW9ucyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzYxMTQwIGh0dHAv
dGVzdHMvbm90aWZpY2F0aW9ucyBbIFNraXAgXQogCiAjIFRoZXNlIHRlc3RzIHJlcXVpcmUgdG91
Y2ggc3VwcG9ydC4KLXdlYmtpdC5vcmcvYi85ODkzMSBmYXN0L2V2ZW50cy90b3VjaCBbIFNraXAg
XQorZmFzdC9ldmVudHMvdG91Y2gKIAogIyBTdG9yYWdlVHJhY2tlciBpcyBub3QgZW5hYmxlZC4K
IHdlYmtpdC5vcmcvYi85ODkzMyBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3Jh
Z2V0cmFja2VyIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNiNTJjYi4uNDE4MGQzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJs
b3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQg
Y29kZSB0byBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0cyBpbiBmYXN0L2V2ZW50cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsr
IG5vdyB0aGF0IHRvdWNoCisgICAgICAgIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVz
IGFsbCBleHBlY3RlZCBiaXRzIGFyZSB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3Vj
aENvbnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9p
bnRzLCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0
ZWQgY29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBu
b3cgdGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDEzLTEyLTIxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0g
UmVzb3VyY2VIYW5kbGVTb3VwIHNob3VsZCB1c2UgYXN5bmMgY2xpZW50IGNhbGxiYWNrcyB3aGVu
IGNsaWVudCB1c2VzIGFzeW5jIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggMzYwMzNkYi4uMWFkY2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zMDE3LDggKzMwMTcsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5v
ZGVUcmF2ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmggXAorCVNv
dXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9y
bVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5j
cHAgXApAQCAtNjI0OCw2ICs2MjUxLDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5n
LmMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhYzVhOTk2Li5jNGYyYjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgxLDYgKzE4MSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3Bw
CiAgICAgcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtD
bGlja0NvdW50ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3BwCiAgICAgcGxhdGZv
cm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtQbHVn
aW5XaWRnZXQuY3BwCkBAIC0xOTUsNiArMTk2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRm
b3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmNw
cAogICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVRvdWNoRXZlbnRH
dGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAg
ICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAogICAgIHBsYXRmb3JtL2d0
ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKQEAgLTUxNCw2ICs1MTYsNyBAQCBpZiAoRU5BQkxFX1dF
QktJVDIpCiAgICAgICAgIGRvbS9SYW5nZS5pZGwKICAgICAgICAgZG9tL1NoYWRvd1Jvb3QuaWRs
CiAgICAgICAgIGRvbS9UZXh0LmlkbAorICAgICAgICBkb20vVG91Y2guaWRsCiAgICAgICAgIGRv
bS9UcmVlV2Fsa2VyLmlkbAogICAgICAgICBkb20vVUlFdmVudC5pZGwKICAgICAgICAgZG9tL1dl
YktpdE5hbWVkRmxvdy5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dO
VW1ha2VmaWxlLmFtCmluZGV4IDY4NjRlMTAuLmRmNDJjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpAQCAtMjYyLDYgKzI2Miw4IEBAIHdl
YmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01TdHlsZVNoZWV0UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NVGV4dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UZXh0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91
Y2guY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2hQcml2YXRl
LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmgg
XAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmVlV2Fsa2VyLmNwcCBcCkBA
IC0zMjMsNiArMzI1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVJhbmdlLmggXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01Ub3VjaC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
VHJlZVdhbGtlci5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVUlFdmVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQmxvYi5oIFwKQEAgLTQz
Miw2ICs0MzUsNyBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
d2Via2l0ZG9tZGVmaW5lcy5oCiAKKwogaWYgRU5BQkxFX1ZJREVPCiB3ZWJraXRndGtfZ2RvbV9i
dWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlv
VHJhY2suaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L3dl
YmtpdGRvbS5zeW1ib2xzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRk
b20uc3ltYm9scwppbmRleCBiMTJmZjU3Li43NGRkMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMKQEAgLTE2NDgsNiArMTY0OCwx
OCBAQCBnbG9uZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YV94KFdlYktp
dERPTVdoZWVsRXZlbnQqKQogZ2xvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2hlZWxf
ZGVsdGFfeShXZWJLaXRET01XaGVlbEV2ZW50KikKIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZl
bnRfZ2V0X3doZWVsX2RlbHRhKFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2Jvb2xlYW4gd2Via2l0
X2RvbV93aGVlbF9ldmVudF9nZXRfd2Via2l0X2RpcmVjdGlvbl9pbnZlcnRlZF9mcm9tX2Rldmlj
ZShXZWJLaXRET01XaGVlbEV2ZW50KikKK1dlYktpdERPTUV2ZW50VGFyZ2V0KiB3ZWJraXRfZG9t
X3RvdWNoX2dldF90YXJnZXQoV2ViS2l0RE9NVG91Y2gqKQorZ2Zsb2F0IHdlYmtpdF9kb21fdG91
Y2hfZ2V0X3dlYmtpdF9mb3JjZShXZWJLaXRET01Ub3VjaCopCitnZmxvYXQgd2Via2l0X2RvbV90
b3VjaF9nZXRfd2Via2l0X3JvdGF0aW9uX2FuZ2xlKFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdl
YmtpdF9kb21fdG91Y2hfZ2V0X2NsaWVudF94KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtp
dF9kb21fdG91Y2hfZ2V0X2NsaWVudF95KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9k
b21fdG91Y2hfZ2V0X3BhZ2VfeChXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3Rv
dWNoX2dldF9wYWdlX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9n
ZXRfc2NyZWVuX3goV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRf
c2NyZWVuX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Vi
a2l0X3JhZGl1c194KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0
X3dlYmtpdF9yYWRpdXNfeShXZWJLaXRET01Ub3VjaCopCitndWxvbmcgd2Via2l0X2RvbV90b3Vj
aF9nZXRfaWRlbnRpZmllcihXZWJLaXRET01Ub3VjaCopCiBnY2hhciogd2Via2l0X2RvbV9hdWRp
b190cmFja19nZXRfaWQoV2ViS2l0RE9NQXVkaW9UcmFjayopCiBnY2hhciogd2Via2l0X2RvbV9h
dWRpb190cmFja19nZXRfa2luZChXZWJLaXRET01BdWRpb1RyYWNrKikKIGdjaGFyKiB3ZWJraXRf
ZG9tX2F1ZGlvX3RyYWNrX2dldF9sYWJlbChXZWJLaXRET01BdWRpb1RyYWNrKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NhNjM2NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIu
Y3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdh
cm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkd0a1RvdWNoQ29udGV4dEhlbHBlci5oIgorCisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0d0a1RvdWNoQ29udGV4dEhlbHBlcjo6fkd0
a1RvdWNoQ29udGV4dEhlbHBlcigpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBzdG9yZWRFdmVu
dCA6IG1fdG91Y2hFdmVudHMudmFsdWVzKCkpCisgICAgICAgIGdka19ldmVudF9mcmVlKHN0b3Jl
ZEV2ZW50KTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisKK2Jvb2wgR3RrVG91Y2hD
b250ZXh0SGVscGVyOjpoYW5kbGVFdmVudChHZGtFdmVudCogdG91Y2hFdmVudCkKK3sKKyNpZm5k
ZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICB1aW50MzJfdCBzZXF1ZW5jZSA9IEdQT0lOVEVSX1RP
X1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZSh0b3VjaEV2ZW50KSk7CisKKyAgICBz
d2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAg
ICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAgIG1fdG91Y2hFdmVudHMuc2V0KHNlcXVl
bmNlLCBnZGtfZXZlbnRfY29weSh0b3VjaEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgZ2RrX2V2ZW50X2ZyZWUobV90b3VjaEV2ZW50cy50
YWtlKHNlcXVlbmNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKKworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIwMGQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9z
Z0Bnbm9tZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gK
KyNkZWZpbmUgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisKK3R5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3R5cGVkZWYgVG91Y2hFdmVudHNNYXAgSGFzaE1hcDx1aW50MzJfdCwgR2RrRXZl
bnQqPjsKKworY2xhc3MgR3RrVG91Y2hDb250ZXh0SGVscGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHdGtUb3VjaENvbnRleHRIZWxwZXIpOworcHVibGljOgorICAgIH5HdGtUb3VjaENv
bnRleHRIZWxwZXIoKTsKKworICAgIGJvb2wgaGFuZGxlRXZlbnQoR2RrRXZlbnQqKTsKKyAgICBj
b25zdCBUb3VjaEV2ZW50c01hcCYgdG91Y2hFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX3RvdWNo
RXZlbnRzOyB9OworCitwcml2YXRlOgorICAgIFRvdWNoRXZlbnRzTWFwIG1fdG91Y2hFdmVudHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IDU5ZTJkZjkuLmQxMTBhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMy0xMi0yMyAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAg
ICAgW0dUS10gQWxsb3cgYnVpbGRpbmcgd2l0aCB0b3VjaCBldmVudHMgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFdmVuIHRob3VnaCBXZWJL
aXQxIEdUSyBjb2RlIGRvZXNuJ3QgaW1wbGVtZW50IHRvdWNoIGV2ZW50cywKKyAgICAgICAgRml4
IGJ1aWxkIGlmIEVOQUJMRV9UT1VDSF9FVkVOVFMgaXMgcHJlc2VudCBmb3IgV0syLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6bmVlZFRvdWNoRXZlbnRzKTogQWRkIGVtcHR5IHN0dWIKKwogMjAxMy0x
Mi0yMCAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFRoZSBmdWxsc2NyZWVuIEFQSSBzaG91bGQgYmUgZW5hYmxlZCBieSBkZWZh
dWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5oCmluZGV4IDUxZDQzYWEuLmJkYzg5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xNDMsNiArMTQzLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbnVtV2hl
ZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgeyB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJh
bWUqLCBHcmFwaGljc0xheWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzMwYjA0ZC4uMWNlNzk0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxj
YXJsb3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgc3VwcG9ydCB0b3Vj
aCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW4gR1RLKyA+PSAzLjQuMCwgR2RrRXZlbnRUb3VjaCBpcyBhdmFpbGFibGUgdG8gaW5mb3JtIGFi
b3V0IG11bHRpdG91Y2ggZXZlbnRzLiBVc2UgdGhlc2UgdG8gaW1wbGVtZW50CisgICAgICAgIHRv
dWNoIGV2ZW50cyBvbiB0aGlzIHBsYXRmb3JtLiBJZiBhIHRvdWNoIGlzIGxlZnQgdW5oYW5kbGVk
IGFuZCBpcyB0aGUgInBvaW50ZXIgZW11bGF0aW5nIiBvbmUsIG1vdXNlCisgICAgICAgIGV2ZW50
cyB3aWxsIGJlIGdlbmVyYXRlZCBhcyBhIGZhbGxiYWNrLgorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFy
ZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC9OYXRp
dmVXZWJUb3VjaEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6
Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6dG91
Y2hDb250ZXh0KTogQWRkIEdUSysgaW1wbGVtZW50YXRpb24gb2YgTmF0aXZlV2ViVG91Y2hFdmVu
dAorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6dG91Y2hQaGFzZUZyb21FdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQpOiBBZGQgbWV0aG9kcyB0byBnZW5lcmF0ZSBOYXRp
dmVXZWJUb3VjaEV2ZW50cyBvdXQKKyAgICAgICAgb2YgR2RrRXZlbnRUb3VjaCBldmVudHMsIGEg
R3RrVG91Y2hDb250ZXh0SGVscGVyIG9iamVjdCBpcyB1c2VkIHRvIGhvbGQgaW5mb3JtYXRpb24g
YWJvdXQgYWxsIGN1cnJlbnQKKyAgICAgICAgdG91Y2hlcywgaW4gb3JkZXIgdG8gYnVpbGQgaW5m
b3JtYXRpb24gYWJvdXQgYWxsIGluZGl2aWR1YWwgdG91Y2hwb2ludHMuCisgICAgICAgICogU2hh
cmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aFRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgcG9pbnRlciBlbXVsYXRpb24gaWYgdGhlIHBvaW50
ZXIgZW11bGF0aW5nCisgICAgICAgIHRvdWNoIHdhcyB1bmhhbmRsZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVJl
YWxpemUpOiBMaXN0ZW4gZm9yIHRvdWNoIGV2ZW50cworICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VUb3VjaEV2ZW50KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQp
OiBBZGQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0b3VjaF9ldmVudHMoKSBoYW5kbGVyLgorCiAy
MDEzLTEyLTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBUZXN0IC93ZWJraXQyL1dlYktpdFdlYlJlc291cmNlL21pbWUtdHlwZSBm
YWlscyB3aGVuIHJ1biBhZnRlciAvd2Via2l0Mi9XZWJLaXRXZWJWaWV3L3Jlc291cmNlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggN2VjZjA3NS4uMDYzNzAwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00OTMsNiArNDkzLDcgQEAgd2Via2l0Ml9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGU3YTlhOTQuLjlkYzNlZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC00Niw2ICs0Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAgICBT
aGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRp
dmVXZWJXaGVlbEV2ZW50R3RrLmNwcAorICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVu
dEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAKICAgICBTaGFyZWQvZ3Rr
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5jcHAKQEAgLTU0MSwxMiArNTQyLDE0IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1Mp
CiAgICAgICAgIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKICAgICAgICAgU2hhcmVkL1dl
Yk1vdXNlRXZlbnQuY3BwCiAgICAgICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAorICAgICAg
ICBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKIAogICAgICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVh
YmxlQml0bWFwQ2Fpcm8uY3BwCiAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICAg
ICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQv
Z3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRp
dmVXZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oCmluZGV4IDBkNGIyY2YuLjk1Mjk0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYlRvdWNoRXZlbnQuaApAQCAtMzEsOSArMzEsMTEgQEAKICNpZiBQTEFURk9STShJ
T1MpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogT0JKQ19DTEFTUyBVSVdlYlRvdWNoRXZl
bnRzR2VzdHVyZVJlY29nbml6ZXI7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQotCi0jaWYgUExB
VEZPUk0oRUZMKQorI2VsaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgordHlwZWRlZiB1bmlv
biBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiRXdr
VG91Y2hFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDYsOCArNDgsMTIgQEAgcHVibGljOgogI2lmIFBMQVRG
T1JNKElPUykKICAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KFVJV2ViVG91Y2hFdmVu
dHNHZXN0dXJlUmVjb2duaXplciAqKTsKICAgICBjb25zdCBVSVdlYlRvdWNoRXZlbnRzR2VzdHVy
ZVJlY29nbml6ZXIqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5n
ZXQoKTsgfQotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExBVEZPUk0oR1RLKQor
ICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYpOworICAg
IE5hdGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQqLCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRI
ZWxwZXImKTsKKyAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVy
biBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6R3RrVG91Y2hDb250
ZXh0SGVscGVyJiB0b3VjaENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoQ29udGV4dDsg
fQorI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrVG91Y2hF
dmVudCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwogICAgIGNvbnN0IEV3a1Rv
dWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQo
KTsgfQogI2VuZGlmCkBAIC01NSw4ICs2MSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25p
emVyPiBtX25hdGl2ZUV2ZW50OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExB
VEZPUk0oR1RLKQorICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CisgICAgY29u
c3QgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVyJiBtX3RvdWNoQ29udGV4dDsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKICAgICBSZWZQdHI8RXdrVG91Y2hFdmVudD4gbV9uYXRpdmVFdmVudDsK
ICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZl
V2ViVG91Y2hFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdl
YlRvdWNoRXZlbnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIy
Y2Q0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2
ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKKwor
I2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgPGdkay9nZGsuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZl
bnQoR2RrRXZlbnQqIGV2ZW50LCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImIGNvbnRl
eHQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hF
dmVudChldmVudCwgY29udGV4dCkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5
KGV2ZW50KSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGNvbnRleHQpCit7Cit9CisKK05hdGl2ZVdl
YlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVu
dCYgZXZlbnQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
VG91Y2hFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCBldmVudC50b3VjaENvbnRleHQoKSkpCisg
ICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpKQor
ICAgICwgbV90b3VjaENvbnRleHQoZXZlbnQudG91Y2hDb250ZXh0KCkpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZh
Y3RvcnkuY3BwCmluZGV4IGNiODhhODIuLjMxY2I4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVk
ZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yMDMsNCArMjA0
LDc1IEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2Fy
ZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKIH0KIAorI2lmbmRlZiBHVEtfQVBJX1ZFUlNJ
T05fMgorc3RhdGljIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHRvdWNo
UGhhc2VGcm9tRXZlbnRzKGNvbnN0IEdka0V2ZW50KiBjdXJyZW50LCBjb25zdCBHZGtFdmVudCog
ZXZlbnQpCit7CisgICAgaWYgKGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2UoY3VycmVudCkg
IT0gZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkpCisgICAgICAgIHJldHVybiBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKworICAgIHN3aXRjaCAoY3Vy
cmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToKKyAgICAgICAgcmV0dXJu
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAgICBjYXNlIEdES19UT1VDSF9C
RUdJTjoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2Vk
OworICAgIGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCBhcHBlbmRUb3VjaEV2ZW50KFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+JiB0b3Vj
aFBvaW50TGlzdCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkKK3sKKyAgICB1aW50MzJfdCBpZGVudGlmaWVyID0gR1BP
SU5URVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKGV2ZW50KSk7CisKKyAg
ICBnZG91YmxlIHgsIHk7CisgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7
CisKKyAgICBnZG91YmxlIHhSb290LCB5Um9vdDsKKyAgICBnZGtfZXZlbnRfZ2V0X3Jvb3RfY29v
cmRzKGV2ZW50LCAmeFJvb3QsICZ5Um9vdCk7CisKKyAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQg
dG91Y2hQb2ludChpZGVudGlmaWVyLCBzdGF0ZSwgSW50UG9pbnQoeFJvb3QsIHlSb290KSwgSW50
UG9pbnQoeCwgeSkpOworICAgIHRvdWNoUG9pbnRMaXN0LnVuY2hlY2tlZEFwcGVuZCh0b3VjaFBv
aW50KTsKK30KKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCitXZWJUb3VjaEV2ZW50IFdl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQs
IGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KQorewor
I2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBzdGF0
aWNfY2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisgICAgVG91Y2hFdmVudHNNYXAgdG91Y2hFdmVu
dHMgPSB0b3VjaENvbnRleHQudG91Y2hFdmVudHMoKTsKKyAgICBpbnQgbnVtRXZlbnRzID0gdG91
Y2hFdmVudHMuc2l6ZSgpOworCisgICAgc3dpdGNoIChldmVudC0+dHlwZSkgeworICAgIGNhc2Ug
R0RLX1RPVUNIX0JFR0lOOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToKKyAgICAgICAgdHlwZSA9
IFdlYkV2ZW50OjpUb3VjaE1vdmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNI
X0VORDoKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaEVuZDsKKyAgICAgICAgKytudW1F
dmVudHM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IHRv
dWNoUG9pbnRMaXN0OworICAgIHRvdWNoUG9pbnRMaXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bnVtRXZlbnRzKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgc3RvcmVkRXZlbnQgOiB0b3VjaEV2
ZW50cy52YWx1ZXMoKSkKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVudCh0b3VjaFBvaW50TGlzdCwg
c3RvcmVkRXZlbnQsIHRvdWNoUGhhc2VGcm9tRXZlbnRzKHN0b3JlZEV2ZW50LCBldmVudCkpOwor
CisgICAgLy8gVG91Y2ggd2FzIGFscmVhZHkgcmVtb3ZlZCBmcm9tIHRoZSBHdGtUb3VjaENvbnRl
eHRIZWxwZXIsIGFkZCBpdCBoZXJlLgorICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hf
RU5EKQorICAgICAgICBhcHBlbmRUb3VjaEV2ZW50KHRvdWNoUG9pbnRMaXN0LCBldmVudCwgV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKKworICAgIHJldHVybiBXZWJUb3Vj
aEV2ZW50KHR5cGUsIHRvdWNoUG9pbnRMaXN0LCBtb2RpZmllcnNGb3JFdmVudChldmVudCksIGdk
a19ldmVudF9nZXRfdGltZShldmVudCkpOworI2Vsc2UKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVu
dCgpOworI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXgg
MDg1ODE1Yy4uZmMzMDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50
RmFjdG9yeS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25SZXN1bHRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
dGtUb3VjaENvbnRleHRIZWxwZXIuaD4KIAogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZl
bnQ7CiAKQEAgLTM5LDYgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50
IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQpOwogICAgIHN0YXRpYyBX
ZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqKTsKICAgICBz
dGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2
ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJik7CisgICAgc3RhdGljIFdl
YlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdl
YkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKaW5kZXggZWVkNjQ5Yi4uNzM3MTc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzM0LDQgKzMzNCw1
NCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJl
Y3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UgogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3Qg
TmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAg
IGlmICh3YXNFdmVudEhhbmRsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEVtdWxhdGUg
cG9pbnRlciBldmVudHMgaWYgdW5oYW5kbGVkLgorICAgIGNvbnN0IEdka0V2ZW50KiB0b3VjaEV2
ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQoKTsKKworICAgIGlmICghdG91Y2hFdmVudC0+dG91Y2gu
ZW11bGF0aW5nX3BvaW50ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdPd25QdHI8R2RrRXZl
bnQ+IHBvaW50ZXJFdmVudDsKKworICAgIGlmICh0b3VjaEV2ZW50LT50eXBlID09IEdES19UT1VD
SF9VUERBVEUpIHsKKyAgICAgICAgcG9pbnRlckV2ZW50LnNldChnZGtfZXZlbnRfbmV3KEdES19N
T1RJT05fTk9USUZZKSk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnRpbWUgPSB0b3Vj
aEV2ZW50LT50b3VjaC50aW1lOworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi54ID0gdG91
Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueSA9IHRvdWNo
RXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnhfcm9vdCA9IHRv
dWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueV9y
b290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9yb290OworICAgICAgICBwb2ludGVyRXZlbnQtPm1v
dGlvbi5zdGF0ZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnN0YXRlIHwgR0RLX0JVVFRPTjFfTUFTSzsK
KyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICAg
ICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAgICAgICAgICAgcG9pbnRlckV2ZW50LnNldChnZGtf
ZXZlbnRfbmV3KEdES19CVVRUT05fUkVMRUFTRSkpOworICAgICAgICAgICAgcG9pbnRlckV2ZW50
LT5idXR0b24uc3RhdGUgPSB0b3VjaEV2ZW50LT50b3VjaC5zdGF0ZSB8IEdES19CVVRUT04xX01B
U0s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46Cisg
ICAgICAgICAgICBwb2ludGVyRXZlbnQuc2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9QUkVT
UykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHBvaW50ZXJFdmVudC0+
YnV0dG9uLmJ1dHRvbiA9IDE7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnRpbWUgPSB0
b3VjaEV2ZW50LT50b3VjaC50aW1lOworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54ID0g
dG91Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueSA9IHRv
dWNoRXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnhfcm9vdCA9
IHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24u
eV9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9yb290OworICAgIH0KKworICAgIGdka19ldmVu
dF9zZXRfZGV2aWNlKHBvaW50ZXJFdmVudC5nZXQoKSwgZ2RrX2V2ZW50X2dldF9kZXZpY2UodG91
Y2hFdmVudCkpOworICAgIGdka19ldmVudF9zZXRfc291cmNlX2RldmljZShwb2ludGVyRXZlbnQu
Z2V0KCksIGdka19ldmVudF9nZXRfc291cmNlX2RldmljZSh0b3VjaEV2ZW50KSk7CisgICAgcG9p
bnRlckV2ZW50LT5hbnkud2luZG93ID0gR0RLX1dJTkRPVyhnX29iamVjdF9yZWYodG91Y2hFdmVu
dC0+YW55LndpbmRvdykpOworICAgIHBvaW50ZXJFdmVudC0+YW55LnNlbmRfZXZlbnQgPSBUUlVF
OworCisgICAgZ3RrX3dpZGdldF9ldmVudChtX3ZpZXdXaWRnZXQsIHBvaW50ZXJFdmVudC5nZXQo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZTBjMThlNS4uMzZkYmNkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5oCkBAIC0xMjIsNiArMTIyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5F
eGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIE9WRVJSSURFOwogI2VuZGlmCiAKKyAgICB2
aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQm
LCBib29sIHdhc0V2ZW50SGFuZGxlZCkgT1ZFUlJJREU7CisKICAgICAvLyBNZW1iZXJzIG9mIFBh
Z2VDbGllbnRJbXBsIGNsYXNzCiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgRGVm
YXVsdFVuZG9Db250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggYzc4
YzRlNy4uNGE2MzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvR093blB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrQ2xpY2tDb3VudGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtEcmFnQW5kRHJvcEhlbHBlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtV
dGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMTEsNiArMTEyLDcgQEAgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIEdPd25QdHI8R2RrRXZlbnQ+IGNvbnRleHRN
ZW51RXZlbnQ7CiAgICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQ
cm94eTsKICAgICBXZWJWaWV3QmFzZUlucHV0TWV0aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVy
OworICAgIEd0a1RvdWNoQ29udGV4dEhlbHBlciB0b3VjaENvbnRleHQ7CiAKICAgICBHdGtXaW5k
b3cqIHRvcGxldmVsT25TY3JlZW5XaW5kb3c7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFJl
c2l6ZUdyaXBWaXNpYmlsaXR5SUQ7CkBAIC0yNzMsNyArMjc1LDggQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgICAgICB8IEdES19C
VVRUT05fTU9USU9OX01BU0sKICAgICAgICAgfCBHREtfQlVUVE9OMV9NT1RJT05fTUFTSwogICAg
ICAgICB8IEdES19CVVRUT04yX01PVElPTl9NQVNLCi0gICAgICAgIHwgR0RLX0JVVFRPTjNfTU9U
SU9OX01BU0s7CisgICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0sKKyAgICAgICAgfCBH
REtfVE9VQ0hfTUFTSzsKIAogICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdE
S19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsKIApAQCAtNzEzLDYgKzcxNiwxOSBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRXZlbnRNbwogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0V2ViVmlld0Jhc2VUb3VjaEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFRvdWNo
KiBldmVudCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2OworCisgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0
aW9uRGlhbG9nKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIHByaXYtPnRvdWNoQ29udGV4
dC5oYW5kbGVFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKTsKKyAgICBw
cml2LT5wYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudChyZWlu
dGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCBwcml2LT50b3VjaENvbnRleHQpKTsKKwor
ICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VR
dWVyeVRvb2x0aXAoR3RrV2lkZ2V0KiB3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LCBnYm9vbGVhbiBr
ZXlib2FyZE1vZGUsIEd0a1Rvb2x0aXAqIHRvb2x0aXApCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsKQEAg
LTg5Nyw2ICs5MTMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19p
bml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIHdpZGdldENsYXNz
LT5idXR0b25fcmVsZWFzZV9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUmVsZWFzZUV2
ZW50OwogICAgIHdpZGdldENsYXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVNj
cm9sbEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5X2V2ZW50ID0gd2Via2l0
V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudDsKKyAgICB3aWRnZXRDbGFzcy0+dG91Y2hfZXZl
bnQgPSB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnF1ZXJ5
X3Rvb2x0aXAgPSB3ZWJraXRXZWJWaWV3QmFzZVF1ZXJ5VG9vbHRpcDsKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogICAgIHdpZGdldENsYXNzLT5kcmFnX2VuZCA9IHdlYmtpdFdlYlZpZXdCYXNl
RHJhZ0VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJl
cy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCA2NDdj
Mjg0NC4uYjNkZWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZl
YXR1cmVzLm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNApA
QCAtMTc2LDcgKzE3Niw3IEBAICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVm
aW5lcy1maWxlcyAkQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBcCiAgICAgRU5BQkxFX1NB
VFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQz0xXAogICAgIEVOQUJMRV9URVhUX0FVVE9TSVpJTkc9
MCBcCiAgICAgRU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSPTAgXAotICAgIEVOQUJMRV9UT1VD
SF9FVkVOVFM9MCBcCisgICAgRU5BQkxFX1RPVUNIX0VWRU5UUz0xIFwKICAgICBFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HPTAgXAogICAgIEVOQUJMRV9VU0VSX1RJTUlORz0wIFwKICAgICBFTkFC
TEVfVklCUkFUSU9OPTAgXApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBjZTYwNDI0Li4wNGNhNjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMzksNyArMzksNyBAQCBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBRE9XX0RPTSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBUkVEX1dPUktFUlMgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU1BFTExDSEVDSyBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UIE9OKQotV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPRkYpCitXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU8gT04pCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjkyY2ViOC4uODU2ZTkx
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI3IEBACisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21l
Lm9yZz4KKworICAgICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2
ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNl
bmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6dXBkYXRlRXZlbnRDb29yZGluYXRlcyk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNyZWF0ZVRvdWNoRXZlbnQpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OnNlbmRVcGRhdGVkVG91Y2hFdmVudHMpOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hF
bmQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50UmFkaXVzKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6IEltcGxlbWVudCB0b3VjaCBldmVudCBwcm94
eWluZy4KKwogMjAxMy0xMi0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkIG15c2VsZiB0byBzb21lIG1vcmUgd2F0
Y2ggbGlzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4
IDVkM2EwNDguLjZhZjdiMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZl
bnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjZGVmaW5lIEV2ZW50U2VuZGVyUHJveHlfaAogCiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8Z2RrL2dkay5o
PgpAQCAtOTAsNiArOTIsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHNlbmRPclF1ZXVlRXZlbnQoR2RrRXZlbnQqKTsKICAgICBHZGtFdmVudCogY3JlYXRlTW91c2VC
dXR0b25FdmVudChHZGtFdmVudFR5cGUsIHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVy
cyk7CisgICAgR2RrRXZlbnQqIGNyZWF0ZVRvdWNoRXZlbnQoR2RrRXZlbnRUeXBlLCBpbnQgaWQp
OworICAgIHZvaWQgc2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOwogI2VsaWYgUExBVEZPUk0oRUZM
KQogICAgIHZvaWQgc2VuZE9yUXVldWVFdmVudChjb25zdCBXVFJFdmVudCYpOwogICAgIHZvaWQg
ZGlzcGF0Y2hFdmVudChjb25zdCBXVFJFdmVudCYpOwpAQCAtMTEwLDYgKzExNCw4IEBAIHByaXZh
dGU6CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgRGVxdWU8V1RSRXZlbnRRdWV1ZUl0ZW0+IG1f
ZXZlbnRRdWV1ZTsKICAgICB1bnNpZ25lZCBtX21vdXNlQnV0dG9uQ3VycmVudGx5RG93bjsKKyAg
ICBWZWN0b3I8R2RrRXZlbnQqPiBtX3RvdWNoRXZlbnRzOworICAgIEhhc2hNYXA8aW50LCBpbnQ+
IG1fdXBkYXRlZFRvdWNoRXZlbnRzOwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIERlcXVlPFdU
UkV2ZW50PiBtX2V2ZW50UXVldWU7CiAgICAgV0tFdmVudE1vdXNlQnV0dG9uIG1fbW91c2VCdXR0
b247CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclBy
b3h5R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlH
dGsuY3BwCmluZGV4IDM4MDQzOGMuLmE5NjNjMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXJQcm94eS5oIgogCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNp
bmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CkBA
IC00NDEsNCArNDQyLDExOCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGlu
dCBtaWxsaXNlY29uZHMpCiAgICAgbV90aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKIH0K
IAordm9pZCB1cGRhdGVFdmVudENvb3JkaW5hdGVzKEdka0V2ZW50KiB0b3VjaEV2ZW50LCBpbnQg
eCwgaW50IHkpCit7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueCA9IHg7CisgICAgdG91Y2hFdmVu
dC0+dG91Y2gueSA9IHk7CisKKyAgICBpbnQgeFJvb3QsIHlSb290OworICAgIGdka193aW5kb3df
Z2V0X3Jvb3RfY29vcmRzKHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdywgeCwgeSwgJnhSb290LCAm
eVJvb3QpOworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdCA9IHhSb290OworICAgIHRvdWNo
RXZlbnQtPnRvdWNoLnlfcm9vdCA9IHlSb290OworfQorCitHZGtFdmVudCogRXZlbnRTZW5kZXJQ
cm94eTo6Y3JlYXRlVG91Y2hFdmVudChHZGtFdmVudFR5cGUgZXZlbnRUeXBlLCBpbnQgaWQpCit7
CisgICAgR2RrRXZlbnQqIHRvdWNoRXZlbnQgPSBnZGtfZXZlbnRfbmV3KGV2ZW50VHlwZSk7CisK
KyAgICB0b3VjaEV2ZW50LT50b3VjaC5zZXF1ZW5jZSA9IChHZGtFdmVudFNlcXVlbmNlKikgR0lO
VF9UT19QT0lOVEVSKGlkKTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC53aW5kb3cgPSBndGtfd2lk
Z2V0X2dldF93aW5kb3coR1RLX1dJREdFVChtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygp
LT5wbGF0Zm9ybVZpZXcoKSkpOworICAgIGdfb2JqZWN0X3JlZih0b3VjaEV2ZW50LT50b3VjaC53
aW5kb3cpOworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHRvdWNoRXZlbnQsIGdka19kZXZpY2Vf
bWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2Vy
KGdka193aW5kb3dfZ2V0X2Rpc3BsYXkodG91Y2hFdmVudC0+YnV0dG9uLndpbmRvdykpKSk7Cisg
ICAgdG91Y2hFdmVudC0+dG91Y2gudGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisKKyAgICByZXR1
cm4gdG91Y2hFdmVudDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50
KGludCB4LCBpbnQgeSkKK3sKKyAgICBHZGtFdmVudCogZXZlbnQgPSBjcmVhdGVUb3VjaEV2ZW50
KChHZGtFdmVudFR5cGUpIEdES19UT1VDSF9CRUdJTiwgbV90b3VjaEV2ZW50cy5zaXplKCkpOwor
ICAgIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoZXZlbnQsIHgsIHkpOworICAgIG1fdG91Y2hFdmVu
dHMudW5jaGVja2VkQXBwZW5kKGV2ZW50KTsKKyAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5hZGQo
R1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1ZW5jZSksIDApOworfQorCit2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkp
Cit7CisgICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5kZXggPCBtX3RvdWNoRXZlbnRzLnNpemUo
KSk7CisKKyAgICBHZGtFdmVudCogZXZlbnQgPSBtX3RvdWNoRXZlbnRzW2luZGV4XTsKKyAgICBB
U1NFUlQoZXZlbnQpOworCisgICAgZXZlbnQtPnR5cGUgPSBHREtfVE9VQ0hfVVBEQVRFOworICAg
IHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoZXZlbnQsIHgsIHkpOworICAgIG1fdXBkYXRlZFRvdWNo
RXZlbnRzLmFkZChHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRvdWNoLnNlcXVlbmNlKSwgMCk7Cit9
CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpCit7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBpZCA6IG1fdXBkYXRlZFRvdWNoRXZlbnRzLmtleXMoKSkKKyAg
ICAgICAgc2VuZE9yUXVldWVFdmVudChnZGtfZXZlbnRfY29weShtX3RvdWNoRXZlbnRzW2lkXSkp
OworCisgICAgbV91cGRhdGVkVG91Y2hFdmVudHMuY2xlYXIoKTsKK30KKwordm9pZCBFdmVudFNl
bmRlclByb3h5Ojp0b3VjaFN0YXJ0KCkKK3sKKyAgICBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKK3sKKyAgICBzZW5kVXBk
YXRlZFRvdWNoRXZlbnRzKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQo
KQoreworICAgIHNlbmRVcGRhdGVkVG91Y2hFdmVudHMoKTsKK30KKwordm9pZCBFdmVudFNlbmRl
clByb3h5Ojp0b3VjaENhbmNlbCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpjbGVhclRvdWNoUG9pbnRzKCkKK3sKKyAgICBtX3RvdWNoRXZl
bnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9p
bnQoaW50IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgbV90b3Vj
aEV2ZW50cy5zaXplKCkpOworCisgICAgR2RrRXZlbnQqIGV2ZW50ID0gbV90b3VjaEV2ZW50c1tp
bmRleF07CisgICAgZXZlbnQtPnR5cGUgPSBHREtfVE9VQ0hfRU5EOworICAgIG1fdXBkYXRlZFRv
dWNoRXZlbnRzLmFkZChHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRvdWNoLnNlcXVlbmNlKSwgMCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2FuY2VsVG91Y2hQb2ludChpbnQgaW5kZXgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojpz
ZXRUb3VjaFBvaW50UmFkaXVzKGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZp
ZXIoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllciwgYm9vbCBlbmFibGUpCit7CisgICAgZ3VpbnQg
c3RhdGUgPSB3ZWJraXRNb2RpZmllcnNUb0dES01vZGlmaWVycyhtb2RpZmllcik7CisKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IG1fdG91Y2hFdmVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKG1fdG91Y2hFdmVudHNbaV0tPnR5cGUgPT0gR0RLX1RPVUNIX0VORCkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmIChlbmFibGUpCisgICAgICAgICAgICBtX3RvdWNoRXZl
bnRzW2ldLT50b3VjaC5zdGF0ZSB8PSBzdGF0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV90b3VjaEV2ZW50c1tpXS0+dG91Y2guc3RhdGUgJj0gfihzdGF0ZSk7CisKKyAgICAgICAgbV91
cGRhdGVkVG91Y2hFdmVudHMuYWRkKEdQT0lOVEVSX1RPX0lOVChtX3RvdWNoRXZlbnRzW2ldLT50
b3VjaC5zZXF1ZW5jZSksIDApOworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219971</attachid>
            <date>2013-12-24 08:59:49 -0800</date>
            <delta_ts>2013-12-24 09:02:31 -0800</delta_ts>
            <desc>minor update, fix touch event leak in EventSenderProxyGtk</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>38511</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NmE3NDk4Li4xMDFhZjAz
NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVh
dHVyZXMubTQ6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IHNldCBF
TkFCTEVfVE9VQ0hfRVZFTlRTIHRvIDEgaWYgYnVpbGRpbmcgd2l0aCBHVEsrLgorCiAyMDEzLTEy
LTE4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtH
VEtdW0NNYWtlXSBtYWtlIGxpYmphdmFzY3JpcHRjb3JlZ3RrIGEgcHVibGljIHNoYXJlZCBsaWJy
YXJ5IGFnYWluCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODY1MTE5Ny4uMmM4ZjFiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczog
Y2hlY2sgdGVzdHMgaW4gZmFzdC9ldmVudHMvdG91Y2gKKwogMjAxMy0xMi0wOSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IEltYWdlQnVm
ZmVyIHRvIHJlLXVzZSBJT1N1cmZhY2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGMxMjRiNzIuLjU4NmE4MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzIsNyArMTcyLDcgQEAgd2Via2l0Lm9yZy9iLzYx
MTQwIGZhc3Qvbm90aWZpY2F0aW9ucyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzYxMTQwIGh0dHAv
dGVzdHMvbm90aWZpY2F0aW9ucyBbIFNraXAgXQogCiAjIFRoZXNlIHRlc3RzIHJlcXVpcmUgdG91
Y2ggc3VwcG9ydC4KLXdlYmtpdC5vcmcvYi85ODkzMSBmYXN0L2V2ZW50cy90b3VjaCBbIFNraXAg
XQorZmFzdC9ldmVudHMvdG91Y2gKIAogIyBTdG9yYWdlVHJhY2tlciBpcyBub3QgZW5hYmxlZC4K
IHdlYmtpdC5vcmcvYi85ODkzMyBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3Jh
Z2V0cmFja2VyIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNiNTJjYi4uNDE4MGQzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJs
b3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQg
Y29kZSB0byBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0cyBpbiBmYXN0L2V2ZW50cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsr
IG5vdyB0aGF0IHRvdWNoCisgICAgICAgIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVz
IGFsbCBleHBlY3RlZCBiaXRzIGFyZSB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3Vj
aENvbnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9p
bnRzLCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0
ZWQgY29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBu
b3cgdGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDEzLTEyLTIxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0g
UmVzb3VyY2VIYW5kbGVTb3VwIHNob3VsZCB1c2UgYXN5bmMgY2xpZW50IGNhbGxiYWNrcyB3aGVu
IGNsaWVudCB1c2VzIGFzeW5jIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggMzYwMzNkYi4uMWFkY2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zMDE3LDggKzMwMTcsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5v
ZGVUcmF2ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmggXAorCVNv
dXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9y
bVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5j
cHAgXApAQCAtNjI0OCw2ICs2MjUxLDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5n
LmMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhYzVhOTk2Li5jNGYyYjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgxLDYgKzE4MSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3Bw
CiAgICAgcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtD
bGlja0NvdW50ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3BwCiAgICAgcGxhdGZv
cm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtQbHVn
aW5XaWRnZXQuY3BwCkBAIC0xOTUsNiArMTk2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRm
b3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmNw
cAogICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVRvdWNoRXZlbnRH
dGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAg
ICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAogICAgIHBsYXRmb3JtL2d0
ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKQEAgLTUxNCw2ICs1MTYsNyBAQCBpZiAoRU5BQkxFX1dF
QktJVDIpCiAgICAgICAgIGRvbS9SYW5nZS5pZGwKICAgICAgICAgZG9tL1NoYWRvd1Jvb3QuaWRs
CiAgICAgICAgIGRvbS9UZXh0LmlkbAorICAgICAgICBkb20vVG91Y2guaWRsCiAgICAgICAgIGRv
bS9UcmVlV2Fsa2VyLmlkbAogICAgICAgICBkb20vVUlFdmVudC5pZGwKICAgICAgICAgZG9tL1dl
YktpdE5hbWVkRmxvdy5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dO
VW1ha2VmaWxlLmFtCmluZGV4IDY4NjRlMTAuLmRmNDJjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpAQCAtMjYyLDYgKzI2Miw4IEBAIHdl
YmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01TdHlsZVNoZWV0UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NVGV4dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UZXh0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91
Y2guY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2hQcml2YXRl
LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmgg
XAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmVlV2Fsa2VyLmNwcCBcCkBA
IC0zMjMsNiArMzI1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVJhbmdlLmggXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01Ub3VjaC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
VHJlZVdhbGtlci5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVUlFdmVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQmxvYi5oIFwKQEAgLTQz
Miw2ICs0MzUsNyBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
d2Via2l0ZG9tZGVmaW5lcy5oCiAKKwogaWYgRU5BQkxFX1ZJREVPCiB3ZWJraXRndGtfZ2RvbV9i
dWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlv
VHJhY2suaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L3dl
YmtpdGRvbS5zeW1ib2xzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRk
b20uc3ltYm9scwppbmRleCBiMTJmZjU3Li43NGRkMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMKQEAgLTE2NDgsNiArMTY0OCwx
OCBAQCBnbG9uZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YV94KFdlYktp
dERPTVdoZWVsRXZlbnQqKQogZ2xvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2hlZWxf
ZGVsdGFfeShXZWJLaXRET01XaGVlbEV2ZW50KikKIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZl
bnRfZ2V0X3doZWVsX2RlbHRhKFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2Jvb2xlYW4gd2Via2l0
X2RvbV93aGVlbF9ldmVudF9nZXRfd2Via2l0X2RpcmVjdGlvbl9pbnZlcnRlZF9mcm9tX2Rldmlj
ZShXZWJLaXRET01XaGVlbEV2ZW50KikKK1dlYktpdERPTUV2ZW50VGFyZ2V0KiB3ZWJraXRfZG9t
X3RvdWNoX2dldF90YXJnZXQoV2ViS2l0RE9NVG91Y2gqKQorZ2Zsb2F0IHdlYmtpdF9kb21fdG91
Y2hfZ2V0X3dlYmtpdF9mb3JjZShXZWJLaXRET01Ub3VjaCopCitnZmxvYXQgd2Via2l0X2RvbV90
b3VjaF9nZXRfd2Via2l0X3JvdGF0aW9uX2FuZ2xlKFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdl
YmtpdF9kb21fdG91Y2hfZ2V0X2NsaWVudF94KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtp
dF9kb21fdG91Y2hfZ2V0X2NsaWVudF95KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9k
b21fdG91Y2hfZ2V0X3BhZ2VfeChXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3Rv
dWNoX2dldF9wYWdlX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9n
ZXRfc2NyZWVuX3goV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRf
c2NyZWVuX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Vi
a2l0X3JhZGl1c194KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0
X3dlYmtpdF9yYWRpdXNfeShXZWJLaXRET01Ub3VjaCopCitndWxvbmcgd2Via2l0X2RvbV90b3Vj
aF9nZXRfaWRlbnRpZmllcihXZWJLaXRET01Ub3VjaCopCiBnY2hhciogd2Via2l0X2RvbV9hdWRp
b190cmFja19nZXRfaWQoV2ViS2l0RE9NQXVkaW9UcmFjayopCiBnY2hhciogd2Via2l0X2RvbV9h
dWRpb190cmFja19nZXRfa2luZChXZWJLaXRET01BdWRpb1RyYWNrKikKIGdjaGFyKiB3ZWJraXRf
ZG9tX2F1ZGlvX3RyYWNrX2dldF9sYWJlbChXZWJLaXRET01BdWRpb1RyYWNrKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NhNjM2NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIu
Y3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdh
cm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkd0a1RvdWNoQ29udGV4dEhlbHBlci5oIgorCisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0d0a1RvdWNoQ29udGV4dEhlbHBlcjo6fkd0
a1RvdWNoQ29udGV4dEhlbHBlcigpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBzdG9yZWRFdmVu
dCA6IG1fdG91Y2hFdmVudHMudmFsdWVzKCkpCisgICAgICAgIGdka19ldmVudF9mcmVlKHN0b3Jl
ZEV2ZW50KTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisKK2Jvb2wgR3RrVG91Y2hD
b250ZXh0SGVscGVyOjpoYW5kbGVFdmVudChHZGtFdmVudCogdG91Y2hFdmVudCkKK3sKKyNpZm5k
ZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICB1aW50MzJfdCBzZXF1ZW5jZSA9IEdQT0lOVEVSX1RP
X1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZSh0b3VjaEV2ZW50KSk7CisKKyAgICBz
d2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAg
ICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAgIG1fdG91Y2hFdmVudHMuc2V0KHNlcXVl
bmNlLCBnZGtfZXZlbnRfY29weSh0b3VjaEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgZ2RrX2V2ZW50X2ZyZWUobV90b3VjaEV2ZW50cy50
YWtlKHNlcXVlbmNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKKworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIwMGQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9z
Z0Bnbm9tZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gK
KyNkZWZpbmUgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisKK3R5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3R5cGVkZWYgVG91Y2hFdmVudHNNYXAgSGFzaE1hcDx1aW50MzJfdCwgR2RrRXZl
bnQqPjsKKworY2xhc3MgR3RrVG91Y2hDb250ZXh0SGVscGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHdGtUb3VjaENvbnRleHRIZWxwZXIpOworcHVibGljOgorICAgIH5HdGtUb3VjaENv
bnRleHRIZWxwZXIoKTsKKworICAgIGJvb2wgaGFuZGxlRXZlbnQoR2RrRXZlbnQqKTsKKyAgICBj
b25zdCBUb3VjaEV2ZW50c01hcCYgdG91Y2hFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX3RvdWNo
RXZlbnRzOyB9OworCitwcml2YXRlOgorICAgIFRvdWNoRXZlbnRzTWFwIG1fdG91Y2hFdmVudHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IDU5ZTJkZjkuLmQxMTBhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMy0xMi0yMyAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAg
ICAgW0dUS10gQWxsb3cgYnVpbGRpbmcgd2l0aCB0b3VjaCBldmVudHMgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFdmVuIHRob3VnaCBXZWJL
aXQxIEdUSyBjb2RlIGRvZXNuJ3QgaW1wbGVtZW50IHRvdWNoIGV2ZW50cywKKyAgICAgICAgRml4
IGJ1aWxkIGlmIEVOQUJMRV9UT1VDSF9FVkVOVFMgaXMgcHJlc2VudCBmb3IgV0syLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6bmVlZFRvdWNoRXZlbnRzKTogQWRkIGVtcHR5IHN0dWIKKwogMjAxMy0x
Mi0yMCAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFRoZSBmdWxsc2NyZWVuIEFQSSBzaG91bGQgYmUgZW5hYmxlZCBieSBkZWZh
dWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5oCmluZGV4IDUxZDQzYWEuLmJkYzg5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xNDMsNiArMTQzLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbnVtV2hl
ZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgeyB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJh
bWUqLCBHcmFwaGljc0xheWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzMwYjA0ZC4uMWNlNzk0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxj
YXJsb3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgc3VwcG9ydCB0b3Vj
aCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW4gR1RLKyA+PSAzLjQuMCwgR2RrRXZlbnRUb3VjaCBpcyBhdmFpbGFibGUgdG8gaW5mb3JtIGFi
b3V0IG11bHRpdG91Y2ggZXZlbnRzLiBVc2UgdGhlc2UgdG8gaW1wbGVtZW50CisgICAgICAgIHRv
dWNoIGV2ZW50cyBvbiB0aGlzIHBsYXRmb3JtLiBJZiBhIHRvdWNoIGlzIGxlZnQgdW5oYW5kbGVk
IGFuZCBpcyB0aGUgInBvaW50ZXIgZW11bGF0aW5nIiBvbmUsIG1vdXNlCisgICAgICAgIGV2ZW50
cyB3aWxsIGJlIGdlbmVyYXRlZCBhcyBhIGZhbGxiYWNrLgorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFy
ZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC9OYXRp
dmVXZWJUb3VjaEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6
Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6dG91
Y2hDb250ZXh0KTogQWRkIEdUSysgaW1wbGVtZW50YXRpb24gb2YgTmF0aXZlV2ViVG91Y2hFdmVu
dAorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6dG91Y2hQaGFzZUZyb21FdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQpOiBBZGQgbWV0aG9kcyB0byBnZW5lcmF0ZSBOYXRp
dmVXZWJUb3VjaEV2ZW50cyBvdXQKKyAgICAgICAgb2YgR2RrRXZlbnRUb3VjaCBldmVudHMsIGEg
R3RrVG91Y2hDb250ZXh0SGVscGVyIG9iamVjdCBpcyB1c2VkIHRvIGhvbGQgaW5mb3JtYXRpb24g
YWJvdXQgYWxsIGN1cnJlbnQKKyAgICAgICAgdG91Y2hlcywgaW4gb3JkZXIgdG8gYnVpbGQgaW5m
b3JtYXRpb24gYWJvdXQgYWxsIGluZGl2aWR1YWwgdG91Y2hwb2ludHMuCisgICAgICAgICogU2hh
cmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aFRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgcG9pbnRlciBlbXVsYXRpb24gaWYgdGhlIHBvaW50
ZXIgZW11bGF0aW5nCisgICAgICAgIHRvdWNoIHdhcyB1bmhhbmRsZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVJl
YWxpemUpOiBMaXN0ZW4gZm9yIHRvdWNoIGV2ZW50cworICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VUb3VjaEV2ZW50KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQp
OiBBZGQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0b3VjaF9ldmVudHMoKSBoYW5kbGVyLgorCiAy
MDEzLTEyLTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBUZXN0IC93ZWJraXQyL1dlYktpdFdlYlJlc291cmNlL21pbWUtdHlwZSBm
YWlscyB3aGVuIHJ1biBhZnRlciAvd2Via2l0Mi9XZWJLaXRXZWJWaWV3L3Jlc291cmNlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggN2VjZjA3NS4uMDYzNzAwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00OTMsNiArNDkzLDcgQEAgd2Via2l0Ml9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGU3YTlhOTQuLjlkYzNlZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC00Niw2ICs0Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAgICBT
aGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRp
dmVXZWJXaGVlbEV2ZW50R3RrLmNwcAorICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVu
dEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAKICAgICBTaGFyZWQvZ3Rr
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5jcHAKQEAgLTU0MSwxMiArNTQyLDE0IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1Mp
CiAgICAgICAgIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKICAgICAgICAgU2hhcmVkL1dl
Yk1vdXNlRXZlbnQuY3BwCiAgICAgICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAorICAgICAg
ICBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKIAogICAgICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVh
YmxlQml0bWFwQ2Fpcm8uY3BwCiAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICAg
ICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQv
Z3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRp
dmVXZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oCmluZGV4IDBkNGIyY2YuLjk1Mjk0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYlRvdWNoRXZlbnQuaApAQCAtMzEsOSArMzEsMTEgQEAKICNpZiBQTEFURk9STShJ
T1MpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogT0JKQ19DTEFTUyBVSVdlYlRvdWNoRXZl
bnRzR2VzdHVyZVJlY29nbml6ZXI7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQotCi0jaWYgUExB
VEZPUk0oRUZMKQorI2VsaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgordHlwZWRlZiB1bmlv
biBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiRXdr
VG91Y2hFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDYsOCArNDgsMTIgQEAgcHVibGljOgogI2lmIFBMQVRG
T1JNKElPUykKICAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KFVJV2ViVG91Y2hFdmVu
dHNHZXN0dXJlUmVjb2duaXplciAqKTsKICAgICBjb25zdCBVSVdlYlRvdWNoRXZlbnRzR2VzdHVy
ZVJlY29nbml6ZXIqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5n
ZXQoKTsgfQotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExBVEZPUk0oR1RLKQor
ICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYpOworICAg
IE5hdGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQqLCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRI
ZWxwZXImKTsKKyAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVy
biBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6R3RrVG91Y2hDb250
ZXh0SGVscGVyJiB0b3VjaENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoQ29udGV4dDsg
fQorI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrVG91Y2hF
dmVudCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwogICAgIGNvbnN0IEV3a1Rv
dWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQo
KTsgfQogI2VuZGlmCkBAIC01NSw4ICs2MSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25p
emVyPiBtX25hdGl2ZUV2ZW50OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExB
VEZPUk0oR1RLKQorICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CisgICAgY29u
c3QgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVyJiBtX3RvdWNoQ29udGV4dDsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKICAgICBSZWZQdHI8RXdrVG91Y2hFdmVudD4gbV9uYXRpdmVFdmVudDsK
ICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZl
V2ViVG91Y2hFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdl
YlRvdWNoRXZlbnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIy
Y2Q0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2
ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKKwor
I2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgPGdkay9nZGsuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZl
bnQoR2RrRXZlbnQqIGV2ZW50LCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImIGNvbnRl
eHQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hF
dmVudChldmVudCwgY29udGV4dCkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5
KGV2ZW50KSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGNvbnRleHQpCit7Cit9CisKK05hdGl2ZVdl
YlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVu
dCYgZXZlbnQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
VG91Y2hFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCBldmVudC50b3VjaENvbnRleHQoKSkpCisg
ICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpKQor
ICAgICwgbV90b3VjaENvbnRleHQoZXZlbnQudG91Y2hDb250ZXh0KCkpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZh
Y3RvcnkuY3BwCmluZGV4IGNiODhhODIuLjMxY2I4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVk
ZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yMDMsNCArMjA0
LDc1IEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2Fy
ZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKIH0KIAorI2lmbmRlZiBHVEtfQVBJX1ZFUlNJ
T05fMgorc3RhdGljIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHRvdWNo
UGhhc2VGcm9tRXZlbnRzKGNvbnN0IEdka0V2ZW50KiBjdXJyZW50LCBjb25zdCBHZGtFdmVudCog
ZXZlbnQpCit7CisgICAgaWYgKGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2UoY3VycmVudCkg
IT0gZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkpCisgICAgICAgIHJldHVybiBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKworICAgIHN3aXRjaCAoY3Vy
cmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToKKyAgICAgICAgcmV0dXJu
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAgICBjYXNlIEdES19UT1VDSF9C
RUdJTjoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2Vk
OworICAgIGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCBhcHBlbmRUb3VjaEV2ZW50KFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+JiB0b3Vj
aFBvaW50TGlzdCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkKK3sKKyAgICB1aW50MzJfdCBpZGVudGlmaWVyID0gR1BP
SU5URVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKGV2ZW50KSk7CisKKyAg
ICBnZG91YmxlIHgsIHk7CisgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7
CisKKyAgICBnZG91YmxlIHhSb290LCB5Um9vdDsKKyAgICBnZGtfZXZlbnRfZ2V0X3Jvb3RfY29v
cmRzKGV2ZW50LCAmeFJvb3QsICZ5Um9vdCk7CisKKyAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQg
dG91Y2hQb2ludChpZGVudGlmaWVyLCBzdGF0ZSwgSW50UG9pbnQoeFJvb3QsIHlSb290KSwgSW50
UG9pbnQoeCwgeSkpOworICAgIHRvdWNoUG9pbnRMaXN0LnVuY2hlY2tlZEFwcGVuZCh0b3VjaFBv
aW50KTsKK30KKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCitXZWJUb3VjaEV2ZW50IFdl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQs
IGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KQorewor
I2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBzdGF0
aWNfY2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisgICAgVG91Y2hFdmVudHNNYXAgdG91Y2hFdmVu
dHMgPSB0b3VjaENvbnRleHQudG91Y2hFdmVudHMoKTsKKyAgICBpbnQgbnVtRXZlbnRzID0gdG91
Y2hFdmVudHMuc2l6ZSgpOworCisgICAgc3dpdGNoIChldmVudC0+dHlwZSkgeworICAgIGNhc2Ug
R0RLX1RPVUNIX0JFR0lOOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToKKyAgICAgICAgdHlwZSA9
IFdlYkV2ZW50OjpUb3VjaE1vdmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNI
X0VORDoKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaEVuZDsKKyAgICAgICAgKytudW1F
dmVudHM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IHRv
dWNoUG9pbnRMaXN0OworICAgIHRvdWNoUG9pbnRMaXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bnVtRXZlbnRzKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgc3RvcmVkRXZlbnQgOiB0b3VjaEV2
ZW50cy52YWx1ZXMoKSkKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVudCh0b3VjaFBvaW50TGlzdCwg
c3RvcmVkRXZlbnQsIHRvdWNoUGhhc2VGcm9tRXZlbnRzKHN0b3JlZEV2ZW50LCBldmVudCkpOwor
CisgICAgLy8gVG91Y2ggd2FzIGFscmVhZHkgcmVtb3ZlZCBmcm9tIHRoZSBHdGtUb3VjaENvbnRl
eHRIZWxwZXIsIGFkZCBpdCBoZXJlLgorICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hf
RU5EKQorICAgICAgICBhcHBlbmRUb3VjaEV2ZW50KHRvdWNoUG9pbnRMaXN0LCBldmVudCwgV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKKworICAgIHJldHVybiBXZWJUb3Vj
aEV2ZW50KHR5cGUsIHRvdWNoUG9pbnRMaXN0LCBtb2RpZmllcnNGb3JFdmVudChldmVudCksIGdk
a19ldmVudF9nZXRfdGltZShldmVudCkpOworI2Vsc2UKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVu
dCgpOworI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXgg
MDg1ODE1Yy4uZmMzMDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50
RmFjdG9yeS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25SZXN1bHRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
dGtUb3VjaENvbnRleHRIZWxwZXIuaD4KIAogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZl
bnQ7CiAKQEAgLTM5LDYgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50
IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQpOwogICAgIHN0YXRpYyBX
ZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqKTsKICAgICBz
dGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2
ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJik7CisgICAgc3RhdGljIFdl
YlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdl
YkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKaW5kZXggZWVkNjQ5Yi4uNzM3MTc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzM0LDQgKzMzNCw1
NCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJl
Y3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UgogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3Qg
TmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAg
IGlmICh3YXNFdmVudEhhbmRsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEVtdWxhdGUg
cG9pbnRlciBldmVudHMgaWYgdW5oYW5kbGVkLgorICAgIGNvbnN0IEdka0V2ZW50KiB0b3VjaEV2
ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQoKTsKKworICAgIGlmICghdG91Y2hFdmVudC0+dG91Y2gu
ZW11bGF0aW5nX3BvaW50ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdPd25QdHI8R2RrRXZl
bnQ+IHBvaW50ZXJFdmVudDsKKworICAgIGlmICh0b3VjaEV2ZW50LT50eXBlID09IEdES19UT1VD
SF9VUERBVEUpIHsKKyAgICAgICAgcG9pbnRlckV2ZW50LnNldChnZGtfZXZlbnRfbmV3KEdES19N
T1RJT05fTk9USUZZKSk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnRpbWUgPSB0b3Vj
aEV2ZW50LT50b3VjaC50aW1lOworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi54ID0gdG91
Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueSA9IHRvdWNo
RXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnhfcm9vdCA9IHRv
dWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueV9y
b290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9yb290OworICAgICAgICBwb2ludGVyRXZlbnQtPm1v
dGlvbi5zdGF0ZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnN0YXRlIHwgR0RLX0JVVFRPTjFfTUFTSzsK
KyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICAg
ICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAgICAgICAgICAgcG9pbnRlckV2ZW50LnNldChnZGtf
ZXZlbnRfbmV3KEdES19CVVRUT05fUkVMRUFTRSkpOworICAgICAgICAgICAgcG9pbnRlckV2ZW50
LT5idXR0b24uc3RhdGUgPSB0b3VjaEV2ZW50LT50b3VjaC5zdGF0ZSB8IEdES19CVVRUT04xX01B
U0s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46Cisg
ICAgICAgICAgICBwb2ludGVyRXZlbnQuc2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9QUkVT
UykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHBvaW50ZXJFdmVudC0+
YnV0dG9uLmJ1dHRvbiA9IDE7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnRpbWUgPSB0
b3VjaEV2ZW50LT50b3VjaC50aW1lOworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54ID0g
dG91Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueSA9IHRv
dWNoRXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnhfcm9vdCA9
IHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24u
eV9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9yb290OworICAgIH0KKworICAgIGdka19ldmVu
dF9zZXRfZGV2aWNlKHBvaW50ZXJFdmVudC5nZXQoKSwgZ2RrX2V2ZW50X2dldF9kZXZpY2UodG91
Y2hFdmVudCkpOworICAgIGdka19ldmVudF9zZXRfc291cmNlX2RldmljZShwb2ludGVyRXZlbnQu
Z2V0KCksIGdka19ldmVudF9nZXRfc291cmNlX2RldmljZSh0b3VjaEV2ZW50KSk7CisgICAgcG9p
bnRlckV2ZW50LT5hbnkud2luZG93ID0gR0RLX1dJTkRPVyhnX29iamVjdF9yZWYodG91Y2hFdmVu
dC0+YW55LndpbmRvdykpOworICAgIHBvaW50ZXJFdmVudC0+YW55LnNlbmRfZXZlbnQgPSBUUlVF
OworCisgICAgZ3RrX3dpZGdldF9ldmVudChtX3ZpZXdXaWRnZXQsIHBvaW50ZXJFdmVudC5nZXQo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZTBjMThlNS4uMzZkYmNkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5oCkBAIC0xMjIsNiArMTIyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5F
eGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIE9WRVJSSURFOwogI2VuZGlmCiAKKyAgICB2
aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQm
LCBib29sIHdhc0V2ZW50SGFuZGxlZCkgT1ZFUlJJREU7CisKICAgICAvLyBNZW1iZXJzIG9mIFBh
Z2VDbGllbnRJbXBsIGNsYXNzCiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgRGVm
YXVsdFVuZG9Db250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggYzc4
YzRlNy4uNGE2MzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvR093blB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrQ2xpY2tDb3VudGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtEcmFnQW5kRHJvcEhlbHBlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtV
dGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMTEsNiArMTEyLDcgQEAgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIEdPd25QdHI8R2RrRXZlbnQ+IGNvbnRleHRN
ZW51RXZlbnQ7CiAgICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQ
cm94eTsKICAgICBXZWJWaWV3QmFzZUlucHV0TWV0aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVy
OworICAgIEd0a1RvdWNoQ29udGV4dEhlbHBlciB0b3VjaENvbnRleHQ7CiAKICAgICBHdGtXaW5k
b3cqIHRvcGxldmVsT25TY3JlZW5XaW5kb3c7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFJl
c2l6ZUdyaXBWaXNpYmlsaXR5SUQ7CkBAIC0yNzMsNyArMjc1LDggQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgICAgICB8IEdES19C
VVRUT05fTU9USU9OX01BU0sKICAgICAgICAgfCBHREtfQlVUVE9OMV9NT1RJT05fTUFTSwogICAg
ICAgICB8IEdES19CVVRUT04yX01PVElPTl9NQVNLCi0gICAgICAgIHwgR0RLX0JVVFRPTjNfTU9U
SU9OX01BU0s7CisgICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0sKKyAgICAgICAgfCBH
REtfVE9VQ0hfTUFTSzsKIAogICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdE
S19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsKIApAQCAtNzEzLDYgKzcxNiwxOSBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRXZlbnRNbwogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0V2ViVmlld0Jhc2VUb3VjaEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFRvdWNo
KiBldmVudCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2OworCisgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0
aW9uRGlhbG9nKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIHByaXYtPnRvdWNoQ29udGV4
dC5oYW5kbGVFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKTsKKyAgICBw
cml2LT5wYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudChyZWlu
dGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCBwcml2LT50b3VjaENvbnRleHQpKTsKKwor
ICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VR
dWVyeVRvb2x0aXAoR3RrV2lkZ2V0KiB3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LCBnYm9vbGVhbiBr
ZXlib2FyZE1vZGUsIEd0a1Rvb2x0aXAqIHRvb2x0aXApCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsKQEAg
LTg5Nyw2ICs5MTMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19p
bml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIHdpZGdldENsYXNz
LT5idXR0b25fcmVsZWFzZV9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUmVsZWFzZUV2
ZW50OwogICAgIHdpZGdldENsYXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVNj
cm9sbEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5X2V2ZW50ID0gd2Via2l0
V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudDsKKyAgICB3aWRnZXRDbGFzcy0+dG91Y2hfZXZl
bnQgPSB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnF1ZXJ5
X3Rvb2x0aXAgPSB3ZWJraXRXZWJWaWV3QmFzZVF1ZXJ5VG9vbHRpcDsKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogICAgIHdpZGdldENsYXNzLT5kcmFnX2VuZCA9IHdlYmtpdFdlYlZpZXdCYXNl
RHJhZ0VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJl
cy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCA2NDdj
Mjg0NC4uYjNkZWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZl
YXR1cmVzLm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNApA
QCAtMTc2LDcgKzE3Niw3IEBAICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVm
aW5lcy1maWxlcyAkQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBcCiAgICAgRU5BQkxFX1NB
VFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQz0xXAogICAgIEVOQUJMRV9URVhUX0FVVE9TSVpJTkc9
MCBcCiAgICAgRU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSPTAgXAotICAgIEVOQUJMRV9UT1VD
SF9FVkVOVFM9MCBcCisgICAgRU5BQkxFX1RPVUNIX0VWRU5UUz0xIFwKICAgICBFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HPTAgXAogICAgIEVOQUJMRV9VU0VSX1RJTUlORz0wIFwKICAgICBFTkFC
TEVfVklCUkFUSU9OPTAgXApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBjZTYwNDI0Li4wNGNhNjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMzksNyArMzksNyBAQCBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBRE9XX0RPTSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBUkVEX1dPUktFUlMgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU1BFTExDSEVDSyBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UIE9OKQotV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPRkYpCitXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU8gT04pCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjkyY2ViOC4uODU2ZTkx
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI3IEBACisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21l
Lm9yZz4KKworICAgICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2
ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNl
bmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6dXBkYXRlRXZlbnRDb29yZGluYXRlcyk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNyZWF0ZVRvdWNoRXZlbnQpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OnNlbmRVcGRhdGVkVG91Y2hFdmVudHMpOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hF
bmQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50UmFkaXVzKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6IEltcGxlbWVudCB0b3VjaCBldmVudCBwcm94
eWluZy4KKwogMjAxMy0xMi0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkIG15c2VsZiB0byBzb21lIG1vcmUgd2F0
Y2ggbGlzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4
IDVkM2EwNDguLjZhZjdiMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZl
bnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjZGVmaW5lIEV2ZW50U2VuZGVyUHJveHlfaAogCiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8Z2RrL2dkay5o
PgpAQCAtOTAsNiArOTIsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHNlbmRPclF1ZXVlRXZlbnQoR2RrRXZlbnQqKTsKICAgICBHZGtFdmVudCogY3JlYXRlTW91c2VC
dXR0b25FdmVudChHZGtFdmVudFR5cGUsIHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVy
cyk7CisgICAgR2RrRXZlbnQqIGNyZWF0ZVRvdWNoRXZlbnQoR2RrRXZlbnRUeXBlLCBpbnQgaWQp
OworICAgIHZvaWQgc2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOwogI2VsaWYgUExBVEZPUk0oRUZM
KQogICAgIHZvaWQgc2VuZE9yUXVldWVFdmVudChjb25zdCBXVFJFdmVudCYpOwogICAgIHZvaWQg
ZGlzcGF0Y2hFdmVudChjb25zdCBXVFJFdmVudCYpOwpAQCAtMTEwLDYgKzExNCw4IEBAIHByaXZh
dGU6CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgRGVxdWU8V1RSRXZlbnRRdWV1ZUl0ZW0+IG1f
ZXZlbnRRdWV1ZTsKICAgICB1bnNpZ25lZCBtX21vdXNlQnV0dG9uQ3VycmVudGx5RG93bjsKKyAg
ICBWZWN0b3I8R2RrRXZlbnQqPiBtX3RvdWNoRXZlbnRzOworICAgIEhhc2hNYXA8aW50LCBpbnQ+
IG1fdXBkYXRlZFRvdWNoRXZlbnRzOwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIERlcXVlPFdU
UkV2ZW50PiBtX2V2ZW50UXVldWU7CiAgICAgV0tFdmVudE1vdXNlQnV0dG9uIG1fbW91c2VCdXR0
b247CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclBy
b3h5R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlH
dGsuY3BwCmluZGV4IDM4MDQzOGMuLmQzMTYzYjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXJQcm94eS5oIgogCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNp
bmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CkBA
IC00NDEsNCArNDQyLDEyMCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGlu
dCBtaWxsaXNlY29uZHMpCiAgICAgbV90aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKIH0K
IAordm9pZCB1cGRhdGVFdmVudENvb3JkaW5hdGVzKEdka0V2ZW50KiB0b3VjaEV2ZW50LCBpbnQg
eCwgaW50IHkpCit7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueCA9IHg7CisgICAgdG91Y2hFdmVu
dC0+dG91Y2gueSA9IHk7CisKKyAgICBpbnQgeFJvb3QsIHlSb290OworICAgIGdka193aW5kb3df
Z2V0X3Jvb3RfY29vcmRzKHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdywgeCwgeSwgJnhSb290LCAm
eVJvb3QpOworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdCA9IHhSb290OworICAgIHRvdWNo
RXZlbnQtPnRvdWNoLnlfcm9vdCA9IHlSb290OworfQorCitHZGtFdmVudCogRXZlbnRTZW5kZXJQ
cm94eTo6Y3JlYXRlVG91Y2hFdmVudChHZGtFdmVudFR5cGUgZXZlbnRUeXBlLCBpbnQgaWQpCit7
CisgICAgR2RrRXZlbnQqIHRvdWNoRXZlbnQgPSBnZGtfZXZlbnRfbmV3KGV2ZW50VHlwZSk7CisK
KyAgICB0b3VjaEV2ZW50LT50b3VjaC5zZXF1ZW5jZSA9IChHZGtFdmVudFNlcXVlbmNlKikgR0lO
VF9UT19QT0lOVEVSKGlkKTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC53aW5kb3cgPSBndGtfd2lk
Z2V0X2dldF93aW5kb3coR1RLX1dJREdFVChtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygp
LT5wbGF0Zm9ybVZpZXcoKSkpOworICAgIGdfb2JqZWN0X3JlZih0b3VjaEV2ZW50LT50b3VjaC53
aW5kb3cpOworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHRvdWNoRXZlbnQsIGdka19kZXZpY2Vf
bWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2Vy
KGdka193aW5kb3dfZ2V0X2Rpc3BsYXkodG91Y2hFdmVudC0+YnV0dG9uLndpbmRvdykpKSk7Cisg
ICAgdG91Y2hFdmVudC0+dG91Y2gudGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisKKyAgICByZXR1
cm4gdG91Y2hFdmVudDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50
KGludCB4LCBpbnQgeSkKK3sKKyAgICBHZGtFdmVudCogZXZlbnQgPSBjcmVhdGVUb3VjaEV2ZW50
KChHZGtFdmVudFR5cGUpIEdES19UT1VDSF9CRUdJTiwgbV90b3VjaEV2ZW50cy5zaXplKCkpOwor
ICAgIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoZXZlbnQsIHgsIHkpOworICAgIG1fdG91Y2hFdmVu
dHMudW5jaGVja2VkQXBwZW5kKGV2ZW50KTsKKyAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5hZGQo
R1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1ZW5jZSksIDApOworfQorCit2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkp
Cit7CisgICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5kZXggPCBtX3RvdWNoRXZlbnRzLnNpemUo
KSk7CisKKyAgICBHZGtFdmVudCogZXZlbnQgPSBtX3RvdWNoRXZlbnRzW2luZGV4XTsKKyAgICBB
U1NFUlQoZXZlbnQpOworCisgICAgZXZlbnQtPnR5cGUgPSBHREtfVE9VQ0hfVVBEQVRFOworICAg
IHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoZXZlbnQsIHgsIHkpOworICAgIG1fdXBkYXRlZFRvdWNo
RXZlbnRzLmFkZChHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRvdWNoLnNlcXVlbmNlKSwgMCk7Cit9
CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpCit7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBpZCA6IG1fdXBkYXRlZFRvdWNoRXZlbnRzLmtleXMoKSkKKyAg
ICAgICAgc2VuZE9yUXVldWVFdmVudChnZGtfZXZlbnRfY29weShtX3RvdWNoRXZlbnRzW2lkXSkp
OworCisgICAgbV91cGRhdGVkVG91Y2hFdmVudHMuY2xlYXIoKTsKK30KKwordm9pZCBFdmVudFNl
bmRlclByb3h5Ojp0b3VjaFN0YXJ0KCkKK3sKKyAgICBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKK3sKKyAgICBzZW5kVXBk
YXRlZFRvdWNoRXZlbnRzKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQo
KQoreworICAgIHNlbmRVcGRhdGVkVG91Y2hFdmVudHMoKTsKK30KKwordm9pZCBFdmVudFNlbmRl
clByb3h5Ojp0b3VjaENhbmNlbCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpjbGVhclRvdWNoUG9pbnRzKCkKK3sKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG1fdG91Y2hFdmVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGdka19ldmVudF9m
cmVlIChtX3RvdWNoRXZlbnRzW2ldKTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4KQorewor
ICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgbV90b3VjaEV2ZW50cy5zaXplKCkpOwor
CisgICAgR2RrRXZlbnQqIGV2ZW50ID0gbV90b3VjaEV2ZW50c1tpbmRleF07CisgICAgZXZlbnQt
PnR5cGUgPSBHREtfVE9VQ0hfRU5EOworICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmFkZChHUE9J
TlRFUl9UT19JTlQoZXZlbnQtPnRvdWNoLnNlcXVlbmNlKSwgMCk7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6Y2FuY2VsVG91Y2hQb2ludChpbnQgaW5kZXgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50UmFkaXVz
KGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIoV0tFdmVudE1vZGlmaWVy
cyBtb2RpZmllciwgYm9vbCBlbmFibGUpCit7CisgICAgZ3VpbnQgc3RhdGUgPSB3ZWJraXRNb2Rp
ZmllcnNUb0dES01vZGlmaWVycyhtb2RpZmllcik7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IG1fdG91Y2hFdmVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fdG91Y2hFdmVudHNb
aV0tPnR5cGUgPT0gR0RLX1RPVUNIX0VORCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlmIChlbmFibGUpCisgICAgICAgICAgICBtX3RvdWNoRXZlbnRzW2ldLT50b3VjaC5zdGF0
ZSB8PSBzdGF0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90b3VjaEV2ZW50c1tpXS0+
dG91Y2guc3RhdGUgJj0gfihzdGF0ZSk7CisKKyAgICAgICAgbV91cGRhdGVkVG91Y2hFdmVudHMu
YWRkKEdQT0lOVEVSX1RPX0lOVChtX3RvdWNoRXZlbnRzW2ldLT50b3VjaC5zZXF1ZW5jZSksIDAp
OworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219972</attachid>
            <date>2013-12-24 09:02:31 -0800</date>
            <delta_ts>2013-12-24 16:34:08 -0800</delta_ts>
            <desc>another patch fixing an style issue that was introduced</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>38510</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NmE3NDk4Li4xMDFhZjAz
NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVh
dHVyZXMubTQ6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IHNldCBF
TkFCTEVfVE9VQ0hfRVZFTlRTIHRvIDEgaWYgYnVpbGRpbmcgd2l0aCBHVEsrLgorCiAyMDEzLTEy
LTE4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtH
VEtdW0NNYWtlXSBtYWtlIGxpYmphdmFzY3JpcHRjb3JlZ3RrIGEgcHVibGljIHNoYXJlZCBsaWJy
YXJ5IGFnYWluCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODY1MTE5Ny4uMmM4ZjFiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczog
Y2hlY2sgdGVzdHMgaW4gZmFzdC9ldmVudHMvdG91Y2gKKwogMjAxMy0xMi0wOSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IEltYWdlQnVm
ZmVyIHRvIHJlLXVzZSBJT1N1cmZhY2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGMxMjRiNzIuLjU4NmE4MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzIsNyArMTcyLDcgQEAgd2Via2l0Lm9yZy9iLzYx
MTQwIGZhc3Qvbm90aWZpY2F0aW9ucyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzYxMTQwIGh0dHAv
dGVzdHMvbm90aWZpY2F0aW9ucyBbIFNraXAgXQogCiAjIFRoZXNlIHRlc3RzIHJlcXVpcmUgdG91
Y2ggc3VwcG9ydC4KLXdlYmtpdC5vcmcvYi85ODkzMSBmYXN0L2V2ZW50cy90b3VjaCBbIFNraXAg
XQorZmFzdC9ldmVudHMvdG91Y2gKIAogIyBTdG9yYWdlVHJhY2tlciBpcyBub3QgZW5hYmxlZC4K
IHdlYmtpdC5vcmcvYi85ODkzMyBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3Jh
Z2V0cmFja2VyIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNiNTJjYi4uNDE4MGQzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJs
b3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQg
Y29kZSB0byBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0cyBpbiBmYXN0L2V2ZW50cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsr
IG5vdyB0aGF0IHRvdWNoCisgICAgICAgIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVz
IGFsbCBleHBlY3RlZCBiaXRzIGFyZSB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3Vj
aENvbnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9p
bnRzLCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0
ZWQgY29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBu
b3cgdGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDEzLTEyLTIxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0g
UmVzb3VyY2VIYW5kbGVTb3VwIHNob3VsZCB1c2UgYXN5bmMgY2xpZW50IGNhbGxiYWNrcyB3aGVu
IGNsaWVudCB1c2VzIGFzeW5jIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggMzYwMzNkYi4uMWFkY2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zMDE3LDggKzMwMTcsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5v
ZGVUcmF2ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmggXAorCVNv
dXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9y
bVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5j
cHAgXApAQCAtNjI0OCw2ICs2MjUxLDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5n
LmMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhYzVhOTk2Li5jNGYyYjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgxLDYgKzE4MSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3Bw
CiAgICAgcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtD
bGlja0NvdW50ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3BwCiAgICAgcGxhdGZv
cm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtQbHVn
aW5XaWRnZXQuY3BwCkBAIC0xOTUsNiArMTk2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRm
b3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmNw
cAogICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVRvdWNoRXZlbnRH
dGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAg
ICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAogICAgIHBsYXRmb3JtL2d0
ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKQEAgLTUxNCw2ICs1MTYsNyBAQCBpZiAoRU5BQkxFX1dF
QktJVDIpCiAgICAgICAgIGRvbS9SYW5nZS5pZGwKICAgICAgICAgZG9tL1NoYWRvd1Jvb3QuaWRs
CiAgICAgICAgIGRvbS9UZXh0LmlkbAorICAgICAgICBkb20vVG91Y2guaWRsCiAgICAgICAgIGRv
bS9UcmVlV2Fsa2VyLmlkbAogICAgICAgICBkb20vVUlFdmVudC5pZGwKICAgICAgICAgZG9tL1dl
YktpdE5hbWVkRmxvdy5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dO
VW1ha2VmaWxlLmFtCmluZGV4IDY4NjRlMTAuLmRmNDJjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpAQCAtMjYyLDYgKzI2Miw4IEBAIHdl
YmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01TdHlsZVNoZWV0UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NVGV4dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UZXh0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91
Y2guY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2hQcml2YXRl
LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmgg
XAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmVlV2Fsa2VyLmNwcCBcCkBA
IC0zMjMsNiArMzI1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVJhbmdlLmggXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01Ub3VjaC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
VHJlZVdhbGtlci5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVUlFdmVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQmxvYi5oIFwKQEAgLTQz
Miw2ICs0MzUsNyBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
d2Via2l0ZG9tZGVmaW5lcy5oCiAKKwogaWYgRU5BQkxFX1ZJREVPCiB3ZWJraXRndGtfZ2RvbV9i
dWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlv
VHJhY2suaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L3dl
YmtpdGRvbS5zeW1ib2xzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRk
b20uc3ltYm9scwppbmRleCBiMTJmZjU3Li43NGRkMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMKQEAgLTE2NDgsNiArMTY0OCwx
OCBAQCBnbG9uZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YV94KFdlYktp
dERPTVdoZWVsRXZlbnQqKQogZ2xvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2hlZWxf
ZGVsdGFfeShXZWJLaXRET01XaGVlbEV2ZW50KikKIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZl
bnRfZ2V0X3doZWVsX2RlbHRhKFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2Jvb2xlYW4gd2Via2l0
X2RvbV93aGVlbF9ldmVudF9nZXRfd2Via2l0X2RpcmVjdGlvbl9pbnZlcnRlZF9mcm9tX2Rldmlj
ZShXZWJLaXRET01XaGVlbEV2ZW50KikKK1dlYktpdERPTUV2ZW50VGFyZ2V0KiB3ZWJraXRfZG9t
X3RvdWNoX2dldF90YXJnZXQoV2ViS2l0RE9NVG91Y2gqKQorZ2Zsb2F0IHdlYmtpdF9kb21fdG91
Y2hfZ2V0X3dlYmtpdF9mb3JjZShXZWJLaXRET01Ub3VjaCopCitnZmxvYXQgd2Via2l0X2RvbV90
b3VjaF9nZXRfd2Via2l0X3JvdGF0aW9uX2FuZ2xlKFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdl
YmtpdF9kb21fdG91Y2hfZ2V0X2NsaWVudF94KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtp
dF9kb21fdG91Y2hfZ2V0X2NsaWVudF95KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9k
b21fdG91Y2hfZ2V0X3BhZ2VfeChXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3Rv
dWNoX2dldF9wYWdlX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9n
ZXRfc2NyZWVuX3goV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRf
c2NyZWVuX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Vi
a2l0X3JhZGl1c194KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0
X3dlYmtpdF9yYWRpdXNfeShXZWJLaXRET01Ub3VjaCopCitndWxvbmcgd2Via2l0X2RvbV90b3Vj
aF9nZXRfaWRlbnRpZmllcihXZWJLaXRET01Ub3VjaCopCiBnY2hhciogd2Via2l0X2RvbV9hdWRp
b190cmFja19nZXRfaWQoV2ViS2l0RE9NQXVkaW9UcmFjayopCiBnY2hhciogd2Via2l0X2RvbV9h
dWRpb190cmFja19nZXRfa2luZChXZWJLaXRET01BdWRpb1RyYWNrKikKIGdjaGFyKiB3ZWJraXRf
ZG9tX2F1ZGlvX3RyYWNrX2dldF9sYWJlbChXZWJLaXRET01BdWRpb1RyYWNrKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NhNjM2NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIu
Y3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdh
cm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkd0a1RvdWNoQ29udGV4dEhlbHBlci5oIgorCisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0d0a1RvdWNoQ29udGV4dEhlbHBlcjo6fkd0
a1RvdWNoQ29udGV4dEhlbHBlcigpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBzdG9yZWRFdmVu
dCA6IG1fdG91Y2hFdmVudHMudmFsdWVzKCkpCisgICAgICAgIGdka19ldmVudF9mcmVlKHN0b3Jl
ZEV2ZW50KTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisKK2Jvb2wgR3RrVG91Y2hD
b250ZXh0SGVscGVyOjpoYW5kbGVFdmVudChHZGtFdmVudCogdG91Y2hFdmVudCkKK3sKKyNpZm5k
ZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICB1aW50MzJfdCBzZXF1ZW5jZSA9IEdQT0lOVEVSX1RP
X1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZSh0b3VjaEV2ZW50KSk7CisKKyAgICBz
d2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAg
ICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAgIG1fdG91Y2hFdmVudHMuc2V0KHNlcXVl
bmNlLCBnZGtfZXZlbnRfY29weSh0b3VjaEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgZ2RrX2V2ZW50X2ZyZWUobV90b3VjaEV2ZW50cy50
YWtlKHNlcXVlbmNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKKworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIwMGQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9z
Z0Bnbm9tZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gK
KyNkZWZpbmUgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisKK3R5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3R5cGVkZWYgVG91Y2hFdmVudHNNYXAgSGFzaE1hcDx1aW50MzJfdCwgR2RrRXZl
bnQqPjsKKworY2xhc3MgR3RrVG91Y2hDb250ZXh0SGVscGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHdGtUb3VjaENvbnRleHRIZWxwZXIpOworcHVibGljOgorICAgIH5HdGtUb3VjaENv
bnRleHRIZWxwZXIoKTsKKworICAgIGJvb2wgaGFuZGxlRXZlbnQoR2RrRXZlbnQqKTsKKyAgICBj
b25zdCBUb3VjaEV2ZW50c01hcCYgdG91Y2hFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX3RvdWNo
RXZlbnRzOyB9OworCitwcml2YXRlOgorICAgIFRvdWNoRXZlbnRzTWFwIG1fdG91Y2hFdmVudHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IDU5ZTJkZjkuLmQxMTBhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMy0xMi0yMyAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAg
ICAgW0dUS10gQWxsb3cgYnVpbGRpbmcgd2l0aCB0b3VjaCBldmVudHMgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFdmVuIHRob3VnaCBXZWJL
aXQxIEdUSyBjb2RlIGRvZXNuJ3QgaW1wbGVtZW50IHRvdWNoIGV2ZW50cywKKyAgICAgICAgRml4
IGJ1aWxkIGlmIEVOQUJMRV9UT1VDSF9FVkVOVFMgaXMgcHJlc2VudCBmb3IgV0syLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6bmVlZFRvdWNoRXZlbnRzKTogQWRkIGVtcHR5IHN0dWIKKwogMjAxMy0x
Mi0yMCAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFRoZSBmdWxsc2NyZWVuIEFQSSBzaG91bGQgYmUgZW5hYmxlZCBieSBkZWZh
dWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5oCmluZGV4IDUxZDQzYWEuLmJkYzg5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xNDMsNiArMTQzLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbnVtV2hl
ZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgeyB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJh
bWUqLCBHcmFwaGljc0xheWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzMwYjA0ZC4uMWNlNzk0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxj
YXJsb3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgc3VwcG9ydCB0b3Vj
aCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW4gR1RLKyA+PSAzLjQuMCwgR2RrRXZlbnRUb3VjaCBpcyBhdmFpbGFibGUgdG8gaW5mb3JtIGFi
b3V0IG11bHRpdG91Y2ggZXZlbnRzLiBVc2UgdGhlc2UgdG8gaW1wbGVtZW50CisgICAgICAgIHRv
dWNoIGV2ZW50cyBvbiB0aGlzIHBsYXRmb3JtLiBJZiBhIHRvdWNoIGlzIGxlZnQgdW5oYW5kbGVk
IGFuZCBpcyB0aGUgInBvaW50ZXIgZW11bGF0aW5nIiBvbmUsIG1vdXNlCisgICAgICAgIGV2ZW50
cyB3aWxsIGJlIGdlbmVyYXRlZCBhcyBhIGZhbGxiYWNrLgorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFy
ZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC9OYXRp
dmVXZWJUb3VjaEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6
Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6dG91
Y2hDb250ZXh0KTogQWRkIEdUSysgaW1wbGVtZW50YXRpb24gb2YgTmF0aXZlV2ViVG91Y2hFdmVu
dAorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6dG91Y2hQaGFzZUZyb21FdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQpOiBBZGQgbWV0aG9kcyB0byBnZW5lcmF0ZSBOYXRp
dmVXZWJUb3VjaEV2ZW50cyBvdXQKKyAgICAgICAgb2YgR2RrRXZlbnRUb3VjaCBldmVudHMsIGEg
R3RrVG91Y2hDb250ZXh0SGVscGVyIG9iamVjdCBpcyB1c2VkIHRvIGhvbGQgaW5mb3JtYXRpb24g
YWJvdXQgYWxsIGN1cnJlbnQKKyAgICAgICAgdG91Y2hlcywgaW4gb3JkZXIgdG8gYnVpbGQgaW5m
b3JtYXRpb24gYWJvdXQgYWxsIGluZGl2aWR1YWwgdG91Y2hwb2ludHMuCisgICAgICAgICogU2hh
cmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aFRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgcG9pbnRlciBlbXVsYXRpb24gaWYgdGhlIHBvaW50
ZXIgZW11bGF0aW5nCisgICAgICAgIHRvdWNoIHdhcyB1bmhhbmRsZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVJl
YWxpemUpOiBMaXN0ZW4gZm9yIHRvdWNoIGV2ZW50cworICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VUb3VjaEV2ZW50KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQp
OiBBZGQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0b3VjaF9ldmVudHMoKSBoYW5kbGVyLgorCiAy
MDEzLTEyLTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBUZXN0IC93ZWJraXQyL1dlYktpdFdlYlJlc291cmNlL21pbWUtdHlwZSBm
YWlscyB3aGVuIHJ1biBhZnRlciAvd2Via2l0Mi9XZWJLaXRXZWJWaWV3L3Jlc291cmNlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggN2VjZjA3NS4uMDYzNzAwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00OTMsNiArNDkzLDcgQEAgd2Via2l0Ml9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGU3YTlhOTQuLjlkYzNlZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC00Niw2ICs0Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAgICBT
aGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRp
dmVXZWJXaGVlbEV2ZW50R3RrLmNwcAorICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVu
dEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAKICAgICBTaGFyZWQvZ3Rr
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5jcHAKQEAgLTU0MSwxMiArNTQyLDE0IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1Mp
CiAgICAgICAgIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKICAgICAgICAgU2hhcmVkL1dl
Yk1vdXNlRXZlbnQuY3BwCiAgICAgICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAorICAgICAg
ICBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKIAogICAgICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVh
YmxlQml0bWFwQ2Fpcm8uY3BwCiAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICAg
ICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQv
Z3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRp
dmVXZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oCmluZGV4IDBkNGIyY2YuLjk1Mjk0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYlRvdWNoRXZlbnQuaApAQCAtMzEsOSArMzEsMTEgQEAKICNpZiBQTEFURk9STShJ
T1MpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogT0JKQ19DTEFTUyBVSVdlYlRvdWNoRXZl
bnRzR2VzdHVyZVJlY29nbml6ZXI7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQotCi0jaWYgUExB
VEZPUk0oRUZMKQorI2VsaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgordHlwZWRlZiB1bmlv
biBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiRXdr
VG91Y2hFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDYsOCArNDgsMTIgQEAgcHVibGljOgogI2lmIFBMQVRG
T1JNKElPUykKICAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KFVJV2ViVG91Y2hFdmVu
dHNHZXN0dXJlUmVjb2duaXplciAqKTsKICAgICBjb25zdCBVSVdlYlRvdWNoRXZlbnRzR2VzdHVy
ZVJlY29nbml6ZXIqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5n
ZXQoKTsgfQotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExBVEZPUk0oR1RLKQor
ICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYpOworICAg
IE5hdGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQqLCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRI
ZWxwZXImKTsKKyAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVy
biBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6R3RrVG91Y2hDb250
ZXh0SGVscGVyJiB0b3VjaENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoQ29udGV4dDsg
fQorI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrVG91Y2hF
dmVudCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwogICAgIGNvbnN0IEV3a1Rv
dWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQo
KTsgfQogI2VuZGlmCkBAIC01NSw4ICs2MSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25p
emVyPiBtX25hdGl2ZUV2ZW50OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExB
VEZPUk0oR1RLKQorICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CisgICAgY29u
c3QgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVyJiBtX3RvdWNoQ29udGV4dDsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKICAgICBSZWZQdHI8RXdrVG91Y2hFdmVudD4gbV9uYXRpdmVFdmVudDsK
ICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZl
V2ViVG91Y2hFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdl
YlRvdWNoRXZlbnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIy
Y2Q0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2
ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKKwor
I2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgPGdkay9nZGsuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZl
bnQoR2RrRXZlbnQqIGV2ZW50LCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImIGNvbnRl
eHQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hF
dmVudChldmVudCwgY29udGV4dCkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5
KGV2ZW50KSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGNvbnRleHQpCit7Cit9CisKK05hdGl2ZVdl
YlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVu
dCYgZXZlbnQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
VG91Y2hFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCBldmVudC50b3VjaENvbnRleHQoKSkpCisg
ICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpKQor
ICAgICwgbV90b3VjaENvbnRleHQoZXZlbnQudG91Y2hDb250ZXh0KCkpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZh
Y3RvcnkuY3BwCmluZGV4IGNiODhhODIuLjMxY2I4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVk
ZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yMDMsNCArMjA0
LDc1IEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2Fy
ZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKIH0KIAorI2lmbmRlZiBHVEtfQVBJX1ZFUlNJ
T05fMgorc3RhdGljIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHRvdWNo
UGhhc2VGcm9tRXZlbnRzKGNvbnN0IEdka0V2ZW50KiBjdXJyZW50LCBjb25zdCBHZGtFdmVudCog
ZXZlbnQpCit7CisgICAgaWYgKGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2UoY3VycmVudCkg
IT0gZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkpCisgICAgICAgIHJldHVybiBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKworICAgIHN3aXRjaCAoY3Vy
cmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToKKyAgICAgICAgcmV0dXJu
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAgICBjYXNlIEdES19UT1VDSF9C
RUdJTjoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2Vk
OworICAgIGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCBhcHBlbmRUb3VjaEV2ZW50KFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+JiB0b3Vj
aFBvaW50TGlzdCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkKK3sKKyAgICB1aW50MzJfdCBpZGVudGlmaWVyID0gR1BP
SU5URVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKGV2ZW50KSk7CisKKyAg
ICBnZG91YmxlIHgsIHk7CisgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7
CisKKyAgICBnZG91YmxlIHhSb290LCB5Um9vdDsKKyAgICBnZGtfZXZlbnRfZ2V0X3Jvb3RfY29v
cmRzKGV2ZW50LCAmeFJvb3QsICZ5Um9vdCk7CisKKyAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQg
dG91Y2hQb2ludChpZGVudGlmaWVyLCBzdGF0ZSwgSW50UG9pbnQoeFJvb3QsIHlSb290KSwgSW50
UG9pbnQoeCwgeSkpOworICAgIHRvdWNoUG9pbnRMaXN0LnVuY2hlY2tlZEFwcGVuZCh0b3VjaFBv
aW50KTsKK30KKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCitXZWJUb3VjaEV2ZW50IFdl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQs
IGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KQorewor
I2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBzdGF0
aWNfY2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisgICAgVG91Y2hFdmVudHNNYXAgdG91Y2hFdmVu
dHMgPSB0b3VjaENvbnRleHQudG91Y2hFdmVudHMoKTsKKyAgICBpbnQgbnVtRXZlbnRzID0gdG91
Y2hFdmVudHMuc2l6ZSgpOworCisgICAgc3dpdGNoIChldmVudC0+dHlwZSkgeworICAgIGNhc2Ug
R0RLX1RPVUNIX0JFR0lOOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToKKyAgICAgICAgdHlwZSA9
IFdlYkV2ZW50OjpUb3VjaE1vdmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNI
X0VORDoKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaEVuZDsKKyAgICAgICAgKytudW1F
dmVudHM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IHRv
dWNoUG9pbnRMaXN0OworICAgIHRvdWNoUG9pbnRMaXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bnVtRXZlbnRzKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgc3RvcmVkRXZlbnQgOiB0b3VjaEV2
ZW50cy52YWx1ZXMoKSkKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVudCh0b3VjaFBvaW50TGlzdCwg
c3RvcmVkRXZlbnQsIHRvdWNoUGhhc2VGcm9tRXZlbnRzKHN0b3JlZEV2ZW50LCBldmVudCkpOwor
CisgICAgLy8gVG91Y2ggd2FzIGFscmVhZHkgcmVtb3ZlZCBmcm9tIHRoZSBHdGtUb3VjaENvbnRl
eHRIZWxwZXIsIGFkZCBpdCBoZXJlLgorICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hf
RU5EKQorICAgICAgICBhcHBlbmRUb3VjaEV2ZW50KHRvdWNoUG9pbnRMaXN0LCBldmVudCwgV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKKworICAgIHJldHVybiBXZWJUb3Vj
aEV2ZW50KHR5cGUsIHRvdWNoUG9pbnRMaXN0LCBtb2RpZmllcnNGb3JFdmVudChldmVudCksIGdk
a19ldmVudF9nZXRfdGltZShldmVudCkpOworI2Vsc2UKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVu
dCgpOworI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXgg
MDg1ODE1Yy4uZmMzMDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50
RmFjdG9yeS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25SZXN1bHRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
dGtUb3VjaENvbnRleHRIZWxwZXIuaD4KIAogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZl
bnQ7CiAKQEAgLTM5LDYgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50
IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQpOwogICAgIHN0YXRpYyBX
ZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqKTsKICAgICBz
dGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2
ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJik7CisgICAgc3RhdGljIFdl
YlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdl
YkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKaW5kZXggZWVkNjQ5Yi4uNzM3MTc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzM0LDQgKzMzNCw1
NCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJl
Y3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UgogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3Qg
TmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAg
IGlmICh3YXNFdmVudEhhbmRsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEVtdWxhdGUg
cG9pbnRlciBldmVudHMgaWYgdW5oYW5kbGVkLgorICAgIGNvbnN0IEdka0V2ZW50KiB0b3VjaEV2
ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQoKTsKKworICAgIGlmICghdG91Y2hFdmVudC0+dG91Y2gu
ZW11bGF0aW5nX3BvaW50ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdPd25QdHI8R2RrRXZl
bnQ+IHBvaW50ZXJFdmVudDsKKworICAgIGlmICh0b3VjaEV2ZW50LT50eXBlID09IEdES19UT1VD
SF9VUERBVEUpIHsKKyAgICAgICAgcG9pbnRlckV2ZW50LnNldChnZGtfZXZlbnRfbmV3KEdES19N
T1RJT05fTk9USUZZKSk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnRpbWUgPSB0b3Vj
aEV2ZW50LT50b3VjaC50aW1lOworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi54ID0gdG91
Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueSA9IHRvdWNo
RXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnhfcm9vdCA9IHRv
dWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueV9y
b290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9yb290OworICAgICAgICBwb2ludGVyRXZlbnQtPm1v
dGlvbi5zdGF0ZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnN0YXRlIHwgR0RLX0JVVFRPTjFfTUFTSzsK
KyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICAg
ICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAgICAgICAgICAgcG9pbnRlckV2ZW50LnNldChnZGtf
ZXZlbnRfbmV3KEdES19CVVRUT05fUkVMRUFTRSkpOworICAgICAgICAgICAgcG9pbnRlckV2ZW50
LT5idXR0b24uc3RhdGUgPSB0b3VjaEV2ZW50LT50b3VjaC5zdGF0ZSB8IEdES19CVVRUT04xX01B
U0s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46Cisg
ICAgICAgICAgICBwb2ludGVyRXZlbnQuc2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9QUkVT
UykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHBvaW50ZXJFdmVudC0+
YnV0dG9uLmJ1dHRvbiA9IDE7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnRpbWUgPSB0
b3VjaEV2ZW50LT50b3VjaC50aW1lOworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54ID0g
dG91Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueSA9IHRv
dWNoRXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnhfcm9vdCA9
IHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24u
eV9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9yb290OworICAgIH0KKworICAgIGdka19ldmVu
dF9zZXRfZGV2aWNlKHBvaW50ZXJFdmVudC5nZXQoKSwgZ2RrX2V2ZW50X2dldF9kZXZpY2UodG91
Y2hFdmVudCkpOworICAgIGdka19ldmVudF9zZXRfc291cmNlX2RldmljZShwb2ludGVyRXZlbnQu
Z2V0KCksIGdka19ldmVudF9nZXRfc291cmNlX2RldmljZSh0b3VjaEV2ZW50KSk7CisgICAgcG9p
bnRlckV2ZW50LT5hbnkud2luZG93ID0gR0RLX1dJTkRPVyhnX29iamVjdF9yZWYodG91Y2hFdmVu
dC0+YW55LndpbmRvdykpOworICAgIHBvaW50ZXJFdmVudC0+YW55LnNlbmRfZXZlbnQgPSBUUlVF
OworCisgICAgZ3RrX3dpZGdldF9ldmVudChtX3ZpZXdXaWRnZXQsIHBvaW50ZXJFdmVudC5nZXQo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZTBjMThlNS4uMzZkYmNkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5oCkBAIC0xMjIsNiArMTIyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5F
eGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIE9WRVJSSURFOwogI2VuZGlmCiAKKyAgICB2
aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQm
LCBib29sIHdhc0V2ZW50SGFuZGxlZCkgT1ZFUlJJREU7CisKICAgICAvLyBNZW1iZXJzIG9mIFBh
Z2VDbGllbnRJbXBsIGNsYXNzCiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgRGVm
YXVsdFVuZG9Db250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggYzc4
YzRlNy4uNGE2MzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvR093blB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrQ2xpY2tDb3VudGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtEcmFnQW5kRHJvcEhlbHBlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtV
dGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMTEsNiArMTEyLDcgQEAgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIEdPd25QdHI8R2RrRXZlbnQ+IGNvbnRleHRN
ZW51RXZlbnQ7CiAgICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQ
cm94eTsKICAgICBXZWJWaWV3QmFzZUlucHV0TWV0aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVy
OworICAgIEd0a1RvdWNoQ29udGV4dEhlbHBlciB0b3VjaENvbnRleHQ7CiAKICAgICBHdGtXaW5k
b3cqIHRvcGxldmVsT25TY3JlZW5XaW5kb3c7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFJl
c2l6ZUdyaXBWaXNpYmlsaXR5SUQ7CkBAIC0yNzMsNyArMjc1LDggQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgICAgICB8IEdES19C
VVRUT05fTU9USU9OX01BU0sKICAgICAgICAgfCBHREtfQlVUVE9OMV9NT1RJT05fTUFTSwogICAg
ICAgICB8IEdES19CVVRUT04yX01PVElPTl9NQVNLCi0gICAgICAgIHwgR0RLX0JVVFRPTjNfTU9U
SU9OX01BU0s7CisgICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0sKKyAgICAgICAgfCBH
REtfVE9VQ0hfTUFTSzsKIAogICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdE
S19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsKIApAQCAtNzEzLDYgKzcxNiwxOSBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRXZlbnRNbwogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0V2ViVmlld0Jhc2VUb3VjaEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFRvdWNo
KiBldmVudCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2OworCisgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0
aW9uRGlhbG9nKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIHByaXYtPnRvdWNoQ29udGV4
dC5oYW5kbGVFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKTsKKyAgICBw
cml2LT5wYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudChyZWlu
dGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCBwcml2LT50b3VjaENvbnRleHQpKTsKKwor
ICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VR
dWVyeVRvb2x0aXAoR3RrV2lkZ2V0KiB3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LCBnYm9vbGVhbiBr
ZXlib2FyZE1vZGUsIEd0a1Rvb2x0aXAqIHRvb2x0aXApCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsKQEAg
LTg5Nyw2ICs5MTMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19p
bml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIHdpZGdldENsYXNz
LT5idXR0b25fcmVsZWFzZV9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUmVsZWFzZUV2
ZW50OwogICAgIHdpZGdldENsYXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVNj
cm9sbEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5X2V2ZW50ID0gd2Via2l0
V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudDsKKyAgICB3aWRnZXRDbGFzcy0+dG91Y2hfZXZl
bnQgPSB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnF1ZXJ5
X3Rvb2x0aXAgPSB3ZWJraXRXZWJWaWV3QmFzZVF1ZXJ5VG9vbHRpcDsKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogICAgIHdpZGdldENsYXNzLT5kcmFnX2VuZCA9IHdlYmtpdFdlYlZpZXdCYXNl
RHJhZ0VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJl
cy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCA2NDdj
Mjg0NC4uYjNkZWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZl
YXR1cmVzLm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNApA
QCAtMTc2LDcgKzE3Niw3IEBAICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVm
aW5lcy1maWxlcyAkQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBcCiAgICAgRU5BQkxFX1NB
VFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQz0xXAogICAgIEVOQUJMRV9URVhUX0FVVE9TSVpJTkc9
MCBcCiAgICAgRU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSPTAgXAotICAgIEVOQUJMRV9UT1VD
SF9FVkVOVFM9MCBcCisgICAgRU5BQkxFX1RPVUNIX0VWRU5UUz0xIFwKICAgICBFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HPTAgXAogICAgIEVOQUJMRV9VU0VSX1RJTUlORz0wIFwKICAgICBFTkFC
TEVfVklCUkFUSU9OPTAgXApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBjZTYwNDI0Li4wNGNhNjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMzksNyArMzksNyBAQCBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBRE9XX0RPTSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBUkVEX1dPUktFUlMgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU1BFTExDSEVDSyBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UIE9OKQotV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPRkYpCitXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU8gT04pCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjkyY2ViOC4uODU2ZTkx
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI3IEBACisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21l
Lm9yZz4KKworICAgICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2
ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNl
bmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6dXBkYXRlRXZlbnRDb29yZGluYXRlcyk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNyZWF0ZVRvdWNoRXZlbnQpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OnNlbmRVcGRhdGVkVG91Y2hFdmVudHMpOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hF
bmQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50UmFkaXVzKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6IEltcGxlbWVudCB0b3VjaCBldmVudCBwcm94
eWluZy4KKwogMjAxMy0xMi0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkIG15c2VsZiB0byBzb21lIG1vcmUgd2F0
Y2ggbGlzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4
IDVkM2EwNDguLjZhZjdiMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZl
bnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjZGVmaW5lIEV2ZW50U2VuZGVyUHJveHlfaAogCiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8Z2RrL2dkay5o
PgpAQCAtOTAsNiArOTIsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHNlbmRPclF1ZXVlRXZlbnQoR2RrRXZlbnQqKTsKICAgICBHZGtFdmVudCogY3JlYXRlTW91c2VC
dXR0b25FdmVudChHZGtFdmVudFR5cGUsIHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVy
cyk7CisgICAgR2RrRXZlbnQqIGNyZWF0ZVRvdWNoRXZlbnQoR2RrRXZlbnRUeXBlLCBpbnQgaWQp
OworICAgIHZvaWQgc2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOwogI2VsaWYgUExBVEZPUk0oRUZM
KQogICAgIHZvaWQgc2VuZE9yUXVldWVFdmVudChjb25zdCBXVFJFdmVudCYpOwogICAgIHZvaWQg
ZGlzcGF0Y2hFdmVudChjb25zdCBXVFJFdmVudCYpOwpAQCAtMTEwLDYgKzExNCw4IEBAIHByaXZh
dGU6CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgRGVxdWU8V1RSRXZlbnRRdWV1ZUl0ZW0+IG1f
ZXZlbnRRdWV1ZTsKICAgICB1bnNpZ25lZCBtX21vdXNlQnV0dG9uQ3VycmVudGx5RG93bjsKKyAg
ICBWZWN0b3I8R2RrRXZlbnQqPiBtX3RvdWNoRXZlbnRzOworICAgIEhhc2hNYXA8aW50LCBpbnQ+
IG1fdXBkYXRlZFRvdWNoRXZlbnRzOwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIERlcXVlPFdU
UkV2ZW50PiBtX2V2ZW50UXVldWU7CiAgICAgV0tFdmVudE1vdXNlQnV0dG9uIG1fbW91c2VCdXR0
b247CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclBy
b3h5R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlH
dGsuY3BwCmluZGV4IDM4MDQzOGMuLmNkNGY2YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXJQcm94eS5oIgogCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNp
bmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CkBA
IC00NDEsNCArNDQyLDEyMCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGlu
dCBtaWxsaXNlY29uZHMpCiAgICAgbV90aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKIH0K
IAordm9pZCB1cGRhdGVFdmVudENvb3JkaW5hdGVzKEdka0V2ZW50KiB0b3VjaEV2ZW50LCBpbnQg
eCwgaW50IHkpCit7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueCA9IHg7CisgICAgdG91Y2hFdmVu
dC0+dG91Y2gueSA9IHk7CisKKyAgICBpbnQgeFJvb3QsIHlSb290OworICAgIGdka193aW5kb3df
Z2V0X3Jvb3RfY29vcmRzKHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdywgeCwgeSwgJnhSb290LCAm
eVJvb3QpOworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdCA9IHhSb290OworICAgIHRvdWNo
RXZlbnQtPnRvdWNoLnlfcm9vdCA9IHlSb290OworfQorCitHZGtFdmVudCogRXZlbnRTZW5kZXJQ
cm94eTo6Y3JlYXRlVG91Y2hFdmVudChHZGtFdmVudFR5cGUgZXZlbnRUeXBlLCBpbnQgaWQpCit7
CisgICAgR2RrRXZlbnQqIHRvdWNoRXZlbnQgPSBnZGtfZXZlbnRfbmV3KGV2ZW50VHlwZSk7CisK
KyAgICB0b3VjaEV2ZW50LT50b3VjaC5zZXF1ZW5jZSA9IChHZGtFdmVudFNlcXVlbmNlKikgR0lO
VF9UT19QT0lOVEVSKGlkKTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC53aW5kb3cgPSBndGtfd2lk
Z2V0X2dldF93aW5kb3coR1RLX1dJREdFVChtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygp
LT5wbGF0Zm9ybVZpZXcoKSkpOworICAgIGdfb2JqZWN0X3JlZih0b3VjaEV2ZW50LT50b3VjaC53
aW5kb3cpOworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHRvdWNoRXZlbnQsIGdka19kZXZpY2Vf
bWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2Vy
KGdka193aW5kb3dfZ2V0X2Rpc3BsYXkodG91Y2hFdmVudC0+YnV0dG9uLndpbmRvdykpKSk7Cisg
ICAgdG91Y2hFdmVudC0+dG91Y2gudGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisKKyAgICByZXR1
cm4gdG91Y2hFdmVudDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50
KGludCB4LCBpbnQgeSkKK3sKKyAgICBHZGtFdmVudCogZXZlbnQgPSBjcmVhdGVUb3VjaEV2ZW50
KChHZGtFdmVudFR5cGUpIEdES19UT1VDSF9CRUdJTiwgbV90b3VjaEV2ZW50cy5zaXplKCkpOwor
ICAgIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoZXZlbnQsIHgsIHkpOworICAgIG1fdG91Y2hFdmVu
dHMudW5jaGVja2VkQXBwZW5kKGV2ZW50KTsKKyAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5hZGQo
R1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1ZW5jZSksIDApOworfQorCit2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkp
Cit7CisgICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5kZXggPCBtX3RvdWNoRXZlbnRzLnNpemUo
KSk7CisKKyAgICBHZGtFdmVudCogZXZlbnQgPSBtX3RvdWNoRXZlbnRzW2luZGV4XTsKKyAgICBB
U1NFUlQoZXZlbnQpOworCisgICAgZXZlbnQtPnR5cGUgPSBHREtfVE9VQ0hfVVBEQVRFOworICAg
IHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoZXZlbnQsIHgsIHkpOworICAgIG1fdXBkYXRlZFRvdWNo
RXZlbnRzLmFkZChHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRvdWNoLnNlcXVlbmNlKSwgMCk7Cit9
CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpCit7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBpZCA6IG1fdXBkYXRlZFRvdWNoRXZlbnRzLmtleXMoKSkKKyAg
ICAgICAgc2VuZE9yUXVldWVFdmVudChnZGtfZXZlbnRfY29weShtX3RvdWNoRXZlbnRzW2lkXSkp
OworCisgICAgbV91cGRhdGVkVG91Y2hFdmVudHMuY2xlYXIoKTsKK30KKwordm9pZCBFdmVudFNl
bmRlclByb3h5Ojp0b3VjaFN0YXJ0KCkKK3sKKyAgICBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKK3sKKyAgICBzZW5kVXBk
YXRlZFRvdWNoRXZlbnRzKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQo
KQoreworICAgIHNlbmRVcGRhdGVkVG91Y2hFdmVudHMoKTsKK30KKwordm9pZCBFdmVudFNlbmRl
clByb3h5Ojp0b3VjaENhbmNlbCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpjbGVhclRvdWNoUG9pbnRzKCkKK3sKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG1fdG91Y2hFdmVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGdka19ldmVudF9m
cmVlKG1fdG91Y2hFdmVudHNbaV0pOworICAgIG1fdG91Y2hFdmVudHMuY2xlYXIoKTsKK30KKwor
dm9pZCBFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpCit7Cisg
ICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5kZXggPCBtX3RvdWNoRXZlbnRzLnNpemUoKSk7CisK
KyAgICBHZGtFdmVudCogZXZlbnQgPSBtX3RvdWNoRXZlbnRzW2luZGV4XTsKKyAgICBldmVudC0+
dHlwZSA9IEdES19UT1VDSF9FTkQ7CisgICAgbV91cGRhdGVkVG91Y2hFdmVudHMuYWRkKEdQT0lO
VEVSX1RPX0lOVChldmVudC0+dG91Y2guc2VxdWVuY2UpLCAwKTsKK30KKwordm9pZCBFdmVudFNl
bmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50KGludCBpbmRleCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoUG9pbnRSYWRpdXMo
aW50IHJhZGl1c1gsIGludCByYWRpdXNZKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcihXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVyLCBib29sIGVuYWJsZSkKK3sKKyAgICBndWludCBzdGF0ZSA9IHdlYmtpdE1vZGlm
aWVyc1RvR0RLTW9kaWZpZXJzKG1vZGlmaWVyKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bV90b3VjaEV2ZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV90b3VjaEV2ZW50c1tp
XS0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKGVuYWJsZSkKKyAgICAgICAgICAgIG1fdG91Y2hFdmVudHNbaV0tPnRvdWNoLnN0YXRl
IHw9IHN0YXRlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3RvdWNoRXZlbnRzW2ldLT50
b3VjaC5zdGF0ZSAmPSB+KHN0YXRlKTsKKworICAgICAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5h
ZGQoR1BPSU5URVJfVE9fSU5UKG1fdG91Y2hFdmVudHNbaV0tPnRvdWNoLnNlcXVlbmNlKSwgMCk7
CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219984</attachid>
            <date>2013-12-24 16:34:08 -0800</date>
            <delta_ts>2014-02-04 03:54:34 -0800</delta_ts>
            <desc>a last patch hopefully, fixes silly mistake</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>38574</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NmE3NDk4Li4xMDFhZjAz
NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVh
dHVyZXMubTQ6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IHNldCBF
TkFCTEVfVE9VQ0hfRVZFTlRTIHRvIDEgaWYgYnVpbGRpbmcgd2l0aCBHVEsrLgorCiAyMDEzLTEy
LTE4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtH
VEtdW0NNYWtlXSBtYWtlIGxpYmphdmFzY3JpcHRjb3JlZ3RrIGEgcHVibGljIHNoYXJlZCBsaWJy
YXJ5IGFnYWluCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODY1MTE5Ny4uMmM4ZjFiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAg
ICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczog
Y2hlY2sgdGVzdHMgaW4gZmFzdC9ldmVudHMvdG91Y2gKKwogMjAxMy0xMi0wOSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IEltYWdlQnVm
ZmVyIHRvIHJlLXVzZSBJT1N1cmZhY2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGMxMjRiNzIuLjU4NmE4MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzIsNyArMTcyLDcgQEAgd2Via2l0Lm9yZy9iLzYx
MTQwIGZhc3Qvbm90aWZpY2F0aW9ucyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzYxMTQwIGh0dHAv
dGVzdHMvbm90aWZpY2F0aW9ucyBbIFNraXAgXQogCiAjIFRoZXNlIHRlc3RzIHJlcXVpcmUgdG91
Y2ggc3VwcG9ydC4KLXdlYmtpdC5vcmcvYi85ODkzMSBmYXN0L2V2ZW50cy90b3VjaCBbIFNraXAg
XQorZmFzdC9ldmVudHMvdG91Y2gKIAogIyBTdG9yYWdlVHJhY2tlciBpcyBub3QgZW5hYmxlZC4K
IHdlYmtpdC5vcmcvYi85ODkzMyBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3Jh
Z2V0cmFja2VyIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNiNTJjYi4uNDE4MGQzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJs
b3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQg
Y29kZSB0byBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0cyBpbiBmYXN0L2V2ZW50cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsr
IG5vdyB0aGF0IHRvdWNoCisgICAgICAgIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVz
IGFsbCBleHBlY3RlZCBiaXRzIGFyZSB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3Vj
aENvbnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9p
bnRzLCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0
ZWQgY29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBu
b3cgdGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDEzLTEyLTIxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0g
UmVzb3VyY2VIYW5kbGVTb3VwIHNob3VsZCB1c2UgYXN5bmMgY2xpZW50IGNhbGxiYWNrcyB3aGVu
IGNsaWVudCB1c2VzIGFzeW5jIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggMzYwMzNkYi4uMWFkY2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zMDE3LDggKzMwMTcsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5v
ZGVUcmF2ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmggXAorCVNv
dXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9y
bVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5j
cHAgXApAQCAtNjI0OCw2ICs2MjUxLDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5n
LmMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhYzVhOTk2Li5jNGYyYjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgxLDYgKzE4MSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3Bw
CiAgICAgcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtD
bGlja0NvdW50ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3BwCiAgICAgcGxhdGZv
cm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtQbHVn
aW5XaWRnZXQuY3BwCkBAIC0xOTUsNiArMTk2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRm
b3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmNw
cAogICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVRvdWNoRXZlbnRH
dGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAKICAg
ICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAogICAgIHBsYXRmb3JtL2d0
ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKQEAgLTUxNCw2ICs1MTYsNyBAQCBpZiAoRU5BQkxFX1dF
QktJVDIpCiAgICAgICAgIGRvbS9SYW5nZS5pZGwKICAgICAgICAgZG9tL1NoYWRvd1Jvb3QuaWRs
CiAgICAgICAgIGRvbS9UZXh0LmlkbAorICAgICAgICBkb20vVG91Y2guaWRsCiAgICAgICAgIGRv
bS9UcmVlV2Fsa2VyLmlkbAogICAgICAgICBkb20vVUlFdmVudC5pZGwKICAgICAgICAgZG9tL1dl
YktpdE5hbWVkRmxvdy5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dO
VW1ha2VmaWxlLmFtCmluZGV4IDY4NjRlMTAuLmRmNDJjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpAQCAtMjYyLDYgKzI2Miw4IEBAIHdl
YmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01TdHlsZVNoZWV0UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NVGV4dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UZXh0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91
Y2guY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2hQcml2YXRl
LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmgg
XAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmVlV2Fsa2VyLmNwcCBcCkBA
IC0zMjMsNiArMzI1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVJhbmdlLmggXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01Ub3VjaC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
VHJlZVdhbGtlci5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVUlFdmVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQmxvYi5oIFwKQEAgLTQz
Miw2ICs0MzUsNyBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
d2Via2l0ZG9tZGVmaW5lcy5oCiAKKwogaWYgRU5BQkxFX1ZJREVPCiB3ZWJraXRndGtfZ2RvbV9i
dWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlv
VHJhY2suaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L3dl
YmtpdGRvbS5zeW1ib2xzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRk
b20uc3ltYm9scwppbmRleCBiMTJmZjU3Li43NGRkMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMKQEAgLTE2NDgsNiArMTY0OCwx
OCBAQCBnbG9uZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YV94KFdlYktp
dERPTVdoZWVsRXZlbnQqKQogZ2xvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2hlZWxf
ZGVsdGFfeShXZWJLaXRET01XaGVlbEV2ZW50KikKIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZl
bnRfZ2V0X3doZWVsX2RlbHRhKFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2Jvb2xlYW4gd2Via2l0
X2RvbV93aGVlbF9ldmVudF9nZXRfd2Via2l0X2RpcmVjdGlvbl9pbnZlcnRlZF9mcm9tX2Rldmlj
ZShXZWJLaXRET01XaGVlbEV2ZW50KikKK1dlYktpdERPTUV2ZW50VGFyZ2V0KiB3ZWJraXRfZG9t
X3RvdWNoX2dldF90YXJnZXQoV2ViS2l0RE9NVG91Y2gqKQorZ2Zsb2F0IHdlYmtpdF9kb21fdG91
Y2hfZ2V0X3dlYmtpdF9mb3JjZShXZWJLaXRET01Ub3VjaCopCitnZmxvYXQgd2Via2l0X2RvbV90
b3VjaF9nZXRfd2Via2l0X3JvdGF0aW9uX2FuZ2xlKFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdl
YmtpdF9kb21fdG91Y2hfZ2V0X2NsaWVudF94KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtp
dF9kb21fdG91Y2hfZ2V0X2NsaWVudF95KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9k
b21fdG91Y2hfZ2V0X3BhZ2VfeChXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3Rv
dWNoX2dldF9wYWdlX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9n
ZXRfc2NyZWVuX3goV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRf
c2NyZWVuX3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Vi
a2l0X3JhZGl1c194KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0
X3dlYmtpdF9yYWRpdXNfeShXZWJLaXRET01Ub3VjaCopCitndWxvbmcgd2Via2l0X2RvbV90b3Vj
aF9nZXRfaWRlbnRpZmllcihXZWJLaXRET01Ub3VjaCopCiBnY2hhciogd2Via2l0X2RvbV9hdWRp
b190cmFja19nZXRfaWQoV2ViS2l0RE9NQXVkaW9UcmFjayopCiBnY2hhciogd2Via2l0X2RvbV9h
dWRpb190cmFja19nZXRfa2luZChXZWJLaXRET01BdWRpb1RyYWNrKikKIGdjaGFyKiB3ZWJraXRf
ZG9tX2F1ZGlvX3RyYWNrX2dldF9sYWJlbChXZWJLaXRET01BdWRpb1RyYWNrKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NhNjM2NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIu
Y3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdh
cm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkd0a1RvdWNoQ29udGV4dEhlbHBlci5oIgorCisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0d0a1RvdWNoQ29udGV4dEhlbHBlcjo6fkd0
a1RvdWNoQ29udGV4dEhlbHBlcigpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBzdG9yZWRFdmVu
dCA6IG1fdG91Y2hFdmVudHMudmFsdWVzKCkpCisgICAgICAgIGdka19ldmVudF9mcmVlKHN0b3Jl
ZEV2ZW50KTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisKK2Jvb2wgR3RrVG91Y2hD
b250ZXh0SGVscGVyOjpoYW5kbGVFdmVudChHZGtFdmVudCogdG91Y2hFdmVudCkKK3sKKyNpZm5k
ZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICB1aW50MzJfdCBzZXF1ZW5jZSA9IEdQT0lOVEVSX1RP
X1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZSh0b3VjaEV2ZW50KSk7CisKKyAgICBz
d2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAg
ICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAgIG1fdG91Y2hFdmVudHMuc2V0KHNlcXVl
bmNlLCBnZGtfZXZlbnRfY29weSh0b3VjaEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgZ2RrX2V2ZW50X2ZyZWUobV90b3VjaEV2ZW50cy50
YWtlKHNlcXVlbmNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKKworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIyNGFlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9z
Z0Bnbm9tZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gK
KyNkZWZpbmUgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK3R5cGVkZWYgdW5pb24gX0dka0V2
ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgSGFzaE1hcDx1
aW50MzJfdCwgR2RrRXZlbnQqPiBUb3VjaEV2ZW50c01hcDsKKworY2xhc3MgR3RrVG91Y2hDb250
ZXh0SGVscGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHdGtUb3VjaENvbnRleHRIZWxw
ZXIpOworcHVibGljOgorICAgIEd0a1RvdWNoQ29udGV4dEhlbHBlcigpIHsgfTsKKyAgICB+R3Rr
VG91Y2hDb250ZXh0SGVscGVyKCk7CisKKyAgICBib29sIGhhbmRsZUV2ZW50KEdka0V2ZW50Kik7
CisgICAgY29uc3QgVG91Y2hFdmVudHNNYXAmIHRvdWNoRXZlbnRzKCkgY29uc3QgeyByZXR1cm4g
bV90b3VjaEV2ZW50czsgfTsKKworcHJpdmF0ZToKKyAgICBUb3VjaEV2ZW50c01hcCBtX3RvdWNo
RXZlbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCA1OWUyZGY5Li5kMTEwYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgor
CisgICAgICAgIFtHVEtdIEFsbG93IGJ1aWxkaW5nIHdpdGggdG91Y2ggZXZlbnRzIGVuYWJsZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXZlbiB0aG91
Z2ggV2ViS2l0MSBHVEsgY29kZSBkb2Vzbid0IGltcGxlbWVudCB0b3VjaCBldmVudHMsCisgICAg
ICAgIEZpeCBidWlsZCBpZiBFTkFCTEVfVE9VQ0hfRVZFTlRTIGlzIHByZXNlbnQgZm9yIFdLMi4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnQ6Om5lZWRUb3VjaEV2ZW50cyk6IEFkZCBlbXB0eSBzdHViCisK
IDIwMTMtMTItMjAgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxleiAgPGVvY2FuaGFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBUaGUgZnVsbHNjcmVlbiBBUEkgc2hvdWxkIGJlIGVuYWJsZWQg
YnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaAppbmRleCA1MWQ0M2FhLi5iZGM4OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTQzLDYgKzE0
Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lk
IG51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgbmVlZFRvdWNoRXZlbnRzKGJvb2wpIHsgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKSAKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xh
eWVyKEZyYW1lKiwgR3JhcGhpY3NMYXllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMzMGIwNGQuLjFjZTc5
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMy0xMi0yMyAgQ2FybG9zIEdhcm5h
Y2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHN1cHBv
cnQgdG91Y2ggZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluIEdUSysgPj0gMy40LjAsIEdka0V2ZW50VG91Y2ggaXMgYXZhaWxhYmxlIHRvIGlu
Zm9ybSBhYm91dCBtdWx0aXRvdWNoIGV2ZW50cy4gVXNlIHRoZXNlIHRvIGltcGxlbWVudAorICAg
ICAgICB0b3VjaCBldmVudHMgb24gdGhpcyBwbGF0Zm9ybS4gSWYgYSB0b3VjaCBpcyBsZWZ0IHVu
aGFuZGxlZCBhbmQgaXMgdGhlICJwb2ludGVyIGVtdWxhdGluZyIgb25lLCBtb3VzZQorICAgICAg
ICBldmVudHMgd2lsbCBiZSBnZW5lcmF0ZWQgYXMgYSBmYWxsYmFjay4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAg
ICogU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3Vj
aEV2ZW50OjpuYXRpdmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZl
bnQ6OnRvdWNoQ29udGV4dCk6IEFkZCBHVEsrIGltcGxlbWVudGF0aW9uIG9mIE5hdGl2ZVdlYlRv
dWNoRXZlbnQKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnRvdWNoUGhhc2VGcm9tRXZlbnRzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KTogQWRkIG1ldGhvZHMgdG8gZ2VuZXJh
dGUgTmF0aXZlV2ViVG91Y2hFdmVudHMgb3V0CisgICAgICAgIG9mIEdka0V2ZW50VG91Y2ggZXZl
bnRzLCBhIEd0a1RvdWNoQ29udGV4dEhlbHBlciBvYmplY3QgaXMgdXNlZCB0byBob2xkIGluZm9y
bWF0aW9uIGFib3V0IGFsbCBjdXJyZW50CisgICAgICAgIHRvdWNoZXMsIGluIG9yZGVyIHRvIGJ1
aWxkIGluZm9ybWF0aW9uIGFib3V0IGFsbCBpbmRpdmlkdWFsIHRvdWNocG9pbnRzLgorICAgICAg
ICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZG9uZVdpdGhUb3VjaEV2ZW50KTogSW1wbGVtZW50IHBvaW50ZXIgZW11bGF0aW9uIGlmIHRo
ZSBwb2ludGVyIGVtdWxhdGluZworICAgICAgICB0b3VjaCB3YXMgdW5oYW5kbGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmll
d0Jhc2VSZWFsaXplKTogTGlzdGVuIGZvciB0b3VjaCBldmVudHMKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdCYXNlVG91Y2hFdmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFz
c19pbml0KTogQWRkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgdG91Y2hfZXZlbnRzKCkgaGFuZGxl
ci4KKwogMjAxMy0xMi0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gVGVzdCAvd2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS9taW1l
LXR5cGUgZmFpbHMgd2hlbiBydW4gYWZ0ZXIgL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9yZXNvdXJj
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDdlY2YwNzUuLjA2MzcwMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDkzLDYgKzQ5Myw3IEBAIHdlYmtpdDJf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9MYXllclRyZWVDb250ZXh0
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2
ZW50R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2
ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2
ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9QcmludEluZm9HdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlN2E5YTk0Li45ZGMzZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDYsNiArNDYsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3Bw
CiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAogICAgIFNoYXJlZC9n
dGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYlRv
dWNoRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9HdGsuY3BwCiAgICAgU2hh
cmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuY3BwCkBAIC01NDEsMTIgKzU0MiwxNCBAQCBpZiAoRU5BQkxFX1BMVUdJTl9Q
Uk9DRVNTKQogICAgICAgICBTaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCiAgICAgICAgIFNo
YXJlZC9XZWJNb3VzZUV2ZW50LmNwcAogICAgICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAK
KyAgICAgICAgU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwCiAKICAgICAgICAgU2hhcmVkL2NhaXJv
L1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2
ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3Bw
CisgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAgICAg
U2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgICAgIFNoYXJlZC9n
dGsvV2ViRXZlbnRGYWN0b3J5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdl
YlRvdWNoRXZlbnQuaAppbmRleCAwZDRiMmNmLi45NTI5NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaWYgUExB
VEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgVUlXZWJU
b3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQot
I2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxHT3duUHRy
R3RrLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtUb3VjaENvbnRleHRIZWxwZXIuaD4KK3R5cGVk
ZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworI2VsaWYgUExBVEZPUk0oRUZMKQogI2luY2x1
ZGUgIkV3a1RvdWNoRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ2LDggKzQ4LDEyIEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChVSVdlYlRv
dWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKik7CiAgICAgY29uc3QgVUlXZWJUb3VjaEV2ZW50
c0dlc3R1cmVSZWNvZ25pemVyKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZl
RXZlbnQuZ2V0KCk7IH0KLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JN
KEdUSykKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQm
KTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiwgV2ViQ29yZTo6R3RrVG91Y2hD
b250ZXh0SGVscGVyJik7CisgICAgY29uc3QgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6Okd0a1Rv
dWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90b3VjaENv
bnRleHQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEV3
a1RvdWNoRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBjb25z
dCBFd2tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZl
bnQuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNTUsOCArNjEsMTAgQEAgcHVibGljOgogcHJpdmF0ZToK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPFVJV2ViVG91Y2hFdmVudHNHZXN0dXJl
UmVjb2duaXplcj4gbV9uYXRpdmVFdmVudDsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkKKyNl
bGlmIFBMQVRGT1JNKEdUSykKKyAgICBHT3duUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50Owor
ICAgIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgbV90b3VjaENvbnRleHQ7
CisjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUmVmUHRyPEV3a1RvdWNoRXZlbnQ+IG1fbmF0aXZl
RXZlbnQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iMmNkNGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJUb3VjaEV2ZW50
LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJU
b3VjaEV2ZW50KEdka0V2ZW50KiBldmVudCwgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVy
JiBjb250ZXh0KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YlRvdWNoRXZlbnQoZXZlbnQsIGNvbnRleHQpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZl
bnRfY29weShldmVudCkpCisgICAgLCBtX3RvdWNoQ29udGV4dChjb250ZXh0KQoreworfQorCitO
YXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmIGV2ZW50KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgZXZlbnQudG91Y2hDb250ZXh0
KCkpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudC5uYXRpdmVFdmVu
dCgpKSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGV2ZW50LnRvdWNoQ29udGV4dCgpKQoreworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5LmNwcAppbmRleCBjYjg4YTgyLi4zMWNiODk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgog
I2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1
ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjAz
LDQgKzIwNCw3NSBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKKyNpZm5kZWYgR1RLX0FQ
SV9WRVJTSU9OXzIKK3N0YXRpYyBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0
ZSB0b3VjaFBoYXNlRnJvbUV2ZW50cyhjb25zdCBHZGtFdmVudCogY3VycmVudCwgY29uc3QgR2Rr
RXZlbnQqIGV2ZW50KQoreworICAgIGlmIChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKGN1
cnJlbnQpICE9IGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2UoZXZlbnQpKQorICAgICAgICBy
ZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisKKyAgICBzd2l0
Y2ggKGN1cnJlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAg
IHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAgY2FzZSBHREtf
VE9VQ0hfQkVHSU46CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UHJlc3NlZDsKKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIHJldHVybiBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgYXBwZW5kVG91Y2hFdmVudChWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50
PiYgdG91Y2hQb2ludExpc3QsIGNvbnN0IEdka0V2ZW50KiBldmVudCwgV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGUpCit7CisgICAgdWludDMyX3QgaWRlbnRpZmll
ciA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkp
OworCisgICAgZ2RvdWJsZSB4LCB5OworICAgIGdka19ldmVudF9nZXRfY29vcmRzKGV2ZW50LCAm
eCwgJnkpOworCisgICAgZ2RvdWJsZSB4Um9vdCwgeVJvb3Q7CisgICAgZ2RrX2V2ZW50X2dldF9y
b290X2Nvb3JkcyhldmVudCwgJnhSb290LCAmeVJvb3QpOworCisgICAgV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50IHRvdWNoUG9pbnQoaWRlbnRpZmllciwgc3RhdGUsIEludFBvaW50KHhSb290LCB5Um9v
dCksIEludFBvaW50KHgsIHkpKTsKKyAgICB0b3VjaFBvaW50TGlzdC51bmNoZWNrZWRBcHBlbmQo
dG91Y2hQb2ludCk7Cit9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKKworV2ViVG91Y2hF
dmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3QgR2RrRXZlbnQq
IGV2ZW50LCBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImIHRvdWNoQ29udGV4
dCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICBXZWJFdmVudDo6VHlwZSB0eXBl
ID0gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6OlR5cGU+KDApOworICAgIFRvdWNoRXZlbnRzTWFwIHRv
dWNoRXZlbnRzID0gdG91Y2hDb250ZXh0LnRvdWNoRXZlbnRzKCk7CisgICAgaW50IG51bUV2ZW50
cyA9IHRvdWNoRXZlbnRzLnNpemUoKTsKKworICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUpIHsKKyAg
ICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaFN0
YXJ0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAg
IHR5cGUgPSBXZWJFdmVudDo6VG91Y2hNb3ZlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdE
S19UT1VDSF9FTkQ6CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6VG91Y2hFbmQ7CisgICAgICAg
ICsrbnVtRXZlbnRzOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBv
aW50PiB0b3VjaFBvaW50TGlzdDsKKyAgICB0b3VjaFBvaW50TGlzdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG51bUV2ZW50cyk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3JlZEV2ZW50IDog
dG91Y2hFdmVudHMudmFsdWVzKCkpCisgICAgICAgIGFwcGVuZFRvdWNoRXZlbnQodG91Y2hQb2lu
dExpc3QsIHN0b3JlZEV2ZW50LCB0b3VjaFBoYXNlRnJvbUV2ZW50cyhzdG9yZWRFdmVudCwgZXZl
bnQpKTsKKworICAgIC8vIFRvdWNoIHdhcyBhbHJlYWR5IHJlbW92ZWQgZnJvbSB0aGUgR3RrVG91
Y2hDb250ZXh0SGVscGVyLCBhZGQgaXQgaGVyZS4KKyAgICBpZiAoZXZlbnQtPnR5cGUgPT0gR0RL
X1RPVUNIX0VORCkKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVudCh0b3VjaFBvaW50TGlzdCwgZXZl
bnQsIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCk7CisKKyAgICByZXR1cm4g
V2ViVG91Y2hFdmVudCh0eXBlLCB0b3VjaFBvaW50TGlzdCwgbW9kaWZpZXJzRm9yRXZlbnQoZXZl
bnQpLCBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKKyNlbHNlCisgICAgcmV0dXJuIFdlYlRv
dWNoRXZlbnQoKTsKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZl
bnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5o
CmluZGV4IDA4NTgxNWMuLmZjMzAyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiV2ViRXZlbnQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uUmVzdWx0cy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+CiAKIHR5cGVkZWYgdW5pb24gX0dka0V2ZW50
IEdka0V2ZW50OwogCkBAIC0zOSw2ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTW91
c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiwgaW50KTsKICAgICBz
dGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50Kik7
CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25z
dCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYpOworICAgIHN0
YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBj
b25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwCmluZGV4IGVlZDY0OWIuLjczNzE3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTMzNCw0
ICszMzQsNTQgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6YmVnYW5FeGl0RnVsbFNjcmVlbihjb25z
dCBJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEludFIKIAogI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkK
K3sKKyAgICBpZiAod2FzRXZlbnRIYW5kbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBF
bXVsYXRlIHBvaW50ZXIgZXZlbnRzIGlmIHVuaGFuZGxlZC4KKyAgICBjb25zdCBHZGtFdmVudCog
dG91Y2hFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50KCk7CisKKyAgICBpZiAoIXRvdWNoRXZlbnQt
PnRvdWNoLmVtdWxhdGluZ19wb2ludGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBHT3duUHRy
PEdka0V2ZW50PiBwb2ludGVyRXZlbnQ7CisKKyAgICBpZiAodG91Y2hFdmVudC0+dHlwZSA9PSBH
REtfVE9VQ0hfVVBEQVRFKSB7CisgICAgICAgIHBvaW50ZXJFdmVudC5zZXQoZ2RrX2V2ZW50X25l
dyhHREtfTU9USU9OX05PVElGWSkpOworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi50aW1l
ID0gdG91Y2hFdmVudC0+dG91Y2gudGltZTsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24u
eCA9IHRvdWNoRXZlbnQtPnRvdWNoLng7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnkg
PSB0b3VjaEV2ZW50LT50b3VjaC55OworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi54X3Jv
b3QgPSB0b3VjaEV2ZW50LT50b3VjaC54X3Jvb3Q7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90
aW9uLnlfcm9vdCA9IHRvdWNoRXZlbnQtPnRvdWNoLnlfcm9vdDsKKyAgICAgICAgcG9pbnRlckV2
ZW50LT5tb3Rpb24uc3RhdGUgPSB0b3VjaEV2ZW50LT50b3VjaC5zdGF0ZSB8IEdES19CVVRUT04x
X01BU0s7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dpdGNoICh0b3VjaEV2ZW50LT50eXBlKSB7
CisgICAgICAgIGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgICAgIHBvaW50ZXJFdmVudC5z
ZXQoZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1JFTEVBU0UpKTsKKyAgICAgICAgICAgIHBvaW50
ZXJFdmVudC0+YnV0dG9uLnN0YXRlID0gdG91Y2hFdmVudC0+dG91Y2guc3RhdGUgfCBHREtfQlVU
VE9OMV9NQVNLOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0RLX1RPVUNIX0JF
R0lOOgorICAgICAgICAgICAgcG9pbnRlckV2ZW50LnNldChnZGtfZXZlbnRfbmV3KEdES19CVVRU
T05fUFJFU1MpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBwb2ludGVy
RXZlbnQtPmJ1dHRvbi5idXR0b24gPSAxOworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi50
aW1lID0gdG91Y2hFdmVudC0+dG91Y2gudGltZTsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0
b24ueCA9IHRvdWNoRXZlbnQtPnRvdWNoLng7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9u
LnkgPSB0b3VjaEV2ZW50LT50b3VjaC55OworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54
X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3VjaC54X3Jvb3Q7CisgICAgICAgIHBvaW50ZXJFdmVudC0+
YnV0dG9uLnlfcm9vdCA9IHRvdWNoRXZlbnQtPnRvdWNoLnlfcm9vdDsKKyAgICB9CisKKyAgICBn
ZGtfZXZlbnRfc2V0X2RldmljZShwb2ludGVyRXZlbnQuZ2V0KCksIGdka19ldmVudF9nZXRfZGV2
aWNlKHRvdWNoRXZlbnQpKTsKKyAgICBnZGtfZXZlbnRfc2V0X3NvdXJjZV9kZXZpY2UocG9pbnRl
ckV2ZW50LmdldCgpLCBnZGtfZXZlbnRfZ2V0X3NvdXJjZV9kZXZpY2UodG91Y2hFdmVudCkpOwor
ICAgIHBvaW50ZXJFdmVudC0+YW55LndpbmRvdyA9IEdES19XSU5ET1coZ19vYmplY3RfcmVmKHRv
dWNoRXZlbnQtPmFueS53aW5kb3cpKTsKKyAgICBwb2ludGVyRXZlbnQtPmFueS5zZW5kX2V2ZW50
ID0gVFJVRTsKKworICAgIGd0a193aWRnZXRfZXZlbnQobV92aWV3V2lkZ2V0LCBwb2ludGVyRXZl
bnQuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGUwYzE4ZTUuLjM2
ZGJjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuaApAQCAtMTIyLDYgKzEyMiw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGJlZ2FuRXhpdEZ1bGxTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1l
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaW5hbEZyYW1lKSBPVkVSUklERTsKICNlbmRpZgog
CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3Vj
aEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIE9WRVJSSURFOworCiAgICAgLy8gTWVtYmVy
cyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFzcwogICAgIEd0a1dpZGdldCogbV92aWV3V2lkZ2V0Owog
ICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3VuZG9Db250cm9sbGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IGM3OGM0ZTcuLjRhNjMxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0dPd25QdHJHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a0NsaWNr
Q291bnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrRHJhZ0FuZERyb3BIZWxwZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTExLDYgKzExMiw3IEBAIHN0
cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICBHT3duUHRyPEdka0V2ZW50PiBj
b250ZXh0TWVudUV2ZW50OwogICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsqIGFjdGl2ZUNvbnRl
eHRNZW51UHJveHk7CiAgICAgV2ViVmlld0Jhc2VJbnB1dE1ldGhvZEZpbHRlciBpbnB1dE1ldGhv
ZEZpbHRlcjsKKyAgICBHdGtUb3VjaENvbnRleHRIZWxwZXIgdG91Y2hDb250ZXh0OwogCiAgICAg
R3RrV2luZG93KiB0b3BsZXZlbE9uU2NyZWVuV2luZG93OwogICAgIHVuc2lnbmVkIGxvbmcgdG9w
bGV2ZWxSZXNpemVHcmlwVmlzaWJpbGl0eUlEOwpAQCAtMjczLDcgKzI3NSw4IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKICAgICAgICAg
fCBHREtfQlVUVE9OX01PVElPTl9NQVNLCiAgICAgICAgIHwgR0RLX0JVVFRPTjFfTU9USU9OX01B
U0sKICAgICAgICAgfCBHREtfQlVUVE9OMl9NT1RJT05fTUFTSwotICAgICAgICB8IEdES19CVVRU
T04zX01PVElPTl9NQVNLOworICAgICAgICB8IEdES19CVVRUT04zX01PVElPTl9NQVNLCisgICAg
ICAgIHwgR0RLX1RPVUNIX01BU0s7CiAKICAgICBnaW50IGF0dHJpYnV0ZXNNYXNrID0gR0RLX1dB
X1ggfCBHREtfV0FfWSB8IEdES19XQV9WSVNVQUw7CiAKQEAgLTcxMyw2ICs3MTYsMTkgQEAgc3Rh
dGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka0V2ZW50TW8KICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29s
ZWFuIHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZl
bnRUb3VjaCogZXZlbnQpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
V0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsKKworICAgIGlmIChwcml2LT5hdXRo
ZW50aWNhdGlvbkRpYWxvZykKKyAgICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICBwcml2LT50b3Vj
aENvbnRleHQuaGFuZGxlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSk7
CisgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZl
bnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgcHJpdi0+dG91Y2hDb250ZXh0
KSk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCYXNlUXVlcnlUb29sdGlwKEd0a1dpZGdldCogd2lkZ2V0LCBnaW50IHgsIGdpbnQgeSwgZ2Jv
b2xlYW4ga2V5Ym9hcmRNb2RlLCBHdGtUb29sdGlwKiB0b29sdGlwKQogewogICAgIFdlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnBy
aXY7CkBAIC04OTcsNiArOTEzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2Vf
Y2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICB3aWRn
ZXRDbGFzcy0+YnV0dG9uX3JlbGVhc2VfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblJl
bGVhc2VFdmVudDsKICAgICB3aWRnZXRDbGFzcy0+c2Nyb2xsX2V2ZW50ID0gd2Via2l0V2ViVmll
d0Jhc2VTY3JvbGxFdmVudDsKICAgICB3aWRnZXRDbGFzcy0+bW90aW9uX25vdGlmeV9ldmVudCA9
IHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQ7CisgICAgd2lkZ2V0Q2xhc3MtPnRv
dWNoX2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VUb3VjaEV2ZW50OwogICAgIHdpZGdldENsYXNz
LT5xdWVyeV90b29sdGlwID0gd2Via2l0V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXA7CiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKICAgICB3aWRnZXRDbGFzcy0+ZHJhZ19lbmQgPSB3ZWJraXRXZWJW
aWV3QmFzZURyYWdFbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0
RmVhdHVyZXMubTQgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKaW5k
ZXggNjQ3YzI4NDQuLmIzZGVhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBX
ZWJLaXRGZWF0dXJlcy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVy
ZXMubTQKQEAgLTE3Niw3ICsxNzYsNyBAQCAkc3JjZGlyL1Rvb2xzL2d0ay9nZW5lcmF0ZS1mZWF0
dXJlLWRlZmluZXMtZmlsZXMgJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgXAogICAgIEVO
QUJMRV9TQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUM9MVwKICAgICBFTkFCTEVfVEVYVF9BVVRP
U0laSU5HPTAgXAogICAgIEVOQUJMRV9USFJFQURFRF9IVE1MX1BBUlNFUj0wIFwKLSAgICBFTkFC
TEVfVE9VQ0hfRVZFTlRTPTAgXAorICAgIEVOQUJMRV9UT1VDSF9FVkVOVFM9MSBcCiAgICAgRU5B
QkxFX1RPVUNIX0lDT05fTE9BRElORz0wIFwKICAgICBFTkFCTEVfVVNFUl9USU1JTkc9MCBcCiAg
ICAgRU5BQkxFX1ZJQlJBVElPTj0wIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
R1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggY2U2MDQyNC4u
MDRjYTY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTM5LDcgKzM5LDcgQEAgV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NIQURPV19ET00gT0ZGKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NIQVJFRF9XT1JLRVJTIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NQRUxMQ0hFQ0sgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCBPTikKLVdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT0ZGKQor
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSUJSQVRJT04gT0ZG
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIE9OKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI5MmNlYjgu
Ljg1NmU5MTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0xMi0yNCAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9z
Z0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gRW5hYmxlIHRvdWNoIGZlYXR1cmVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsv
RXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OnVwZGF0ZUV2ZW50Q29vcmRp
bmF0ZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpjcmVhdGVUb3VjaEV2ZW50
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQb2ludCk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hTdGFydCk6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6OnRvdWNoTW92ZSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
OnRvdWNoRW5kKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hDYW5jZWwp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpjbGVhclRvdWNoUG9pbnRzKToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9pbnQpOgorICAgICAg
ICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50KToKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hQb2ludFJhZGl1cyk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIpOiBJbXBsZW1lbnQgdG91Y2ggZXZl
bnQgcHJveHlpbmcuCisKIDIwMTMtMTItMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZCBteXNlbGYgdG8gc29tZSBt
b3JlIHdhdGNoIGxpc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVu
dFNlbmRlclByb3h5LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHku
aAppbmRleCA1ZDNhMDQ4Li42YWY3YjFkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0V2ZW50U2VuZGVyUHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaApAQCAtMjgsNiArMjgsOCBAQAogI2RlZmluZSBFdmVudFNlbmRlclByb3h5
X2gKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGdk
ay9nZGsuaD4KQEAgLTkwLDYgKzkyLDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShHVEspCiAg
ICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KEdka0V2ZW50Kik7CiAgICAgR2RrRXZlbnQqIGNyZWF0
ZU1vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnRUeXBlLCB1bnNpZ25lZCBidXR0b24sIFdLRXZlbnRN
b2RpZmllcnMpOworICAgIEdka0V2ZW50KiBjcmVhdGVUb3VjaEV2ZW50KEdka0V2ZW50VHlwZSwg
aW50IGlkKTsKKyAgICB2b2lkIHNlbmRVcGRhdGVkVG91Y2hFdmVudHMoKTsKICNlbGlmIFBMQVRG
T1JNKEVGTCkKICAgICB2b2lkIHNlbmRPclF1ZXVlRXZlbnQoY29uc3QgV1RSRXZlbnQmKTsKICAg
ICB2b2lkIGRpc3BhdGNoRXZlbnQoY29uc3QgV1RSRXZlbnQmKTsKQEAgLTExMCw2ICsxMTQsOCBA
QCBwcml2YXRlOgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIERlcXVlPFdUUkV2ZW50UXVldWVJ
dGVtPiBtX2V2ZW50UXVldWU7CiAgICAgdW5zaWduZWQgbV9tb3VzZUJ1dHRvbkN1cnJlbnRseURv
d247CisgICAgVmVjdG9yPEdka0V2ZW50Kj4gbV90b3VjaEV2ZW50czsKKyAgICBIYXNoTWFwPGlu
dCwgaW50PiBtX3VwZGF0ZWRUb3VjaEV2ZW50czsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBE
ZXF1ZTxXVFJFdmVudD4gbV9ldmVudFF1ZXVlOwogICAgIFdLRXZlbnRNb3VzZUJ1dHRvbiBtX21v
dXNlQnV0dG9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRT
ZW5kZXJQcm94eUd0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRl
clByb3h5R3RrLmNwcAppbmRleCAzODA0MzhjLi5jZDRmNmI4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV2ZW50U2VuZGVyUHJveHkuaCIK
IAorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3
LmgiCiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3lt
cy5oPgpAQCAtNDQxLDQgKzQ0MiwxMjAgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9y
d2FyZChpbnQgbWlsbGlzZWNvbmRzKQogICAgIG1fdGltZSArPSBtaWxsaXNlY29uZHMgLyAxMDAw
LjA7CiB9CiAKK3ZvaWQgdXBkYXRlRXZlbnRDb29yZGluYXRlcyhHZGtFdmVudCogdG91Y2hFdmVu
dCwgaW50IHgsIGludCB5KQoreworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnggPSB4OworICAgIHRv
dWNoRXZlbnQtPnRvdWNoLnkgPSB5OworCisgICAgaW50IHhSb290LCB5Um9vdDsKKyAgICBnZGtf
d2luZG93X2dldF9yb290X2Nvb3Jkcyh0b3VjaEV2ZW50LT50b3VjaC53aW5kb3csIHgsIHksICZ4
Um9vdCwgJnlSb290KTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC54X3Jvb3QgPSB4Um9vdDsKKyAg
ICB0b3VjaEV2ZW50LT50b3VjaC55X3Jvb3QgPSB5Um9vdDsKK30KKworR2RrRXZlbnQqIEV2ZW50
U2VuZGVyUHJveHk6OmNyZWF0ZVRvdWNoRXZlbnQoR2RrRXZlbnRUeXBlIGV2ZW50VHlwZSwgaW50
IGlkKQoreworICAgIEdka0V2ZW50KiB0b3VjaEV2ZW50ID0gZ2RrX2V2ZW50X25ldyhldmVudFR5
cGUpOworCisgICAgdG91Y2hFdmVudC0+dG91Y2guc2VxdWVuY2UgPSAoR2RrRXZlbnRTZXF1ZW5j
ZSopIEdJTlRfVE9fUE9JTlRFUihpZCk7CisgICAgdG91Y2hFdmVudC0+dG91Y2gud2luZG93ID0g
Z3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV90ZXN0Q29udHJvbGxlci0+bWFpbldl
YlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpKTsKKyAgICBnX29iamVjdF9yZWYodG91Y2hFdmVudC0+
dG91Y2gud2luZG93KTsKKyAgICBnZGtfZXZlbnRfc2V0X2RldmljZSh0b3VjaEV2ZW50LCBnZGtf
ZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNwbGF5X2dldF9kZXZpY2Vf
bWFuYWdlcihnZGtfd2luZG93X2dldF9kaXNwbGF5KHRvdWNoRXZlbnQtPmJ1dHRvbi53aW5kb3cp
KSkpOworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworCisg
ICAgcmV0dXJuIHRvdWNoRXZlbnQ7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91
Y2hQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgR2RrRXZlbnQqIGV2ZW50ID0gY3JlYXRlVG91
Y2hFdmVudCgoR2RrRXZlbnRUeXBlKSBHREtfVE9VQ0hfQkVHSU4sIG1fdG91Y2hFdmVudHMuc2l6
ZSgpKTsKKyAgICB1cGRhdGVFdmVudENvb3JkaW5hdGVzKGV2ZW50LCB4LCB5KTsKKyAgICBtX3Rv
dWNoRXZlbnRzLnVuY2hlY2tlZEFwcGVuZChldmVudCk7CisgICAgbV91cGRhdGVkVG91Y2hFdmVu
dHMuYWRkKEdQT0lOVEVSX1RPX0lOVChldmVudC0+dG91Y2guc2VxdWVuY2UpLCAwKTsKK30KKwor
dm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KGludCBpbmRleCwgaW50IHgs
IGludCB5KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgbV90b3VjaEV2ZW50
cy5zaXplKCkpOworCisgICAgR2RrRXZlbnQqIGV2ZW50ID0gbV90b3VjaEV2ZW50c1tpbmRleF07
CisgICAgQVNTRVJUKGV2ZW50KTsKKworICAgIGV2ZW50LT50eXBlID0gR0RLX1RPVUNIX1VQREFU
RTsKKyAgICB1cGRhdGVFdmVudENvb3JkaW5hdGVzKGV2ZW50LCB4LCB5KTsKKyAgICBtX3VwZGF0
ZWRUb3VjaEV2ZW50cy5hZGQoR1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1ZW5jZSks
IDApOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNlbmRVcGRhdGVkVG91Y2hFdmVudHMo
KQoreworICAgIGZvciAoY29uc3QgYXV0byYgaWQgOiBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5rZXlz
KCkpCisgICAgICAgIHNlbmRPclF1ZXVlRXZlbnQoZ2RrX2V2ZW50X2NvcHkobV90b3VjaEV2ZW50
c1tpZF0pKTsKKworICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hTdGFydCgpCit7CisgICAgc2VuZFVwZGF0ZWRUb3VjaEV2
ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoTW92ZSgpCit7CisgICAg
c2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRv
dWNoRW5kKCkKK3sKKyAgICBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6dG91Y2hDYW5jZWwoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2xlYXJUb3VjaFBvaW50cygpCit7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBtX3RvdWNoRXZlbnRzLnNpemUoKTsgKytpKQorICAgICAgICBnZGtf
ZXZlbnRfZnJlZShtX3RvdWNoRXZlbnRzW2ldKTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4
KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgbV90b3VjaEV2ZW50cy5zaXpl
KCkpOworCisgICAgR2RrRXZlbnQqIGV2ZW50ID0gbV90b3VjaEV2ZW50c1tpbmRleF07CisgICAg
ZXZlbnQtPnR5cGUgPSBHREtfVE9VQ0hfRU5EOworICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmFk
ZChHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRvdWNoLnNlcXVlbmNlKSwgMCk7Cit9CisKK3ZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6Y2FuY2VsVG91Y2hQb2ludChpbnQgaW5kZXgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50
UmFkaXVzKGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIoV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllciwgYm9vbCBlbmFibGUpCit7CisgICAgZ3VpbnQgc3RhdGUgPSB3ZWJr
aXRNb2RpZmllcnNUb0dES01vZGlmaWVycyhtb2RpZmllcik7CisKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IG1fdG91Y2hFdmVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fdG91Y2hF
dmVudHNbaV0tPnR5cGUgPT0gR0RLX1RPVUNIX0VORCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGlmIChlbmFibGUpCisgICAgICAgICAgICBtX3RvdWNoRXZlbnRzW2ldLT50b3Vj
aC5zdGF0ZSB8PSBzdGF0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90b3VjaEV2ZW50
c1tpXS0+dG91Y2guc3RhdGUgJj0gfihzdGF0ZSk7CisKKyAgICAgICAgbV91cGRhdGVkVG91Y2hF
dmVudHMuYWRkKEdQT0lOVEVSX1RPX0lOVChtX3RvdWNoRXZlbnRzW2ldLT50b3VjaC5zZXF1ZW5j
ZSksIDApOworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223095</attachid>
            <date>2014-02-04 03:54:34 -0800</date>
            <delta_ts>2014-02-04 04:10:05 -0800</delta_ts>
            <desc>Updated patch, minor fixups and updates test situation</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>42212</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1MjY1MWJjLi5kYzUwZjIx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAg
ICAgIFtHVEtdIEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0
dXJlcy5tNDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZTogc2V0IEVO
QUJMRV9UT1VDSF9FVkVOVFMgdG8gMSBpZiBidWlsZGluZyB3aXRoIEdUSysuCisKIDIwMTQtMDEt
MzEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIExFR0FDWV9WSUVXUE9SVF9BREFQVElPTgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA2ZjI1NGYuLjZjNDMzMzkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMi0yNCAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9z
Z0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gRW5hYmxlIHRvdWNoIGZlYXR1cmVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnM6IHJlbW92ZSBmYXN0L2V2ZW50cy90b3VjaAorICAgICAgICAqIHBs
YXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9uczogQWRkIG5ldyBleHBlY3RhdGlvbnMgb24K
KyAgICAgICAgZmFzdC9ldmVudHMvdG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTAzICBLcnp5c3p0
b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIEV4cG9zZSBh
cmlhLWNvbnRyb2xzIHRocm91Z2ggQVRLX1JFTEFUSU9OX0NPTlRST0xMRVJfRk9SCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzVhNjM1ZC4u
OTE0NjI4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTg2LDYgKzE4NiwyNSBAQCB3ZWJraXQub3JnL2IvODU0NjMgZWRpdGluZy9pbnNl
cnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9yZS1VUkwuaAogd2Via2l0
Lm9yZy9iLzEyMDQwMSBmYXN0L2V2ZW50cyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEyMDQwMSBl
ZGl0aW5nL3NlbGVjdGlvbiBbIFNraXAgXQogCitmYXN0L2V2ZW50cy90b3VjaCBbIFBhc3MgXQor
CisjIFRlc3RzIGluIHRoZSBnZXN0dXJlIGZvbGRlciBleGVyY2lzZSBJT1Mtc3BlY2lmaWMgY29k
ZSwgbm9uIGFwcGxpYWJsZSB0byBHVEsrCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlIFsgU2tp
cCBdCisKKyMgVGhlc2UgdGVzdHMgcmVseSBvbiB0b3VjaCBldmVudCBncm91cGluZywgd2hpY2gg
WDExL0dUSysgZG9lc24ndCBkbyBieSBkZXNpZ24KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9l
dmVudHMvdG91Y2gvYmFzaWMtbXVsdGktdG91Y2gtZXZlbnRzLWxpbWl0ZWQuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10
b3VjaC1ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2
ZW50cy90b3VjaC90b3VjaC1pbnB1dC1lbGVtZW50LWNoYW5nZS1kb2N1bWVudHMuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9mcmFtZS1ob3Zl
ci11cGRhdGUuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50
cy90b3VjaC9tdWx0aS10b3VjaC1ncm91cGVkLXRhcmdldHMuaHRtbCBbIFRpbWVvdXQgRmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWlu
c2lkZS1uZXN0ZWQtaWZyYW1lcy5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcy
IGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWluc2lkZS1pZnJhbWVzLmh0bWwgWyBUaW1l
b3V0IF0KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xl
LXRvdWNoLWV2ZW50cy5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3Qv
ZXZlbnRzL3RvdWNoL3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBbIFRpbWVv
dXQgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQu
aHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90
b3VjaC10YXJnZXQtbGltaXRlZC5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcy
IGZhc3QvZXZlbnRzL3RvdWNoL3NlbmQtb25jYW5jZWwtZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQor
CiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgRXhwZWN0ZWQgZmFp
bHVyZXMKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDU2Mzc1N2MuLjM5NGQ5MDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNTMsOSArMTUzLDYgQEAg
d2Via2l0Lm9yZy9iLzk4OTI3IGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uIFsgU2tpcCBdCiB3
ZWJraXQub3JnL2IvNjExNDAgZmFzdC9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvNjExNDAgaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiAKLSMgVGhlc2UgdGVz
dHMgcmVxdWlyZSB0b3VjaCBzdXBwb3J0Lgotd2Via2l0Lm9yZy9iLzk4OTMxIGZhc3QvZXZlbnRz
L3RvdWNoIFsgU2tpcCBdCi0KICMgU3RvcmFnZVRyYWNrZXIgaXMgbm90IGVuYWJsZWQuCiB3ZWJr
aXQub3JnL2IvOTg5MzMgc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJh
Y2tlciBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY0YTFiOC4uOWZkYWJkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3Nn
QGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29k
ZSB0byBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0cyBpbiBmYXN0L2V2ZW50cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsrIG5v
dyB0aGF0IHRvdWNoCisgICAgICAgIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVzIGFs
bCBleHBlY3RlZCBiaXRzIGFyZSB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtU
b3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENv
bnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9pbnRz
LCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0ZWQg
Y29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBub3cg
dGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTAzICBLcnp5c3p0
b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIEV4cG9zZSBh
cmlhLWNvbnRyb2xzIHRocm91Z2ggQVRLX1JFTEFUSU9OX0NPTlRST0xMRVJfRk9SCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzMWQ0NDJhLi4zZmJmZTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMwMDEsOCArMzAwMSwxMSBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0Tm9kZVRyYXZlcnNhbC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0Tm9kZVRyYXZlcnNhbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVG91Y2guaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFu
c2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCBcCkBAIC02MTkwLDYgKzYxOTMsOCBAQCBwbGF0Zm9ybWd0
a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRo
b2RGaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BvcHVwTWVudS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1ZlcnNpb25pbmcuYyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGI1
OGVlN2YuLjA5ZWQzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xOTgsNiArMTk4
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAK
ICAgICBwbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9w
SGVscGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAKICAg
ICBwbGF0Zm9ybS9ndGsvR3RrUGx1Z2luV2lkZ2V0LmNwcApAQCAtMjEyLDYgKzIxMyw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL01h
aW5GcmFtZVNjcm9sbGJhckd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKyAgICBwbGF0Zm9ybS9n
dGsvUGxhdGZvcm1Ub3VjaEV2ZW50R3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0
ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCkBAIC01MjcsNiAr
NTI5LDcgQEAgaWYgKEVOQUJMRV9XRUJLSVQyKQogICAgICAgICBkb20vUmFuZ2UuaWRsCiAgICAg
ICAgIGRvbS9TaGFkb3dSb290LmlkbAogICAgICAgICBkb20vVGV4dC5pZGwKKyAgICAgICAgZG9t
L1RvdWNoLmlkbAogICAgICAgICBkb20vVHJlZVdhbGtlci5pZGwKICAgICAgICAgZG9tL1VJRXZl
bnQuaWRsCiAgICAgICAgIGRvbS9XZWJLaXROYW1lZEZsb3cuaWRsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQppbmRleCBiZDM2NDNmLi5kY2EzNzYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0K
QEAgLTI2Miw2ICsyNjIsOCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NU3R5bGVTaGVldFByaXZhdGUuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHQuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTVRvdWNoLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTVRvdWNoUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVGltZVJhbmdlcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UaW1lUmFuZ2VzUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0
RE9NVHJlZVdhbGtlci5jcHAgXApAQCAtMzIzLDYgKzMyNSw3IEBAIHdlYmtpdGd0a19nZG9tX2J1
aWx0X2hfYXBpICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01S
YW5nZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5oIFwKKwlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2guaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyZWVXYWxrZXIuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTVVJRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTUJsb2IuaCBcCkBAIC00MzIsNiArNDM1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRf
aF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS93ZWJraXRkb20uaCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMuaAogCisKIGlmIEVOQUJMRV9W
SURFTwogd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3ltYm9scyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMKaW5kZXggOWUyYmQ1Yi4uMjFiNDQ5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3lt
Ym9scworKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1i
b2xzCkBAIC0xNjYyLDYgKzE2NjIsMTggQEAgZ2xvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9n
ZXRfd2hlZWxfZGVsdGFfeChXZWJLaXRET01XaGVlbEV2ZW50KikKIGdsb25nIHdlYmtpdF9kb21f
d2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhX3koV2ViS2l0RE9NV2hlZWxFdmVudCopCiBnbG9u
ZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YShXZWJLaXRET01XaGVlbEV2
ZW50KikKIGdib29sZWFuIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3dlYmtpdF9kaXJlY3Rp
b25faW52ZXJ0ZWRfZnJvbV9kZXZpY2UoV2ViS2l0RE9NV2hlZWxFdmVudCopCitXZWJLaXRET01F
dmVudFRhcmdldCogd2Via2l0X2RvbV90b3VjaF9nZXRfdGFyZ2V0KFdlYktpdERPTVRvdWNoKikK
K2dmbG9hdCB3ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfZm9yY2UoV2ViS2l0RE9NVG91Y2gq
KQorZ2Zsb2F0IHdlYmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9yb3RhdGlvbl9hbmdsZShXZWJL
aXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9jbGllbnRfeChXZWJLaXRE
T01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9jbGllbnRfeShXZWJLaXRET01U
b3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9wYWdlX3goV2ViS2l0RE9NVG91Y2gq
KQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfcGFnZV95KFdlYktpdERPTVRvdWNoKikKK2ds
b25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl94KFdlYktpdERPTVRvdWNoKikKK2dsb25n
IHdlYmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl95KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdl
YmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9yYWRpdXNfeChXZWJLaXRET01Ub3VjaCopCitnbG9u
ZyB3ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfcmFkaXVzX3koV2ViS2l0RE9NVG91Y2gqKQor
Z3Vsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X2lkZW50aWZpZXIoV2ViS2l0RE9NVG91Y2gqKQog
Z2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2lkKFdlYktpdERPTUF1ZGlvVHJhY2sq
KQogZ2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2tpbmQoV2ViS2l0RE9NQXVkaW9U
cmFjayopCiBnY2hhciogd2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfbGFiZWwoV2ViS2l0RE9N
QXVkaW9UcmFjayopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VG91Y2hDb250ZXh0SGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtU
b3VjaENvbnRleHRIZWxwZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljg4MDBlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrVG91Y2hDb250ZXh0SGVscGVyLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHdGtUb3VjaENvbnRleHRIZWxwZXIu
aCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHdGtU
b3VjaENvbnRleHRIZWxwZXI6On5HdGtUb3VjaENvbnRleHRIZWxwZXIoKQoreworICAgIGZvciAo
YXV0byBpdCA9IG1fdG91Y2hFdmVudHMuYmVnaW4oKTsgaXQgIT0gbV90b3VjaEV2ZW50cy5lbmQo
KTsgKytpdCkKKyAgICAgICAgZ2RrX2V2ZW50X2ZyZWUoaXQtPnZhbHVlKTsKKyAgICBtX3RvdWNo
RXZlbnRzLmNsZWFyKCk7Cit9CisKK2Jvb2wgR3RrVG91Y2hDb250ZXh0SGVscGVyOjpoYW5kbGVF
dmVudChHZGtFdmVudCogdG91Y2hFdmVudCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIK
KyAgICB1aW50MzJfdCBzZXF1ZW5jZSA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9l
dmVudF9zZXF1ZW5jZSh0b3VjaEV2ZW50KSk7CisKKyAgICBHZGtFdmVudCogZXZlbnQgPSBtX3Rv
dWNoRXZlbnRzLnRha2Uoc2VxdWVuY2UpOworICAgIGlmIChldmVudCkKKyAgICAgICAgZ2RrX2V2
ZW50X2ZyZWUoZXZlbnQpOworCisgICAgc3dpdGNoICh0b3VjaEV2ZW50LT50eXBlKSB7CisgICAg
Y2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOgorICAgICAg
ICBtX3RvdWNoRXZlbnRzLnNldChzZXF1ZW5jZSwgZ2RrX2V2ZW50X2NvcHkodG91Y2hFdmVudCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8g
R1RLX0FQSV9WRVJTSU9OXzIKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91
Y2hDb250ZXh0SGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hD
b250ZXh0SGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIyNGFl
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3Vj
aENvbnRleHRIZWxwZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gKKyNkZWZpbmUgR3RrVG91Y2hDb250ZXh0SGVscGVy
X2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisKK3R5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3R5cGVkZWYgSGFzaE1hcDx1aW50MzJfdCwgR2RrRXZlbnQqPiBUb3VjaEV2ZW50
c01hcDsKKworY2xhc3MgR3RrVG91Y2hDb250ZXh0SGVscGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHdGtUb3VjaENvbnRleHRIZWxwZXIpOworcHVibGljOgorICAgIEd0a1RvdWNoQ29u
dGV4dEhlbHBlcigpIHsgfTsKKyAgICB+R3RrVG91Y2hDb250ZXh0SGVscGVyKCk7CisKKyAgICBi
b29sIGhhbmRsZUV2ZW50KEdka0V2ZW50Kik7CisgICAgY29uc3QgVG91Y2hFdmVudHNNYXAmIHRv
dWNoRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEV2ZW50czsgfTsKKworcHJpdmF0ZToK
KyAgICBUb3VjaEV2ZW50c01hcCBtX3RvdWNoRXZlbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBiZWZjZWFkLi43OGZkYmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTItMjMgIENhcmxvcyBHYXJu
YWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtdIEFsbG93IGJ1aWxkaW5n
IHdpdGggdG91Y2ggZXZlbnRzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRXZlbiB0aG91Z2ggV2ViS2l0MSBHVEsgY29kZSBkb2Vzbid0IGlt
cGxlbWVudCB0b3VjaCBldmVudHMsCisgICAgICAgIEZpeCBidWlsZCBpZiBFTkFCTEVfVE9VQ0hf
RVZFTlRTIGlzIHByZXNlbnQgZm9yIFdLMi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6Om5lZWRUb3Vj
aEV2ZW50cyk6IEFkZCBlbXB0eSBzdHViCisKIDIwMTQtMDEtMzEgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeGluZyB0aGUgR1RL
IGJ1aWxkIGFmdGVyIHIxNjMyMzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDFkZTdmMmYuLjY0YTA5MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBA
IC0xNDMsNiArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAjZW5kaWYKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCkgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgeyB9CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiwgR3JhcGhpY3NMYXll
ciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDAwNTNlOWMuLjVlNWZiMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNSBAQAorMjAxMy0xMi0yMyAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9zZ0Bnbm9t
ZS5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHN1cHBvcnQgdG91Y2ggZXZlbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEdUSysgPj0g
My40LjAsIEdka0V2ZW50VG91Y2ggaXMgYXZhaWxhYmxlIHRvIGluZm9ybSBhYm91dCBtdWx0aXRv
dWNoIGV2ZW50cy4gVXNlIHRoZXNlIHRvIGltcGxlbWVudAorICAgICAgICB0b3VjaCBldmVudHMg
b24gdGhpcyBwbGF0Zm9ybS4gSWYgYSB0b3VjaCBpcyBsZWZ0IHVuaGFuZGxlZCBhbmQgaXMgdGhl
ICJwb2ludGVyIGVtdWxhdGluZyIgb25lLCBtb3VzZQorICAgICAgICBldmVudHMgd2lsbCBiZSBn
ZW5lcmF0ZWQgYXMgYSBmYWxsYmFjay4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRp
dmVXZWJUb3VjaEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpuYXRpdmVFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6OnRvdWNoQ29udGV4dCk6
IEFkZCBHVEsrIGltcGxlbWVudGF0aW9uIG9mIE5hdGl2ZVdlYlRvdWNoRXZlbnQKKyAgICAgICAg
KiBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvdWNo
UGhhc2VGcm9tRXZlbnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJUb3VjaEV2ZW50KTogQWRkIG1ldGhvZHMgdG8gZ2VuZXJhdGUgTmF0aXZlV2ViVG91Y2hF
dmVudHMgb3V0CisgICAgICAgIG9mIEdka0V2ZW50VG91Y2ggZXZlbnRzLCBhIEd0a1RvdWNoQ29u
dGV4dEhlbHBlciBvYmplY3QgaXMgdXNlZCB0byBob2xkIGluZm9ybWF0aW9uIGFib3V0IGFsbCBj
dXJyZW50CisgICAgICAgIHRvdWNoZXMsIGluIG9yZGVyIHRvIGJ1aWxkIGluZm9ybWF0aW9uIGFi
b3V0IGFsbCBpbmRpdmlkdWFsIHRvdWNocG9pbnRzLgorICAgICAgICAqIFNoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2
ZW50KTogSW1wbGVtZW50IHBvaW50ZXIgZW11bGF0aW9uIGlmIHRoZSBwb2ludGVyIGVtdWxhdGlu
ZworICAgICAgICB0b3VjaCB3YXMgdW5oYW5kbGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKTogTGlz
dGVuIGZvciB0b3VjaCBldmVudHMKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hFdmVu
dCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KTogQWRkIGltcGxl
bWVudGF0aW9uIGZvciB0aGUgdG91Y2hfZXZlbnRzKCkgaGFuZGxlci4KKwogMjAxNC0wMi0wMyAg
S3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBCdWlsZCBm
aXggYWZ0ZXIgcjE2MzI4OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGU0N2Ey
OGIuLjk1MWNhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzg0LDYgKzM4
NCw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9M
YXllclRyZWVDb250ZXh0R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRp
dmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Q
cmludEluZm9HdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0YTg0YTky
Li4zODVhYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNTcsNiArNTcsNyBAQCBs
aXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJv
YXJkRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNw
cAogICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICBTaGFyZWQv
Z3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9H
dGsuY3BwCiAgICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAg
U2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC01NjYsNiArNTY3LDcgQEAgaWYgKEVO
QUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICAgICAgU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNw
cAogICAgICAgICBTaGFyZWQvV2ViTW91c2VFdmVudC5jcHAKICAgICAgICAgU2hhcmVkL1dlYldo
ZWVsRXZlbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAogCiAgICAgICAg
IFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCiAgICAgICAgIFNoYXJlZC9QbHVn
aW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtNTg0LDYgKzU4Niw3IEBAIGlmIChF
TkFCTEVfUExVR0lOX1BST0NFU1MpCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3Rr
LmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwCisgICAg
ICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVk
L2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgICAgIFNoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0
aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNo
RXZlbnQuaAppbmRleCAwZDRiMmNmLi42NDRhY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaWYgUExBVEZPUk0o
SU9TKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgVUlXZWJUb3VjaEV2
ZW50c0dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQotI2lmIFBM
QVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlx
dWVQdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgor
dHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAj
aW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNm
b3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDYsOCArNDgsMTIgQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKElPUykKICAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KFVJ
V2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAqKTsKICAgICBjb25zdCBVSVdlYlRvdWNo
RXZlbnRzR2VzdHVyZVJlY29nbml6ZXIqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9u
YXRpdmVFdmVudC5nZXQoKTsgfQotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExB
VEZPUk0oR1RLKQorICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hF
dmVudCYpOworICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQqLCBXZWJDb3JlOjpHdGtU
b3VjaENvbnRleHRIZWxwZXImKTsKKyAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBj
b25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6
R3RrVG91Y2hDb250ZXh0SGVscGVyJiB0b3VjaENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3Rv
dWNoQ29udGV4dDsgfQorI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIE5hdGl2ZVdlYlRvdWNoRXZl
bnQoRXdrVG91Y2hFdmVudCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwogICAg
IGNvbnN0IEV3a1RvdWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRp
dmVFdmVudC5nZXQoKTsgfQogI2VuZGlmCkBAIC01NSw4ICs2MSwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dl
c3R1cmVSZWNvZ25pemVyPiBtX25hdGl2ZUV2ZW50OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZM
KQorI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IG1fbmF0aXZl
RXZlbnQ7CisgICAgY29uc3QgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVyJiBtX3RvdWNo
Q29udGV4dDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBSZWZQdHI8RXdrVG91Y2hFdmVudD4g
bV9uYXRpdmVFdmVudDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmIyY2Q0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9y
Zz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYlRv
dWNoRXZlbnQuaCIKKworI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgPGdk
ay9nZGsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBXZWJDb3JlOjpHdGtUb3VjaENvbnRl
eHRIZWxwZXImIGNvbnRleHQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudCwgY29udGV4dCkpCisgICAgLCBtX25hdGl2ZUV2ZW50
KGdka19ldmVudF9jb3B5KGV2ZW50KSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGNvbnRleHQpCit7
Cit9CisKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0
aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCBldmVudC50b3Vj
aENvbnRleHQoKSkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50Lm5h
dGl2ZUV2ZW50KCkpKQorICAgICwgbV90b3VjaENvbnRleHQoZXZlbnQudG91Y2hDb250ZXh0KCkp
Cit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGNiODhhODIuLjBhMmJhYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxnZGsv
Z2RrLmg+CiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC0yMDMsNCArMjA0LDc3IEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKIH0KIAorI2lmbmRl
ZiBHVEtfQVBJX1ZFUlNJT05fMgorc3RhdGljIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQ
b2ludFN0YXRlIHRvdWNoUGhhc2VGcm9tRXZlbnRzKGNvbnN0IEdka0V2ZW50KiBjdXJyZW50LCBj
b25zdCBHZGtFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGdka19ldmVudF9nZXRfZXZlbnRfc2Vx
dWVuY2UoY3VycmVudCkgIT0gZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkpCisg
ICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKwor
ICAgIHN3aXRjaCAoY3VycmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToK
KyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAgICBj
YXNlIEdES19UT1VDSF9CRUdJTjoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hQcmVzc2VkOworICAgIGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgcmV0dXJu
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCBhcHBlbmRUb3VjaEV2ZW50KFZlY3RvcjxXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ+JiB0b3VjaFBvaW50TGlzdCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkKK3sKKyAgICB1aW50MzJfdCBp
ZGVudGlmaWVyID0gR1BPSU5URVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNl
KGV2ZW50KSk7CisKKyAgICBnZG91YmxlIHgsIHk7CisgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMo
ZXZlbnQsICZ4LCAmeSk7CisKKyAgICBnZG91YmxlIHhSb290LCB5Um9vdDsKKyAgICBnZGtfZXZl
bnRfZ2V0X3Jvb3RfY29vcmRzKGV2ZW50LCAmeFJvb3QsICZ5Um9vdCk7CisKKyAgICBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQgdG91Y2hQb2ludChpZGVudGlmaWVyLCBzdGF0ZSwgSW50UG9pbnQoeFJv
b3QsIHlSb290KSwgSW50UG9pbnQoeCwgeSkpOworICAgIHRvdWNoUG9pbnRMaXN0LnVuY2hlY2tl
ZEFwcGVuZCh0b3VjaFBvaW50KTsKK30KKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCitX
ZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBH
ZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91
Y2hDb250ZXh0KQoreworI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIFdlYkV2ZW50OjpU
eXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisgICAgVG91Y2hFdmVu
dHNNYXAgdG91Y2hFdmVudHMgPSB0b3VjaENvbnRleHQudG91Y2hFdmVudHMoKTsKKyAgICBpbnQg
bnVtRXZlbnRzID0gdG91Y2hFdmVudHMuc2l6ZSgpOworCisgICAgc3dpdGNoIChldmVudC0+dHlw
ZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX0JFR0lOOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6
OlRvdWNoU3RhcnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToK
KyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaE1vdmU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaEVuZDsK
KyAgICAgICAgKytudW1FdmVudHM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIFZlY3RvcjxXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRMaXN0OworICAgIHRvdWNoUG9pbnRMaXN0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobnVtRXZlbnRzKTsKKworICAgIGZvciAoYXV0byBpdCA9IHRvdWNoRXZl
bnRzLmJlZ2luKCk7IGl0ICE9IHRvdWNoRXZlbnRzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIEdk
a0V2ZW50ICpzdG9yZWRFdmVudCA9IGl0LT52YWx1ZTsKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVu
dCh0b3VjaFBvaW50TGlzdCwgc3RvcmVkRXZlbnQsIHRvdWNoUGhhc2VGcm9tRXZlbnRzKHN0b3Jl
ZEV2ZW50LCBldmVudCkpOworICAgIH0KKworICAgIC8vIFRvdWNoIHdhcyBhbHJlYWR5IHJlbW92
ZWQgZnJvbSB0aGUgR3RrVG91Y2hDb250ZXh0SGVscGVyLCBhZGQgaXQgaGVyZS4KKyAgICBpZiAo
ZXZlbnQtPnR5cGUgPT0gR0RLX1RPVUNIX0VORCkKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVudCh0
b3VjaFBvaW50TGlzdCwgZXZlbnQsIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNl
ZCk7CisKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCh0eXBlLCB0b3VjaFBvaW50TGlzdCwgbW9k
aWZpZXJzRm9yRXZlbnQoZXZlbnQpLCBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKKyNlbHNl
CisgICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQoKTsKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05f
MgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IDA4NTgxNWMuLmZjMzAyOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uUmVzdWx0
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+CiAKIHR5cGVk
ZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogCkBAIC0zOSw2ICs0MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2
ZW50KiwgaW50KTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50
KGNvbnN0IEdka0V2ZW50Kik7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9u
UmVzdWx0cyYpOworICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdlYlRvdWNoRXZlbnQo
Y29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDRiN2RhMWQuLjNkMDdkOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTMyNyw0ICszMjcsNTQgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6YmVnYW5F
eGl0RnVsbFNjcmVlbihjb25zdCBJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEludFIKIAog
I2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29s
IHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBpZiAod2FzRXZlbnRIYW5kbGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBFbXVsYXRlIHBvaW50ZXIgZXZlbnRzIGlmIHVuaGFuZGxlZC4KKyAg
ICBjb25zdCBHZGtFdmVudCogdG91Y2hFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50KCk7CisKKyAg
ICBpZiAoIXRvdWNoRXZlbnQtPnRvdWNoLmVtdWxhdGluZ19wb2ludGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBwb2ludGVyRXZlbnQ7CisKKyAgICBpZiAo
dG91Y2hFdmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfVVBEQVRFKSB7CisgICAgICAgIHBvaW50ZXJF
dmVudC5yZXNldChnZGtfZXZlbnRfbmV3KEdES19NT1RJT05fTk9USUZZKSk7CisgICAgICAgIHBv
aW50ZXJFdmVudC0+bW90aW9uLnRpbWUgPSB0b3VjaEV2ZW50LT50b3VjaC50aW1lOworICAgICAg
ICBwb2ludGVyRXZlbnQtPm1vdGlvbi54ID0gdG91Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAg
cG9pbnRlckV2ZW50LT5tb3Rpb24ueSA9IHRvdWNoRXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBv
aW50ZXJFdmVudC0+bW90aW9uLnhfcm9vdCA9IHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAg
ICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueV9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9y
b290OworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi5zdGF0ZSA9IHRvdWNoRXZlbnQtPnRv
dWNoLnN0YXRlIHwgR0RLX0JVVFRPTjFfTUFTSzsKKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0
Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICAgICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAg
ICAgICAgICAgcG9pbnRlckV2ZW50LnJlc2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9SRUxF
QVNFKSk7CisgICAgICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi5zdGF0ZSA9IHRvdWNoRXZl
bnQtPnRvdWNoLnN0YXRlIHwgR0RLX0JVVFRPTjFfTUFTSzsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAgICAgICAgICAgIHBvaW50ZXJFdmVudC5y
ZXNldChnZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUFJFU1MpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi5idXR0b24gPSAxOworICAg
ICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi50aW1lID0gdG91Y2hFdmVudC0+dG91Y2gudGltZTsK
KyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueCA9IHRvdWNoRXZlbnQtPnRvdWNoLng7Cisg
ICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnkgPSB0b3VjaEV2ZW50LT50b3VjaC55OworICAg
ICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3VjaC54X3Jv
b3Q7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnlfcm9vdCA9IHRvdWNoRXZlbnQtPnRv
dWNoLnlfcm9vdDsKKyAgICB9CisKKyAgICBnZGtfZXZlbnRfc2V0X2RldmljZShwb2ludGVyRXZl
bnQuZ2V0KCksIGdka19ldmVudF9nZXRfZGV2aWNlKHRvdWNoRXZlbnQpKTsKKyAgICBnZGtfZXZl
bnRfc2V0X3NvdXJjZV9kZXZpY2UocG9pbnRlckV2ZW50LmdldCgpLCBnZGtfZXZlbnRfZ2V0X3Nv
dXJjZV9kZXZpY2UodG91Y2hFdmVudCkpOworICAgIHBvaW50ZXJFdmVudC0+YW55LndpbmRvdyA9
IEdES19XSU5ET1coZ19vYmplY3RfcmVmKHRvdWNoRXZlbnQtPmFueS53aW5kb3cpKTsKKyAgICBw
b2ludGVyRXZlbnQtPmFueS5zZW5kX2V2ZW50ID0gVFJVRTsKKworICAgIGd0a193aWRnZXRfZXZl
bnQobV92aWV3V2lkZ2V0LCBwb2ludGVyRXZlbnQuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCmluZGV4IDk2M2MyY2UuLjBkNjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtMTE5LDYgKzExOSw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2FuRXhpdEZ1bGxTY3JlZW4oY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaW5h
bEZyYW1lKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQp
IG92ZXJyaWRlOworCiAgICAgLy8gTWVtYmVycyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFzcwogICAg
IEd0a1dpZGdldCogbV92aWV3V2lkZ2V0OwogICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3Vu
ZG9Db250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGQ0ZDMwMTguLjRhNGU4MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a0NsaWNrQ291bnRlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrRHJhZ0FuZERyb3BIZWxwZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29u
dGV4dEhlbHBlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgpAQCAtMTEwLDYgKzExMSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlIHsKICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50OwogICAgIFdl
YkNvbnRleHRNZW51UHJveHlHdGsqIGFjdGl2ZUNvbnRleHRNZW51UHJveHk7CiAgICAgV2ViVmll
d0Jhc2VJbnB1dE1ldGhvZEZpbHRlciBpbnB1dE1ldGhvZEZpbHRlcjsKKyAgICBHdGtUb3VjaENv
bnRleHRIZWxwZXIgdG91Y2hDb250ZXh0OwogCiAgICAgR3RrV2luZG93KiB0b3BsZXZlbE9uU2Ny
ZWVuV2luZG93OwogICAgIHVuc2lnbmVkIGxvbmcgdG9wbGV2ZWxSZXNpemVHcmlwVmlzaWJpbGl0
eUlEOwpAQCAtMjcyLDcgKzI3NCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVh
bGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKICAgICAgICAgfCBHREtfQlVUVE9OX01PVElPTl9NQVNL
CiAgICAgICAgIHwgR0RLX0JVVFRPTjFfTU9USU9OX01BU0sKICAgICAgICAgfCBHREtfQlVUVE9O
Ml9NT1RJT05fTUFTSwotICAgICAgICB8IEdES19CVVRUT04zX01PVElPTl9NQVNLOworICAgICAg
ICB8IEdES19CVVRUT04zX01PVElPTl9NQVNLCisgICAgICAgIHwgR0RLX1RPVUNIX01BU0s7CiAK
ICAgICBnaW50IGF0dHJpYnV0ZXNNYXNrID0gR0RLX1dBX1ggfCBHREtfV0FfWSB8IEdES19XQV9W
SVNVQUw7CiAKQEAgLTcxMiw2ICs3MTUsMTkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW8KICAg
ICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlVG91
Y2hFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRUb3VjaCogZXZlbnQpCit7CisgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lk
Z2V0KS0+cHJpdjsKKworICAgIGlmIChwcml2LT5hdXRoZW50aWNhdGlvbkRpYWxvZykKKyAgICAg
ICAgcmV0dXJuIFRSVUU7CisKKyAgICBwcml2LT50b3VjaENvbnRleHQuaGFuZGxlRXZlbnQocmVp
bnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5o
YW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtF
dmVudCo+KGV2ZW50KSwgcHJpdi0+dG91Y2hDb250ZXh0KSk7CisKKyAgICByZXR1cm4gVFJVRTsK
K30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlUXVlcnlUb29sdGlwKEd0a1dp
ZGdldCogd2lkZ2V0LCBnaW50IHgsIGdpbnQgeSwgZ2Jvb2xlYW4ga2V5Ym9hcmRNb2RlLCBHdGtU
b29sdGlwKiB0b29sdGlwKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXY7CkBAIC04OTYsNiArOTEyLDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3
QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICB3aWRnZXRDbGFzcy0+YnV0dG9uX3JlbGVhc2Vf
ZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblJlbGVhc2VFdmVudDsKICAgICB3aWRnZXRD
bGFzcy0+c2Nyb2xsX2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VTY3JvbGxFdmVudDsKICAgICB3
aWRnZXRDbGFzcy0+bW90aW9uX25vdGlmeV9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlTW90aW9u
Tm90aWZ5RXZlbnQ7CisgICAgd2lkZ2V0Q2xhc3MtPnRvdWNoX2V2ZW50ID0gd2Via2l0V2ViVmll
d0Jhc2VUb3VjaEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5xdWVyeV90b29sdGlwID0gd2Via2l0
V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXA7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICB3
aWRnZXRDbGFzcy0+ZHJhZ19lbmQgPSB3ZWJraXRXZWJWaWV3QmFzZURyYWdFbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQgYi9Tb3VyY2UvYXV0
b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKaW5kZXggYzhiZjBkYi4uYTkyNDBjNiAxMDA2
NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CisrKyBiL1Nv
dXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNApAQCAtMTY3LDcgKzE2Nyw3IEBA
ICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVmaW5lcy1maWxlcyAkQ09ORklH
VVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBcCiAgICAgRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQ9MSBc
CiAgICAgRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQz0xXAogICAgIEVOQUJMRV9U
RVhUX0FVVE9TSVpJTkc9MCBcCi0gICAgRU5BQkxFX1RPVUNIX0VWRU5UUz0wIFwKKyAgICBFTkFC
TEVfVE9VQ0hfRVZFTlRTPTEgXAogICAgIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MCBcCiAg
ICAgRU5BQkxFX1VTRVJfVElNSU5HPTAgXAogICAgIEVOQUJMRV9WSUJSQVRJT049MCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlCmluZGV4IGNhN2U4MTQuLjMxMTE4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
CkBAIC02Niw3ICs2Niw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9TSEFET1dfRE9NIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9TSEFSRURfV09SS0VSUyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9TUEVMTENIRUNLIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1RFTVBMQVRFX0VMRU1FTlQgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfVVNFUlNFTEVDVF9BTEwgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfVklCUkFUSU9OIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9WSURFTyBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0MzQ1ZjFiLi42Y2NmMTM5IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMTIt
MjQgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtd
IEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAg
ICAgICAoV1RSOjp1cGRhdGVFdmVudENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6Y3JlYXRlVG91Y2hFdmVudCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp1
cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2VuZFVw
ZGF0ZWRUb3VjaEV2ZW50cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRv
dWNoUG9pbnRSYWRpdXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpzZXRUb3Vj
aE1vZGlmaWVyKTogSW1wbGVtZW50IHRvdWNoIGV2ZW50IHByb3h5aW5nLgorCiAyMDE0LTAxLTMw
ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBF
bnN1cmUgZ2VuZXJhdGVkIGV2ZW50cyBoYXZlIGdpdmVuIG1vZGlmaWVycyBHREsgdW5kZXJzdGFu
ZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDU4MjYwMjcu
LmMwY2I0NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApAQCAt
OTEyLDYgKzkxMiwxMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzY2hlZHVsZUFzeW5jaHJvbm91c0tl
eURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYgogICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJU
b3VjaFBvaW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0YXRp
Y0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAgIHsgIm1vdXNlU2Nyb2xsQnkiLCBt
b3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJjb250aW51b3VzTW91c2VTY3Jv
bGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBkZDg5ZjQxLi4xZTI2M2I3IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC00MzIsNyArNDMyLDcgQEAg
bXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJXVEZfVVNFX1RJTEVEX0JBQ0tJTkdf
U1RPUkUiLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZhbHVlID0+IFwkdGlsZWRCYWNraW5nU3RvcmVT
dXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtZXZlbnRzIiwgZGVzYyA9PiAiVG9n
Z2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNI
X0VWRU5UUyIsIGRlZmF1bHQgPT4gKGlzSU9TV2ViS2l0KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+
IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9F
VkVOVFMiLCBkZWZhdWx0ID0+IChpc0lPU1dlYktpdCgpIHx8IGlzRWZsKCkgfHwgaXNHdGsoKSks
IHZhbHVlID0+IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidG91
Y2gtc2xpZGVyIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIFNsaWRlciBzdXBwb3J0IiwKICAgICAg
IGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX1NMSURFUiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4g
XCR0b3VjaFNsaWRlclN1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKaW5kZXggNWQzYTA0OC4uOGZkYzdiOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9FdmVudFNlbmRlclByb3h5LmgKQEAgLTI4LDYgKzI4LDggQEAKICNkZWZpbmUgRXZlbnRTZW5k
ZXJQcm94eV9oCiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNs
dWRlIDxnZGsvZ2RrLmg+CkBAIC05MCw2ICs5Miw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIHZvaWQgc2VuZE9yUXVldWVFdmVudChHZGtFdmVudCopOwogICAgIEdka0V2ZW50
KiBjcmVhdGVNb3VzZUJ1dHRvbkV2ZW50KEdka0V2ZW50VHlwZSwgdW5zaWduZWQgYnV0dG9uLCBX
S0V2ZW50TW9kaWZpZXJzKTsKKyAgICBHZGtFdmVudCogY3JlYXRlVG91Y2hFdmVudChHZGtFdmVu
dFR5cGUsIGludCBpZCk7CisgICAgdm9pZCBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7CiAjZWxp
ZiBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KGNvbnN0IFdUUkV2ZW50
Jik7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7CkBAIC0xMTAsNiAr
MTE0LDggQEAgcHJpdmF0ZToKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBEZXF1ZTxXVFJFdmVu
dFF1ZXVlSXRlbT4gbV9ldmVudFF1ZXVlOwogICAgIHVuc2lnbmVkIG1fbW91c2VCdXR0b25DdXJy
ZW50bHlEb3duOworICAgIFZlY3RvcjxHZGtFdmVudCo+IG1fdG91Y2hFdmVudHM7CisgICAgSGFz
aE1hcDxHZGtFdmVudCosIGludD4gbV91cGRhdGVkVG91Y2hFdmVudHM7CiAjZWxpZiBQTEFURk9S
TShFRkwpCiAgICAgRGVxdWU8V1RSRXZlbnQ+IG1fZXZlbnRRdWV1ZTsKICAgICBXS0V2ZW50TW91
c2VCdXR0b24gbV9tb3VzZUJ1dHRvbjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggNDBmNjU5ZS4uZjhmNzMyMSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFdmVudFNl
bmRlclByb3h5LmgiCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8
Z2RrL2dka2tleXN5bXMuaD4KQEAgLTQ0MSw0ICs0NDIsMTIzIEBAIHZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKICAgICBtX3RpbWUgKz0gbWlsbGlz
ZWNvbmRzIC8gMTAwMC4wOwogfQogCit2b2lkIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoR2RrRXZl
bnQqIHRvdWNoRXZlbnQsIGludCB4LCBpbnQgeSkKK3sKKyAgICB0b3VjaEV2ZW50LT50b3VjaC54
ID0geDsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC55ID0geTsKKworICAgIGludCB4Um9vdCwgeVJv
b3Q7CisgICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHModG91Y2hFdmVudC0+dG91Y2gud2lu
ZG93LCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueF9yb290
ID0geFJvb3Q7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueV9yb290ID0geVJvb3Q7Cit9CisKK0dk
a0V2ZW50KiBFdmVudFNlbmRlclByb3h5OjpjcmVhdGVUb3VjaEV2ZW50KEdka0V2ZW50VHlwZSBl
dmVudFR5cGUsIGludCBpZCkKK3sKKyAgICBHZGtFdmVudCogdG91Y2hFdmVudCA9IGdka19ldmVu
dF9uZXcoZXZlbnRUeXBlKTsKKworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnNlcXVlbmNlID0gKEdk
a0V2ZW50U2VxdWVuY2UqKSBHSU5UX1RPX1BPSU5URVIoaWQpOworICAgIHRvdWNoRXZlbnQtPnRv
dWNoLndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKG1fdGVzdENvbnRy
b2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSk7CisgICAgZ19vYmplY3RfcmVm
KHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdyk7CisgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UodG91
Y2hFdmVudCwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxh
eV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheSh0b3VjaEV2ZW50LT5i
dXR0b24ud2luZG93KSkpKTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC50aW1lID0gR0RLX0NVUlJF
TlRfVElNRTsKKworICAgIHJldHVybiB0b3VjaEV2ZW50OworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIEdka0V2ZW50KiBldmVu
dCA9IGNyZWF0ZVRvdWNoRXZlbnQoKEdka0V2ZW50VHlwZSkgR0RLX1RPVUNIX0JFR0lOLCBtX3Rv
dWNoRXZlbnRzLnNpemUoKSArIDEpOworICAgIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoZXZlbnQs
IHgsIHkpOworICAgIG1fdG91Y2hFdmVudHMuYXBwZW5kKGV2ZW50KTsKKyAgICBtX3VwZGF0ZWRU
b3VjaEV2ZW50cy5hZGQoZXZlbnQsIEdQT0lOVEVSX1RPX0lOVChldmVudC0+dG91Y2guc2VxdWVu
Y2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KGludCBp
bmRleCwgaW50IHgsIGludCB5KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwg
bV90b3VjaEV2ZW50cy5zaXplKCkpOworCisgICAgR2RrRXZlbnQqIGV2ZW50ID0gbV90b3VjaEV2
ZW50c1tpbmRleF07CisgICAgQVNTRVJUKGV2ZW50KTsKKworICAgIGV2ZW50LT50eXBlID0gR0RL
X1RPVUNIX1VQREFURTsKKyAgICB1cGRhdGVFdmVudENvb3JkaW5hdGVzKGV2ZW50LCB4LCB5KTsK
KyAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5hZGQoZXZlbnQsIEdQT0lOVEVSX1RPX0lOVChldmVu
dC0+dG91Y2guc2VxdWVuY2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kVXBk
YXRlZFRvdWNoRXZlbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3VwZGF0ZWRUb3VjaEV2
ZW50cy5iZWdpbigpOyBpdCAhPSBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5lbmQoKTsgKytpdCkKKyAg
ICAgICAgc2VuZE9yUXVldWVFdmVudChnZGtfZXZlbnRfY29weShpdC0+a2V5KSk7CisKKyAgICBt
X3VwZGF0ZWRUb3VjaEV2ZW50cy5jbGVhcigpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnRvdWNoU3RhcnQoKQoreworICAgIHNlbmRVcGRhdGVkVG91Y2hFdmVudHMoKTsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUoKQoreworICAgIHNlbmRVcGRhdGVkVG91Y2hF
dmVudHMoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCgpCit7CisgICAg
c2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRv
dWNoQ2FuY2VsKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMoKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgbV90b3VjaEV2ZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgZ2RrX2V2ZW50X2Zy
ZWUobV90b3VjaEV2ZW50c1tpXSk7CisgICAgbV90b3VjaEV2ZW50cy5jbGVhcigpOworICAgIG1f
dXBkYXRlZFRvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
cmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYm
IGluZGV4IDwgbV90b3VjaEV2ZW50cy5zaXplKCkpOworCisgICAgR2RrRXZlbnQqIGV2ZW50ID0g
bV90b3VjaEV2ZW50c1tpbmRleF07CisgICAgZXZlbnQtPnR5cGUgPSBHREtfVE9VQ0hfRU5EOwor
ICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmFkZChldmVudCwgR1BPSU5URVJfVE9fSU5UKGV2ZW50
LT50b3VjaC5zZXF1ZW5jZSkpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRv
dWNoUG9pbnQoaW50IGluZGV4KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hQb2ludFJhZGl1cyhpbnQgcmFkaXVzWCwgaW50IHJh
ZGl1c1kpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclBy
b3h5OjpzZXRUb3VjaE1vZGlmaWVyKFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXIsIGJvb2wgZW5h
YmxlKQoreworICAgIGd1aW50IHN0YXRlID0gd2Via2l0TW9kaWZpZXJzVG9HREtNb2RpZmllcnMo
bW9kaWZpZXIpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtX3RvdWNoRXZl
bnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEdka0V2ZW50KiBldmVudCA9IG1fdG91Y2hFdmVu
dHNbaV07CisKKyAgICAgICAgaWYgKGV2ZW50LT50eXBlID09IEdES19UT1VDSF9FTkQpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZW5hYmxlKQorICAgICAgICAgICAgZXZl
bnQtPnRvdWNoLnN0YXRlIHw9IHN0YXRlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVu
dC0+dG91Y2guc3RhdGUgJj0gfihzdGF0ZSk7CisKKyAgICAgICAgbV91cGRhdGVkVG91Y2hFdmVu
dHMuYWRkKGV2ZW50LCBHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRvdWNoLnNlcXVlbmNlKSk7Cisg
ICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223096</attachid>
            <date>2014-02-04 04:10:05 -0800</date>
            <delta_ts>2014-02-04 08:19:41 -0800</delta_ts>
            <desc>patch, fixing style...</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>42204</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1MjY1MWJjLi5kYzUwZjIx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAg
ICAgIFtHVEtdIEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0
dXJlcy5tNDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZTogc2V0IEVO
QUJMRV9UT1VDSF9FVkVOVFMgdG8gMSBpZiBidWlsZGluZyB3aXRoIEdUSysuCisKIDIwMTQtMDEt
MzEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIExFR0FDWV9WSUVXUE9SVF9BREFQVElPTgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA2ZjI1NGYuLjZjNDMzMzkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMi0yNCAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9z
Z0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gRW5hYmxlIHRvdWNoIGZlYXR1cmVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnM6IHJlbW92ZSBmYXN0L2V2ZW50cy90b3VjaAorICAgICAgICAqIHBs
YXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9uczogQWRkIG5ldyBleHBlY3RhdGlvbnMgb24K
KyAgICAgICAgZmFzdC9ldmVudHMvdG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTAzICBLcnp5c3p0
b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIEV4cG9zZSBh
cmlhLWNvbnRyb2xzIHRocm91Z2ggQVRLX1JFTEFUSU9OX0NPTlRST0xMRVJfRk9SCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzVhNjM1ZC4u
OTE0NjI4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTg2LDYgKzE4NiwyNSBAQCB3ZWJraXQub3JnL2IvODU0NjMgZWRpdGluZy9pbnNl
cnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9yZS1VUkwuaAogd2Via2l0
Lm9yZy9iLzEyMDQwMSBmYXN0L2V2ZW50cyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEyMDQwMSBl
ZGl0aW5nL3NlbGVjdGlvbiBbIFNraXAgXQogCitmYXN0L2V2ZW50cy90b3VjaCBbIFBhc3MgXQor
CisjIFRlc3RzIGluIHRoZSBnZXN0dXJlIGZvbGRlciBleGVyY2lzZSBJT1Mtc3BlY2lmaWMgY29k
ZSwgbm9uIGFwcGxpYWJsZSB0byBHVEsrCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlIFsgU2tp
cCBdCisKKyMgVGhlc2UgdGVzdHMgcmVseSBvbiB0b3VjaCBldmVudCBncm91cGluZywgd2hpY2gg
WDExL0dUSysgZG9lc24ndCBkbyBieSBkZXNpZ24KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9l
dmVudHMvdG91Y2gvYmFzaWMtbXVsdGktdG91Y2gtZXZlbnRzLWxpbWl0ZWQuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10
b3VjaC1ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2
ZW50cy90b3VjaC90b3VjaC1pbnB1dC1lbGVtZW50LWNoYW5nZS1kb2N1bWVudHMuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9mcmFtZS1ob3Zl
ci11cGRhdGUuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50
cy90b3VjaC9tdWx0aS10b3VjaC1ncm91cGVkLXRhcmdldHMuaHRtbCBbIFRpbWVvdXQgRmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWlu
c2lkZS1uZXN0ZWQtaWZyYW1lcy5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcy
IGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWluc2lkZS1pZnJhbWVzLmh0bWwgWyBUaW1l
b3V0IF0KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xl
LXRvdWNoLWV2ZW50cy5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3Qv
ZXZlbnRzL3RvdWNoL3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBbIFRpbWVv
dXQgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQu
aHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90
b3VjaC10YXJnZXQtbGltaXRlZC5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcy
IGZhc3QvZXZlbnRzL3RvdWNoL3NlbmQtb25jYW5jZWwtZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQor
CiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgRXhwZWN0ZWQgZmFp
bHVyZXMKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDU2Mzc1N2MuLjM5NGQ5MDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNTMsOSArMTUzLDYgQEAg
d2Via2l0Lm9yZy9iLzk4OTI3IGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uIFsgU2tpcCBdCiB3
ZWJraXQub3JnL2IvNjExNDAgZmFzdC9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvNjExNDAgaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiAKLSMgVGhlc2UgdGVz
dHMgcmVxdWlyZSB0b3VjaCBzdXBwb3J0Lgotd2Via2l0Lm9yZy9iLzk4OTMxIGZhc3QvZXZlbnRz
L3RvdWNoIFsgU2tpcCBdCi0KICMgU3RvcmFnZVRyYWNrZXIgaXMgbm90IGVuYWJsZWQuCiB3ZWJr
aXQub3JnL2IvOTg5MzMgc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJh
Y2tlciBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY0YTFiOC4uOWZkYWJkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3Nn
QGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29k
ZSB0byBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0cyBpbiBmYXN0L2V2ZW50cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsrIG5v
dyB0aGF0IHRvdWNoCisgICAgICAgIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVzIGFs
bCBleHBlY3RlZCBiaXRzIGFyZSB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtU
b3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENv
bnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9pbnRz
LCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0ZWQg
Y29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBub3cg
dGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTAzICBLcnp5c3p0
b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIEV4cG9zZSBh
cmlhLWNvbnRyb2xzIHRocm91Z2ggQVRLX1JFTEFUSU9OX0NPTlRST0xMRVJfRk9SCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzMWQ0NDJhLi4zZmJmZTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMwMDEsOCArMzAwMSwxMSBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0Tm9kZVRyYXZlcnNhbC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0Tm9kZVRyYXZlcnNhbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVG91Y2guaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFu
c2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCBcCkBAIC02MTkwLDYgKzYxOTMsOCBAQCBwbGF0Zm9ybWd0
a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRo
b2RGaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BvcHVwTWVudS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1ZlcnNpb25pbmcuYyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGI1
OGVlN2YuLjA5ZWQzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xOTgsNiArMTk4
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAK
ICAgICBwbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9w
SGVscGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAKICAg
ICBwbGF0Zm9ybS9ndGsvR3RrUGx1Z2luV2lkZ2V0LmNwcApAQCAtMjEyLDYgKzIxMyw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL01h
aW5GcmFtZVNjcm9sbGJhckd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKyAgICBwbGF0Zm9ybS9n
dGsvUGxhdGZvcm1Ub3VjaEV2ZW50R3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0
ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCkBAIC01MjcsNiAr
NTI5LDcgQEAgaWYgKEVOQUJMRV9XRUJLSVQyKQogICAgICAgICBkb20vUmFuZ2UuaWRsCiAgICAg
ICAgIGRvbS9TaGFkb3dSb290LmlkbAogICAgICAgICBkb20vVGV4dC5pZGwKKyAgICAgICAgZG9t
L1RvdWNoLmlkbAogICAgICAgICBkb20vVHJlZVdhbGtlci5pZGwKICAgICAgICAgZG9tL1VJRXZl
bnQuaWRsCiAgICAgICAgIGRvbS9XZWJLaXROYW1lZEZsb3cuaWRsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQppbmRleCBiZDM2NDNmLi5kY2EzNzYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0K
QEAgLTI2Miw2ICsyNjIsOCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NU3R5bGVTaGVldFByaXZhdGUuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHQuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTVRvdWNoLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTVRvdWNoUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVGltZVJhbmdlcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UaW1lUmFuZ2VzUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0
RE9NVHJlZVdhbGtlci5jcHAgXApAQCAtMzIzLDYgKzMyNSw3IEBAIHdlYmtpdGd0a19nZG9tX2J1
aWx0X2hfYXBpICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01S
YW5nZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5oIFwKKwlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2guaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyZWVXYWxrZXIuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTVVJRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTUJsb2IuaCBcCkBAIC00MzIsNiArNDM1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRf
aF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS93ZWJraXRkb20uaCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMuaAogCisKIGlmIEVOQUJMRV9W
SURFTwogd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3ltYm9scyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMKaW5kZXggOWUyYmQ1Yi4uMjFiNDQ5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3lt
Ym9scworKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1i
b2xzCkBAIC0xNjYyLDYgKzE2NjIsMTggQEAgZ2xvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9n
ZXRfd2hlZWxfZGVsdGFfeChXZWJLaXRET01XaGVlbEV2ZW50KikKIGdsb25nIHdlYmtpdF9kb21f
d2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhX3koV2ViS2l0RE9NV2hlZWxFdmVudCopCiBnbG9u
ZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YShXZWJLaXRET01XaGVlbEV2
ZW50KikKIGdib29sZWFuIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3dlYmtpdF9kaXJlY3Rp
b25faW52ZXJ0ZWRfZnJvbV9kZXZpY2UoV2ViS2l0RE9NV2hlZWxFdmVudCopCitXZWJLaXRET01F
dmVudFRhcmdldCogd2Via2l0X2RvbV90b3VjaF9nZXRfdGFyZ2V0KFdlYktpdERPTVRvdWNoKikK
K2dmbG9hdCB3ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfZm9yY2UoV2ViS2l0RE9NVG91Y2gq
KQorZ2Zsb2F0IHdlYmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9yb3RhdGlvbl9hbmdsZShXZWJL
aXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9jbGllbnRfeChXZWJLaXRE
T01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9jbGllbnRfeShXZWJLaXRET01U
b3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9wYWdlX3goV2ViS2l0RE9NVG91Y2gq
KQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfcGFnZV95KFdlYktpdERPTVRvdWNoKikKK2ds
b25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl94KFdlYktpdERPTVRvdWNoKikKK2dsb25n
IHdlYmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl95KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdl
YmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9yYWRpdXNfeChXZWJLaXRET01Ub3VjaCopCitnbG9u
ZyB3ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfcmFkaXVzX3koV2ViS2l0RE9NVG91Y2gqKQor
Z3Vsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X2lkZW50aWZpZXIoV2ViS2l0RE9NVG91Y2gqKQog
Z2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2lkKFdlYktpdERPTUF1ZGlvVHJhY2sq
KQogZ2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2tpbmQoV2ViS2l0RE9NQXVkaW9U
cmFjayopCiBnY2hhciogd2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfbGFiZWwoV2ViS2l0RE9N
QXVkaW9UcmFjayopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VG91Y2hDb250ZXh0SGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtU
b3VjaENvbnRleHRIZWxwZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljg4MDBlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrVG91Y2hDb250ZXh0SGVscGVyLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHdGtUb3VjaENvbnRleHRIZWxwZXIu
aCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHdGtU
b3VjaENvbnRleHRIZWxwZXI6On5HdGtUb3VjaENvbnRleHRIZWxwZXIoKQoreworICAgIGZvciAo
YXV0byBpdCA9IG1fdG91Y2hFdmVudHMuYmVnaW4oKTsgaXQgIT0gbV90b3VjaEV2ZW50cy5lbmQo
KTsgKytpdCkKKyAgICAgICAgZ2RrX2V2ZW50X2ZyZWUoaXQtPnZhbHVlKTsKKyAgICBtX3RvdWNo
RXZlbnRzLmNsZWFyKCk7Cit9CisKK2Jvb2wgR3RrVG91Y2hDb250ZXh0SGVscGVyOjpoYW5kbGVF
dmVudChHZGtFdmVudCogdG91Y2hFdmVudCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIK
KyAgICB1aW50MzJfdCBzZXF1ZW5jZSA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9l
dmVudF9zZXF1ZW5jZSh0b3VjaEV2ZW50KSk7CisKKyAgICBHZGtFdmVudCogZXZlbnQgPSBtX3Rv
dWNoRXZlbnRzLnRha2Uoc2VxdWVuY2UpOworICAgIGlmIChldmVudCkKKyAgICAgICAgZ2RrX2V2
ZW50X2ZyZWUoZXZlbnQpOworCisgICAgc3dpdGNoICh0b3VjaEV2ZW50LT50eXBlKSB7CisgICAg
Y2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOgorICAgICAg
ICBtX3RvdWNoRXZlbnRzLnNldChzZXF1ZW5jZSwgZ2RrX2V2ZW50X2NvcHkodG91Y2hFdmVudCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8g
R1RLX0FQSV9WRVJTSU9OXzIKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91
Y2hDb250ZXh0SGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hD
b250ZXh0SGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIyNGFl
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3Vj
aENvbnRleHRIZWxwZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gKKyNkZWZpbmUgR3RrVG91Y2hDb250ZXh0SGVscGVy
X2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisKK3R5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3R5cGVkZWYgSGFzaE1hcDx1aW50MzJfdCwgR2RrRXZlbnQqPiBUb3VjaEV2ZW50
c01hcDsKKworY2xhc3MgR3RrVG91Y2hDb250ZXh0SGVscGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHdGtUb3VjaENvbnRleHRIZWxwZXIpOworcHVibGljOgorICAgIEd0a1RvdWNoQ29u
dGV4dEhlbHBlcigpIHsgfTsKKyAgICB+R3RrVG91Y2hDb250ZXh0SGVscGVyKCk7CisKKyAgICBi
b29sIGhhbmRsZUV2ZW50KEdka0V2ZW50Kik7CisgICAgY29uc3QgVG91Y2hFdmVudHNNYXAmIHRv
dWNoRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEV2ZW50czsgfTsKKworcHJpdmF0ZToK
KyAgICBUb3VjaEV2ZW50c01hcCBtX3RvdWNoRXZlbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBiZWZjZWFkLi43OGZkYmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTItMjMgIENhcmxvcyBHYXJu
YWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtdIEFsbG93IGJ1aWxkaW5n
IHdpdGggdG91Y2ggZXZlbnRzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRXZlbiB0aG91Z2ggV2ViS2l0MSBHVEsgY29kZSBkb2Vzbid0IGlt
cGxlbWVudCB0b3VjaCBldmVudHMsCisgICAgICAgIEZpeCBidWlsZCBpZiBFTkFCTEVfVE9VQ0hf
RVZFTlRTIGlzIHByZXNlbnQgZm9yIFdLMi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6Om5lZWRUb3Vj
aEV2ZW50cyk6IEFkZCBlbXB0eSBzdHViCisKIDIwMTQtMDEtMzEgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeGluZyB0aGUgR1RL
IGJ1aWxkIGFmdGVyIHIxNjMyMzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDFkZTdmMmYuLjY0YTA5MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBA
IC0xNDMsNiArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAjZW5kaWYKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCkgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgeyB9CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiwgR3JhcGhpY3NMYXll
ciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDAwNTNlOWMuLjVlNWZiMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNSBAQAorMjAxMy0xMi0yMyAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9zZ0Bnbm9t
ZS5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHN1cHBvcnQgdG91Y2ggZXZlbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEdUSysgPj0g
My40LjAsIEdka0V2ZW50VG91Y2ggaXMgYXZhaWxhYmxlIHRvIGluZm9ybSBhYm91dCBtdWx0aXRv
dWNoIGV2ZW50cy4gVXNlIHRoZXNlIHRvIGltcGxlbWVudAorICAgICAgICB0b3VjaCBldmVudHMg
b24gdGhpcyBwbGF0Zm9ybS4gSWYgYSB0b3VjaCBpcyBsZWZ0IHVuaGFuZGxlZCBhbmQgaXMgdGhl
ICJwb2ludGVyIGVtdWxhdGluZyIgb25lLCBtb3VzZQorICAgICAgICBldmVudHMgd2lsbCBiZSBn
ZW5lcmF0ZWQgYXMgYSBmYWxsYmFjay4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRp
dmVXZWJUb3VjaEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpuYXRpdmVFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6OnRvdWNoQ29udGV4dCk6
IEFkZCBHVEsrIGltcGxlbWVudGF0aW9uIG9mIE5hdGl2ZVdlYlRvdWNoRXZlbnQKKyAgICAgICAg
KiBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvdWNo
UGhhc2VGcm9tRXZlbnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJUb3VjaEV2ZW50KTogQWRkIG1ldGhvZHMgdG8gZ2VuZXJhdGUgTmF0aXZlV2ViVG91Y2hF
dmVudHMgb3V0CisgICAgICAgIG9mIEdka0V2ZW50VG91Y2ggZXZlbnRzLCBhIEd0a1RvdWNoQ29u
dGV4dEhlbHBlciBvYmplY3QgaXMgdXNlZCB0byBob2xkIGluZm9ybWF0aW9uIGFib3V0IGFsbCBj
dXJyZW50CisgICAgICAgIHRvdWNoZXMsIGluIG9yZGVyIHRvIGJ1aWxkIGluZm9ybWF0aW9uIGFi
b3V0IGFsbCBpbmRpdmlkdWFsIHRvdWNocG9pbnRzLgorICAgICAgICAqIFNoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2
ZW50KTogSW1wbGVtZW50IHBvaW50ZXIgZW11bGF0aW9uIGlmIHRoZSBwb2ludGVyIGVtdWxhdGlu
ZworICAgICAgICB0b3VjaCB3YXMgdW5oYW5kbGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKTogTGlz
dGVuIGZvciB0b3VjaCBldmVudHMKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hFdmVu
dCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KTogQWRkIGltcGxl
bWVudGF0aW9uIGZvciB0aGUgdG91Y2hfZXZlbnRzKCkgaGFuZGxlci4KKwogMjAxNC0wMi0wMyAg
S3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBCdWlsZCBm
aXggYWZ0ZXIgcjE2MzI4OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGU0N2Ey
OGIuLjk1MWNhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzg0LDYgKzM4
NCw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9M
YXllclRyZWVDb250ZXh0R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRp
dmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Q
cmludEluZm9HdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0YTg0YTky
Li4zODVhYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNTcsNiArNTcsNyBAQCBs
aXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJv
YXJkRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNw
cAogICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICBTaGFyZWQv
Z3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9H
dGsuY3BwCiAgICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAg
U2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC01NjYsNiArNTY3LDcgQEAgaWYgKEVO
QUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICAgICAgU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNw
cAogICAgICAgICBTaGFyZWQvV2ViTW91c2VFdmVudC5jcHAKICAgICAgICAgU2hhcmVkL1dlYldo
ZWVsRXZlbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAogCiAgICAgICAg
IFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCiAgICAgICAgIFNoYXJlZC9QbHVn
aW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtNTg0LDYgKzU4Niw3IEBAIGlmIChF
TkFCTEVfUExVR0lOX1BST0NFU1MpCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3Rr
LmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwCisgICAg
ICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVk
L2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgICAgIFNoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0
aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNo
RXZlbnQuaAppbmRleCAwZDRiMmNmLi42NDRhY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaWYgUExBVEZPUk0o
SU9TKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgVUlXZWJUb3VjaEV2
ZW50c0dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQotI2lmIFBM
QVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlx
dWVQdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgor
dHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAj
aW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNm
b3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDYsOCArNDgsMTIgQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKElPUykKICAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KFVJ
V2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAqKTsKICAgICBjb25zdCBVSVdlYlRvdWNo
RXZlbnRzR2VzdHVyZVJlY29nbml6ZXIqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9u
YXRpdmVFdmVudC5nZXQoKTsgfQotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExB
VEZPUk0oR1RLKQorICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hF
dmVudCYpOworICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQqLCBXZWJDb3JlOjpHdGtU
b3VjaENvbnRleHRIZWxwZXImKTsKKyAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBj
b25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6
R3RrVG91Y2hDb250ZXh0SGVscGVyJiB0b3VjaENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3Rv
dWNoQ29udGV4dDsgfQorI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIE5hdGl2ZVdlYlRvdWNoRXZl
bnQoRXdrVG91Y2hFdmVudCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwogICAg
IGNvbnN0IEV3a1RvdWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRp
dmVFdmVudC5nZXQoKTsgfQogI2VuZGlmCkBAIC01NSw4ICs2MSwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dl
c3R1cmVSZWNvZ25pemVyPiBtX25hdGl2ZUV2ZW50OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZM
KQorI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IG1fbmF0aXZl
RXZlbnQ7CisgICAgY29uc3QgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVyJiBtX3RvdWNo
Q29udGV4dDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBSZWZQdHI8RXdrVG91Y2hFdmVudD4g
bV9uYXRpdmVFdmVudDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmIyY2Q0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9y
Zz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYlRv
dWNoRXZlbnQuaCIKKworI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgPGdk
ay9nZGsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBXZWJDb3JlOjpHdGtUb3VjaENvbnRl
eHRIZWxwZXImIGNvbnRleHQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudCwgY29udGV4dCkpCisgICAgLCBtX25hdGl2ZUV2ZW50
KGdka19ldmVudF9jb3B5KGV2ZW50KSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGNvbnRleHQpCit7
Cit9CisKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0
aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCBldmVudC50b3Vj
aENvbnRleHQoKSkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50Lm5h
dGl2ZUV2ZW50KCkpKQorICAgICwgbV90b3VjaENvbnRleHQoZXZlbnQudG91Y2hDb250ZXh0KCkp
Cit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGNiODhhODIuLmQxMGViNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxnZGsv
Z2RrLmg+CiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC0yMDMsNCArMjA0LDc3IEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKIH0KIAorI2lmbmRl
ZiBHVEtfQVBJX1ZFUlNJT05fMgorc3RhdGljIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQ
b2ludFN0YXRlIHRvdWNoUGhhc2VGcm9tRXZlbnRzKGNvbnN0IEdka0V2ZW50KiBjdXJyZW50LCBj
b25zdCBHZGtFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGdka19ldmVudF9nZXRfZXZlbnRfc2Vx
dWVuY2UoY3VycmVudCkgIT0gZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkpCisg
ICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKwor
ICAgIHN3aXRjaCAoY3VycmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToK
KyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAgICBj
YXNlIEdES19UT1VDSF9CRUdJTjoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hQcmVzc2VkOworICAgIGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgcmV0dXJu
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCBhcHBlbmRUb3VjaEV2ZW50KFZlY3RvcjxXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ+JiB0b3VjaFBvaW50TGlzdCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkKK3sKKyAgICB1aW50MzJfdCBp
ZGVudGlmaWVyID0gR1BPSU5URVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNl
KGV2ZW50KSk7CisKKyAgICBnZG91YmxlIHgsIHk7CisgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMo
ZXZlbnQsICZ4LCAmeSk7CisKKyAgICBnZG91YmxlIHhSb290LCB5Um9vdDsKKyAgICBnZGtfZXZl
bnRfZ2V0X3Jvb3RfY29vcmRzKGV2ZW50LCAmeFJvb3QsICZ5Um9vdCk7CisKKyAgICBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQgdG91Y2hQb2ludChpZGVudGlmaWVyLCBzdGF0ZSwgSW50UG9pbnQoeFJv
b3QsIHlSb290KSwgSW50UG9pbnQoeCwgeSkpOworICAgIHRvdWNoUG9pbnRMaXN0LnVuY2hlY2tl
ZEFwcGVuZCh0b3VjaFBvaW50KTsKK30KKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCitX
ZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBH
ZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91
Y2hDb250ZXh0KQoreworI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIFdlYkV2ZW50OjpU
eXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisgICAgVG91Y2hFdmVu
dHNNYXAgdG91Y2hFdmVudHMgPSB0b3VjaENvbnRleHQudG91Y2hFdmVudHMoKTsKKyAgICBpbnQg
bnVtRXZlbnRzID0gdG91Y2hFdmVudHMuc2l6ZSgpOworCisgICAgc3dpdGNoIChldmVudC0+dHlw
ZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX0JFR0lOOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6
OlRvdWNoU3RhcnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToK
KyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaE1vdmU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaEVuZDsK
KyAgICAgICAgKytudW1FdmVudHM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIFZlY3RvcjxXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRMaXN0OworICAgIHRvdWNoUG9pbnRMaXN0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobnVtRXZlbnRzKTsKKworICAgIGZvciAoYXV0byBpdCA9IHRvdWNoRXZl
bnRzLmJlZ2luKCk7IGl0ICE9IHRvdWNoRXZlbnRzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIEdk
a0V2ZW50KiBzdG9yZWRFdmVudCA9IGl0LT52YWx1ZTsKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVu
dCh0b3VjaFBvaW50TGlzdCwgc3RvcmVkRXZlbnQsIHRvdWNoUGhhc2VGcm9tRXZlbnRzKHN0b3Jl
ZEV2ZW50LCBldmVudCkpOworICAgIH0KKworICAgIC8vIFRvdWNoIHdhcyBhbHJlYWR5IHJlbW92
ZWQgZnJvbSB0aGUgR3RrVG91Y2hDb250ZXh0SGVscGVyLCBhZGQgaXQgaGVyZS4KKyAgICBpZiAo
ZXZlbnQtPnR5cGUgPT0gR0RLX1RPVUNIX0VORCkKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVudCh0
b3VjaFBvaW50TGlzdCwgZXZlbnQsIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNl
ZCk7CisKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCh0eXBlLCB0b3VjaFBvaW50TGlzdCwgbW9k
aWZpZXJzRm9yRXZlbnQoZXZlbnQpLCBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKKyNlbHNl
CisgICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQoKTsKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05f
MgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IDA4NTgxNWMuLmZjMzAyOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uUmVzdWx0
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+CiAKIHR5cGVk
ZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogCkBAIC0zOSw2ICs0MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2
ZW50KiwgaW50KTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50
KGNvbnN0IEdka0V2ZW50Kik7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9u
UmVzdWx0cyYpOworICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdlYlRvdWNoRXZlbnQo
Y29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDRiN2RhMWQuLjNkMDdkOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTMyNyw0ICszMjcsNTQgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6YmVnYW5F
eGl0RnVsbFNjcmVlbihjb25zdCBJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEludFIKIAog
I2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29s
IHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBpZiAod2FzRXZlbnRIYW5kbGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBFbXVsYXRlIHBvaW50ZXIgZXZlbnRzIGlmIHVuaGFuZGxlZC4KKyAg
ICBjb25zdCBHZGtFdmVudCogdG91Y2hFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50KCk7CisKKyAg
ICBpZiAoIXRvdWNoRXZlbnQtPnRvdWNoLmVtdWxhdGluZ19wb2ludGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBwb2ludGVyRXZlbnQ7CisKKyAgICBpZiAo
dG91Y2hFdmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfVVBEQVRFKSB7CisgICAgICAgIHBvaW50ZXJF
dmVudC5yZXNldChnZGtfZXZlbnRfbmV3KEdES19NT1RJT05fTk9USUZZKSk7CisgICAgICAgIHBv
aW50ZXJFdmVudC0+bW90aW9uLnRpbWUgPSB0b3VjaEV2ZW50LT50b3VjaC50aW1lOworICAgICAg
ICBwb2ludGVyRXZlbnQtPm1vdGlvbi54ID0gdG91Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAg
cG9pbnRlckV2ZW50LT5tb3Rpb24ueSA9IHRvdWNoRXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBv
aW50ZXJFdmVudC0+bW90aW9uLnhfcm9vdCA9IHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAg
ICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueV9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9y
b290OworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi5zdGF0ZSA9IHRvdWNoRXZlbnQtPnRv
dWNoLnN0YXRlIHwgR0RLX0JVVFRPTjFfTUFTSzsKKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0
Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICAgICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAg
ICAgICAgICAgcG9pbnRlckV2ZW50LnJlc2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9SRUxF
QVNFKSk7CisgICAgICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi5zdGF0ZSA9IHRvdWNoRXZl
bnQtPnRvdWNoLnN0YXRlIHwgR0RLX0JVVFRPTjFfTUFTSzsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAgICAgICAgICAgIHBvaW50ZXJFdmVudC5y
ZXNldChnZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUFJFU1MpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi5idXR0b24gPSAxOworICAg
ICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi50aW1lID0gdG91Y2hFdmVudC0+dG91Y2gudGltZTsK
KyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueCA9IHRvdWNoRXZlbnQtPnRvdWNoLng7Cisg
ICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnkgPSB0b3VjaEV2ZW50LT50b3VjaC55OworICAg
ICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3VjaC54X3Jv
b3Q7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnlfcm9vdCA9IHRvdWNoRXZlbnQtPnRv
dWNoLnlfcm9vdDsKKyAgICB9CisKKyAgICBnZGtfZXZlbnRfc2V0X2RldmljZShwb2ludGVyRXZl
bnQuZ2V0KCksIGdka19ldmVudF9nZXRfZGV2aWNlKHRvdWNoRXZlbnQpKTsKKyAgICBnZGtfZXZl
bnRfc2V0X3NvdXJjZV9kZXZpY2UocG9pbnRlckV2ZW50LmdldCgpLCBnZGtfZXZlbnRfZ2V0X3Nv
dXJjZV9kZXZpY2UodG91Y2hFdmVudCkpOworICAgIHBvaW50ZXJFdmVudC0+YW55LndpbmRvdyA9
IEdES19XSU5ET1coZ19vYmplY3RfcmVmKHRvdWNoRXZlbnQtPmFueS53aW5kb3cpKTsKKyAgICBw
b2ludGVyRXZlbnQtPmFueS5zZW5kX2V2ZW50ID0gVFJVRTsKKworICAgIGd0a193aWRnZXRfZXZl
bnQobV92aWV3V2lkZ2V0LCBwb2ludGVyRXZlbnQuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCmluZGV4IDk2M2MyY2UuLjBkNjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtMTE5LDYgKzExOSw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2FuRXhpdEZ1bGxTY3JlZW4oY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaW5h
bEZyYW1lKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQp
IG92ZXJyaWRlOworCiAgICAgLy8gTWVtYmVycyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFzcwogICAg
IEd0a1dpZGdldCogbV92aWV3V2lkZ2V0OwogICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3Vu
ZG9Db250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGQ0ZDMwMTguLjRhNGU4MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a0NsaWNrQ291bnRlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrRHJhZ0FuZERyb3BIZWxwZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29u
dGV4dEhlbHBlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgpAQCAtMTEwLDYgKzExMSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlIHsKICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50OwogICAgIFdl
YkNvbnRleHRNZW51UHJveHlHdGsqIGFjdGl2ZUNvbnRleHRNZW51UHJveHk7CiAgICAgV2ViVmll
d0Jhc2VJbnB1dE1ldGhvZEZpbHRlciBpbnB1dE1ldGhvZEZpbHRlcjsKKyAgICBHdGtUb3VjaENv
bnRleHRIZWxwZXIgdG91Y2hDb250ZXh0OwogCiAgICAgR3RrV2luZG93KiB0b3BsZXZlbE9uU2Ny
ZWVuV2luZG93OwogICAgIHVuc2lnbmVkIGxvbmcgdG9wbGV2ZWxSZXNpemVHcmlwVmlzaWJpbGl0
eUlEOwpAQCAtMjcyLDcgKzI3NCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVh
bGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKICAgICAgICAgfCBHREtfQlVUVE9OX01PVElPTl9NQVNL
CiAgICAgICAgIHwgR0RLX0JVVFRPTjFfTU9USU9OX01BU0sKICAgICAgICAgfCBHREtfQlVUVE9O
Ml9NT1RJT05fTUFTSwotICAgICAgICB8IEdES19CVVRUT04zX01PVElPTl9NQVNLOworICAgICAg
ICB8IEdES19CVVRUT04zX01PVElPTl9NQVNLCisgICAgICAgIHwgR0RLX1RPVUNIX01BU0s7CiAK
ICAgICBnaW50IGF0dHJpYnV0ZXNNYXNrID0gR0RLX1dBX1ggfCBHREtfV0FfWSB8IEdES19XQV9W
SVNVQUw7CiAKQEAgLTcxMiw2ICs3MTUsMTkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW8KICAg
ICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlVG91
Y2hFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRUb3VjaCogZXZlbnQpCit7CisgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lk
Z2V0KS0+cHJpdjsKKworICAgIGlmIChwcml2LT5hdXRoZW50aWNhdGlvbkRpYWxvZykKKyAgICAg
ICAgcmV0dXJuIFRSVUU7CisKKyAgICBwcml2LT50b3VjaENvbnRleHQuaGFuZGxlRXZlbnQocmVp
bnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5o
YW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtF
dmVudCo+KGV2ZW50KSwgcHJpdi0+dG91Y2hDb250ZXh0KSk7CisKKyAgICByZXR1cm4gVFJVRTsK
K30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlUXVlcnlUb29sdGlwKEd0a1dp
ZGdldCogd2lkZ2V0LCBnaW50IHgsIGdpbnQgeSwgZ2Jvb2xlYW4ga2V5Ym9hcmRNb2RlLCBHdGtU
b29sdGlwKiB0b29sdGlwKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXY7CkBAIC04OTYsNiArOTEyLDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3
QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICB3aWRnZXRDbGFzcy0+YnV0dG9uX3JlbGVhc2Vf
ZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblJlbGVhc2VFdmVudDsKICAgICB3aWRnZXRD
bGFzcy0+c2Nyb2xsX2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VTY3JvbGxFdmVudDsKICAgICB3
aWRnZXRDbGFzcy0+bW90aW9uX25vdGlmeV9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlTW90aW9u
Tm90aWZ5RXZlbnQ7CisgICAgd2lkZ2V0Q2xhc3MtPnRvdWNoX2V2ZW50ID0gd2Via2l0V2ViVmll
d0Jhc2VUb3VjaEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5xdWVyeV90b29sdGlwID0gd2Via2l0
V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXA7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICB3
aWRnZXRDbGFzcy0+ZHJhZ19lbmQgPSB3ZWJraXRXZWJWaWV3QmFzZURyYWdFbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQgYi9Tb3VyY2UvYXV0
b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKaW5kZXggYzhiZjBkYi4uYTkyNDBjNiAxMDA2
NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CisrKyBiL1Nv
dXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNApAQCAtMTY3LDcgKzE2Nyw3IEBA
ICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVmaW5lcy1maWxlcyAkQ09ORklH
VVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBcCiAgICAgRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQ9MSBc
CiAgICAgRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQz0xXAogICAgIEVOQUJMRV9U
RVhUX0FVVE9TSVpJTkc9MCBcCi0gICAgRU5BQkxFX1RPVUNIX0VWRU5UUz0wIFwKKyAgICBFTkFC
TEVfVE9VQ0hfRVZFTlRTPTEgXAogICAgIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MCBcCiAg
ICAgRU5BQkxFX1VTRVJfVElNSU5HPTAgXAogICAgIEVOQUJMRV9WSUJSQVRJT049MCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlCmluZGV4IGNhN2U4MTQuLjMxMTE4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
CkBAIC02Niw3ICs2Niw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9TSEFET1dfRE9NIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9TSEFSRURfV09SS0VSUyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9TUEVMTENIRUNLIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1RFTVBMQVRFX0VMRU1FTlQgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfVVNFUlNFTEVDVF9BTEwgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfVklCUkFUSU9OIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9WSURFTyBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0MzQ1ZjFiLi42Y2NmMTM5IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMTIt
MjQgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtd
IEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAg
ICAgICAoV1RSOjp1cGRhdGVFdmVudENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6Y3JlYXRlVG91Y2hFdmVudCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp1
cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2VuZFVw
ZGF0ZWRUb3VjaEV2ZW50cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRv
dWNoUG9pbnRSYWRpdXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpzZXRUb3Vj
aE1vZGlmaWVyKTogSW1wbGVtZW50IHRvdWNoIGV2ZW50IHByb3h5aW5nLgorCiAyMDE0LTAxLTMw
ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBF
bnN1cmUgZ2VuZXJhdGVkIGV2ZW50cyBoYXZlIGdpdmVuIG1vZGlmaWVycyBHREsgdW5kZXJzdGFu
ZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDU4MjYwMjcu
LmMwY2I0NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApAQCAt
OTEyLDYgKzkxMiwxMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzY2hlZHVsZUFzeW5jaHJvbm91c0tl
eURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYgogICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJU
b3VjaFBvaW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0YXRp
Y0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAgIHsgIm1vdXNlU2Nyb2xsQnkiLCBt
b3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJjb250aW51b3VzTW91c2VTY3Jv
bGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBkZDg5ZjQxLi4xZTI2M2I3IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC00MzIsNyArNDMyLDcgQEAg
bXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJXVEZfVVNFX1RJTEVEX0JBQ0tJTkdf
U1RPUkUiLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZhbHVlID0+IFwkdGlsZWRCYWNraW5nU3RvcmVT
dXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtZXZlbnRzIiwgZGVzYyA9PiAiVG9n
Z2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNI
X0VWRU5UUyIsIGRlZmF1bHQgPT4gKGlzSU9TV2ViS2l0KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+
IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9F
VkVOVFMiLCBkZWZhdWx0ID0+IChpc0lPU1dlYktpdCgpIHx8IGlzRWZsKCkgfHwgaXNHdGsoKSks
IHZhbHVlID0+IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidG91
Y2gtc2xpZGVyIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIFNsaWRlciBzdXBwb3J0IiwKICAgICAg
IGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX1NMSURFUiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4g
XCR0b3VjaFNsaWRlclN1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKaW5kZXggNWQzYTA0OC4uOGZkYzdiOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9FdmVudFNlbmRlclByb3h5LmgKQEAgLTI4LDYgKzI4LDggQEAKICNkZWZpbmUgRXZlbnRTZW5k
ZXJQcm94eV9oCiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNs
dWRlIDxnZGsvZ2RrLmg+CkBAIC05MCw2ICs5Miw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIHZvaWQgc2VuZE9yUXVldWVFdmVudChHZGtFdmVudCopOwogICAgIEdka0V2ZW50
KiBjcmVhdGVNb3VzZUJ1dHRvbkV2ZW50KEdka0V2ZW50VHlwZSwgdW5zaWduZWQgYnV0dG9uLCBX
S0V2ZW50TW9kaWZpZXJzKTsKKyAgICBHZGtFdmVudCogY3JlYXRlVG91Y2hFdmVudChHZGtFdmVu
dFR5cGUsIGludCBpZCk7CisgICAgdm9pZCBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7CiAjZWxp
ZiBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KGNvbnN0IFdUUkV2ZW50
Jik7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7CkBAIC0xMTAsNiAr
MTE0LDggQEAgcHJpdmF0ZToKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBEZXF1ZTxXVFJFdmVu
dFF1ZXVlSXRlbT4gbV9ldmVudFF1ZXVlOwogICAgIHVuc2lnbmVkIG1fbW91c2VCdXR0b25DdXJy
ZW50bHlEb3duOworICAgIFZlY3RvcjxHZGtFdmVudCo+IG1fdG91Y2hFdmVudHM7CisgICAgSGFz
aE1hcDxHZGtFdmVudCosIGludD4gbV91cGRhdGVkVG91Y2hFdmVudHM7CiAjZWxpZiBQTEFURk9S
TShFRkwpCiAgICAgRGVxdWU8V1RSRXZlbnQ+IG1fZXZlbnRRdWV1ZTsKICAgICBXS0V2ZW50TW91
c2VCdXR0b24gbV9tb3VzZUJ1dHRvbjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggNDBmNjU5ZS4uNjdiZTc5MyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFdmVudFNl
bmRlclByb3h5LmgiCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8
Z2RrL2dka2tleXN5bXMuaD4KQEAgLTQ0MSw0ICs0NDIsMTIzIEBAIHZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKICAgICBtX3RpbWUgKz0gbWlsbGlz
ZWNvbmRzIC8gMTAwMC4wOwogfQogCit2b2lkIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoR2RrRXZl
bnQqIHRvdWNoRXZlbnQsIGludCB4LCBpbnQgeSkKK3sKKyAgICB0b3VjaEV2ZW50LT50b3VjaC54
ID0geDsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC55ID0geTsKKworICAgIGludCB4Um9vdCwgeVJv
b3Q7CisgICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHModG91Y2hFdmVudC0+dG91Y2gud2lu
ZG93LCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueF9yb290
ID0geFJvb3Q7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueV9yb290ID0geVJvb3Q7Cit9CisKK0dk
a0V2ZW50KiBFdmVudFNlbmRlclByb3h5OjpjcmVhdGVUb3VjaEV2ZW50KEdka0V2ZW50VHlwZSBl
dmVudFR5cGUsIGludCBpZCkKK3sKKyAgICBHZGtFdmVudCogdG91Y2hFdmVudCA9IGdka19ldmVu
dF9uZXcoZXZlbnRUeXBlKTsKKworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnNlcXVlbmNlID0gKEdk
a0V2ZW50U2VxdWVuY2UqKSBHSU5UX1RPX1BPSU5URVIoaWQpOworICAgIHRvdWNoRXZlbnQtPnRv
dWNoLndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKG1fdGVzdENvbnRy
b2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSk7CisgICAgZ19vYmplY3RfcmVm
KHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdyk7CisgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UodG91
Y2hFdmVudCwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxh
eV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheSh0b3VjaEV2ZW50LT5i
dXR0b24ud2luZG93KSkpKTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC50aW1lID0gR0RLX0NVUlJF
TlRfVElNRTsKKworICAgIHJldHVybiB0b3VjaEV2ZW50OworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIEdka0V2ZW50KiBldmVu
dCA9IGNyZWF0ZVRvdWNoRXZlbnQoKEdka0V2ZW50VHlwZSkgR0RLX1RPVUNIX0JFR0lOLCBtX3Rv
dWNoRXZlbnRzLnNpemUoKSArIDEpOworICAgIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoZXZlbnQs
IHgsIHkpOworICAgIG1fdG91Y2hFdmVudHMuYXBwZW5kKGV2ZW50KTsKKyAgICBtX3VwZGF0ZWRU
b3VjaEV2ZW50cy5hZGQoZXZlbnQsIEdQT0lOVEVSX1RPX0lOVChldmVudC0+dG91Y2guc2VxdWVu
Y2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KGludCBp
bmRleCwgaW50IHgsIGludCB5KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwg
bV90b3VjaEV2ZW50cy5zaXplKCkpOworCisgICAgR2RrRXZlbnQqIGV2ZW50ID0gbV90b3VjaEV2
ZW50c1tpbmRleF07CisgICAgQVNTRVJUKGV2ZW50KTsKKworICAgIGV2ZW50LT50eXBlID0gR0RL
X1RPVUNIX1VQREFURTsKKyAgICB1cGRhdGVFdmVudENvb3JkaW5hdGVzKGV2ZW50LCB4LCB5KTsK
KyAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5hZGQoZXZlbnQsIEdQT0lOVEVSX1RPX0lOVChldmVu
dC0+dG91Y2guc2VxdWVuY2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kVXBk
YXRlZFRvdWNoRXZlbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3VwZGF0ZWRUb3VjaEV2
ZW50cy5iZWdpbigpOyBpdCAhPSBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5lbmQoKTsgKytpdCkKKyAg
ICAgICAgc2VuZE9yUXVldWVFdmVudChnZGtfZXZlbnRfY29weShpdC0+a2V5KSk7CisKKyAgICBt
X3VwZGF0ZWRUb3VjaEV2ZW50cy5jbGVhcigpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnRvdWNoU3RhcnQoKQoreworICAgIHNlbmRVcGRhdGVkVG91Y2hFdmVudHMoKTsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUoKQoreworICAgIHNlbmRVcGRhdGVkVG91Y2hF
dmVudHMoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCgpCit7CisgICAg
c2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRv
dWNoQ2FuY2VsKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3RvdWNoRXZlbnRzLnNpemUoKTsgKytpKQorICAgICAgICBnZGtfZXZlbnRfZnJlZSht
X3RvdWNoRXZlbnRzW2ldKTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7CisgICAgbV91cGRh
dGVkVG91Y2hFdmVudHMuY2xlYXIoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyZWxl
YXNlVG91Y2hQb2ludChpbnQgaW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5k
ZXggPCBtX3RvdWNoRXZlbnRzLnNpemUoKSk7CisKKyAgICBHZGtFdmVudCogZXZlbnQgPSBtX3Rv
dWNoRXZlbnRzW2luZGV4XTsKKyAgICBldmVudC0+dHlwZSA9IEdES19UT1VDSF9FTkQ7CisgICAg
bV91cGRhdGVkVG91Y2hFdmVudHMuYWRkKGV2ZW50LCBHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRv
dWNoLnNlcXVlbmNlKSk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2FuY2VsVG91Y2hQ
b2ludChpbnQgaW5kZXgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFdmVu
dFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50UmFkaXVzKGludCByYWRpdXNYLCBpbnQgcmFkaXVz
WSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnNldFRvdWNoTW9kaWZpZXIoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllciwgYm9vbCBlbmFibGUp
Cit7CisgICAgZ3VpbnQgc3RhdGUgPSB3ZWJraXRNb2RpZmllcnNUb0dES01vZGlmaWVycyhtb2Rp
Zmllcik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90b3VjaEV2ZW50cy5zaXpl
KCk7ICsraSkgeworICAgICAgICBHZGtFdmVudCogZXZlbnQgPSBtX3RvdWNoRXZlbnRzW2ldOwor
CisgICAgICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgICAgIGV2ZW50LT50b3Vj
aC5zdGF0ZSB8PSBzdGF0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnQtPnRvdWNo
LnN0YXRlICY9IH4oc3RhdGUpOworCisgICAgICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmFkZChl
dmVudCwgR1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1ZW5jZSkpOworICAgIH0KK30K
KworCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223121</attachid>
            <date>2014-02-04 08:19:41 -0800</date>
            <delta_ts>2014-02-06 15:19:16 -0800</delta_ts>
            <desc>rebased patch</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>42204</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1MjY1MWJjLi5kYzUwZjIx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAg
ICAgIFtHVEtdIEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0
dXJlcy5tNDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZTogc2V0IEVO
QUJMRV9UT1VDSF9FVkVOVFMgdG8gMSBpZiBidWlsZGluZyB3aXRoIEdUSysuCisKIDIwMTQtMDEt
MzEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIExFR0FDWV9WSUVXUE9SVF9BREFQVElPTgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA2ZjI1NGYuLjZjNDMzMzkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMi0yNCAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9z
Z0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gRW5hYmxlIHRvdWNoIGZlYXR1cmVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnM6IHJlbW92ZSBmYXN0L2V2ZW50cy90b3VjaAorICAgICAgICAqIHBs
YXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9uczogQWRkIG5ldyBleHBlY3RhdGlvbnMgb24K
KyAgICAgICAgZmFzdC9ldmVudHMvdG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTAzICBLcnp5c3p0
b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIEV4cG9zZSBh
cmlhLWNvbnRyb2xzIHRocm91Z2ggQVRLX1JFTEFUSU9OX0NPTlRST0xMRVJfRk9SCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzVhNjM1ZC4u
OTE0NjI4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTg2LDYgKzE4NiwyNSBAQCB3ZWJraXQub3JnL2IvODU0NjMgZWRpdGluZy9pbnNl
cnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9yZS1VUkwuaAogd2Via2l0
Lm9yZy9iLzEyMDQwMSBmYXN0L2V2ZW50cyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEyMDQwMSBl
ZGl0aW5nL3NlbGVjdGlvbiBbIFNraXAgXQogCitmYXN0L2V2ZW50cy90b3VjaCBbIFBhc3MgXQor
CisjIFRlc3RzIGluIHRoZSBnZXN0dXJlIGZvbGRlciBleGVyY2lzZSBJT1Mtc3BlY2lmaWMgY29k
ZSwgbm9uIGFwcGxpYWJsZSB0byBHVEsrCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlIFsgU2tp
cCBdCisKKyMgVGhlc2UgdGVzdHMgcmVseSBvbiB0b3VjaCBldmVudCBncm91cGluZywgd2hpY2gg
WDExL0dUSysgZG9lc24ndCBkbyBieSBkZXNpZ24KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9l
dmVudHMvdG91Y2gvYmFzaWMtbXVsdGktdG91Y2gtZXZlbnRzLWxpbWl0ZWQuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10
b3VjaC1ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2
ZW50cy90b3VjaC90b3VjaC1pbnB1dC1lbGVtZW50LWNoYW5nZS1kb2N1bWVudHMuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9mcmFtZS1ob3Zl
ci11cGRhdGUuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50
cy90b3VjaC9tdWx0aS10b3VjaC1ncm91cGVkLXRhcmdldHMuaHRtbCBbIFRpbWVvdXQgRmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWlu
c2lkZS1uZXN0ZWQtaWZyYW1lcy5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcy
IGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWluc2lkZS1pZnJhbWVzLmh0bWwgWyBUaW1l
b3V0IF0KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xl
LXRvdWNoLWV2ZW50cy5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3Qv
ZXZlbnRzL3RvdWNoL3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBbIFRpbWVv
dXQgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQu
aHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90
b3VjaC10YXJnZXQtbGltaXRlZC5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcy
IGZhc3QvZXZlbnRzL3RvdWNoL3NlbmQtb25jYW5jZWwtZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQor
CiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgRXhwZWN0ZWQgZmFp
bHVyZXMKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDU2Mzc1N2MuLjM5NGQ5MDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNTMsOSArMTUzLDYgQEAg
d2Via2l0Lm9yZy9iLzk4OTI3IGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uIFsgU2tpcCBdCiB3
ZWJraXQub3JnL2IvNjExNDAgZmFzdC9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvNjExNDAgaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiAKLSMgVGhlc2UgdGVz
dHMgcmVxdWlyZSB0b3VjaCBzdXBwb3J0Lgotd2Via2l0Lm9yZy9iLzk4OTMxIGZhc3QvZXZlbnRz
L3RvdWNoIFsgU2tpcCBdCi0KICMgU3RvcmFnZVRyYWNrZXIgaXMgbm90IGVuYWJsZWQuCiB3ZWJr
aXQub3JnL2IvOTg5MzMgc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJh
Y2tlciBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY0YTFiOC4uOWZkYWJkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3Nn
QGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29k
ZSB0byBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0cyBpbiBmYXN0L2V2ZW50cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsrIG5v
dyB0aGF0IHRvdWNoCisgICAgICAgIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVzIGFs
bCBleHBlY3RlZCBiaXRzIGFyZSB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtU
b3VjaENvbnRleHRIZWxwZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENv
bnRleHRIZWxwZXIuaDogQWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9pbnRz
LCBoYW5keQorICAgICAgICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0ZWQg
Y29kZSBhbmQgaWRscyB0byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBub3cg
dGhhdCBHVEsrIGltcGxlbWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTAzICBLcnp5c3p0
b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIEV4cG9zZSBh
cmlhLWNvbnRyb2xzIHRocm91Z2ggQVRLX1JFTEFUSU9OX0NPTlRST0xMRVJfRk9SCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzMWQ0NDJhLi4zZmJmZTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMwMDEsOCArMzAwMSwxMSBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0Tm9kZVRyYXZlcnNhbC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0Tm9kZVRyYXZlcnNhbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2guY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVG91Y2guaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UcmFu
c2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCBcCkBAIC02MTkwLDYgKzYxOTMsOCBAQCBwbGF0Zm9ybWd0
a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRo
b2RGaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BvcHVwTWVudS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1ZlcnNpb25pbmcuYyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGI1
OGVlN2YuLjA5ZWQzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xOTgsNiArMTk4
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAK
ICAgICBwbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcAorICAgIHBsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9w
SGVscGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAKICAg
ICBwbGF0Zm9ybS9ndGsvR3RrUGx1Z2luV2lkZ2V0LmNwcApAQCAtMjEyLDYgKzIxMyw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL01h
aW5GcmFtZVNjcm9sbGJhckd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKyAgICBwbGF0Zm9ybS9n
dGsvUGxhdGZvcm1Ub3VjaEV2ZW50R3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0
ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCkBAIC01MjcsNiAr
NTI5LDcgQEAgaWYgKEVOQUJMRV9XRUJLSVQyKQogICAgICAgICBkb20vUmFuZ2UuaWRsCiAgICAg
ICAgIGRvbS9TaGFkb3dSb290LmlkbAogICAgICAgICBkb20vVGV4dC5pZGwKKyAgICAgICAgZG9t
L1RvdWNoLmlkbAogICAgICAgICBkb20vVHJlZVdhbGtlci5pZGwKICAgICAgICAgZG9tL1VJRXZl
bnQuaWRsCiAgICAgICAgIGRvbS9XZWJLaXROYW1lZEZsb3cuaWRsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQppbmRleCBiZDM2NDNmLi5kY2EzNzYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0K
QEAgLTI2Miw2ICsyNjIsOCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NU3R5bGVTaGVldFByaXZhdGUuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHQuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTVRvdWNoLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTVRvdWNoUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVGltZVJhbmdlcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UaW1lUmFuZ2VzUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0
RE9NVHJlZVdhbGtlci5jcHAgXApAQCAtMzIzLDYgKzMyNSw3IEBAIHdlYmtpdGd0a19nZG9tX2J1
aWx0X2hfYXBpICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01S
YW5nZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5oIFwKKwlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2guaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyZWVXYWxrZXIuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTVVJRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTUJsb2IuaCBcCkBAIC00MzIsNiArNDM1LDcgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRf
aF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS93ZWJraXRkb20uaCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMuaAogCisKIGlmIEVOQUJMRV9W
SURFTwogd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3ltYm9scyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMKaW5kZXggOWUyYmQ1Yi4uMjFiNDQ5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3lt
Ym9scworKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1i
b2xzCkBAIC0xNjYyLDYgKzE2NjIsMTggQEAgZ2xvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9n
ZXRfd2hlZWxfZGVsdGFfeChXZWJLaXRET01XaGVlbEV2ZW50KikKIGdsb25nIHdlYmtpdF9kb21f
d2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhX3koV2ViS2l0RE9NV2hlZWxFdmVudCopCiBnbG9u
ZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YShXZWJLaXRET01XaGVlbEV2
ZW50KikKIGdib29sZWFuIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3dlYmtpdF9kaXJlY3Rp
b25faW52ZXJ0ZWRfZnJvbV9kZXZpY2UoV2ViS2l0RE9NV2hlZWxFdmVudCopCitXZWJLaXRET01F
dmVudFRhcmdldCogd2Via2l0X2RvbV90b3VjaF9nZXRfdGFyZ2V0KFdlYktpdERPTVRvdWNoKikK
K2dmbG9hdCB3ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfZm9yY2UoV2ViS2l0RE9NVG91Y2gq
KQorZ2Zsb2F0IHdlYmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9yb3RhdGlvbl9hbmdsZShXZWJL
aXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9jbGllbnRfeChXZWJLaXRE
T01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9jbGllbnRfeShXZWJLaXRET01U
b3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9wYWdlX3goV2ViS2l0RE9NVG91Y2gq
KQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfcGFnZV95KFdlYktpdERPTVRvdWNoKikKK2ds
b25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl94KFdlYktpdERPTVRvdWNoKikKK2dsb25n
IHdlYmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl95KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdl
YmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9yYWRpdXNfeChXZWJLaXRET01Ub3VjaCopCitnbG9u
ZyB3ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfcmFkaXVzX3koV2ViS2l0RE9NVG91Y2gqKQor
Z3Vsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X2lkZW50aWZpZXIoV2ViS2l0RE9NVG91Y2gqKQog
Z2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2lkKFdlYktpdERPTUF1ZGlvVHJhY2sq
KQogZ2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2tpbmQoV2ViS2l0RE9NQXVkaW9U
cmFjayopCiBnY2hhciogd2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfbGFiZWwoV2ViS2l0RE9N
QXVkaW9UcmFjayopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VG91Y2hDb250ZXh0SGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtU
b3VjaENvbnRleHRIZWxwZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljg4MDBlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrVG91Y2hDb250ZXh0SGVscGVyLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHdGtUb3VjaENvbnRleHRIZWxwZXIu
aCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHdGtU
b3VjaENvbnRleHRIZWxwZXI6On5HdGtUb3VjaENvbnRleHRIZWxwZXIoKQoreworICAgIGZvciAo
YXV0byBpdCA9IG1fdG91Y2hFdmVudHMuYmVnaW4oKTsgaXQgIT0gbV90b3VjaEV2ZW50cy5lbmQo
KTsgKytpdCkKKyAgICAgICAgZ2RrX2V2ZW50X2ZyZWUoaXQtPnZhbHVlKTsKKyAgICBtX3RvdWNo
RXZlbnRzLmNsZWFyKCk7Cit9CisKK2Jvb2wgR3RrVG91Y2hDb250ZXh0SGVscGVyOjpoYW5kbGVF
dmVudChHZGtFdmVudCogdG91Y2hFdmVudCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIK
KyAgICB1aW50MzJfdCBzZXF1ZW5jZSA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9l
dmVudF9zZXF1ZW5jZSh0b3VjaEV2ZW50KSk7CisKKyAgICBHZGtFdmVudCogZXZlbnQgPSBtX3Rv
dWNoRXZlbnRzLnRha2Uoc2VxdWVuY2UpOworICAgIGlmIChldmVudCkKKyAgICAgICAgZ2RrX2V2
ZW50X2ZyZWUoZXZlbnQpOworCisgICAgc3dpdGNoICh0b3VjaEV2ZW50LT50eXBlKSB7CisgICAg
Y2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOgorICAgICAg
ICBtX3RvdWNoRXZlbnRzLnNldChzZXF1ZW5jZSwgZ2RrX2V2ZW50X2NvcHkodG91Y2hFdmVudCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8g
R1RLX0FQSV9WRVJTSU9OXzIKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91
Y2hDb250ZXh0SGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hD
b250ZXh0SGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIyNGFl
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3Vj
aENvbnRleHRIZWxwZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgR3RrVG91Y2hDb250ZXh0SGVscGVyX2gKKyNkZWZpbmUgR3RrVG91Y2hDb250ZXh0SGVscGVy
X2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisKK3R5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3R5cGVkZWYgSGFzaE1hcDx1aW50MzJfdCwgR2RrRXZlbnQqPiBUb3VjaEV2ZW50
c01hcDsKKworY2xhc3MgR3RrVG91Y2hDb250ZXh0SGVscGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHdGtUb3VjaENvbnRleHRIZWxwZXIpOworcHVibGljOgorICAgIEd0a1RvdWNoQ29u
dGV4dEhlbHBlcigpIHsgfTsKKyAgICB+R3RrVG91Y2hDb250ZXh0SGVscGVyKCk7CisKKyAgICBi
b29sIGhhbmRsZUV2ZW50KEdka0V2ZW50Kik7CisgICAgY29uc3QgVG91Y2hFdmVudHNNYXAmIHRv
dWNoRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEV2ZW50czsgfTsKKworcHJpdmF0ZToK
KyAgICBUb3VjaEV2ZW50c01hcCBtX3RvdWNoRXZlbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBiZWZjZWFkLi43OGZkYmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTItMjMgIENhcmxvcyBHYXJu
YWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtdIEFsbG93IGJ1aWxkaW5n
IHdpdGggdG91Y2ggZXZlbnRzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRXZlbiB0aG91Z2ggV2ViS2l0MSBHVEsgY29kZSBkb2Vzbid0IGlt
cGxlbWVudCB0b3VjaCBldmVudHMsCisgICAgICAgIEZpeCBidWlsZCBpZiBFTkFCTEVfVE9VQ0hf
RVZFTlRTIGlzIHByZXNlbnQgZm9yIFdLMi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6Om5lZWRUb3Vj
aEV2ZW50cyk6IEFkZCBlbXB0eSBzdHViCisKIDIwMTQtMDEtMzEgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeGluZyB0aGUgR1RL
IGJ1aWxkIGFmdGVyIHIxNjMyMzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDFkZTdmMmYuLjY0YTA5MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBA
IC0xNDMsNiArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAjZW5kaWYKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCkgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgeyB9CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiwgR3JhcGhpY3NMYXll
ciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDAwNTNlOWMuLjVlNWZiMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNSBAQAorMjAxMy0xMi0yMyAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9zZ0Bnbm9t
ZS5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHN1cHBvcnQgdG91Y2ggZXZlbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEdUSysgPj0g
My40LjAsIEdka0V2ZW50VG91Y2ggaXMgYXZhaWxhYmxlIHRvIGluZm9ybSBhYm91dCBtdWx0aXRv
dWNoIGV2ZW50cy4gVXNlIHRoZXNlIHRvIGltcGxlbWVudAorICAgICAgICB0b3VjaCBldmVudHMg
b24gdGhpcyBwbGF0Zm9ybS4gSWYgYSB0b3VjaCBpcyBsZWZ0IHVuaGFuZGxlZCBhbmQgaXMgdGhl
ICJwb2ludGVyIGVtdWxhdGluZyIgb25lLCBtb3VzZQorICAgICAgICBldmVudHMgd2lsbCBiZSBn
ZW5lcmF0ZWQgYXMgYSBmYWxsYmFjay4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRp
dmVXZWJUb3VjaEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpuYXRpdmVFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6OnRvdWNoQ29udGV4dCk6
IEFkZCBHVEsrIGltcGxlbWVudGF0aW9uIG9mIE5hdGl2ZVdlYlRvdWNoRXZlbnQKKyAgICAgICAg
KiBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvdWNo
UGhhc2VGcm9tRXZlbnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJUb3VjaEV2ZW50KTogQWRkIG1ldGhvZHMgdG8gZ2VuZXJhdGUgTmF0aXZlV2ViVG91Y2hF
dmVudHMgb3V0CisgICAgICAgIG9mIEdka0V2ZW50VG91Y2ggZXZlbnRzLCBhIEd0a1RvdWNoQ29u
dGV4dEhlbHBlciBvYmplY3QgaXMgdXNlZCB0byBob2xkIGluZm9ybWF0aW9uIGFib3V0IGFsbCBj
dXJyZW50CisgICAgICAgIHRvdWNoZXMsIGluIG9yZGVyIHRvIGJ1aWxkIGluZm9ybWF0aW9uIGFi
b3V0IGFsbCBpbmRpdmlkdWFsIHRvdWNocG9pbnRzLgorICAgICAgICAqIFNoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2
ZW50KTogSW1wbGVtZW50IHBvaW50ZXIgZW11bGF0aW9uIGlmIHRoZSBwb2ludGVyIGVtdWxhdGlu
ZworICAgICAgICB0b3VjaCB3YXMgdW5oYW5kbGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKTogTGlz
dGVuIGZvciB0b3VjaCBldmVudHMKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hFdmVu
dCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KTogQWRkIGltcGxl
bWVudGF0aW9uIGZvciB0aGUgdG91Y2hfZXZlbnRzKCkgaGFuZGxlci4KKwogMjAxNC0wMi0wMyAg
S3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBCdWlsZCBm
aXggYWZ0ZXIgcjE2MzI4OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGU0N2Ey
OGIuLjk1MWNhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzg0LDYgKzM4
NCw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9M
YXllclRyZWVDb250ZXh0R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRp
dmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Q
cmludEluZm9HdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0YTg0YTky
Li4zODVhYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNTcsNiArNTcsNyBAQCBs
aXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJv
YXJkRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNw
cAogICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKKyAgICBTaGFyZWQv
Z3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9H
dGsuY3BwCiAgICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAg
U2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC01NjYsNiArNTY3LDcgQEAgaWYgKEVO
QUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICAgICAgU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNw
cAogICAgICAgICBTaGFyZWQvV2ViTW91c2VFdmVudC5jcHAKICAgICAgICAgU2hhcmVkL1dlYldo
ZWVsRXZlbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAogCiAgICAgICAg
IFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCiAgICAgICAgIFNoYXJlZC9QbHVn
aW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtNTg0LDYgKzU4Niw3IEBAIGlmIChF
TkFCTEVfUExVR0lOX1BST0NFU1MpCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3Rr
LmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwCisgICAg
ICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVk
L2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgICAgIFNoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0
aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNo
RXZlbnQuaAppbmRleCAwZDRiMmNmLi42NDRhY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaWYgUExBVEZPUk0o
SU9TKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgVUlXZWJUb3VjaEV2
ZW50c0dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQotI2lmIFBM
QVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlx
dWVQdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgor
dHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAj
aW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNm
b3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDYsOCArNDgsMTIgQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKElPUykKICAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KFVJ
V2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAqKTsKICAgICBjb25zdCBVSVdlYlRvdWNo
RXZlbnRzR2VzdHVyZVJlY29nbml6ZXIqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9u
YXRpdmVFdmVudC5nZXQoKTsgfQotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgUExB
VEZPUk0oR1RLKQorICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hF
dmVudCYpOworICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQqLCBXZWJDb3JlOjpHdGtU
b3VjaENvbnRleHRIZWxwZXImKTsKKyAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBj
b25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6
R3RrVG91Y2hDb250ZXh0SGVscGVyJiB0b3VjaENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3Rv
dWNoQ29udGV4dDsgfQorI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIE5hdGl2ZVdlYlRvdWNoRXZl
bnQoRXdrVG91Y2hFdmVudCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwogICAg
IGNvbnN0IEV3a1RvdWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRp
dmVFdmVudC5nZXQoKTsgfQogI2VuZGlmCkBAIC01NSw4ICs2MSwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dl
c3R1cmVSZWNvZ25pemVyPiBtX25hdGl2ZUV2ZW50OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZM
KQorI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IG1fbmF0aXZl
RXZlbnQ7CisgICAgY29uc3QgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVyJiBtX3RvdWNo
Q29udGV4dDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBSZWZQdHI8RXdrVG91Y2hFdmVudD4g
bV9uYXRpdmVFdmVudDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmIyY2Q0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9y
Zz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYlRv
dWNoRXZlbnQuaCIKKworI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgPGdk
ay9nZGsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBXZWJDb3JlOjpHdGtUb3VjaENvbnRl
eHRIZWxwZXImIGNvbnRleHQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudCwgY29udGV4dCkpCisgICAgLCBtX25hdGl2ZUV2ZW50
KGdka19ldmVudF9jb3B5KGV2ZW50KSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGNvbnRleHQpCit7
Cit9CisKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgTmF0
aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCBldmVudC50b3Vj
aENvbnRleHQoKSkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50Lm5h
dGl2ZUV2ZW50KCkpKQorICAgICwgbV90b3VjaENvbnRleHQoZXZlbnQudG91Y2hDb250ZXh0KCkp
Cit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGNiODhhODIuLmQxMGViNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxnZGsv
Z2RrLmg+CiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC0yMDMsNCArMjA0LDc3IEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKIH0KIAorI2lmbmRl
ZiBHVEtfQVBJX1ZFUlNJT05fMgorc3RhdGljIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQ
b2ludFN0YXRlIHRvdWNoUGhhc2VGcm9tRXZlbnRzKGNvbnN0IEdka0V2ZW50KiBjdXJyZW50LCBj
b25zdCBHZGtFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGdka19ldmVudF9nZXRfZXZlbnRfc2Vx
dWVuY2UoY3VycmVudCkgIT0gZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkpCisg
ICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKwor
ICAgIHN3aXRjaCAoY3VycmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToK
KyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAgICBj
YXNlIEdES19UT1VDSF9CRUdJTjoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hQcmVzc2VkOworICAgIGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgcmV0dXJu
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCBhcHBlbmRUb3VjaEV2ZW50KFZlY3RvcjxXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ+JiB0b3VjaFBvaW50TGlzdCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkKK3sKKyAgICB1aW50MzJfdCBp
ZGVudGlmaWVyID0gR1BPSU5URVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNl
KGV2ZW50KSk7CisKKyAgICBnZG91YmxlIHgsIHk7CisgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMo
ZXZlbnQsICZ4LCAmeSk7CisKKyAgICBnZG91YmxlIHhSb290LCB5Um9vdDsKKyAgICBnZGtfZXZl
bnRfZ2V0X3Jvb3RfY29vcmRzKGV2ZW50LCAmeFJvb3QsICZ5Um9vdCk7CisKKyAgICBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQgdG91Y2hQb2ludChpZGVudGlmaWVyLCBzdGF0ZSwgSW50UG9pbnQoeFJv
b3QsIHlSb290KSwgSW50UG9pbnQoeCwgeSkpOworICAgIHRvdWNoUG9pbnRMaXN0LnVuY2hlY2tl
ZEFwcGVuZCh0b3VjaFBvaW50KTsKK30KKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCitX
ZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBH
ZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91
Y2hDb250ZXh0KQoreworI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIFdlYkV2ZW50OjpU
eXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisgICAgVG91Y2hFdmVu
dHNNYXAgdG91Y2hFdmVudHMgPSB0b3VjaENvbnRleHQudG91Y2hFdmVudHMoKTsKKyAgICBpbnQg
bnVtRXZlbnRzID0gdG91Y2hFdmVudHMuc2l6ZSgpOworCisgICAgc3dpdGNoIChldmVudC0+dHlw
ZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX0JFR0lOOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6
OlRvdWNoU3RhcnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1RPVUNIX1VQREFURToK
KyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaE1vdmU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgR0RLX1RPVUNIX0VORDoKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpUb3VjaEVuZDsK
KyAgICAgICAgKytudW1FdmVudHM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIFZlY3RvcjxXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRMaXN0OworICAgIHRvdWNoUG9pbnRMaXN0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobnVtRXZlbnRzKTsKKworICAgIGZvciAoYXV0byBpdCA9IHRvdWNoRXZl
bnRzLmJlZ2luKCk7IGl0ICE9IHRvdWNoRXZlbnRzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIEdk
a0V2ZW50KiBzdG9yZWRFdmVudCA9IGl0LT52YWx1ZTsKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVu
dCh0b3VjaFBvaW50TGlzdCwgc3RvcmVkRXZlbnQsIHRvdWNoUGhhc2VGcm9tRXZlbnRzKHN0b3Jl
ZEV2ZW50LCBldmVudCkpOworICAgIH0KKworICAgIC8vIFRvdWNoIHdhcyBhbHJlYWR5IHJlbW92
ZWQgZnJvbSB0aGUgR3RrVG91Y2hDb250ZXh0SGVscGVyLCBhZGQgaXQgaGVyZS4KKyAgICBpZiAo
ZXZlbnQtPnR5cGUgPT0gR0RLX1RPVUNIX0VORCkKKyAgICAgICAgYXBwZW5kVG91Y2hFdmVudCh0
b3VjaFBvaW50TGlzdCwgZXZlbnQsIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNl
ZCk7CisKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCh0eXBlLCB0b3VjaFBvaW50TGlzdCwgbW9k
aWZpZXJzRm9yRXZlbnQoZXZlbnQpLCBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKKyNlbHNl
CisgICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQoKTsKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05f
MgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IDA4NTgxNWMuLmZjMzAyOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uUmVzdWx0
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+CiAKIHR5cGVk
ZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogCkBAIC0zOSw2ICs0MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2
ZW50KiwgaW50KTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50
KGNvbnN0IEdka0V2ZW50Kik7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9u
UmVzdWx0cyYpOworICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdlYlRvdWNoRXZlbnQo
Y29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDRiN2RhMWQuLjNkMDdkOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTMyNyw0ICszMjcsNTQgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6YmVnYW5F
eGl0RnVsbFNjcmVlbihjb25zdCBJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEludFIKIAog
I2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29s
IHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBpZiAod2FzRXZlbnRIYW5kbGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBFbXVsYXRlIHBvaW50ZXIgZXZlbnRzIGlmIHVuaGFuZGxlZC4KKyAg
ICBjb25zdCBHZGtFdmVudCogdG91Y2hFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50KCk7CisKKyAg
ICBpZiAoIXRvdWNoRXZlbnQtPnRvdWNoLmVtdWxhdGluZ19wb2ludGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBwb2ludGVyRXZlbnQ7CisKKyAgICBpZiAo
dG91Y2hFdmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfVVBEQVRFKSB7CisgICAgICAgIHBvaW50ZXJF
dmVudC5yZXNldChnZGtfZXZlbnRfbmV3KEdES19NT1RJT05fTk9USUZZKSk7CisgICAgICAgIHBv
aW50ZXJFdmVudC0+bW90aW9uLnRpbWUgPSB0b3VjaEV2ZW50LT50b3VjaC50aW1lOworICAgICAg
ICBwb2ludGVyRXZlbnQtPm1vdGlvbi54ID0gdG91Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAg
cG9pbnRlckV2ZW50LT5tb3Rpb24ueSA9IHRvdWNoRXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBv
aW50ZXJFdmVudC0+bW90aW9uLnhfcm9vdCA9IHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAg
ICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueV9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9y
b290OworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi5zdGF0ZSA9IHRvdWNoRXZlbnQtPnRv
dWNoLnN0YXRlIHwgR0RLX0JVVFRPTjFfTUFTSzsKKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0
Y2ggKHRvdWNoRXZlbnQtPnR5cGUpIHsKKyAgICAgICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAg
ICAgICAgICAgcG9pbnRlckV2ZW50LnJlc2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9SRUxF
QVNFKSk7CisgICAgICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi5zdGF0ZSA9IHRvdWNoRXZl
bnQtPnRvdWNoLnN0YXRlIHwgR0RLX0JVVFRPTjFfTUFTSzsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdES19UT1VDSF9CRUdJTjoKKyAgICAgICAgICAgIHBvaW50ZXJFdmVudC5y
ZXNldChnZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUFJFU1MpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi5idXR0b24gPSAxOworICAg
ICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi50aW1lID0gdG91Y2hFdmVudC0+dG91Y2gudGltZTsK
KyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueCA9IHRvdWNoRXZlbnQtPnRvdWNoLng7Cisg
ICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnkgPSB0b3VjaEV2ZW50LT50b3VjaC55OworICAg
ICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3VjaC54X3Jv
b3Q7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnlfcm9vdCA9IHRvdWNoRXZlbnQtPnRv
dWNoLnlfcm9vdDsKKyAgICB9CisKKyAgICBnZGtfZXZlbnRfc2V0X2RldmljZShwb2ludGVyRXZl
bnQuZ2V0KCksIGdka19ldmVudF9nZXRfZGV2aWNlKHRvdWNoRXZlbnQpKTsKKyAgICBnZGtfZXZl
bnRfc2V0X3NvdXJjZV9kZXZpY2UocG9pbnRlckV2ZW50LmdldCgpLCBnZGtfZXZlbnRfZ2V0X3Nv
dXJjZV9kZXZpY2UodG91Y2hFdmVudCkpOworICAgIHBvaW50ZXJFdmVudC0+YW55LndpbmRvdyA9
IEdES19XSU5ET1coZ19vYmplY3RfcmVmKHRvdWNoRXZlbnQtPmFueS53aW5kb3cpKTsKKyAgICBw
b2ludGVyRXZlbnQtPmFueS5zZW5kX2V2ZW50ID0gVFJVRTsKKworICAgIGd0a193aWRnZXRfZXZl
bnQobV92aWV3V2lkZ2V0LCBwb2ludGVyRXZlbnQuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCmluZGV4IDk2M2MyY2UuLjBkNjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtMTE5LDYgKzExOSw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2FuRXhpdEZ1bGxTY3JlZW4oY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaW5h
bEZyYW1lKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQp
IG92ZXJyaWRlOworCiAgICAgLy8gTWVtYmVycyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFzcwogICAg
IEd0a1dpZGdldCogbV92aWV3V2lkZ2V0OwogICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3Vu
ZG9Db250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGQ0ZDMwMTguLjRhNGU4MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a0NsaWNrQ291bnRlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrRHJhZ0FuZERyb3BIZWxwZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29u
dGV4dEhlbHBlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgpAQCAtMTEwLDYgKzExMSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlIHsKICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50OwogICAgIFdl
YkNvbnRleHRNZW51UHJveHlHdGsqIGFjdGl2ZUNvbnRleHRNZW51UHJveHk7CiAgICAgV2ViVmll
d0Jhc2VJbnB1dE1ldGhvZEZpbHRlciBpbnB1dE1ldGhvZEZpbHRlcjsKKyAgICBHdGtUb3VjaENv
bnRleHRIZWxwZXIgdG91Y2hDb250ZXh0OwogCiAgICAgR3RrV2luZG93KiB0b3BsZXZlbE9uU2Ny
ZWVuV2luZG93OwogICAgIHVuc2lnbmVkIGxvbmcgdG9wbGV2ZWxSZXNpemVHcmlwVmlzaWJpbGl0
eUlEOwpAQCAtMjcyLDcgKzI3NCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVh
bGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKICAgICAgICAgfCBHREtfQlVUVE9OX01PVElPTl9NQVNL
CiAgICAgICAgIHwgR0RLX0JVVFRPTjFfTU9USU9OX01BU0sKICAgICAgICAgfCBHREtfQlVUVE9O
Ml9NT1RJT05fTUFTSwotICAgICAgICB8IEdES19CVVRUT04zX01PVElPTl9NQVNLOworICAgICAg
ICB8IEdES19CVVRUT04zX01PVElPTl9NQVNLCisgICAgICAgIHwgR0RLX1RPVUNIX01BU0s7CiAK
ICAgICBnaW50IGF0dHJpYnV0ZXNNYXNrID0gR0RLX1dBX1ggfCBHREtfV0FfWSB8IEdES19XQV9W
SVNVQUw7CiAKQEAgLTcxMiw2ICs3MTUsMTkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW8KICAg
ICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlVG91
Y2hFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRUb3VjaCogZXZlbnQpCit7CisgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lk
Z2V0KS0+cHJpdjsKKworICAgIGlmIChwcml2LT5hdXRoZW50aWNhdGlvbkRpYWxvZykKKyAgICAg
ICAgcmV0dXJuIFRSVUU7CisKKyAgICBwcml2LT50b3VjaENvbnRleHQuaGFuZGxlRXZlbnQocmVp
bnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5o
YW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtF
dmVudCo+KGV2ZW50KSwgcHJpdi0+dG91Y2hDb250ZXh0KSk7CisKKyAgICByZXR1cm4gVFJVRTsK
K30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlUXVlcnlUb29sdGlwKEd0a1dp
ZGdldCogd2lkZ2V0LCBnaW50IHgsIGdpbnQgeSwgZ2Jvb2xlYW4ga2V5Ym9hcmRNb2RlLCBHdGtU
b29sdGlwKiB0b29sdGlwKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXY7CkBAIC04OTYsNiArOTEyLDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3
QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICB3aWRnZXRDbGFzcy0+YnV0dG9uX3JlbGVhc2Vf
ZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblJlbGVhc2VFdmVudDsKICAgICB3aWRnZXRD
bGFzcy0+c2Nyb2xsX2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VTY3JvbGxFdmVudDsKICAgICB3
aWRnZXRDbGFzcy0+bW90aW9uX25vdGlmeV9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlTW90aW9u
Tm90aWZ5RXZlbnQ7CisgICAgd2lkZ2V0Q2xhc3MtPnRvdWNoX2V2ZW50ID0gd2Via2l0V2ViVmll
d0Jhc2VUb3VjaEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5xdWVyeV90b29sdGlwID0gd2Via2l0
V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXA7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICB3
aWRnZXRDbGFzcy0+ZHJhZ19lbmQgPSB3ZWJraXRXZWJWaWV3QmFzZURyYWdFbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQgYi9Tb3VyY2UvYXV0
b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKaW5kZXggYzhiZjBkYi4uYTkyNDBjNiAxMDA2
NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CisrKyBiL1Nv
dXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNApAQCAtMTY3LDcgKzE2Nyw3IEBA
ICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVmaW5lcy1maWxlcyAkQ09ORklH
VVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBcCiAgICAgRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQ9MSBc
CiAgICAgRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQz0xXAogICAgIEVOQUJMRV9U
RVhUX0FVVE9TSVpJTkc9MCBcCi0gICAgRU5BQkxFX1RPVUNIX0VWRU5UUz0wIFwKKyAgICBFTkFC
TEVfVE9VQ0hfRVZFTlRTPTEgXAogICAgIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MCBcCiAg
ICAgRU5BQkxFX1VTRVJfVElNSU5HPTAgXAogICAgIEVOQUJMRV9WSUJSQVRJT049MCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlCmluZGV4IGNhN2U4MTQuLjMxMTE4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
CkBAIC02Niw3ICs2Niw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9TSEFET1dfRE9NIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9TSEFSRURfV09SS0VSUyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9TUEVMTENIRUNLIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1RFTVBMQVRFX0VMRU1FTlQgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfVVNFUlNFTEVDVF9BTEwgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfVklCUkFUSU9OIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9WSURFTyBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0MzQ1ZjFiLi42Y2NmMTM5IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMTIt
MjQgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtd
IEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAg
ICAgICAoV1RSOjp1cGRhdGVFdmVudENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6Y3JlYXRlVG91Y2hFdmVudCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp1
cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2VuZFVw
ZGF0ZWRUb3VjaEV2ZW50cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRv
dWNoUG9pbnRSYWRpdXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpzZXRUb3Vj
aE1vZGlmaWVyKTogSW1wbGVtZW50IHRvdWNoIGV2ZW50IHByb3h5aW5nLgorCiAyMDE0LTAxLTMw
ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBF
bnN1cmUgZ2VuZXJhdGVkIGV2ZW50cyBoYXZlIGdpdmVuIG1vZGlmaWVycyBHREsgdW5kZXJzdGFu
ZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDU4MjYwMjcu
LmMwY2I0NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApAQCAt
OTEyLDYgKzkxMiwxMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzY2hlZHVsZUFzeW5jaHJvbm91c0tl
eURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYgogICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJU
b3VjaFBvaW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0YXRp
Y0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAgIHsgIm1vdXNlU2Nyb2xsQnkiLCBt
b3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJjb250aW51b3VzTW91c2VTY3Jv
bGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBkZDg5ZjQxLi4xZTI2M2I3IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC00MzIsNyArNDMyLDcgQEAg
bXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJXVEZfVVNFX1RJTEVEX0JBQ0tJTkdf
U1RPUkUiLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZhbHVlID0+IFwkdGlsZWRCYWNraW5nU3RvcmVT
dXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtZXZlbnRzIiwgZGVzYyA9PiAiVG9n
Z2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNI
X0VWRU5UUyIsIGRlZmF1bHQgPT4gKGlzSU9TV2ViS2l0KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+
IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9F
VkVOVFMiLCBkZWZhdWx0ID0+IChpc0lPU1dlYktpdCgpIHx8IGlzRWZsKCkgfHwgaXNHdGsoKSks
IHZhbHVlID0+IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidG91
Y2gtc2xpZGVyIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIFNsaWRlciBzdXBwb3J0IiwKICAgICAg
IGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX1NMSURFUiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4g
XCR0b3VjaFNsaWRlclN1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKaW5kZXggNWQzYTA0OC4uOGZkYzdiOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9FdmVudFNlbmRlclByb3h5LmgKQEAgLTI4LDYgKzI4LDggQEAKICNkZWZpbmUgRXZlbnRTZW5k
ZXJQcm94eV9oCiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNs
dWRlIDxnZGsvZ2RrLmg+CkBAIC05MCw2ICs5Miw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIHZvaWQgc2VuZE9yUXVldWVFdmVudChHZGtFdmVudCopOwogICAgIEdka0V2ZW50
KiBjcmVhdGVNb3VzZUJ1dHRvbkV2ZW50KEdka0V2ZW50VHlwZSwgdW5zaWduZWQgYnV0dG9uLCBX
S0V2ZW50TW9kaWZpZXJzKTsKKyAgICBHZGtFdmVudCogY3JlYXRlVG91Y2hFdmVudChHZGtFdmVu
dFR5cGUsIGludCBpZCk7CisgICAgdm9pZCBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7CiAjZWxp
ZiBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KGNvbnN0IFdUUkV2ZW50
Jik7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7CkBAIC0xMTAsNiAr
MTE0LDggQEAgcHJpdmF0ZToKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBEZXF1ZTxXVFJFdmVu
dFF1ZXVlSXRlbT4gbV9ldmVudFF1ZXVlOwogICAgIHVuc2lnbmVkIG1fbW91c2VCdXR0b25DdXJy
ZW50bHlEb3duOworICAgIFZlY3RvcjxHZGtFdmVudCo+IG1fdG91Y2hFdmVudHM7CisgICAgSGFz
aE1hcDxHZGtFdmVudCosIGludD4gbV91cGRhdGVkVG91Y2hFdmVudHM7CiAjZWxpZiBQTEFURk9S
TShFRkwpCiAgICAgRGVxdWU8V1RSRXZlbnQ+IG1fZXZlbnRRdWV1ZTsKICAgICBXS0V2ZW50TW91
c2VCdXR0b24gbV9tb3VzZUJ1dHRvbjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggNDBmNjU5ZS4uNjdiZTc5MyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFdmVudFNl
bmRlclByb3h5LmgiCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8
Z2RrL2dka2tleXN5bXMuaD4KQEAgLTQ0MSw0ICs0NDIsMTIzIEBAIHZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKICAgICBtX3RpbWUgKz0gbWlsbGlz
ZWNvbmRzIC8gMTAwMC4wOwogfQogCit2b2lkIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoR2RrRXZl
bnQqIHRvdWNoRXZlbnQsIGludCB4LCBpbnQgeSkKK3sKKyAgICB0b3VjaEV2ZW50LT50b3VjaC54
ID0geDsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC55ID0geTsKKworICAgIGludCB4Um9vdCwgeVJv
b3Q7CisgICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHModG91Y2hFdmVudC0+dG91Y2gud2lu
ZG93LCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueF9yb290
ID0geFJvb3Q7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueV9yb290ID0geVJvb3Q7Cit9CisKK0dk
a0V2ZW50KiBFdmVudFNlbmRlclByb3h5OjpjcmVhdGVUb3VjaEV2ZW50KEdka0V2ZW50VHlwZSBl
dmVudFR5cGUsIGludCBpZCkKK3sKKyAgICBHZGtFdmVudCogdG91Y2hFdmVudCA9IGdka19ldmVu
dF9uZXcoZXZlbnRUeXBlKTsKKworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnNlcXVlbmNlID0gKEdk
a0V2ZW50U2VxdWVuY2UqKSBHSU5UX1RPX1BPSU5URVIoaWQpOworICAgIHRvdWNoRXZlbnQtPnRv
dWNoLndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKG1fdGVzdENvbnRy
b2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSk7CisgICAgZ19vYmplY3RfcmVm
KHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdyk7CisgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UodG91
Y2hFdmVudCwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxh
eV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheSh0b3VjaEV2ZW50LT5i
dXR0b24ud2luZG93KSkpKTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC50aW1lID0gR0RLX0NVUlJF
TlRfVElNRTsKKworICAgIHJldHVybiB0b3VjaEV2ZW50OworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIEdka0V2ZW50KiBldmVu
dCA9IGNyZWF0ZVRvdWNoRXZlbnQoKEdka0V2ZW50VHlwZSkgR0RLX1RPVUNIX0JFR0lOLCBtX3Rv
dWNoRXZlbnRzLnNpemUoKSArIDEpOworICAgIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoZXZlbnQs
IHgsIHkpOworICAgIG1fdG91Y2hFdmVudHMuYXBwZW5kKGV2ZW50KTsKKyAgICBtX3VwZGF0ZWRU
b3VjaEV2ZW50cy5hZGQoZXZlbnQsIEdQT0lOVEVSX1RPX0lOVChldmVudC0+dG91Y2guc2VxdWVu
Y2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KGludCBp
bmRleCwgaW50IHgsIGludCB5KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwg
bV90b3VjaEV2ZW50cy5zaXplKCkpOworCisgICAgR2RrRXZlbnQqIGV2ZW50ID0gbV90b3VjaEV2
ZW50c1tpbmRleF07CisgICAgQVNTRVJUKGV2ZW50KTsKKworICAgIGV2ZW50LT50eXBlID0gR0RL
X1RPVUNIX1VQREFURTsKKyAgICB1cGRhdGVFdmVudENvb3JkaW5hdGVzKGV2ZW50LCB4LCB5KTsK
KyAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5hZGQoZXZlbnQsIEdQT0lOVEVSX1RPX0lOVChldmVu
dC0+dG91Y2guc2VxdWVuY2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kVXBk
YXRlZFRvdWNoRXZlbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3VwZGF0ZWRUb3VjaEV2
ZW50cy5iZWdpbigpOyBpdCAhPSBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5lbmQoKTsgKytpdCkKKyAg
ICAgICAgc2VuZE9yUXVldWVFdmVudChnZGtfZXZlbnRfY29weShpdC0+a2V5KSk7CisKKyAgICBt
X3VwZGF0ZWRUb3VjaEV2ZW50cy5jbGVhcigpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnRvdWNoU3RhcnQoKQoreworICAgIHNlbmRVcGRhdGVkVG91Y2hFdmVudHMoKTsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUoKQoreworICAgIHNlbmRVcGRhdGVkVG91Y2hF
dmVudHMoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCgpCit7CisgICAg
c2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRv
dWNoQ2FuY2VsKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3RvdWNoRXZlbnRzLnNpemUoKTsgKytpKQorICAgICAgICBnZGtfZXZlbnRfZnJlZSht
X3RvdWNoRXZlbnRzW2ldKTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7CisgICAgbV91cGRh
dGVkVG91Y2hFdmVudHMuY2xlYXIoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyZWxl
YXNlVG91Y2hQb2ludChpbnQgaW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5k
ZXggPCBtX3RvdWNoRXZlbnRzLnNpemUoKSk7CisKKyAgICBHZGtFdmVudCogZXZlbnQgPSBtX3Rv
dWNoRXZlbnRzW2luZGV4XTsKKyAgICBldmVudC0+dHlwZSA9IEdES19UT1VDSF9FTkQ7CisgICAg
bV91cGRhdGVkVG91Y2hFdmVudHMuYWRkKGV2ZW50LCBHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRv
dWNoLnNlcXVlbmNlKSk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2FuY2VsVG91Y2hQ
b2ludChpbnQgaW5kZXgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFdmVu
dFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50UmFkaXVzKGludCByYWRpdXNYLCBpbnQgcmFkaXVz
WSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnNldFRvdWNoTW9kaWZpZXIoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllciwgYm9vbCBlbmFibGUp
Cit7CisgICAgZ3VpbnQgc3RhdGUgPSB3ZWJraXRNb2RpZmllcnNUb0dES01vZGlmaWVycyhtb2Rp
Zmllcik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90b3VjaEV2ZW50cy5zaXpl
KCk7ICsraSkgeworICAgICAgICBHZGtFdmVudCogZXZlbnQgPSBtX3RvdWNoRXZlbnRzW2ldOwor
CisgICAgICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgICAgIGV2ZW50LT50b3Vj
aC5zdGF0ZSB8PSBzdGF0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnQtPnRvdWNo
LnN0YXRlICY9IH4oc3RhdGUpOworCisgICAgICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmFkZChl
dmVudCwgR1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1ZW5jZSkpOworICAgIH0KK30K
KworCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223391</attachid>
            <date>2014-02-06 15:19:16 -0800</date>
            <delta_ts>2014-02-07 10:33:58 -0800</delta_ts>
            <desc>Updated patch, applies most suggestions</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>44274</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOTQ3YWJjLi4wZGFkMjgx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAg
ICAgIFtHVEtdIEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0
dXJlcy5tNDogc2V0IEVOQUJMRV9UT1VDSF9FVkVOVFMgdG8gMSBpZiBidWlsZGluZyB3aXRoIEdU
SysuCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOiBzZXQgRU5B
QkxFX1RPVUNIX0VWRU5UUywgYXBwbGllcyB0byBib3RoIEdUSysgYW5kIEVGTC4KKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvT3B0aW9uc0VGTC5jbWFrZTogcmVtb3ZlIEVOQUJMRV9UT1VDSF9FVkVO
VFMsIGNvdmVyZWQgbm93IGluIFdlYktpdEZlYXR1cmVzLmNtYWtlCisKIDIwMTQtMDItMDUgIEFu
ZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUo
RElSRUNUT1JZX1VQTE9BRCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzA5ZDI1OC4uY2VmNjEyYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9y
Zz4KKworICAgICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9uczogcmVtb3ZlIGZhc3QvZXZlbnRzL3RvdWNoCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
LXdrMi9UZXN0RXhwZWN0YXRpb25zOiBBZGQgbmV3IGV4cGVjdGF0aW9ucyBvbgorICAgICAgICBm
YXN0L2V2ZW50cy90b3VjaCBldmVudHMuCisKIDIwMTQtMDItMDYgIEZyw6lkw6lyaWMgV2FuZyAg
PGZyZWQud2FuZ0BmcmVlLmZyPgogCiAgICAgICAgIERvIG5vdCBkcmF3IG11bHRpLWNoYXJhY3Rl
cnMgPG1pPiBpbiBpdGFsaWMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGst
d2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggODk3N2IwNS4uZjBkMjc4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjU3LDYgKzI1Nyw5IEBAIHdlYmtp
dC5vcmcvYi8zNTMwMCBodHRwL3Rlc3RzL2xvYWRpbmcvMzA3LWFmdGVyLTMwMy1hZnRlci1wb3N0
Lmh0bWwgWyBGYWlsdXJlIF0KICMgTmVlZHMgY3VzdG9tIHBvbGljeSBkZWxlZ2F0ZSBlbmhhbmNl
bWVudCB0byBsb2cgZG93bmxvYWRzCiBCdWcoR1RLKSBodHRwL3Rlc3RzL2Rvd25sb2FkIFsgRmFp
bHVyZSBdCiAKKyMgVG91Y2ggc3VwcG9ydCBvbmx5IGltcGxlbWVudGVkIGluIFdLMgorZmFzdC9l
dmVudHMvdG91Y2ggWyBTa2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
ICMgRW5kIG9mIFRlc3RzIGZhaWxpbmcKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MzVhNjM1ZC4uOTViYTA0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTg2LDYgKzE4NiwyMyBAQCB3ZWJraXQub3JnL2IvODU0NjMgZWRp
dGluZy9pbnNlcnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9yZS1VUkwu
aAogd2Via2l0Lm9yZy9iLzEyMDQwMSBmYXN0L2V2ZW50cyBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzEyMDQwMSBlZGl0aW5nL3NlbGVjdGlvbiBbIFNraXAgXQogCisjIFRlc3RzIGluIHRoZSBnZXN0
dXJlIGZvbGRlciBleGVyY2lzZSBJT1Mtc3BlY2lmaWMgY29kZSwgbm9uIGFwcGxpYWJsZSB0byBH
VEsrCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlIFsgU2tpcCBdCisKKyMgVGhlc2UgdGVzdHMg
cmVseSBvbiB0b3VjaCBldmVudCBncm91cGluZywgd2hpY2ggWDExL0dUSysgZG9lc24ndCBkbyBi
eSBkZXNpZ24KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtbXVs
dGktdG91Y2gtZXZlbnRzLWxpbWl0ZWQuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEy
ODE3MiBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10b3VjaC1ldmVudHMuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1pbnB1
dC1lbGVtZW50LWNoYW5nZS1kb2N1bWVudHMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9mcmFtZS1ob3Zlci11cGRhdGUuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9tdWx0aS10b3VjaC1n
cm91cGVkLXRhcmdldHMuaHRtbCBbIFRpbWVvdXQgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTI4
MTcyIGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWluc2lkZS1uZXN0ZWQtaWZyYW1lcy5o
dG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL211
bHRpLXRvdWNoLWluc2lkZS1pZnJhbWVzLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8x
MjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5odG1sIFsg
VGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL3BhZ2Utc2Nh
bGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzEy
ODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbCBbIFRpbWVvdXQgXQord2Vi
a2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQtbGltaXRlZC5o
dG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL3Nl
bmQtb25jYW5jZWwtZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogIyBFbmQgb2YgRXhwZWN0ZWQgZmFpbHVyZXMKICMvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDBlNDBhNjQuLjY4ZGQ0Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xNTMsOSArMTUzLDYgQEAgd2Via2l0Lm9yZy9iLzk4OTI3IGZh
c3QvZG9tL0RldmljZU9yaWVudGF0aW9uIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjExNDAgZmFz
dC9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjExNDAgaHR0cC90ZXN0cy9u
b3RpZmljYXRpb25zIFsgU2tpcCBdCiAKLSMgVGhlc2UgdGVzdHMgcmVxdWlyZSB0b3VjaCBzdXBw
b3J0Lgotd2Via2l0Lm9yZy9iLzk4OTMxIGZhc3QvZXZlbnRzL3RvdWNoIFsgU2tpcCBdCi0KICMg
U3RvcmFnZVRyYWNrZXIgaXMgbm90IGVuYWJsZWQuCiB3ZWJraXQub3JnL2IvOTg5MzMgc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlciBbIFNraXAgXQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNWNmNmU4OC4uOWNlZWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAgICAg
ICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29kZSB0byBidWlsZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBpbiBmYXN0L2V2ZW50
cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsrIG5vdyB0aGF0IHRvdWNoCisgICAgICAg
IHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVzIGFsbCBleHBlY3RlZCBiaXRzIGFyZSB0
aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaDogQWRkIGhl
bHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9pbnRzLCBoYW5keQorICAgICAgICB3aGVu
IGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogYmluZGluZ3MvZ29iamVj
dC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0ZWQgY29kZSBhbmQgaWRscyB0byBidWls
ZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBub3cgdGhhdCBHVEsrIGltcGxlbWVudHMg
dG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTA1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFdoZWVsIGV2ZW50cyBkb24ndCBsYXRjaCB0byBpbm5lciBzY3Jv
bGxhYmxlIGVsZW1lbnRzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTkzOTc1
ZS4uZmY1NmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yOTk2LDggKzI5
OTYsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5v
ZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBc
CisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAgXApAQCAtNjE4
Nyw2ICs2MTkwLDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3Vj
aENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91
Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGls
aXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2YmRiZjg3Li45NDc4MTVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMjAyLDYgKzIwMiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9y
bUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAog
ICAgIHBsYXRmb3JtL2d0ay9HdGtQbHVnaW5XaWRnZXQuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0
a1BvcHVwTWVudS5jcHAKKyAgICBwbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmNw
cAogICAgIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0
a1ZlcnNpb25pbmcuYwogICAgIHBsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAK
QEAgLTUyOSw2ICs1MzAsNyBAQCBpZiAoRU5BQkxFX1dFQktJVDIpCiAgICAgICAgIGRvbS9SYW5n
ZS5pZGwKICAgICAgICAgZG9tL1NoYWRvd1Jvb3QuaWRsCiAgICAgICAgIGRvbS9UZXh0LmlkbAor
ICAgICAgICBkb20vVG91Y2guaWRsCiAgICAgICAgIGRvbS9UcmVlV2Fsa2VyLmlkbAogICAgICAg
ICBkb20vVUlFdmVudC5pZGwKICAgICAgICAgZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IGJlNWUy
YTUuLjY4Y2RiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVt
YWtlZmlsZS5hbQpAQCAtMjYyLDYgKzI2Miw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01TdHlsZVNoZWV0UHJp
dmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0UHJpdmF0ZS5oIFwKKwlEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2guY3BwIFwKKwlEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2hQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01UcmVlV2Fsa2VyLmNwcCBcCkBAIC0zMjMsNiArMzI1LDcgQEAgd2Via2l0
Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTVJhbmdlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01U
ZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Ub3VjaC5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJlZVdhbGtlci5oIFwKIAlEZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVUlFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NQmxvYi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCmluZGV4IDllMmJkNWIuLjIxYjQ0OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3ltYm9scwpA
QCAtMTY2Miw2ICsxNjYyLDE4IEBAIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3do
ZWVsX2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVudCopCiBnbG9uZyB3ZWJraXRfZG9tX3doZWVs
X2V2ZW50X2dldF93aGVlbF9kZWx0YV95KFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2xvbmcgd2Vi
a2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2hlZWxfZGVsdGEoV2ViS2l0RE9NV2hlZWxFdmVudCop
CiBnYm9vbGVhbiB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93ZWJraXRfZGlyZWN0aW9uX2lu
dmVydGVkX2Zyb21fZGV2aWNlKFdlYktpdERPTVdoZWVsRXZlbnQqKQorV2ViS2l0RE9NRXZlbnRU
YXJnZXQqIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3RhcmdldChXZWJLaXRET01Ub3VjaCopCitnZmxv
YXQgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X2ZvcmNlKFdlYktpdERPTVRvdWNoKikKK2dm
bG9hdCB3ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfcm90YXRpb25fYW5nbGUoV2ViS2l0RE9N
VG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3goV2ViS2l0RE9NVG91
Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3koV2ViS2l0RE9NVG91Y2gq
KQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfcGFnZV94KFdlYktpdERPTVRvdWNoKikKK2ds
b25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3BhZ2VfeShXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3
ZWJraXRfZG9tX3RvdWNoX2dldF9zY3JlZW5feChXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJr
aXRfZG9tX3RvdWNoX2dldF9zY3JlZW5feShXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRf
ZG9tX3RvdWNoX2dldF93ZWJraXRfcmFkaXVzX3goV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Vi
a2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X3JhZGl1c195KFdlYktpdERPTVRvdWNoKikKK2d1bG9u
ZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9pZGVudGlmaWVyKFdlYktpdERPTVRvdWNoKikKIGdjaGFy
KiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2dldF9pZChXZWJLaXRET01BdWRpb1RyYWNrKikKIGdj
aGFyKiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2dldF9raW5kKFdlYktpdERPTUF1ZGlvVHJhY2sq
KQogZ2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2xhYmVsKFdlYktpdERPTUF1ZGlv
VHJhY2sqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNo
Q29udGV4dEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hD
b250ZXh0SGVscGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTFi
YzliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1Rv
dWNoQ29udGV4dEhlbHBlci5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBDYXJsb3MgR2FybmFjaG8gPGNhcmxvc2dAZ25vbWUub3JnPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3RrVG91Y2hDb250ZXh0SGVscGVyLmgiCisK
KyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBHdGtU
b3VjaENvbnRleHRIZWxwZXI6OmhhbmRsZUV2ZW50KEdka0V2ZW50KiB0b3VjaEV2ZW50KQorewor
I2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIHVpbnQzMl90IHNlcXVlbmNlID0gR1BPSU5U
RVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKHRvdWNoRXZlbnQpKTsKKwor
ICAgIHN3aXRjaCAodG91Y2hFdmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX0JFR0lO
OiB7CisgICAgICAgIEFTU0VSVChtX3RvdWNoRXZlbnRzLmNvbnRhaW5zKHNlcXVlbmNlKSk7Cisg
ICAgICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9jb3B5KHRvdWNoRXZl
bnQpKTsKKyAgICAgICAgbV90b3VjaEV2ZW50cy5hZGQoc2VxdWVuY2UsIHN0ZDo6bW92ZShldmVu
dCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOiB7
CisgICAgICAgIGF1dG8gaXQgPSBtX3RvdWNoRXZlbnRzLmZpbmQoc2VxdWVuY2UpOworICAgICAg
ICBBU1NFUlQoaXQgIT0gbV90b3VjaEV2ZW50cy5lbmQoKSk7CisgICAgICAgIGl0LT52YWx1ZS5y
ZXNldChnZGtfZXZlbnRfY29weSh0b3VjaEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIEFTU0VSVChtX3RvdWNoRXZlbnRzLmNv
bnRhaW5zKHNlcXVlbmNlKSk7CisgICAgICAgIG1fdG91Y2hFdmVudHMucmVtb3ZlKHNlcXVlbmNl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yYjI4NWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBHdGtUb3VjaENvbnRleHRIZWxwZXJfaAorI2RlZmluZSBHdGtU
b3VjaENvbnRleHRIZWxwZXJfaAorCisjaW5jbHVkZSAiR1VuaXF1ZVB0ckd0ay5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90LCBHVW5pcXVlUHRyPEdk
a0V2ZW50Pj4gVG91Y2hFdmVudHNNYXA7CisKK2NsYXNzIEd0a1RvdWNoQ29udGV4dEhlbHBlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3RrVG91Y2hDb250ZXh0SGVscGVyKTsKK3B1Ymxp
YzoKKyAgICBHdGtUb3VjaENvbnRleHRIZWxwZXIoKSB7IH07CisgICAgYm9vbCBoYW5kbGVFdmVu
dChHZGtFdmVudCopOworICAgIGNvbnN0IFRvdWNoRXZlbnRzTWFwJiB0b3VjaEV2ZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fdG91Y2hFdmVudHM7IH07CisKK3ByaXZhdGU6CisgICAgVG91Y2hFdmVu
dHNNYXAgbV90b3VjaEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggODhkMTBmMy4uN2M1MGM1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3Nn
QGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBbGxvdyBidWlsZGluZyB3aXRoIHRvdWNoIGV2
ZW50cyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEV2ZW4gdGhvdWdoIFdlYktpdDEgR1RLIGNvZGUgZG9lc24ndCBpbXBsZW1lbnQgdG91Y2gg
ZXZlbnRzLAorICAgICAgICBGaXggYnVpbGQgaWYgRU5BQkxFX1RPVUNIX0VWRU5UUyBpcyBwcmVz
ZW50IGZvciBXSzIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpuZWVkVG91Y2hFdmVudHMpOiBBZGQg
ZW1wdHkgc3R1YgorCiAyMDE0LTAyLTA1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShTVkcpIGd1YXJkcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCAxZGU3
ZjJmLi42NGEwOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTQzLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0No
YW5nZWQodW5zaWduZWQpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgbmVlZFRvdWNoRXZlbnRz
KGJvb2wpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXll
cihGcmFtZSosIEdyYXBoaWNzTGF5ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
T25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMWFlZDk5Li5i
MDRjZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTMtMTItMjMgIENhcmxvcyBH
YXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBz
dXBwb3J0IHRvdWNoIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiBHVEsrID49IDMuNC4wLCBHZGtFdmVudFRvdWNoIGlzIGF2YWlsYWJsZSB0
byBpbmZvcm0gYWJvdXQgbXVsdGl0b3VjaCBldmVudHMuIFVzZSB0aGVzZSB0byBpbXBsZW1lbnQK
KyAgICAgICAgdG91Y2ggZXZlbnRzIG9uIHRoaXMgcGxhdGZvcm0uIElmIGEgdG91Y2ggaXMgbGVm
dCB1bmhhbmRsZWQgYW5kIGlzIHRoZSAicG9pbnRlciBlbXVsYXRpbmciIG9uZSwgbW91c2UKKyAg
ICAgICAgZXZlbnRzIHdpbGwgYmUgZ2VuZXJhdGVkIGFzIGEgZmFsbGJhY2suCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAg
ICAgICAqIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHA6CisgICAgICAgICog
U2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2Vi
VG91Y2hFdmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3Vj
aEV2ZW50Ojp0b3VjaENvbnRleHQpOiBBZGQgR1RLKyBpbXBsZW1lbnRhdGlvbiBvZiBOYXRpdmVX
ZWJUb3VjaEV2ZW50LgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6dG91Y2hQaGFzZUZyb21FdmVudHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQpOiBBZGQgbWV0aG9kcyB0byBn
ZW5lcmF0ZSBXZWJUb3VjaEV2ZW50cyBvdXQKKyAgICAgICAgb2YgR2RrRXZlbnRUb3VjaCBldmVu
dHMsIGEgR3RrVG91Y2hDb250ZXh0SGVscGVyIG9iamVjdCBpcyB1c2VkIHRvIGhvbGQgaW5mb3Jt
YXRpb24gYWJvdXQgYWxsIGN1cnJlbnQKKyAgICAgICAgdG91Y2hlcywgaW4gb3JkZXIgdG8gYnVp
bGQgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGluZGl2aWR1YWwgdG91Y2hwb2ludHMuCisgICAgICAg
ICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Ojpkb25lV2l0aFRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgcG9pbnRlciBlbXVsYXRpb24uIElmIGEg
dG91Y2ggZXZlbnQgd2FzIHVuaGFuZGxlZAorICAgICAgICBpbiBET00gYW5kIHBlcnRhaW5zIHRv
IHRoZSB0b3VjaCBzZXF1ZW5jZSB0aGF0IGVtdWxhdGVzIHBvaW50ZXIgZXZlbnRzLiBUaGUgZXZl
bnQgZ2V0cyB0cmFuc2Zvcm1lZCB0byBpdHMKKyAgICAgICAgbW91c2UgZXZlbnQgY291bnRlcnBh
cnQgYW5kIGhhbmRsZWQgYnkgdGhlIHdpZGdldCBhZ2Fpbi4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZSk6
IExpc3RlbiBmb3IgdG91Y2ggZXZlbnRzCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRvdWNo
RXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdCk6IEFkZCBp
bXBsZW1lbnRhdGlvbiBmb3IgdGhlIHRvdWNoX2V2ZW50cygpIGhhbmRsZXIsIHRoaXMgbWVyZWx5
CisgICAgICAgIGxldHMgdGhlIHBhZ2VQcm94eSBoYW5kbGUgdGhlIE5hdGl2ZVdlYlRvdWNoRXZl
bnQgd2UgY3JlYXRlIHRvIHdyYXAgdGhlIEdka0V2ZW50IHJlY2VpdmVkLgorCiAyMDE0LTAyLTA2
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFj
ZSDigJkgd2l0aCAnIHRvIHNpbGVuY2UgdGhlIGNoZWNrLWZvci13ZWJraXQtZnJhbWV3b3JrLWlu
Y2x1ZGUtY29uc2lzdGVuY3kgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMTVlZGVkMy4uMzhlY2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
ODQsNiArMzg0LDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IDRhODRhOTIuLjg0NDJkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC01Niw2ICs1
Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9ndGsvTGF5ZXJU
cmVlQ29udGV4dEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRH
dGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAorICAgIFNo
YXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL05hdGl2
ZVdlYldoZWVsRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9HdGsuY3BwCiAg
ICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCkBAIC01NjUsNiArNTY2
LDggQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICAgICAgU2hhcmVkL1dlYktleWJv
YXJkRXZlbnQuY3BwCiAgICAgICAgIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKICAgICAg
ICAgU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJQbGF0Zm9ybVRv
dWNoUG9pbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAogICAgICAgICBT
aGFyZWQvV2ViV2hlZWxFdmVudC5jcHAKIAogICAgICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50
aWZpZXJEYXRhLmNwcApAQCAtNTgzLDYgKzU4Niw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NF
U1MpCiAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcAog
ICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCisgICAgICAgIFNo
YXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9O
YXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRleCAwZDRi
MmNmLi5lZjViZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
VG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2
ZW50LmgKQEAgLTMxLDkgKzMxLDEwIEBACiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25p
emVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlm
IFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgorI2VsaWYgUExBVEZPUk0oRUZM
KQogI2luY2x1ZGUgIkV3a1RvdWNoRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRy
YW5zZm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ2LDggKzQ3LDEyIEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVu
dChVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKik7CiAgICAgY29uc3QgVUlXZWJU
b3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlm
IFBMQVRGT1JNKEdUSykKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmKTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiwgV2ViQ29yZTo6
R3RrVG91Y2hDb250ZXh0SGVscGVyJik7CisgICAgY29uc3QgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNv
cmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV90b3VjaENvbnRleHQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBOYXRpdmVXZWJUb3Vj
aEV2ZW50KEV3a1RvdWNoRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsK
ICAgICBjb25zdCBFd2tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNTUsOCArNjAsMTAgQEAgcHVibGljOgog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPFVJV2ViVG91Y2hFdmVu
dHNHZXN0dXJlUmVjb2duaXplcj4gbV9uYXRpdmVFdmVudDsKLSNlbmRpZgotI2lmIFBMQVRGT1JN
KEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBtX25h
dGl2ZUV2ZW50OworICAgIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgbV90
b3VjaENvbnRleHQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUmVmUHRyPEV3a1RvdWNoRXZl
bnQ+IG1fbmF0aXZlRXZlbnQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iMmNkNGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9t
ZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVX
ZWJUb3VjaEV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKyNpbmNsdWRl
IDxnZGsvZ2RrLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVXZWJUb3VjaEV2ZW50
OjpOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiBldmVudCwgV2ViQ29yZTo6R3RrVG91Y2hD
b250ZXh0SGVscGVyJiBjb250ZXh0KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQsIGNvbnRleHQpKQorICAgICwgbV9uYXRpdmVF
dmVudChnZGtfZXZlbnRfY29weShldmVudCkpCisgICAgLCBtX3RvdWNoQ29udGV4dChjb250ZXh0
KQoreworfQorCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgZXZlbnQu
dG91Y2hDb250ZXh0KCkpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVu
dC5uYXRpdmVFdmVudCgpKSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGV2ZW50LnRvdWNoQ29udGV4
dCgpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBjYjg4YTgyLi40NjJiMTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8
Z2RrL2dkay5oPgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtMjAzLDQgKzIwNCw3NSBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKKyNp
Zm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKK3N0YXRpYyBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoUG9pbnRTdGF0ZSB0b3VjaFBoYXNlRnJvbUV2ZW50cyhjb25zdCBHZGtFdmVudCogY3VycmVu
dCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChnZGtfZXZlbnRfZ2V0X2V2ZW50
X3NlcXVlbmNlKGN1cnJlbnQpICE9IGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2UoZXZlbnQp
KQorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7
CisKKyAgICBzd2l0Y2ggKGN1cnJlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VDSF9VUERB
VEU6CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7Cisg
ICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIHJl
dHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5Owor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwZW5kVG91Y2hFdmVudChWZWN0b3I8V2ViUGxhdGZv
cm1Ub3VjaFBvaW50PiYgdG91Y2hQb2ludExpc3QsIGNvbnN0IEdka0V2ZW50KiBldmVudCwgV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGUpCit7CisgICAgdWludDMy
X3QgaWRlbnRpZmllciA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1
ZW5jZShldmVudCkpOworCisgICAgZ2RvdWJsZSB4LCB5OworICAgIGdka19ldmVudF9nZXRfY29v
cmRzKGV2ZW50LCAmeCwgJnkpOworCisgICAgZ2RvdWJsZSB4Um9vdCwgeVJvb3Q7CisgICAgZ2Rr
X2V2ZW50X2dldF9yb290X2Nvb3JkcyhldmVudCwgJnhSb290LCAmeVJvb3QpOworCisgICAgV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50IHRvdWNoUG9pbnQoaWRlbnRpZmllciwgc3RhdGUsIEludFBvaW50
KHhSb290LCB5Um9vdCksIEludFBvaW50KHgsIHkpKTsKKyAgICB0b3VjaFBvaW50TGlzdC51bmNo
ZWNrZWRBcHBlbmQodG91Y2hQb2ludCk7Cit9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIK
KworV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29u
c3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXIm
IHRvdWNoQ29udGV4dCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICBXZWJFdmVu
dDo6VHlwZSB0eXBlID0gV2ViRXZlbnQ6Ok5vVHlwZTsKKyAgICBjb25zdCBhdXRvJiB0b3VjaEV2
ZW50cyA9IHRvdWNoQ29udGV4dC50b3VjaEV2ZW50cygpOworICAgIGludCBudW1FdmVudHMgPSB0
b3VjaEV2ZW50cy5zaXplKCk7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7CisgICAgY2Fz
ZSBHREtfVE9VQ0hfQkVHSU46CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6VG91Y2hTdGFydDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOgorICAgICAgICB0eXBl
ID0gV2ViRXZlbnQ6OlRvdWNoTW92ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVE9V
Q0hfRU5EOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoRW5kOworICAgICAgICArK251
bUV2ZW50czsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4g
dG91Y2hQb2ludExpc3Q7CisgICAgdG91Y2hQb2ludExpc3QucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShudW1FdmVudHMpOworCisgICAgZm9yIChhdXRvIGl0ID0gdG91Y2hFdmVudHMuYmVnaW4oKTsg
aXQgIT0gdG91Y2hFdmVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIGFwcGVuZFRvdWNoRXZlbnQo
dG91Y2hQb2ludExpc3QsIGl0LT52YWx1ZS5nZXQoKSwgdG91Y2hQaGFzZUZyb21FdmVudHMoaXQt
PnZhbHVlLmdldCgpLCBldmVudCkpOworCisgICAgLy8gVG91Y2ggd2FzIGFscmVhZHkgcmVtb3Zl
ZCBmcm9tIHRoZSBHdGtUb3VjaENvbnRleHRIZWxwZXIsIGFkZCBpdCBoZXJlLgorICAgIGlmIChl
dmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICBhcHBlbmRUb3VjaEV2ZW50KHRv
dWNoUG9pbnRMaXN0LCBldmVudCwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2Vk
KTsKKworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGUsIHRvdWNoUG9pbnRMaXN0LCBtb2Rp
ZmllcnNGb3JFdmVudChldmVudCksIGdka19ldmVudF9nZXRfdGltZShldmVudCkpOworI2Vsc2UK
KyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCgpOworI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8y
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsv
V2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggMDg1ODE1Yy4uZmMzMDI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25SZXN1bHRz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtUb3VjaENvbnRleHRIZWxwZXIuaD4KIAogdHlwZWRl
ZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAKQEAgLTM5LDYgKzQwLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZl
bnQqLCBpbnQpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQo
Y29uc3QgR2RrRXZlbnQqKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJL
ZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25S
ZXN1bHRzJik7CisgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChj
b25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNGI3ZGExZC4uM2QwN2Q4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcApAQCAtMzI3LDQgKzMyNyw1NCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4
aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UgogCiAj
ZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
b25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wg
d2FzRXZlbnRIYW5kbGVkKQoreworICAgIGlmICh3YXNFdmVudEhhbmRsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEVtdWxhdGUgcG9pbnRlciBldmVudHMgaWYgdW5oYW5kbGVkLgorICAg
IGNvbnN0IEdka0V2ZW50KiB0b3VjaEV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQoKTsKKworICAg
IGlmICghdG91Y2hFdmVudC0+dG91Y2guZW11bGF0aW5nX3BvaW50ZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IHBvaW50ZXJFdmVudDsKKworICAgIGlmICh0
b3VjaEV2ZW50LT50eXBlID09IEdES19UT1VDSF9VUERBVEUpIHsKKyAgICAgICAgcG9pbnRlckV2
ZW50LnJlc2V0KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9OT1RJRlkpKTsKKyAgICAgICAgcG9p
bnRlckV2ZW50LT5tb3Rpb24udGltZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnRpbWU7CisgICAgICAg
IHBvaW50ZXJFdmVudC0+bW90aW9uLnggPSB0b3VjaEV2ZW50LT50b3VjaC54OworICAgICAgICBw
b2ludGVyRXZlbnQtPm1vdGlvbi55ID0gdG91Y2hFdmVudC0+dG91Y2gueTsKKyAgICAgICAgcG9p
bnRlckV2ZW50LT5tb3Rpb24ueF9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueF9yb290OworICAg
ICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi55X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3VjaC55X3Jv
b3Q7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnN0YXRlID0gdG91Y2hFdmVudC0+dG91
Y2guc3RhdGUgfCBHREtfQlVUVE9OMV9NQVNLOworICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRj
aCAodG91Y2hFdmVudC0+dHlwZSkgeworICAgICAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAg
ICAgICAgICBwb2ludGVyRXZlbnQucmVzZXQoZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1JFTEVB
U0UpKTsKKyAgICAgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnN0YXRlID0gdG91Y2hFdmVu
dC0+dG91Y2guc3RhdGUgfCBHREtfQlVUVE9OMV9NQVNLOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR0RLX1RPVUNIX0JFR0lOOgorICAgICAgICAgICAgcG9pbnRlckV2ZW50LnJl
c2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9QUkVTUykpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLmJ1dHRvbiA9IDE7CisgICAg
ICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnRpbWUgPSB0b3VjaEV2ZW50LT50b3VjaC50aW1lOwor
ICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54ID0gdG91Y2hFdmVudC0+dG91Y2gueDsKKyAg
ICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueSA9IHRvdWNoRXZlbnQtPnRvdWNoLnk7CisgICAg
ICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnhfcm9vdCA9IHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9v
dDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueV9yb290ID0gdG91Y2hFdmVudC0+dG91
Y2gueV9yb290OworICAgIH0KKworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHBvaW50ZXJFdmVu
dC5nZXQoKSwgZ2RrX2V2ZW50X2dldF9kZXZpY2UodG91Y2hFdmVudCkpOworICAgIGdka19ldmVu
dF9zZXRfc291cmNlX2RldmljZShwb2ludGVyRXZlbnQuZ2V0KCksIGdka19ldmVudF9nZXRfc291
cmNlX2RldmljZSh0b3VjaEV2ZW50KSk7CisgICAgcG9pbnRlckV2ZW50LT5hbnkud2luZG93ID0g
R0RLX1dJTkRPVyhnX29iamVjdF9yZWYodG91Y2hFdmVudC0+YW55LndpbmRvdykpOworICAgIHBv
aW50ZXJFdmVudC0+YW55LnNlbmRfZXZlbnQgPSBUUlVFOworCisgICAgZ3RrX3dpZGdldF9ldmVu
dChtX3ZpZXdXaWRnZXQsIHBvaW50ZXJFdmVudC5nZXQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmgKaW5kZXggOTYzYzJjZS4uMGQ2M2UzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMTksNiArMTE5LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFs
RnJhbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3Vj
aEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkg
b3ZlcnJpZGU7CisKICAgICAvLyBNZW1iZXJzIG9mIFBhZ2VDbGllbnRJbXBsIGNsYXNzCiAgICAg
R3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVyIG1fdW5k
b0NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZDRkMzAxOC4uNGE0ZTgyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrQ2xpY2tDb3VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HdGtEcmFnQW5kRHJvcEhlbHBlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hDb250
ZXh0SGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CkBAIC0xMTAsNiArMTExLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUgewogICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGNvbnRleHRNZW51RXZlbnQ7CiAgICAgV2Vi
Q29udGV4dE1lbnVQcm94eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQcm94eTsKICAgICBXZWJWaWV3
QmFzZUlucHV0TWV0aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVyOworICAgIEd0a1RvdWNoQ29u
dGV4dEhlbHBlciB0b3VjaENvbnRleHQ7CiAKICAgICBHdGtXaW5kb3cqIHRvcGxldmVsT25TY3Jl
ZW5XaW5kb3c7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFJlc2l6ZUdyaXBWaXNpYmlsaXR5
SUQ7CkBAIC0yNzIsNyArMjc0LDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFs
aXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgICAgICB8IEdES19CVVRUT05fTU9USU9OX01BU0sK
ICAgICAgICAgfCBHREtfQlVUVE9OMV9NT1RJT05fTUFTSwogICAgICAgICB8IEdES19CVVRUT04y
X01PVElPTl9NQVNLCi0gICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0s7CisgICAgICAg
IHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0sKKyAgICAgICAgfCBHREtfVE9VQ0hfTUFTSzsKIAog
ICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dBX1ZJ
U1VBTDsKIApAQCAtNzEyLDYgKzcxNSwxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmll
d0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNbwogICAg
IHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VUb3Vj
aEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFRvdWNoKiBldmVudCkKK3sKKyAgICBX
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRn
ZXQpLT5wcml2OworCisgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0aW9uRGlhbG9nKQorICAgICAg
ICByZXR1cm4gVFJVRTsKKworICAgIHByaXYtPnRvdWNoQ29udGV4dC5oYW5kbGVFdmVudChyZWlu
dGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKTsKKyAgICBwcml2LT5wYWdlUHJveHktPmhh
bmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2
ZW50Kj4oZXZlbnQpLCBwcml2LT50b3VjaENvbnRleHQpKTsKKworICAgIHJldHVybiBUUlVFOwor
fQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXAoR3RrV2lk
Z2V0KiB3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LCBnYm9vbGVhbiBrZXlib2FyZE1vZGUsIEd0a1Rv
b2x0aXAqIHRvb2x0aXApCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
V0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsKQEAgLTg5Niw2ICs5MTIsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdC
YXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIHdpZGdldENsYXNzLT5idXR0b25fcmVsZWFzZV9l
dmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUmVsZWFzZUV2ZW50OwogICAgIHdpZGdldENs
YXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVNjcm9sbEV2ZW50OwogICAgIHdp
ZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5X2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25O
b3RpZnlFdmVudDsKKyAgICB3aWRnZXRDbGFzcy0+dG91Y2hfZXZlbnQgPSB3ZWJraXRXZWJWaWV3
QmFzZVRvdWNoRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnF1ZXJ5X3Rvb2x0aXAgPSB3ZWJraXRX
ZWJWaWV3QmFzZVF1ZXJ5VG9vbHRpcDsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHdp
ZGdldENsYXNzLT5kcmFnX2VuZCA9IHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0VuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNCBiL1NvdXJjZS9hdXRv
dG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCA1ZGFmN2I5Li5kMzA3MzhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKKysrIGIvU291
cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CkBAIC0xNTksNyArMTU5LDcgQEAg
JHNyY2Rpci9Ub29scy9ndGsvZ2VuZXJhdGUtZmVhdHVyZS1kZWZpbmVzLWZpbGVzICRDT05GSUdV
UkFCTEVfRkVBVFVSRV9ERUZJTkVTIFwKICAgICBFTkFCTEVfVEVNUExBVEVfRUxFTUVOVD0xIFwK
ICAgICBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDPTFcCiAgICAgRU5BQkxFX1RF
WFRfQVVUT1NJWklORz0wIFwKLSAgICBFTkFCTEVfVE9VQ0hfRVZFTlRTPTAgXAorICAgIEVOQUJM
RV9UT1VDSF9FVkVOVFM9MSBcCiAgICAgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0wIFwKICAg
ICBFTkFCTEVfVVNFUl9USU1JTkc9MCBcCiAgICAgRU5BQkxFX1ZJQlJBVElPTj0wIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UKaW5kZXggODVlNTY2NS4uYWFiODg5YiAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UK
QEAgLTg5LDcgKzg5LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X1NFQ0NPTVBfRklMVEVSUyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfU0hBUkVEX1dPUktFUlMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfU1BFTExDSEVDSyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9URU1QTEFURV9FTEVNRU5UIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9WSUJSQVRJT04gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfVklERU8gT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IDI3YWYxNDYu
LmJkNjliNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC02Niw3ICs2Niw2IEBAIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFET1dfRE9NIE9GRikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFSRURfV09SS0VSUyBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TUEVMTENIRUNLIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQgT04pCi1X
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9GRikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSUJSQVRJT04gT0ZG
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIE9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtl
L1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IDU1ZDc2ZmYuLmVhNmIxODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2Vi
S2l0RmVhdHVyZXMuY21ha2UKQEAgLTEwOSw3ICsxMDksNyBAQCBtYWNybyhXRUJLSVRfT1BUSU9O
X0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9TVkdfRk9OVFMgIlRvZ2ds
ZSBTVkcgZm9udHMgc3VwcG9ydCAoaW1wbGVzIFNWRyBzdXBwb3J0KSIgT04pCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQgIlRvZ2dsZSBUZW1wbGF0ZSBz
dXBwb3J0IiBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfVEVYVF9BVVRPU0la
SU5HICJUb2dnbGUgVGV4dCBhdXRvIHNpemluZyBzdXBwb3J0IiBPRkYpCi0gICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX1RPVUNIX0VWRU5UUyAiVG9nZ2xlIFRvdWNoIEV2ZW50cyBzdXBw
b3J0IiBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1RPVUNIX0VWRU5UUyAi
VG9nZ2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0IiBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfVE9VQ0hfU0xJREVSICJUb2dnbGUgVG91Y2ggU2xpZGVyIHN1cHBvcnQiIE9GRikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HICJUb2dn
bGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfVVNFUlNFTEVDVF9BTEwgIlRvZ2dsZSB1c2VyLXNlbGVjdDphbGwgc3VwcG9y
dCIgT0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGRlYmJmMmEuLjIzNzQ0NDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0xMi0yNCAgQ2FybG9zIEdhcm5h
Y2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gRW5hYmxlIHRvdWNoIGZl
YXR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OnVwZGF0
ZUV2ZW50Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpjcmVh
dGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQ
b2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpzZW5kVXBkYXRlZFRvdWNoRXZlbnRz
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hQb2ludFJhZGl1cyk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIpOiBJbXBs
ZW1lbnQgdG91Y2ggZXZlbnQgcHJveHlpbmcuCisKIDIwMTQtMDItMDYgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNjM1MzAuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRT
ZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAppbmRl
eCA1ODI2MDI3Li5jMGNiNDUyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHAKQEAgLTkxMiw2ICs5MTIsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2NoZWR1bGVBc3lu
Y2hyb25vdXNLZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2IKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVl
UmVmIGNsZWFyVG91Y2hQb2ludHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0
aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKICAgICB7ICJtb3VzZVNj
cm9sbEJ5IiwgbW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAiY29udGludW91
c01vdXNlU2Nyb2xsQnkiLCBjb250aW51b3VzTW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggNWI2MjY0Ni4uNTMx
MDM3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtNDI2LDcg
KzQyNiw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiV1RGX1VTRV9USUxF
RF9CQUNLSU5HX1NUT1JFIiwgZGVmYXVsdCA9PiBpc0VmbCgpLCB2YWx1ZSA9PiBcJHRpbGVkQmFj
a2luZ1N0b3JlU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWV2ZW50cyIsIGRl
c2MgPT4gIlRvZ2dsZSBUb3VjaCBFdmVudHMgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9UT1VDSF9FVkVOVFMiLCBkZWZhdWx0ID0+IChpc0lPU1dlYktpdCgpIHx8IGlzRWZsKCkp
LCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAoaXNJT1NXZWJLaXQoKSB8fCBpc0VmbCgpIHx8
IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAogCiAgICAgeyBvcHRp
b24gPT4gInRvdWNoLXNsaWRlciIsIGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBTbGlkZXIgc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9TTElERVIiLCBkZWZhdWx0ID0+IDAs
IHZhbHVlID0+IFwkdG91Y2hTbGlkZXJTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
RXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDVkM2EwNDguLjk1OGE4OGIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC0yOCw4ICsyOCwxMSBAQAogI2RlZmlu
ZSBFdmVudFNlbmRlclByb3h5X2gKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0o
R1RLKQorI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUgPGdkay9n
ZGsuaD4KICNlbGlmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDxXZWJLaXQyL0VXZWJLaXQyLmg+
CkBAIC05MCw2ICs5Myw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQg
c2VuZE9yUXVldWVFdmVudChHZGtFdmVudCopOwogICAgIEdka0V2ZW50KiBjcmVhdGVNb3VzZUJ1
dHRvbkV2ZW50KEdka0V2ZW50VHlwZSwgdW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJz
KTsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBjcmVhdGVUb3VjaEV2ZW50KEdka0V2ZW50VHlw
ZSwgaW50IGlkKTsKKyAgICB2b2lkIHNlbmRVcGRhdGVkVG91Y2hFdmVudHMoKTsKICNlbGlmIFBM
QVRGT1JNKEVGTCkKICAgICB2b2lkIHNlbmRPclF1ZXVlRXZlbnQoY29uc3QgV1RSRXZlbnQmKTsK
ICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoY29uc3QgV1RSRXZlbnQmKTsKQEAgLTExMCw2ICsxMTUs
OCBAQCBwcml2YXRlOgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIERlcXVlPFdUUkV2ZW50UXVl
dWVJdGVtPiBtX2V2ZW50UXVldWU7CiAgICAgdW5zaWduZWQgbV9tb3VzZUJ1dHRvbkN1cnJlbnRs
eURvd247CisgICAgVmVjdG9yPEdVbmlxdWVQdHI8R2RrRXZlbnQ+PiBtX3RvdWNoRXZlbnRzOwor
ICAgIEhhc2hNYXA8R2RrRXZlbnQqLCBpbnQ+IG1fdXBkYXRlZFRvdWNoRXZlbnRzOwogI2VsaWYg
UExBVEZPUk0oRUZMKQogICAgIERlcXVlPFdUUkV2ZW50PiBtX2V2ZW50UXVldWU7CiAgICAgV0tF
dmVudE1vdXNlQnV0dG9uIG1fbW91c2VCdXR0b247CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCmluZGV4IDQwZjY1OWUuLmYyNThlNjkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlH
dGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlH
dGsuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RXZlbnRTZW5kZXJQcm94eS5oIgogCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CkBAIC00NDEsNCArNDQyLDExOSBAQCB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpCiAgICAgbV90aW1lICs9
IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKIH0KIAordm9pZCB1cGRhdGVFdmVudENvb3JkaW5hdGVz
KEdka0V2ZW50KiB0b3VjaEV2ZW50LCBpbnQgeCwgaW50IHkpCit7CisgICAgdG91Y2hFdmVudC0+
dG91Y2gueCA9IHg7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueSA9IHk7CisKKyAgICBpbnQgeFJv
b3QsIHlSb290OworICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKHRvdWNoRXZlbnQtPnRv
dWNoLndpbmRvdywgeCwgeSwgJnhSb290LCAmeVJvb3QpOworICAgIHRvdWNoRXZlbnQtPnRvdWNo
Lnhfcm9vdCA9IHhSb290OworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnlfcm9vdCA9IHlSb290Owor
fQorCitHVW5pcXVlUHRyPEdka0V2ZW50PiBFdmVudFNlbmRlclByb3h5OjpjcmVhdGVUb3VjaEV2
ZW50KEdka0V2ZW50VHlwZSBldmVudFR5cGUsIGludCBpZCkKK3sKKyAgICBHVW5pcXVlUHRyPEdk
a0V2ZW50PiB0b3VjaEV2ZW50KGdka19ldmVudF9uZXcoZXZlbnRUeXBlKSk7CisKKyAgICB0b3Vj
aEV2ZW50LT50b3VjaC5zZXF1ZW5jZSA9IHN0YXRpY19jYXN0PEdka0V2ZW50U2VxdWVuY2UqPihH
SU5UX1RPX1BPSU5URVIoaWQpKTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC53aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF93aW5kb3coR1RLX1dJREdFVChtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmll
dygpLT5wbGF0Zm9ybVZpZXcoKSkpOworICAgIGdfb2JqZWN0X3JlZih0b3VjaEV2ZW50LT50b3Vj
aC53aW5kb3cpOworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHRvdWNoRXZlbnQuZ2V0KCksIGdk
a19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2Rldmlj
ZV9tYW5hZ2VyKGdka193aW5kb3dfZ2V0X2Rpc3BsYXkodG91Y2hFdmVudC0+YnV0dG9uLndpbmRv
dykpKSk7CisgICAgdG91Y2hFdmVudC0+dG91Y2gudGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisK
KyAgICByZXR1cm4gdG91Y2hFdmVudDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRU
b3VjaFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVu
dCA9IGNyZWF0ZVRvdWNoRXZlbnQoc3RhdGljX2Nhc3Q8R2RrRXZlbnRUeXBlPihHREtfVE9VQ0hf
QkVHSU4pLCBtX3RvdWNoRXZlbnRzLnNpemUoKSArIDEpOworICAgIHVwZGF0ZUV2ZW50Q29vcmRp
bmF0ZXMoZXZlbnQuZ2V0KCksIHgsIHkpOworICAgIG1fdG91Y2hFdmVudHMuYXBwZW5kKHN0ZDo6
bW92ZShldmVudCkpOworICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmFkZChldmVudC5nZXQoKSwg
R1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1ZW5jZSkpOworfQorCit2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkpCit7
CisgICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5kZXggPCBtX3RvdWNoRXZlbnRzLnNpemUoKSk7
CisKKyAgICBjb25zdCBhdXRvJiBldmVudCA9IG1fdG91Y2hFdmVudHNbaW5kZXhdOworICAgIEFT
U0VSVChldmVudCk7CisKKyAgICBldmVudC0+dHlwZSA9IEdES19UT1VDSF9VUERBVEU7CisgICAg
dXBkYXRlRXZlbnRDb29yZGluYXRlcyhldmVudC5nZXQoKSwgeCwgeSk7CisgICAgbV91cGRhdGVk
VG91Y2hFdmVudHMuYWRkKGV2ZW50LmdldCgpLCBHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRvdWNo
LnNlcXVlbmNlKSk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZFVwZGF0ZWRUb3Vj
aEV2ZW50cygpCit7CisgICAgZm9yIChhdXRvIGl0ID0gbV91cGRhdGVkVG91Y2hFdmVudHMuYmVn
aW4oKTsgaXQgIT0gbV91cGRhdGVkVG91Y2hFdmVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIHNl
bmRPclF1ZXVlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoaXQtPmtleSkpOworCisgICAgbV91cGRhdGVk
VG91Y2hFdmVudHMuY2xlYXIoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0
YXJ0KCkKK3sKKyAgICBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKK3sKKyAgICBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQoKQoreworICAgIHNlbmRVcGRh
dGVkVG91Y2hFdmVudHMoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNl
bCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5
OjpjbGVhclRvdWNoUG9pbnRzKCkKK3sKKyAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5jbGVhcigp
OworICAgIG1fdG91Y2hFdmVudHMuY2xlYXIoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5
OjpyZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4ID49IDAg
JiYgaW5kZXggPCBtX3RvdWNoRXZlbnRzLnNpemUoKSk7CisKKyAgICBjb25zdCBhdXRvJiBldmVu
dCA9IG1fdG91Y2hFdmVudHNbaW5kZXhdOworICAgIGV2ZW50LT50eXBlID0gR0RLX1RPVUNIX0VO
RDsKKyAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5hZGQoZXZlbnQuZ2V0KCksIEdQT0lOVEVSX1RP
X0lOVChldmVudC0+dG91Y2guc2VxdWVuY2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5
OjpjYW5jZWxUb3VjaFBvaW50KGludCBpbmRleCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoUG9pbnRSYWRpdXMoaW50IHJhZGl1
c1gsIGludCByYWRpdXNZKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcihXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVy
LCBib29sIGVuYWJsZSkKK3sKKyAgICBndWludCBzdGF0ZSA9IHdlYmtpdE1vZGlmaWVyc1RvR0RL
TW9kaWZpZXJzKG1vZGlmaWVyKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgZXZlbnQgOiBtX3Rv
dWNoRXZlbnRzKSB7CisgICAgICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgICAg
IGV2ZW50LT50b3VjaC5zdGF0ZSB8PSBzdGF0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZXZlbnQtPnRvdWNoLnN0YXRlICY9IH4oc3RhdGUpOworCisgICAgICAgIG1fdXBkYXRlZFRvdWNo
RXZlbnRzLmFkZChldmVudC5nZXQoKSwgR1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1
ZW5jZSkpOworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223469</attachid>
            <date>2014-02-07 10:33:58 -0800</date>
            <delta_ts>2014-02-07 10:50:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>44276</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOTQ3YWJjLi4wZGFkMjgx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAg
ICAgIFtHVEtdIEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0
dXJlcy5tNDogc2V0IEVOQUJMRV9UT1VDSF9FVkVOVFMgdG8gMSBpZiBidWlsZGluZyB3aXRoIEdU
SysuCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOiBzZXQgRU5B
QkxFX1RPVUNIX0VWRU5UUywgYXBwbGllcyB0byBib3RoIEdUSysgYW5kIEVGTC4KKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvT3B0aW9uc0VGTC5jbWFrZTogcmVtb3ZlIEVOQUJMRV9UT1VDSF9FVkVO
VFMsIGNvdmVyZWQgbm93IGluIFdlYktpdEZlYXR1cmVzLmNtYWtlCisKIDIwMTQtMDItMDUgIEFu
ZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUo
RElSRUNUT1JZX1VQTE9BRCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzA5ZDI1OC4uY2VmNjEyYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9y
Zz4KKworICAgICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9uczogcmVtb3ZlIGZhc3QvZXZlbnRzL3RvdWNoCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
LXdrMi9UZXN0RXhwZWN0YXRpb25zOiBBZGQgbmV3IGV4cGVjdGF0aW9ucyBvbgorICAgICAgICBm
YXN0L2V2ZW50cy90b3VjaCBldmVudHMuCisKIDIwMTQtMDItMDYgIEZyw6lkw6lyaWMgV2FuZyAg
PGZyZWQud2FuZ0BmcmVlLmZyPgogCiAgICAgICAgIERvIG5vdCBkcmF3IG11bHRpLWNoYXJhY3Rl
cnMgPG1pPiBpbiBpdGFsaWMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGst
d2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggODk3N2IwNS4uZjBkMjc4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjU3LDYgKzI1Nyw5IEBAIHdlYmtp
dC5vcmcvYi8zNTMwMCBodHRwL3Rlc3RzL2xvYWRpbmcvMzA3LWFmdGVyLTMwMy1hZnRlci1wb3N0
Lmh0bWwgWyBGYWlsdXJlIF0KICMgTmVlZHMgY3VzdG9tIHBvbGljeSBkZWxlZ2F0ZSBlbmhhbmNl
bWVudCB0byBsb2cgZG93bmxvYWRzCiBCdWcoR1RLKSBodHRwL3Rlc3RzL2Rvd25sb2FkIFsgRmFp
bHVyZSBdCiAKKyMgVG91Y2ggc3VwcG9ydCBvbmx5IGltcGxlbWVudGVkIGluIFdLMgorZmFzdC9l
dmVudHMvdG91Y2ggWyBTa2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
ICMgRW5kIG9mIFRlc3RzIGZhaWxpbmcKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MzVhNjM1ZC4uOTViYTA0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTg2LDYgKzE4NiwyMyBAQCB3ZWJraXQub3JnL2IvODU0NjMgZWRp
dGluZy9pbnNlcnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9yZS1VUkwu
aAogd2Via2l0Lm9yZy9iLzEyMDQwMSBmYXN0L2V2ZW50cyBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzEyMDQwMSBlZGl0aW5nL3NlbGVjdGlvbiBbIFNraXAgXQogCisjIFRlc3RzIGluIHRoZSBnZXN0
dXJlIGZvbGRlciBleGVyY2lzZSBJT1Mtc3BlY2lmaWMgY29kZSwgbm9uIGFwcGxpYWJsZSB0byBH
VEsrCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlIFsgU2tpcCBdCisKKyMgVGhlc2UgdGVzdHMg
cmVseSBvbiB0b3VjaCBldmVudCBncm91cGluZywgd2hpY2ggWDExL0dUSysgZG9lc24ndCBkbyBi
eSBkZXNpZ24KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtbXVs
dGktdG91Y2gtZXZlbnRzLWxpbWl0ZWQuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEy
ODE3MiBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10b3VjaC1ldmVudHMuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1pbnB1
dC1lbGVtZW50LWNoYW5nZS1kb2N1bWVudHMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9mcmFtZS1ob3Zlci11cGRhdGUuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9tdWx0aS10b3VjaC1n
cm91cGVkLXRhcmdldHMuaHRtbCBbIFRpbWVvdXQgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTI4
MTcyIGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWluc2lkZS1uZXN0ZWQtaWZyYW1lcy5o
dG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL211
bHRpLXRvdWNoLWluc2lkZS1pZnJhbWVzLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8x
MjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5odG1sIFsg
VGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL3BhZ2Utc2Nh
bGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzEy
ODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbCBbIFRpbWVvdXQgXQord2Vi
a2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQtbGltaXRlZC5o
dG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL3Nl
bmQtb25jYW5jZWwtZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogIyBFbmQgb2YgRXhwZWN0ZWQgZmFpbHVyZXMKICMvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDBlNDBhNjQuLjY4ZGQ0Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xNTMsOSArMTUzLDYgQEAgd2Via2l0Lm9yZy9iLzk4OTI3IGZh
c3QvZG9tL0RldmljZU9yaWVudGF0aW9uIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjExNDAgZmFz
dC9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjExNDAgaHR0cC90ZXN0cy9u
b3RpZmljYXRpb25zIFsgU2tpcCBdCiAKLSMgVGhlc2UgdGVzdHMgcmVxdWlyZSB0b3VjaCBzdXBw
b3J0Lgotd2Via2l0Lm9yZy9iLzk4OTMxIGZhc3QvZXZlbnRzL3RvdWNoIFsgU2tpcCBdCi0KICMg
U3RvcmFnZVRyYWNrZXIgaXMgbm90IGVuYWJsZWQuCiB3ZWJraXQub3JnL2IvOTg5MzMgc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlciBbIFNraXAgXQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNWNmNmU4OC4uOWNlZWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKworICAgICAg
ICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29kZSB0byBidWlsZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBpbiBmYXN0L2V2ZW50
cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsrIG5vdyB0aGF0IHRvdWNoCisgICAgICAg
IHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVzIGFsbCBleHBlY3RlZCBiaXRzIGFyZSB0
aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaDogQWRkIGhl
bHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9pbnRzLCBoYW5keQorICAgICAgICB3aGVu
IGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogYmluZGluZ3MvZ29iamVj
dC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0ZWQgY29kZSBhbmQgaWRscyB0byBidWls
ZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBub3cgdGhhdCBHVEsrIGltcGxlbWVudHMg
dG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTA1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFdoZWVsIGV2ZW50cyBkb24ndCBsYXRjaCB0byBpbm5lciBzY3Jv
bGxhYmxlIGVsZW1lbnRzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTkzOTc1
ZS4uZmY1NmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yOTk2LDggKzI5
OTYsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5v
ZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5vZGVUcmF2ZXJzYWwu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBc
CisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAgXApAQCAtNjE4
Nyw2ICs2MTkwLDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtUb3Vj
aENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91
Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGls
aXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2YmRiZjg3Li45NDc4MTVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMjAyLDYgKzIwMiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9y
bUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAog
ICAgIHBsYXRmb3JtL2d0ay9HdGtQbHVnaW5XaWRnZXQuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0
a1BvcHVwTWVudS5jcHAKKyAgICBwbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVyLmNw
cAogICAgIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0
a1ZlcnNpb25pbmcuYwogICAgIHBsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAK
QEAgLTUyOSw2ICs1MzAsNyBAQCBpZiAoRU5BQkxFX1dFQktJVDIpCiAgICAgICAgIGRvbS9SYW5n
ZS5pZGwKICAgICAgICAgZG9tL1NoYWRvd1Jvb3QuaWRsCiAgICAgICAgIGRvbS9UZXh0LmlkbAor
ICAgICAgICBkb20vVG91Y2guaWRsCiAgICAgICAgIGRvbS9UcmVlV2Fsa2VyLmlkbAogICAgICAg
ICBkb20vVUlFdmVudC5pZGwKICAgICAgICAgZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IGJlNWUy
YTUuLjY4Y2RiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVt
YWtlZmlsZS5hbQpAQCAtMjYyLDYgKzI2Miw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01TdHlsZVNoZWV0UHJp
dmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0UHJpdmF0ZS5oIFwKKwlEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2guY3BwIFwKKwlEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2hQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01UcmVlV2Fsa2VyLmNwcCBcCkBAIC0zMjMsNiArMzI1LDcgQEAgd2Via2l0
Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTVJhbmdlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01U
ZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Ub3VjaC5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJlZVdhbGtlci5oIFwKIAlEZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVUlFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NQmxvYi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCmluZGV4IDllMmJkNWIuLjIxYjQ0OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3ltYm9scwpA
QCAtMTY2Miw2ICsxNjYyLDE4IEBAIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3do
ZWVsX2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVudCopCiBnbG9uZyB3ZWJraXRfZG9tX3doZWVs
X2V2ZW50X2dldF93aGVlbF9kZWx0YV95KFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2xvbmcgd2Vi
a2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2hlZWxfZGVsdGEoV2ViS2l0RE9NV2hlZWxFdmVudCop
CiBnYm9vbGVhbiB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93ZWJraXRfZGlyZWN0aW9uX2lu
dmVydGVkX2Zyb21fZGV2aWNlKFdlYktpdERPTVdoZWVsRXZlbnQqKQorV2ViS2l0RE9NRXZlbnRU
YXJnZXQqIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3RhcmdldChXZWJLaXRET01Ub3VjaCopCitnZmxv
YXQgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X2ZvcmNlKFdlYktpdERPTVRvdWNoKikKK2dm
bG9hdCB3ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfcm90YXRpb25fYW5nbGUoV2ViS2l0RE9N
VG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3goV2ViS2l0RE9NVG91
Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3koV2ViS2l0RE9NVG91Y2gq
KQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfcGFnZV94KFdlYktpdERPTVRvdWNoKikKK2ds
b25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3BhZ2VfeShXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3
ZWJraXRfZG9tX3RvdWNoX2dldF9zY3JlZW5feChXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJr
aXRfZG9tX3RvdWNoX2dldF9zY3JlZW5feShXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRf
ZG9tX3RvdWNoX2dldF93ZWJraXRfcmFkaXVzX3goV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Vi
a2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X3JhZGl1c195KFdlYktpdERPTVRvdWNoKikKK2d1bG9u
ZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9pZGVudGlmaWVyKFdlYktpdERPTVRvdWNoKikKIGdjaGFy
KiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2dldF9pZChXZWJLaXRET01BdWRpb1RyYWNrKikKIGdj
aGFyKiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2dldF9raW5kKFdlYktpdERPTUF1ZGlvVHJhY2sq
KQogZ2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2xhYmVsKFdlYktpdERPTUF1ZGlv
VHJhY2sqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNo
Q29udGV4dEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hD
b250ZXh0SGVscGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTFi
YzliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1Rv
dWNoQ29udGV4dEhlbHBlci5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBDYXJsb3MgR2FybmFjaG8gPGNhcmxvc2dAZ25vbWUub3JnPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3RrVG91Y2hDb250ZXh0SGVscGVyLmgiCisK
KyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBHdGtU
b3VjaENvbnRleHRIZWxwZXI6OmhhbmRsZUV2ZW50KEdka0V2ZW50KiB0b3VjaEV2ZW50KQorewor
I2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIHVpbnQzMl90IHNlcXVlbmNlID0gR1BPSU5U
RVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKHRvdWNoRXZlbnQpKTsKKwor
ICAgIHN3aXRjaCAodG91Y2hFdmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX0JFR0lO
OiB7CisgICAgICAgIEFTU0VSVChtX3RvdWNoRXZlbnRzLmNvbnRhaW5zKHNlcXVlbmNlKSk7Cisg
ICAgICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9jb3B5KHRvdWNoRXZl
bnQpKTsKKyAgICAgICAgbV90b3VjaEV2ZW50cy5hZGQoc2VxdWVuY2UsIHN0ZDo6bW92ZShldmVu
dCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOiB7
CisgICAgICAgIGF1dG8gaXQgPSBtX3RvdWNoRXZlbnRzLmZpbmQoc2VxdWVuY2UpOworICAgICAg
ICBBU1NFUlQoaXQgIT0gbV90b3VjaEV2ZW50cy5lbmQoKSk7CisgICAgICAgIGl0LT52YWx1ZS5y
ZXNldChnZGtfZXZlbnRfY29weSh0b3VjaEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIEFTU0VSVChtX3RvdWNoRXZlbnRzLmNv
bnRhaW5zKHNlcXVlbmNlKSk7CisgICAgICAgIG1fdG91Y2hFdmVudHMucmVtb3ZlKHNlcXVlbmNl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yYjI4NWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBHdGtUb3VjaENvbnRleHRIZWxwZXJfaAorI2RlZmluZSBHdGtU
b3VjaENvbnRleHRIZWxwZXJfaAorCisjaW5jbHVkZSAiR1VuaXF1ZVB0ckd0ay5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90LCBHVW5pcXVlUHRyPEdk
a0V2ZW50Pj4gVG91Y2hFdmVudHNNYXA7CisKK2NsYXNzIEd0a1RvdWNoQ29udGV4dEhlbHBlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3RrVG91Y2hDb250ZXh0SGVscGVyKTsKK3B1Ymxp
YzoKKyAgICBHdGtUb3VjaENvbnRleHRIZWxwZXIoKSB7IH07CisgICAgYm9vbCBoYW5kbGVFdmVu
dChHZGtFdmVudCopOworICAgIGNvbnN0IFRvdWNoRXZlbnRzTWFwJiB0b3VjaEV2ZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fdG91Y2hFdmVudHM7IH07CisKK3ByaXZhdGU6CisgICAgVG91Y2hFdmVu
dHNNYXAgbV90b3VjaEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggODhkMTBmMy4uN2M1MGM1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3Nn
QGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBbGxvdyBidWlsZGluZyB3aXRoIHRvdWNoIGV2
ZW50cyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEV2ZW4gdGhvdWdoIFdlYktpdDEgR1RLIGNvZGUgZG9lc24ndCBpbXBsZW1lbnQgdG91Y2gg
ZXZlbnRzLAorICAgICAgICBGaXggYnVpbGQgaWYgRU5BQkxFX1RPVUNIX0VWRU5UUyBpcyBwcmVz
ZW50IGZvciBXSzIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpuZWVkVG91Y2hFdmVudHMpOiBBZGQg
ZW1wdHkgc3R1YgorCiAyMDE0LTAyLTA1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShTVkcpIGd1YXJkcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCAxZGU3
ZjJmLi42NGEwOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTQzLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0No
YW5nZWQodW5zaWduZWQpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgbmVlZFRvdWNoRXZlbnRz
KGJvb2wpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXll
cihGcmFtZSosIEdyYXBoaWNzTGF5ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
T25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMWFlZDk5Li5i
MDRjZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTMtMTItMjMgIENhcmxvcyBH
YXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBz
dXBwb3J0IHRvdWNoIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiBHVEsrID49IDMuNC4wLCBHZGtFdmVudFRvdWNoIGlzIGF2YWlsYWJsZSB0
byBpbmZvcm0gYWJvdXQgbXVsdGl0b3VjaCBldmVudHMuIFVzZSB0aGVzZSB0byBpbXBsZW1lbnQK
KyAgICAgICAgdG91Y2ggZXZlbnRzIG9uIHRoaXMgcGxhdGZvcm0uIElmIGEgdG91Y2ggaXMgbGVm
dCB1bmhhbmRsZWQgYW5kIGlzIHRoZSAicG9pbnRlciBlbXVsYXRpbmciIG9uZSwgbW91c2UKKyAg
ICAgICAgZXZlbnRzIHdpbGwgYmUgZ2VuZXJhdGVkIGFzIGEgZmFsbGJhY2suCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAg
ICAgICAqIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHA6CisgICAgICAgICog
U2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2Vi
VG91Y2hFdmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3Vj
aEV2ZW50Ojp0b3VjaENvbnRleHQpOiBBZGQgR1RLKyBpbXBsZW1lbnRhdGlvbiBvZiBOYXRpdmVX
ZWJUb3VjaEV2ZW50LgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6dG91Y2hQaGFzZUZyb21FdmVudHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQpOiBBZGQgbWV0aG9kcyB0byBn
ZW5lcmF0ZSBXZWJUb3VjaEV2ZW50cyBvdXQKKyAgICAgICAgb2YgR2RrRXZlbnRUb3VjaCBldmVu
dHMsIGEgR3RrVG91Y2hDb250ZXh0SGVscGVyIG9iamVjdCBpcyB1c2VkIHRvIGhvbGQgaW5mb3Jt
YXRpb24gYWJvdXQgYWxsIGN1cnJlbnQKKyAgICAgICAgdG91Y2hlcywgaW4gb3JkZXIgdG8gYnVp
bGQgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGluZGl2aWR1YWwgdG91Y2hwb2ludHMuCisgICAgICAg
ICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Ojpkb25lV2l0aFRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgcG9pbnRlciBlbXVsYXRpb24uIElmIGEg
dG91Y2ggZXZlbnQgd2FzIHVuaGFuZGxlZAorICAgICAgICBpbiBET00gYW5kIHBlcnRhaW5zIHRv
IHRoZSB0b3VjaCBzZXF1ZW5jZSB0aGF0IGVtdWxhdGVzIHBvaW50ZXIgZXZlbnRzLiBUaGUgZXZl
bnQgZ2V0cyB0cmFuc2Zvcm1lZCB0byBpdHMKKyAgICAgICAgbW91c2UgZXZlbnQgY291bnRlcnBh
cnQgYW5kIGhhbmRsZWQgYnkgdGhlIHdpZGdldCBhZ2Fpbi4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZSk6
IExpc3RlbiBmb3IgdG91Y2ggZXZlbnRzCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRvdWNo
RXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdCk6IEFkZCBp
bXBsZW1lbnRhdGlvbiBmb3IgdGhlIHRvdWNoX2V2ZW50cygpIGhhbmRsZXIsIHRoaXMgbWVyZWx5
CisgICAgICAgIGxldHMgdGhlIHBhZ2VQcm94eSBoYW5kbGUgdGhlIE5hdGl2ZVdlYlRvdWNoRXZl
bnQgd2UgY3JlYXRlIHRvIHdyYXAgdGhlIEdka0V2ZW50IHJlY2VpdmVkLgorCiAyMDE0LTAyLTA2
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFj
ZSDigJkgd2l0aCAnIHRvIHNpbGVuY2UgdGhlIGNoZWNrLWZvci13ZWJraXQtZnJhbWV3b3JrLWlu
Y2x1ZGUtY29uc2lzdGVuY3kgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMTVlZGVkMy4uMzhlY2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
ODQsNiArMzg0LDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IDRhODRhOTIuLjg0NDJkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC01Niw2ICs1
Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9ndGsvTGF5ZXJU
cmVlQ29udGV4dEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRH
dGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAorICAgIFNo
YXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL05hdGl2
ZVdlYldoZWVsRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9HdGsuY3BwCiAg
ICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCkBAIC01NjUsNiArNTY2
LDggQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICAgICAgU2hhcmVkL1dlYktleWJv
YXJkRXZlbnQuY3BwCiAgICAgICAgIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKICAgICAg
ICAgU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJQbGF0Zm9ybVRv
dWNoUG9pbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAogICAgICAgICBT
aGFyZWQvV2ViV2hlZWxFdmVudC5jcHAKIAogICAgICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50
aWZpZXJEYXRhLmNwcApAQCAtNTgzLDYgKzU4Niw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NF
U1MpCiAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcAog
ICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCisgICAgICAgIFNo
YXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9O
YXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRleCAwZDRi
MmNmLi5lZjViZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
VG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2
ZW50LmgKQEAgLTMxLDkgKzMxLDEwIEBACiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25p
emVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlm
IFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgorI2VsaWYgUExBVEZPUk0oRUZM
KQogI2luY2x1ZGUgIkV3a1RvdWNoRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRy
YW5zZm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ2LDggKzQ3LDEyIEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVu
dChVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKik7CiAgICAgY29uc3QgVUlXZWJU
b3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlm
IFBMQVRGT1JNKEdUSykKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmKTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiwgV2ViQ29yZTo6
R3RrVG91Y2hDb250ZXh0SGVscGVyJik7CisgICAgY29uc3QgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNv
cmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV90b3VjaENvbnRleHQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBOYXRpdmVXZWJUb3Vj
aEV2ZW50KEV3a1RvdWNoRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsK
ICAgICBjb25zdCBFd2tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNTUsOCArNjAsMTAgQEAgcHVibGljOgog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPFVJV2ViVG91Y2hFdmVu
dHNHZXN0dXJlUmVjb2duaXplcj4gbV9uYXRpdmVFdmVudDsKLSNlbmRpZgotI2lmIFBMQVRGT1JN
KEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBtX25h
dGl2ZUV2ZW50OworICAgIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgbV90
b3VjaENvbnRleHQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUmVmUHRyPEV3a1RvdWNoRXZl
bnQ+IG1fbmF0aXZlRXZlbnQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iMmNkNGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9t
ZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVX
ZWJUb3VjaEV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKyNpbmNsdWRl
IDxnZGsvZ2RrLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVXZWJUb3VjaEV2ZW50
OjpOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiBldmVudCwgV2ViQ29yZTo6R3RrVG91Y2hD
b250ZXh0SGVscGVyJiBjb250ZXh0KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQsIGNvbnRleHQpKQorICAgICwgbV9uYXRpdmVF
dmVudChnZGtfZXZlbnRfY29weShldmVudCkpCisgICAgLCBtX3RvdWNoQ29udGV4dChjb250ZXh0
KQoreworfQorCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgZXZlbnQu
dG91Y2hDb250ZXh0KCkpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVu
dC5uYXRpdmVFdmVudCgpKSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGV2ZW50LnRvdWNoQ29udGV4
dCgpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBjYjg4YTgyLi40NjJiMTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8
Z2RrL2dkay5oPgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtMjAzLDQgKzIwNCw3NSBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKKyNp
Zm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKK3N0YXRpYyBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoUG9pbnRTdGF0ZSB0b3VjaFBoYXNlRnJvbUV2ZW50cyhjb25zdCBHZGtFdmVudCogY3VycmVu
dCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChnZGtfZXZlbnRfZ2V0X2V2ZW50
X3NlcXVlbmNlKGN1cnJlbnQpICE9IGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2UoZXZlbnQp
KQorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7
CisKKyAgICBzd2l0Y2ggKGN1cnJlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VDSF9VUERB
VEU6CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7Cisg
ICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIHJl
dHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5Owor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwZW5kVG91Y2hFdmVudChWZWN0b3I8V2ViUGxhdGZv
cm1Ub3VjaFBvaW50PiYgdG91Y2hQb2ludExpc3QsIGNvbnN0IEdka0V2ZW50KiBldmVudCwgV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGUpCit7CisgICAgdWludDMy
X3QgaWRlbnRpZmllciA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1
ZW5jZShldmVudCkpOworCisgICAgZ2RvdWJsZSB4LCB5OworICAgIGdka19ldmVudF9nZXRfY29v
cmRzKGV2ZW50LCAmeCwgJnkpOworCisgICAgZ2RvdWJsZSB4Um9vdCwgeVJvb3Q7CisgICAgZ2Rr
X2V2ZW50X2dldF9yb290X2Nvb3JkcyhldmVudCwgJnhSb290LCAmeVJvb3QpOworCisgICAgV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50IHRvdWNoUG9pbnQoaWRlbnRpZmllciwgc3RhdGUsIEludFBvaW50
KHhSb290LCB5Um9vdCksIEludFBvaW50KHgsIHkpKTsKKyAgICB0b3VjaFBvaW50TGlzdC51bmNo
ZWNrZWRBcHBlbmQodG91Y2hQb2ludCk7Cit9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIK
KworV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29u
c3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXIm
IHRvdWNoQ29udGV4dCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICBXZWJFdmVu
dDo6VHlwZSB0eXBlID0gV2ViRXZlbnQ6Ok5vVHlwZTsKKyAgICBjb25zdCBhdXRvJiB0b3VjaEV2
ZW50cyA9IHRvdWNoQ29udGV4dC50b3VjaEV2ZW50cygpOworICAgIGludCBudW1FdmVudHMgPSB0
b3VjaEV2ZW50cy5zaXplKCk7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7CisgICAgY2Fz
ZSBHREtfVE9VQ0hfQkVHSU46CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6VG91Y2hTdGFydDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOgorICAgICAgICB0eXBl
ID0gV2ViRXZlbnQ6OlRvdWNoTW92ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVE9V
Q0hfRU5EOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoRW5kOworICAgICAgICArK251
bUV2ZW50czsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4g
dG91Y2hQb2ludExpc3Q7CisgICAgdG91Y2hQb2ludExpc3QucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShudW1FdmVudHMpOworCisgICAgZm9yIChhdXRvIGl0ID0gdG91Y2hFdmVudHMuYmVnaW4oKTsg
aXQgIT0gdG91Y2hFdmVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIGFwcGVuZFRvdWNoRXZlbnQo
dG91Y2hQb2ludExpc3QsIGl0LT52YWx1ZS5nZXQoKSwgdG91Y2hQaGFzZUZyb21FdmVudHMoaXQt
PnZhbHVlLmdldCgpLCBldmVudCkpOworCisgICAgLy8gVG91Y2ggd2FzIGFscmVhZHkgcmVtb3Zl
ZCBmcm9tIHRoZSBHdGtUb3VjaENvbnRleHRIZWxwZXIsIGFkZCBpdCBoZXJlLgorICAgIGlmIChl
dmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICBhcHBlbmRUb3VjaEV2ZW50KHRv
dWNoUG9pbnRMaXN0LCBldmVudCwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2Vk
KTsKKworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGUsIHRvdWNoUG9pbnRMaXN0LCBtb2Rp
ZmllcnNGb3JFdmVudChldmVudCksIGdka19ldmVudF9nZXRfdGltZShldmVudCkpOworI2Vsc2UK
KyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCgpOworI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8y
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsv
V2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggMDg1ODE1Yy4uZmMzMDI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25SZXN1bHRz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtUb3VjaENvbnRleHRIZWxwZXIuaD4KIAogdHlwZWRl
ZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAKQEAgLTM5LDYgKzQwLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZl
bnQqLCBpbnQpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQo
Y29uc3QgR2RrRXZlbnQqKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJL
ZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25S
ZXN1bHRzJik7CisgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChj
b25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNGI3ZGExZC4uM2QwN2Q4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcApAQCAtMzI3LDQgKzMyNyw1NCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4
aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UgogCiAj
ZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
b25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wg
d2FzRXZlbnRIYW5kbGVkKQoreworICAgIGlmICh3YXNFdmVudEhhbmRsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEVtdWxhdGUgcG9pbnRlciBldmVudHMgaWYgdW5oYW5kbGVkLgorICAg
IGNvbnN0IEdka0V2ZW50KiB0b3VjaEV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQoKTsKKworICAg
IGlmICghdG91Y2hFdmVudC0+dG91Y2guZW11bGF0aW5nX3BvaW50ZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IHBvaW50ZXJFdmVudDsKKworICAgIGlmICh0
b3VjaEV2ZW50LT50eXBlID09IEdES19UT1VDSF9VUERBVEUpIHsKKyAgICAgICAgcG9pbnRlckV2
ZW50LnJlc2V0KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9OT1RJRlkpKTsKKyAgICAgICAgcG9p
bnRlckV2ZW50LT5tb3Rpb24udGltZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnRpbWU7CisgICAgICAg
IHBvaW50ZXJFdmVudC0+bW90aW9uLnggPSB0b3VjaEV2ZW50LT50b3VjaC54OworICAgICAgICBw
b2ludGVyRXZlbnQtPm1vdGlvbi55ID0gdG91Y2hFdmVudC0+dG91Y2gueTsKKyAgICAgICAgcG9p
bnRlckV2ZW50LT5tb3Rpb24ueF9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueF9yb290OworICAg
ICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi55X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3VjaC55X3Jv
b3Q7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnN0YXRlID0gdG91Y2hFdmVudC0+dG91
Y2guc3RhdGUgfCBHREtfQlVUVE9OMV9NQVNLOworICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRj
aCAodG91Y2hFdmVudC0+dHlwZSkgeworICAgICAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAg
ICAgICAgICBwb2ludGVyRXZlbnQucmVzZXQoZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1JFTEVB
U0UpKTsKKyAgICAgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnN0YXRlID0gdG91Y2hFdmVu
dC0+dG91Y2guc3RhdGUgfCBHREtfQlVUVE9OMV9NQVNLOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR0RLX1RPVUNIX0JFR0lOOgorICAgICAgICAgICAgcG9pbnRlckV2ZW50LnJl
c2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9QUkVTUykpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLmJ1dHRvbiA9IDE7CisgICAg
ICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnRpbWUgPSB0b3VjaEV2ZW50LT50b3VjaC50aW1lOwor
ICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54ID0gdG91Y2hFdmVudC0+dG91Y2gueDsKKyAg
ICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueSA9IHRvdWNoRXZlbnQtPnRvdWNoLnk7CisgICAg
ICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnhfcm9vdCA9IHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9v
dDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueV9yb290ID0gdG91Y2hFdmVudC0+dG91
Y2gueV9yb290OworICAgIH0KKworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHBvaW50ZXJFdmVu
dC5nZXQoKSwgZ2RrX2V2ZW50X2dldF9kZXZpY2UodG91Y2hFdmVudCkpOworICAgIGdka19ldmVu
dF9zZXRfc291cmNlX2RldmljZShwb2ludGVyRXZlbnQuZ2V0KCksIGdka19ldmVudF9nZXRfc291
cmNlX2RldmljZSh0b3VjaEV2ZW50KSk7CisgICAgcG9pbnRlckV2ZW50LT5hbnkud2luZG93ID0g
R0RLX1dJTkRPVyhnX29iamVjdF9yZWYodG91Y2hFdmVudC0+YW55LndpbmRvdykpOworICAgIHBv
aW50ZXJFdmVudC0+YW55LnNlbmRfZXZlbnQgPSBUUlVFOworCisgICAgZ3RrX3dpZGdldF9ldmVu
dChtX3ZpZXdXaWRnZXQsIHBvaW50ZXJFdmVudC5nZXQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmgKaW5kZXggOTYzYzJjZS4uMGQ2M2UzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMTksNiArMTE5LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFs
RnJhbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3Vj
aEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkg
b3ZlcnJpZGU7CisKICAgICAvLyBNZW1iZXJzIG9mIFBhZ2VDbGllbnRJbXBsIGNsYXNzCiAgICAg
R3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVyIG1fdW5k
b0NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZDRkMzAxOC4uNGE0ZTgyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrQ2xpY2tDb3VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HdGtEcmFnQW5kRHJvcEhlbHBlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hDb250
ZXh0SGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CkBAIC0xMTAsNiArMTExLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUgewogICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGNvbnRleHRNZW51RXZlbnQ7CiAgICAgV2Vi
Q29udGV4dE1lbnVQcm94eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQcm94eTsKICAgICBXZWJWaWV3
QmFzZUlucHV0TWV0aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVyOworICAgIEd0a1RvdWNoQ29u
dGV4dEhlbHBlciB0b3VjaENvbnRleHQ7CiAKICAgICBHdGtXaW5kb3cqIHRvcGxldmVsT25TY3Jl
ZW5XaW5kb3c7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFJlc2l6ZUdyaXBWaXNpYmlsaXR5
SUQ7CkBAIC0yNzIsNyArMjc0LDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFs
aXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgICAgICB8IEdES19CVVRUT05fTU9USU9OX01BU0sK
ICAgICAgICAgfCBHREtfQlVUVE9OMV9NT1RJT05fTUFTSwogICAgICAgICB8IEdES19CVVRUT04y
X01PVElPTl9NQVNLCi0gICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0s7CisgICAgICAg
IHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0sKKyAgICAgICAgfCBHREtfVE9VQ0hfTUFTSzsKIAog
ICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dBX1ZJ
U1VBTDsKIApAQCAtNzEyLDYgKzcxNSwxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmll
d0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNbwogICAg
IHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VUb3Vj
aEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFRvdWNoKiBldmVudCkKK3sKKyAgICBX
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRn
ZXQpLT5wcml2OworCisgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0aW9uRGlhbG9nKQorICAgICAg
ICByZXR1cm4gVFJVRTsKKworICAgIHByaXYtPnRvdWNoQ29udGV4dC5oYW5kbGVFdmVudChyZWlu
dGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKTsKKyAgICBwcml2LT5wYWdlUHJveHktPmhh
bmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2
ZW50Kj4oZXZlbnQpLCBwcml2LT50b3VjaENvbnRleHQpKTsKKworICAgIHJldHVybiBUUlVFOwor
fQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXAoR3RrV2lk
Z2V0KiB3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LCBnYm9vbGVhbiBrZXlib2FyZE1vZGUsIEd0a1Rv
b2x0aXAqIHRvb2x0aXApCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
V0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsKQEAgLTg5Niw2ICs5MTIsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdC
YXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIHdpZGdldENsYXNzLT5idXR0b25fcmVsZWFzZV9l
dmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUmVsZWFzZUV2ZW50OwogICAgIHdpZGdldENs
YXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVNjcm9sbEV2ZW50OwogICAgIHdp
ZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5X2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25O
b3RpZnlFdmVudDsKKyAgICB3aWRnZXRDbGFzcy0+dG91Y2hfZXZlbnQgPSB3ZWJraXRXZWJWaWV3
QmFzZVRvdWNoRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnF1ZXJ5X3Rvb2x0aXAgPSB3ZWJraXRX
ZWJWaWV3QmFzZVF1ZXJ5VG9vbHRpcDsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHdp
ZGdldENsYXNzLT5kcmFnX2VuZCA9IHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0VuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNCBiL1NvdXJjZS9hdXRv
dG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCA1ZGFmN2I5Li5kMzA3MzhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKKysrIGIvU291
cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CkBAIC0xNTksNyArMTU5LDcgQEAg
JHNyY2Rpci9Ub29scy9ndGsvZ2VuZXJhdGUtZmVhdHVyZS1kZWZpbmVzLWZpbGVzICRDT05GSUdV
UkFCTEVfRkVBVFVSRV9ERUZJTkVTIFwKICAgICBFTkFCTEVfVEVNUExBVEVfRUxFTUVOVD0xIFwK
ICAgICBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDPTFcCiAgICAgRU5BQkxFX1RF
WFRfQVVUT1NJWklORz0wIFwKLSAgICBFTkFCTEVfVE9VQ0hfRVZFTlRTPTAgXAorICAgIEVOQUJM
RV9UT1VDSF9FVkVOVFM9MSBcCiAgICAgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0wIFwKICAg
ICBFTkFCTEVfVVNFUl9USU1JTkc9MCBcCiAgICAgRU5BQkxFX1ZJQlJBVElPTj0wIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UKaW5kZXggODVlNTY2NS4uYWFiODg5YiAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UK
QEAgLTg5LDcgKzg5LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X1NFQ0NPTVBfRklMVEVSUyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfU0hBUkVEX1dPUktFUlMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfU1BFTExDSEVDSyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9URU1QTEFURV9FTEVNRU5UIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9WSUJSQVRJT04gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfVklERU8gT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IDI3YWYxNDYu
LmJkNjliNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC02Niw3ICs2Niw2IEBAIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFET1dfRE9NIE9GRikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFSRURfV09SS0VSUyBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TUEVMTENIRUNLIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQgT04pCi1X
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9GRikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSUJSQVRJT04gT0ZG
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIE9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtl
L1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IDU1ZDc2ZmYuLmVhNmIxODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2Vi
S2l0RmVhdHVyZXMuY21ha2UKQEAgLTEwOSw3ICsxMDksNyBAQCBtYWNybyhXRUJLSVRfT1BUSU9O
X0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9TVkdfRk9OVFMgIlRvZ2ds
ZSBTVkcgZm9udHMgc3VwcG9ydCAoaW1wbGVzIFNWRyBzdXBwb3J0KSIgT04pCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQgIlRvZ2dsZSBUZW1wbGF0ZSBz
dXBwb3J0IiBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfVEVYVF9BVVRPU0la
SU5HICJUb2dnbGUgVGV4dCBhdXRvIHNpemluZyBzdXBwb3J0IiBPRkYpCi0gICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX1RPVUNIX0VWRU5UUyAiVG9nZ2xlIFRvdWNoIEV2ZW50cyBzdXBw
b3J0IiBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1RPVUNIX0VWRU5UUyAi
VG9nZ2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0IiBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfVE9VQ0hfU0xJREVSICJUb2dnbGUgVG91Y2ggU2xpZGVyIHN1cHBvcnQiIE9GRikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HICJUb2dn
bGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfVVNFUlNFTEVDVF9BTEwgIlRvZ2dsZSB1c2VyLXNlbGVjdDphbGwgc3VwcG9y
dCIgT0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGRlYmJmMmEuLjIzNzQ0NDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0xMi0yNCAgQ2FybG9zIEdhcm5h
Y2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gRW5hYmxlIHRvdWNoIGZl
YXR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OnVwZGF0
ZUV2ZW50Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpjcmVh
dGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQ
b2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpzZW5kVXBkYXRlZFRvdWNoRXZlbnRz
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hQb2ludFJhZGl1cyk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIpOiBJbXBs
ZW1lbnQgdG91Y2ggZXZlbnQgcHJveHlpbmcuCisKIDIwMTQtMDItMDYgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNjM1MzAuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRT
ZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAppbmRl
eCA1ODI2MDI3Li5jMGNiNDUyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHAKQEAgLTkxMiw2ICs5MTIsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2NoZWR1bGVBc3lu
Y2hyb25vdXNLZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2IKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVl
UmVmIGNsZWFyVG91Y2hQb2ludHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0
aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKICAgICB7ICJtb3VzZVNj
cm9sbEJ5IiwgbW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAiY29udGludW91
c01vdXNlU2Nyb2xsQnkiLCBjb250aW51b3VzTW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggNWI2MjY0Ni4uNTMx
MDM3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtNDI2LDcg
KzQyNiw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiV1RGX1VTRV9USUxF
RF9CQUNLSU5HX1NUT1JFIiwgZGVmYXVsdCA9PiBpc0VmbCgpLCB2YWx1ZSA9PiBcJHRpbGVkQmFj
a2luZ1N0b3JlU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWV2ZW50cyIsIGRl
c2MgPT4gIlRvZ2dsZSBUb3VjaCBFdmVudHMgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9UT1VDSF9FVkVOVFMiLCBkZWZhdWx0ID0+IChpc0lPU1dlYktpdCgpIHx8IGlzRWZsKCkp
LCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAoaXNJT1NXZWJLaXQoKSB8fCBpc0VmbCgpIHx8
IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAogCiAgICAgeyBvcHRp
b24gPT4gInRvdWNoLXNsaWRlciIsIGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBTbGlkZXIgc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9TTElERVIiLCBkZWZhdWx0ID0+IDAs
IHZhbHVlID0+IFwkdG91Y2hTbGlkZXJTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
RXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDVkM2EwNDguLmRiMmM1OGIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC0yOCw5ICsyOCwxMyBAQAogI2RlZmlu
ZSBFdmVudFNlbmRlclByb3h5X2gKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0o
R1RLKQorI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUgPGdkay9n
ZGsuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2VsaWYgUExBVEZPUk0oRUZMKQogI2lu
Y2x1ZGUgPFdlYktpdDIvRVdlYktpdDIuaD4KICNlbmRpZgpAQCAtOTAsNiArOTQsOCBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIHNlbmRPclF1ZXVlRXZlbnQoR2RrRXZl
bnQqKTsKICAgICBHZGtFdmVudCogY3JlYXRlTW91c2VCdXR0b25FdmVudChHZGtFdmVudFR5cGUs
IHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVycyk7CisgICAgR1VuaXF1ZVB0cjxHZGtF
dmVudD4gY3JlYXRlVG91Y2hFdmVudChHZGtFdmVudFR5cGUsIGludCBpZCk7CisgICAgdm9pZCBz
ZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgdm9pZCBz
ZW5kT3JRdWV1ZUV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50
KGNvbnN0IFdUUkV2ZW50Jik7CkBAIC0xMTAsNiArMTE2LDggQEAgcHJpdmF0ZToKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICBEZXF1ZTxXVFJFdmVudFF1ZXVlSXRlbT4gbV9ldmVudFF1ZXVlOwog
ICAgIHVuc2lnbmVkIG1fbW91c2VCdXR0b25DdXJyZW50bHlEb3duOworICAgIFZlY3RvcjxHVW5p
cXVlUHRyPEdka0V2ZW50Pj4gbV90b3VjaEV2ZW50czsKKyAgICBIYXNoU2V0PGludD4gbV91cGRh
dGVkVG91Y2hFdmVudHM7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgRGVxdWU8V1RSRXZlbnQ+
IG1fZXZlbnRRdWV1ZTsKICAgICBXS0V2ZW50TW91c2VCdXR0b24gbV9tb3VzZUJ1dHRvbjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
aW5kZXggNDBmNjU5ZS4uOTZkM2I5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlclByb3h5LmgiCiAKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgogI2luY2x1ZGUg
IlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KQEAgLTQ0MSw0
ICs0NDIsMTIwIEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bGVhcEZvcndhcmQoaW50IG1pbGxp
c2Vjb25kcykKICAgICBtX3RpbWUgKz0gbWlsbGlzZWNvbmRzIC8gMTAwMC4wOwogfQogCit2b2lk
IHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoR2RrRXZlbnQqIHRvdWNoRXZlbnQsIGludCB4LCBpbnQg
eSkKK3sKKyAgICB0b3VjaEV2ZW50LT50b3VjaC54ID0geDsKKyAgICB0b3VjaEV2ZW50LT50b3Vj
aC55ID0geTsKKworICAgIGludCB4Um9vdCwgeVJvb3Q7CisgICAgZ2RrX3dpbmRvd19nZXRfcm9v
dF9jb29yZHModG91Y2hFdmVudC0+dG91Y2gud2luZG93LCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7
CisgICAgdG91Y2hFdmVudC0+dG91Y2gueF9yb290ID0geFJvb3Q7CisgICAgdG91Y2hFdmVudC0+
dG91Y2gueV9yb290ID0geVJvb3Q7Cit9CisKK0dVbmlxdWVQdHI8R2RrRXZlbnQ+IEV2ZW50U2Vu
ZGVyUHJveHk6OmNyZWF0ZVRvdWNoRXZlbnQoR2RrRXZlbnRUeXBlIGV2ZW50VHlwZSwgaW50IGlk
KQoreworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IHRvdWNoRXZlbnQoZ2RrX2V2ZW50X25ldyhl
dmVudFR5cGUpKTsKKworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnNlcXVlbmNlID0gc3RhdGljX2Nh
c3Q8R2RrRXZlbnRTZXF1ZW5jZSo+KEdJTlRfVE9fUE9JTlRFUihpZCkpOworICAgIHRvdWNoRXZl
bnQtPnRvdWNoLndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKG1fdGVz
dENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSk7CisgICAgZ19vYmpl
Y3RfcmVmKHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdyk7CisgICAgZ2RrX2V2ZW50X3NldF9kZXZp
Y2UodG91Y2hFdmVudC5nZXQoKSwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRl
cihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheSh0
b3VjaEV2ZW50LT5idXR0b24ud2luZG93KSkpKTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC50aW1l
ID0gR0RLX0NVUlJFTlRfVElNRTsKKworICAgIHJldHVybiB0b3VjaEV2ZW50OworfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIC8v
IFRvdWNoIElEIGlzIGFycmF5IGluZGV4IHBsdXMgb25lLCBzbyAwIGlzIHNraXBwZWQuCisgICAg
R1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQgPSBjcmVhdGVUb3VjaEV2ZW50KHN0YXRpY19jYXN0
PEdka0V2ZW50VHlwZT4oR0RLX1RPVUNIX0JFR0lOKSwgbV90b3VjaEV2ZW50cy5zaXplKCkgKyAx
KTsKKyAgICB1cGRhdGVFdmVudENvb3JkaW5hdGVzKGV2ZW50LmdldCgpLCB4LCB5KTsKKyAgICBt
X3RvdWNoRXZlbnRzLmFwcGVuZChzdGQ6Om1vdmUoZXZlbnQpKTsKKyAgICBtX3VwZGF0ZWRUb3Vj
aEV2ZW50cy5hZGQoR1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1ZW5jZSkpOworfQor
Cit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQg
eCwgaW50IHkpCit7CisgICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5kZXggPCBtX3RvdWNoRXZl
bnRzLnNpemUoKSk7CisKKyAgICBjb25zdCBhdXRvJiBldmVudCA9IG1fdG91Y2hFdmVudHNbaW5k
ZXhdOworICAgIEFTU0VSVChldmVudCk7CisKKyAgICBldmVudC0+dHlwZSA9IEdES19UT1VDSF9V
UERBVEU7CisgICAgdXBkYXRlRXZlbnRDb29yZGluYXRlcyhldmVudC5nZXQoKSwgeCwgeSk7Cisg
ICAgbV91cGRhdGVkVG91Y2hFdmVudHMuYWRkKEdQT0lOVEVSX1RPX0lOVChldmVudC0+dG91Y2gu
c2VxdWVuY2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kVXBkYXRlZFRvdWNo
RXZlbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8gaWQgOiBtX3VwZGF0ZWRUb3VjaEV2ZW50cykKKyAg
ICAgICAgc2VuZE9yUXVldWVFdmVudChnZGtfZXZlbnRfY29weShtX3RvdWNoRXZlbnRzW2lkIC0g
MV0uZ2V0KCkpKTsKKworICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hTdGFydCgpCit7CisgICAgc2VuZFVwZGF0ZWRUb3Vj
aEV2ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoTW92ZSgpCit7Cisg
ICAgc2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnRvdWNoRW5kKCkKK3sKKyAgICBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7Cit9CisKK3ZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hDYW5jZWwoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2xlYXJUb3VjaFBvaW50cygpCit7CisgICAg
bV91cGRhdGVkVG91Y2hFdmVudHMuY2xlYXIoKTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFyKCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4
KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgbV90b3VjaEV2ZW50cy5zaXpl
KCkpOworCisgICAgY29uc3QgYXV0byYgZXZlbnQgPSBtX3RvdWNoRXZlbnRzW2luZGV4XTsKKyAg
ICBldmVudC0+dHlwZSA9IEdES19UT1VDSF9FTkQ7CisgICAgbV91cGRhdGVkVG91Y2hFdmVudHMu
YWRkKEdQT0lOVEVSX1RPX0lOVChldmVudC0+dG91Y2guc2VxdWVuY2UpKTsKK30KKwordm9pZCBF
dmVudFNlbmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50KGludCBpbmRleCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoUG9pbnRS
YWRpdXMoaW50IHJhZGl1c1gsIGludCByYWRpdXNZKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcihXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVyLCBib29sIGVuYWJsZSkKK3sKKyAgICBndWludCBzdGF0ZSA9IHdlYmtp
dE1vZGlmaWVyc1RvR0RLTW9kaWZpZXJzKG1vZGlmaWVyKTsKKworICAgIGZvciAoY29uc3QgYXV0
byYgZXZlbnQgOiBtX3RvdWNoRXZlbnRzKSB7CisgICAgICAgIGlmIChldmVudC0+dHlwZSA9PSBH
REtfVE9VQ0hfRU5EKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGVuYWJs
ZSkKKyAgICAgICAgICAgIGV2ZW50LT50b3VjaC5zdGF0ZSB8PSBzdGF0ZTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgZXZlbnQtPnRvdWNoLnN0YXRlICY9IH4oc3RhdGUpOworCisgICAgICAg
IG1fdXBkYXRlZFRvdWNoRXZlbnRzLmFkZChHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRvdWNoLnNl
cXVlbmNlKSk7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223472</attachid>
            <date>2014-02-07 10:50:44 -0800</date>
            <delta_ts>2014-02-09 01:45:28 -0800</delta_ts>
            <desc>patch, turn back to GTK+-only config options</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>42587</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOTQ3YWJjLi5mZjAyZDQ2
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAg
ICAgIFtHVEtdIEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0
dXJlcy5tNDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZTogc2V0IEVO
QUJMRV9UT1VDSF9FVkVOVFMgdG8gMSBpZiBidWlsZGluZyB3aXRoIEdUSysuCisKIDIwMTQtMDIt
MDUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBF
TkFCTEUoRElSRUNUT1JZX1VQTE9BRCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzA5ZDI1OC4uY2VmNjEyYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdu
b21lLm9yZz4KKworICAgICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9uczogcmVtb3ZlIGZhc3QvZXZlbnRzL3RvdWNoCisgICAgICAgICogcGxhdGZv
cm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBBZGQgbmV3IGV4cGVjdGF0aW9ucyBvbgorICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaCBldmVudHMuCisKIDIwMTQtMDItMDYgIEZyw6lkw6lyaWMg
V2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZyPgogCiAgICAgICAgIERvIG5vdCBkcmF3IG11bHRpLWNo
YXJhY3RlcnMgPG1pPiBpbiBpdGFsaWMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGstd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sx
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODk3N2IwNS4uZjBkMjc4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjU3LDYgKzI1Nyw5IEBA
IHdlYmtpdC5vcmcvYi8zNTMwMCBodHRwL3Rlc3RzL2xvYWRpbmcvMzA3LWFmdGVyLTMwMy1hZnRl
ci1wb3N0Lmh0bWwgWyBGYWlsdXJlIF0KICMgTmVlZHMgY3VzdG9tIHBvbGljeSBkZWxlZ2F0ZSBl
bmhhbmNlbWVudCB0byBsb2cgZG93bmxvYWRzCiBCdWcoR1RLKSBodHRwL3Rlc3RzL2Rvd25sb2Fk
IFsgRmFpbHVyZSBdCiAKKyMgVG91Y2ggc3VwcG9ydCBvbmx5IGltcGxlbWVudGVkIGluIFdLMgor
ZmFzdC9ldmVudHMvdG91Y2ggWyBTa2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KICMgRW5kIG9mIFRlc3RzIGZhaWxpbmcKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggMzVhNjM1ZC4uOTViYTA0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTg2LDYgKzE4NiwyMyBAQCB3ZWJraXQub3JnL2IvODU0
NjMgZWRpdGluZy9pbnNlcnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9y
ZS1VUkwuaAogd2Via2l0Lm9yZy9iLzEyMDQwMSBmYXN0L2V2ZW50cyBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEyMDQwMSBlZGl0aW5nL3NlbGVjdGlvbiBbIFNraXAgXQogCisjIFRlc3RzIGluIHRo
ZSBnZXN0dXJlIGZvbGRlciBleGVyY2lzZSBJT1Mtc3BlY2lmaWMgY29kZSwgbm9uIGFwcGxpYWJs
ZSB0byBHVEsrCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlIFsgU2tpcCBdCisKKyMgVGhlc2Ug
dGVzdHMgcmVseSBvbiB0b3VjaCBldmVudCBncm91cGluZywgd2hpY2ggWDExL0dUSysgZG9lc24n
dCBkbyBieSBkZXNpZ24KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFz
aWMtbXVsdGktdG91Y2gtZXZlbnRzLWxpbWl0ZWQuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10b3VjaC1ldmVudHMuaHRt
bCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3Vj
aC1pbnB1dC1lbGVtZW50LWNoYW5nZS1kb2N1bWVudHMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0
Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9mcmFtZS1ob3Zlci11cGRhdGUuaHRtbCBb
IEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9tdWx0aS10
b3VjaC1ncm91cGVkLXRhcmdldHMuaHRtbCBbIFRpbWVvdXQgRmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWluc2lkZS1uZXN0ZWQtaWZy
YW1lcy5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3Rv
dWNoL211bHRpLXRvdWNoLWluc2lkZS1pZnJhbWVzLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5v
cmcvYi8xMjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5o
dG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL3Bh
Z2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9y
Zy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbCBbIFRpbWVvdXQg
XQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQtbGlt
aXRlZC5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3Rv
dWNoL3NlbmQtb25jYW5jZWwtZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQorCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgRXhwZWN0ZWQgZmFpbHVyZXMKICMvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDBlNDBhNjQuLjY4ZGQ0Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNTMsOSArMTUzLDYgQEAgd2Via2l0Lm9yZy9iLzk4
OTI3IGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjEx
NDAgZmFzdC9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjExNDAgaHR0cC90
ZXN0cy9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiAKLSMgVGhlc2UgdGVzdHMgcmVxdWlyZSB0b3Vj
aCBzdXBwb3J0Lgotd2Via2l0Lm9yZy9iLzk4OTMxIGZhc3QvZXZlbnRzL3RvdWNoIFsgU2tpcCBd
Ci0KICMgU3RvcmFnZVRyYWNrZXIgaXMgbm90IGVuYWJsZWQuCiB3ZWJraXQub3JnL2IvOTg5MzMg
c3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlciBbIFNraXAgXQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNWNmNmU4OC4uOWNlZWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKwor
ICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29kZSB0byBidWlsZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBpbiBmYXN0
L2V2ZW50cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsrIG5vdyB0aGF0IHRvdWNoCisg
ICAgICAgIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVzIGFsbCBleHBlY3RlZCBiaXRz
IGFyZSB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxw
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaDog
QWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9pbnRzLCBoYW5keQorICAgICAg
ICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogYmluZGluZ3Mv
Z29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0ZWQgY29kZSBhbmQgaWRscyB0
byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBub3cgdGhhdCBHVEsrIGltcGxl
bWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTA1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdoZWVsIGV2ZW50cyBkb24ndCBsYXRjaCB0byBpbm5l
ciBzY3JvbGxhYmxlIGVsZW1lbnRzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
MTkzOTc1ZS4uZmY1NmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yOTk2
LDggKzI5OTYsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dE5vZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5vZGVUcmF2
ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBcCisJU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmggXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZl
bnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9ybVNvdXJj
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAgXApA
QCAtNjE4Nyw2ICs2MTkwLDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrVG91Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0
aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2YmRiZjg3Li45NDc4MTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjAyLDYgKzIwMiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVQ
bGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVy
LmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtQbHVnaW5XaWRnZXQuY3BwCiAgICAgcGxhdGZvcm0v
Z3RrL0d0a1BvcHVwTWVudS5jcHAKKyAgICBwbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVs
cGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0v
Z3RrL0d0a1ZlcnNpb25pbmcuYwogICAgIHBsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRv
ci5jcHAKQEAgLTUyOSw2ICs1MzAsNyBAQCBpZiAoRU5BQkxFX1dFQktJVDIpCiAgICAgICAgIGRv
bS9SYW5nZS5pZGwKICAgICAgICAgZG9tL1NoYWRvd1Jvb3QuaWRsCiAgICAgICAgIGRvbS9UZXh0
LmlkbAorICAgICAgICBkb20vVG91Y2guaWRsCiAgICAgICAgIGRvbS9UcmVlV2Fsa2VyLmlkbAog
ICAgICAgICBkb20vVUlFdmVudC5pZGwKICAgICAgICAgZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4
IGJlNWUyYTUuLjY4Y2RiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HTlVtYWtlZmlsZS5hbQpAQCAtMjYyLDYgKzI2Miw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01TdHlsZVNo
ZWV0UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0UHJpdmF0ZS5oIFwK
KwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2guY3BwIFwKKwlEZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2hQcml2YXRlLmggXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01UcmVlV2Fsa2VyLmNwcCBcCkBAIC0zMjMsNiArMzI1LDcgQEAg
d2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTVJhbmdlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01UZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Ub3VjaC5o
IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJlZVdhbGtlci5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVUlFdmVudC5oIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQmxvYi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCmluZGV4IDllMmJkNWIuLjIxYjQ0OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5
bWJvbHMKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3lt
Ym9scwpAQCAtMTY2Miw2ICsxNjYyLDE4IEBAIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRf
Z2V0X3doZWVsX2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVudCopCiBnbG9uZyB3ZWJraXRfZG9t
X3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YV95KFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2xv
bmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2hlZWxfZGVsdGEoV2ViS2l0RE9NV2hlZWxF
dmVudCopCiBnYm9vbGVhbiB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93ZWJraXRfZGlyZWN0
aW9uX2ludmVydGVkX2Zyb21fZGV2aWNlKFdlYktpdERPTVdoZWVsRXZlbnQqKQorV2ViS2l0RE9N
RXZlbnRUYXJnZXQqIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3RhcmdldChXZWJLaXRET01Ub3VjaCop
CitnZmxvYXQgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X2ZvcmNlKFdlYktpdERPTVRvdWNo
KikKK2dmbG9hdCB3ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfcm90YXRpb25fYW5nbGUoV2Vi
S2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3goV2ViS2l0
RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3koV2ViS2l0RE9N
VG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3VjaF9nZXRfcGFnZV94KFdlYktpdERPTVRvdWNo
KikKK2dsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3BhZ2VfeShXZWJLaXRET01Ub3VjaCopCitn
bG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9zY3JlZW5feChXZWJLaXRET01Ub3VjaCopCitnbG9u
ZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9zY3JlZW5feShXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3
ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfcmFkaXVzX3goV2ViS2l0RE9NVG91Y2gqKQorZ2xv
bmcgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X3JhZGl1c195KFdlYktpdERPTVRvdWNoKikK
K2d1bG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dldF9pZGVudGlmaWVyKFdlYktpdERPTVRvdWNoKikK
IGdjaGFyKiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2dldF9pZChXZWJLaXRET01BdWRpb1RyYWNr
KikKIGdjaGFyKiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2dldF9raW5kKFdlYktpdERPTUF1ZGlv
VHJhY2sqKQogZ2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2xhYmVsKFdlYktpdERP
TUF1ZGlvVHJhY2sqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a1RvdWNoQ29udGV4dEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VG91Y2hDb250ZXh0SGVscGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wZTFiYzliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1RvdWNoQ29udGV4dEhlbHBlci5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBDYXJsb3MgR2FybmFjaG8gPGNhcmxvc2dAZ25vbWUub3JnPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3RrVG91Y2hDb250ZXh0SGVscGVy
LmgiCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9v
bCBHdGtUb3VjaENvbnRleHRIZWxwZXI6OmhhbmRsZUV2ZW50KEdka0V2ZW50KiB0b3VjaEV2ZW50
KQoreworI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIHVpbnQzMl90IHNlcXVlbmNlID0g
R1BPSU5URVJfVE9fVUlOVChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKHRvdWNoRXZlbnQp
KTsKKworICAgIHN3aXRjaCAodG91Y2hFdmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNI
X0JFR0lOOiB7CisgICAgICAgIEFTU0VSVChtX3RvdWNoRXZlbnRzLmNvbnRhaW5zKHNlcXVlbmNl
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9jb3B5KHRv
dWNoRXZlbnQpKTsKKyAgICAgICAgbV90b3VjaEV2ZW50cy5hZGQoc2VxdWVuY2UsIHN0ZDo6bW92
ZShldmVudCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHREtfVE9VQ0hfVVBE
QVRFOiB7CisgICAgICAgIGF1dG8gaXQgPSBtX3RvdWNoRXZlbnRzLmZpbmQoc2VxdWVuY2UpOwor
ICAgICAgICBBU1NFUlQoaXQgIT0gbV90b3VjaEV2ZW50cy5lbmQoKSk7CisgICAgICAgIGl0LT52
YWx1ZS5yZXNldChnZGtfZXZlbnRfY29weSh0b3VjaEV2ZW50KSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIEFTU0VSVChtX3RvdWNoRXZl
bnRzLmNvbnRhaW5zKHNlcXVlbmNlKSk7CisgICAgICAgIG1fdG91Y2hFdmVudHMucmVtb3ZlKHNl
cXVlbmNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yYjI4NWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21l
Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHdGtUb3VjaENvbnRleHRIZWxwZXJfaAorI2RlZmlu
ZSBHdGtUb3VjaENvbnRleHRIZWxwZXJfaAorCisjaW5jbHVkZSAiR1VuaXF1ZVB0ckd0ay5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90LCBHVW5pcXVl
UHRyPEdka0V2ZW50Pj4gVG91Y2hFdmVudHNNYXA7CisKK2NsYXNzIEd0a1RvdWNoQ29udGV4dEhl
bHBlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3RrVG91Y2hDb250ZXh0SGVscGVyKTsK
K3B1YmxpYzoKKyAgICBHdGtUb3VjaENvbnRleHRIZWxwZXIoKSB7IH07CisgICAgYm9vbCBoYW5k
bGVFdmVudChHZGtFdmVudCopOworICAgIGNvbnN0IFRvdWNoRXZlbnRzTWFwJiB0b3VjaEV2ZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hFdmVudHM7IH07CisKK3ByaXZhdGU6CisgICAgVG91
Y2hFdmVudHNNYXAgbV90b3VjaEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggODhkMTBmMy4uN2M1MGM1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxj
YXJsb3NnQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBBbGxvdyBidWlsZGluZyB3aXRoIHRv
dWNoIGV2ZW50cyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEV2ZW4gdGhvdWdoIFdlYktpdDEgR1RLIGNvZGUgZG9lc24ndCBpbXBsZW1lbnQg
dG91Y2ggZXZlbnRzLAorICAgICAgICBGaXggYnVpbGQgaWYgRU5BQkxFX1RPVUNIX0VWRU5UUyBp
cyBwcmVzZW50IGZvciBXSzIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpuZWVkVG91Y2hFdmVudHMp
OiBBZGQgZW1wdHkgc3R1YgorCiAyMDE0LTAyLTA1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShTVkcpIGd1YXJkcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRl
eCAxZGU3ZjJmLi42NGEwOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTQzLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5k
bGVyc0NoYW5nZWQodW5zaWduZWQpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgbmVlZFRvdWNo
RXZlbnRzKGJvb2wpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhp
Y3NMYXllcihGcmFtZSosIEdyYXBoaWNzTGF5ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMWFl
ZDk5Li5iMDRjZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTMtMTItMjMgIENh
cmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxl
bWVudCBzdXBwb3J0IHRvdWNoIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbiBHVEsrID49IDMuNC4wLCBHZGtFdmVudFRvdWNoIGlzIGF2YWls
YWJsZSB0byBpbmZvcm0gYWJvdXQgbXVsdGl0b3VjaCBldmVudHMuIFVzZSB0aGVzZSB0byBpbXBs
ZW1lbnQKKyAgICAgICAgdG91Y2ggZXZlbnRzIG9uIHRoaXMgcGxhdGZvcm0uIElmIGEgdG91Y2gg
aXMgbGVmdCB1bmhhbmRsZWQgYW5kIGlzIHRoZSAicG9pbnRlciBlbXVsYXRpbmciIG9uZSwgbW91
c2UKKyAgICAgICAgZXZlbnRzIHdpbGwgYmUgZ2VuZXJhdGVkIGFzIGEgZmFsbGJhY2suCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtl
OgorICAgICAgICAqIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHA6CisgICAg
ICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0
aXZlV2ViVG91Y2hFdmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVX
ZWJUb3VjaEV2ZW50Ojp0b3VjaENvbnRleHQpOiBBZGQgR1RLKyBpbXBsZW1lbnRhdGlvbiBvZiBO
YXRpdmVXZWJUb3VjaEV2ZW50LgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG91Y2hQaGFzZUZyb21FdmVudHMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQpOiBBZGQgbWV0aG9k
cyB0byBnZW5lcmF0ZSBXZWJUb3VjaEV2ZW50cyBvdXQKKyAgICAgICAgb2YgR2RrRXZlbnRUb3Vj
aCBldmVudHMsIGEgR3RrVG91Y2hDb250ZXh0SGVscGVyIG9iamVjdCBpcyB1c2VkIHRvIGhvbGQg
aW5mb3JtYXRpb24gYWJvdXQgYWxsIGN1cnJlbnQKKyAgICAgICAgdG91Y2hlcywgaW4gb3JkZXIg
dG8gYnVpbGQgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGluZGl2aWR1YWwgdG91Y2hwb2ludHMuCisg
ICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgcG9pbnRlciBlbXVsYXRpb24u
IElmIGEgdG91Y2ggZXZlbnQgd2FzIHVuaGFuZGxlZAorICAgICAgICBpbiBET00gYW5kIHBlcnRh
aW5zIHRvIHRoZSB0b3VjaCBzZXF1ZW5jZSB0aGF0IGVtdWxhdGVzIHBvaW50ZXIgZXZlbnRzLiBU
aGUgZXZlbnQgZ2V0cyB0cmFuc2Zvcm1lZCB0byBpdHMKKyAgICAgICAgbW91c2UgZXZlbnQgY291
bnRlcnBhcnQgYW5kIGhhbmRsZWQgYnkgdGhlIHdpZGdldCBhZ2Fpbi4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUmVh
bGl6ZSk6IExpc3RlbiBmb3IgdG91Y2ggZXZlbnRzCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFz
ZVRvdWNoRXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdCk6
IEFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHRvdWNoX2V2ZW50cygpIGhhbmRsZXIsIHRoaXMg
bWVyZWx5CisgICAgICAgIGxldHMgdGhlIHBhZ2VQcm94eSBoYW5kbGUgdGhlIE5hdGl2ZVdlYlRv
dWNoRXZlbnQgd2UgY3JlYXRlIHRvIHdyYXAgdGhlIEdka0V2ZW50IHJlY2VpdmVkLgorCiAyMDE0
LTAyLTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVwbGFjZSDigJkgd2l0aCAnIHRvIHNpbGVuY2UgdGhlIGNoZWNrLWZvci13ZWJraXQtZnJhbWV3
b3JrLWluY2x1ZGUtY29uc2lzdGVuY3kgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggMTVlZGVkMy4uMzhlY2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0zODQsNiArMzg0LDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL1ByaW50SW5mb0d0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IDRhODRhOTIuLjg0NDJkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC01
Niw2ICs1Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9ndGsv
TGF5ZXJUcmVlQ29udGV4dEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJk
RXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAor
ICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICBTaGFyZWQvZ3Rr
L05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9HdGsu
Y3BwCiAgICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCkBAIC01NjUs
NiArNTY2LDggQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICAgICAgU2hhcmVkL1dl
YktleWJvYXJkRXZlbnQuY3BwCiAgICAgICAgIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAK
ICAgICAgICAgU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJQbGF0
Zm9ybVRvdWNoUG9pbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAogICAg
ICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAKIAogICAgICAgICBTaGFyZWQvUGx1Z2lucy9O
UElkZW50aWZpZXJEYXRhLmNwcApAQCAtNTgzLDYgKzU4Niw3IEBAIGlmIChFTkFCTEVfUExVR0lO
X1BST0NFU1MpCiAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3Rr
LmNwcAogICAgICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCisgICAg
ICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVk
L2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL1Byb2Nl
c3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRl
eCAwZDRiMmNmLi5lZjViZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0
aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJU
b3VjaEV2ZW50LmgKQEAgLTMxLDkgKzMxLDEwIEBACiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVS
ZWNvZ25pemVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQotI2lmIFBMQVRGT1JNKEVGTCkK
KyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgorI2VsaWYgUExBVEZP
Uk0oRUZMKQogI2luY2x1ZGUgIkV3a1RvdWNoRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Fm
ZmluZVRyYW5zZm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ2LDggKzQ3LDEy
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91
Y2hFdmVudChVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKik7CiAgICAgY29uc3Qg
VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkK
KyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2
ZVdlYlRvdWNoRXZlbnQmKTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiwgV2Vi
Q29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVyJik7CisgICAgY29uc3QgR2RrRXZlbnQqIG5hdGl2
ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorICAgIGNvbnN0
IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV90b3VjaENvbnRleHQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBOYXRpdmVX
ZWJUb3VjaEV2ZW50KEV3a1RvdWNoRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zv
cm0mKTsKICAgICBjb25zdCBFd2tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNTUsOCArNjAsMTAgQEAgcHVi
bGljOgogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPFVJV2ViVG91
Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplcj4gbV9uYXRpdmVFdmVudDsKLSNlbmRpZgotI2lmIFBM
QVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50
PiBtX25hdGl2ZUV2ZW50OworICAgIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBl
ciYgbV90b3VjaENvbnRleHQ7CisjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUmVmUHRyPEV3a1Rv
dWNoRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmNkNGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9z
Z0Bnbm9tZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJO
YXRpdmVXZWJUb3VjaEV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKyNp
bmNsdWRlIDxnZGsvZ2RrLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVXZWJUb3Vj
aEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiBldmVudCwgV2ViQ29yZTo6R3Rr
VG91Y2hDb250ZXh0SGVscGVyJiBjb250ZXh0KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQsIGNvbnRleHQpKQorICAgICwgbV9u
YXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudCkpCisgICAgLCBtX3RvdWNoQ29udGV4dChj
b250ZXh0KQoreworfQorCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQorICAgIDogV2ViVG91Y2hFdmVudChX
ZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwg
ZXZlbnQudG91Y2hDb250ZXh0KCkpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29w
eShldmVudC5uYXRpdmVFdmVudCgpKSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGV2ZW50LnRvdWNo
Q29udGV4dCgpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBjYjg4YTgyLi40NjJiMTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5j
bHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8
Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpAQCAtMjAzLDQgKzIwNCw3NSBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9
CiAKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKK3N0YXRpYyBXZWJQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoUG9pbnRTdGF0ZSB0b3VjaFBoYXNlRnJvbUV2ZW50cyhjb25zdCBHZGtFdmVudCog
Y3VycmVudCwgY29uc3QgR2RrRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChnZGtfZXZlbnRfZ2V0
X2V2ZW50X3NlcXVlbmNlKGN1cnJlbnQpICE9IGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2Uo
ZXZlbnQpKQorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRp
b25hcnk7CisKKyAgICBzd2l0Y2ggKGN1cnJlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VD
SF9VUERBVEU6CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92
ZWQ7CisgICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAg
ICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9u
YXJ5OworICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwZW5kVG91Y2hFdmVudChWZWN0b3I8V2Vi
UGxhdGZvcm1Ub3VjaFBvaW50PiYgdG91Y2hQb2ludExpc3QsIGNvbnN0IEdka0V2ZW50KiBldmVu
dCwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGUpCit7CisgICAg
dWludDMyX3QgaWRlbnRpZmllciA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVu
dF9zZXF1ZW5jZShldmVudCkpOworCisgICAgZ2RvdWJsZSB4LCB5OworICAgIGdka19ldmVudF9n
ZXRfY29vcmRzKGV2ZW50LCAmeCwgJnkpOworCisgICAgZ2RvdWJsZSB4Um9vdCwgeVJvb3Q7Cisg
ICAgZ2RrX2V2ZW50X2dldF9yb290X2Nvb3JkcyhldmVudCwgJnhSb290LCAmeVJvb3QpOworCisg
ICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50IHRvdWNoUG9pbnQoaWRlbnRpZmllciwgc3RhdGUsIElu
dFBvaW50KHhSb290LCB5Um9vdCksIEludFBvaW50KHgsIHkpKTsKKyAgICB0b3VjaFBvaW50TGlz
dC51bmNoZWNrZWRBcHBlbmQodG91Y2hQb2ludCk7Cit9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJT
SU9OXzIKKworV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZl
bnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRI
ZWxwZXImIHRvdWNoQ29udGV4dCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICBX
ZWJFdmVudDo6VHlwZSB0eXBlID0gV2ViRXZlbnQ6Ok5vVHlwZTsKKyAgICBjb25zdCBhdXRvJiB0
b3VjaEV2ZW50cyA9IHRvdWNoQ29udGV4dC50b3VjaEV2ZW50cygpOworICAgIGludCBudW1FdmVu
dHMgPSB0b3VjaEV2ZW50cy5zaXplKCk7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7Cisg
ICAgY2FzZSBHREtfVE9VQ0hfQkVHSU46CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6VG91Y2hT
dGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOgorICAgICAg
ICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoTW92ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBH
REtfVE9VQ0hfRU5EOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoRW5kOworICAgICAg
ICArK251bUV2ZW50czsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQ
b2ludD4gdG91Y2hQb2ludExpc3Q7CisgICAgdG91Y2hQb2ludExpc3QucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShudW1FdmVudHMpOworCisgICAgZm9yIChhdXRvIGl0ID0gdG91Y2hFdmVudHMuYmVn
aW4oKTsgaXQgIT0gdG91Y2hFdmVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIGFwcGVuZFRvdWNo
RXZlbnQodG91Y2hQb2ludExpc3QsIGl0LT52YWx1ZS5nZXQoKSwgdG91Y2hQaGFzZUZyb21FdmVu
dHMoaXQtPnZhbHVlLmdldCgpLCBldmVudCkpOworCisgICAgLy8gVG91Y2ggd2FzIGFscmVhZHkg
cmVtb3ZlZCBmcm9tIHRoZSBHdGtUb3VjaENvbnRleHRIZWxwZXIsIGFkZCBpdCBoZXJlLgorICAg
IGlmIChldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICBhcHBlbmRUb3VjaEV2
ZW50KHRvdWNoUG9pbnRMaXN0LCBldmVudCwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJl
bGVhc2VkKTsKKworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGUsIHRvdWNoUG9pbnRMaXN0
LCBtb2RpZmllcnNGb3JFdmVudChldmVudCksIGdka19ldmVudF9nZXRfdGltZShldmVudCkpOwor
I2Vsc2UKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCgpOworI2VuZGlmIC8vIEdUS19BUElfVkVS
U0lPTl8yCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggMDg1ODE1Yy4uZmMzMDI5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25S
ZXN1bHRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtUb3VjaENvbnRleHRIZWxwZXIuaD4KIAog
dHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAKQEAgLTM5LDYgKzQwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3Qg
R2RrRXZlbnQqLCBpbnQpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVs
RXZlbnQoY29uc3QgR2RrRXZlbnQqKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVh
dGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9z
aXRpb25SZXN1bHRzJik7CisgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hF
dmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBl
ciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNGI3ZGExZC4uM2Qw
N2Q4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcApAQCAtMzI3LDQgKzMyNyw1NCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpi
ZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50
UgogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQs
IGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIGlmICh3YXNFdmVudEhhbmRsZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEVtdWxhdGUgcG9pbnRlciBldmVudHMgaWYgdW5oYW5kbGVk
LgorICAgIGNvbnN0IEdka0V2ZW50KiB0b3VjaEV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQoKTsK
KworICAgIGlmICghdG91Y2hFdmVudC0+dG91Y2guZW11bGF0aW5nX3BvaW50ZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IHBvaW50ZXJFdmVudDsKKworICAg
IGlmICh0b3VjaEV2ZW50LT50eXBlID09IEdES19UT1VDSF9VUERBVEUpIHsKKyAgICAgICAgcG9p
bnRlckV2ZW50LnJlc2V0KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9OT1RJRlkpKTsKKyAgICAg
ICAgcG9pbnRlckV2ZW50LT5tb3Rpb24udGltZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnRpbWU7Cisg
ICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnggPSB0b3VjaEV2ZW50LT50b3VjaC54OworICAg
ICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi55ID0gdG91Y2hFdmVudC0+dG91Y2gueTsKKyAgICAg
ICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueF9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueF9yb290
OworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi55X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3Vj
aC55X3Jvb3Q7CisgICAgICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnN0YXRlID0gdG91Y2hFdmVu
dC0+dG91Y2guc3RhdGUgfCBHREtfQlVUVE9OMV9NQVNLOworICAgIH0gZWxzZSB7CisgICAgICAg
IHN3aXRjaCAodG91Y2hFdmVudC0+dHlwZSkgeworICAgICAgICBjYXNlIEdES19UT1VDSF9FTkQ6
CisgICAgICAgICAgICBwb2ludGVyRXZlbnQucmVzZXQoZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9O
X1JFTEVBU0UpKTsKKyAgICAgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnN0YXRlID0gdG91
Y2hFdmVudC0+dG91Y2guc3RhdGUgfCBHREtfQlVUVE9OMV9NQVNLOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0RLX1RPVUNIX0JFR0lOOgorICAgICAgICAgICAgcG9pbnRlckV2
ZW50LnJlc2V0KGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9QUkVTUykpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorCisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLmJ1dHRvbiA9IDE7
CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnRpbWUgPSB0b3VjaEV2ZW50LT50b3VjaC50
aW1lOworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54ID0gdG91Y2hFdmVudC0+dG91Y2gu
eDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueSA9IHRvdWNoRXZlbnQtPnRvdWNoLnk7
CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnhfcm9vdCA9IHRvdWNoRXZlbnQtPnRvdWNo
Lnhfcm9vdDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24ueV9yb290ID0gdG91Y2hFdmVu
dC0+dG91Y2gueV9yb290OworICAgIH0KKworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHBvaW50
ZXJFdmVudC5nZXQoKSwgZ2RrX2V2ZW50X2dldF9kZXZpY2UodG91Y2hFdmVudCkpOworICAgIGdk
a19ldmVudF9zZXRfc291cmNlX2RldmljZShwb2ludGVyRXZlbnQuZ2V0KCksIGdka19ldmVudF9n
ZXRfc291cmNlX2RldmljZSh0b3VjaEV2ZW50KSk7CisgICAgcG9pbnRlckV2ZW50LT5hbnkud2lu
ZG93ID0gR0RLX1dJTkRPVyhnX29iamVjdF9yZWYodG91Y2hFdmVudC0+YW55LndpbmRvdykpOwor
ICAgIHBvaW50ZXJFdmVudC0+YW55LnNlbmRfZXZlbnQgPSBUUlVFOworCisgICAgZ3RrX3dpZGdl
dF9ldmVudChtX3ZpZXdXaWRnZXQsIHBvaW50ZXJFdmVudC5nZXQoKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmgKaW5kZXggOTYzYzJjZS4uMGQ2M2UzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMTksNiArMTE5
LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGZpbmFsRnJhbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdp
dGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFu
ZGxlZCkgb3ZlcnJpZGU7CisKICAgICAvLyBNZW1iZXJzIG9mIFBhZ2VDbGllbnRJbXBsIGNsYXNz
CiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVy
IG1fdW5kb0NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZDRkMzAxOC4uNGE0ZTgyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0
ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrQ2xpY2tDb3VudGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HdGtEcmFnQW5kRHJvcEhlbHBlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91
Y2hDb250ZXh0SGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CkBAIC0xMTAsNiArMTExLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUgewogICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGNvbnRleHRNZW51RXZlbnQ7CiAg
ICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQcm94eTsKICAgICBX
ZWJWaWV3QmFzZUlucHV0TWV0aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVyOworICAgIEd0a1Rv
dWNoQ29udGV4dEhlbHBlciB0b3VjaENvbnRleHQ7CiAKICAgICBHdGtXaW5kb3cqIHRvcGxldmVs
T25TY3JlZW5XaW5kb3c7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFJlc2l6ZUdyaXBWaXNp
YmlsaXR5SUQ7CkBAIC0yNzIsNyArMjc0LDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgICAgICB8IEdES19CVVRUT05fTU9USU9O
X01BU0sKICAgICAgICAgfCBHREtfQlVUVE9OMV9NT1RJT05fTUFTSwogICAgICAgICB8IEdES19C
VVRUT04yX01PVElPTl9NQVNLCi0gICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0s7Cisg
ICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0sKKyAgICAgICAgfCBHREtfVE9VQ0hfTUFT
SzsKIAogICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RL
X1dBX1ZJU1VBTDsKIApAQCAtNzEyLDYgKzcxNSwxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRN
bwogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jh
c2VUb3VjaEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFRvdWNoKiBldmVudCkKK3sK
KyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFT
RSh3aWRnZXQpLT5wcml2OworCisgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0aW9uRGlhbG9nKQor
ICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIHByaXYtPnRvdWNoQ29udGV4dC5oYW5kbGVFdmVu
dChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKTsKKyAgICBwcml2LT5wYWdlUHJv
eHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudChyZWludGVycHJldF9jYXN0
PEdka0V2ZW50Kj4oZXZlbnQpLCBwcml2LT50b3VjaENvbnRleHQpKTsKKworICAgIHJldHVybiBU
UlVFOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXAo
R3RrV2lkZ2V0KiB3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LCBnYm9vbGVhbiBrZXlib2FyZE1vZGUs
IEd0a1Rvb2x0aXAqIHRvb2x0aXApCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBw
cml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsKQEAgLTg5Niw2ICs5MTIs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KFdlYktpdFdl
YlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIHdpZGdldENsYXNzLT5idXR0b25fcmVs
ZWFzZV9ldmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUmVsZWFzZUV2ZW50OwogICAgIHdp
ZGdldENsYXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVNjcm9sbEV2ZW50Owog
ICAgIHdpZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5X2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VN
b3Rpb25Ob3RpZnlFdmVudDsKKyAgICB3aWRnZXRDbGFzcy0+dG91Y2hfZXZlbnQgPSB3ZWJraXRX
ZWJWaWV3QmFzZVRvdWNoRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnF1ZXJ5X3Rvb2x0aXAgPSB3
ZWJraXRXZWJWaWV3QmFzZVF1ZXJ5VG9vbHRpcDsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
ICAgIHdpZGdldENsYXNzLT5kcmFnX2VuZCA9IHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0VuZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNCBiL1NvdXJj
ZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCA1ZGFmN2I5Li5kMzA3Mzhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKKysr
IGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CkBAIC0xNTksNyArMTU5
LDcgQEAgJHNyY2Rpci9Ub29scy9ndGsvZ2VuZXJhdGUtZmVhdHVyZS1kZWZpbmVzLWZpbGVzICRD
T05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIFwKICAgICBFTkFCTEVfVEVNUExBVEVfRUxFTUVO
VD0xIFwKICAgICBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDPTFcCiAgICAgRU5B
QkxFX1RFWFRfQVVUT1NJWklORz0wIFwKLSAgICBFTkFCTEVfVE9VQ0hfRVZFTlRTPTAgXAorICAg
IEVOQUJMRV9UT1VDSF9FVkVOVFM9MSBcCiAgICAgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0w
IFwKICAgICBFTkFCTEVfVVNFUl9USU1JTkc9MCBcCiAgICAgRU5BQkxFX1ZJQlJBVElPTj0wIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtl
L09wdGlvbnNHVEsuY21ha2UKaW5kZXggMjdhZjE0Ni4uYjFjMmNhZCAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKQEAgLTY2LDcgKzY2LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1NIQURPV19ET00gT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX1NQRUxMQ0hFQ0sgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9WSUJSQVRJT04gT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRlYmJmMmEuLjIzNzQ0NDIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
My0xMi0yNCAgQ2FybG9zIEdhcm5hY2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAgICAg
W0dUS10gRW5hYmxlIHRvdWNoIGZlYXR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6
CisgICAgICAgIChXVFI6OnVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5OjpjcmVhdGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6YWRkVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnVwZGF0ZVRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpz
ZW5kVXBkYXRlZFRvdWNoRXZlbnRzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
c2V0VG91Y2hQb2ludFJhZGl1cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNl
dFRvdWNoTW9kaWZpZXIpOiBJbXBsZW1lbnQgdG91Y2ggZXZlbnQgcHJveHlpbmcuCisKIDIwMTQt
MDItMDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjM1MzAuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0V2ZW50U2VuZGVyLmNwcAppbmRleCA1ODI2MDI3Li5jMGNiNDUyIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKQEAgLTkxMiw2ICs5MTIsMTEgQEAgc3RhdGljIEpT
VmFsdWVSZWYgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2IKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGNsZWFyVG91Y2hQb2ludHNDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNb
XSA9IHsKICAgICB7ICJtb3VzZVNjcm9sbEJ5IiwgbW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgeyAiY29udGludW91c01vdXNlU2Nyb2xsQnkiLCBjb250aW51b3VzTW91c2VTY3Jv
bGxCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KaW5kZXggNWI2MjY0Ni4uNTMxMDM3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0
dXJlTGlzdC5wbQpAQCAtNDI2LDcgKzQyNiw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRl
ZmluZSA9PiAiV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFIiwgZGVmYXVsdCA9PiBpc0VmbCgp
LCB2YWx1ZSA9PiBcJHRpbGVkQmFja2luZ1N0b3JlU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24g
PT4gInRvdWNoLWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBFdmVudHMgc3VwcG9ydCIs
Ci0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9FVkVOVFMiLCBkZWZhdWx0ID0+IChpc0lP
U1dlYktpdCgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAor
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAoaXNJT1NX
ZWJLaXQoKSB8fCBpc0VmbCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3Vw
cG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLXNsaWRlciIsIGRlc2MgPT4gIlRvZ2ds
ZSBUb3VjaCBTbGlkZXIgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9T
TElERVIiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkdG91Y2hTbGlkZXJTdXBwb3J0IH0sCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDVkM2EwNDguLmRi
MmM1OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94
eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC0y
OCw5ICsyOCwxMyBAQAogI2RlZmluZSBFdmVudFNlbmRlclByb3h5X2gKIAogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0
ay5oPgogI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2Vs
aWYgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPFdlYktpdDIvRVdlYktpdDIuaD4KICNlbmRpZgpA
QCAtOTAsNiArOTQsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIHNl
bmRPclF1ZXVlRXZlbnQoR2RrRXZlbnQqKTsKICAgICBHZGtFdmVudCogY3JlYXRlTW91c2VCdXR0
b25FdmVudChHZGtFdmVudFR5cGUsIHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVycyk7
CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gY3JlYXRlVG91Y2hFdmVudChHZGtFdmVudFR5cGUs
IGludCBpZCk7CisgICAgdm9pZCBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7CiAjZWxpZiBQTEFU
Rk9STShFRkwpCiAgICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7CiAg
ICAgdm9pZCBkaXNwYXRjaEV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7CkBAIC0xMTAsNiArMTE2LDgg
QEAgcHJpdmF0ZToKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBEZXF1ZTxXVFJFdmVudFF1ZXVl
SXRlbT4gbV9ldmVudFF1ZXVlOwogICAgIHVuc2lnbmVkIG1fbW91c2VCdXR0b25DdXJyZW50bHlE
b3duOworICAgIFZlY3RvcjxHVW5pcXVlUHRyPEdka0V2ZW50Pj4gbV90b3VjaEV2ZW50czsKKyAg
ICBIYXNoU2V0PGludD4gbV91cGRhdGVkVG91Y2hFdmVudHM7CiAjZWxpZiBQTEFURk9STShFRkwp
CiAgICAgRGVxdWU8V1RSRXZlbnQ+IG1fZXZlbnRRdWV1ZTsKICAgICBXS0V2ZW50TW91c2VCdXR0
b24gbV9tb3VzZUJ1dHRvbjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3Rr
L0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZl
bnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggNDBmNjU5ZS4uOTZkM2I5ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlclBy
b3h5LmgiCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
V2ViVmlldy5oIgogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8Z2RrL2dk
a2tleXN5bXMuaD4KQEAgLTQ0MSw0ICs0NDIsMTIwIEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKICAgICBtX3RpbWUgKz0gbWlsbGlzZWNvbmRz
IC8gMTAwMC4wOwogfQogCit2b2lkIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoR2RrRXZlbnQqIHRv
dWNoRXZlbnQsIGludCB4LCBpbnQgeSkKK3sKKyAgICB0b3VjaEV2ZW50LT50b3VjaC54ID0geDsK
KyAgICB0b3VjaEV2ZW50LT50b3VjaC55ID0geTsKKworICAgIGludCB4Um9vdCwgeVJvb3Q7Cisg
ICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHModG91Y2hFdmVudC0+dG91Y2gud2luZG93LCB4
LCB5LCAmeFJvb3QsICZ5Um9vdCk7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueF9yb290ID0geFJv
b3Q7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueV9yb290ID0geVJvb3Q7Cit9CisKK0dVbmlxdWVQ
dHI8R2RrRXZlbnQ+IEV2ZW50U2VuZGVyUHJveHk6OmNyZWF0ZVRvdWNoRXZlbnQoR2RrRXZlbnRU
eXBlIGV2ZW50VHlwZSwgaW50IGlkKQoreworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IHRvdWNo
RXZlbnQoZ2RrX2V2ZW50X25ldyhldmVudFR5cGUpKTsKKworICAgIHRvdWNoRXZlbnQtPnRvdWNo
LnNlcXVlbmNlID0gc3RhdGljX2Nhc3Q8R2RrRXZlbnRTZXF1ZW5jZSo+KEdJTlRfVE9fUE9JTlRF
UihpZCkpOworICAgIHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dp
bmRvdyhHVEtfV0lER0VUKG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpKSk7CisgICAgZ19vYmplY3RfcmVmKHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdyk7Cisg
ICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UodG91Y2hFdmVudC5nZXQoKSwgZ2RrX2RldmljZV9tYW5h
Z2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2Rr
X3dpbmRvd19nZXRfZGlzcGxheSh0b3VjaEV2ZW50LT5idXR0b24ud2luZG93KSkpKTsKKyAgICB0
b3VjaEV2ZW50LT50b3VjaC50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKworICAgIHJldHVybiB0
b3VjaEV2ZW50OworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50
IHgsIGludCB5KQoreworICAgIC8vIFRvdWNoIElEIGlzIGFycmF5IGluZGV4IHBsdXMgb25lLCBz
byAwIGlzIHNraXBwZWQuCisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQgPSBjcmVhdGVU
b3VjaEV2ZW50KHN0YXRpY19jYXN0PEdka0V2ZW50VHlwZT4oR0RLX1RPVUNIX0JFR0lOKSwgbV90
b3VjaEV2ZW50cy5zaXplKCkgKyAxKTsKKyAgICB1cGRhdGVFdmVudENvb3JkaW5hdGVzKGV2ZW50
LmdldCgpLCB4LCB5KTsKKyAgICBtX3RvdWNoRXZlbnRzLmFwcGVuZChzdGQ6Om1vdmUoZXZlbnQp
KTsKKyAgICBtX3VwZGF0ZWRUb3VjaEV2ZW50cy5hZGQoR1BPSU5URVJfVE9fSU5UKGV2ZW50LT50
b3VjaC5zZXF1ZW5jZSkpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNo
UG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkpCit7CisgICAgQVNTRVJUKGluZGV4ID49IDAg
JiYgaW5kZXggPCBtX3RvdWNoRXZlbnRzLnNpemUoKSk7CisKKyAgICBjb25zdCBhdXRvJiBldmVu
dCA9IG1fdG91Y2hFdmVudHNbaW5kZXhdOworICAgIEFTU0VSVChldmVudCk7CisKKyAgICBldmVu
dC0+dHlwZSA9IEdES19UT1VDSF9VUERBVEU7CisgICAgdXBkYXRlRXZlbnRDb29yZGluYXRlcyhl
dmVudC5nZXQoKSwgeCwgeSk7CisgICAgbV91cGRhdGVkVG91Y2hFdmVudHMuYWRkKEdQT0lOVEVS
X1RPX0lOVChldmVudC0+dG91Y2guc2VxdWVuY2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclBy
b3h5OjpzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8gaWQgOiBtX3Vw
ZGF0ZWRUb3VjaEV2ZW50cykKKyAgICAgICAgc2VuZE9yUXVldWVFdmVudChnZGtfZXZlbnRfY29w
eShtX3RvdWNoRXZlbnRzW2lkIC0gMV0uZ2V0KCkpKTsKKworICAgIG1fdXBkYXRlZFRvdWNoRXZl
bnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hTdGFydCgpCit7
CisgICAgc2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OnRvdWNoTW92ZSgpCit7CisgICAgc2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOworfQorCit2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoRW5kKCkKK3sKKyAgICBzZW5kVXBkYXRlZFRvdWNo
RXZlbnRzKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hDYW5jZWwoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2xlYXJU
b3VjaFBvaW50cygpCit7CisgICAgbV91cGRhdGVkVG91Y2hFdmVudHMuY2xlYXIoKTsKKyAgICBt
X3RvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmVsZWFz
ZVRvdWNoUG9pbnQoaW50IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4
IDwgbV90b3VjaEV2ZW50cy5zaXplKCkpOworCisgICAgY29uc3QgYXV0byYgZXZlbnQgPSBtX3Rv
dWNoRXZlbnRzW2luZGV4XTsKKyAgICBldmVudC0+dHlwZSA9IEdES19UT1VDSF9FTkQ7CisgICAg
bV91cGRhdGVkVG91Y2hFdmVudHMuYWRkKEdQT0lOVEVSX1RPX0lOVChldmVudC0+dG91Y2guc2Vx
dWVuY2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50KGlu
dCBpbmRleCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnNldFRvdWNoUG9pbnRSYWRpdXMoaW50IHJhZGl1c1gsIGludCByYWRpdXNZKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91
Y2hNb2RpZmllcihXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyLCBib29sIGVuYWJsZSkKK3sKKyAg
ICBndWludCBzdGF0ZSA9IHdlYmtpdE1vZGlmaWVyc1RvR0RLTW9kaWZpZXJzKG1vZGlmaWVyKTsK
KworICAgIGZvciAoY29uc3QgYXV0byYgZXZlbnQgOiBtX3RvdWNoRXZlbnRzKSB7CisgICAgICAg
IGlmIChldmVudC0+dHlwZSA9PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgICAgIGV2ZW50LT50b3VjaC5zdGF0ZSB8
PSBzdGF0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnQtPnRvdWNoLnN0YXRlICY9
IH4oc3RhdGUpOworCisgICAgICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmFkZChHUE9JTlRFUl9U
T19JTlQoZXZlbnQtPnRvdWNoLnNlcXVlbmNlKSk7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNw
YWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223617</attachid>
            <date>2014-02-09 01:45:28 -0800</date>
            <delta_ts>2014-02-10 01:13:29 -0800</delta_ts>
            <desc>patch, add missing symbol to webkitdom.symbols</desc>
            <filename>patch-touch-events.diff</filename>
            <type>text/plain</type>
            <size>43595</size>
            <attacher name="Carlos Garnacho">carlosg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOTQ3YWJjLi5mZjAyZDQ2
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgorCisgICAg
ICAgIFtHVEtdIEVuYWJsZSB0b3VjaCBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0
dXJlcy5tNDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZTogc2V0IEVO
QUJMRV9UT1VDSF9FVkVOVFMgdG8gMSBpZiBidWlsZGluZyB3aXRoIEdUSysuCisKIDIwMTQtMDIt
MDUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBF
TkFCTEUoRElSRUNUT1JZX1VQTE9BRCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzA5ZDI1OC4uY2VmNjEyYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEzLTEyLTI0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdu
b21lLm9yZz4KKworICAgICAgICBbR1RLXSBFbmFibGUgdG91Y2ggZmVhdHVyZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9uczogcmVtb3ZlIGZhc3QvZXZlbnRzL3RvdWNoCisgICAgICAgICogcGxhdGZv
cm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBBZGQgbmV3IGV4cGVjdGF0aW9ucyBvbgorICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaCBldmVudHMuCisKIDIwMTQtMDItMDYgIEZyw6lkw6lyaWMg
V2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZyPgogCiAgICAgICAgIERvIG5vdCBkcmF3IG11bHRpLWNo
YXJhY3RlcnMgPG1pPiBpbiBpdGFsaWMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGstd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sx
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODk3N2IwNS4uZjBkMjc4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjU3LDYgKzI1Nyw5IEBA
IHdlYmtpdC5vcmcvYi8zNTMwMCBodHRwL3Rlc3RzL2xvYWRpbmcvMzA3LWFmdGVyLTMwMy1hZnRl
ci1wb3N0Lmh0bWwgWyBGYWlsdXJlIF0KICMgTmVlZHMgY3VzdG9tIHBvbGljeSBkZWxlZ2F0ZSBl
bmhhbmNlbWVudCB0byBsb2cgZG93bmxvYWRzCiBCdWcoR1RLKSBodHRwL3Rlc3RzL2Rvd25sb2Fk
IFsgRmFpbHVyZSBdCiAKKyMgVG91Y2ggc3VwcG9ydCBvbmx5IGltcGxlbWVudGVkIGluIFdLMgor
ZmFzdC9ldmVudHMvdG91Y2ggWyBTa2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KICMgRW5kIG9mIFRlc3RzIGZhaWxpbmcKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggMzVhNjM1ZC4uOTViYTA0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTg2LDYgKzE4NiwyMyBAQCB3ZWJraXQub3JnL2IvODU0
NjMgZWRpdGluZy9pbnNlcnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9y
ZS1VUkwuaAogd2Via2l0Lm9yZy9iLzEyMDQwMSBmYXN0L2V2ZW50cyBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEyMDQwMSBlZGl0aW5nL3NlbGVjdGlvbiBbIFNraXAgXQogCisjIFRlc3RzIGluIHRo
ZSBnZXN0dXJlIGZvbGRlciBleGVyY2lzZSBJT1Mtc3BlY2lmaWMgY29kZSwgbm9uIGFwcGxpYWJs
ZSB0byBHVEsrCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlIFsgU2tpcCBdCisKKyMgVGhlc2Ug
dGVzdHMgcmVseSBvbiB0b3VjaCBldmVudCBncm91cGluZywgd2hpY2ggWDExL0dUSysgZG9lc24n
dCBkbyBieSBkZXNpZ24KK3dlYmtpdC5vcmcvYi8xMjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFz
aWMtbXVsdGktdG91Y2gtZXZlbnRzLWxpbWl0ZWQuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10b3VjaC1ldmVudHMuaHRt
bCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3Vj
aC1pbnB1dC1lbGVtZW50LWNoYW5nZS1kb2N1bWVudHMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0
Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9mcmFtZS1ob3Zlci11cGRhdGUuaHRtbCBb
IEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC9tdWx0aS10
b3VjaC1ncm91cGVkLXRhcmdldHMuaHRtbCBbIFRpbWVvdXQgRmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWluc2lkZS1uZXN0ZWQtaWZy
YW1lcy5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3Rv
dWNoL211bHRpLXRvdWNoLWluc2lkZS1pZnJhbWVzLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5v
cmcvYi8xMjgxNzIgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5o
dG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3RvdWNoL3Bh
Z2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9y
Zy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbCBbIFRpbWVvdXQg
XQord2Via2l0Lm9yZy9iLzEyODE3MiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQtbGlt
aXRlZC5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTI4MTcyIGZhc3QvZXZlbnRzL3Rv
dWNoL3NlbmQtb25jYW5jZWwtZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQorCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgRXhwZWN0ZWQgZmFpbHVyZXMKICMvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDBlNDBhNjQuLjY4ZGQ0Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNTMsOSArMTUzLDYgQEAgd2Via2l0Lm9yZy9iLzk4
OTI3IGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjEx
NDAgZmFzdC9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjExNDAgaHR0cC90
ZXN0cy9ub3RpZmljYXRpb25zIFsgU2tpcCBdCiAKLSMgVGhlc2UgdGVzdHMgcmVxdWlyZSB0b3Vj
aCBzdXBwb3J0Lgotd2Via2l0Lm9yZy9iLzk4OTMxIGZhc3QvZXZlbnRzL3RvdWNoIFsgU2tpcCBd
Ci0KICMgU3RvcmFnZVRyYWNrZXIgaXMgbm90IGVuYWJsZWQuCiB3ZWJraXQub3JnL2IvOTg5MzMg
c3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlciBbIFNraXAgXQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNWNmNmU4OC4uOWNlZWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KKwor
ICAgICAgICBbR1RLXSBBZGQgdG91Y2gtZXZlbnRzIHJlbGF0ZWQgY29kZSB0byBidWlsZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBpbiBmYXN0
L2V2ZW50cy90b3VjaCBoYXZlIGJlZW4gZW5hYmxlZCBvbiBHVEsrIG5vdyB0aGF0IHRvdWNoCisg
ICAgICAgIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIGFuZCB0aHVzIGFsbCBleHBlY3RlZCBiaXRz
IGFyZSB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxw
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENvbnRleHRIZWxwZXIuaDog
QWRkIGhlbHBlciBvYmplY3QgdG8gdHJhY2sgYWxsIHRvdWNocG9pbnRzLCBoYW5keQorICAgICAg
ICB3aGVuIGNyZWF0aW5nIFdlYlRvdWNoRXZlbnRzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogYmluZGluZ3Mv
Z29iamVjdC9HTlVtYWtlZmlsZS5hbTogQWRkIHRvdWNoIHJlbGF0ZWQgY29kZSBhbmQgaWRscyB0
byBidWlsZCwgdGhvc2UgYXJlCisgICAgICAgIG5lY2Vzc2FyeSBub3cgdGhhdCBHVEsrIGltcGxl
bWVudHMgdG91Y2ggZXZlbnRzLgorCiAyMDE0LTAyLTA1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdoZWVsIGV2ZW50cyBkb24ndCBsYXRjaCB0byBpbm5l
ciBzY3JvbGxhYmxlIGVsZW1lbnRzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
MTkzOTc1ZS4uZmY1NmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yOTk2
LDggKzI5OTYsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dE5vZGVUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dE5vZGVUcmF2
ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBcCisJU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoLmggXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZl
bnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9ybVNvdXJj
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAgXApA
QCAtNjE4Nyw2ICs2MTkwLDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrVG91Y2hDb250ZXh0SGVscGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0
aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2YmRiZjg3Li45NDc4MTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjAyLDYgKzIwMiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVQ
bGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVy
LmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtQbHVnaW5XaWRnZXQuY3BwCiAgICAgcGxhdGZvcm0v
Z3RrL0d0a1BvcHVwTWVudS5jcHAKKyAgICBwbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVs
cGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0v
Z3RrL0d0a1ZlcnNpb25pbmcuYwogICAgIHBsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRv
ci5jcHAKQEAgLTUyOSw2ICs1MzAsNyBAQCBpZiAoRU5BQkxFX1dFQktJVDIpCiAgICAgICAgIGRv
bS9SYW5nZS5pZGwKICAgICAgICAgZG9tL1NoYWRvd1Jvb3QuaWRsCiAgICAgICAgIGRvbS9UZXh0
LmlkbAorICAgICAgICBkb20vVG91Y2guaWRsCiAgICAgICAgIGRvbS9UcmVlV2Fsa2VyLmlkbAog
ICAgICAgICBkb20vVUlFdmVudC5pZGwKICAgICAgICAgZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4
IGJlNWUyYTUuLjY4Y2RiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HTlVtYWtlZmlsZS5hbQpAQCAtMjYyLDYgKzI2Miw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01TdHlsZVNo
ZWV0UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dC5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0UHJpdmF0ZS5oIFwK
KwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2guY3BwIFwKKwlEZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVG91Y2hQcml2YXRlLmggXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01UcmVlV2Fsa2VyLmNwcCBcCkBAIC0zMjMsNiArMzI1LDcgQEAg
d2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTVJhbmdlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01UZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01Ub3VjaC5o
IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJlZVdhbGtlci5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVUlFdmVudC5oIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQmxvYi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCmluZGV4IDllMmJkNWIuLjJlNTRjMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5
bWJvbHMKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3lt
Ym9scwpAQCAtMTA0LDYgKzEwNCw3IEBAIFdlYktpdERPTVRyZWVXYWxrZXIqIHdlYmtpdF9kb21f
ZG9jdW1lbnRfY3JlYXRlX3RyZWVfd2Fsa2VyKFdlYktpdERPTURvY3VtZW50KiwKIFdlYktpdERP
TUNTU1N0eWxlRGVjbGFyYXRpb24qIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X292ZXJyaWRlX3N0
eWxlKFdlYktpdERPTURvY3VtZW50KiwgV2ViS2l0RE9NRWxlbWVudCosIGNvbnN0IGdjaGFyKikK
IFdlYktpdERPTVhQYXRoRXhwcmVzc2lvbiogd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZXhw
cmVzc2lvbihXZWJLaXRET01Eb2N1bWVudCosIGNvbnN0IGdjaGFyKiwgV2ViS2l0RE9NWFBhdGhO
U1Jlc29sdmVyKiwgR0Vycm9yKiopCiBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIHdlYmtpdF9k
b21fZG9jdW1lbnRfY3JlYXRlX25zX3Jlc29sdmVyKFdlYktpdERPTURvY3VtZW50KiwgV2ViS2l0
RE9NTm9kZSopCitXZWJLaXRET01Ub3VjaCogd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfdG91
Y2goV2ViS2l0RE9NRG9jdW1lbnQqLCBXZWJLaXRET01ET01XaW5kb3cqLCBXZWJLaXRET01FdmVu
dFRhcmdldCosIGdsb25nLCBnbG9uZywgZ2xvbmcsIGdsb25nLCBnbG9uZywgZ2xvbmcsIGdsb25n
LCBnZmxvYXQsIGdmbG9hdCwgR0Vycm9yKiopCiBXZWJLaXRET01YUGF0aFJlc3VsdCogd2Via2l0
X2RvbV9kb2N1bWVudF9ldmFsdWF0ZShXZWJLaXRET01Eb2N1bWVudCosIGNvbnN0IGdjaGFyKiwg
V2ViS2l0RE9NTm9kZSosIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciosIGd1c2hvcnQsIFdlYktp
dERPTVhQYXRoUmVzdWx0KiwgR0Vycm9yKiopCiBnYm9vbGVhbiB3ZWJraXRfZG9tX2RvY3VtZW50
X2V4ZWNfY29tbWFuZChXZWJLaXRET01Eb2N1bWVudCosIGNvbnN0IGdjaGFyKiwgZ2Jvb2xlYW4s
IGNvbnN0IGdjaGFyKikKIGdib29sZWFuIHdlYmtpdF9kb21fZG9jdW1lbnRfcXVlcnlfY29tbWFu
ZF9lbmFibGVkKFdlYktpdERPTURvY3VtZW50KiwgY29uc3QgZ2NoYXIqKQpAQCAtMTY2Miw2ICsx
NjYzLDE4IEBAIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhX3go
V2ViS2l0RE9NV2hlZWxFdmVudCopCiBnbG9uZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93
aGVlbF9kZWx0YV95KFdlYktpdERPTVdoZWVsRXZlbnQqKQogZ2xvbmcgd2Via2l0X2RvbV93aGVl
bF9ldmVudF9nZXRfd2hlZWxfZGVsdGEoV2ViS2l0RE9NV2hlZWxFdmVudCopCiBnYm9vbGVhbiB3
ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93ZWJraXRfZGlyZWN0aW9uX2ludmVydGVkX2Zyb21f
ZGV2aWNlKFdlYktpdERPTVdoZWVsRXZlbnQqKQorV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHdlYmtp
dF9kb21fdG91Y2hfZ2V0X3RhcmdldChXZWJLaXRET01Ub3VjaCopCitnZmxvYXQgd2Via2l0X2Rv
bV90b3VjaF9nZXRfd2Via2l0X2ZvcmNlKFdlYktpdERPTVRvdWNoKikKK2dmbG9hdCB3ZWJraXRf
ZG9tX3RvdWNoX2dldF93ZWJraXRfcm90YXRpb25fYW5nbGUoV2ViS2l0RE9NVG91Y2gqKQorZ2xv
bmcgd2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3goV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcg
d2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3koV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Vi
a2l0X2RvbV90b3VjaF9nZXRfcGFnZV94KFdlYktpdERPTVRvdWNoKikKK2dsb25nIHdlYmtpdF9k
b21fdG91Y2hfZ2V0X3BhZ2VfeShXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3Rv
dWNoX2dldF9zY3JlZW5feChXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNo
X2dldF9zY3JlZW5feShXZWJLaXRET01Ub3VjaCopCitnbG9uZyB3ZWJraXRfZG9tX3RvdWNoX2dl
dF93ZWJraXRfcmFkaXVzX3goV2ViS2l0RE9NVG91Y2gqKQorZ2xvbmcgd2Via2l0X2RvbV90b3Vj
aF9nZXRfd2Via2l0X3JhZGl1c195KFdlYktpdERPTVRvdWNoKikKK2d1bG9uZyB3ZWJraXRfZG9t
X3RvdWNoX2dldF9pZGVudGlmaWVyKFdlYktpdERPTVRvdWNoKikKIGdjaGFyKiB3ZWJraXRfZG9t
X2F1ZGlvX3RyYWNrX2dldF9pZChXZWJLaXRET01BdWRpb1RyYWNrKikKIGdjaGFyKiB3ZWJraXRf
ZG9tX2F1ZGlvX3RyYWNrX2dldF9raW5kKFdlYktpdERPTUF1ZGlvVHJhY2sqKQogZ2NoYXIqIHdl
YmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2xhYmVsKFdlYktpdERPTUF1ZGlvVHJhY2sqKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhlbHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTFiYzliCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1RvdWNoQ29udGV4dEhl
bHBlci5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBDYXJs
b3MgR2FybmFjaG8gPGNhcmxvc2dAZ25vbWUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR3RrVG91Y2hDb250ZXh0SGVscGVyLmgiCisKKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBHdGtUb3VjaENvbnRleHRI
ZWxwZXI6OmhhbmRsZUV2ZW50KEdka0V2ZW50KiB0b3VjaEV2ZW50KQoreworI2lmbmRlZiBHVEtf
QVBJX1ZFUlNJT05fMgorICAgIHVpbnQzMl90IHNlcXVlbmNlID0gR1BPSU5URVJfVE9fVUlOVChn
ZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKHRvdWNoRXZlbnQpKTsKKworICAgIHN3aXRjaCAo
dG91Y2hFdmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX1RPVUNIX0JFR0lOOiB7CisgICAgICAg
IEFTU0VSVChtX3RvdWNoRXZlbnRzLmNvbnRhaW5zKHNlcXVlbmNlKSk7CisgICAgICAgIEdVbmlx
dWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9jb3B5KHRvdWNoRXZlbnQpKTsKKyAgICAg
ICAgbV90b3VjaEV2ZW50cy5hZGQoc2VxdWVuY2UsIHN0ZDo6bW92ZShldmVudCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOiB7CisgICAgICAgIGF1
dG8gaXQgPSBtX3RvdWNoRXZlbnRzLmZpbmQoc2VxdWVuY2UpOworICAgICAgICBBU1NFUlQoaXQg
IT0gbV90b3VjaEV2ZW50cy5lbmQoKSk7CisgICAgICAgIGl0LT52YWx1ZS5yZXNldChnZGtfZXZl
bnRfY29weSh0b3VjaEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdE
S19UT1VDSF9FTkQ6CisgICAgICAgIEFTU0VSVChtX3RvdWNoRXZlbnRzLmNvbnRhaW5zKHNlcXVl
bmNlKSk7CisgICAgICAgIG1fdG91Y2hFdmVudHMucmVtb3ZlKHNlcXVlbmNlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRp
ZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtUb3VjaENvbnRleHRIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtU
b3VjaENvbnRleHRIZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
YjI4NWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a1RvdWNoQ29udGV4dEhlbHBlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQ2FybG9zIEdhcm5hY2hvIDxjYXJsb3NnQGdub21lLm9yZz4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBHdGtUb3VjaENvbnRleHRIZWxwZXJfaAorI2RlZmluZSBHdGtUb3VjaENvbnRleHRI
ZWxwZXJfaAorCisjaW5jbHVkZSAiR1VuaXF1ZVB0ckd0ay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90LCBHVW5pcXVlUHRyPEdka0V2ZW50Pj4gVG91
Y2hFdmVudHNNYXA7CisKK2NsYXNzIEd0a1RvdWNoQ29udGV4dEhlbHBlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoR3RrVG91Y2hDb250ZXh0SGVscGVyKTsKK3B1YmxpYzoKKyAgICBHdGtU
b3VjaENvbnRleHRIZWxwZXIoKSB7IH07CisgICAgYm9vbCBoYW5kbGVFdmVudChHZGtFdmVudCop
OworICAgIGNvbnN0IFRvdWNoRXZlbnRzTWFwJiB0b3VjaEV2ZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1fdG91Y2hFdmVudHM7IH07CisKK3ByaXZhdGU6CisgICAgVG91Y2hFdmVudHNNYXAgbV90b3Vj
aEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggODhkMTBmMy4uN2M1MGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEzLTEyLTIzICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4K
KworICAgICAgICBbR1RLXSBBbGxvdyBidWlsZGluZyB3aXRoIHRvdWNoIGV2ZW50cyBlbmFibGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZW4gdGhv
dWdoIFdlYktpdDEgR1RLIGNvZGUgZG9lc24ndCBpbXBsZW1lbnQgdG91Y2ggZXZlbnRzLAorICAg
ICAgICBGaXggYnVpbGQgaWYgRU5BQkxFX1RPVUNIX0VWRU5UUyBpcyBwcmVzZW50IGZvciBXSzIu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjpuZWVkVG91Y2hFdmVudHMpOiBBZGQgZW1wdHkgc3R1Ygor
CiAyMDE0LTAyLTA1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmVtb3ZlIEVOQUJMRShTVkcpIGd1YXJkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCAxZGU3ZjJmLi42NGEwOTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaApAQCAtMTQzLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogI2VuZGlmCiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWdu
ZWQpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgbmVlZFRvdWNoRXZlbnRzKGJvb2wpIHsgfQog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSosIEdy
YXBoaWNzTGF5ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzT25lU2hvdERyYXdp
bmdTeW5jaHJvbml6YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMWFlZDk5Li5iMDRjZGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTMtMTItMjMgIENhcmxvcyBHYXJuYWNobyAgPGNh
cmxvc2dAZ25vbWUub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBzdXBwb3J0IHRvdWNo
IGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
biBHVEsrID49IDMuNC4wLCBHZGtFdmVudFRvdWNoIGlzIGF2YWlsYWJsZSB0byBpbmZvcm0gYWJv
dXQgbXVsdGl0b3VjaCBldmVudHMuIFVzZSB0aGVzZSB0byBpbXBsZW1lbnQKKyAgICAgICAgdG91
Y2ggZXZlbnRzIG9uIHRoaXMgcGxhdGZvcm0uIElmIGEgdG91Y2ggaXMgbGVmdCB1bmhhbmRsZWQg
YW5kIGlzIHRoZSAicG9pbnRlciBlbXVsYXRpbmciIG9uZSwgbW91c2UKKyAgICAgICAgZXZlbnRz
IHdpbGwgYmUgZ2VuZXJhdGVkIGFzIGEgZmFsbGJhY2suCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJl
ZC9ndGsvTmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHA6CisgICAgICAgICogU2hhcmVkL05hdGl2
ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6
bmF0aXZlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50Ojp0b3Vj
aENvbnRleHQpOiBBZGQgR1RLKyBpbXBsZW1lbnRhdGlvbiBvZiBOYXRpdmVXZWJUb3VjaEV2ZW50
LgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6dG91Y2hQaGFzZUZyb21FdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQpOiBBZGQgbWV0aG9kcyB0byBnZW5lcmF0ZSBXZWJU
b3VjaEV2ZW50cyBvdXQKKyAgICAgICAgb2YgR2RrRXZlbnRUb3VjaCBldmVudHMsIGEgR3RrVG91
Y2hDb250ZXh0SGVscGVyIG9iamVjdCBpcyB1c2VkIHRvIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQg
YWxsIGN1cnJlbnQKKyAgICAgICAgdG91Y2hlcywgaW4gb3JkZXIgdG8gYnVpbGQgaW5mb3JtYXRp
b24gYWJvdXQgYWxsIGluZGl2aWR1YWwgdG91Y2hwb2ludHMuCisgICAgICAgICogU2hhcmVkL2d0
ay9XZWJFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRv
dWNoRXZlbnQpOiBJbXBsZW1lbnQgcG9pbnRlciBlbXVsYXRpb24uIElmIGEgdG91Y2ggZXZlbnQg
d2FzIHVuaGFuZGxlZAorICAgICAgICBpbiBET00gYW5kIHBlcnRhaW5zIHRvIHRoZSB0b3VjaCBz
ZXF1ZW5jZSB0aGF0IGVtdWxhdGVzIHBvaW50ZXIgZXZlbnRzLiBUaGUgZXZlbnQgZ2V0cyB0cmFu
c2Zvcm1lZCB0byBpdHMKKyAgICAgICAgbW91c2UgZXZlbnQgY291bnRlcnBhcnQgYW5kIGhhbmRs
ZWQgYnkgdGhlIHdpZGdldCBhZ2Fpbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZSk6IExpc3RlbiBmb3Ig
dG91Y2ggZXZlbnRzCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZlbnQpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdCk6IEFkZCBpbXBsZW1lbnRhdGlv
biBmb3IgdGhlIHRvdWNoX2V2ZW50cygpIGhhbmRsZXIsIHRoaXMgbWVyZWx5CisgICAgICAgIGxl
dHMgdGhlIHBhZ2VQcm94eSBoYW5kbGUgdGhlIE5hdGl2ZVdlYlRvdWNoRXZlbnQgd2UgY3JlYXRl
IHRvIHdyYXAgdGhlIEdka0V2ZW50IHJlY2VpdmVkLgorCiAyMDE0LTAyLTA2ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSDigJkgd2l0aCAn
IHRvIHNpbGVuY2UgdGhlIGNoZWNrLWZvci13ZWJraXQtZnJhbWV3b3JrLWluY2x1ZGUtY29uc2lz
dGVuY3kgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTVlZGVkMy4u
MzhlY2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zODQsNiArMzg0LDcg
QEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0xheWVy
VHJlZUNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdl
YktleWJvYXJkRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2
ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2
ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2
ZVdlYldoZWVsRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1ByaW50
SW5mb0d0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDRhODRhOTIuLjg0
NDJkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC01Niw2ICs1Niw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9ndGsvTGF5ZXJUcmVlQ29udGV4dEd0
ay5jcHAKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCiAgICAg
U2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAorICAgIFNoYXJlZC9ndGsvTmF0
aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZl
bnRHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9QcmludEluZm9HdGsuY3BwCiAgICAgU2hhcmVkL2d0
ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCkBAIC01NjUsNiArNTY2LDggQEAgaWYgKEVO
QUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICAgICAgU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3Bw
CiAgICAgICAgIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKICAgICAgICAgU2hhcmVkL1dl
Yk1vdXNlRXZlbnQuY3BwCisgICAgICAgIFNoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3Bw
CisgICAgICAgIFNoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcAogICAgICAgICBTaGFyZWQvV2ViV2hl
ZWxFdmVudC5jcHAKIAogICAgICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNw
cApAQCAtNTgzLDYgKzU4Niw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1MpCiAKICAgICAg
ICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFy
ZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCisgICAgICAgIFNoYXJlZC9ndGsvTmF0
aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVl
bEV2ZW50R3RrLmNwcAogICAgICAgICBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0
ay5jcHAKICAgICAgICAgU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRleCAwZDRiMmNmLi5lZjViZjY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMx
LDkgKzMxLDEwIEBACiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIE9CSkNfQ0xBU1MgVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKLQotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdU
SykKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0d0a1RvdWNoQ29udGV4dEhlbHBlci5oPgorI2VsaWYgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUg
IkV3a1RvdWNoRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ2LDggKzQ3LDEyIEBAIHB1YmxpYzoKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChVSVdlYlRvdWNo
RXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKik7CiAgICAgY29uc3QgVUlXZWJUb3VjaEV2ZW50c0dl
c3R1cmVSZWNvZ25pemVyKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZl
bnQuZ2V0KCk7IH0KLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIFBMQVRGT1JNKEdU
SykKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmKTsK
KyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEdka0V2ZW50KiwgV2ViQ29yZTo6R3RrVG91Y2hDb250
ZXh0SGVscGVyJik7CisgICAgY29uc3QgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNo
Q29udGV4dEhlbHBlciYgdG91Y2hDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90b3VjaENvbnRl
eHQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEV3a1Rv
dWNoRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBjb25zdCBF
d2tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQu
Z2V0KCk7IH0KICNlbmRpZgpAQCAtNTUsOCArNjAsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVj
b2duaXplcj4gbV9uYXRpdmVFdmVudDsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkKKyNlbGlm
IFBMQVRGT1JNKEdUSykKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50Owor
ICAgIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYgbV90b3VjaENvbnRleHQ7
CisjZWxpZiBQTEFURk9STShFRkwpCiAgICAgUmVmUHRyPEV3a1RvdWNoRXZlbnQ+IG1fbmF0aXZl
RXZlbnQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L05hdGl2ZVdlYlRvdWNoRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iMmNkNGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIENhcmxvcyBHYXJuYWNobyA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJUb3VjaEV2ZW50
LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJU
b3VjaEV2ZW50KEdka0V2ZW50KiBldmVudCwgV2ViQ29yZTo6R3RrVG91Y2hDb250ZXh0SGVscGVy
JiBjb250ZXh0KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YlRvdWNoRXZlbnQoZXZlbnQsIGNvbnRleHQpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZl
bnRfY29weShldmVudCkpCisgICAgLCBtX3RvdWNoQ29udGV4dChjb250ZXh0KQoreworfQorCitO
YXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmIGV2ZW50KQorICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgZXZlbnQudG91Y2hDb250ZXh0
KCkpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudC5uYXRpdmVFdmVu
dCgpKSkKKyAgICAsIG1fdG91Y2hDb250ZXh0KGV2ZW50LnRvdWNoQ29udGV4dCgpKQoreworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5LmNwcAppbmRleCBjYjg4YTgyLi40NjJiMTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgog
I2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1
ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjAz
LDQgKzIwNCw3NSBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKKyNpZm5kZWYgR1RLX0FQ
SV9WRVJTSU9OXzIKK3N0YXRpYyBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0
ZSB0b3VjaFBoYXNlRnJvbUV2ZW50cyhjb25zdCBHZGtFdmVudCogY3VycmVudCwgY29uc3QgR2Rr
RXZlbnQqIGV2ZW50KQoreworICAgIGlmIChnZGtfZXZlbnRfZ2V0X2V2ZW50X3NlcXVlbmNlKGN1
cnJlbnQpICE9IGdka19ldmVudF9nZXRfZXZlbnRfc2VxdWVuY2UoZXZlbnQpKQorICAgICAgICBy
ZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisKKyAgICBzd2l0
Y2ggKGN1cnJlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19UT1VDSF9VUERBVEU6CisgICAgICAg
IHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAgY2FzZSBHREtf
VE9VQ0hfQkVHSU46CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UHJlc3NlZDsKKyAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgIHJldHVybiBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgYXBwZW5kVG91Y2hFdmVudChWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50
PiYgdG91Y2hQb2ludExpc3QsIGNvbnN0IEdka0V2ZW50KiBldmVudCwgV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGUpCit7CisgICAgdWludDMyX3QgaWRlbnRpZmll
ciA9IEdQT0lOVEVSX1RPX1VJTlQoZ2RrX2V2ZW50X2dldF9ldmVudF9zZXF1ZW5jZShldmVudCkp
OworCisgICAgZ2RvdWJsZSB4LCB5OworICAgIGdka19ldmVudF9nZXRfY29vcmRzKGV2ZW50LCAm
eCwgJnkpOworCisgICAgZ2RvdWJsZSB4Um9vdCwgeVJvb3Q7CisgICAgZ2RrX2V2ZW50X2dldF9y
b290X2Nvb3JkcyhldmVudCwgJnhSb290LCAmeVJvb3QpOworCisgICAgV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50IHRvdWNoUG9pbnQoaWRlbnRpZmllciwgc3RhdGUsIEludFBvaW50KHhSb290LCB5Um9v
dCksIEludFBvaW50KHgsIHkpKTsKKyAgICB0b3VjaFBvaW50TGlzdC51bmNoZWNrZWRBcHBlbmQo
dG91Y2hQb2ludCk7Cit9CisjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKKworV2ViVG91Y2hF
dmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3QgR2RrRXZlbnQq
IGV2ZW50LCBjb25zdCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImIHRvdWNoQ29udGV4
dCkKK3sKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyAgICBXZWJFdmVudDo6VHlwZSB0eXBl
ID0gV2ViRXZlbnQ6Ok5vVHlwZTsKKyAgICBjb25zdCBhdXRvJiB0b3VjaEV2ZW50cyA9IHRvdWNo
Q29udGV4dC50b3VjaEV2ZW50cygpOworICAgIGludCBudW1FdmVudHMgPSB0b3VjaEV2ZW50cy5z
aXplKCk7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7CisgICAgY2FzZSBHREtfVE9VQ0hf
QkVHSU46CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6VG91Y2hTdGFydDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBHREtfVE9VQ0hfVVBEQVRFOgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6
OlRvdWNoTW92ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVE9VQ0hfRU5EOgorICAg
ICAgICB0eXBlID0gV2ViRXZlbnQ6OlRvdWNoRW5kOworICAgICAgICArK251bUV2ZW50czsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludExp
c3Q7CisgICAgdG91Y2hQb2ludExpc3QucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1FdmVudHMp
OworCisgICAgZm9yIChhdXRvIGl0ID0gdG91Y2hFdmVudHMuYmVnaW4oKTsgaXQgIT0gdG91Y2hF
dmVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIGFwcGVuZFRvdWNoRXZlbnQodG91Y2hQb2ludExp
c3QsIGl0LT52YWx1ZS5nZXQoKSwgdG91Y2hQaGFzZUZyb21FdmVudHMoaXQtPnZhbHVlLmdldCgp
LCBldmVudCkpOworCisgICAgLy8gVG91Y2ggd2FzIGFscmVhZHkgcmVtb3ZlZCBmcm9tIHRoZSBH
dGtUb3VjaENvbnRleHRIZWxwZXIsIGFkZCBpdCBoZXJlLgorICAgIGlmIChldmVudC0+dHlwZSA9
PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICBhcHBlbmRUb3VjaEV2ZW50KHRvdWNoUG9pbnRMaXN0
LCBldmVudCwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKKworICAgIHJl
dHVybiBXZWJUb3VjaEV2ZW50KHR5cGUsIHRvdWNoUG9pbnRMaXN0LCBtb2RpZmllcnNGb3JFdmVu
dChldmVudCksIGdka19ldmVudF9nZXRfdGltZShldmVudCkpOworI2Vsc2UKKyAgICByZXR1cm4g
V2ViVG91Y2hFdmVudCgpOworI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0
b3J5LmgKaW5kZXggMDg1ODE1Yy4uZmMzMDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrL1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJXZWJF
dmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25SZXN1bHRzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9HdGtUb3VjaENvbnRleHRIZWxwZXIuaD4KIAogdHlwZWRlZiB1bmlvbiBfR2Rr
RXZlbnQgR2RrRXZlbnQ7CiAKQEAgLTM5LDYgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBX
ZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQpOwog
ICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZl
bnQqKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50
KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJik7Cisg
ICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVu
dCosIGNvbnN0IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNGI3ZGExZC4uM2QwN2Q4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAt
MzI3LDQgKzMyNyw1NCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVu
KGNvbnN0IEludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UgogCiAjZW5kaWYgLy8gRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNo
RXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5k
bGVkKQoreworICAgIGlmICh3YXNFdmVudEhhbmRsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIEVtdWxhdGUgcG9pbnRlciBldmVudHMgaWYgdW5oYW5kbGVkLgorICAgIGNvbnN0IEdka0V2
ZW50KiB0b3VjaEV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQoKTsKKworICAgIGlmICghdG91Y2hF
dmVudC0+dG91Y2guZW11bGF0aW5nX3BvaW50ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdV
bmlxdWVQdHI8R2RrRXZlbnQ+IHBvaW50ZXJFdmVudDsKKworICAgIGlmICh0b3VjaEV2ZW50LT50
eXBlID09IEdES19UT1VDSF9VUERBVEUpIHsKKyAgICAgICAgcG9pbnRlckV2ZW50LnJlc2V0KGdk
a19ldmVudF9uZXcoR0RLX01PVElPTl9OT1RJRlkpKTsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5t
b3Rpb24udGltZSA9IHRvdWNoRXZlbnQtPnRvdWNoLnRpbWU7CisgICAgICAgIHBvaW50ZXJFdmVu
dC0+bW90aW9uLnggPSB0b3VjaEV2ZW50LT50b3VjaC54OworICAgICAgICBwb2ludGVyRXZlbnQt
Pm1vdGlvbi55ID0gdG91Y2hFdmVudC0+dG91Y2gueTsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5t
b3Rpb24ueF9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueF9yb290OworICAgICAgICBwb2ludGVy
RXZlbnQtPm1vdGlvbi55X3Jvb3QgPSB0b3VjaEV2ZW50LT50b3VjaC55X3Jvb3Q7CisgICAgICAg
IHBvaW50ZXJFdmVudC0+bW90aW9uLnN0YXRlID0gdG91Y2hFdmVudC0+dG91Y2guc3RhdGUgfCBH
REtfQlVUVE9OMV9NQVNLOworICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAodG91Y2hFdmVu
dC0+dHlwZSkgeworICAgICAgICBjYXNlIEdES19UT1VDSF9FTkQ6CisgICAgICAgICAgICBwb2lu
dGVyRXZlbnQucmVzZXQoZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1JFTEVBU0UpKTsKKyAgICAg
ICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnN0YXRlID0gdG91Y2hFdmVudC0+dG91Y2guc3Rh
dGUgfCBHREtfQlVUVE9OMV9NQVNLOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0RLX1RPVUNIX0JFR0lOOgorICAgICAgICAgICAgcG9pbnRlckV2ZW50LnJlc2V0KGdka19ldmVu
dF9uZXcoR0RLX0JVVFRPTl9QUkVTUykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLmJ1dHRvbiA9IDE7CisgICAgICAgIHBvaW50ZXJF
dmVudC0+YnV0dG9uLnRpbWUgPSB0b3VjaEV2ZW50LT50b3VjaC50aW1lOworICAgICAgICBwb2lu
dGVyRXZlbnQtPmJ1dHRvbi54ID0gdG91Y2hFdmVudC0+dG91Y2gueDsKKyAgICAgICAgcG9pbnRl
ckV2ZW50LT5idXR0b24ueSA9IHRvdWNoRXZlbnQtPnRvdWNoLnk7CisgICAgICAgIHBvaW50ZXJF
dmVudC0+YnV0dG9uLnhfcm9vdCA9IHRvdWNoRXZlbnQtPnRvdWNoLnhfcm9vdDsKKyAgICAgICAg
cG9pbnRlckV2ZW50LT5idXR0b24ueV9yb290ID0gdG91Y2hFdmVudC0+dG91Y2gueV9yb290Owor
ICAgIH0KKworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHBvaW50ZXJFdmVudC5nZXQoKSwgZ2Rr
X2V2ZW50X2dldF9kZXZpY2UodG91Y2hFdmVudCkpOworICAgIGdka19ldmVudF9zZXRfc291cmNl
X2RldmljZShwb2ludGVyRXZlbnQuZ2V0KCksIGdka19ldmVudF9nZXRfc291cmNlX2RldmljZSh0
b3VjaEV2ZW50KSk7CisgICAgcG9pbnRlckV2ZW50LT5hbnkud2luZG93ID0gR0RLX1dJTkRPVyhn
X29iamVjdF9yZWYodG91Y2hFdmVudC0+YW55LndpbmRvdykpOworICAgIHBvaW50ZXJFdmVudC0+
YW55LnNlbmRfZXZlbnQgPSBUUlVFOworCisgICAgZ3RrX3dpZGdldF9ldmVudChtX3ZpZXdXaWRn
ZXQsIHBvaW50ZXJFdmVudC5nZXQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5k
ZXggOTYzYzJjZS4uMGQ2M2UzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMTksNiArMTE5LDggQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIG92ZXJy
aWRlOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CisK
ICAgICAvLyBNZW1iZXJzIG9mIFBhZ2VDbGllbnRJbXBsIGNsYXNzCiAgICAgR3RrV2lkZ2V0KiBt
X3ZpZXdXaWRnZXQ7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAKaW5kZXggZDRkMzAxOC4uNGE0ZTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTMs
NiArNTMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvR3RrQ2xpY2tDb3VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtEcmFnQW5k
RHJvcEhlbHBlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0
a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0x
MTAsNiArMTExLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIEdV
bmlxdWVQdHI8R2RrRXZlbnQ+IGNvbnRleHRNZW51RXZlbnQ7CiAgICAgV2ViQ29udGV4dE1lbnVQ
cm94eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQcm94eTsKICAgICBXZWJWaWV3QmFzZUlucHV0TWV0
aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVyOworICAgIEd0a1RvdWNoQ29udGV4dEhlbHBlciB0
b3VjaENvbnRleHQ7CiAKICAgICBHdGtXaW5kb3cqIHRvcGxldmVsT25TY3JlZW5XaW5kb3c7CiAg
ICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFJlc2l6ZUdyaXBWaXNpYmlsaXR5SUQ7CkBAIC0yNzIs
NyArMjc0LDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdl
dCogd2lkZ2V0KQogICAgICAgICB8IEdES19CVVRUT05fTU9USU9OX01BU0sKICAgICAgICAgfCBH
REtfQlVUVE9OMV9NT1RJT05fTUFTSwogICAgICAgICB8IEdES19CVVRUT04yX01PVElPTl9NQVNL
Ci0gICAgICAgIHwgR0RLX0JVVFRPTjNfTU9USU9OX01BU0s7CisgICAgICAgIHwgR0RLX0JVVFRP
TjNfTU9USU9OX01BU0sKKyAgICAgICAgfCBHREtfVE9VQ0hfTUFTSzsKIAogICAgIGdpbnQgYXR0
cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsKIApAQCAt
NzEyLDYgKzcxNSwxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25O
b3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNbwogICAgIHJldHVybiBUUlVF
OwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VUb3VjaEV2ZW50KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudFRvdWNoKiBldmVudCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2Owor
CisgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0aW9uRGlhbG9nKQorICAgICAgICByZXR1cm4gVFJV
RTsKKworICAgIHByaXYtPnRvdWNoQ29udGV4dC5oYW5kbGVFdmVudChyZWludGVycHJldF9jYXN0
PEdka0V2ZW50Kj4oZXZlbnQpKTsKKyAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVRvdWNoRXZl
bnQoTmF0aXZlV2ViVG91Y2hFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQp
LCBwcml2LT50b3VjaENvbnRleHQpKTsKKworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXAoR3RrV2lkZ2V0KiB3aWRnZXQs
IGdpbnQgeCwgZ2ludCB5LCBnYm9vbGVhbiBrZXlib2FyZE1vZGUsIEd0a1Rvb2x0aXAqIHRvb2x0
aXApCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9W
SUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsKQEAgLTg5Niw2ICs5MTIsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdl
YmtpdFdlYlZpZQogICAgIHdpZGdldENsYXNzLT5idXR0b25fcmVsZWFzZV9ldmVudCA9IHdlYmtp
dFdlYlZpZXdCYXNlQnV0dG9uUmVsZWFzZUV2ZW50OwogICAgIHdpZGdldENsYXNzLT5zY3JvbGxf
ZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVNjcm9sbEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5t
b3Rpb25fbm90aWZ5X2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudDsK
KyAgICB3aWRnZXRDbGFzcy0+dG91Y2hfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZl
bnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnF1ZXJ5X3Rvb2x0aXAgPSB3ZWJraXRXZWJWaWV3QmFzZVF1
ZXJ5VG9vbHRpcDsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHdpZGdldENsYXNzLT5k
cmFnX2VuZCA9IHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9h
dXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBX
ZWJLaXRGZWF0dXJlcy5tNAppbmRleCA1ZGFmN2I5Li5kMzA3MzhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKKysrIGIvU291cmNlL2F1dG90b29s
cy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CkBAIC0xNTksNyArMTU5LDcgQEAgJHNyY2Rpci9Ub29s
cy9ndGsvZ2VuZXJhdGUtZmVhdHVyZS1kZWZpbmVzLWZpbGVzICRDT05GSUdVUkFCTEVfRkVBVFVS
RV9ERUZJTkVTIFwKICAgICBFTkFCTEVfVEVNUExBVEVfRUxFTUVOVD0xIFwKICAgICBFTkFCTEVf
U0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDPTFcCiAgICAgRU5BQkxFX1RFWFRfQVVUT1NJWklO
Rz0wIFwKLSAgICBFTkFCTEVfVE9VQ0hfRVZFTlRTPTAgXAorICAgIEVOQUJMRV9UT1VDSF9FVkVO
VFM9MSBcCiAgICAgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0wIFwKICAgICBFTkFCTEVfVVNF
Ul9USU1JTkc9MCBcCiAgICAgRU5BQkxFX1ZJQlJBVElPTj0wIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UK
aW5kZXggMjdhZjE0Ni4uYjFjMmNhZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTY2LDcgKzY2
LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NIQURPV19ET00g
T0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NQRUxMQ0hF
Q0sgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVEVNUExBVEVf
RUxFTUVOVCBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VD
SF9FVkVOVFMgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RP
VUNIX0VWRU5UUyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9V
U0VSU0VMRUNUX0FMTCBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9WSUJSQVRJT04gT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X1ZJREVPIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGRlYmJmMmEuLjIzNzQ0NDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0xMi0yNCAgQ2FybG9zIEdh
cm5hY2hvICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gRW5hYmxlIHRvdWNo
IGZlYXR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05ODkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OnVw
ZGF0ZUV2ZW50Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpj
cmVhdGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6YWRkVG91
Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9p
bnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpzZW5kVXBkYXRlZFRvdWNoRXZl
bnRzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hQb2ludFJhZGl1
cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIpOiBJ
bXBsZW1lbnQgdG91Y2ggZXZlbnQgcHJveHlpbmcuCisKIDIwMTQtMDItMDYgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxNjM1MzAuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZl
bnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApp
bmRleCA1ODI2MDI3Li5jMGNiNDUyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNl
bmRlci5jcHAKQEAgLTkxMiw2ICs5MTIsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2NoZWR1bGVB
c3luY2hyb25vdXNLZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2IKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1Zh
bHVlUmVmIGNsZWFyVG91Y2hQb2ludHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBz
dGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKICAgICB7ICJtb3Vz
ZVNjcm9sbEJ5IiwgbW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAiY29udGlu
dW91c01vdXNlU2Nyb2xsQnkiLCBjb250aW51b3VzTW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0g
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggNWI2MjY0Ni4u
NTMxMDM3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtNDI2
LDcgKzQyNiw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiV1RGX1VTRV9U
SUxFRF9CQUNLSU5HX1NUT1JFIiwgZGVmYXVsdCA9PiBpc0VmbCgpLCB2YWx1ZSA9PiBcJHRpbGVk
QmFja2luZ1N0b3JlU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWV2ZW50cyIs
IGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBFdmVudHMgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9UT1VDSF9FVkVOVFMiLCBkZWZhdWx0ID0+IChpc0lPU1dlYktpdCgpIHx8IGlzRWZs
KCkpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAoaXNJT1NXZWJLaXQoKSB8fCBpc0VmbCgp
IHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAogCiAgICAgeyBv
cHRpb24gPT4gInRvdWNoLXNsaWRlciIsIGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBTbGlkZXIgc3Vw
cG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9TTElERVIiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkdG91Y2hTbGlkZXJTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDVkM2EwNDguLmRiMmM1OGIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC0yOCw5ICsyOCwxMyBAQAogI2Rl
ZmluZSBFdmVudFNlbmRlclByb3h5X2gKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZP
Uk0oR1RLKQorI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUgPGdk
ay9nZGsuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2VsaWYgUExBVEZPUk0oRUZMKQog
I2luY2x1ZGUgPFdlYktpdDIvRVdlYktpdDIuaD4KICNlbmRpZgpAQCAtOTAsNiArOTQsOCBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIHNlbmRPclF1ZXVlRXZlbnQoR2Rr
RXZlbnQqKTsKICAgICBHZGtFdmVudCogY3JlYXRlTW91c2VCdXR0b25FdmVudChHZGtFdmVudFR5
cGUsIHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVycyk7CisgICAgR1VuaXF1ZVB0cjxH
ZGtFdmVudD4gY3JlYXRlVG91Y2hFdmVudChHZGtFdmVudFR5cGUsIGludCBpZCk7CisgICAgdm9p
ZCBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgdm9p
ZCBzZW5kT3JRdWV1ZUV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7CiAgICAgdm9pZCBkaXNwYXRjaEV2
ZW50KGNvbnN0IFdUUkV2ZW50Jik7CkBAIC0xMTAsNiArMTE2LDggQEAgcHJpdmF0ZToKICNlbGlm
IFBMQVRGT1JNKEdUSykKICAgICBEZXF1ZTxXVFJFdmVudFF1ZXVlSXRlbT4gbV9ldmVudFF1ZXVl
OwogICAgIHVuc2lnbmVkIG1fbW91c2VCdXR0b25DdXJyZW50bHlEb3duOworICAgIFZlY3RvcjxH
VW5pcXVlUHRyPEdka0V2ZW50Pj4gbV90b3VjaEV2ZW50czsKKyAgICBIYXNoU2V0PGludD4gbV91
cGRhdGVkVG91Y2hFdmVudHM7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgRGVxdWU8V1RSRXZl
bnQ+IG1fZXZlbnRRdWV1ZTsKICAgICBXS0V2ZW50TW91c2VCdXR0b24gbV9tb3VzZUJ1dHRvbjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlH
dGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5j
cHAKaW5kZXggNDBmNjU5ZS4uOTZkM2I5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlclByb3h5LmgiCiAKKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgogI2luY2x1
ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KQEAgLTQ0
MSw0ICs0NDIsMTIwIEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bGVhcEZvcndhcmQoaW50IG1p
bGxpc2Vjb25kcykKICAgICBtX3RpbWUgKz0gbWlsbGlzZWNvbmRzIC8gMTAwMC4wOwogfQogCit2
b2lkIHVwZGF0ZUV2ZW50Q29vcmRpbmF0ZXMoR2RrRXZlbnQqIHRvdWNoRXZlbnQsIGludCB4LCBp
bnQgeSkKK3sKKyAgICB0b3VjaEV2ZW50LT50b3VjaC54ID0geDsKKyAgICB0b3VjaEV2ZW50LT50
b3VjaC55ID0geTsKKworICAgIGludCB4Um9vdCwgeVJvb3Q7CisgICAgZ2RrX3dpbmRvd19nZXRf
cm9vdF9jb29yZHModG91Y2hFdmVudC0+dG91Y2gud2luZG93LCB4LCB5LCAmeFJvb3QsICZ5Um9v
dCk7CisgICAgdG91Y2hFdmVudC0+dG91Y2gueF9yb290ID0geFJvb3Q7CisgICAgdG91Y2hFdmVu
dC0+dG91Y2gueV9yb290ID0geVJvb3Q7Cit9CisKK0dVbmlxdWVQdHI8R2RrRXZlbnQ+IEV2ZW50
U2VuZGVyUHJveHk6OmNyZWF0ZVRvdWNoRXZlbnQoR2RrRXZlbnRUeXBlIGV2ZW50VHlwZSwgaW50
IGlkKQoreworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IHRvdWNoRXZlbnQoZ2RrX2V2ZW50X25l
dyhldmVudFR5cGUpKTsKKworICAgIHRvdWNoRXZlbnQtPnRvdWNoLnNlcXVlbmNlID0gc3RhdGlj
X2Nhc3Q8R2RrRXZlbnRTZXF1ZW5jZSo+KEdJTlRfVE9fUE9JTlRFUihpZCkpOworICAgIHRvdWNo
RXZlbnQtPnRvdWNoLndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKG1f
dGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSk7CisgICAgZ19v
YmplY3RfcmVmKHRvdWNoRXZlbnQtPnRvdWNoLndpbmRvdyk7CisgICAgZ2RrX2V2ZW50X3NldF9k
ZXZpY2UodG91Y2hFdmVudC5nZXQoKSwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9p
bnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxh
eSh0b3VjaEV2ZW50LT5idXR0b24ud2luZG93KSkpKTsKKyAgICB0b3VjaEV2ZW50LT50b3VjaC50
aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKworICAgIHJldHVybiB0b3VjaEV2ZW50OworfQorCit2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQoreworICAg
IC8vIFRvdWNoIElEIGlzIGFycmF5IGluZGV4IHBsdXMgb25lLCBzbyAwIGlzIHNraXBwZWQuCisg
ICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQgPSBjcmVhdGVUb3VjaEV2ZW50KHN0YXRpY19j
YXN0PEdka0V2ZW50VHlwZT4oR0RLX1RPVUNIX0JFR0lOKSwgbV90b3VjaEV2ZW50cy5zaXplKCkg
KyAxKTsKKyAgICB1cGRhdGVFdmVudENvb3JkaW5hdGVzKGV2ZW50LmdldCgpLCB4LCB5KTsKKyAg
ICBtX3RvdWNoRXZlbnRzLmFwcGVuZChzdGQ6Om1vdmUoZXZlbnQpKTsKKyAgICBtX3VwZGF0ZWRU
b3VjaEV2ZW50cy5hZGQoR1BPSU5URVJfVE9fSU5UKGV2ZW50LT50b3VjaC5zZXF1ZW5jZSkpOwor
fQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBp
bnQgeCwgaW50IHkpCit7CisgICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5kZXggPCBtX3RvdWNo
RXZlbnRzLnNpemUoKSk7CisKKyAgICBjb25zdCBhdXRvJiBldmVudCA9IG1fdG91Y2hFdmVudHNb
aW5kZXhdOworICAgIEFTU0VSVChldmVudCk7CisKKyAgICBldmVudC0+dHlwZSA9IEdES19UT1VD
SF9VUERBVEU7CisgICAgdXBkYXRlRXZlbnRDb29yZGluYXRlcyhldmVudC5nZXQoKSwgeCwgeSk7
CisgICAgbV91cGRhdGVkVG91Y2hFdmVudHMuYWRkKEdQT0lOVEVSX1RPX0lOVChldmVudC0+dG91
Y2guc2VxdWVuY2UpKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kVXBkYXRlZFRv
dWNoRXZlbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8gaWQgOiBtX3VwZGF0ZWRUb3VjaEV2ZW50cykK
KyAgICAgICAgc2VuZE9yUXVldWVFdmVudChnZGtfZXZlbnRfY29weShtX3RvdWNoRXZlbnRzW2lk
IC0gMV0uZ2V0KCkpKTsKKworICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmNsZWFyKCk7Cit9CisK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hTdGFydCgpCit7CisgICAgc2VuZFVwZGF0ZWRU
b3VjaEV2ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoTW92ZSgpCit7
CisgICAgc2VuZFVwZGF0ZWRUb3VjaEV2ZW50cygpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OnRvdWNoRW5kKCkKK3sKKyAgICBzZW5kVXBkYXRlZFRvdWNoRXZlbnRzKCk7Cit9CisKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hDYW5jZWwoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2xlYXJUb3VjaFBvaW50cygpCit7Cisg
ICAgbV91cGRhdGVkVG91Y2hFdmVudHMuY2xlYXIoKTsKKyAgICBtX3RvdWNoRXZlbnRzLmNsZWFy
KCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9pbnQoaW50IGlu
ZGV4KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgbV90b3VjaEV2ZW50cy5z
aXplKCkpOworCisgICAgY29uc3QgYXV0byYgZXZlbnQgPSBtX3RvdWNoRXZlbnRzW2luZGV4XTsK
KyAgICBldmVudC0+dHlwZSA9IEdES19UT1VDSF9FTkQ7CisgICAgbV91cGRhdGVkVG91Y2hFdmVu
dHMuYWRkKEdQT0lOVEVSX1RPX0lOVChldmVudC0+dG91Y2guc2VxdWVuY2UpKTsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50KGludCBpbmRleCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoUG9p
bnRSYWRpdXMoaW50IHJhZGl1c1gsIGludCByYWRpdXNZKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcihXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVyLCBib29sIGVuYWJsZSkKK3sKKyAgICBndWludCBzdGF0ZSA9IHdl
YmtpdE1vZGlmaWVyc1RvR0RLTW9kaWZpZXJzKG1vZGlmaWVyKTsKKworICAgIGZvciAoY29uc3Qg
YXV0byYgZXZlbnQgOiBtX3RvdWNoRXZlbnRzKSB7CisgICAgICAgIGlmIChldmVudC0+dHlwZSA9
PSBHREtfVE9VQ0hfRU5EKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGVu
YWJsZSkKKyAgICAgICAgICAgIGV2ZW50LT50b3VjaC5zdGF0ZSB8PSBzdGF0ZTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZXZlbnQtPnRvdWNoLnN0YXRlICY9IH4oc3RhdGUpOworCisgICAg
ICAgIG1fdXBkYXRlZFRvdWNoRXZlbnRzLmFkZChHUE9JTlRFUl9UT19JTlQoZXZlbnQtPnRvdWNo
LnNlcXVlbmNlKSk7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>