<?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>45752</bug_id>
          
          <creation_ts>2010-09-14 07:48:24 -0700</creation_ts>
          <short_desc>[chromium] Implement client based geolocation bindings</short_desc>
          <delta_ts>2010-12-10 07:12:17 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>47586</dependson>
    
    <dependson>48518</dependson>
    
    <dependson>50061</dependson>
          <blocked>40373</blocked>
    
    <blocked>46895</blocked>
    
    <blocked>50562</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Dixon">joth</reporter>
          <assigned_to name="John Knottenbelt">jknotten</assigned_to>
          <cc>andreip</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>278896</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Dixon">joth</who>
    <bug_when>2010-09-14 07:48:24 -0700</bug_when>
    <thetext>Implement Chromium port of client-based geolocation as non-client based (service based) geolocation may be deprecated as per bug #40373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287517</commentid>
    <comment_count>1</comment_count>
      <attachid>69331</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-09-30 06:32:10 -0700</bug_when>
    <thetext>Created attachment 69331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287518</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-30 06:34:34 -0700</bug_when>
    <thetext>Attachment 69331 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
WebKit/chromium/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
WebKit/chromium/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 5 in 23 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>287519</commentid>
    <comment_count>3</comment_count>
      <attachid>69332</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-09-30 06:40:34 -0700</bug_when>
    <thetext>Created attachment 69332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287543</commentid>
    <comment_count>4</comment_count>
      <attachid>69332</attachid>
    <who name="Jonathan Dixon">joth</who>
    <bug_when>2010-09-30 07:36:28 -0700</bug_when>
    <thetext>Comment on attachment 69332
Patch

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

Great! I defer to a WebKit reviewer for real review, but here&apos;s some initial thoughts

&gt; WebKit/chromium/public/WebGeolocationClient.h:44
&gt; +    // is published.

Not convinced we need to duplicate this fixme right through the stack, the one in GeolocationControllerClient probably covers it.
If the property that is visible to JS changes, there will be a bug to track this anyway.

&gt; WebKit/chromium/public/WebGeolocationController.h:31
&gt; +namespace WebCore { class GeolocationController; }

make  #if WEBKIT_IMPLEMENTATION consistent

&gt; WebKit/chromium/public/WebGeolocationError.h:31
&gt; +#if WEBKIT_IMPLEMENTATION

make  #if WEBKIT_IMPLEMENTATION consistent

&gt; WebKit/chromium/public/WebGeolocationPermissionRequest.h:40
&gt; +    WebGeolocationPermissionRequest(WebCore::Geolocation* geolocation)

forward declare WebCore::Geolocation

 make  #if WEBKIT_IMPLEMENTATION consistent

&gt; WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp:1501
&gt; +    // TODO(jknotten): Implement setMockGeolocationPosition client-based

use FIXME:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287559</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-30 08:35:54 -0700</bug_when>
    <thetext>Attachment 69332 did not build on chromium:
Build output: http://queues.webkit.org/results/4231030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288198</commentid>
    <comment_count>6</comment_count>
      <attachid>69332</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-10-01 06:00:26 -0700</bug_when>
    <thetext>Comment on attachment 69332
Patch

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

&gt; WebCore/ChangeLog:9
&gt; +        is enabled.

Need to describe how this is tested. I think the answer is &apos;not yet - awaiting mock - see bug 46895&apos;

&gt; WebCore/WebCore.gyp/WebCore.gyp:1207
&gt; +            [&apos;exclude&apos;, &apos;/GeolocationService.*$&apos;],

It might be be better to split this large patch up - you could have a preliminary patch to add the ENABLE_CLIENT_BASED_GEOLOCATION guards for the Service in the existing code/makefiles. Many small patches are generally better than one large one.

&gt; WebKit/chromium/public/WebGeolocationClient.h:32
&gt; +class WebGeolocationController;

Are these needed?

&gt; WebKit/chromium/public/WebGeolocationClient.h:34
&gt; +class WebGeolocationClient {

I think it&apos;s best to be consistent with naming and call this WebGeolocationControllerClient. I know the WebCore name doesn&apos;t follow the common pattern - if you&apos;d like to fix it, go ahead!

&gt; WebKit/chromium/public/WebGeolocationController.h:46
&gt; +    WEBKIT_API void errorOccurred(const WebGeolocationError&amp;);

Why do you pass these by ref, rather than as a pointer? Passing by ref introduces the need for the &apos;isNull&apos; logic, which we could achieve by just looking at the pointer.

&gt; WebKit/chromium/public/WebGeolocationError.h:33
&gt; +namespace WTF { template &lt;typename T&gt; class PassRefPtr; }

I&apos;m not sure I&apos;ve seen this single-line style for a namespace before in WebKit?

&gt; WebKit/chromium/src/GeolocationControllerClientProxy.cpp:35
&gt; +    if (m_client)

When would the client be null? If this will should happen, maybe it&apos;s best to assert in the constructor then not check here.

&gt; WebKit/chromium/src/WebGeolocationController.cpp:41
&gt; +    PassRefPtr&lt;WebCore::GeolocationPosition&gt; position(p);

You shouldn&apos;t use PassRefPtr for locals - use RefPtr instead. It&apos;s also misleading, as you&apos;re not passing ownership anywhere.

&gt; WebKit/chromium/src/WebGeolocationController.cpp:42
&gt; +    m_controller-&gt;positionChanged(position.get());

Just to check we&apos;re on the same page - The (Pass)RefPtr will go out of scope here. That&apos;s OK because the WebCore controller takes it&apos;s own ref for the last position.

&gt; WebKitTools/ChangeLog:8
&gt; +        Comment out non-client-based mock implementations for now.

Maybe &apos;disable mock Geolocation bindings for client-based implementation&apos; is more clear?

&gt; WebKitTools/DumpRenderTree/chromium/WebViewHost.h:133
&gt; +#if !ENABLE(CLIENT_BASED_GEOLOCATION)

Is your plan to guard everything that&apos;s specific to the non-client-based approach, or just those that need to be guarded to keep everything compiling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298583</commentid>
    <comment_count>7</comment_count>
      <attachid>69332</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-10-24 08:36:57 -0700</bug_when>
    <thetext>Comment on attachment 69332
Patch

r- based on Comment #6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313694</commentid>
    <comment_count>8</comment_count>
      <attachid>74857</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-25 04:38:03 -0800</bug_when>
    <thetext>Created attachment 74857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313733</commentid>
    <comment_count>9</comment_count>
      <attachid>74857</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-11-25 06:37:15 -0800</bug_when>
    <thetext>Comment on attachment 74857
Patch

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

&gt; WebKit/chromium/public/WebGeolocationClient.h:29
&gt; +namespace WebKit {

blank line after namespace?

&gt; WebKit/chromium/public/WebGeolocationController.h:45
&gt; +    }

Is it OK to put impl in these public header files?

&gt; WebKit/chromium/public/WebGeolocationController.h:56
&gt; +    operator bool() const;

Why is this needed?

&gt; WebKit/chromium/public/WebGeolocationController.h:60
&gt; +    WebCore::GeolocationController* m_controller;

in WebGeolocationPermissionRequest you use m_private. Should probably be consistent.

&gt; WebKit/chromium/public/WebGeolocationPermissionRequest.h:46
&gt; +    WEBKIT_API void reset();

Why is this required?

&gt; WebKit/chromium/public/WebGeolocationPermissionRequest.h:49
&gt; +    WebGeolocationPermissionRequest(WTF::PassRefPtr&lt;WebCore::Geolocation&gt;);

This shouldn&apos;t take a PassRefPtr - we&apos;re not transferring ownership. The WebCore API passes a raw pointer and doesn&apos;t expect the client to add a ref.

&gt; WebKit/chromium/public/WebGeolocationPermissionRequest.h:50
&gt; +    operator WTF::PassRefPtr&lt;WebCore::Geolocation&gt;() const;

Why is this required?

&gt; WebKit/chromium/src/ChromeClientImpl.cpp:778
&gt; +#if !ENABLE(CLIENT_BASED_GEOLOCATION)

May have to remove these - see my comment in Bug 50061

&gt; WebKit/chromium/src/GeolocationClientProxy.h:33
&gt; +namespace WebCore { class GeolocationPosition; }

not sure about this single line style for namespaces?

&gt; WebKit/chromium/src/GeolocationClientProxy.h:46
&gt; +    // FIXME: The V2 Geolocation specification proposes that this property is

As joth commented, probably no need to propagate comment this up the stack

&gt; WebKit/chromium/src/WebGeolocationController.cpp:42
&gt; +    m_controller-&gt;positionChanged(PassRefPtr&lt;WebCore::GeolocationPosition&gt;(*webPosition).get());

You shouldn&apos;t be using a PassRefPtr here. The WebCore API takes a raw pointer. It looks like you should be creating a local RefPtr, then passing the result of its get() method. The WebCore::GeolocationController can then take its own ref if it wants to hold onto the object.

&gt; WebKit/chromium/src/WebGeolocationPermissionRequest.cpp:47
&gt; +    m_private-&gt;setIsAllowed(true);

true ?!!

&gt; WebKit/chromium/src/WebViewImpl.cpp:314
&gt; +    , m_geolocationClientProxy(new GeolocationClientProxy(client-&gt;geolocationClient()))

Do you need to test for a null client?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313790</commentid>
    <comment_count>10</comment_count>
      <attachid>74857</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-25 08:50:11 -0800</bug_when>
    <thetext>Comment on attachment 74857
Patch

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

Thanks for the review. Patch forthcoming.

&gt;&gt; WebKit/chromium/public/WebGeolocationClient.h:29
&gt;&gt; +namespace WebKit {
&gt; 
&gt; blank line after namespace?

Added.

&gt;&gt; WebKit/chromium/public/WebGeolocationController.h:45
&gt;&gt; +    }
&gt; 
&gt; Is it OK to put impl in these public header files?

There are other examples of implementation in the public header files, for example WebNode. Darin, please comment.

&gt;&gt; WebKit/chromium/public/WebGeolocationController.h:56
&gt;&gt; +    operator bool() const;
&gt; 
&gt; Why is this needed?

We can get rid of the operator bool(). It used to be useful :)

&gt;&gt; WebKit/chromium/public/WebGeolocationPermissionRequest.h:46
&gt;&gt; +    WEBKIT_API void reset();
&gt; 
&gt; Why is this required?

We are required to manually reset() the WebPrivatePtr (m_private) in destructor. Followed the pattern from WebNode. Would it be acceptable to simply call m_private.reset() in the destructor? Darin, please comment.

&gt;&gt; WebKit/chromium/public/WebGeolocationPermissionRequest.h:49
&gt;&gt; +    WebGeolocationPermissionRequest(WTF::PassRefPtr&lt;WebCore::Geolocation&gt;);
&gt; 
&gt; This shouldn&apos;t take a PassRefPtr - we&apos;re not transferring ownership. The WebCore API passes a raw pointer and doesn&apos;t expect the client to add a ref.

Agree.

&gt;&gt; WebKit/chromium/public/WebGeolocationPermissionRequest.h:50
&gt;&gt; +    operator WTF::PassRefPtr&lt;WebCore::Geolocation&gt;() const;
&gt; 
&gt; Why is this required?

This is used in the WebGeolocationClientmock to extract the Geolocation object to pass into the WebCore::GeolocationClientMock. Since the PassRefPtr is not required, I propose to rename this method to WebCore::Geolocation *geolocation() const.

&gt;&gt; WebKit/chromium/src/ChromeClientImpl.cpp:778
&gt;&gt; +#if !ENABLE(CLIENT_BASED_GEOLOCATION)
&gt; 
&gt; May have to remove these - see my comment in Bug 50061

Yes, I&apos;ll move the condition compilation directives into the method definitions and add a FIXME to remove after non-client-based geolocation is deprecated.

&gt;&gt; WebKit/chromium/src/GeolocationClientProxy.h:33
&gt;&gt; +namespace WebCore { class GeolocationPosition; }
&gt; 
&gt; not sure about this single line style for namespaces?

Changed to multiple line style. There are existing examples of both styles, is one more accepted than the other?

&gt;&gt; WebKit/chromium/src/GeolocationClientProxy.h:46
&gt;&gt; +    // FIXME: The V2 Geolocation specification proposes that this property is
&gt; 
&gt; As joth commented, probably no need to propagate comment this up the stack

Agree.

&gt;&gt; WebKit/chromium/src/WebGeolocationController.cpp:42
&gt;&gt; +    m_controller-&gt;positionChanged(PassRefPtr&lt;WebCore::GeolocationPosition&gt;(*webPosition).get());
&gt; 
&gt; You shouldn&apos;t be using a PassRefPtr here. The WebCore API takes a raw pointer. It looks like you should be creating a local RefPtr, then passing the result of its get() method. The WebCore::GeolocationController can then take its own ref if it wants to hold onto the object.

Agree.

&gt;&gt; WebKit/chromium/src/WebViewImpl.cpp:314
&gt;&gt; +    , m_geolocationClientProxy(new GeolocationClientProxy(client-&gt;geolocationClient()))
&gt; 
&gt; Do you need to test for a null client?

Looks like I do: https://bugs.webkit.org/show_bug.cgi?id=43240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314452</commentid>
    <comment_count>11</comment_count>
      <attachid>74857</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-29 09:00:17 -0800</bug_when>
    <thetext>Comment on attachment 74857
Patch

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

&gt;&gt;&gt; WebKit/chromium/public/WebGeolocationController.h:45
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; Is it OK to put impl in these public header files?
&gt; 
&gt; There are other examples of implementation in the public header files, for example WebNode. Darin, please comment.

Nulling out a pointer like this is OK.  It doesn&apos;t introduce any linker dependencies on WebCore.

&gt;&gt;&gt; WebKit/chromium/public/WebGeolocationPermissionRequest.h:46
&gt;&gt;&gt; +    WEBKIT_API void reset();
&gt;&gt; 
&gt;&gt; Why is this required?
&gt; 
&gt; We are required to manually reset() the WebPrivatePtr (m_private) in destructor. Followed the pattern from WebNode. Would it be acceptable to simply call m_private.reset() in the destructor? Darin, please comment.

WebPrivatePtr::reset() is not marked WEBKIT_API, so you cannot call it from a public method in a header file.
If you did, then you would break the WEBKIT_DLL build.  We do not mark WebPrivatePtr::reset() with WEBKIT_API
since it is 1) protected by WEBKIT_IMPLEMENTATION and 2) has linker dependencies on WTF::RefCounted&lt;T&gt;::{de}ref,
which are not exported from the webkit DLL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317608</commentid>
    <comment_count>12</comment_count>
      <attachid>75692</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-06 07:21:53 -0800</bug_when>
    <thetext>Created attachment 75692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318105</commentid>
    <comment_count>13</comment_count>
      <attachid>75692</attachid>
    <who name="Jonathan Dixon">joth</who>
    <bug_when>2010-12-07 02:42:18 -0800</bug_when>
    <thetext>Comment on attachment 75692
Patch

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

&gt; WebKit/chromium/public/WebGeolocationController.h:45
&gt; +    }

Maybe the usage of this would be clearer if we turned it into a identity class? i.e. ban copy &amp; assign (and the default c&apos;tor), remove the reset() method, have them created on the heap and the guy that vends them will transfer ownership rather than expect the receiver to make a byte copy of it.

This will give a little more heap churn, but is clearer IMO.
Alternatively we could leave the design as is but rename it to FooControllerHandle or something, but that feels a little obscure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318171</commentid>
    <comment_count>14</comment_count>
      <attachid>75812</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-07 07:06:55 -0800</bug_when>
    <thetext>Created attachment 75812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318219</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 08:51:18 -0800</bug_when>
    <thetext>Attachment 75812 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318271</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 09:52:30 -0800</bug_when>
    <thetext>Attachment 75812 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318317</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 10:53:43 -0800</bug_when>
    <thetext>Attachment 75812 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318368</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 11:54:54 -0800</bug_when>
    <thetext>Attachment 75812 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318597</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:35:39 -0800</bug_when>
    <thetext>Attachment 75812 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318824</commentid>
    <comment_count>20</comment_count>
      <attachid>75812</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-08 09:22:06 -0800</bug_when>
    <thetext>Comment on attachment 75812
Patch

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

&gt; WebKit/chromium/public/WebGeolocationClient.h:29
&gt; +namespace WebKit {

blank line

&gt; WebKit/chromium/public/WebGeolocationController.h:57
&gt; +    WebCore::GeolocationController* m_controller;

In WebGeolocationPermissionRequest you call this m_private.

&gt; WebKit/chromium/public/WebGeolocationPermissionRequest.h:58
&gt; +    }

I think correct style is to put this all on one line

&gt; WebKit/chromium/public/WebGeolocationPermissionRequestContainer.h:37
&gt; +class WebGeolocationPermissionRequestContainer : public WebNonCopyable {

Is WebGeolocationPermissionRequestManager/Tracker a better name than container? Container sounds like it wraps one request. Also, this class probably warrants a comment about how it&apos;s used.

&gt; WebKit/chromium/src/GeolocationClientProxy.cpp:49
&gt; +    // There are tests that create a page with a null WebViewClient. Those tests won&apos;t

I don&apos;t think there&apos;s any need to mention that it&apos;s tests that don&apos;t pass a client - this may change. Just say that we support there not being a client, providing we don&apos;t do any Geolocation.

&gt; WebKit/chromium/src/WebGeolocationController.cpp:50
&gt; +    RefPtr&lt;GeolocationError&gt; error = PassRefPtr&lt;GeolocationError&gt;(webError);

Put on one line to match other uses.

&gt; WebKit/chromium/src/WebGeolocationController.cpp:54
&gt; +GeolocationController* WebGeolocationController::controller() const

For WebGeolocationClient you put this inline in the header.

&gt; WebKit/chromium/src/WebGeolocationController.cpp:61
&gt; +// by the consumer of Chromium WebKit.

Maybe put this with the declaration?

&gt; WebKit/chromium/src/WebGeolocationPermissionRequestContainer.cpp:38
&gt; +typedef HashMap&lt;Geolocation*, int&gt; GeolocationIDMap;

CamelCase - GeolocationIdMap

&gt; WebKit/chromium/src/WebGeolocationPermissionRequestContainer.cpp:50
&gt; +

extra line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318869</commentid>
    <comment_count>21</comment_count>
      <attachid>75926</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-08 10:31:02 -0800</bug_when>
    <thetext>Created attachment 75926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320130</commentid>
    <comment_count>22</comment_count>
      <attachid>75926</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-10 06:54:49 -0800</bug_when>
    <thetext>Comment on attachment 75926
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320139</commentid>
    <comment_count>23</comment_count>
      <attachid>75926</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-10 07:12:09 -0800</bug_when>
    <thetext>Comment on attachment 75926
Patch

Clearing flags on attachment: 75926

Committed r73724: &lt;http://trac.webkit.org/changeset/73724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320140</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-10 07:12:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69331</attachid>
            <date>2010-09-30 06:32:10 -0700</date>
            <delta_ts>2010-09-30 06:40:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45752-20100930143204.patch</filename>
            <type>text/plain</type>
            <size>48301</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjMzMTgzMjJhZDY0MzE0MmM2YjgwMWJlZTM4Nzk2MjY2MDk3ZDIxMC4uYzYxN2FhNjJmYmViYzUy
NmY5ZjE5YzFmNGMzMDlmMGZlMDY4NzMzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wOS0zMCAgSm9o
biBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBjbGll
bnQgYmFzZWQgZ2VvbG9jYXRpb24gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NzUyCisKKyAgICAgICAgRXhjbHVkZSBHZW9sb2NhdGlv
blNlcnZpY2UgZnJvbSBidWlsZGluZyB3aGVuIENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTgorCWlz
IGVuYWJsZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAg
KiBwYWdlL0dlb2xvY2F0aW9uRXJyb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9D
aHJvbWl1bUJyaWRnZS5oOgorCiAyMDEwLTA5LTMwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9XZWJDb3JlL1dlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwCmluZGV4IDZiMTNlYjVkZDIyZTQwYTgzMjdjNjg1ZjY1YTEzOGY2M2Mw
Yzk1NzkuLjEzMWVjYjhlNDY0ZTM0NDNiMDg1M2I3ZTQ1YzM1NzNkNTc5ZjVlYWIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cApAQCAtMTIwMiw2ICsxMjAyLDExIEBACiAgICAgICAgICAgICBbJ2V4
Y2x1ZGUnLCAnUG9zaXhcXC5jcHAkJ10sCiAgICAgICAgICAgXSwKICAgICAgICAgfV0sCisgICAg
ICAgIFsnIkVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT049MSIgaW4gZmVhdHVyZV9kZWZp
bmVzJywgeworICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgIFsnZXhjbHVkZScs
ICcvR2VvbG9jYXRpb25TZXJ2aWNlLiokJ10sCisgICAgICAgICAgXSwKKyAgICAgICAgfV0sCiAg
ICAgICBdLAogICAgIH0sCiAgICAgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uRXJyb3IuaCBiL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkVycm9yLmgKaW5kZXggMmEzYmFk
NGE5ZjczZWY3NjdiMzdiMGVlMzljNzEzYjUxZWU0N2I2MC4uNmVkZmQxOThmNzM4NTQ1ODNkMjk4
YjRmODRhYWIwNjUzYzg0ZGI3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9u
RXJyb3IuaAorKysgYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25FcnJvci5oCkBAIC01NSw3ICs1
NSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgRXJyb3JDb2RlIG1fY29kZTsKLSAgICBTdHJp
bmcgbV9tZXNzYWdlOyAKKyAgICBTdHJpbmcgbV9tZXNzYWdlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1
bUJyaWRnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCmlu
ZGV4IDEyMWVjNGI5Y2FjMzdhNTA3OTljY2NjY2Y2NTRmZWY1ODI4ZjY1YmUuLjI0NTZlNDBlZTU0
NjQwMzJiN2I1MjE4MGU1ZTkwMGExOWI3YWRkZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0Nocm9taXVtQnJpZGdlLmgKQEAgLTE1NCw5ICsxNTQsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBGb3JtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICBzdGF0aWMgdm9pZCBub3RpZnlG
b3JtU3RhdGVDaGFuZ2VkKGNvbnN0IERvY3VtZW50Kik7CiAKKyNpZiAhRU5BQkxFKENMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikKICAgICAgICAgLy8gR2VvbG9jYXRpb24gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgc3RhdGlj
IEdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSogY3JlYXRlR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdl
KEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKik7Ci0KKyNlbmRpZgogICAgICAgICAvLyBEYXRh
YmFzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogICAgICAgICAvLyBSZXR1cm5zIGEgaGFuZGxlIHRvIHRoZSBEQiBmaWxlIGFuZCBv
b3B0aW9uYWxseSBhIGhhbmRsZSB0byBpdHMgY29udGFpbmluZyBkaXJlY3RvcnkKICAgICAgICAg
c3RhdGljIFBsYXRmb3JtRmlsZUhhbmRsZSBkYXRhYmFzZU9wZW5GaWxlKGNvbnN0IFN0cmluZyYg
dmZzRmxlTmFtZSwgaW50IGRlc2lyZWRGbGFncyk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzYmFkZmZhY2Yy
NzEwOGMyOWZkNWU5MjZmNjcxMWIwNTFmMGNiNzcyLi43NDcxZmVmZjI2YjgyNTFhYmE4M2MwMmEz
MjI0ZmY5OTFjODJhYjg0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMC0wOS0z
MCAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVu
dCBjbGllbnQgYmFzZWQgZ2VvbG9jYXRpb24gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NzUyCisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorCUFkZCBpbiBmaWxlcyBmb3IgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uLiBFeGNsdWRlIG5v
biBjbGllbnQtYmFzZWQKKwlzb3VyY2VzLgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6
On5XZWJHZW9sb2NhdGlvbkNsaWVudCk6CisgICAgICAgICogcHVibGljL1dlYkdlb2xvY2F0aW9u
Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250
cm9sbGVyOjpXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJH
ZW9sb2NhdGlvbkVycm9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bkVycm9yOjpXZWJHZW9sb2NhdGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25FcnJvcjo6bnVsbEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25F
cnJvcjo6aXNOdWxsKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25FcnJvcjo6Y29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uRXJyb3I6Om1lc3NhZ2UpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpXZWJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246Om51bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
UG9zaXRpb246OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9z
aXRpb246OmxhdGl0dWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6bG9uZ2l0dWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6
YWNjdXJhY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjphbHRp
dHVkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OmFsdGl0dWRl
QWNjdXJhY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpoZWFk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6c3BlZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjYW5Qcm92aWRlQWx0aXR1
ZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRp
b246OmNhblByb3ZpZGVIZWFkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Q
b3NpdGlvbjo6Y2FuUHJvdmlkZVNwZWVkKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmZvY3VzZWROb2RlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnJlcXVlc3RHZW9sb2Nh
dGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudElt
cGw6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZSk6CisgICAgICAg
ICogc3JjL0Nocm9taXVtQnJpZGdlLmNwcDoKKyAgICAgICAgKiBzcmMvR2VvbG9jYXRpb25Db250
cm9sbGVyQ2xpZW50UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9uRGVzdHJveWVkKToKKyAgICAgICAg
KFdlYktpdDo6R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHk6OnN0YXJ0VXBkYXRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eTo6c3Rv
cFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50
UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0
aW9uQ29udHJvbGxlckNsaWVudFByb3h5OjpsYXN0UG9zaXRpb24pOgorICAgICAgICAqIHNyYy9H
ZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHk6Okdlb2xvY2F0aW9uQ29udHJvbGxl
ckNsaWVudFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250cm9sbGVy
OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250cm9s
bGVyOjpjb250cm9sbGVyKToKKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25FcnJvci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkVycm9yOjpXZWJHZW9sb2Nh
dGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25FcnJvcjo6b3BlcmF0
b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25FcnJvcjo6b3BlcmF0b3IgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uRXJyb3I+KToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25FcnJvcjo6Y29weUZyb20pOgorICAgICAgICAqIHNyYy9XZWJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjphbGxvdyk6CisgICAgICAgIChXZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpkZW55KToKKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Q
b3NpdGlvbjo6Y29weUZyb20pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+KToK
KwogMjAxMC0wOS0zMCAgQXZpIERyaXNzbWFuICA8YXZpQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA3ZmFjMzUwMDJk
ZjVmN2VkYmE5YTk3YmQzYjhlODBmZTcwZjljMDc0Li4yODk2MWE3NWZjYjJjMjRhMmU1NTRkOGJj
MzE1YmU2MWNkZDVjMmIyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAor
KysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTY4LDYgKzE2OCwxMCBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViRm9ybUVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlv
bkVycm9yLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnQu
aCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCcs
CisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oJywKQEAgLTMyNCw3ICsz
MjgsMTAgQEAKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwuaCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eS5jcHAnLAorICAgICAg
ICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHkuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL2d0
ay9XZWJGb250SW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvZ3RrL1dlYkZvbnRJbmZv
LmgnLApAQCAtNDI5LDYgKzQzNiw5IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGb3JtRWxl
bWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkdl
b2xvY2F0aW9uRXJyb3IuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2Vydmlj
ZUJyaWRnZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2Vy
dmljZUJyaWRnZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmNwcCcsCkBAIC02MzIsNiArNjQyLDExIEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9XSwKKyAg
ICAgICAgICAgICAgICBbJyJFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OPTEiIGluIGZl
YXR1cmVfZGVmaW5lcycsIHsKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMvJzogWworICAg
ICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ1dlYkdlb2xvY2F0aW9uU2VydmljZS4q
JCddLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH1dCiAgICAgICAg
ICAgICBdLAogICAgICAgICB9LAogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M4NzA0ODJmOWFiNzc3NGRiN2Y3MWUxZGZhZjJi
MDE1OTFkM2U0MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJH
ZW9sb2NhdGlvbkNsaWVudF9oCisjZGVmaW5lIFdlYkdlb2xvY2F0aW9uQ2xpZW50X2gKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkdlb2xvY2F0aW9uOworY2xhc3MgV2ViR2VvbG9j
YXRpb25Db250cm9sbGVyOworCitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25DbGllbnQoKSB7fQorCisgICAgdmlydHVhbCB2
b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVw
ZGF0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CisgICAg
Ly8gRklYTUU6IFRoZSBWMiBHZW9sb2NhdGlvbiBzcGVjaWZpY2F0aW9uIHByb3Bvc2VzIHRoYXQg
dGhpcyBwcm9wZXJ0eSBpcworICAgIC8vIHJlbmFtZWQuIFNlZSBodHRwOi8vd3d3LnczLm9yZy8y
MDA4L2dlb2xvY2F0aW9uL3RyYWNrL2lzc3Vlcy82CisgICAgLy8gV2Ugc2hvdWxkIHVwZGF0ZSBX
ZWJLaXQgdG8gcmVmbGVjdCB0aGlzIGlmIGFuZCB3aGVuIHRoZSBWMiBzcGVjaWZpY2F0aW9uCisg
ICAgLy8gaXMgcHVibGlzaGVkLgorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJh
Y3koYm9vbCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJHZW9sb2NhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzMzMjgxZTY0ODIwYzgzYmFlOWQ0
MmQ3ZDkyN2IzYTk1OWYxYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaAorI2RlZmluZSBXZWJHZW9sb2NhdGlv
bkNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsgY2xhc3MgR2VvbG9jYXRpb25Db250cm9sbGVyOyB9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3MgV2ViR2VvbG9jYXRpb25F
cnJvcjsKKworY2xhc3MgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBX
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyKiBj
KQorICAgICAgICA6IG1fY29udHJvbGxlcihjKQorICAgIHsKKyAgICB9CisKKyAgICBXRUJLSVRf
QVBJIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24mKTsK
KyAgICBXRUJLSVRfQVBJIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBXZWJHZW9sb2NhdGlvbkVy
cm9yJik7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgor
ICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xs
ZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkVy
cm9yLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uRXJyb3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45OWJlN2E3YjlmYTU1YTAyZjdhYzgyODBjYzQyNzEyYjlhMzhlY2UzCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkVycm9yLmgK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR2VvbG9jYXRpb25FcnJvcl9oCisj
ZGVmaW5lIFdlYkdlb2xvY2F0aW9uRXJyb3JfaAorCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgR2Vv
bG9jYXRpb25FcnJvcjsgfQorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBQYXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkdlb2xvY2F0aW9uRXJyb3IgeworcHVibGljOgorICAgIGVudW0gRXJyb3JDb2RlIHsKKyAg
ICAgICAgUGVybWlzc2lvbkRlbmllZCwKKyAgICAgICAgRXJyb3JVbmF2YWlsYWJsZQorICAgIH07
CisKKyAgICBXZWJHZW9sb2NhdGlvbkVycm9yKEVycm9yQ29kZSBjb2RlLCBjb25zdCBXZWJTdHJp
bmcmIG1lc3NhZ2UpCisgICAgICAgIDogbV9pc051bGwoZmFsc2UpLAorICAgICAgICAgIG1fY29k
ZShjb2RlKSwKKyAgICAgICAgICBtX21lc3NhZ2UobWVzc2FnZSkKKyAgICB7CisgICAgfQorCisg
ICAgc3RhdGljIFdlYkdlb2xvY2F0aW9uRXJyb3IgbnVsbEVycm9yKCkgeyByZXR1cm4gV2ViR2Vv
bG9jYXRpb25FcnJvcigpOyB9CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNOdWxsOyB9CisKKyAgICBFcnJvckNvZGUgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsg
fQorICAgIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2Fn
ZTsgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViR2VvbG9jYXRpb25FcnJv
cihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvbkVycm9yKik7CisgICAgV2ViR2VvbG9jYXRpb25F
cnJvciYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uRXJyb3IqKTsKKyAgICBv
cGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25FcnJvcj4oKSBjb25z
dDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkdlb2xvY2F0aW9uRXJyb3IoKQorICAgICAg
ICA6IG1faXNOdWxsKHRydWUpLAorICAgICAgICAgIG1fY29kZShFcnJvclVuYXZhaWxhYmxlKQor
ICAgIHsKKyAgICB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICB2b2lkIGNvcHlG
cm9tKGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uRXJyb3IqKTsKKyNlbmRpZgorCisgICAgYm9v
bCBtX2lzTnVsbDsKKworICAgIEVycm9yQ29kZSBtX2NvZGU7CisgICAgV2ViU3RyaW5nIG1fbWVz
c2FnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViR2VvbG9j
YXRpb25FcnJvcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhNmYyM2U0Zjc4YjU1MDc0
MGQ5NzEyODMxN2VlZTA3NmY1NDQ2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0X2gKKyNk
ZWZpbmUgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdF9oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViR2VvbG9jYXRpb247CisK
K2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgeworcHVibGljOgorICAgIFdl
Ykdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24qIGdlb2xv
Y2F0aW9uKQorICAgICAgICA6IG1fZ2VvbG9jYXRpb24oZ2VvbG9jYXRpb24pCisgICAgeworICAg
IH0KKworICAgIFdFQktJVF9BUEkgdmlydHVhbCB2b2lkIGFsbG93KCk7CisgICAgV0VCS0lUX0FQ
SSB2aXJ0dWFsIHZvaWQgZGVueSgpOworCitwcml2YXRlOgorICAgIFJlZlB0cjxXZWJDb3JlOjpH
ZW9sb2NhdGlvbj4gbV9nZW9sb2NhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdF9oCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5
YzljYTdjMjU2NjNlZDU1MDQxY2FiNDQzOGU3ZTYzY2YwOWEwMGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaApAQCAtMCww
ICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbl9oCisjZGVm
aW5lIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25faAorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
R2VvbG9jYXRpb25Qb3NpdGlvbjsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBw
cm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFsdGl0dWRlQWNjdXJh
Y3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKQorICAgICAgICA6
IG1faXNOdWxsKGZhbHNlKSwKKyAgICAgICAgICBtX3RpbWVzdGFtcCh0aW1lc3RhbXApLAorICAg
ICAgICAgIG1fbGF0aXR1ZGUobGF0aXR1ZGUpLAorICAgICAgICAgIG1fbG9uZ2l0dWRlKGxvbmdp
dHVkZSksCisgICAgICAgICAgbV9hY2N1cmFjeShhY2N1cmFjeSksCisgICAgICAgICAgbV9hbHRp
dHVkZShhbHRpdHVkZSksCisgICAgICAgICAgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNj
dXJhY3kpLAorICAgICAgICAgIG1faGVhZGluZyhoZWFkaW5nKSwKKyAgICAgICAgICBtX3NwZWVk
KHNwZWVkKSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRl
KSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KHByb3ZpZGVzQWx0aXR1
ZGVBY2N1cmFjeSksCisgICAgICAgICAgbV9jYW5Qcm92aWRlSGVhZGluZyhwcm92aWRlc0hlYWRp
bmcpLAorICAgICAgICAgIG1fY2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCisgICAgewor
ICAgIH0KKworICAgIHN0YXRpYyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uIG51bGxQb3NpdGlvbigp
IHsgcmV0dXJuIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oKTsgfQorCisgICAgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQorCisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CisKKyAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25z
dCB7IHJldHVybiBtX2xhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9uZ2l0dWRlOyB9CisgICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1
cm4gbV9hY2N1cmFjeTsgfQorICAgIGRvdWJsZSBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWx0aXR1ZGU7IH0KKyAgICBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWx0aXR1ZGVBY2N1cmFjeTsgfQorICAgIGRvdWJsZSBoZWFkaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9oZWFkaW5nOyB9CisgICAgZG91YmxlIHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9zcGVl
ZDsgfQorCisgICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2Nh
blByb3ZpZGVBbHRpdHVkZTsgfQorICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OyB9CisgICAgYm9v
bCBjYW5Qcm92aWRlSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUHJvdmlkZUhlYWRpbmc7
IH0KKyAgICBib29sIGNhblByb3ZpZGVTcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUHJvdmlk
ZVNwZWVkOyB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJHZW9sb2NhdGlv
blBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qKTsKKyAgICBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbiopOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uPigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbigpCisgICAgICAgIDogbV9pc051bGwodHJ1ZSksCisgICAgICAgICAgbV90
aW1lc3RhbXAoMCksCisgICAgICAgICAgbV9sYXRpdHVkZSgwKSwKKyAgICAgICAgICBtX2xvbmdp
dHVkZSgwKSwKKyAgICAgICAgICBtX2FjY3VyYWN5KDApLAorICAgICAgICAgIG1fYWx0aXR1ZGUo
MCksCisgICAgICAgICAgbV9hbHRpdHVkZUFjY3VyYWN5KDApLAorICAgICAgICAgIG1faGVhZGlu
ZygwKSwKKyAgICAgICAgICBtX3NwZWVkKDApLAorICAgICAgICAgIG1fY2FuUHJvdmlkZUFsdGl0
dWRlKGZhbHNlKSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KGZhbHNl
KSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVIZWFkaW5nKGZhbHNlKSwKKyAgICAgICAgICBtX2Nh
blByb3ZpZGVTcGVlZChmYWxzZSkKKyAgICB7CisgICAgfQorCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisgICAgdm9pZCBjb3B5RnJvbShjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uKik7CisjZW5kaWYKKworICAgIGJvb2wgbV9pc051bGw7CisKKyAgICBkb3VibGUgbV90aW1l
c3RhbXA7CisKKyAgICBkb3VibGUgbV9sYXRpdHVkZTsKKyAgICBkb3VibGUgbV9sb25naXR1ZGU7
CisgICAgZG91YmxlIG1fYWNjdXJhY3k7CisgICAgZG91YmxlIG1fYWx0aXR1ZGU7CisgICAgZG91
YmxlIG1fYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICBkb3VibGUgbV9oZWFkaW5nOworICAgIGRvdWJs
ZSBtX3NwZWVkOworCisgICAgYm9vbCBtX2NhblByb3ZpZGVBbHRpdHVkZTsKKyAgICBib29sIG1f
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3k7CisgICAgYm9vbCBtX2NhblByb3ZpZGVIZWFkaW5n
OworICAgIGJvb2wgbV9jYW5Qcm92aWRlU3BlZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25faApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggNWY3MDJlMDIwMjdiNmU2NjFhMzdiODRhMGJj
MTlhNGY0MmJiYmY5ZS4uNjIwNWM5ZmEyMGYyNDE5NzdhODExN2QzM2Q3NTgyZjk4ZTRlNTBmOSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC0yNDYsNyArMjQ2
LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpmb2N1c2VkTm9kZUNoYW5nZWQoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIGZvY3VzVVJMID0gaGl0VGVzdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAg
ICB9CiAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+c2V0S2V5Ym9hcmRGb2N1c1VSTChmb2N1c1VS
TCk7Ci0gICAgCisKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzc3LDE1
ICs3NzcsMjMgQEAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBDaHJvbWVDbGllbnRJbXBsOjpub3Rp
ZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAogCiB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlcXVl
c3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSogZnJhbWUsIEdlb2xvY2F0aW9u
KiBnZW9sb2NhdGlvbikKIHsKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQor
ICAgIC8vIFRvIGJlIGltcGxlbWVudGVkLiBDcmVhdGUgYSBXZWJHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0CisjZWxzZQogICAgIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKiBnZW9sb2Nh
dGlvblNlcnZpY2UgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSo+KGdl
b2xvY2F0aW9uLT5nZXRHZW9sb2NhdGlvblNlcnZpY2UoKSk7CiAgICAgZ2VvbG9jYXRpb25TZXJ2
aWNlLT5nZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoKS0+YXR0YWNoQnJpZGdlSWZOZWVkZWQoKTsK
ICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5nZW9sb2NhdGlvblNlcnZpY2UoKS0+cmVxdWVzdFBl
cm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZSgpLT5nZXRCcmlkZ2VJZCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOworI2VuZGlm
CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdEZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQog
eworI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgLy8gVG8gYmUgaW1w
bGVtZW50ZWQuIGRlc3Ryb3kgdGhlIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKyNl
bHNlCiAgICAgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qIGdlb2xvY2F0aW9uU2VydmljZSA9
IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKj4oZ2VvbG9jYXRpb24tPmdl
dEdlb2xvY2F0aW9uU2VydmljZSgpKTsKICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5nZW9sb2Nh
dGlvblNlcnZpY2UoKS0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShnZW9sb2NhdGlv
blNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpLT5nZXRCcmlkZ2VJZCgpLCBmcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOworI2VuZGlmCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJp
ZGdlLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCmluZGV4IGI5
MDY1NzUxYjA1YWJiMmQ3MGY2NmY2YzlhYTNlMzk5NTA1ODhmMTEuLjBhNTJiOTk1MTQ4MmY2OTUy
ZGNlMjEzN2RkMzlkYmM0NzRkZTVlMTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21pdW1CcmlkZ2UuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1Ccmlk
Z2UuY3BwCkBAIC04NSw3ICs4NSwxMSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEu
aCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisK
KyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICNpbmNsdWRlICJXZWJHZW9s
b2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgIldvcmtlci5o
IgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CkBAIC00NjQsMTIgKzQ2OCwxNCBAQCBib29sIENocm9taXVtQnJpZGdlOjpsb2FkRm9u
dChOU0ZvbnQqIHNyY0ZvbnQsIEFUU0ZvbnRDb250YWluZXJSZWYqIG91dCkKIH0KICNlbmRpZgog
CisjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAvLyBHZW9sb2NhdGlvbiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIEdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSogQ2hyb21pdW1CcmlkZ2U6OmNyZWF0
ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZShHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSogZ2Vv
bG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0pCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUdlb2xvY2F0aW9u
U2VydmljZUJyaWRnZUltcGwoZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0pOwogfQorI2VuZGlm
CiAKIC8vIERhdGFiYXNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudFByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YTg0NWFjMmNmNGFjM2VjODc1MTk1OGZhNjgzMTNhNTY5YjlmODg3Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eS5j
cHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25DbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5nZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwor
fQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5n
KCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zdGFydFVwZGF0aW5n
KCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHk6OnN0b3BVcGRh
dGluZygpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c3RvcFVwZGF0
aW5nKCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHk6OnNldEVu
YWJsZUhpZ2hBY2N1cmFjeShib29sIGhpZ2hBY2N1cmFjeSkKK3sKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5zZXRFbmFibGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5KTsK
K30KKworV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogR2VvbG9jYXRpb25Db250cm9sbGVy
Q2xpZW50UHJveHk6Omxhc3RQb3NpdGlvbigpCit7CisgICAgLy8gRm9yIG5vdyB3ZSBkbyBub3Qg
cHJveHkgdGhlIGxhc3QgcG9zaXRpb24gcmVxdWVzdCBmdXJ0aGVyLiAgRG9pbmcgc28gcmVxdWly
ZXMKKyAgICAvLyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbGFzdFBvc2l0aW9uIG1ldGhvZCBv
biB0aGUgY2xpZW50LgorICAgIHJldHVybiAwOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudFByb3h5LmggYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudFByb3h5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTM5ODg1OGUzN2Q1Yzg1YzZjMzY2NjgzY2EzODI1OWY2OTYwZGU0MgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJv
eHkuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXJDbGllbnRQcm94eV9oCisjZGVmaW5lIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudFByb3h5
X2gKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZW9sb2NhdGlv
bkNsaWVudDsKKworY2xhc3MgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHkgOiBwdWJs
aWMgV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eShXZWJHZW9sb2NhdGlvbkNsaWVudCogY2xp
ZW50KQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0
VXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgLy8gRklY
TUU6IFRoZSBWMiBHZW9sb2NhdGlvbiBzcGVjaWZpY2F0aW9uIHByb3Bvc2VzIHRoYXQgdGhpcyBw
cm9wZXJ0eSBpcworICAgIC8vIHJlbmFtZWQuIFNlZSBodHRwOi8vd3d3LnczLm9yZy8yMDA4L2dl
b2xvY2F0aW9uL3RyYWNrL2lzc3Vlcy82CisgICAgLy8gV2Ugc2hvdWxkIHVwZGF0ZSBXZWJLaXQg
dG8gcmVmbGVjdCB0aGlzIGlmIGFuZCB3aGVuIHRoZSBWMiBzcGVjaWZpY2F0aW9uCisgICAgLy8g
aXMgcHVibGlzaGVkLgorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9v
bCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKTsKKworcHJpdmF0ZToKKyAgICBXZWJHZW9sb2NhdGlvbkNsaWVudCogbV9jbGllbnQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEdlb2xvY2F0aW9uQ29udHJv
bGxlckNsaWVudFByb3h5X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2Vv
bG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Zjg5Njc4OWJmZWNhZGQyMDNiYzI5NTZlZTVl
NGYzN2U2OWEzZWEyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCisKKyNp
bmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkVy
cm9yLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2luY2x1ZGUgIldlYkdl
b2xvY2F0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9p
ZCBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9uQ2hhbmdlZChjb25zdCBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uJiBwKQoreworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbj4gcG9zaXRpb24ocCk7CisgICAgbV9jb250cm9sbGVyLT5wb3NpdGlvbkNoYW5n
ZWQocG9zaXRpb24uZ2V0KCkpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
ZXJyb3JPY2N1cnJlZChjb25zdCBXZWJHZW9sb2NhdGlvbkVycm9yJiBlKQoreworICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25FcnJvcj4gZXJyb3IoZSk7CisgICAgbV9jb250cm9s
bGVyLT5lcnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKK30KKworV2ViQ29yZTo6R2VvbG9jYXRp
b25Db250cm9sbGVyKiBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX2NvbnRyb2xsZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkVycm9yLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25FcnJvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjI3MTQ5NzhiZDI1ZDRjYWJkNzZmZDZlMDZjOWU4YzM1NWRiZTk5YQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25FcnJvci5jcHAKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9s
b2NhdGlvbkVycm9yLmgiCisKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCisKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViR2VvbG9j
YXRpb25FcnJvcjo6V2ViR2VvbG9jYXRpb25FcnJvcihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlv
bkVycm9yKiBlcnJvcikKK3sKKyAgICBjb3B5RnJvbShlcnJvcik7Cit9CisKK1dlYkdlb2xvY2F0
aW9uRXJyb3ImIFdlYkdlb2xvY2F0aW9uRXJyb3I6Om9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpH
ZW9sb2NhdGlvbkVycm9yKiBlcnJvcikKK3sKKyAgICBjb3B5RnJvbShlcnJvcik7CisgICAgcmV0
dXJuICp0aGlzOworfQorCitXZWJHZW9sb2NhdGlvbkVycm9yOjpvcGVyYXRvciBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25FcnJvcj4oKSBjb25zdAoreworICAgIGlmIChtX2lz
TnVsbCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdlYkNvcmU6Okdlb2xvY2F0aW9u
RXJyb3I6OmNyZWF0ZShzdGF0aWNfY2FzdDxXZWJDb3JlOjpHZW9sb2NhdGlvbkVycm9yOjpFcnJv
ckNvZGU+KG1fY29kZSksIG1fbWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25FcnJv
cjo6Y29weUZyb20oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25FcnJvciogZXJyb3IpCit7Cisg
ICAgaWYgKCFlcnJvcikgeworICAgICAgICBtX2lzTnVsbCA9IHRydWU7CisgICAgICAgIG1fY29k
ZSA9IEVycm9yVW5hdmFpbGFibGU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2lz
TnVsbCA9IGZhbHNlOworICAgIG1fY29kZSA9IHN0YXRpY19jYXN0PEVycm9yQ29kZT4oZXJyb3It
PmNvZGUoKSk7CisgICAgbV9tZXNzYWdlID0gZXJyb3ItPm1lc3NhZ2UoKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAwZTExZTYwZjE4MzI5YmJmMWNmMzA5NjkzZjAyZjQyZGY3
MDdjNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmgi
CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3coKQoreworICAg
IGlmIChtX2dlb2xvY2F0aW9uKQorICAgICAgICBtX2dlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQo
dHJ1ZSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6ZGVueSgp
Cit7CisgICAgaWYgKG1fZ2VvbG9jYXRpb24pCisgICAgICAgIG1fZ2VvbG9jYXRpb24tPnNldElz
QWxsb3dlZChmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTIwZjUwMjdlMTgyOTIwYWIwZjJjZjdhOTA1YThk
ZDYzMWYxZTM5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCit7CisgICAgY29weUZyb20ocG9zaXRpb24pOwor
fQorCitXZWJHZW9sb2NhdGlvblBvc2l0aW9uJiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpvcGVy
YXRvcj0oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCit7Cisg
ICAgY29weUZyb20ocG9zaXRpb24pOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjpjb3B5RnJvbShjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uKiBwb3NpdGlvbikKK3sKKyAgICBpZiAoIXBvc2l0aW9uKSB7CisgICAgICAgIG1faXNO
dWxsID0gdHJ1ZTsKKyAgICAgICAgbV90aW1lc3RhbXAgPSAwOworICAgICAgICBtX2xhdGl0dWRl
ID0gMDsKKyAgICAgICAgbV9sb25naXR1ZGUgPSAwOworICAgICAgICBtX2FjY3VyYWN5ID0gMDsK
KyAgICAgICAgbV9hbHRpdHVkZSA9IDA7CisgICAgICAgIG1fYWx0aXR1ZGVBY2N1cmFjeSA9IDA7
CisgICAgICAgIG1faGVhZGluZyA9IDA7CisgICAgICAgIG1fc3BlZWQgPSAwOworICAgICAgICBt
X2NhblByb3ZpZGVBbHRpdHVkZSA9IGZhbHNlOworICAgICAgICBtX2NhblByb3ZpZGVBbHRpdHVk
ZUFjY3VyYWN5ID0gZmFsc2U7CisgICAgICAgIG1fY2FuUHJvdmlkZUhlYWRpbmcgPSBmYWxzZTsK
KyAgICAgICAgbV9jYW5Qcm92aWRlU3BlZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgbV90aW1lc3RhbXAgPSBwb3NpdGlvbi0+
dGltZXN0YW1wKCk7CisgICAgbV9sYXRpdHVkZSA9IHBvc2l0aW9uLT5sYXRpdHVkZSgpOworICAg
IG1fbG9uZ2l0dWRlID0gcG9zaXRpb24tPmxvbmdpdHVkZSgpOworICAgIG1fYWNjdXJhY3kgPSBw
b3NpdGlvbi0+YWNjdXJhY3koKTsKKyAgICBtX2FsdGl0dWRlID0gcG9zaXRpb24tPmFsdGl0dWRl
KCk7CisgICAgbV9hbHRpdHVkZUFjY3VyYWN5ID0gcG9zaXRpb24tPmFsdGl0dWRlQWNjdXJhY3ko
KTsKKyAgICBtX2hlYWRpbmcgPSBwb3NpdGlvbi0+aGVhZGluZygpOworICAgIG1fc3BlZWQgPSBw
b3NpdGlvbi0+c3BlZWQoKTsKKyAgICBtX2NhblByb3ZpZGVBbHRpdHVkZSA9IHBvc2l0aW9uLT5j
YW5Qcm92aWRlQWx0aXR1ZGUoKTsKKyAgICBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0g
cG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCk7CisgICAgbV9jYW5Qcm92aWRl
SGVhZGluZyA9IHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpOworICAgIG1fY2FuUHJvdmlk
ZVNwZWVkID0gcG9zaXRpb24tPmNhblByb3ZpZGVTcGVlZCgpOworfQorCisKK1dlYkdlb2xvY2F0
aW9uUG9zaXRpb246Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbj4oKSBjb25zdAoreworICAgIGlmIChtX2lzTnVsbCkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKG1fdGltZXN0
YW1wLCBtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9hY2N1cmFjeSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FuUHJvdmlkZUFsdGl0dWRlLCBt
X2FsdGl0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgbV9hbHRpdHVkZUFjY3VyYWN5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYW5Qcm92aWRl
SGVhZGluZywgbV9oZWFkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9jYW5Qcm92aWRlU3BlZWQsIG1fc3BlZWQpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwppbmRleCA5OGUyMjExZDllMmYwMWU4ZDRhN2U3NzE5NGM3ZDQ2NGZkZTVh
YzgwLi5mMWI2YTdmYmEyZmE2Y2NiZTkzNmY4OGYwMzIxYTA4OWYxMWZiZDU1IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTAtMDktMzAgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgY2xpZW50IGJhc2VkIGdlb2xvY2F0aW9uIGJpbmRpbmdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTc1Mgor
CQorCUNvbW1lbnQgb3V0IG5vbi1jbGllbnQtYmFzZWQgbW9jayBpbXBsZW1lbnRhdGlvbnMgZm9y
IG5vdy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24pOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
R2VvbG9jYXRpb25FcnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0Lmg6CisKIDIwMTAtMDktMzAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggM2QzYzIwNDRlM2FlYjYyZjViZmU2YWJlNmZmMTQ3OGZlYWU0OTQyMC4uOWU4NjdiOTEyYzg2
M2ExNzAxMjE0YzNlOGU3MWRjZmM3YWU5MzhhMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApA
QCAtMTQ5Nyw3ICsxNDk3LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtCiAgICAgcmVzdWx0
LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNb
MF0uaXNCb29sKCkpCiAgICAgICAgIHJldHVybjsKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKKyAgICAvLyBUT0RPKGprbm90dGVuKTogSW1wbGVtZW50IHNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uIGNsaWVudC1iYXNlZAogICAgIFdlYkdlb2xvY2F0aW9uU2VydmljZU1v
Y2s6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oYXJndW1lbnRzWzBdLnRvQm9vbGVhbigp
KTsKKyNlbmRpZgogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQpAQCAtMTUwNSw3ICsxNTA4LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAzIHx8
ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkgfHwg
IWFyZ3VtZW50c1syXS5pc051bWJlcigpKQogICAgICAgICByZXR1cm47CisjaWYgIUVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgLy8gVE9ETyhqa25vdHRlbik6IEltcGxlbWVu
dCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiBjbGllbnQtYmFzZWQKICAgICBXZWJHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihhcmd1bWVudHNbMF0u
dG9Eb3VibGUoKSwgYXJndW1lbnRzWzFdLnRvRG91YmxlKCksIGFyZ3VtZW50c1syXS50b0RvdWJs
ZSgpKTsKKyNlbmRpZgogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQpAQCAtMTUxMyw3ICsxNTE5LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8
ICFhcmd1bWVudHNbMF0uaXNJbnQzMigpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAg
ICAgICAgcmV0dXJuOworCisjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisg
ICAgLy8gVE9ETyhqa25vdHRlbik6IEltcGxlbWVudCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvciBj
bGllbnQtYmFzZWQKICAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBjcHBWYXJpYW50VG9XZWJTdHJpbmco
YXJndW1lbnRzWzFdKSk7CisjZW5kaWYKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCmluZGV4IGI3ZmRhYjk4NDdkN2Y3NTdkMmQ4MWQ5MGVjYWJjOWI5ZmQ2OWJi
NDAuLmZmYTZlZWU5NmU0OTU1ODMzZDMzNWNmMmI1MDVjN2E5MDc3ZDE0MmQgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAg
LTU2MSwxMiArNTYxLDE0IEBAIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlciogV2ViVmlld0hvc3Q6
Om5vdGlmaWNhdGlvblByZXNlbnRlcigpCiAgICAgcmV0dXJuIG1fc2hlbGwtPm5vdGlmaWNhdGlv
blByZXNlbnRlcigpOwogfQogCisjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04p
CiBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9u
U2VydmljZSgpCiB7CiAgICAgaWYgKCFtX2dlb2xvY2F0aW9uU2VydmljZU1vY2suZ2V0KCkpCiAg
ICAgICAgIG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jay5zZXQoV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jazo6Y3JlYXRlV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jaygpKTsKICAgICByZXR1cm4gbV9n
ZW9sb2NhdGlvblNlcnZpY2VNb2NrLmdldCgpOwogfQorI2VuZGlmCiAKIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlciogV2ViVmlld0hvc3Q6OnNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6Oldl
YlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQogewpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggYmJiMTMyZDY5MmY5ZWNl
OTEzYjhkNjk0MGNhOGFiNTE4OGFmNTEyZS4uZmVhMjgwNjBlZDQ2ZTBmN2YxYmRhMmQ0N2U5NWY3
ZDQzN2UxNTk2MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5oCkBAIC0xMzAsNyArMTMwLDkgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBw
dWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVu
dCwKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Qm
LCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24pOwogICAgIHZpcnR1YWwgV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpOwor
I2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIHZpcnR1YWwgV2ViS2l0
OjpXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2VydmljZSgpOworI2VuZGlmCiAg
ICAgdmlydHVhbCBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciogc3BlZWNoSW5wdXRD
b250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOwogICAgIHZpcnR1YWwg
V2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3JpZW50YXRpb25DbGll
bnQoKTsKIApAQCAtMjg2LDggKzI4OCwxMCBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViUmVj
dCBtX3BhaW50UmVjdDsKICAgICBib29sIG1faXNQYWludGluZzsKIAorI2lmICFFTkFCTEUoQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIC8vIEdlb2xvY2F0aW9uCiAgICAgT3duUHRyPFdl
YktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jaz4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2Nr
OworI2VuZGlmCiAKICAgICBPd25QdHI8VGVzdE5hdmlnYXRpb25Db250cm9sbGVyKj4gbV9uYXZp
Z2F0aW9uQ29udHJvbGxlcjsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69332</attachid>
            <date>2010-09-30 06:40:34 -0700</date>
            <delta_ts>2010-11-25 04:37:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45752-20100930144031.patch</filename>
            <type>text/plain</type>
            <size>48328</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjMzMTgzMjJhZDY0MzE0MmM2YjgwMWJlZTM4Nzk2MjY2MDk3ZDIxMC4uNWMxODgyNjM2NjM5NDNi
MDY2M2Y4MWFlZmRlMWFlOWYzZGYyMDNmYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wOS0zMCAgSm9o
biBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBjbGll
bnQgYmFzZWQgZ2VvbG9jYXRpb24gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NzUyCisKKyAgICAgICAgRXhjbHVkZSBHZW9sb2NhdGlv
blNlcnZpY2UgZnJvbSBidWlsZGluZyB3aGVuIENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTgorICAg
ICAgICBpcyBlbmFibGVkLgorCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6Cisg
ICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkVycm9yLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vQ2hyb21pdW1CcmlkZ2UuaDoKKwogMjAxMC0wOS0zMCAgSm9jaGVuIEVpc2luZ2VyICA8
am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCA2YjEzZWI1ZGQyMmU0MGE4MzI3YzY4NWY2NWEx
MzhmNjNjMGM5NTc5Li4xMzFlY2I4ZTQ2NGUzNDQzYjA4NTNiN2U0NWMzNTczZDU3OWY1ZWFiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTEyMDIsNiArMTIwMiwxMSBAQAogICAgICAgICAg
ICAgWydleGNsdWRlJywgJ1Bvc2l4XFwuY3BwJCddLAogICAgICAgICAgIF0sCiAgICAgICAgIH1d
LAorICAgICAgICBbJyJFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OPTEiIGluIGZlYXR1
cmVfZGVmaW5lcycsIHsKKyAgICAgICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICBbJ2V4
Y2x1ZGUnLCAnL0dlb2xvY2F0aW9uU2VydmljZS4qJCddLAorICAgICAgICAgIF0sCisgICAgICAg
IH1dLAogICAgICAgXSwKICAgICB9LAogICAgIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvbkVycm9yLmggYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25FcnJvci5oCmluZGV4
IDJhM2JhZDRhOWY3M2VmNzY3YjM3YjBlZTM5YzcxM2I1MWVlNDdiNjAuLjZlZGZkMTk4ZjczODU0
NTgzZDI5OGI0Zjg0YWFiMDY1M2M4NGRiNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbkVycm9yLmgKKysrIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uRXJyb3IuaApAQCAt
NTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIEVycm9yQ29kZSBtX2NvZGU7Ci0g
ICAgU3RyaW5nIG1fbWVzc2FnZTsgCisgICAgU3RyaW5nIG1fbWVzc2FnZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
Q2hyb21pdW1CcmlkZ2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1Ccmlk
Z2UuaAppbmRleCAxMjFlYzRiOWNhYzM3YTUwNzk5Y2NjY2NmNjU0ZmVmNTgyOGY2NWJlLi4yNDU2
ZTQwZWU1NDY0MDMyYjdiNTIxODBlNWU5MDBhMTliN2FkZGQ1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCkBAIC0xNTQsOSArMTU0LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRm9ybXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgc3RhdGljIHZvaWQg
bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZChjb25zdCBEb2N1bWVudCopOwogCisjaWYgIUVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgICAgIC8vIEdlb2xvY2F0aW9uIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAg
IHN0YXRpYyBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UqIGNyZWF0ZUdlb2xvY2F0aW9uU2Vydmlj
ZUJyaWRnZShHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSopOwotCisjZW5kaWYKICAgICAgICAg
Ly8gRGF0YWJhc2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICAgICAgICAgLy8gUmV0dXJucyBhIGhhbmRsZSB0byB0aGUgREIgZmls
ZSBhbmQgb29wdGlvbmFsbHkgYSBoYW5kbGUgdG8gaXRzIGNvbnRhaW5pbmcgZGlyZWN0b3J5CiAg
ICAgICAgIHN0YXRpYyBQbGF0Zm9ybUZpbGVIYW5kbGUgZGF0YWJhc2VPcGVuRmlsZShjb25zdCBT
dHJpbmcmIHZmc0ZsZU5hbWUsIGludCBkZXNpcmVkRmxhZ3MpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2Jh
ZGZmYWNmMjcxMDhjMjlmZDVlOTI2ZjY3MTFiMDUxZjBjYjc3Mi4uNDE2ODNiNTg4OWQxNWJhOGE4
ODQzYTNjZDIwY2QzMWNkYjQ2NGM1YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIw
MTAtMDktMzAgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBJ
bXBsZW1lbnQgY2xpZW50IGJhc2VkIGdlb2xvY2F0aW9uIGJpbmRpbmdzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTc1MgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgQWRkIGluIGZpbGVzIGZvciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRp
b24uIEV4Y2x1ZGUgbm9uIGNsaWVudC1iYXNlZAorICAgICAgICBzb3VyY2VzLgorICAgICAgICAq
IHB1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25DbGllbnQ6On5XZWJHZW9sb2NhdGlvbkNsaWVudCk6CisgICAgICAgICog
cHVibGljL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvbkVycm9yLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbkVycm9yOjpXZWJHZW9sb2NhdGlvbkVycm9yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25FcnJvcjo6bnVsbEVycm9yKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25FcnJvcjo6aXNOdWxsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25FcnJvcjo6Y29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
RXJyb3I6Om1lc3NhZ2UpOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0OjpXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KiBwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246Om51bGxQb3NpdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OmlzTnVsbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OmxhdGl0dWRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6bG9uZ2l0dWRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6YWNjdXJhY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjphbHRpdHVkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmFsdGl0dWRlQWNjdXJhY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjpoZWFkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6c3BlZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjpjYW5Qcm92aWRlQWx0aXR1ZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNhblByb3ZpZGVIZWFkaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y2FuUHJvdmlkZVNwZWVkKToKKyAgICAgICAg
KiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dEltcGw6OmZvY3VzZWROb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RGb3JGcmFtZSk6CisgICAgICAgICogc3JjL0Nocm9taXVtQnJpZGdlLmNwcDoKKyAgICAgICAg
KiBzcmMvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHkuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9u
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50
UHJveHk6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXJDbGllbnRQcm94eTo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAg
ICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudFByb3h5OjpsYXN0UG9zaXRp
b24pOgorICAgICAgICAqIHNyYy9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHk6
Okdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViR2Vv
bG9jYXRpb25Db250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyOjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpjb250cm9sbGVyKToKKyAgICAgICAgKiBzcmMvV2Vi
R2VvbG9jYXRpb25FcnJvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbkVycm9yOjpXZWJHZW9sb2NhdGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25FcnJvcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25FcnJvcjo6b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uRXJy
b3I+KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25FcnJvcjo6Y29weUZyb20pOgor
ICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjphbGxvdyk6CisgICAg
ICAgIChXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpkZW55KToKKyAgICAgICAgKiBz
cmMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y29weUZyb20pOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24+KToKKwogMjAxMC0wOS0zMCAgQXZpIERyaXNzbWFuICA8YXZpQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAppbmRleCA3ZmFjMzUwMDJkZjVmN2VkYmE5YTk3YmQzYjhlODBmZTcwZjljMDc0Li4yODk2
MWE3NWZjYjJjMjRhMmU1NTRkOGJjMzE1YmU2MWNkZDVjMmIyIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAt
MTY4LDYgKzE2OCwxMCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hlLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJHZW9sb2NhdGlvbkVycm9yLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViR2VvbG9jYXRpb25DbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25T
ZXJ2aWNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNl
QnJpZGdlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jay5oJywKQEAgLTMyNCw3ICszMjgsMTAgQEAKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVOZXR3b3JraW5nQ29udGV4
dEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGll
bnRQcm94eS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25Db250cm9sbGVy
Q2xpZW50UHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL2d0ay9XZWJGb250SW5mby5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvZ3RrL1dlYkZvbnRJbmZvLmgnLApAQCAtNDI5LDYgKzQzNiw5IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RnJhbWVJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwJywKKyAgICAg
ICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uRXJyb3IuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCcsCkBAIC02MzIsNiArNjQyLDExIEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICBbJyJFTkFCTEVfQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OPTEiIGluIGZlYXR1cmVfZGVmaW5lcycsIHsKKyAgICAgICAgICAgICAgICAg
ICAgJ3NvdXJjZXMvJzogWworICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ1dl
Ykdlb2xvY2F0aW9uU2VydmljZS4qJCddLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgIH1dCiAgICAgICAgICAgICBdLAogICAgICAgICB9LAogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M4NzA0ODJm
OWFiNzc3NGRiN2Y3MWUxZGZhZjJiMDE1OTFkM2U0MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJHZW9sb2NhdGlvbkNsaWVudF9oCisjZGVmaW5lIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkdlb2xvY2F0
aW9uOworY2xhc3MgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyOworCitjbGFzcyBXZWJHZW9sb2Nh
dGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25DbGllbnQo
KSB7fQorCisgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9w
VXBkYXRpbmcoKSA9IDA7CisgICAgLy8gRklYTUU6IFRoZSBWMiBHZW9sb2NhdGlvbiBzcGVjaWZp
Y2F0aW9uIHByb3Bvc2VzIHRoYXQgdGhpcyBwcm9wZXJ0eSBpcworICAgIC8vIHJlbmFtZWQuIFNl
ZSBodHRwOi8vd3d3LnczLm9yZy8yMDA4L2dlb2xvY2F0aW9uL3RyYWNrL2lzc3Vlcy82CisgICAg
Ly8gV2Ugc2hvdWxkIHVwZGF0ZSBXZWJLaXQgdG8gcmVmbGVjdCB0aGlzIGlmIGFuZCB3aGVuIHRo
ZSBWMiBzcGVjaWZpY2F0aW9uCisgICAgLy8gaXMgcHVibGlzaGVkLgorICAgIHZpcnR1YWwgdm9p
ZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YzMzMjgxZTY0ODIwYzgzYmFlOWQ0MmQ3ZDkyN2IzYTk1OWYxYzA1Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaAor
I2RlZmluZSBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25Db250cm9sbGVyOyB9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwor
Y2xhc3MgV2ViR2VvbG9jYXRpb25FcnJvcjsKKworY2xhc3MgV2ViR2VvbG9jYXRpb25Db250cm9s
bGVyIHsKK3B1YmxpYzoKKyAgICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIoV2ViQ29yZTo6R2Vv
bG9jYXRpb25Db250cm9sbGVyKiBjKQorICAgICAgICA6IG1fY29udHJvbGxlcihjKQorICAgIHsK
KyAgICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24mKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgZXJyb3JPY2N1cnJlZChj
b25zdCBXZWJHZW9sb2NhdGlvbkVycm9yJik7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
KyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIoKSBjb25zdDsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlciog
bV9jb250cm9sbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJHZW9sb2NhdGlvbkVycm9yLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdl
b2xvY2F0aW9uRXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWJlN2E3YjlmYTU1YTAyZjdhYzgyODBjYzQy
NzEyYjlhMzhlY2UzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJHZW9sb2NhdGlvbkVycm9yLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
R2VvbG9jYXRpb25FcnJvcl9oCisjZGVmaW5lIFdlYkdlb2xvY2F0aW9uRXJyb3JfaAorCisjaW5j
bHVkZSAiV2ViU3RyaW5nLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25FcnJvcjsgfQorbmFtZXNwYWNlIFdURiB7IHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkdlb2xvY2F0aW9uRXJyb3IgeworcHVibGljOgorICAg
IGVudW0gRXJyb3JDb2RlIHsKKyAgICAgICAgUGVybWlzc2lvbkRlbmllZCwKKyAgICAgICAgRXJy
b3JVbmF2YWlsYWJsZQorICAgIH07CisKKyAgICBXZWJHZW9sb2NhdGlvbkVycm9yKEVycm9yQ29k
ZSBjb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAgIDogbV9pc051bGwoZmFs
c2UpLAorICAgICAgICAgIG1fY29kZShjb2RlKSwKKyAgICAgICAgICBtX21lc3NhZ2UobWVzc2Fn
ZSkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIFdlYkdlb2xvY2F0aW9uRXJyb3IgbnVsbEVy
cm9yKCkgeyByZXR1cm4gV2ViR2VvbG9jYXRpb25FcnJvcigpOyB9CisKKyAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CisKKyAgICBFcnJvckNvZGUgY29kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisg
ICAgV2ViR2VvbG9jYXRpb25FcnJvcihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvbkVycm9yKik7
CisgICAgV2ViR2VvbG9jYXRpb25FcnJvciYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6Okdlb2xv
Y2F0aW9uRXJyb3IqKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6R2Vv
bG9jYXRpb25FcnJvcj4oKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkdlb2xv
Y2F0aW9uRXJyb3IoKQorICAgICAgICA6IG1faXNOdWxsKHRydWUpLAorICAgICAgICAgIG1fY29k
ZShFcnJvclVuYXZhaWxhYmxlKQorICAgIHsKKyAgICB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyAgICB2b2lkIGNvcHlGcm9tKGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uRXJyb3Iq
KTsKKyNlbmRpZgorCisgICAgYm9vbCBtX2lzTnVsbDsKKworICAgIEVycm9yQ29kZSBtX2NvZGU7
CisgICAgV2ViU3RyaW5nIG1fbWVzc2FnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25FcnJvcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZhNmYyM2U0Zjc4YjU1MDc0MGQ5NzEyODMxN2VlZTA3NmY1NDQ2MGYKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViR2VvbG9jYXRpb247CisKK2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QgeworcHVibGljOgorICAgIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViQ29y
ZTo6R2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQorICAgICAgICA6IG1fZ2VvbG9jYXRpb24oZ2Vv
bG9jYXRpb24pCisgICAgeworICAgIH0KKworICAgIFdFQktJVF9BUEkgdmlydHVhbCB2b2lkIGFs
bG93KCk7CisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIHZvaWQgZGVueSgpOworCitwcml2YXRlOgor
ICAgIFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbj4gbV9nZW9sb2NhdGlvbjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY5YzljYTdjMjU2NjNlZDU1MDQxY2FiNDQzOGU3ZTYzY2YwOWEw
MGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbl9oCisjZGVmaW5lIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25faAorCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KK25hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsgfQorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uIHsKK3B1Ymxp
YzoKKyAgICBXZWJHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBs
YXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVh
ZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91
YmxlIHNwZWVkKQorICAgICAgICA6IG1faXNOdWxsKGZhbHNlKSwKKyAgICAgICAgICBtX3RpbWVz
dGFtcCh0aW1lc3RhbXApLAorICAgICAgICAgIG1fbGF0aXR1ZGUobGF0aXR1ZGUpLAorICAgICAg
ICAgIG1fbG9uZ2l0dWRlKGxvbmdpdHVkZSksCisgICAgICAgICAgbV9hY2N1cmFjeShhY2N1cmFj
eSksCisgICAgICAgICAgbV9hbHRpdHVkZShhbHRpdHVkZSksCisgICAgICAgICAgbV9hbHRpdHVk
ZUFjY3VyYWN5KGFsdGl0dWRlQWNjdXJhY3kpLAorICAgICAgICAgIG1faGVhZGluZyhoZWFkaW5n
KSwKKyAgICAgICAgICBtX3NwZWVkKHNwZWVkKSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVBbHRp
dHVkZShwcm92aWRlc0FsdGl0dWRlKSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVBbHRpdHVkZUFj
Y3VyYWN5KHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSksCisgICAgICAgICAgbV9jYW5Qcm92aWRl
SGVhZGluZyhwcm92aWRlc0hlYWRpbmcpLAorICAgICAgICAgIG1fY2FuUHJvdmlkZVNwZWVkKHBy
b3ZpZGVzU3BlZWQpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIG51bGxQb3NpdGlvbigpIHsgcmV0dXJuIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oKTsg
fQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQorCisgICAg
ZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CisKKyAgICBk
b3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9CisgICAgZG91Ymxl
IGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9CisgICAgZG91YmxlIGFj
Y3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9hY2N1cmFjeTsgfQorICAgIGRvdWJsZSBhbHRpdHVk
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0aXR1ZGU7IH0KKyAgICBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsgfQorICAgIGRvdWJsZSBo
ZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkaW5nOyB9CisgICAgZG91YmxlIHNwZWVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zcGVlZDsgfQorCisgICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVBbHRpdHVkZTsgfQorICAgIGJvb2wgY2FuUHJv
dmlkZUFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVBbHRpdHVk
ZUFjY3VyYWN5OyB9CisgICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuUHJvdmlkZUhlYWRpbmc7IH0KKyAgICBib29sIGNhblByb3ZpZGVTcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuUHJvdmlkZVNwZWVkOyB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyAgICBXZWJHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb24qKTsKKyAgICBXZWJHZW9sb2NhdGlvblBvc2l0aW9uJiBvcGVyYXRvcj0oY29uc3Qg
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiopOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPigpIGNvbnN0OworI2VuZGlmCisKK3By
aXZhdGU6CisgICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCisgICAgICAgIDogbV9pc051bGwo
dHJ1ZSksCisgICAgICAgICAgbV90aW1lc3RhbXAoMCksCisgICAgICAgICAgbV9sYXRpdHVkZSgw
KSwKKyAgICAgICAgICBtX2xvbmdpdHVkZSgwKSwKKyAgICAgICAgICBtX2FjY3VyYWN5KDApLAor
ICAgICAgICAgIG1fYWx0aXR1ZGUoMCksCisgICAgICAgICAgbV9hbHRpdHVkZUFjY3VyYWN5KDAp
LAorICAgICAgICAgIG1faGVhZGluZygwKSwKKyAgICAgICAgICBtX3NwZWVkKDApLAorICAgICAg
ICAgIG1fY2FuUHJvdmlkZUFsdGl0dWRlKGZhbHNlKSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVB
bHRpdHVkZUFjY3VyYWN5KGZhbHNlKSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVIZWFkaW5nKGZh
bHNlKSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVTcGVlZChmYWxzZSkKKyAgICB7CisgICAgfQor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgdm9pZCBjb3B5RnJvbShjb25zdCBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKik7CisjZW5kaWYKKworICAgIGJvb2wgbV9pc051bGw7
CisKKyAgICBkb3VibGUgbV90aW1lc3RhbXA7CisKKyAgICBkb3VibGUgbV9sYXRpdHVkZTsKKyAg
ICBkb3VibGUgbV9sb25naXR1ZGU7CisgICAgZG91YmxlIG1fYWNjdXJhY3k7CisgICAgZG91Ymxl
IG1fYWx0aXR1ZGU7CisgICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICBkb3VibGUg
bV9oZWFkaW5nOworICAgIGRvdWJsZSBtX3NwZWVkOworCisgICAgYm9vbCBtX2NhblByb3ZpZGVB
bHRpdHVkZTsKKyAgICBib29sIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3k7CisgICAgYm9v
bCBtX2NhblByb3ZpZGVIZWFkaW5nOworICAgIGJvb2wgbV9jYW5Qcm92aWRlU3BlZWQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b25faApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggNWY3MDJl
MDIwMjdiNmU2NjFhMzdiODRhMGJjMTlhNGY0MmJiYmY5ZS4uNjIwNWM5ZmEyMGYyNDE5NzdhODEx
N2QzM2Q3NTgyZjk4ZTRlNTBmOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpmb2N1c2Vk
Tm9kZUNoYW5nZWQoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZvY3VzVVJMID0gaGl0VGVzdC5h
YnNvbHV0ZUxpbmtVUkwoKTsKICAgICB9CiAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+c2V0S2V5
Ym9hcmRGb2N1c1VSTChmb2N1c1VSTCk7Ci0gICAgCisKICAgICBpZiAoIW5vZGUpCiAgICAgICAg
IHJldHVybjsKIApAQCAtNzc3LDE1ICs3NzcsMjMgQEAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBD
aHJvbWVDbGllbnRJbXBsOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAogCiB2b2lkIENo
cm9tZUNsaWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFt
ZSogZnJhbWUsIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKIHsKKyNpZiBFTkFCTEUoQ0xJRU5U
X0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIC8vIFRvIGJlIGltcGxlbWVudGVkLiBDcmVhdGUgYSBX
ZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisjZWxzZQogICAgIEdlb2xvY2F0aW9uU2Vy
dmljZUNocm9taXVtKiBnZW9sb2NhdGlvblNlcnZpY2UgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlv
blNlcnZpY2VDaHJvbWl1bSo+KGdlb2xvY2F0aW9uLT5nZXRHZW9sb2NhdGlvblNlcnZpY2UoKSk7
CiAgICAgZ2VvbG9jYXRpb25TZXJ2aWNlLT5nZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoKS0+YXR0
YWNoQnJpZGdlSWZOZWVkZWQoKTsKICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5nZW9sb2NhdGlv
blNlcnZpY2UoKS0+cmVxdWVzdFBlcm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvblNlcnZpY2Ut
Pmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpLT5nZXRCcmlkZ2VJZCgpLCBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2FuY2Vs
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9j
YXRpb24qIGdlb2xvY2F0aW9uKQogeworI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJ
T04pCisgICAgLy8gVG8gYmUgaW1wbGVtZW50ZWQuIGRlc3Ryb3kgdGhlIFdlYkdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QKKyNlbHNlCiAgICAgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0q
IGdlb2xvY2F0aW9uU2VydmljZSA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uU2VydmljZUNocm9t
aXVtKj4oZ2VvbG9jYXRpb24tPmdldEdlb2xvY2F0aW9uU2VydmljZSgpKTsKICAgICBtX3dlYlZp
ZXctPmNsaWVudCgpLT5nZW9sb2NhdGlvblNlcnZpY2UoKS0+Y2FuY2VsUGVybWlzc2lvblJlcXVl
c3RGb3JGcmFtZShnZW9sb2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgp
LT5nZXRCcmlkZ2VJZCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOworI2VuZGlmCiB9CiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9taXVtQnJpZGdlLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21p
dW1CcmlkZ2UuY3BwCmluZGV4IGI5MDY1NzUxYjA1YWJiMmQ3MGY2NmY2YzlhYTNlMzk5NTA1ODhm
MTEuLjBhNTJiOTk1MTQ4MmY2OTUyZGNlMjEzN2RkMzlkYmM0NzRkZTVlMTEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCkBAIC04NSw3ICs4NSwxMSBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmgiCisjZW5kaWYK
KwogI2luY2x1ZGUgIldvcmtlci5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQcm94eS5oIgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC00NjQsMTIgKzQ2OCwxNCBAQCBib29sIENo
cm9taXVtQnJpZGdlOjpsb2FkRm9udChOU0ZvbnQqIHNyY0ZvbnQsIEFUU0ZvbnRDb250YWluZXJS
ZWYqIG91dCkKIH0KICNlbmRpZgogCisjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJ
T04pCiAvLyBHZW9sb2NhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSog
Q2hyb21pdW1CcmlkZ2U6OmNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZShHZW9sb2NhdGlv
blNlcnZpY2VDaHJvbWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0pCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwoZ2VvbG9jYXRpb25TZXJ2aWNl
Q2hyb21pdW0pOwogfQorI2VuZGlmCiAKIC8vIERhdGFiYXNlcyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94
eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudFBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43YTg0NWFjMmNmNGFjM2VjODc1MTk1OGZhNjgzMTNhNTY5Yjlm
ODg3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9HZW9sb2NhdGlvbkNv
bnRyb2xsZXJDbGllbnRQcm94eS5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eS5o
IgorCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9u
RGVzdHJveWVkKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5nZW9s
b2NhdGlvbkRlc3Ryb3llZCgpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dFByb3h5OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5zdGFydFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVy
Q2xpZW50UHJveHk6OnN0b3BVcGRhdGluZygpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAg
ICBtX2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGhpZ2hBY2N1cmFjeSkK
K3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXRFbmFibGVIaWdoQWNj
dXJhY3koaGlnaEFjY3VyYWN5KTsKK30KKworV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiog
R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50UHJveHk6Omxhc3RQb3NpdGlvbigpCit7CisgICAg
Ly8gRm9yIG5vdyB3ZSBkbyBub3QgcHJveHkgdGhlIGxhc3QgcG9zaXRpb24gcmVxdWVzdCBmdXJ0
aGVyLiAgRG9pbmcgc28gcmVxdWlyZXMKKyAgICAvLyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
bGFzdFBvc2l0aW9uIG1ldGhvZCBvbiB0aGUgY2xpZW50LgorICAgIHJldHVybiAwOworfQorCit9
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ29udHJvbGxlckNs
aWVudFByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ29udHJvbGxlckNs
aWVudFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM5ODg1OGUzN2Q1Yzg1YzZjMzY2NjgzY2EzODI1OWY2
OTYwZGU0MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50UHJveHkuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eV9oCisjZGVmaW5lIEdlb2xvY2F0aW9u
Q29udHJvbGxlckNsaWVudFByb3h5X2gKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxl
ckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudDsKKworY2xhc3MgR2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRQcm94eShXZWJH
ZW9sb2NhdGlvbkNsaWVudCogY2xpZW50KQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVw
ZGF0aW5nKCk7CisgICAgLy8gRklYTUU6IFRoZSBWMiBHZW9sb2NhdGlvbiBzcGVjaWZpY2F0aW9u
IHByb3Bvc2VzIHRoYXQgdGhpcyBwcm9wZXJ0eSBpcworICAgIC8vIHJlbmFtZWQuIFNlZSBodHRw
Oi8vd3d3LnczLm9yZy8yMDA4L2dlb2xvY2F0aW9uL3RyYWNrL2lzc3Vlcy82CisgICAgLy8gV2Ug
c2hvdWxkIHVwZGF0ZSBXZWJLaXQgdG8gcmVmbGVjdCB0aGlzIGlmIGFuZCB3aGVuIHRoZSBWMiBz
cGVjaWZpY2F0aW9uCisgICAgLy8gaXMgcHVibGlzaGVkLgorICAgIHZpcnR1YWwgdm9pZCBzZXRF
bmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKKworcHJpdmF0ZToKKyAgICBXZWJHZW9sb2NhdGlv
bkNsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudFByb3h5X2gKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Zjg5Njc4
OWJmZWNhZGQyMDNiYzI5NTZlZTVlNGYzN2U2OWEzZWEyCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRp
b25Db250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlv
bi5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9u
Q2hhbmdlZChjb25zdCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uJiBwKQoreworICAgIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24ocCk7CisgICAgbV9jb250
cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24uZ2V0KCkpOworfQorCit2b2lkIFdlYkdl
b2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JPY2N1cnJlZChjb25zdCBXZWJHZW9sb2NhdGlvbkVy
cm9yJiBlKQoreworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25FcnJvcj4gZXJy
b3IoZSk7CisgICAgbV9jb250cm9sbGVyLT5lcnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKK30K
KworV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyKiBXZWJHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRyb2xsZXI7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJHZW9sb2NhdGlvbkVycm9yLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRp
b25FcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI3MTQ5NzhiZDI1ZDRjYWJkNzZmZDZlMDZjOWU4YzM1
NWRiZTk5YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9j
YXRpb25FcnJvci5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkVycm9yLmgiCisKKyNpbmNsdWRlICJHZW9sb2Nh
dGlvbkVycm9yLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViR2VvbG9jYXRpb25FcnJvcjo6V2ViR2VvbG9jYXRpb25FcnJvcihjb25z
dCBXZWJDb3JlOjpHZW9sb2NhdGlvbkVycm9yKiBlcnJvcikKK3sKKyAgICBjb3B5RnJvbShlcnJv
cik7Cit9CisKK1dlYkdlb2xvY2F0aW9uRXJyb3ImIFdlYkdlb2xvY2F0aW9uRXJyb3I6Om9wZXJh
dG9yPShjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvbkVycm9yKiBlcnJvcikKK3sKKyAgICBjb3B5
RnJvbShlcnJvcik7CisgICAgcmV0dXJuICp0aGlzOworfQorCitXZWJHZW9sb2NhdGlvbkVycm9y
OjpvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25FcnJvcj4oKSBj
b25zdAoreworICAgIGlmIChtX2lzTnVsbCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IFdlYkNvcmU6Okdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShzdGF0aWNfY2FzdDxXZWJDb3JlOjpH
ZW9sb2NhdGlvbkVycm9yOjpFcnJvckNvZGU+KG1fY29kZSksIG1fbWVzc2FnZSk7Cit9CisKK3Zv
aWQgV2ViR2VvbG9jYXRpb25FcnJvcjo6Y29weUZyb20oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRp
b25FcnJvciogZXJyb3IpCit7CisgICAgaWYgKCFlcnJvcikgeworICAgICAgICBtX2lzTnVsbCA9
IHRydWU7CisgICAgICAgIG1fY29kZSA9IEVycm9yVW5hdmFpbGFibGU7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2lzTnVsbCA9IGZhbHNlOworICAgIG1fY29kZSA9IHN0YXRpY19j
YXN0PEVycm9yQ29kZT4oZXJyb3ItPmNvZGUoKSk7CisgICAgbV9tZXNzYWdlID0gZXJyb3ItPm1l
c3NhZ2UoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAwZTExZTYwZjE4MzI5
YmJmMWNmMzA5NjkzZjAyZjQyZGY3MDdjNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmgiCisKK3ZvaWQgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdDo6YWxsb3coKQoreworICAgIGlmIChtX2dlb2xvY2F0aW9uKQorICAgICAgICBtX2dlb2xv
Y2F0aW9uLT5zZXRJc0FsbG93ZWQodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6ZGVueSgpCit7CisgICAgaWYgKG1fZ2VvbG9jYXRpb24pCisgICAgICAg
IG1fZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTIwZjUwMjdl
MTgyOTIwYWIwZjJjZjdhOTA1YThkZDYzMWYxZTM5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcApAQCAtMCwwICsxLDkxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9z
aXRpb24uaCIKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCit7CisgICAg
Y29weUZyb20ocG9zaXRpb24pOworfQorCitXZWJHZW9sb2NhdGlvblBvc2l0aW9uJiBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjpvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbiogcG9zaXRpb24pCit7CisgICAgY29weUZyb20ocG9zaXRpb24pOworICAgIHJldHVybiAq
dGhpczsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjb3B5RnJvbShjb25zdCBX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3sKKyAgICBpZiAoIXBvc2l0
aW9uKSB7CisgICAgICAgIG1faXNOdWxsID0gdHJ1ZTsKKyAgICAgICAgbV90aW1lc3RhbXAgPSAw
OworICAgICAgICBtX2xhdGl0dWRlID0gMDsKKyAgICAgICAgbV9sb25naXR1ZGUgPSAwOworICAg
ICAgICBtX2FjY3VyYWN5ID0gMDsKKyAgICAgICAgbV9hbHRpdHVkZSA9IDA7CisgICAgICAgIG1f
YWx0aXR1ZGVBY2N1cmFjeSA9IDA7CisgICAgICAgIG1faGVhZGluZyA9IDA7CisgICAgICAgIG1f
c3BlZWQgPSAwOworICAgICAgICBtX2NhblByb3ZpZGVBbHRpdHVkZSA9IGZhbHNlOworICAgICAg
ICBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0gZmFsc2U7CisgICAgICAgIG1fY2FuUHJv
dmlkZUhlYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9jYW5Qcm92aWRlU3BlZWQgPSBmYWxzZTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgbV90
aW1lc3RhbXAgPSBwb3NpdGlvbi0+dGltZXN0YW1wKCk7CisgICAgbV9sYXRpdHVkZSA9IHBvc2l0
aW9uLT5sYXRpdHVkZSgpOworICAgIG1fbG9uZ2l0dWRlID0gcG9zaXRpb24tPmxvbmdpdHVkZSgp
OworICAgIG1fYWNjdXJhY3kgPSBwb3NpdGlvbi0+YWNjdXJhY3koKTsKKyAgICBtX2FsdGl0dWRl
ID0gcG9zaXRpb24tPmFsdGl0dWRlKCk7CisgICAgbV9hbHRpdHVkZUFjY3VyYWN5ID0gcG9zaXRp
b24tPmFsdGl0dWRlQWNjdXJhY3koKTsKKyAgICBtX2hlYWRpbmcgPSBwb3NpdGlvbi0+aGVhZGlu
ZygpOworICAgIG1fc3BlZWQgPSBwb3NpdGlvbi0+c3BlZWQoKTsKKyAgICBtX2NhblByb3ZpZGVB
bHRpdHVkZSA9IHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1ZGUoKTsKKyAgICBtX2NhblByb3Zp
ZGVBbHRpdHVkZUFjY3VyYWN5ID0gcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5
KCk7CisgICAgbV9jYW5Qcm92aWRlSGVhZGluZyA9IHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGlu
ZygpOworICAgIG1fY2FuUHJvdmlkZVNwZWVkID0gcG9zaXRpb24tPmNhblByb3ZpZGVTcGVlZCgp
OworfQorCisKK1dlYkdlb2xvY2F0aW9uUG9zaXRpb246Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4oKSBjb25zdAoreworICAgIGlmIChtX2lzTnVsbCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbjo6Y3JlYXRlKG1fdGltZXN0YW1wLCBtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9hY2N1
cmFjeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Y2FuUHJvdmlkZUFsdGl0dWRlLCBtX2FsdGl0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgbV9h
bHRpdHVkZUFjY3VyYWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYW5Qcm92aWRlU3BlZWQsIG1fc3Bl
ZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA5OGUyMjExZDllMmYwMWU4
ZDRhN2U3NzE5NGM3ZDQ2NGZkZTVhYzgwLi41ZjU2N2ZiY2I0ZjQ2M2UxMDE0NjVjN2ZmYzU0ZGNl
ZTU5OGVlZTk3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDktMzAgIEpvaG4gS25vdHRl
bmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgY2xpZW50IGJhc2Vk
IGdlb2xvY2F0aW9uIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTc1MgorCisgICAgICAgIENvbW1lbnQgb3V0IG5vbi1jbGllbnQtYmFz
ZWQgbW9jayBpbXBsZW1lbnRhdGlvbnMgZm9yIG5vdy4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisKIDIwMTAtMDktMzAgIEVyaWMgU2Vp
ZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggM2QzYzIwNDRlM2FlYjYyZjViZmU2YWJlNmZm
MTQ3OGZlYWU0OTQyMC4uOWU4NjdiOTEyYzg2M2ExNzAxMjE0YzNlOGU3MWRjZmM3YWU5MzhhMiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTQ5Nyw3ICsxNDk3LDEwIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNCb29sKCkpCiAgICAgICAgIHJldHVybjsK
KyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICAvLyBUT0RPKGprbm90
dGVuKTogSW1wbGVtZW50IHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIGNsaWVudC1iYXNlZAog
ICAgIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Np
b24oYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpKTsKKyNlbmRpZgogfQogCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTUwNSw3ICsxNTA4LDEw
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJnCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgPCAzIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAh
YXJndW1lbnRzWzFdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1syXS5pc051bWJlcigpKQogICAg
ICAgICByZXR1cm47CisjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAg
Ly8gVE9ETyhqa25vdHRlbik6IEltcGxlbWVudCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiBj
bGllbnQtYmFzZWQKICAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzFdLnRvRG91
YmxlKCksIGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyNlbmRpZgogfQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTUxMyw3ICsxNTE5LDEx
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNJbnQzMigpIHx8ICFh
cmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOworCisjaWYgIUVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgLy8gVE9ETyhqa25vdHRlbik6IEltcGxlbWVu
dCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvciBjbGllbnQtYmFzZWQKICAgICBXZWJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihhcmd1bWVudHNbMF0udG9JbnQz
MigpLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CisjZW5kaWYKIH0KIAog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGI3ZmRhYjk4NDdk
N2Y3NTdkMmQ4MWQ5MGVjYWJjOWI5ZmQ2OWJiNDAuLmZmYTZlZWU5NmU0OTU1ODMzZDMzNWNmMmI1
MDVjN2E5MDc3ZDE0MmQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTU2MSwxMiArNTYxLDE0IEBAIFdlYk5vdGlmaWNh
dGlvblByZXNlbnRlciogV2ViVmlld0hvc3Q6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpCiAgICAg
cmV0dXJuIG1fc2hlbGwtPm5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogfQogCisjaWYgIUVOQUJM
RShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2Vydmlj
ZSogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uU2VydmljZSgpCiB7CiAgICAgaWYgKCFtX2dlb2xv
Y2F0aW9uU2VydmljZU1vY2suZ2V0KCkpCiAgICAgICAgIG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9j
ay5zZXQoV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y3JlYXRlV2ViR2VvbG9jYXRpb25TZXJ2
aWNlTW9jaygpKTsKICAgICByZXR1cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLmdldCgpOwog
fQorI2VuZGlmCiAKIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogV2ViVmlld0hvc3Q6OnNwZWVj
aElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVy
KQogewpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmgKaW5kZXggYmJiMTMyZDY5MmY5ZWNlOTEzYjhkNjk0MGNhOGFiNTE4OGFmNTEyZS4uZmVh
MjgwNjBlZDQ2ZTBmN2YxYmRhMmQ0N2U5NWY3ZDQzN2UxNTk2MSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC0xMzAsNyArMTMw
LDkgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBw
dWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNBY2Nl
c3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBXZWJL
aXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb24pOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIq
IG5vdGlmaWNhdGlvblByZXNlbnRlcigpOworI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xP
Q0FUSU9OKQogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xv
Y2F0aW9uU2VydmljZSgpOworI2VuZGlmCiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNwZWVjaElu
cHV0Q29udHJvbGxlciogc3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5w
dXRMaXN0ZW5lciopOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKTsKIApAQCAtMjg2LDggKzI4OCwxMCBAQCBw
cml2YXRlOgogICAgIFdlYktpdDo6V2ViUmVjdCBtX3BhaW50UmVjdDsKICAgICBib29sIG1faXNQ
YWludGluZzsKIAorI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIC8v
IEdlb2xvY2F0aW9uCiAgICAgT3duUHRyPFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9j
az4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrOworI2VuZGlmCiAKICAgICBPd25QdHI8VGVzdE5h
dmlnYXRpb25Db250cm9sbGVyKj4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlcjsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74857</attachid>
            <date>2010-11-25 04:38:03 -0800</date>
            <delta_ts>2010-12-06 07:21:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45752-20101125123800.patch</filename>
            <type>text/plain</type>
            <size>30587</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDRlY2QxOWE1ZDg5ZmI0NjM3MjA3MDY3YjgwODhhZGNjZTA4NjVjMzcu
LjA4M2VlNzk2MmNhOWJmYWJhNzNjY2MyYWJhZjQwYTViMDNjNmE3OTEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUwIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGNsaWVudCBiYXNlZCBnZW9sb2NhdGlvbiBiaW5k
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3
NTIKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVu
dDo6fldlYkdlb2xvY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9jYXRp
b25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OldlYkdlb2xvY2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgICogcHVibGljL1dl
Ykdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6On5XZWJHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpnZW9sb2NhdGlvbkNsaWVudCk6CisgICAgICAgICogc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnRJbXBsOjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9y
RnJhbWUpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgICogc3Jj
L0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6R2Vv
bG9jYXRpb25DbGllbnRQcm94eTo6R2VvbG9jYXRpb25DbGllbnRQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6On5HZW9sb2NhdGlvbkNsaWVudFByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6c2V0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9uRGVz
dHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6c3RhcnRV
cGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnN0b3BV
cGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnNldEVu
YWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJv
eHk6Omxhc3RQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJv
eHk6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGll
bnRQcm94eTo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIHNyYy9HZW9sb2Nh
dGlvbkNsaWVudFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250
cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6Om9wZXJhdG9yIGJvb2wpOgorICAgICAgICAqIHNyYy9XZWJHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6c2V0SXNBbGxvd2VkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6cmVzZXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpXZWJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Okdl
b2xvY2F0aW9uPik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuaDoKKwogMjAxMC0xMS0yNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNTE4
NThkNTgwMTY3ZGE1ZDE5YThmNTM1Mjg3NjA3MTIxNGM5YzA5Ni4uMjUwMjkzMTA4MDdmMjUwYzk0
YTMzOTEwNzE5MTcxMGYwMWZmNTRhNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw3ICsxNzMsMTAg
QEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvbnRDYWNoZS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkZvcm1FbGVtZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlv
bkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvbkVy
cm9yLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2UuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UuaCcs
CkBAIC0zMzksNiArMzQyLDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwuaCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmNwcCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L2d0ay9XZWJGb250SW5mby5jcHAnLApAQCAtNDQ0LDcgKzQ0OSw5IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJh
bWVJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uRXJyb3IuY3BwJywKKyAgICAgICAgICAgICAgICAn
c3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaCcsCkBAIC02NzIsNyArNjc5LDEx
IEBACiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgfSwgewogICAgICAg
ICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhj
bHVkZScsICdHZW9sb2NhdGlvbkNsaWVudFByb3h5LionXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvbkNsaWVudC4qJ10sCisgICAgICAgICAgICAg
ICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLionXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvbkVycm9yLion
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0LionXSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScs
ICdXZWJHZW9sb2NhdGlvblBvc2l0aW9uLionXSwKICAgICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgIH1dCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q0YTc1YTUzYWJhY2NjODk3ZTM3N2FkMDNkYzliMGNiMmZk
NWNhYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9j
YXRpb25DbGllbnQuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHZW9sb2Nh
dGlvbkNsaWVudF9oCisjZGVmaW5lIFdlYkdlb2xvY2F0aW9uQ2xpZW50X2gKKworbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBXZWJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsK
KworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
Ykdlb2xvY2F0aW9uQ2xpZW50KCkge30KKworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5n
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgPSAwOyAvLyBUaGUgY29udHJvbGxlciBpcyBpbnZhbGlk
IGFmdGVyIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkKKyAgICB2aXJ0dWFsIGJvb2wgbGFzdFBvc2l0
aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24mIHdlYlBvc2l0aW9uKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oY29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3Qo
Y29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCYpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250cm9sbGVyKGNvbnN0IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlciYpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViR2VvbG9jYXRp
b25DbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25D
b250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdjNDJkNThiMzM5ODVjMTEzYjAwMjI1YTM5NjI5YzAw
NDc2ZDU1YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2Vv
bG9jYXRpb25Db250cm9sbGVyLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyX2gKKyNkZWZpbmUgV2ViR2VvbG9jYXRpb25Db250cm9sbGVy
X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNz
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uRXJyb3I7CisKKy8v
IE5vdGUgdGhhdCB0aGUgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyIGlzIGludmFsaWQgYWZ0ZXIg
dGhlCisvLyBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKSBoYXMg
YmVlbiByZWNlaXZlZC4KK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlciB7CitwdWJsaWM6
CisgICAgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyKCkKKyAgICAgICAgOiBtX2NvbnRyb2xsZXIo
MCkKKyAgICB7CisgICAgfQorCisgICAgV0VCS0lUX0FQSSB2b2lkIHBvc2l0aW9uQ2hhbmdlZChj
b25zdCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CisgICAgV0VCS0lUX0FQSSB2b2lkIGVycm9y
T2NjdXJyZWQoY29uc3QgV2ViR2VvbG9jYXRpb25FcnJvciopOworCisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCisgICAgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyKFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlciogYykKKyAgICAgICAgOiBtX2NvbnRyb2xsZXIoYykKKyAgICB7CisgICAg
fQorICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlciogY29udHJvbGxlcigpIGNvbnN0
OworICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdl
YkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDM5YjI1MGVmZDhjNDY1ZTNmYTI0MmNiOGFlMGNl
YTdmNGUxYTM4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdF9oCisjZGVmaW5lIFdlYkdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgR2VvbG9jYXRpb247Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICB+V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCgpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lUX0FQSSBXZWJTZWN1cml0eU9yaWdp
biBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRJc0FsbG93
ZWQoYm9vbCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7CisKKyNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KKyAgICBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbj4pOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbj4oKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgor
ICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb24+IG1fcHJpdmF0ZTsKK307Cit9
CisKKyNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0X2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggN2NlMTQ4MzM0OWE1YjAwMWQ4MzM5NzFk
YThiOWZlNTAwY2E1MGUzOS4uMDMzZTEyMDYxNjY5YzhiMWQ5OWEzYTQ2NDZhMzVjZjRmNzEzYWI3
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTUyLDYgKzUyLDcg
QEAgY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnU7CiBjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVu
dUNsaWVudDsKIGNsYXNzIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbjsKIGNsYXNzIFdlYkZyYW1l
OworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQ7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZp
Y2U7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYklucHV0RWxlbWVudDsKQEAgLTM0MCw3ICsz
NDEsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgIC8vIEFjY2VzcyB0
aGUgZW1iZWRkZXIgQVBJIGZvciBnZW9sb2NhdGlvbiBzZXJ2aWNlcy4KKyAgICAvLyBBY2Nlc3Mg
dGhlIGVtYmVkZGVyIEFQSSBmb3IgKGNsaWVudC1iYXNlZCkgZ2VvbG9jYXRpb24gY2xpZW50IC4K
KyAgICB2aXJ0dWFsIFdlYkdlb2xvY2F0aW9uQ2xpZW50KiBnZW9sb2NhdGlvbkNsaWVudCgpIHsg
cmV0dXJuIDA7IH0KKyAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgKG5vbi1jbGll
bnQtYmFzZWQpIGdlb2xvY2F0aW9uIHNlcnZpY2VzLgogICAgIHZpcnR1YWwgV2ViR2VvbG9jYXRp
b25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBT
cGVlY2ggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4
IGM0M2EwYjAzZjJjZGJjYjgwNjE4MzVjMjkyZTUzMmE0YTUxNTc2ZmEuLjhkZjEzZDVkMTc5MDYz
MWU1ZGNhYjQxZTA4MjljYzQ4NDcwYzVhOWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcApAQCAtNzc1LDI2ICs3NzUsMjAgQEAgTm90aWZpY2F0aW9uUHJlc2VudGVy
KiBDaHJvbWVDbGllbnRJbXBsOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAogfQogI2Vu
ZGlmCiAKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKIHZvaWQgQ2hyb21l
Q2xpZW50SW1wbDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBm
cmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQogewotI2lmIEVOQUJMRShDTElFTlRfQkFT
RURfR0VPTE9DQVRJT04pCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBDbGllbnQtYmFzZWQgR2Vv
bG9jYXRpb24gUGVybWlzc2lvbnMKLSNlbHNlCiAgICAgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21p
dW0qIGdlb2xvY2F0aW9uU2VydmljZSA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uU2VydmljZUNo
cm9taXVtKj4oZ2VvbG9jYXRpb24tPmdldEdlb2xvY2F0aW9uU2VydmljZSgpKTsKICAgICBnZW9s
b2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpLT5hdHRhY2hCcmlkZ2VJ
Zk5lZWRlZCgpOwogICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmdlb2xvY2F0aW9uU2VydmljZSgp
LT5yZXF1ZXN0UGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9uU2VydmljZS0+Z2VvbG9jYXRp
b25TZXJ2aWNlQnJpZGdlKCktPmdldEJyaWRnZUlkKCksIGZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpjYW5jZWxHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2Vv
bG9jYXRpb24pCiB7Ci0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICAv
LyBGSVhNRTogSW1wbGVtZW50IENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBQZXJtaXNzaW9ucwot
I2Vsc2UKICAgICBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNl
ID0gc3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qPihnZW9sb2NhdGlvbi0+
Z2V0R2VvbG9jYXRpb25TZXJ2aWNlKCkpOwogICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmdlb2xv
Y2F0aW9uU2VydmljZSgpLT5jYW5jZWxQZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKGdlb2xvY2F0
aW9uU2VydmljZS0+Z2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKCktPmdldEJyaWRnZUlkKCksIGZy
YW1lLT5kb2N1bWVudCgpLT51cmwoKSk7Ci0jZW5kaWYKIH0KKyNlbmRpZgogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjphdHRhY2hSb290
R3JhcGhpY3NMYXllcihGcmFtZSogZnJhbWUsIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIp
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCmluZGV4IDg3YzE2NTNkNzk2YWYz
NTQ2ZjQ5NDc0MzQ4MjQ4MTU5ZTc3NzgzOTYuLjhiMzVkZDA1YzEwNDM0Y2U1NjI4NzNkYzZkMTFi
MGNmYmZlNjFmYmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC0x
MjgsOCArMTI4LDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICB2
aXJ0dWFsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCkgY29uc3Q7CiAjZW5kaWYKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBy
dW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9v
c2VyPik7CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUNob29zZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIHsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvR2VvbG9jYXRpb25DbGllbnRQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMwMzkwMTBkYWZj
MzQwODM1NjUyNzViNjM5YWFkYWMyY2UyNGE0OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvR2VvbG9jYXRpb25DbGllbnRQcm94eS5jcHAKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudFBy
b3h5LmgiCisKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9u
UG9zaXRpb24uaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUg
IldlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpHZW9sb2NhdGlv
bkNsaWVudFByb3h5KFdlYkdlb2xvY2F0aW9uQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVu
dChjbGllbnQpCit7Cit9CisKK0dlb2xvY2F0aW9uQ2xpZW50UHJveHk6On5HZW9sb2NhdGlvbkNs
aWVudFByb3h5KCkKK3sKK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpzZXRDb250
cm9sbGVyKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKK3sKKyAg
ICBtX2NsaWVudC0+c2V0Q29udHJvbGxlcihXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIoY29udHJv
bGxlcikpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9uRGVz
dHJveWVkKCkKK3sKKyAgICBtX2NsaWVudC0+Z2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKK30KKwor
dm9pZCBHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2Ns
aWVudC0+c3RhcnRVcGRhdGluZygpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6
OnN0b3BVcGRhdGluZygpCit7CisgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQorCit2
b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGhp
Z2hBY2N1cmFjeSkKK3sKKyAgICBtX2NsaWVudC0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hB
Y2N1cmFjeSk7Cit9CisKK1dlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9u
Q2xpZW50UHJveHk6Omxhc3RQb3NpdGlvbigpCit7CisgICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlv
biB3ZWJQb3NpdGlvbjsKKyAgICBpZiAobV9jbGllbnQtPmxhc3RQb3NpdGlvbih3ZWJQb3NpdGlv
bikpCisgICAgICAgIG1fbGFzdFBvc2l0aW9uID0gd2ViUG9zaXRpb247CisgICAgZWxzZQorICAg
ICAgICBtX2xhc3RQb3NpdGlvbi5jbGVhcigpOworCisgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9u
LmdldCgpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnJlcXVlc3RQZXJtaXNz
aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBtX2NsaWVudC0+
cmVxdWVzdFBlcm1pc3Npb24oV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChnZW9sb2Nh
dGlvbikpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OmNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBtX2Ns
aWVudC0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdChnZW9sb2NhdGlvbikpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VvbG9j
YXRpb25DbGllbnRQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkNDI2ZDU0YjZjODNkZDFlNjgzZTM4M2U3
OTJmMzk5M2M5NGM0M2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dl
b2xvY2F0aW9uQ2xpZW50UHJveHkuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBH
ZW9sb2NhdGlvbkNsaWVudFByb3h5X2gKKyNkZWZpbmUgR2VvbG9jYXRpb25DbGllbnRQcm94eV9o
CisKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeyBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOyB9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQ7CisKK2NsYXNzIEdlb2xvY2F0aW9uQ2xpZW50
UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworcHVibGljOgorICAg
IEdlb2xvY2F0aW9uQ2xpZW50UHJveHkoV2ViR2VvbG9jYXRpb25DbGllbnQqIGNsaWVudCk7Cisg
ICAgfkdlb2xvY2F0aW9uQ2xpZW50UHJveHkoKTsKKyAgICB2b2lkIHNldENvbnRyb2xsZXIoV2Vi
Q29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyICpjb250cm9sbGVyKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGlu
ZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICAvLyBGSVhNRTogVGhl
IFYyIEdlb2xvY2F0aW9uIHNwZWNpZmljYXRpb24gcHJvcG9zZXMgdGhhdCB0aGlzIHByb3BlcnR5
IGlzCisgICAgLy8gcmVuYW1lZC4gU2VlIGh0dHA6Ly93d3cudzMub3JnLzIwMDgvZ2VvbG9jYXRp
b24vdHJhY2svaXNzdWVzLzYKKyAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdlYktpdCB0byByZWZs
ZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KKyAgICAvLyBpcyBwdWJs
aXNoZWQuCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOwor
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9u
Kik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdl
b2xvY2F0aW9uKik7CisKK3ByaXZhdGU6CisgICAgV2ViR2VvbG9jYXRpb25DbGllbnQqIG1fY2xp
ZW50OworICAgIFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3Np
dGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gR2VvbG9jYXRp
b25DbGllbnRQcm94eV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xv
Y2F0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY1MTM0YjA2NWUzMTI5MGMzMTM0OTQ3ODIwZWVk
N2UwYjc1MzczNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2Vv
bG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgorCisjaW5j
bHVkZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJv
ci5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbmNsdWRlICJXZWJHZW9s
b2NhdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3QgV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbiogd2ViUG9zaXRpb24pCit7CisgICAgQVNTRVJUKHdlYlBvc2l0aW9uKTsK
KyAgICBtX2NvbnRyb2xsZXItPnBvc2l0aW9uQ2hhbmdlZChQYXNzUmVmUHRyPFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24+KCp3ZWJQb3NpdGlvbikuZ2V0KCkpOworfQorCit2b2lkIFdlYkdl
b2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JPY2N1cnJlZChjb25zdCBXZWJHZW9sb2NhdGlvbkVy
cm9yKiB3ZWJFcnJvcikKK3sKKyAgICBBU1NFUlQod2ViRXJyb3IpOworICAgIG1fY29udHJvbGxl
ci0+ZXJyb3JPY2N1cnJlZChQYXNzUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uRXJyb3I+KCp3
ZWJFcnJvcikuZ2V0KCkpOworfQorCitXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXIqIFdl
Ykdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fY29udHJvbGxlcjsKK30KKworV2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpvcGVyYXRvciBi
b29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250cm9sbGVyOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0MGMzNTczM2U3NTUzMGUyNTNj
MzYwNzc3YWRjOTc3ZjU3ZmJlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTZWN1cml0eU9yaWdpbiBXZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdl
YlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9wcml2YXRlLT5mcmFtZSgpLT5kb2N1bWVudCgpLT51
cmwoKSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6c2V0SXNB
bGxvd2VkKGJvb2wpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgbV9wcml2
YXRlLT5zZXRJc0FsbG93ZWQodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdDo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCitXZWJH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KFBhc3NSZWZQdHI8R2VvbG9jYXRpb24+IGdlb2xvY2F0aW9uKQorICAgIDogbV9wcml2YXRl
KGdlb2xvY2F0aW9uKQoreworfQorCitXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpv
cGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb24+KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IGM2ZjIyN2VjMmJjNWYxMjkxMTIwNjllNDMzNDIxN2I5ZmM4ODUyZDUu
LmI3MzQ2YWY1ZmFjYjllZGFiMjA4ZmU3MzVhMjgwOGM2YzAyZjllMGQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudFByb3h5LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzREludGVybmFsLmgiCkBAIC0zMDksNiArMzEwLDkgQEAgV2ViVmlld0ltcGw6Oldl
YlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCog
ZGV2VG9vbHMKICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoU3BlZWNoSW5wdXRDbGllbnRJbXBs
OjpjcmVhdGUoY2xpZW50KSkKICNlbmRpZgogICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+
ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDApKQorI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCisgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHkobmV3IEdlb2xvY2F0
aW9uQ2xpZW50UHJveHkoY2xpZW50LT5nZW9sb2NhdGlvbkNsaWVudCgpKSkKKyNlbmRpZgogewog
ICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0
IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMgc3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBt
ZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJlYWRpbmcKQEAgLTMzMiw5ICszMzYsMTYgQEAgV2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNB
Z2VudENsaWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9
IG1fc3BlZWNoSW5wdXRDbGllbnQuZ2V0KCk7CiAjZW5kaWYKICAgICBwYWdlQ2xpZW50cy5kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQo
KTsKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIHBhZ2VDbGllbnRz
Lmdlb2xvY2F0aW9uQ2xpZW50ID0gbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5LmdldCgpOworI2Vu
ZGlmCiAKICAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAKKyNpZiBFTkFC
TEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIG1fZ2VvbG9jYXRpb25DbGllbnRQcm94
eS0+c2V0Q29udHJvbGxlcihtX3BhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpKTsKKyNlbmRp
ZgorCiAgICAgc3RhdGljX2Nhc3Q8QmFja0ZvcndhcmRMaXN0SW1wbCo+KG1fcGFnZS0+YmFja0Zv
cndhcmRMaXN0KCkpLT5zZXRDbGllbnQoJm1fYmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbCk7CiAg
ICAgbV9wYWdlLT5zZXRHcm91cE5hbWUocGFnZUdyb3VwTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAppbmRleCAwMzg4NzcwN2E4N2Q0OWYzZjMwOWZkM2RmODc2NzgzNDIzYTUwZGEx
Li43NTlhNDYzNTNkMzczZGUwMTM4Yjc1OGViY2FlZGI0OTA0NGZjYjdiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC03Myw2ICs3Myw3IEBAIGNsYXNzIEF1dG9GaWxsUG9wdXBNZW51
Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOwogY2xhc3MgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKK2NsYXNzIEdlb2xvY2F0
aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CiBjbGFzcyBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKQEAgLTU1
NSw2ICs1NTYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBlYXJseS4gVGhpcyBtZW1iZXIgaG9sZHMg
b24gdG8gdGhlIEdDM0QgaW4gdGhpcyBjYXNlLgogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRD4gbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEOwogICAgIE93
blB0cjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5PiBtX2RldmljZU9yaWVudGF0aW9uQ2xp
ZW50UHJveHk7CisKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIE93
blB0cjxHZW9sb2NhdGlvbkNsaWVudFByb3h5PiBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHk7Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75692</attachid>
            <date>2010-12-06 07:21:53 -0800</date>
            <delta_ts>2010-12-07 07:06:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45752-20101206152150.patch</filename>
            <type>text/plain</type>
            <size>38826</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDEwZGI5NGFlNWM2NDJjMzgyODMyYzhkZjBhMDMwMDU2YThiYmIyZGQu
LjI4YmRjMzJmMWI1YzA3OGRjOTgxMWIyMDJmZDkxZTk1Zjc4OTMzOTMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDYxIEBACisyMDEwLTEyLTA2ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGNsaWVudCBiYXNlZCBnZW9sb2NhdGlvbiBiaW5k
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3
NTIKKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBuZWNlc3NhcnkgcGx1bWJpbmcgdG8gZXhwb3Nl
IGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiBpbiBDaHJvbWl1bQorICAgICAgICB3ZWJraXQuIFRo
ZSBwbGFuIGlzIHRvIHJlbW92ZSB0aGUgbm9uLWNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiBjb2Rl
IChHZW9sb2NhdGlvblNlcnZpY2UqKQorICAgICAgICBpbiB0aGUgZnV0dXJlLgorCisgICAgICAg
ICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50Ojp+V2ViR2VvbG9j
YXRpb25DbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ29udHJvbGxlcjo6V2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25D
b250cm9sbGVyOjpyZXNldCk6CisgICAgICAgICogcHVibGljL1dlYkdlb2xvY2F0aW9uRXJyb3Iu
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6Omdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lcjo6
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXI6On5XZWJHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVyKToKKyAgICAgICAgKiBwdWJsaWMvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6Omdlb2xvY2F0aW9uQ2xpZW50KToKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RGb3JGcmFtZSk6CisgICAgICAgICogc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6R2VvbG9j
YXRpb25DbGllbnRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJv
eHk6On5HZW9sb2NhdGlvbkNsaWVudFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRp
b25DbGllbnRQcm94eTo6c2V0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0
aW9uQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9uRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6
R2VvbG9jYXRpb25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAg
IChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6Omxhc3RQb3NpdGlvbik6CisgICAgICAg
IChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAqIHNyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIp
OgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OnNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdDo6c2V0SXNBbGxvd2VkKToKKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdENvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lcjo6YWRkKToKKyAgICAgICAgKFdlYkdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXI6OnJlbW92ZSk6CisgICAgICAgIChXZWJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVyOjppbml0KToKKyAgICAgICAgKFdlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXI6OnJlc2V0KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEyLTAzICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByNzMzMDIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDAxYmIwOTI0NTA4NDBk
MDAwZDJlZWEzMDJjOWU2YmE0NjZmMzI3N2IuLmMxYjI3NzVmY2RlODZmZDFjYmI3OWExYjkzYmNm
M2E1ZTc3MjM5ODIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xNzMsNyArMTczLDExIEBACiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJGb250Q2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJG
b3JtRWxlbWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVy
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25FcnJvci5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCcs
CisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Q29udGFpbmVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZS5o
JywKQEAgLTMzOSw2ICszNDMsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZU5ldHdvcmtpbmdDb250ZXh0SW1wbC5o
JywKKyAgICAgICAgICAgICAgICAnc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3BwJywKKyAg
ICAgICAgICAgICAgICAnc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgnLAogICAgICAgICAgICAgICAgICdz
cmMvZ3RrL1dlYkZvbnRJbmZvLmNwcCcsCkBAIC00NDQsNyArNDUwLDEwIEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RnJhbWVJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uRXJyb3IuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXIuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaCcsCkBA
IC02NzEsNyArNjgwLDExIEBACiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAg
ICAgfSwgewogICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFsnZXhjbHVkZScsICdHZW9sb2NhdGlvbkNsaWVudFByb3h5LionXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvbkNsaWVudC4qJ10s
CisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25Db250
cm9sbGVyLionXSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9s
b2NhdGlvbkVycm9yLionXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdX
ZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LionXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvblBvc2l0aW9uLionXSwKICAgICAgICAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1dCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q0YTc1YTUzYWJhY2NjODk3ZTM3
N2FkMDNkYzliMGNiMmZkNWNhYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJHZW9sb2NhdGlvbkNsaWVudF9oCisjZGVmaW5lIFdlYkdlb2xvY2F0aW9uQ2xpZW50
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI7
CitjbGFzcyBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjsKKworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfldlYkdlb2xvY2F0aW9uQ2xpZW50KCkge30KKworICAgIHZpcnR1YWwgdm9p
ZCBzdGFydFVwZGF0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgPSAwOyAvLyBUaGUgY29udHJv
bGxlciBpcyBpbnZhbGlkIGFmdGVyIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkKKyAgICB2aXJ0dWFs
IGJvb2wgbGFzdFBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24mIHdlYlBvc2l0aW9uKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oY29uc3QgV2ViR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVy
bWlzc2lvblJlcXVlc3QoY29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCYpID0g
MDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKGNvbnN0IFdlYkdlb2xvY2F0aW9u
Q29udHJvbGxlciYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViR2VvbG9jYXRpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNkNTQ3MDkzYWZkMTRhNWQw
ZTFmZTY5YTdiMTRlNmZjY2E5NWI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyX2gKKyNkZWZpbmUgV2ViR2VvbG9j
YXRpb25Db250cm9sbGVyX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlcjsgfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsKK2NsYXNzIFdlYkdlb2xvY2F0
aW9uRXJyb3I7CisKKy8vIE5vdGUgdGhhdCB0aGUgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyIGlz
IGludmFsaWQgYWZ0ZXIgdGhlCisvLyBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25E
ZXN0cm95ZWQoKSBoYXMgYmVlbiByZWNlaXZlZC4KK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ29udHJv
bGxlciB7CitwdWJsaWM6CisgICAgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyKCkKKyAgICAgICAg
OiBtX2NvbnRyb2xsZXIoMCkKKyAgICB7CisgICAgfQorCisgICAgV0VCS0lUX0FQSSB2b2lkIHBv
c2l0aW9uQ2hhbmdlZChjb25zdCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uJik7CisgICAgV0VCS0lU
X0FQSSB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgV2ViR2VvbG9jYXRpb25FcnJvciYpOworCisg
ICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBtX2NvbnRyb2xsZXIgPSAwOworICAgIH0K
KworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxl
cihXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXIqIGMpCisgICAgICAgIDogbV9jb250cm9s
bGVyKGMpCisgICAgeworICAgIH0KKyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkNvcmU6Okdl
b2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkVycm9yLmggYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uRXJyb3IuaAppbmRleCBlOTM1NGQzMzNkZDQ4
NmE5YTNiMTM5ODU4MDJkZWYwNjgxNjRlZTAyLi5lY2I3NThjZWIxZDEyY2YyMmM3NzY0NzcxYTYz
MmViMzc0YTEzZDc2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xv
Y2F0aW9uRXJyb3IuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9u
RXJyb3IuaApAQCAtMzEsOSArMzEsMTAgQEAKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEdl
b2xvY2F0aW9uRXJyb3I7IH0KICNlbmRpZgogCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEdl
b2xvY2F0aW9uRXJyb3I7IH0KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0cmlu
ZzsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMxMjc0MGVhMmYyZTViOTYxMWY5Nzc0NWFj
NmZjYTJiMTNjNjdkOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBXZWJH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgor
I2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
R2VvbG9jYXRpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU2VjdXJpdHlP
cmlnaW47CisKKy8vIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgZW5jYXBzdWxhdGVz
IGEgV2ViQ29yZSBHZW9sb2NhdGlvbiBvYmplY3QgYW5kIHJlcHJlc2VudHMKKy8vIGEgcmVxdWVz
dCBmcm9tIFdlYkNvcmUgZm9yIHBlcm1pc3Npb24gdG8gYmUgZGV0ZXJtaW5lZCBmb3IgdGhhdCBH
ZW9sb2NhdGlvbiBvYmplY3QuCisvLyBUaGUgdW5kZXJseWluZyBHZW9sb2NhdGlvbiBvYmplY3Qg
aXMgZ3VhcmFudGVlZCB0byBiZSB2YWxpZCB1bnRpbCB0aGUgaW52b2NhdGlvbiBvZgorLy8gZWl0
aGVyICBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpzZXRJc0FsbG93ZWQgKHJlcXVl
c3QgY29tcGxldGUpIG9yCisvLyBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Y2FuY2VsUGVybWlzc2lv
blJlcXVlc3QgKHJlcXVlc3QgY2FuY2VsbGVkKS4KK2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QgeworcHVibGljOgorICAgIFdFQktJVF9BUEkgV2ViU2VjdXJpdHlPcmlnaW4g
c2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0SXNBbGxvd2Vk
KGJvb2wpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCisgICAg
ICAgIDogbV9wcml2YXRlKGdlb2xvY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJDb3Jl
OjpHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcHJpdmF0ZTsKKyAgICB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpHZW9s
b2NhdGlvbiogbV9wcml2YXRlOworfTsKK30KKworI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVyLmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45OTZmNDMxMWFiZDY3NzY1NWIyZWM4ZmVmMDg5NDMyOTgxM2U4N2YyCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Q29udGFpbmVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lcl9oCisjZGVmaW5lIFdlYkdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXJfaAorCisjaW5jbHVkZSAiV2ViTm9uQ29weWFi
bGUuaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlT3duUHRyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgV2ViR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lclByaXZhdGU7CisKK2NsYXNzIFdlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXIgOiBwdWJsaWMgV2ViTm9uQ29weWFi
bGUgeworcHVibGljOgorICAgIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWlu
ZXIoKSB7IGluaXQoKTsgfQorICAgIH5XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q29u
dGFpbmVyKCkgeyByZXNldCgpOyB9CisKKyAgICBXRUJLSVRfQVBJIGludCBhZGQoY29uc3QgV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Jik7CisgICAgV0VCS0lUX0FQSSBi
b29sIHJlbW92ZShjb25zdCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qm
LCBpbnQmKTsKKyAgICBXRUJLSVRfQVBJIGJvb2wgcmVtb3ZlKGludCwgV2ViS2l0OjpXZWJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Jik7CisKK3ByaXZhdGU6CisgICAgV0VCS0lUX0FQSSB2
b2lkIGluaXQoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKworICAgIFdlYlByaXZh
dGVPd25QdHI8V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lclByaXZhdGU+
IG1fcHJpdmF0ZTsKKyAgICBpbnQgbV9sYXN0SWQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVyX2gKKwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAppbmRleCBkZTczNDMxZTgxZDI2
NmVhNWRkYmQ4ZDUwM2QyYTZkYTA4ZjA0YzZkLi41N2JhMzE0YmUwNTgyYmI4NGFmOTMyYzVlNTE5
NTMxOTM1NDk1NmE1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaApAQCAtMzEsOSArMzEsMTAgQEAKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNs
YXNzIEdlb2xvY2F0aW9uUG9zaXRpb247IH0KICNlbmRpZgogCituYW1lc3BhY2UgV2ViQ29yZSB7
IGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247IH0KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaAppbmRleCA3Y2UxNDgzMzQ5YTViMDAxZDgzMzk3MWRhOGI5ZmU1MDBjYTUwZTM5Li4w
MzNlMTIwNjE2NjljOGIxZDk5YTNhNDY0NmEzNWNmNGY3MTNhYjcyIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBXZWJFeHRlcm5h
bFBvcHVwTWVudTsKIGNsYXNzIFdlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgV2Vi
RmlsZUNob29zZXJDb21wbGV0aW9uOwogY2xhc3MgV2ViRnJhbWU7CitjbGFzcyBXZWJHZW9sb2Nh
dGlvbkNsaWVudDsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZTsKIGNsYXNzIFdlYkltYWdl
OwogY2xhc3MgV2ViSW5wdXRFbGVtZW50OwpAQCAtMzQwLDcgKzM0MSw5IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEdlb2xvY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgLy8gQWNjZXNzIHRoZSBlbWJlZGRlciBBUEkgZm9y
IGdlb2xvY2F0aW9uIHNlcnZpY2VzLgorICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJIGZv
ciAoY2xpZW50LWJhc2VkKSBnZW9sb2NhdGlvbiBjbGllbnQgLgorICAgIHZpcnR1YWwgV2ViR2Vv
bG9jYXRpb25DbGllbnQqIGdlb2xvY2F0aW9uQ2xpZW50KCkgeyByZXR1cm4gMDsgfQorICAgIC8v
IEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJIGZvciAobm9uLWNsaWVudC1iYXNlZCkgZ2VvbG9jYXRp
b24gc2VydmljZXMuCiAgICAgdmlydHVhbCBXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0
aW9uU2VydmljZSgpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIFNwZWVjaCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggN2I2N2VkZWQyMTJiMmQyNzAx
YTlmZTkwZDY0ZjUxM2M5Yjg0YTk1MC4uMjhkNzhkMGM4YWE2MmI5MjMzOGM5ODY0MmJkOTBhZjlm
YjU3YjM2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC03
NzYsMTEgKzc3NiwxMyBAQCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudEltcGw6
Om5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0CiB9CiAjZW5kaWYKIAorLy8gRklYTUU6IFJl
bW92ZSBDaHJvbWVDbGllbnRJbXBsOjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJh
bWUgYW5kIENocm9tZUNsaWVudEltcGw6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RGb3JGcmFtZQorLy8gb25jZSBhbGwgcG9ydHMgaGF2ZSBtb3ZlZCB0byBjbGllbnQtYmFzZWQg
Z2VvbG9jYXRpb24gKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAzNzMgKS4KKy8vIEZvciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24sIHRoZXNlIG1ldGhvZHMg
YXJlIG5vdyBpbXBsZW1lbnRlZCBhcyBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1p
c3Npb24gYW5kIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdC4K
Ky8vIChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxICku
CiB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JG
cmFtZShGcmFtZSogZnJhbWUsIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKIHsKLSNpZiBFTkFC
TEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgQ2xp
ZW50LWJhc2VkIEdlb2xvY2F0aW9uIFBlcm1pc3Npb25zCi0jZWxzZQorI2lmICFFTkFCTEUoQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKiBn
ZW9sb2NhdGlvblNlcnZpY2UgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bSo+KGdlb2xvY2F0aW9uLT5nZXRHZW9sb2NhdGlvblNlcnZpY2UoKSk7CiAgICAgZ2VvbG9jYXRp
b25TZXJ2aWNlLT5nZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoKS0+YXR0YWNoQnJpZGdlSWZOZWVk
ZWQoKTsKICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5nZW9sb2NhdGlvblNlcnZpY2UoKS0+cmVx
dWVzdFBlcm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2Vy
dmljZUJyaWRnZSgpLT5nZXRCcmlkZ2VJZCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOwpA
QCAtNzg5LDkgKzc5MSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jCiAKIHZvaWQgQ2hyb21l
Q2xpZW50SW1wbDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQogewotI2lmIEVOQUJMRShDTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBDbGllbnQtYmFz
ZWQgR2VvbG9jYXRpb24gUGVybWlzc2lvbnMKLSNlbHNlCisjaWYgIUVOQUJMRShDTElFTlRfQkFT
RURfR0VPTE9DQVRJT04pCiAgICAgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qIGdlb2xvY2F0
aW9uU2VydmljZSA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKj4oZ2Vv
bG9jYXRpb24tPmdldEdlb2xvY2F0aW9uU2VydmljZSgpKTsKICAgICBtX3dlYlZpZXctPmNsaWVu
dCgpLT5nZW9sb2NhdGlvblNlcnZpY2UoKS0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShnZW9sb2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpLT5nZXRCcmlk
Z2VJZCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmY5YzNk
NTczMGZjNzBkYjgyNTY2MjAwZDc0ODdiYmM3MDQwOTQxCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmNwcApAQCAtMCwwICsxLDk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ2xp
ZW50UHJveHkuaCIKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiR2VvbG9j
YXRpb25Qb3NpdGlvbi5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24u
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0dlb2xvY2F0aW9uQ2xpZW50UHJveHk6Okdlb2xv
Y2F0aW9uQ2xpZW50UHJveHkoV2ViR2VvbG9jYXRpb25DbGllbnQqIGNsaWVudCkKKyAgICA6IG1f
Y2xpZW50KGNsaWVudCkKK3sKK30KKworR2VvbG9jYXRpb25DbGllbnRQcm94eTo6fkdlb2xvY2F0
aW9uQ2xpZW50UHJveHkoKQoreworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnNl
dENvbnRyb2xsZXIoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyKQor
eworICAgIC8vIFRoZXJlIGFyZSB0ZXN0cyB0aGF0IGNyZWF0ZSBhIHBhZ2Ugd2l0aCBhIG51bGwg
V2ViVmlld0NsaWVudC4gVGhvc2UgdGVzdHMgd29uJ3QKKyAgICAvLyBiZSBkb2luZyBhbnkgR2Vv
bG9jYXRpb24sIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGZvciBudWxsIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50CisgICAgLy8gYXMgdGhpcyBtZXRob2QgaXMgdW5jb25kaXRpb25hbGx5IGludm9rZWQgZnJv
bSB0aGUgV2ViVmlld0ltcGwgY29uc3RydWN0b3IuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjQwCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+c2V0Q29udHJvbGxlcihXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIoY29udHJvbGxl
cikpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9uRGVzdHJv
eWVkKCkKK3sKKyAgICBtX2NsaWVudC0+Z2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKK30KKwordm9p
ZCBHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2NsaWVu
dC0+c3RhcnRVcGRhdGluZygpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnN0
b3BVcGRhdGluZygpCit7CisgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQorCit2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGhpZ2hB
Y2N1cmFjeSkKK3sKKyAgICBtX2NsaWVudC0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1
cmFjeSk7Cit9CisKK1dlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ2xp
ZW50UHJveHk6Omxhc3RQb3NpdGlvbigpCit7CisgICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiB3
ZWJQb3NpdGlvbjsKKyAgICBpZiAobV9jbGllbnQtPmxhc3RQb3NpdGlvbih3ZWJQb3NpdGlvbikp
CisgICAgICAgIG1fbGFzdFBvc2l0aW9uID0gd2ViUG9zaXRpb247CisgICAgZWxzZQorICAgICAg
ICBtX2xhc3RQb3NpdGlvbi5jbGVhcigpOworCisgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdl
dCgpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnJlcXVlc3RQZXJtaXNzaW9u
KFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBtX2NsaWVudC0+cmVx
dWVzdFBlcm1pc3Npb24oV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChnZW9sb2NhdGlv
bikpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OmNhbmNlbFBlcm1pc3Npb25S
ZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBtX2NsaWVu
dC0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dChnZW9sb2NhdGlvbikpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VvbG9jYXRp
b25DbGllbnRQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTc1ZGMwZGMxMzlmOTZjY2VmYzgwMTA5ODg3
MjMzM2Q1ZmRjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xv
Y2F0aW9uQ2xpZW50UHJveHkuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW9s
b2NhdGlvbkNsaWVudFByb3h5X2gKKyNkZWZpbmUgR2VvbG9jYXRpb25DbGllbnRQcm94eV9oCisK
KyNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9u
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudDsKKworY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQ
cm94eSA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAg
R2VvbG9jYXRpb25DbGllbnRQcm94eShXZWJHZW9sb2NhdGlvbkNsaWVudCogY2xpZW50KTsKKyAg
ICB+R2VvbG9jYXRpb25DbGllbnRQcm94eSgpOworICAgIHZvaWQgc2V0Q29udHJvbGxlcihXZWJD
b3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpOworICAgIHZpcnR1YWwgdm9p
ZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5n
KCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKKworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworCitwcml2YXRlOgor
ICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEdlb2xvY2F0aW9uQ2xpZW50UHJveHlfaApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI1NmQzNzUyNWRmMzc0MmViMmNjODlhOWJlYjViYzBiOTU1Yzc2MmQKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlv
blBvc2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25FcnJvci5oIgorI2luY2x1ZGUg
IldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3Np
dGlvbkNoYW5nZWQoY29uc3QgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiYgd2ViUG9zaXRpb24pCit7
CisgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gUGFzc1JlZlB0cjxH
ZW9sb2NhdGlvblBvc2l0aW9uPih3ZWJQb3NpdGlvbik7CisgICAgbV9jb250cm9sbGVyLT5wb3Np
dGlvbkNoYW5nZWQocG9zaXRpb24uZ2V0KCkpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6ZXJyb3JPY2N1cnJlZChjb25zdCBXZWJHZW9sb2NhdGlvbkVycm9yJiB3ZWJFcnJv
cikKK3sKKyAgICBSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4gZXJyb3IgPSBQYXNzUmVmUHRyPEdl
b2xvY2F0aW9uRXJyb3I+KHdlYkVycm9yKTsKKyAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJy
ZWQoZXJyb3IuZ2V0KCkpOworfQorCitHZW9sb2NhdGlvbkNvbnRyb2xsZXIqIFdlYkdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6Y29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udHJv
bGxlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZDhjNTNlMTc1YjllMzY0ZTQ1N2ViMjFmNDIwNGQ1NDM3NDIwZmYzCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKworI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2VjdXJpdHlP
cmlnaW4gV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBj
b25zdAoreworICAgIHJldHVybiBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fcHJpdmF0ZS0+
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3Q6OnNldElzQWxsb3dlZChib29sIGFsbG93ZWQpCit7CisgICAgbV9wcml2
YXRlLT5zZXRJc0FsbG93ZWQoYWxsb3dlZCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lci5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250
YWluZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllZjQwMGE3ZGU1ODIxOTRkMjk5YWI1ZDBhM2IxYmEwMWI3
N2YwOWEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXIuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdENvbnRhaW5lci5oIgorCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIEdlb2xvY2F0aW9uOworfQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
dHlwZWRlZiBIYXNoTWFwPEdlb2xvY2F0aW9uKiwgaW50PiBHZW9sb2NhdGlvbklETWFwOwordHlw
ZWRlZiBIYXNoTWFwPGludCwgR2VvbG9jYXRpb24qPiBJREdlb2xvY2F0aW9uTWFwOworCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250
YWluZXJQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBHZW9sb2NhdGlvbklETWFwIG1fZ2VvbG9jYXRp
b25JZE1hcDsKKyAgICBJREdlb2xvY2F0aW9uTWFwIG1faWRHZW9sb2NhdGlvbk1hcDsKK307Cit9
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKworaW50IFdlYkdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RDb250YWluZXI6OmFkZChjb25zdCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QmIHBlcm1pc3Npb25SZXF1ZXN0KQoreworICAgIEdlb2xvY2F0aW9uKiBn
ZW9sb2NhdGlvbiA9IHBlcm1pc3Npb25SZXF1ZXN0Lmdlb2xvY2F0aW9uKCk7CisgICAgQVNTRVJU
KCFtX3ByaXZhdGUtPm1fZ2VvbG9jYXRpb25JZE1hcC5jb250YWlucyhnZW9sb2NhdGlvbikpOwor
ICAgIGludCBpZCA9ICsrbV9sYXN0SWQ7CisgICAgbV9wcml2YXRlLT5tX2dlb2xvY2F0aW9uSWRN
YXAuYWRkKGdlb2xvY2F0aW9uLCBpZCk7CisgICAgbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRpb25N
YXAuYWRkKGlkLCBnZW9sb2NhdGlvbik7CisgICAgcmV0dXJuIGlkOworfQorCitib29sIFdlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXI6OnJlbW92ZShjb25zdCBXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmIHBlcm1pc3Npb25SZXF1ZXN0LCBpbnQm
IGlkKQoreworICAgIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiA9IHBlcm1pc3Npb25SZXF1ZXN0
Lmdlb2xvY2F0aW9uKCk7CisgICAgR2VvbG9jYXRpb25JRE1hcDo6aXRlcmF0b3IgaXQgPSBtX3By
aXZhdGUtPm1fZ2VvbG9jYXRpb25JZE1hcC5maW5kKGdlb2xvY2F0aW9uKTsKKyAgICBpZiAoaXQg
PT0gbV9wcml2YXRlLT5tX2dlb2xvY2F0aW9uSWRNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZCA9IGl0LT5zZWNvbmQ7CisgICAgbV9wcml2YXRlLT5tX2dlb2xvY2F0aW9u
SWRNYXAucmVtb3ZlKGl0KTsKKyAgICBtX3ByaXZhdGUtPm1faWRHZW9sb2NhdGlvbk1hcC5yZW1v
dmUoaWQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RDb250YWluZXI6OnJlbW92ZShpbnQgaWQsIFdlYktpdDo6V2ViR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCYgcGVybWlzc2lvblJlcXVlc3QpCit7CisgICAgSURHZW9sb2Nh
dGlvbk1hcDo6aXRlcmF0b3IgaXQgPSBtX3ByaXZhdGUtPm1faWRHZW9sb2NhdGlvbk1hcC5maW5k
KGlkKTsKKyAgICBpZiAoaXQgPT0gbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRpb25NYXAuZW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24gPSBp
dC0+c2Vjb25kOworICAgIHBlcm1pc3Npb25SZXF1ZXN0ID0gV2ViR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdChnZW9sb2NhdGlvbik7CisgICAgbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRpb25N
YXAucmVtb3ZlKGl0KTsKKyAgICBtX3ByaXZhdGUtPm1fZ2VvbG9jYXRpb25JZE1hcC5yZW1vdmUo
Z2VvbG9jYXRpb24pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RDb250YWluZXI6OmluaXQoKQoreworICAgIG1fbGFzdElkID0gMDsK
KyAgICBtX3ByaXZhdGUucmVzZXQobmV3IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RD
b250YWluZXJQcml2YXRlKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Q29udGFpbmVyOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KDApOworfQorCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDdiZWMyNTQwOGQ3NWMzMTA5ZWI3Zjhm
NTZhMGQ4MjAwY2ZkOGU5OGEuLjQ5YTNkNzgyMmZiNTNkYTlhYTZiOTUxZmMyNGZlM2YyYjJlM2Ix
NzQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudFByb3h5LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzREludGVybmFsLmgiCkBAIC0zMTAsNiArMzExLDkg
QEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2
VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUoY2xpZW50KSkKICNlbmRpZgogICAgICwgbV9kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDApKQorI2lmIEVO
QUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50
UHJveHkobmV3IEdlb2xvY2F0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5nZW9sb2Nh
dGlvbkNsaWVudCgpIDogMCkpCisjZW5kaWYKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcu
Y3BwIGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pT
IHNwZWNpZmljIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhy
ZWFkaW5nCkBAIC0zMzMsOSArMzM3LDE2IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJW
aWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAg
cGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSBtX3NwZWVjaElucHV0Q2xpZW50LmdldCgp
OwogI2VuZGlmCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2Rl
dmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CisjaWYgRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKKyAgICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNsaWVudCA9IG1fZ2Vv
bG9jYXRpb25DbGllbnRQcm94eS5nZXQoKTsKKyNlbmRpZgogCiAgICAgbV9wYWdlLnNldChuZXcg
UGFnZShwYWdlQ2xpZW50cykpOwogCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKKyAgICBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHktPnNldENvbnRyb2xsZXIobV9wYWdlLT5n
ZW9sb2NhdGlvbkNvbnRyb2xsZXIoKSk7CisjZW5kaWYKKwogICAgIHN0YXRpY19jYXN0PEJhY2tG
b3J3YXJkTGlzdEltcGwqPihtX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+c2V0Q2xpZW50KCZt
X2JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwpOwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBh
Z2VHcm91cE5hbWUpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMDM4ODc3MDdh
ODdkNDlmM2YzMDlmZDNkZjg3Njc4MzQyM2E1MGRhMS4uNzU5YTQ2MzUzZDM3M2RlMDEzOGI3NThl
YmNhZWRiNDkwNDRmY2I3YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNzMsNiAr
NzMsNyBAQCBjbGFzcyBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIENvbnRleHRNZW51
Q2xpZW50SW1wbDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBE
cmFnU2Nyb2xsVGltZXI7CitjbGFzcyBHZW9sb2NhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNz
IFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CkBAIC01NTUsNiArNTU2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gZWFybHkuIFRoaXMgbWVtYmVyIGhvbGRzIG9uIHRvIHRoZSBHQzNEIGluIHRoaXMgY2Fz
ZS4KICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IG1fdGVtcG9yYXJ5T25z
Y3JlZW5HcmFwaGljc0NvbnRleHQzRDsKICAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25DbGll
bnRQcm94eT4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OworCisjaWYgRU5BQkxFKENM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBPd25QdHI8R2VvbG9jYXRpb25DbGllbnRQcm94
eT4gbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75812</attachid>
            <date>2010-12-07 07:06:55 -0800</date>
            <delta_ts>2010-12-08 10:30:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45752-20101207150653.patch</filename>
            <type>text/plain</type>
            <size>39156</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDdjZmQ4ODUzNzdkMzBjZDk0YzFlODZhYWNhMWE5ZGZmZmUwYTFhMWYu
LjE1ODIwNjkzY2NiM2QxNDM1YzY0NGYxZTgyMzYwYmFjMGZkM2E5NDcgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDYxIEBACisyMDEwLTEyLTA2ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGNsaWVudCBiYXNlZCBnZW9sb2NhdGlvbiBiaW5k
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3
NTIKKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBuZWNlc3NhcnkgcGx1bWJpbmcgdG8gZXhwb3Nl
IGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiBpbiBDaHJvbWl1bQorICAgICAgICB3ZWJraXQuIFRo
ZSBwbGFuIGlzIHRvIHJlbW92ZSB0aGUgbm9uLWNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiBjb2Rl
IChHZW9sb2NhdGlvblNlcnZpY2UqKQorICAgICAgICBpbiB0aGUgZnV0dXJlLgorCisgICAgICAg
ICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50Ojp+V2ViR2VvbG9j
YXRpb25DbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ29udHJvbGxlcjo6V2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25D
b250cm9sbGVyOjpyZXNldCk6CisgICAgICAgICogcHVibGljL1dlYkdlb2xvY2F0aW9uRXJyb3Iu
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6Omdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lcjo6
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXI6On5XZWJHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVyKToKKyAgICAgICAgKiBwdWJsaWMvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6Omdlb2xvY2F0aW9uQ2xpZW50KToKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RGb3JGcmFtZSk6CisgICAgICAgICogc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6R2VvbG9j
YXRpb25DbGllbnRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJv
eHk6On5HZW9sb2NhdGlvbkNsaWVudFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRp
b25DbGllbnRQcm94eTo6c2V0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0
aW9uQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9uRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6
R2VvbG9jYXRpb25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAg
IChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6Omxhc3RQb3NpdGlvbik6CisgICAgICAg
IChXZWJLaXQ6Okdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAqIHNyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIp
OgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OnNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdDo6c2V0SXNBbGxvd2VkKToKKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdENvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lcjo6YWRkKToKKyAgICAgICAgKFdlYkdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXI6OnJlbW92ZSk6CisgICAgICAgIChXZWJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVyOjppbml0KToKKyAgICAgICAgKFdlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXI6OnJlc2V0KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEyLTA3ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDAxYmIwOTI0NTA4NDBkMDAwZDJlZWEzMDJj
OWU2YmE0NjZmMzI3N2IuLmMxYjI3NzVmY2RlODZmZDFjYmI3OWExYjkzYmNmM2E1ZTc3MjM5ODIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0xNzMsNyArMTczLDExIEBACiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJGb250Q2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb3JtQ29u
dHJvbEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb3JtRWxlbWVudC5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25FcnJvci5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVyLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZS5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZS5oJywKQEAgLTMzOSw2
ICszNDMsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9GcmFtZU5ldHdvcmtpbmdDb250ZXh0SW1wbC5oJywKKyAgICAgICAg
ICAgICAgICAnc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9H
cmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvZ3RrL1dlYkZv
bnRJbmZvLmNwcCcsCkBAIC00NDQsNyArNDUwLDEwIEBACiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkdlb2xvY2F0aW9uRXJyb3IuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
Ykdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXIuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaCcsCkBAIC02NzEsNyArNjgw
LDExIEBACiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgfSwgewogICAg
ICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIFsn
ZXhjbHVkZScsICdHZW9sb2NhdGlvbkNsaWVudFByb3h5LionXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvbkNsaWVudC4qJ10sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLionXSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvbkVycm9y
LionXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LionXSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVk
ZScsICdXZWJHZW9sb2NhdGlvblBvc2l0aW9uLionXSwKICAgICAgICAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgICAgIH1dCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmYjBjZDg2ZGYxMTE5YTk3YzZlZjZhZjBhYzkxZDJh
OTlhMGZmNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHZW9s
b2NhdGlvbkNsaWVudF9oCisjZGVmaW5lIFdlYkdlb2xvY2F0aW9uQ2xpZW50X2gKKworbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBXZWJH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjsKKworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwg
fldlYkdlb2xvY2F0aW9uQ2xpZW50KCkge30KKworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0
aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBsYXN0UG9z
aXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihjb25zdCBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Jikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChjb25zdCBXZWJH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0JikgPSAwOworCisgICAgLy8gVGhlIGNvbnRyb2xs
ZXIgaXMgdmFsaWQgdW50aWwgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBpcyBpbnZva2VkLgorICAg
IC8vIE93bmVyc2hpcCBvZiB0aGUgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyIGlzIHRyYW5zZmVy
cmVkIHRvIHRoZSBjbGllbnQuCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoV2ViR2Vv
bG9jYXRpb25Db250cm9sbGVyKikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTFjNmYzMWJm
YWQxODc3N2M3YmUzMjZlZGE1MjFiMDI0MWI0NTcwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaAorI2RlZmluZSBX
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBHZW9s
b2NhdGlvbkNvbnRyb2xsZXI7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb247CitjbGFzcyBXZWJHZW9sb2NhdGlvbkVycm9yOworCisvLyBOb3Rl
IHRoYXQgdGhlIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlciBpcyBpbnZhbGlkIGFmdGVyIHRoZQor
Ly8gV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkgaGFzIGJlZW4g
cmVjZWl2ZWQuCitjbGFzcyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViTm9u
Q29weWFibGUgeworcHVibGljOgorICAgIFdFQktJVF9BUEkgdm9pZCBwb3NpdGlvbkNoYW5nZWQo
Y29uc3QgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiYpOworICAgIFdFQktJVF9BUEkgdm9pZCBlcnJv
ck9jY3VycmVkKGNvbnN0IFdlYkdlb2xvY2F0aW9uRXJyb3ImKTsKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorICAgIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlcihXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNvbnRyb2xsZXIqIGMpCisgICAgICAgIDogbV9jb250cm9sbGVyKGMpCisgICAgeworICAg
IH0KKyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIoKSBjb25z
dDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlcigpOwor
CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uQ29udHJv
bGxlcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9u
RXJyb3IuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25FcnJvci5oCmlu
ZGV4IGU5MzU0ZDMzM2RkNDg2YTlhM2IxMzk4NTgwMmRlZjA2ODE2NGVlMDIuLmVjYjc1OGNlYjFk
MTJjZjIyYzc3NjQ3NzFhNjMyZWIzNzRhMTNkNzYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25FcnJvci5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViR2VvbG9jYXRpb25FcnJvci5oCkBAIC0zMSw5ICszMSwxMCBAQAogCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25FcnJvcjsgfQogI2VuZGlmCiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25FcnJvcjsgfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2ViU3RyaW5nOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzEyNzQwZWEy
ZjJlNWI5NjExZjk3NzQ1YWM2ZmNhMmIxM2M2N2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dF9oCisjZGVmaW5lIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBHZW9sb2NhdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKKworLy8gV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCBlbmNhcHN1bGF0ZXMgYSBXZWJDb3JlIEdlb2xvY2F0aW9uIG9iamVjdCBhbmQgcmVwcmVz
ZW50cworLy8gYSByZXF1ZXN0IGZyb20gV2ViQ29yZSBmb3IgcGVybWlzc2lvbiB0byBiZSBkZXRl
cm1pbmVkIGZvciB0aGF0IEdlb2xvY2F0aW9uIG9iamVjdC4KKy8vIFRoZSB1bmRlcmx5aW5nIEdl
b2xvY2F0aW9uIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIHVudGlsIHRoZSBpbnZv
Y2F0aW9uIG9mCisvLyBlaXRoZXIgIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OnNl
dElzQWxsb3dlZCAocmVxdWVzdCBjb21wbGV0ZSkgb3IKKy8vIFdlYkdlb2xvY2F0aW9uQ2xpZW50
OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCAocmVxdWVzdCBjYW5jZWxsZWQpLgorY2xhc3MgV2Vi
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCB7CitwdWJsaWM6CisgICAgV0VCS0lUX0FQSSBX
ZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIFdFQktJVF9BUEkg
dm9pZCBzZXRJc0FsbG93ZWQoYm9vbCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBn
ZW9sb2NhdGlvbikKKyAgICAgICAgOiBtX3ByaXZhdGUoZ2VvbG9jYXRpb24pCisgICAgeworICAg
IH0KKworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbigpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9wcml2YXRlOworICAgIH0KKyNlbmRpZgorCitwcml2YXRlOgor
ICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBtX3ByaXZhdGU7Cit9OworfQorCisjZW5kaWYgLy8g
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXIuaCBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENv
bnRhaW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NmY0MzExYWJkNjc3NjU1YjJlYzhmZWYwODk0MzI5ODEz
ZTg3ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVyX2gKKyNk
ZWZpbmUgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lcl9oCisKKyNpbmNs
dWRlICJXZWJOb25Db3B5YWJsZS5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVPd25QdHIuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3Q7CitjbGFzcyBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVyUHJpdmF0
ZTsKKworY2xhc3MgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lciA6IHB1
YmxpYyBXZWJOb25Db3B5YWJsZSB7CitwdWJsaWM6CisgICAgV2ViR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdENvbnRhaW5lcigpIHsgaW5pdCgpOyB9CisgICAgfldlYkdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RDb250YWluZXIoKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJVF9BUEkg
aW50IGFkZChjb25zdCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmKTsK
KyAgICBXRUJLSVRfQVBJIGJvb2wgcmVtb3ZlKGNvbnN0IFdlYktpdDo6V2ViR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCYsIGludCYpOworICAgIFdFQktJVF9BUEkgYm9vbCByZW1vdmUoaW50
LCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmKTsKKworcHJpdmF0ZToK
KyAgICBXRUJLSVRfQVBJIHZvaWQgaW5pdCgpOworICAgIFdFQktJVF9BUEkgdm9pZCByZXNldCgp
OworCisgICAgV2ViUHJpdmF0ZU93blB0cjxXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Q29udGFpbmVyUHJpdmF0ZT4gbV9wcml2YXRlOworICAgIGludCBtX2xhc3RJZDsKK307CisKK30K
KworI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXJfaAor
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmlu
ZGV4IGRlNzM0MzFlODFkMjY2ZWE1ZGRiZDhkNTAzZDJhNmRhMDhmMDRjNmQuLjU3YmEzMTRiZTA1
ODJiYjg0YWY5MzJjNWU1MTk1MzE5MzU0OTU2YTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0zMSw5ICszMSwxMCBAQAogCiAjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLW5hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsgfQogI2VuZGlmCiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsgfQorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiB7CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDdjZTE0ODMzNDlhNWIwMDFkODMzOTcxZGE4
YjlmZTUwMGNhNTBlMzkuLjAzM2UxMjA2MTY2OWM4YjFkOTlhM2E0NjQ2YTM1Y2Y0ZjcxM2FiNzIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC01Miw2ICs1Miw3IEBA
IGNsYXNzIFdlYkV4dGVybmFsUG9wdXBNZW51OwogY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnVD
bGllbnQ7CiBjbGFzcyBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb247CiBjbGFzcyBXZWJGcmFtZTsK
K2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50OwogY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
OwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJJbnB1dEVsZW1lbnQ7CkBAIC0zNDAsNyArMzQx
LDkgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICAvLyBBY2Nlc3MgdGhl
IGVtYmVkZGVyIEFQSSBmb3IgZ2VvbG9jYXRpb24gc2VydmljZXMuCisgICAgLy8gQWNjZXNzIHRo
ZSBlbWJlZGRlciBBUEkgZm9yIChjbGllbnQtYmFzZWQpIGdlb2xvY2F0aW9uIGNsaWVudCAuCisg
ICAgdmlydHVhbCBXZWJHZW9sb2NhdGlvbkNsaWVudCogZ2VvbG9jYXRpb25DbGllbnQoKSB7IHJl
dHVybiAwOyB9CisgICAgLy8gQWNjZXNzIHRoZSBlbWJlZGRlciBBUEkgZm9yIChub24tY2xpZW50
LWJhc2VkKSBnZW9sb2NhdGlvbiBzZXJ2aWNlcy4KICAgICB2aXJ0dWFsIFdlYkdlb2xvY2F0aW9u
U2VydmljZSogZ2VvbG9jYXRpb25TZXJ2aWNlKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gU3Bl
ZWNoIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA3
YjY3ZWRlZDIxMmIyZDI3MDFhOWZlOTBkNjRmNTEzYzliODRhOTUwLi4yOGQ3OGQwYzhhYTYyYjky
MzM4Yzk4NjQyYmQ5MGFmOWZiNTdiMzZkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAKQEAgLTc3NiwxMSArNzc2LDEzIEBAIE5vdGlmaWNhdGlvblByZXNlbnRlciog
Q2hyb21lQ2xpZW50SW1wbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKIH0KICNlbmRp
ZgogCisvLyBGSVhNRTogUmVtb3ZlIENocm9tZUNsaWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZSBhbmQgQ2hyb21lQ2xpZW50SW1wbDo6Y2FuY2VsR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lCisvLyBvbmNlIGFsbCBwb3J0cyBoYXZlIG1vdmVk
IHRvIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MDM3MyApLgorLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlv
biwgdGhlc2UgbWV0aG9kcyBhcmUgbm93IGltcGxlbWVudGVkIGFzIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50OjpyZXF1ZXN0UGVybWlzc2lvbiBhbmQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBl
cm1pc3Npb25SZXF1ZXN0LgorLy8gKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTAwNjEgKS4KIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0
aW9uKQogewotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgLy8gRklY
TUU6IEltcGxlbWVudCBDbGllbnQtYmFzZWQgR2VvbG9jYXRpb24gUGVybWlzc2lvbnMKLSNlbHNl
CisjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgR2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW0qIGdlb2xvY2F0aW9uU2VydmljZSA9IHN0YXRpY19jYXN0PEdlb2xvY2F0
aW9uU2VydmljZUNocm9taXVtKj4oZ2VvbG9jYXRpb24tPmdldEdlb2xvY2F0aW9uU2VydmljZSgp
KTsKICAgICBnZW9sb2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpLT5h
dHRhY2hCcmlkZ2VJZk5lZWRlZCgpOwogICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmdlb2xvY2F0
aW9uU2VydmljZSgpLT5yZXF1ZXN0UGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9uU2Vydmlj
ZS0+Z2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKCktPmdldEJyaWRnZUlkKCksIGZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKSk7CkBAIC03ODksOSArNzkxLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBs
OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9s
b2MKIAogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCiB7
Ci0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50IENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBQZXJtaXNzaW9ucwotI2Vsc2UKKyNpZiAh
RU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBHZW9sb2NhdGlvblNlcnZpY2VD
aHJvbWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNlID0gc3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25TZXJ2
aWNlQ2hyb21pdW0qPihnZW9sb2NhdGlvbi0+Z2V0R2VvbG9jYXRpb25TZXJ2aWNlKCkpOwogICAg
IG1fd2ViVmlldy0+Y2xpZW50KCktPmdlb2xvY2F0aW9uU2VydmljZSgpLT5jYW5jZWxQZXJtaXNz
aW9uUmVxdWVzdEZvckZyYW1lKGdlb2xvY2F0aW9uU2VydmljZS0+Z2VvbG9jYXRpb25TZXJ2aWNl
QnJpZGdlKCktPmdldEJyaWRnZUlkKCksIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VvbG9jYXRpb25DbGllbnRQcm94
eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjViODgyNDNkNmQzYWE3YWFlZTlhNTYxZjI4NWZhODA3YjA2MmYxODMKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHku
Y3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdlb2xvY2F0aW9uQ2xpZW50UHJveHkuaCIKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgi
CisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCisjaW5j
bHVkZSAiV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYkdl
b2xvY2F0aW9uUG9zaXRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0dlb2xvY2F0aW9u
Q2xpZW50UHJveHk6Okdlb2xvY2F0aW9uQ2xpZW50UHJveHkoV2ViR2VvbG9jYXRpb25DbGllbnQq
IGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKK30KKworR2VvbG9jYXRpb25DbGll
bnRQcm94eTo6fkdlb2xvY2F0aW9uQ2xpZW50UHJveHkoKQoreworfQorCit2b2lkIEdlb2xvY2F0
aW9uQ2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyKiBjb250cm9sbGVyKQoreworICAgIC8vIFRoZXJlIGFyZSB0ZXN0cyB0aGF0IGNyZWF0ZSBh
IHBhZ2Ugd2l0aCBhIG51bGwgV2ViVmlld0NsaWVudC4gVGhvc2UgdGVzdHMgd29uJ3QKKyAgICAv
LyBiZSBkb2luZyBhbnkgR2VvbG9jYXRpb24sIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGZvciBudWxs
IFdlYkdlb2xvY2F0aW9uQ2xpZW50CisgICAgLy8gYXMgdGhpcyBtZXRob2QgaXMgdW5jb25kaXRp
b25hbGx5IGludm9rZWQgZnJvbSB0aGUgV2ViVmlld0ltcGwgY29uc3RydWN0b3IuCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjQwCisgICAgaWYgKG1f
Y2xpZW50KSB7CisgICAgICAgIC8vIE93bmVyc2hpcCBvZiB0aGUgV2ViR2VvbG9jYXRpb25Db250
cm9sbGVyIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBjbGllbnQuCisgICAgICAgIG1fY2xpZW50LT5z
ZXRDb250cm9sbGVyKG5ldyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIoY29udHJvbGxlcikpOwor
ICAgIH0KK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpnZW9sb2NhdGlvbkRlc3Ry
b3llZCgpCit7CisgICAgbV9jbGllbnQtPmdlb2xvY2F0aW9uRGVzdHJveWVkKCk7Cit9CisKK3Zv
aWQgR2VvbG9jYXRpb25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZygpCit7CisgICAgbV9jbGll
bnQtPnN0YXJ0VXBkYXRpbmcoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudFByb3h5Ojpz
dG9wVXBkYXRpbmcoKQoreworICAgIG1fY2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKK30KKwordm9p
ZCBHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBoaWdo
QWNjdXJhY3kpCit7CisgICAgbV9jbGllbnQtPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNj
dXJhY3kpOworfQorCitXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBHZW9sb2NhdGlvbkNs
aWVudFByb3h5OjpsYXN0UG9zaXRpb24oKQoreworICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24g
d2ViUG9zaXRpb247CisgICAgaWYgKG1fY2xpZW50LT5sYXN0UG9zaXRpb24od2ViUG9zaXRpb24p
KQorICAgICAgICBtX2xhc3RQb3NpdGlvbiA9IHdlYlBvc2l0aW9uOworICAgIGVsc2UKKyAgICAg
ICAgbV9sYXN0UG9zaXRpb24uY2xlYXIoKTsKKworICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbi5n
ZXQoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpyZXF1ZXN0UGVybWlzc2lv
bihXZWJDb3JlOjpHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit7CisgICAgbV9jbGllbnQtPnJl
cXVlc3RQZXJtaXNzaW9uKFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoZ2VvbG9jYXRp
b24pKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpjYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit7CisgICAgbV9jbGll
bnQtPmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoZ2VvbG9jYXRpb24pKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0
aW9uQ2xpZW50UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTE3NWRjMGRjMTM5Zjk2Y2NlZmM4MDEwOTg4
NzIzMzNkNWZkYzIyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9HZW9s
b2NhdGlvbkNsaWVudFByb3h5LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2Vv
bG9jYXRpb25DbGllbnRQcm94eV9oCisjZGVmaW5lIEdlb2xvY2F0aW9uQ2xpZW50UHJveHlfaAor
CisjaW5jbHVkZSAiR2VvbG9jYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlv
bkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQ7CisKK2NsYXNzIEdlb2xvY2F0aW9uQ2xpZW50
UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworcHVibGljOgorICAg
IEdlb2xvY2F0aW9uQ2xpZW50UHJveHkoV2ViR2VvbG9jYXRpb25DbGllbnQqIGNsaWVudCk7Cisg
ICAgfkdlb2xvY2F0aW9uQ2xpZW50UHJveHkoKTsKKyAgICB2b2lkIHNldENvbnRyb2xsZXIoV2Vi
Q29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyICpjb250cm9sbGVyKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGlu
ZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6R2VvbG9j
YXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKKworcHJpdmF0ZToK
KyAgICBXZWJHZW9sb2NhdGlvbkNsaWVudCogbV9jbGllbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBHZW9sb2NhdGlvbkNsaWVudFByb3h5X2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYWMwNGI1YzM4ZTBjYTU4MTkwNjlhYmE3NmRiYzE0MjQzNjg2NTYzCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRp
b25Qb3NpdGlvbi5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uRXJyb3IuaCIKKyNpbmNsdWRl
ICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9z
aXRpb25DaGFuZ2VkKGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24mIHdlYlBvc2l0aW9uKQor
eworICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFBhc3NSZWZQdHI8
R2VvbG9jYXRpb25Qb3NpdGlvbj4od2ViUG9zaXRpb24pOworICAgIG1fY29udHJvbGxlci0+cG9z
aXRpb25DaGFuZ2VkKHBvc2l0aW9uLmdldCgpKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmVycm9yT2NjdXJyZWQoY29uc3QgV2ViR2VvbG9jYXRpb25FcnJvciYgd2ViRXJy
b3IpCit7CisgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yID0gUGFzc1JlZlB0cjxH
ZW9sb2NhdGlvbkVycm9yPih3ZWJFcnJvcik7CisgICAgbV9jb250cm9sbGVyLT5lcnJvck9jY3Vy
cmVkKGVycm9yLmdldCgpKTsKK30KKworR2VvbG9jYXRpb25Db250cm9sbGVyKiBXZWJHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRy
b2xsZXI7Cit9CisKKy8vIE5vIGRlZmluaXRpb24gZm9yIHRoZSBwcml2YXRlIFdlYkdlb2xvY2F0
aW9uQ29udHJvbGxlciBjb25zdHJ1Y3Rvci4gV2UgZGVjbGFyZSBpdAorLy8gcHJpdmF0ZSB0byBl
bnN1cmUgdGhhdCBubyBpbnN0YW5jZXMgb2YgdGhlIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlciBj
YW4gYmUgY3JlYXRlZAorLy8gYnkgdGhlIGNvbnN1bWVyIG9mIENocm9taXVtIFdlYktpdC4KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Ykdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDhjNTNlMTc1
YjllMzY0ZTQ1N2ViMjFmNDIwNGQ1NDM3NDIwZmYzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIldlYlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2VjdXJpdHlPcmlnaW4gV2ViR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAg
IHJldHVybiBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fcHJpdmF0ZS0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+dXJsKCkpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3Q6OnNldElzQWxsb3dlZChib29sIGFsbG93ZWQpCit7CisgICAgbV9wcml2YXRlLT5zZXRJc0Fs
bG93ZWQoYWxsb3dlZCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRhaW5lci5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjllZjQwMGE3ZGU1ODIxOTRkMjk5YWI1ZDBhM2IxYmEwMWI3N2YwOWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RDb250YWluZXIuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENvbnRh
aW5lci5oIgorCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdl
b2xvY2F0aW9uOworfQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordHlwZWRlZiBIYXNo
TWFwPEdlb2xvY2F0aW9uKiwgaW50PiBHZW9sb2NhdGlvbklETWFwOwordHlwZWRlZiBIYXNoTWFw
PGludCwgR2VvbG9jYXRpb24qPiBJREdlb2xvY2F0aW9uTWFwOworCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXJQcml2YXRl
IHsKK3B1YmxpYzoKKyAgICBHZW9sb2NhdGlvbklETWFwIG1fZ2VvbG9jYXRpb25JZE1hcDsKKyAg
ICBJREdlb2xvY2F0aW9uTWFwIG1faWRHZW9sb2NhdGlvbk1hcDsKK307Cit9CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKKworaW50IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RD
b250YWluZXI6OmFkZChjb25zdCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QmIHBlcm1pc3Npb25SZXF1ZXN0KQoreworICAgIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiA9
IHBlcm1pc3Npb25SZXF1ZXN0Lmdlb2xvY2F0aW9uKCk7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUt
Pm1fZ2VvbG9jYXRpb25JZE1hcC5jb250YWlucyhnZW9sb2NhdGlvbikpOworICAgIGludCBpZCA9
ICsrbV9sYXN0SWQ7CisgICAgbV9wcml2YXRlLT5tX2dlb2xvY2F0aW9uSWRNYXAuYWRkKGdlb2xv
Y2F0aW9uLCBpZCk7CisgICAgbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRpb25NYXAuYWRkKGlkLCBn
ZW9sb2NhdGlvbik7CisgICAgcmV0dXJuIGlkOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RDb250YWluZXI6OnJlbW92ZShjb25zdCBXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QmIHBlcm1pc3Npb25SZXF1ZXN0LCBpbnQmIGlkKQoreworICAg
IEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiA9IHBlcm1pc3Npb25SZXF1ZXN0Lmdlb2xvY2F0aW9u
KCk7CisgICAgR2VvbG9jYXRpb25JRE1hcDo6aXRlcmF0b3IgaXQgPSBtX3ByaXZhdGUtPm1fZ2Vv
bG9jYXRpb25JZE1hcC5maW5kKGdlb2xvY2F0aW9uKTsKKyAgICBpZiAoaXQgPT0gbV9wcml2YXRl
LT5tX2dlb2xvY2F0aW9uSWRNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZCA9IGl0LT5zZWNvbmQ7CisgICAgbV9wcml2YXRlLT5tX2dlb2xvY2F0aW9uSWRNYXAucmVtb3Zl
KGl0KTsKKyAgICBtX3ByaXZhdGUtPm1faWRHZW9sb2NhdGlvbk1hcC5yZW1vdmUoaWQpOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RD
b250YWluZXI6OnJlbW92ZShpbnQgaWQsIFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCYgcGVybWlzc2lvblJlcXVlc3QpCit7CisgICAgSURHZW9sb2NhdGlvbk1hcDo6aXRl
cmF0b3IgaXQgPSBtX3ByaXZhdGUtPm1faWRHZW9sb2NhdGlvbk1hcC5maW5kKGlkKTsKKyAgICBp
ZiAoaXQgPT0gbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRpb25NYXAuZW5kKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24gPSBpdC0+c2Vjb25kOwor
ICAgIHBlcm1pc3Npb25SZXF1ZXN0ID0gV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChn
ZW9sb2NhdGlvbik7CisgICAgbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRpb25NYXAucmVtb3ZlKGl0
KTsKKyAgICBtX3ByaXZhdGUtPm1fZ2VvbG9jYXRpb25JZE1hcC5yZW1vdmUoZ2VvbG9jYXRpb24p
OworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RDb250YWluZXI6OmluaXQoKQoreworICAgIG1fbGFzdElkID0gMDsKKyAgICBtX3ByaXZh
dGUucmVzZXQobmV3IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDb250YWluZXJQcml2
YXRlKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q29udGFpbmVy
OjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KDApOworfQorCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCmluZGV4IDM1MWMxM2Q0NTEyOTc4MTdmZWJiMzEyMjc3YzViMmRkZjA2
OWIwM2EuLjJmYTE2MzFkOWYzMTRjYmUzMjg0OTc4ZjZlNTY5Yjc5OWYyNzBjMWEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudFByb3h5LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzREludGVybmFsLmgiCkBAIC0zMTAsNiArMzExLDkgQEAgV2ViVmlld0lt
cGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENs
aWVudCogZGV2VG9vbHMKICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoU3BlZWNoSW5wdXRDbGll
bnRJbXBsOjpjcmVhdGUoY2xpZW50KSkKICNlbmRpZgogICAgICwgbV9kZXZpY2VPcmllbnRhdGlv
bkNsaWVudFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNs
aWVudC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDApKQorI2lmIEVOQUJMRShDTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pCisgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHkobmV3IEdl
b2xvY2F0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5nZW9sb2NhdGlvbkNsaWVudCgp
IDogMCkpCisjZW5kaWYKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhl
IHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmljIHdy
YXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBAIC0z
MzMsOSArMzM3LDE2IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBj
bGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgcGFnZUNsaWVudHMu
c3BlZWNoSW5wdXRDbGllbnQgPSBtX3NwZWVjaElucHV0Q2xpZW50LmdldCgpOwogI2VuZGlmCiAg
ICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2RldmljZU9yaWVudGF0
aW9uQ2xpZW50UHJveHkuZ2V0KCk7CisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKKyAgICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNsaWVudCA9IG1fZ2VvbG9jYXRpb25DbGll
bnRQcm94eS5nZXQoKTsKKyNlbmRpZgogCiAgICAgbV9wYWdlLnNldChuZXcgUGFnZShwYWdlQ2xp
ZW50cykpOwogCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBtX2dl
b2xvY2F0aW9uQ2xpZW50UHJveHktPnNldENvbnRyb2xsZXIobV9wYWdlLT5nZW9sb2NhdGlvbkNv
bnRyb2xsZXIoKSk7CisjZW5kaWYKKwogICAgIHN0YXRpY19jYXN0PEJhY2tGb3J3YXJkTGlzdElt
cGwqPihtX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+c2V0Q2xpZW50KCZtX2JhY2tGb3J3YXJk
TGlzdENsaWVudEltcGwpOwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VHcm91cE5hbWUp
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMDM4ODc3MDdhODdkNDlmM2YzMDlm
ZDNkZjg3Njc4MzQyM2E1MGRhMS4uNzU5YTQ2MzUzZDM3M2RlMDEzOGI3NThlYmNhZWRiNDkwNDRm
Y2I3YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNzMsNiArNzMsNyBAQCBjbGFz
cyBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50SW1wbDsK
IGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBEcmFnU2Nyb2xsVGlt
ZXI7CitjbGFzcyBHZW9sb2NhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgU3BlZWNoSW5wdXRDbGll
bnRJbXBsOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldlRvb2xz
QWdlbnRDbGllbnQ7CkBAIC01NTUsNiArNTU2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gZWFybHku
IFRoaXMgbWVtYmVyIGhvbGRzIG9uIHRvIHRoZSBHQzNEIGluIHRoaXMgY2FzZS4KICAgICBSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGlj
c0NvbnRleHQzRDsKICAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eT4gbV9k
ZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OworCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKKyAgICBPd25QdHI8R2VvbG9jYXRpb25DbGllbnRQcm94eT4gbV9nZW9sb2Nh
dGlvbkNsaWVudFByb3h5OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75926</attachid>
            <date>2010-12-08 10:31:02 -0800</date>
            <delta_ts>2010-12-10 07:12:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45752-20101208183059.patch</filename>
            <type>text/plain</type>
            <size>39104</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDU2YjliY2U4NDNlOGJmMGJjYWYyNDU0OTZhYjFjMDE2M2QzYWIzZDIu
LmI5MGVhZDBlOTU0YzI5NmJlYzE4NWZmNTc3MGUzYTQ5Mzc3ZWI1MTcgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDYxIEBACisyMDEwLTEyLTA2ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGNsaWVudCBiYXNlZCBnZW9sb2NhdGlvbiBiaW5k
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3
NTIKKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBuZWNlc3NhcnkgcGx1bWJpbmcgdG8gZXhwb3Nl
IGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiBpbiBDaHJvbWl1bQorICAgICAgICB3ZWJraXQuIFRo
ZSBwbGFuIGlzIHRvIHJlbW92ZSB0aGUgbm9uLWNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiBjb2Rl
IChHZW9sb2NhdGlvblNlcnZpY2UqKQorICAgICAgICBpbiB0aGUgZnV0dXJlLgorCisgICAgICAg
ICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50Ojp+V2ViR2VvbG9j
YXRpb25DbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ29udHJvbGxlcjo6V2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25D
b250cm9sbGVyOjpyZXNldCk6CisgICAgICAgICogcHVibGljL1dlYkdlb2xvY2F0aW9uRXJyb3Iu
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6Omdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpXZWJH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjp+V2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLmg6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0NsaWVudDo6Z2VvbG9jYXRpb25DbGllbnQpOgorICAgICAgICAqIHNyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50SW1wbDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZy
YW1lKToKKyAgICAgICAgKiBzcmMvR2VvbG9jYXRpb25DbGllbnRQcm94eS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpHZW9sb2NhdGlvbkNsaWVu
dFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6fkdlb2xv
Y2F0aW9uQ2xpZW50UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvbkNsaWVudFBy
b3h5OjpzZXRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQ
cm94eTo6Z2VvbG9jYXRpb25EZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlv
bkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRp
b25DbGllbnRQcm94eTo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRp
b25DbGllbnRQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6
R2VvbG9jYXRpb25DbGllbnRQcm94eTo6bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
R2VvbG9jYXRpb25DbGllbnRQcm94eTo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCk6Cisg
ICAgICAgICogc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuaDogQWRkZWQuCisgICAgICAgICog
c3JjL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y29udHJvbGxlcik6CisgICAgICAg
ICogc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6c2VjdXJpdHlPcmln
aW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpz
ZXRJc0FsbG93ZWQpOgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OmFkZCk6CisgICAgICAgIChXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjppbml0KToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjpyZXNldCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMi0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5k
ZXggMDFiYjA5MjQ1MDg0MGQwMDBkMmVlYTMwMmM5ZTZiYTQ2NmYzMjc3Yi4uY2JlYTA0ZDc3NzNl
ODg3OTc3OTUxYmJlOTgxNzhiYzk3OTk2MGI5NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw3ICsx
NzMsMTEgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvbnRDYWNoZS5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZvcm1FbGVtZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViR2VvbG9jYXRpb25DbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2Nh
dGlvbkVycm9yLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xv
Y2F0aW9uU2VydmljZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9u
U2VydmljZUJyaWRnZS5oJywKQEAgLTMzOSw2ICszNDMsOCBAQAogICAgICAgICAgICAgICAgICdz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZU5ldHdvcmtp
bmdDb250ZXh0SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0dlb2xvY2F0aW9uQ2xpZW50
UHJveHkuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHku
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvZ3RrL1dlYkZvbnRJbmZvLmNwcCcsCkBAIC00NDQsNyArNDUwLDEw
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJG
cmFtZUltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uRXJyb3IuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJ
bXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlk
Z2VJbXBsLmgnLApAQCAtNjcxLDcgKzY4MCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCisg
ICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnR2VvbG9jYXRpb25DbGllbnRQcm94
eS4qJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRp
b25DbGllbnQuKiddLAorICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ1dlYkdl
b2xvY2F0aW9uQ29udHJvbGxlci4qJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAnV2ViR2VvbG9jYXRpb25FcnJvci4qJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBb
J2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC4qJ10sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi4qJ10s
CiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9XQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZmIwY2Q4
NmRmMTExOWE5N2M2ZWY2YWYwYWM5MWQyYTk5YTBmZjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViR2VvbG9jYXRpb25DbGllbnRfaAorI2RlZmluZSBXZWJHZW9s
b2NhdGlvbkNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR2VvbG9jYXRp
b25Db250cm9sbGVyOworY2xhc3MgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKK2Ns
YXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CisKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvbkNsaWVudCgpIHt9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFVwZGF0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3ko
Ym9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgbGFzdFBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24mKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oY29uc3QgV2ViR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVy
bWlzc2lvblJlcXVlc3QoY29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCYpID0g
MDsKKworICAgIC8vIFRoZSBjb250cm9sbGVyIGlzIHZhbGlkIHVudGlsIGdlb2xvY2F0aW9uRGVz
dHJveWVkKCkgaXMgaW52b2tlZC4KKyAgICAvLyBPd25lcnNoaXAgb2YgdGhlIFdlYkdlb2xvY2F0
aW9uQ29udHJvbGxlciBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgY2xpZW50LgorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250cm9sbGVyKFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlciopID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25DbGllbnRf
aApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2NkZGQwZjI4Y2VkNDlhNDI1MTcwZDQ1YmYyYjVlZDcxMGJlNGIzMAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25D
b250cm9sbGVyLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR2VvbG9jYXRp
b25Db250cm9sbGVyX2gKKyNkZWZpbmUgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyX2gKKworI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25Db250cm9sbGVyOyB9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3MgV2ViR2Vv
bG9jYXRpb25FcnJvcjsKKworLy8gTm90ZSB0aGF0IHRoZSBXZWJHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIgaXMgaW52YWxpZCBhZnRlciB0aGUKKy8vIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2Nh
dGlvbkRlc3Ryb3llZCgpIGhhcyBiZWVuIHJlY2VpdmVkLgorY2xhc3MgV2ViR2VvbG9jYXRpb25D
b250cm9sbGVyIDogcHVibGljIFdlYk5vbkNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRf
QVBJIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24mKTsK
KyAgICBXRUJLSVRfQVBJIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBXZWJHZW9sb2NhdGlvbkVy
cm9yJik7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJHZW9sb2NhdGlvbkNv
bnRyb2xsZXIoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyKiBjKQorICAgICAgICA6IG1f
cHJpdmF0ZShjKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGU7IH0KKyNlbmRpZgor
Citwcml2YXRlOgorICAgIC8vIE5vIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZGVmYXVsdCBjb25z
dHJ1Y3Rvci4gRGVjbGFyZWQgcHJpdmF0ZSB0byBlbnN1cmUgdGhhdCBubyBpbnN0YW5jZXMKKyAg
ICAvLyBjYW4gYmUgY3JlYXRlZCBieSB0aGUgY29uc3VtZXJzIG9mIENocm9taXVtIFdlYktpdC4K
KyAgICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIoKTsKKworICAgIFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlciogbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkVycm9yLmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkdlb2xvY2F0aW9uRXJyb3IuaAppbmRleCBlOTM1NGQzMzNkZDQ4NmE5YTNiMTM5
ODU4MDJkZWYwNjgxNjRlZTAyLi5lY2I3NThjZWIxZDEyY2YyMmM3NzY0NzcxYTYzMmViMzc0YTEz
ZDc2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uRXJy
b3IuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uRXJyb3IuaApA
QCAtMzEsOSArMzEsMTAgQEAKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEdlb2xvY2F0aW9u
RXJyb3I7IH0KICNlbmRpZgogCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEdlb2xvY2F0aW9u
RXJyb3I7IH0KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0cmluZzsKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIyZjY5ZWIzZGI4MjMxOTY3NmRjN2IxNzQ3ZTA2NzIyNjVk
YzAwOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBXZWJHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
IldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgR2VvbG9jYXRp
b247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CisK
Ky8vIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgZW5jYXBzdWxhdGVzIGEgV2ViQ29y
ZSBHZW9sb2NhdGlvbiBvYmplY3QgYW5kIHJlcHJlc2VudHMKKy8vIGEgcmVxdWVzdCBmcm9tIFdl
YkNvcmUgZm9yIHBlcm1pc3Npb24gdG8gYmUgZGV0ZXJtaW5lZCBmb3IgdGhhdCBHZW9sb2NhdGlv
biBvYmplY3QuCisvLyBUaGUgdW5kZXJseWluZyBHZW9sb2NhdGlvbiBvYmplY3QgaXMgZ3VhcmFu
dGVlZCB0byBiZSB2YWxpZCB1bnRpbCB0aGUgaW52b2NhdGlvbiBvZgorLy8gZWl0aGVyICBXZWJH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpzZXRJc0FsbG93ZWQgKHJlcXVlc3QgY29tcGxl
dGUpIG9yCisvLyBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3Qg
KHJlcXVlc3QgY2FuY2VsbGVkKS4KK2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QgeworcHVibGljOgorICAgIFdFQktJVF9BUEkgV2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlP
cmlnaW4oKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0SXNBbGxvd2VkKGJvb2wpOwor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCisgICAgICAgIDogbV9w
cml2YXRlKGdlb2xvY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpHZW9sb2Nh
dGlvbiogZ2VvbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGU7IH0KKyNlbmRpZgor
Citwcml2YXRlOgorICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBtX3ByaXZhdGU7Cit9OworfQor
CisjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdF9oCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZhMTY0MmJiMjM1YTkwNmE5YmY2ODZlNzJk
OTY0MGE3NDgzNjE2NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9o
CisjZGVmaW5lIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKKworI2lu
Y2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0ci5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdDsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJpdmF0
ZTsKKworLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIG1hcCBiZXR3ZWVuIGludGVnZXIgaWRlbnRp
ZmllcnMgYW5kIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKy8vIGluc3RhbmNlcy4g
VGhlIGludGVuZGVkIHVzYWdlIGlzIHRoYXQgb24gV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVl
c3RQZXJtaXNzaW9uKCksCisvLyB0aGUgaW1wbGVtZW50ZXIgY2FuIGNhbGwgYWRkKCkgdG8gYXNz
b2NpYXRlIGFuIGlkIHdpdGggdGhlIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qgb2Jq
ZWN0LgorLy8gT25jZSB0aGUgcGVybWlzc2lvbiByZXF1ZXN0IGhhcyBiZWVuIGRlY2lkZWQsIHRo
ZSBzZWNvbmQgcmVtb3ZlKCkgbWV0aG9kIGNhbiBiZSB1c2VkIHRvCisvLyBmaW5kIHRoZSByZXF1
ZXN0LiBPbiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QsIHRo
ZSBmaXJzdCByZW1vdmUoKSBtZXRob2Qgd2lsbAorLy8gcmVtb3ZlIHRoZSBhc3NvY2lhdGlvbiB3
aXRoIHRoZSBpZC4KK2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
IDogcHVibGljIFdlYk5vbkNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBXZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgaW5pdCgpOyB9CisgICAgfldlYkdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyByZXNldCgpOyB9CisKKyAgICBXRUJLSVRfQVBJ
IGludCBhZGQoY29uc3QgV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Jik7
CisgICAgV0VCS0lUX0FQSSBib29sIHJlbW92ZShjb25zdCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QmLCBpbnQmKTsKKyAgICBXRUJLSVRfQVBJIGJvb2wgcmVtb3ZlKGlu
dCwgV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Jik7CisKK3ByaXZhdGU6
CisgICAgV0VCS0lUX0FQSSB2b2lkIGluaXQoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQo
KTsKKworICAgIFdlYlByaXZhdGVPd25QdHI8V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcml2YXRlPiBtX3ByaXZhdGU7CisgICAgaW50IG1fbGFzdElkOworfTsKKworfQor
CisjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaAorCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4
IGRlNzM0MzFlODFkMjY2ZWE1ZGRiZDhkNTAzZDJhNmRhMDhmMDRjNmQuLjU3YmEzMTRiZTA1ODJi
Yjg0YWY5MzJjNWU1MTk1MzE5MzU0OTU2YTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0zMSw5ICszMSwxMCBAQAogCiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsgfQogI2VuZGlmCiAKK25hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsgfQorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiB7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDdjZTE0ODMzNDlhNWIwMDFkODMzOTcxZGE4Yjlm
ZTUwMGNhNTBlMzkuLjAzM2UxMjA2MTY2OWM4YjFkOTlhM2E0NjQ2YTM1Y2Y0ZjcxM2FiNzIgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC01Miw2ICs1Miw3IEBAIGNs
YXNzIFdlYkV4dGVybmFsUG9wdXBNZW51OwogY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGll
bnQ7CiBjbGFzcyBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb247CiBjbGFzcyBXZWJGcmFtZTsKK2Ns
YXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50OwogY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlOwog
Y2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJJbnB1dEVsZW1lbnQ7CkBAIC0zNDAsNyArMzQxLDkg
QEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICAvLyBBY2Nlc3MgdGhlIGVt
YmVkZGVyIEFQSSBmb3IgZ2VvbG9jYXRpb24gc2VydmljZXMuCisgICAgLy8gQWNjZXNzIHRoZSBl
bWJlZGRlciBBUEkgZm9yIChjbGllbnQtYmFzZWQpIGdlb2xvY2F0aW9uIGNsaWVudCAuCisgICAg
dmlydHVhbCBXZWJHZW9sb2NhdGlvbkNsaWVudCogZ2VvbG9jYXRpb25DbGllbnQoKSB7IHJldHVy
biAwOyB9CisgICAgLy8gQWNjZXNzIHRoZSBlbWJlZGRlciBBUEkgZm9yIChub24tY2xpZW50LWJh
c2VkKSBnZW9sb2NhdGlvbiBzZXJ2aWNlcy4KICAgICB2aXJ0dWFsIFdlYkdlb2xvY2F0aW9uU2Vy
dmljZSogZ2VvbG9jYXRpb25TZXJ2aWNlKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gU3BlZWNo
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA3YjY3
ZWRlZDIxMmIyZDI3MDFhOWZlOTBkNjRmNTEzYzliODRhOTUwLi4yOGQ3OGQwYzhhYTYyYjkyMzM4
Yzk4NjQyYmQ5MGFmOWZiNTdiMzZkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKQEAgLTc3NiwxMSArNzc2LDEzIEBAIE5vdGlmaWNhdGlvblByZXNlbnRlciogQ2hy
b21lQ2xpZW50SW1wbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKIH0KICNlbmRpZgog
CisvLyBGSVhNRTogUmVtb3ZlIENocm9tZUNsaWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZSBhbmQgQ2hyb21lQ2xpZW50SW1wbDo6Y2FuY2VsR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lCisvLyBvbmNlIGFsbCBwb3J0cyBoYXZlIG1vdmVkIHRv
IGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDM3MyApLgorLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiwg
dGhlc2UgbWV0aG9kcyBhcmUgbm93IGltcGxlbWVudGVkIGFzIFdlYkdlb2xvY2F0aW9uQ2xpZW50
OjpyZXF1ZXN0UGVybWlzc2lvbiBhbmQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0LgorLy8gKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTAwNjEgKS4KIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9u
KQogewotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgLy8gRklYTUU6
IEltcGxlbWVudCBDbGllbnQtYmFzZWQgR2VvbG9jYXRpb24gUGVybWlzc2lvbnMKLSNlbHNlCisj
aWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgR2VvbG9jYXRpb25TZXJ2
aWNlQ2hyb21pdW0qIGdlb2xvY2F0aW9uU2VydmljZSA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9u
U2VydmljZUNocm9taXVtKj4oZ2VvbG9jYXRpb24tPmdldEdlb2xvY2F0aW9uU2VydmljZSgpKTsK
ICAgICBnZW9sb2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpLT5hdHRh
Y2hCcmlkZ2VJZk5lZWRlZCgpOwogICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmdlb2xvY2F0aW9u
U2VydmljZSgpLT5yZXF1ZXN0UGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9uU2VydmljZS0+
Z2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKCktPmdldEJyaWRnZUlkKCksIGZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSk7CkBAIC03ODksOSArNzkxLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpy
ZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2MK
IAogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCiB7Ci0j
aWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBQZXJtaXNzaW9ucwotI2Vsc2UKKyNpZiAhRU5B
QkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBHZW9sb2NhdGlvblNlcnZpY2VDaHJv
bWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNlID0gc3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25TZXJ2aWNl
Q2hyb21pdW0qPihnZW9sb2NhdGlvbi0+Z2V0R2VvbG9jYXRpb25TZXJ2aWNlKCkpOwogICAgIG1f
d2ViVmlldy0+Y2xpZW50KCktPmdlb2xvY2F0aW9uU2VydmljZSgpLT5jYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdEZvckZyYW1lKGdlb2xvY2F0aW9uU2VydmljZS0+Z2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlKCktPmdldEJyaWRnZUlkKCksIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VvbG9jYXRpb25DbGllbnRQcm94eS5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjczYTg2OTBmMjY0NzRjZWU0ZmI1YTFkNGU4YTNmYzg4MTkyMjM5NjkKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3Bw
CkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R2VvbG9jYXRpb25DbGllbnRQcm94eS5oIgorCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKKyNp
bmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25D
bGllbnQuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworR2VvbG9jYXRpb25DbGll
bnRQcm94eTo6R2VvbG9jYXRpb25DbGllbnRQcm94eShXZWJHZW9sb2NhdGlvbkNsaWVudCogY2xp
ZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQoreworfQorCitHZW9sb2NhdGlvbkNsaWVudFBy
b3h5Ojp+R2VvbG9jYXRpb25DbGllbnRQcm94eSgpCit7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25D
bGllbnRQcm94eTo6c2V0Q29udHJvbGxlcihXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIpCit7CisgICAgLy8gV2Ugc3VwcG9ydCB0aGVyZSBub3QgYmVpbmcgYSBjbGll
bnQsIHByb3ZpZGVkIHdlIGRvbid0IGRvIGFueSBHZW9sb2NhdGlvbi4KKyAgICBpZiAobV9jbGll
bnQpIHsKKyAgICAgICAgLy8gT3duZXJzaGlwIG9mIHRoZSBXZWJHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGNsaWVudC4KKyAgICAgICAgbV9jbGllbnQtPnNldENv
bnRyb2xsZXIobmV3IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlcihjb250cm9sbGVyKSk7CisgICAg
fQorfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6Omdlb2xvY2F0aW9uRGVzdHJveWVk
KCkKK3sKKyAgICBtX2NsaWVudC0+Z2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKK30KKwordm9pZCBH
ZW9sb2NhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2NsaWVudC0+
c3RhcnRVcGRhdGluZygpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnN0b3BV
cGRhdGluZygpCit7CisgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQorCit2b2lkIEdl
b2xvY2F0aW9uQ2xpZW50UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGhpZ2hBY2N1
cmFjeSkKK3sKKyAgICBtX2NsaWVudC0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFj
eSk7Cit9CisKK1dlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ2xpZW50
UHJveHk6Omxhc3RQb3NpdGlvbigpCit7CisgICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiB3ZWJQ
b3NpdGlvbjsKKyAgICBpZiAobV9jbGllbnQtPmxhc3RQb3NpdGlvbih3ZWJQb3NpdGlvbikpCisg
ICAgICAgIG1fbGFzdFBvc2l0aW9uID0gd2ViUG9zaXRpb247CisgICAgZWxzZQorICAgICAgICBt
X2xhc3RQb3NpdGlvbi5jbGVhcigpOworCisgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgp
OworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnJlcXVlc3RQZXJtaXNzaW9uKFdl
YkNvcmU6Okdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBtX2NsaWVudC0+cmVxdWVz
dFBlcm1pc3Npb24oV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChnZW9sb2NhdGlvbikp
OworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OmNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBtX2NsaWVudC0+
Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChn
ZW9sb2NhdGlvbikpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0dl
b2xvY2F0aW9uQ2xpZW50UHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VvbG9jYXRpb25D
bGllbnRQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTc1ZGMwZGMxMzlmOTZjY2VmYzgwMTA5ODg3MjMz
M2Q1ZmRjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0
aW9uQ2xpZW50UHJveHkuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW9sb2Nh
dGlvbkNsaWVudFByb3h5X2gKKyNkZWZpbmUgR2VvbG9jYXRpb25DbGllbnRQcm94eV9oCisKKyNp
bmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudDsKKworY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94
eSA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgR2Vv
bG9jYXRpb25DbGllbnRQcm94eShXZWJHZW9sb2NhdGlvbkNsaWVudCogY2xpZW50KTsKKyAgICB+
R2VvbG9jYXRpb25DbGllbnRQcm94eSgpOworICAgIHZvaWQgc2V0Q29udHJvbGxlcihXZWJDb3Jl
OjpHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpOworICAgIHZpcnR1YWwgdm9pZCBn
ZW9sb2NhdGlvbkRlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZpcnR1YWwgdm9pZCBzZXRF
bmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKKworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQ
ZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworCitwcml2YXRlOgorICAg
IFdlYkdlb2xvY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEdlb2xvY2F0aW9uQ2xpZW50UHJveHlfaApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEy
Y2JhYTA5NzM4NzY0NDY4MGM1ZjlkMTIwNDRiNmU1OGI5ZGJhMWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBv
c2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25FcnJvci5oIgorI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlv
bkNoYW5nZWQoY29uc3QgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiYgd2ViUG9zaXRpb24pCit7Cisg
ICAgbV9wcml2YXRlLT5wb3NpdGlvbkNoYW5nZWQoUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBvc2l0
aW9uPih3ZWJQb3NpdGlvbikuZ2V0KCkpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6ZXJyb3JPY2N1cnJlZChjb25zdCBXZWJHZW9sb2NhdGlvbkVycm9yJiB3ZWJFcnJvcikK
K3sKKyAgICBtX3ByaXZhdGUtPmVycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxHZW9sb2NhdGlvbkVy
cm9yPih3ZWJFcnJvcikuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhkOGM1M2UxNzViOWUzNjRlNDU3ZWIyMWY0MjA0ZDU0Mzc0MjBm
ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkdl
b2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJX
ZWJVUkwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJTZWN1cml0eU9yaWdpbiBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpz
ZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobV9wcml2YXRlLT5mcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKSk7Cit9CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsb3dl
ZCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldElzQWxsb3dlZChhbGxvd2VkKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzBlZDljZDcxN2I2ZjRkNWFhNmFm
YWY5NzBiZWI2OTY3OTY4OWQzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTAsMCArMSw5
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIEdlb2xvY2F0aW9uOworfQorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKwordHlwZWRlZiBIYXNoTWFwPEdlb2xvY2F0aW9uKiwgaW50PiBHZW9sb2NhdGlvbklk
TWFwOwordHlwZWRlZiBIYXNoTWFwPGludCwgR2VvbG9jYXRpb24qPiBJZEdlb2xvY2F0aW9uTWFw
OworCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgR2VvbG9jYXRpb25JZE1hcCBtX2dl
b2xvY2F0aW9uSWRNYXA7CisgICAgSWRHZW9sb2NhdGlvbk1hcCBtX2lkR2VvbG9jYXRpb25NYXA7
Cit9OworfQorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitpbnQgV2ViR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmFkZChjb25zdCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QmIHBlcm1pc3Npb25SZXF1ZXN0KQoreworICAgIEdlb2xvY2F0aW9u
KiBnZW9sb2NhdGlvbiA9IHBlcm1pc3Npb25SZXF1ZXN0Lmdlb2xvY2F0aW9uKCk7CisgICAgQVNT
RVJUKCFtX3ByaXZhdGUtPm1fZ2VvbG9jYXRpb25JZE1hcC5jb250YWlucyhnZW9sb2NhdGlvbikp
OworICAgIGludCBpZCA9ICsrbV9sYXN0SWQ7CisgICAgbV9wcml2YXRlLT5tX2dlb2xvY2F0aW9u
SWRNYXAuYWRkKGdlb2xvY2F0aW9uLCBpZCk7CisgICAgbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRp
b25NYXAuYWRkKGlkLCBnZW9sb2NhdGlvbik7CisgICAgcmV0dXJuIGlkOworfQorCitib29sIFdl
Ykdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1vdmUoY29uc3QgV2ViS2l0
OjpXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0JiBwZXJtaXNzaW9uUmVxdWVzdCwgaW50
JiBpZCkKK3sKKyAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24gPSBwZXJtaXNzaW9uUmVxdWVz
dC5nZW9sb2NhdGlvbigpOworICAgIEdlb2xvY2F0aW9uSWRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9w
cml2YXRlLT5tX2dlb2xvY2F0aW9uSWRNYXAuZmluZChnZW9sb2NhdGlvbik7CisgICAgaWYgKGl0
ID09IG1fcHJpdmF0ZS0+bV9nZW9sb2NhdGlvbklkTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWQgPSBpdC0+c2Vjb25kOworICAgIG1fcHJpdmF0ZS0+bV9nZW9sb2NhdGlv
bklkTWFwLnJlbW92ZShpdCk7CisgICAgbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRpb25NYXAucmVt
b3ZlKGlkKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6cmVtb3ZlKGludCBpZCwgV2ViS2l0OjpXZWJHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0JiBwZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyAgICBJZEdlb2xvY2F0
aW9uTWFwOjppdGVyYXRvciBpdCA9IG1fcHJpdmF0ZS0+bV9pZEdlb2xvY2F0aW9uTWFwLmZpbmQo
aWQpOworICAgIGlmIChpdCA9PSBtX3ByaXZhdGUtPm1faWRHZW9sb2NhdGlvbk1hcC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiA9IGl0
LT5zZWNvbmQ7CisgICAgcGVybWlzc2lvblJlcXVlc3QgPSBXZWJHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKKyAgICBtX3ByaXZhdGUtPm1faWRHZW9sb2NhdGlvbk1h
cC5yZW1vdmUoaXQpOworICAgIG1fcHJpdmF0ZS0+bV9nZW9sb2NhdGlvbklkTWFwLnJlbW92ZShn
ZW9sb2NhdGlvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmluaXQoKQoreworICAgIG1fbGFzdElkID0gMDsKKyAg
ICBtX3ByaXZhdGUucmVzZXQobmV3IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJpdmF0ZSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoMCk7Cit9CisKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggN2JlYzI1NDA4ZDc1YzMxMDllYjdmOGY1NmEwZDgy
MDBjZmQ4ZTk4YS4uNDlhM2Q3ODIyZmI1M2RhOWFhNmI5NTFmYzI0ZmUzZjJiMmUzYjE3NCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ2xpZW50UHJveHkuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaCIKQEAgLTMxMCw2ICszMTEsOSBAQCBXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0Fn
ZW50Q2xpZW50KiBkZXZUb29scwogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChTcGVlY2hJbnB1
dENsaWVudEltcGw6OmNyZWF0ZShjbGllbnQpKQogI2VuZGlmCiAgICAgLCBtX2RldmljZU9yaWVu
dGF0aW9uQ2xpZW50UHJveHkobmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xpZW50
ID8gY2xpZW50LT5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDogMCkpCisjaWYgRU5BQkxFKENM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICAsIG1fZ2VvbG9jYXRpb25DbGllbnRQcm94eShu
ZXcgR2VvbG9jYXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmdlb2xvY2F0aW9uQ2xp
ZW50KCkgOiAwKSkKKyNlbmRpZgogewogICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5jcHAgZG9l
cyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMgc3BlY2lm
aWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJlYWRpbmcK
QEAgLTMzMyw5ICszMzcsMTYgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGll
bnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xp
ZW50cy5zcGVlY2hJbnB1dENsaWVudCA9IG1fc3BlZWNoSW5wdXRDbGllbnQuZ2V0KCk7CiAjZW5k
aWYKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRQcm94eS5nZXQoKTsKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xP
Q0FUSU9OKQorICAgIHBhZ2VDbGllbnRzLmdlb2xvY2F0aW9uQ2xpZW50ID0gbV9nZW9sb2NhdGlv
bkNsaWVudFByb3h5LmdldCgpOworI2VuZGlmCiAKICAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKHBh
Z2VDbGllbnRzKSk7CiAKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAg
IG1fZ2VvbG9jYXRpb25DbGllbnRQcm94eS0+c2V0Q29udHJvbGxlcihtX3BhZ2UtPmdlb2xvY2F0
aW9uQ29udHJvbGxlcigpKTsKKyNlbmRpZgorCiAgICAgc3RhdGljX2Nhc3Q8QmFja0ZvcndhcmRM
aXN0SW1wbCo+KG1fcGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpLT5zZXRDbGllbnQoJm1fYmFja0Zv
cndhcmRMaXN0Q2xpZW50SW1wbCk7CiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUocGFnZUdyb3Vw
TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAwMzg4NzcwN2E4N2Q0OWYz
ZjMwOWZkM2RmODc2NzgzNDIzYTUwZGExLi43NTlhNDYzNTNkMzczZGUwMTM4Yjc1OGViY2FlZGI0
OTA0NGZjYjdiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC03Myw2ICs3Myw3IEBA
IGNsYXNzIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJ
bXBsOwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3Jv
bGxUaW1lcjsKK2NsYXNzIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBTcGVlY2hJbnB1
dENsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2
VG9vbHNBZ2VudENsaWVudDsKQEAgLTU1NSw2ICs1NTYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBl
YXJseS4gVGhpcyBtZW1iZXIgaG9sZHMgb24gdG8gdGhlIEdDM0QgaW4gdGhpcyBjYXNlLgogICAg
IFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4gbV90ZW1wb3JhcnlPbnNjcmVlbkdy
YXBoaWNzQ29udGV4dDNEOwogICAgIE93blB0cjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
PiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CisKKyNpZiBFTkFCTEUoQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OKQorICAgIE93blB0cjxHZW9sb2NhdGlvbkNsaWVudFByb3h5PiBtX2dl
b2xvY2F0aW9uQ2xpZW50UHJveHk7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>