<?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>46895</bug_id>
          
          <creation_ts>2010-09-30 06:46:17 -0700</creation_ts>
          <short_desc>[Chromium] Implement mocks for client-based geolocation</short_desc>
          <delta_ts>2010-12-10 10:54:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>45752</dependson>
    
    <dependson>49258</dependson>
    
    <dependson>49735</dependson>
    
    <dependson>50061</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</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>287521</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-09-30 06:46:17 -0700</bug_when>
    <thetext>As part of Bug 45752, implement the mocks so that the test suite can exercise the client-based geolocation code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288174</commentid>
    <comment_count>1</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-10-01 04:59:47 -0700</bug_when>
    <thetext>Note that the Mac port (currently the only user of client-based Geolocation) already has such a mock. It would be great if you could make that mock common code to be shared by all platforms. This is the approach we use for the DeviceOrientation and Speech (see WebCore/platform/mock).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312382</commentid>
    <comment_count>2</comment_count>
      <attachid>74563</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-22 09:38:33 -0800</bug_when>
    <thetext>Created attachment 74563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312386</commentid>
    <comment_count>3</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-22 09:45:10 -0800</bug_when>
    <thetext>From https://bugs.webkit.org/attachment.cgi?id=74382&amp;action=review, Darin Fisher asked:

&gt; what prevents the GeolocationController object from being destroyed before the WebGeolocationController?
&gt; how do you avoid memory errors in that case?
&gt; 
&gt; this seems error prone.

Thanks for reviewing so quickly.

The destructor of WebCore::GeolocationController calls WebCore::GeolocationClient::geolocationDestroyed() on it&apos;s client. This client interface will be implemented by a class called GeolocationClientProxy which will in turn call it&apos;s client&apos;s geolocationDestroyed() method - WebKit::WebGeolocationClient::geolocationDestroyed(). 

Implementers of the client should be aware that after geolocationDestroyed() has been invoked the WebGeolocationController pointer is invalid (and could set their WebGeolocationController member to 0 on receiving geolocationDestroyed()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312387</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-22 09:45:43 -0800</bug_when>
    <thetext>Attachment 74563 did not build on chromium:
Build output: http://queues.webkit.org/results/6277053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312527</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-22 14:30:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; The destructor of WebCore::GeolocationController calls WebCore::GeolocationClient::geolocationDestroyed() on it&apos;s client. This client interface will be implemented by a class called GeolocationClientProxy which will in turn call it&apos;s client&apos;s geolocationDestroyed() method - WebKit::WebGeolocationClient::geolocationDestroyed(). 
&gt; 
&gt; Implementers of the client should be aware that after geolocationDestroyed() has been invoked the WebGeolocationController pointer is invalid (and could set their WebGeolocationController member to 0 on receiving geolocationDestroyed()).

OK, please make sure this is well documented.  I don&apos;t see this spelled out in the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313675</commentid>
    <comment_count>6</comment_count>
      <attachid>74850</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-25 03:52:13 -0800</bug_when>
    <thetext>Created attachment 74850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313746</commentid>
    <comment_count>7</comment_count>
      <attachid>74850</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-11-25 06:59:19 -0800</bug_when>
    <thetext>Comment on attachment 74850
Patch

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

&gt; WebKit/chromium/public/WebGeolocationClientMock.h:51
&gt; +    WEBKIT_API void setMockGeolocationPosition(double latitude, double longitude, double accuracy);

Do you need &apos;MockGeolocation&apos; in these method names?

&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:53
&gt; +void WebGeolocationClientMock::initialize()

Why do you need these initialize() and reset() methods? Doesn&apos;t the OwnPtr take care of deleting the WebCore mock when this object goes away?

&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:72
&gt; +    WebGeolocationError::Error code = WebGeolocationError::ErrorPositionUnavailable;

Is there a particular reason for defaulting to this code?

&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:80
&gt; +    }

what about TIMEOUT?

&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:118
&gt; +    m_clientMock-&gt;setController(controller.controller());

Is this the standard Chromium syntax for getting the WebCore type?

&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:127
&gt; +    webPosition = PassRefPtr&lt;WebCore::GeolocationPosition&gt;(position);

You shouldn&apos;t instantiate locals of type PassRefPtr. Create a local RefPtr and call release() or get() depending on whether you&apos;re passing ownership or passing a raw pointer.

&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:133
&gt; +    m_clientMock-&gt;requestPermission(PassRefPtr&lt;WebCore::Geolocation&gt;(request).get());

Again, this shouldn&apos;t be a PassRefPtr.

&gt; WebKit/chromium/src/WebGeolocationServiceMock.cpp:-47
&gt; -// move to another class and remove WebGeolocationService*.

Were these methods being called from anywhere?

&gt; WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp:586
&gt; +    if (!m_webGeolocationClientMock.get())

Don&apos;t need .get() for boolean test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313799</commentid>
    <comment_count>8</comment_count>
      <attachid>74850</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-25 09:16:44 -0800</bug_when>
    <thetext>Comment on attachment 74850
Patch

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

Thanks for a review. Patch is forthcoming. There are some points to do with PassRefPtr that I hope to get clarification on.

&gt;&gt; WebKit/chromium/public/WebGeolocationClientMock.h:51
&gt;&gt; +    WEBKIT_API void setMockGeolocationPosition(double latitude, double longitude, double accuracy);
&gt; 
&gt; Do you need &apos;MockGeolocation&apos; in these method names?

No, will remove. I think that perhaps they were called this way because of the name of the LayoutTestController method.

&gt;&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:53
&gt;&gt; +void WebGeolocationClientMock::initialize()
&gt; 
&gt; Why do you need these initialize() and reset() methods? Doesn&apos;t the OwnPtr take care of deleting the WebCore mock when this object goes away?

As I understand it, for the shared libraries to work correctly, anything in the implementation (src) file needs to be WEBKIT_API or WEBKIT_PRIVATE, otherwise it needs to be inline in the header. Since the constructor is for public use, it needs to be inline and call a WEBKIT_API method, initialize(). I believe same story with the destructor (see WebNode). Darin, please comment.

&gt;&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:72
&gt;&gt; +    WebGeolocationError::Error code = WebGeolocationError::ErrorPositionUnavailable;
&gt; 
&gt; Is there a particular reason for defaulting to this code?

An alternative would be not to set it, and add an ASSERT / NOTREACHED in the default case of the switch. Would this be preferable?

&gt;&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:80
&gt;&gt; +    }
&gt; 
&gt; what about TIMEOUT?

No tests call layoutTestController.setMockGeolocationError(3), which would be timeout. Furthermore, there is no corresponding error code in WebCore::GeolocationError for timeout (only PermissionDenied and PositionUnavailable).

&gt;&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:118
&gt;&gt; +    m_clientMock-&gt;setController(controller.controller());
&gt; 
&gt; Is this the standard Chromium syntax for getting the WebCore type?

In many cases the underlying webcore type is got at by casting to a PassRefPtr. However, in this case, the WebCore::GeolocationController is not ref-counted. I followed the pattern in WebDeviceOrientationController. Darin, please comment.

&gt;&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:127
&gt;&gt; +    webPosition = PassRefPtr&lt;WebCore::GeolocationPosition&gt;(position);
&gt; 
&gt; You shouldn&apos;t instantiate locals of type PassRefPtr. Create a local RefPtr and call release() or get() depending on whether you&apos;re passing ownership or passing a raw pointer.

This appears to be an exception to the normal rules, although I could be misunderstanding things. Searching for &quot;PassRefPtr&lt;Node&gt;(&quot; shows some examples where this is used to convert between WebKit and WebCore types. Darin, please comment.

&gt;&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:133
&gt;&gt; +    m_clientMock-&gt;requestPermission(PassRefPtr&lt;WebCore::Geolocation&gt;(request).get());
&gt; 
&gt; Again, this shouldn&apos;t be a PassRefPtr.

Will try to get clarification on this. Generally I agree with your statement about passing ownership, given WebKit&apos;s guidelines, but I don&apos;t understand why a lot of existing code that uses this technique would not also then be violating those guidelines.

&gt;&gt; WebKit/chromium/src/WebGeolocationServiceMock.cpp:-47
&gt;&gt; -// move to another class and remove WebGeolocationService*.
&gt; 
&gt; Were these methods being called from anywhere?

Yes, from LayoutTestController.

&gt;&gt; WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp:586
&gt;&gt; +    if (!m_webGeolocationClientMock.get())
&gt; 
&gt; Don&apos;t need .get() for boolean test

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313948</commentid>
    <comment_count>9</comment_count>
      <attachid>74915</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-26 04:03:14 -0800</bug_when>
    <thetext>Created attachment 74915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314233</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-28 15:08:02 -0800</bug_when>
    <thetext>Attachment 74915 did not build on chromium:
Build output: http://queues.webkit.org/results/6407082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314445</commentid>
    <comment_count>11</comment_count>
      <attachid>74915</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-29 08:50:57 -0800</bug_when>
    <thetext>Comment on attachment 74915
Patch

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

What is the master plan for ENABLE_CLIENT_BASED_GEOLOCATION?  Will we be
deleting the &quot;else&quot; code in the near future?

&gt; WebKit/chromium/public/WebGeolocationClientMock.h:70
&gt; +    WEBKIT_API void initialize();

nit: looks like &apos;initialize&apos; does not need to be exported from webkit.dll since
it is only called by a private constructor.  i&apos;d probably just get rid of the
initialize method, and move its implementation into the constructor.

&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:54
&gt; +void WebGeolocationClientMock::initialize()

nit: please implement the methods in the same order in which they are declared
in the header file.

&gt; WebKitTools/DumpRenderTree/chromium/WebViewHost.h:321
&gt; +    OwnPtr&lt;WebKit::WebGeolocationClientMock&gt; m_webGeolocationClientMock;

nit: for consumers of the WebKit API, it is conventional to drop the &quot;web&quot; prefix
on variable names.  that&apos;s why we have m_geolocationServiceMock and not
m_webGeolocationServiceMock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314942</commentid>
    <comment_count>12</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-30 03:55:51 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 74915 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74915&amp;action=review
&gt; 
&gt; What is the master plan for ENABLE_CLIENT_BASED_GEOLOCATION?  Will we be
&gt; deleting the &quot;else&quot; code in the near future?

The plan is eventually to remove the non-client based geolocation once all the ports have switched to using client based geolocation. The master bug is 
https://bugs.webkit.org/show_bug.cgi?id=40373 I&apos;m not sure of the timescales for all the ports, but I hope to finish Chromium in the near feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315121</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-30 09:57:16 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 74915 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74915&amp;action=review
&gt; &gt; 
&gt; &gt; What is the master plan for ENABLE_CLIENT_BASED_GEOLOCATION?  Will we be
&gt; &gt; deleting the &quot;else&quot; code in the near future?
&gt; 
&gt; The plan is eventually to remove the non-client based geolocation once all the ports have switched to using client based geolocation. The master bug is 
&gt; https://bugs.webkit.org/show_bug.cgi?id=40373 I&apos;m not sure of the timescales for all the ports, but I hope to finish Chromium in the near feature.

OK, thanks for the info/link.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317610</commentid>
    <comment_count>14</comment_count>
      <attachid>75694</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-06 07:25:13 -0800</bug_when>
    <thetext>Created attachment 75694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317612</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-06 07:30:40 -0800</bug_when>
    <thetext>Attachment 75694 did not build on chromium:
Build output: http://queues.webkit.org/results/6790061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318172</commentid>
    <comment_count>16</comment_count>
      <attachid>75813</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-07 07:09:48 -0800</bug_when>
    <thetext>Created attachment 75813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318173</commentid>
    <comment_count>17</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-07 07:11:17 -0800</bug_when>
    <thetext>Updated the patch because WebGeolocationController has become a heap-only object.

(In reply to comment #16)
&gt; Created an attachment (id=75813) [details]
&gt; Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318230</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 09:08:34 -0800</bug_when>
    <thetext>Attachment 75813 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>318283</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 10:09:19 -0800</bug_when>
    <thetext>Attachment 75813 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>318333</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 11:10:28 -0800</bug_when>
    <thetext>Attachment 75813 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>318382</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 12:11:53 -0800</bug_when>
    <thetext>Attachment 75813 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>318388</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 12:20:08 -0800</bug_when>
    <thetext>Attachment 75813 did not build on chromium:
Build output: http://queues.webkit.org/results/6861054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318604</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:39:20 -0800</bug_when>
    <thetext>Attachment 75813 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>318833</commentid>
    <comment_count>24</comment_count>
      <attachid>75813</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-08 09:38:49 -0800</bug_when>
    <thetext>Comment on attachment 75813
Patch

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

LGTM

&gt; WebKit/chromium/src/WebGeolocationClientMock.cpp:63
&gt; +    WebGeolocationError::Error code = WebGeolocationError::ErrorPositionUnavailable;

I&apos;d prefer an assert to a default value for test code, but it&apos;s really just personal preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318871</commentid>
    <comment_count>25</comment_count>
      <attachid>75927</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-08 10:32:23 -0800</bug_when>
    <thetext>Created attachment 75927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318967</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-08 13:13:50 -0800</bug_when>
    <thetext>Attachment 75927 did not build on chromium:
Build output: http://queues.webkit.org/results/6815125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320131</commentid>
    <comment_count>27</comment_count>
      <attachid>75927</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-10 06:59:22 -0800</bug_when>
    <thetext>Comment on attachment 75927
Patch

This looks ready to go. If you re-upload the patch once the fix for Bug 45752 is in place to check the try-bots, I can r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320151</commentid>
    <comment_count>28</comment_count>
      <attachid>76198</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-10 07:37:33 -0800</bug_when>
    <thetext>Created attachment 76198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320170</commentid>
    <comment_count>29</comment_count>
      <attachid>76198</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-10 08:22:35 -0800</bug_when>
    <thetext>Comment on attachment 76198
Patch

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

&gt; WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp:48
&gt; +#else

Is this guard needed?

&gt; WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp:48
&gt; +#else

Is this guard needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320181</commentid>
    <comment_count>30</comment_count>
      <attachid>76198</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-10 08:35:57 -0800</bug_when>
    <thetext>Comment on attachment 76198
Patch

The guards will be coming out once we switch over to client-based geolocation in Chromium so, although we might be able to get away without them, they could be actually be useful as a reminder as to what depends on client geolocation and what doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320183</commentid>
    <comment_count>31</comment_count>
      <attachid>76198</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-10 08:38:11 -0800</bug_when>
    <thetext>Comment on attachment 76198
Patch

Rejecting attachment 76198 from commit-queue.

jknotten@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in WebKitTools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320249</commentid>
    <comment_count>32</comment_count>
      <attachid>76198</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-10 10:54:21 -0800</bug_when>
    <thetext>Comment on attachment 76198
Patch

Clearing flags on attachment: 76198

Committed r73745: &lt;http://trac.webkit.org/changeset/73745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320251</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-10 10:54:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74563</attachid>
            <date>2010-11-22 09:38:33 -0800</date>
            <delta_ts>2010-11-25 03:52:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46895-20101122173831.patch</filename>
            <type>text/plain</type>
            <size>26468</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDI5ZDE5OWM5Y2RkM2ViZDExOTQwNWQxMTYyMmMzYTM0ZGFiNTc1MjIu
LmYwZTk5ODMyYjZhNmVkMWY0NzAxZmJkYmQyMDEyZmFlM2NhMzU5N2UgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ5IEBACisyMDEwLTExLTIyICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCBtb2NrcyBmb3IgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uIGluIGNo
cm9taXVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDY4OTUKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkdlb2xv
Y2F0aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNs
aWVudDo6fldlYkdlb2xvY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bkNsaWVudE1vY2s6On5XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6Cisg
ICAgICAgICogcHVibGljL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpXZWJHZW9sb2NhdGlvbkNvbnRy
b2xsZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdDbGllbnQ6Omdlb2xvY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBzcmMvR2Vv
bG9jYXRpb25DbGllbnRQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpHZW9sb2Nh
dGlvbkNsaWVudFByb3h5OjpHZW9sb2NhdGlvbkNsaWVudFByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6fkdlb2xvY2F0aW9uQ2xpZW50UHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpzZXRDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6Z2VvbG9jYXRpb25EZXN0cm95
ZWQpOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6c3RvcFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6c2V0RW5hYmxl
SGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25DbGllbnRQcm94eTo6
bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBzcmMvR2VvbG9jYXRpb25DbGllbnRQcm94eS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldE1v
Y2tHZW9sb2NhdGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGll
bnRNb2NrOjpyZXNldE1vY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2s6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9uKToKKyAgICAg
ICAgKiBzcmMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25DaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjplcnJvck9jY3VycmVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpjb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpvcGVyYXRvciBib29sKToK
KwogMjAxMC0xMS0yMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBOb3QgcmV2aWV3ZWQuIFBhcnRpYWxseSByb2xsIG91dCByNzIyODIuCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCmluZGV4IGQ1ZDkzN2E0MDQ2MGYxZTNhMWNkNDJhNzY4N2FiZGZhOTAyOGJjMjQuLmY0MWZk
ZTcyYTJkMmRiYTg2YTgxMGQ4NjJmOTM5NWE0Mjk2ZTI1ZGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0x
NzMsNiArMTczLDkgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvbnRDYWNoZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkZvcm1FbGVtZW50LmgnLAorICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9s
b2NhdGlvblNlcnZpY2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlv
blNlcnZpY2VCcmlkZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrLmgnLApAQCAtMzM1LDYgKzMzOCw4IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTmV0d29ya2lu
Z0NvbnRleHRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25DbGllbnRQ
cm94eS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25DbGllbnRQcm94eS5o
JywKICAgICAgICAgICAgICAgICAnc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9ndGsvV2ViRm9udEluZm8uY3BwJywKQEAgLTQ0MCw2ICs0NDUsOCBA
QAogICAgICAgICAgICAgICAgICdzcmMvV2ViRm9ybUVsZW1lbnQuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkZyYW1lSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJh
bWVJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUlt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNw
cCcsCkBAIC02NjQsNiArNjcxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAnV2ViR2VvbG9jYXRpb25TZXJ2aWNlLiokJ10sCiAgICAgICAgICAgICAgICAgICAgICAg
ICBbJ2luY2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay4qJ10sCiAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgICAgICAn
c291cmNlcy8nOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2Vv
bG9jYXRpb25DbGllbnQuKiddCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAn
V2ViR2VvbG9jYXRpb25Db250cm9sbGVyLionXSwKKyAgICAgICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgXSwKICAgICAgICAgfSwKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTYzMjQz
NjQzZGFiMjc4MWQwMzI1ODE4NjIzZWQzMGQyYzJjMjE4Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkdlb2xvY2F0aW9uQ2xpZW50X2gKKyNkZWZpbmUgV2ViR2Vv
bG9jYXRpb25DbGllbnRfaAorCisKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZW9s
b2NhdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOworCitjbGFz
cyBXZWJHZW9sb2NhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR2VvbG9j
YXRpb25DbGllbnQoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9j
YXRpb25EZXN0cm95ZWQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGxhc3RQb3NpdGlvbihXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uJiB3ZWJQb3NpdGlvbikgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHNldENvbnRyb2xsZXIoY29uc3QgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyJikgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNsaWVu
dF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1v
Y2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZDRhNWJlYzdiNjAxYTFmZGI1Y2NmOTI3YTMzNGVjMjU3MjdmNDA0
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlv
bkNsaWVudE1vY2suaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEw
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR2VvbG9jYXRpb25DbGll
bnRNb2NrX2gKKyNkZWZpbmUgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrX2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViUHJpdmF0ZU93blB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHZW9s
b2NhdGlvbkNsaWVudE1vY2s7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjsKK2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrIDogcHVibGljIFdlYkdlb2xvY2F0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2sqIGNyZWF0ZSgpOwor
ICAgIH5XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2soKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJ
VF9BUEkgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNl
dE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVz
c2FnZSk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0TW9jaygpOworCisgICAgdmlydHVhbCB2
b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKKworICAgIHZpcnR1
YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
cm9sbGVyKGNvbnN0IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlciYpOworCisgICAgdmlydHVhbCBi
b29sIGxhc3RQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uJiB3ZWJQb3NpdGlvbik7CisK
K3ByaXZhdGU6CisgICAgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKCkgeyBpbml0aWFsaXplKCk7
IH0KKyAgICBXRUJLSVRfQVBJIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIFdFQktJVF9BUEkgdm9p
ZCByZXNldCgpOworCisgICAgV2ViUHJpdmF0ZU93blB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbkNs
aWVudE1vY2s+IG1fY2xpZW50TW9jazsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkdlb2xvY2F0
aW9uQ2xpZW50TW9ja19oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdl
b2xvY2F0aW9uQ29udHJvbGxlci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTg3NzRkOWJhYzg1ZmY3NmRjNDA1MTU0NjBh
Y2RiNzVkNzdjYjMxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaAorI2RlZmluZSBXZWJHZW9sb2NhdGlvbkNvbnRy
b2xsZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsg
Y2xhc3MgR2VvbG9jYXRpb25Db250cm9sbGVyOyB9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3MgV2ViR2VvbG9jYXRpb25FcnJvcjsK
KworY2xhc3MgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBXZWJHZW9s
b2NhdGlvbkNvbnRyb2xsZXIoKQorICAgICAgICA6IG1fY29udHJvbGxlcigwKQorICAgIHsKKyAg
ICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24qKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgZXJyb3JPY2N1cnJlZChjb25z
dCBXZWJHZW9sb2NhdGlvbkVycm9yKik7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVy
KiBjKQorICAgICAgICA6IG1fY29udHJvbGxlcihjKQorICAgIHsKKyAgICB9CisgICAgV2ViQ29y
ZTo6R2VvbG9jYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3Q7CisgICAgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDdjZTE0ODMzNDlhNWIwMDFkODMzOTcxZGE4Yjlm
ZTUwMGNhNTBlMzkuLjE5MjE3ODM0MGE0YTUzNjZhYWRlMTk4NDMwNjVkMjhmYzExNGFjNjQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC01Miw2ICs1Miw3IEBAIGNs
YXNzIFdlYkV4dGVybmFsUG9wdXBNZW51OwogY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGll
bnQ7CiBjbGFzcyBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb247CiBjbGFzcyBXZWJGcmFtZTsKK2Ns
YXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50OwogY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlOwog
Y2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJJbnB1dEVsZW1lbnQ7CkBAIC0zNDAsNiArMzQxLDgg
QEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKyAgICAvLyBBY2Nlc3MgdGhlIGVt
YmVkZGVyIEFQSSBmb3IgKGNsaWVudC1iYXNlZCkgZ2VvbG9jYXRpb24gY2xpZW50IC4KKyAgICB2
aXJ0dWFsIFdlYkdlb2xvY2F0aW9uQ2xpZW50KiBnZW9sb2NhdGlvbkNsaWVudCgpIHsgcmV0dXJu
IDA7IH0KICAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgZ2VvbG9jYXRpb24gc2Vy
dmljZXMuCiAgICAgdmlydHVhbCBXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2Vy
dmljZSgpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9H
ZW9sb2NhdGlvbkNsaWVudFByb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VvbG9jYXRp
b25DbGllbnRQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMzZDFkNzJkMWJlOWIxNjk1ZGM2ZGY3NmE2
YmM5MTJmYmY4N2IxYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR2Vv
bG9jYXRpb25DbGllbnRQcm94eS5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudFByb3h5LmgiCisKKyNpbmNs
dWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitHZW9sb2Nh
dGlvbkNsaWVudFByb3h5OjpHZW9sb2NhdGlvbkNsaWVudFByb3h5KFdlYkdlb2xvY2F0aW9uQ2xp
ZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK0dlb2xvY2F0aW9u
Q2xpZW50UHJveHk6On5HZW9sb2NhdGlvbkNsaWVudFByb3h5KCkKK3sKK30KKwordm9pZCBHZW9s
b2NhdGlvbkNsaWVudFByb3h5OjpzZXRDb250cm9sbGVyKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29u
dHJvbGxlciogY29udHJvbGxlcikKK3sKKyAgICBtX2NsaWVudC0+c2V0Q29udHJvbGxlcihXZWJH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIoY29udHJvbGxlcikpOworfQorCit2b2lkIEdlb2xvY2F0aW9u
Q2xpZW50UHJveHk6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKK3sKKyAgICBtX2NsaWVudC0+Z2Vv
bG9jYXRpb25EZXN0cm95ZWQoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudFByb3h5Ojpz
dGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2NsaWVudC0+c3RhcnRVcGRhdGluZygpOworfQorCit2
b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnN0b3BVcGRhdGluZygpCit7CisgICAgbV9jbGll
bnQtPnN0b3BVcGRhdGluZygpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6OnNl
dEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGhpZ2hBY2N1cmFjeSkKK3sKKyAgICBtX2NsaWVudC0+
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeSk7Cit9CisKK1dlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk6Omxhc3RQb3NpdGlvbigpCit7
CisgICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiB3ZWJQb3NpdGlvbjsKKyAgICBpZiAobV9jbGll
bnQtPmxhc3RQb3NpdGlvbih3ZWJQb3NpdGlvbikpCisgICAgICAgIG1fbGFzdFBvc2l0aW9uID0g
d2ViUG9zaXRpb247CisgICAgZWxzZQorICAgICAgICBtX2xhc3RQb3NpdGlvbi5jbGVhcigpOwor
CisgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworfQorCit9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuaCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvR2VvbG9jYXRpb25DbGllbnRQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWRmMmFkYzMy
NDgzOGEzYTc4NjI4YmQzZTU4YzExMmYxOGQyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuaApAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBHZW9sb2NhdGlvbkNsaWVudFByb3h5X2gKKyNkZWZpbmUgR2VvbG9jYXRp
b25DbGllbnRQcm94eV9oCisKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1
ZGUgIldlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOyB9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQ7CisKK2NsYXNzIEdl
b2xvY2F0aW9uQ2xpZW50UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQg
eworcHVibGljOgorICAgIEdlb2xvY2F0aW9uQ2xpZW50UHJveHkoV2ViR2VvbG9jYXRpb25DbGll
bnQqIGNsaWVudCk7CisgICAgfkdlb2xvY2F0aW9uQ2xpZW50UHJveHkoKTsKKyAgICB2b2lkIHNl
dENvbnRyb2xsZXIoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyICpjb250cm9sbGVyKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRVcGRhdGluZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAg
ICAvLyBGSVhNRTogVGhlIFYyIEdlb2xvY2F0aW9uIHNwZWNpZmljYXRpb24gcHJvcG9zZXMgdGhh
dCB0aGlzIHByb3BlcnR5IGlzCisgICAgLy8gcmVuYW1lZC4gU2VlIGh0dHA6Ly93d3cudzMub3Jn
LzIwMDgvZ2VvbG9jYXRpb24vdHJhY2svaXNzdWVzLzYKKyAgICAvLyBXZSBzaG91bGQgdXBkYXRl
IFdlYktpdCB0byByZWZsZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24K
KyAgICAvLyBpcyBwdWJsaXNoZWQuCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1
cmFjeShib29sKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxh
c3RQb3NpdGlvbigpOworCitwcml2YXRlOgorICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KiBtX2Ns
aWVudDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9z
aXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEdlb2xvY2F0
aW9uQ2xpZW50UHJveHlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlv
bkNsaWVudE1vY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzZWMxNjNmZGQzZTk3MmMwYzAyZGNlMjViMGI4
MjFlOTYwNjA2NmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAi
Q3VycmVudFRpbWUuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKKyNpbmNs
dWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5o
IgorI2luY2x1ZGUgIlBhc3NPd25QdHIuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisj
aW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9j
YXRpb25FcnJvci5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogV2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpjcmVhdGUoKQoreworICAgIHJldHVybiBuZXcgV2ViR2VvbG9jYXRpb25D
bGllbnRNb2NrKCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjppbml0aWFs
aXplKCkKK3sKKyAgICBtX2NsaWVudE1vY2sucmVzZXQobmV3IFdlYkNvcmU6Okdlb2xvY2F0aW9u
Q2xpZW50TW9jaygpKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlc2V0
KCkKK3sKKyAgICBtX2NsaWVudE1vY2sucmVzZXQoMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUs
IGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKK3sKKyAgICBXZWJHZW9sb2NhdGlv
blBvc2l0aW9uIHdlYlBvc2l0aW9uKGN1cnJlbnRUaW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUs
IGFjY3VyYWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2Us
IDAsIGZhbHNlLCAwLCBmYWxzZSwgMCwgZmFsc2UsIDApOworICAgIG1fY2xpZW50TW9jay0+c2V0
UG9zaXRpb24od2ViUG9zaXRpb24pOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgV2ViU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yQ29kZSBjb2RlID0g
V2ViR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZTsKKyAgICBzd2l0Y2ggKGVy
cm9yQ29kZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9E
RU5JRUQ6CisgICAgICAgIGNvZGUgPSBXZWJHZW9sb2NhdGlvbkVycm9yOjpQZXJtaXNzaW9uRGVu
aWVkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OlBP
U0lUSU9OX1VOQVZBSUxBQkxFOgorICAgICAgICBjb2RlID0gV2ViR2VvbG9jYXRpb25FcnJvcjo6
UG9zaXRpb25VbmF2YWlsYWJsZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgV2ViR2Vv
bG9jYXRpb25FcnJvciB3ZWJFcnJvcihjb2RlLCBtZXNzYWdlKTsKKyAgICBtX2NsaWVudE1vY2st
PnNldEVycm9yKHdlYkVycm9yKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnJlc2V0TW9jaygpCit7CisgICAgbV9jbGllbnRNb2NrLT5yZXNldCgpOworfQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZygpCit7CisgICAgbV9jbGllbnRN
b2NrLT5zdGFydFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1fY2xpZW50TW9jay0+c3RvcFVwZGF0aW5nKCk7Cit9
CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRFbmFibGVIaWdoQWNjdXJhY3ko
Ym9vbCBhY2N1cmFjeSkKK3sKKyAgICBtX2NsaWVudE1vY2stPnNldEVuYWJsZUhpZ2hBY2N1cmFj
eShhY2N1cmFjeSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2Nh
dGlvbkRlc3Ryb3llZCgpCit7CisgICAgbV9jbGllbnRNb2NrLT5nZW9sb2NhdGlvbkRlc3Ryb3ll
ZCgpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihj
b25zdCBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXImIGNvbnRyb2xsZXIpCit7CisgICAgbV9jbGll
bnRNb2NrLT5zZXRDb250cm9sbGVyKGNvbnRyb2xsZXIuY29udHJvbGxlcigpKTsKK30KKworYm9v
bCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBv
c2l0aW9uJiB3ZWJQb3NpdGlvbikKK3sKKyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
KiBwb3NpdGlvbiA9IG1fY2xpZW50TW9jay0+bGFzdFBvc2l0aW9uKCk7CisgICAgaWYgKCFwb3Np
dGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgd2ViUG9zaXRpb24gPSBQYXNzUmVm
UHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+KHBvc2l0aW9uKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2Vv
bG9jYXRpb25Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjUxMzRiMDY1ZTMxMjkwYzMxMzQ5
NDc4MjBlZWQ3ZTBiNzUzNzM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgi
CisKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJHZW9sb2Nh
dGlvbkVycm9yLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2luY2x1ZGUg
IldlYkdlb2xvY2F0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kwordm9pZCBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9uQ2hhbmdlZChjb25zdCBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uKiB3ZWJQb3NpdGlvbikKK3sKKyAgICBBU1NFUlQod2ViUG9z
aXRpb24pOworICAgIG1fY29udHJvbGxlci0+cG9zaXRpb25DaGFuZ2VkKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4oKndlYlBvc2l0aW9uKS5nZXQoKSk7Cit9CisKK3Zv
aWQgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjplcnJvck9jY3VycmVkKGNvbnN0IFdlYkdlb2xv
Y2F0aW9uRXJyb3IqIHdlYkVycm9yKQoreworICAgIEFTU0VSVCh3ZWJFcnJvcik7CisgICAgbV9j
b250cm9sbGVyLT5lcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25F
cnJvcj4oKndlYkVycm9yKS5nZXQoKSk7Cit9CisKK1dlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJv
bGxlciogV2ViR2VvbG9jYXRpb25Db250cm9sbGVyOjpjb250cm9sbGVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jb250cm9sbGVyOworfQorCitXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Om9w
ZXJhdG9yIGJvb2woKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRyb2xsZXI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74850</attachid>
            <date>2010-11-25 03:52:13 -0800</date>
            <delta_ts>2010-11-26 04:03:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46895-20101125115210.patch</filename>
            <type>text/plain</type>
            <size>21076</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDRlY2QxOWE1ZDg5ZmI0NjM3MjA3MDY3YjgwODhhZGNjZTA4NjVjMzcu
LjA0NmMzMTMzZWJjMDlhN2FmYmNjOGExNGU5ZTc3Nzc4MTU0NzY0NGMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IG1vY2tzIGZvciBjbGllbnQtYmFzZWQgZ2VvbG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
ODk1CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6fldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKToKKyAg
ICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpz
ZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXNldE1vY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcDoKKwogMjAxMC0xMS0yNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5k
ZXggNTE4NThkNTgwMTY3ZGE1ZDE5YThmNTM1Mjg3NjA3MTIxNGM5YzA5Ni4uNTM3ZDRjYjE0MWRh
MzYzYzJlZjMwYWUwMDQ3YmNkOGE0ODE4YTQxYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw2ICsx
NzMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hlLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJH
ZW9sb2NhdGlvbkVycm9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uU2Vy
dmljZS5oJywKQEAgLTQ0NCw2ICs0NDUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViRm9y
bUVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZyYW1lSW1wbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmgnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJHZW9sb2NhdGlvbkVycm9yLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNl
cnZpY2VCcmlkZ2VJbXBsLmNwcCcsCkBAIC04NTQsNiArODU2LDExIEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIH1d
LAorICAgICAgICAgICAgICAgIFsnIkVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT049MSIg
aW4gZmVhdHVyZV9kZWZpbmVzJywgeworICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBb
CisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25TZXJ2
aWNlLiokJ10sCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfV0KICAg
ICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMjhhNjNj
NmY5Mjk5OWQwNzUwMTVhOGQ5NDRhNmRiMWIwMmY4NjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oCkBAIC0wLDAgKzEs
NzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2tfaAorI2RlZmluZSBXZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlT3duUHRyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdlb2xvY2F0aW9uQ2xpZW50TW9jazsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3Mg
V2ViU3RyaW5nOworCitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMgV2Vi
R2VvbG9jYXRpb25DbGllbnQgeworcHVibGljOgorICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jayogY3JlYXRlKCk7CisgICAgfldlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jaygpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lUX0FQSSB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5KTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50
IGVycm9yQ29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBXRUJLSVRfQVBJIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihib29sKTsKKyAgICBXRUJLSVRfQVBJIHZv
aWQgcmVzZXRNb2NrKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpOworICAg
IHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJv
eWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoY29uc3QgV2ViR2VvbG9jYXRp
b25Db250cm9sbGVyJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oY29u
c3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCYpOworICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWxQZXJtaXNzaW9uUmVxdWVzdChjb25zdCBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Jik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbGFzdFBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9z
aXRpb24mIHdlYlBvc2l0aW9uKTsKKworcHJpdmF0ZToKKyAgICBXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2soKSB7IGluaXRpYWxpemUoKTsgfQorICAgIFdFQktJVF9BUEkgdm9pZCBpbml0aWFsaXpl
KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7CisKKyAgICBXZWJQcml2YXRlT3duUHRy
PFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV9jbGllbnRNb2NrOworfTsKK30KKwor
I2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9ja19oCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRiZDBmMTlk
ZWNjOTMyY2ZhYjI5MjdkZDgzMDMwZGVhMWNiZjI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtMCwwICsxLDE0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRN
b2NrLmgiCisKKyNpbmNsdWRlICJDdXJyZW50VGltZS5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9u
LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCisjaW5jbHVkZSAiR2VvbG9j
YXRpb25FcnJvci5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgi
CisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25FcnJvci5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmgiCisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayog
V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpjcmVhdGUoKQoreworICAgIHJldHVybiBuZXcgV2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrKCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRN
b2NrOjppbml0aWFsaXplKCkKK3sKKyAgICBtX2NsaWVudE1vY2sucmVzZXQobmV3IFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jaygpKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2s6OnJlc2V0KCkKK3sKKyAgICBtX2NsaWVudE1vY2sucmVzZXQoMCk7Cit9CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKK3sKKyAgICBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uIHdlYlBvc2l0aW9uKGN1cnJlbnRUaW1lKCksIGxhdGl0dWRl
LCBsb25naXR1ZGUsIGFjY3VyYWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2UsIDAsIGZhbHNlLCAwLCBmYWxzZSwgMCwgZmFsc2UsIDApOworICAgIG1fY2xp
ZW50TW9jay0+c2V0UG9zaXRpb24od2ViUG9zaXRpb24pOworfQorCit2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGVycm9yQ29kZSwgY29u
c3QgV2ViU3RyaW5nJiBtZXNzYWdlKQoreworICAgIFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9y
IGNvZGUgPSBXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5hdmFpbGFibGU7Cisg
ICAgc3dpdGNoIChlcnJvckNvZGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6
OlBFUk1JU1NJT05fREVOSUVEOgorICAgICAgICBjb2RlID0gV2ViR2VvbG9jYXRpb25FcnJvcjo6
RXJyb3JQZXJtaXNzaW9uRGVuaWVkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6
OlBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFOgorICAgICAgICBjb2RlID0gV2Vi
R2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQb3NpdGlvblVuYXZhaWxhYmxlOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBXZWJHZW9sb2NhdGlvbkVycm9yIHdlYkVycm9yKGNvZGUsIG1lc3Nh
Z2UpOworICAgIG1fY2xpZW50TW9jay0+c2V0RXJyb3Iod2ViRXJyb3IpOworfQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihib29s
IGFsbG93ZWQpCit7CisgICAgbV9jbGllbnRNb2NrLT5zZXRQZXJtaXNzaW9uKGFsbG93ZWQpOwor
fQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXRNb2NrKCkKK3sKKyAgICBt
X2NsaWVudE1vY2stPnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2NsaWVudE1vY2stPnN0YXJ0VXBkYXRpbmcoKTsK
K30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZygpCit7Cisg
ICAgbV9jbGllbnRNb2NrLT5zdG9wVXBkYXRpbmcoKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGFjY3VyYWN5KQoreworICAg
IG1fY2xpZW50TW9jay0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGFjY3VyYWN5KTsKK30KKwordm9p
ZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKK3sKKyAg
ICBtX2NsaWVudE1vY2stPmdlb2xvY2F0aW9uRGVzdHJveWVkKCk7Cit9CisKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVyKGNvbnN0IFdlYkdlb2xvY2F0aW9uQ29u
dHJvbGxlciYgY29udHJvbGxlcikKK3sKKyAgICBtX2NsaWVudE1vY2stPnNldENvbnRyb2xsZXIo
Y29udHJvbGxlci5jb250cm9sbGVyKCkpOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6bGFzdFBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24mIHdlYlBvc2l0aW9uKQor
eworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uID0gbV9jbGllbnRN
b2NrLT5sYXN0UG9zaXRpb24oKTsKKyAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICB3ZWJQb3NpdGlvbiA9IFBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbj4ocG9zaXRpb24pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1pc3Npb24oY29uc3QgV2ViR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBtX2NsaWVudE1vY2stPnJlcXVl
c3RQZXJtaXNzaW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb24+KHJlcXVlc3QpLmdl
dCgpKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KGNvbnN0IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgbV9jbGllbnRNb2NrLT5jYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChQYXNzUmVmUHRy
PFdlYkNvcmU6Okdlb2xvY2F0aW9uPihyZXF1ZXN0KS5nZXQoKSk7Cit9CisKK30gLy8gV2ViS2l0
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1v
Y2suY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNw
cAppbmRleCAwN2QzZjQ0NTk4Y2RhMzE4M2EwMDM0ZDBlZDFkNmQxMjgyN2U5YTI0Li42NjdiOGIx
NmVmYmJhMDM0NGY5ZTI1MWMwYjRkNmZmNTdhNzljYzBkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAKQEAgLTQxLDM5ICs0MSw2IEBA
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotCi0j
aWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLS8vIEZJWE1FOiBJbXBsZW1lbnQg
bW9jayBiaW5kaW5ncyBmb3IgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uLiBVbHRpbWF0ZWx5Ci0v
LyBtb3ZlIHRvIGFub3RoZXIgY2xhc3MgYW5kIHJlbW92ZSBXZWJHZW9sb2NhdGlvblNlcnZpY2Uq
LgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9j
a0NsaWVudEJhc2VkSW1wbCA6IHB1YmxpYyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrIHsKLX07
Ci0KLVdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2sqIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6
OmNyZWF0ZVdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2soKQotewotICAgIHJldHVybiBuZXcgV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlTW9ja0NsaWVudEJhc2VkSW1wbDsKLX0KLQotdm9pZCBXZWJHZW9s
b2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxs
b3dlZCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1vY2sgYmluZGluZwotfQotCi12b2lk
IFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRv
dWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotewotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgbW9jayBiaW5kaW5nCi19Ci0KLXZvaWQgV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGVycm9yQ29kZSwgY29u
c3QgV2ViU3RyaW5nJiBtZXNzYWdlKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbW9jayBi
aW5kaW5nCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZWxzZQogdXNpbmcgV2ViQ29y
ZTo6Q29vcmRpbmF0ZXM7CiB1c2luZyBXZWJDb3JlOjpGcmFtZTsKIHVzaW5nIFdlYkNvcmU6Okdl
b2xvY2F0aW9uOwpAQCAtMjcyLDYgKzIzOSw0IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9ja0ltcGw6Om5vdGlmeVBlbmRpbmdQZXJtaXNzaW9ucygpCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICNl
bmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFu
Z2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggNTVjZWRhZTNmYzRkYTRkM2ZjZDQy
MjRkODM1N2Y0MjQ4YmUyYjlkMi4uYmM5ZWZjZWE1MjE5OWFmZTFhNWY2ZThlY2E1ZGI2Y2EyOGJl
ZjY1YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0
ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IG1vY2tzIGZvciBjbGllbnQt
YmFzZWQgZ2VvbG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ2ODk1CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6Omdlb2xvY2F0
aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlvbkNsaWVudE1vY2sp
OgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorCiAyMDEwLTExLTI0ICBOaWNvbGFzIER1ZnJlc25l
ICA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGU1MWViYjMy
ZmJjMWM5YTc1Mzk4NTlmMWUyZDhjYTIxYjQ1MTAwYzUuLjI0NTc0MWZkMmQxNDVmYjlkMmFkMzYw
NmVhMzdjMWQ5MTJkN2Q1NTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQzLDcgKzQz
LDExIEBACiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FU
SU9OKQorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgorI2Vsc2UKICNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgiCisjZW5kaWYKICNpbmNsdWRlICJXZWJJ
bnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXIuaCIKQEAgLTE1MTMsNyArMTUxNywxMSBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgp
IDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQogICAgICAgICByZXR1cm47CisjaWYgRU5B
QkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgp
LT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihh
cmd1bWVudHNbMF0udG9Cb29sZWFuKCkpOworI2Vsc2UKICAgICBXZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGFyZ3VtZW50c1swXS50b0Jvb2xl
YW4oKSk7CisjZW5kaWYKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKQEAgLTE1MjEsNyArMTUyOSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwg
MyB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigp
IHx8ICFhcmd1bWVudHNbMl0uaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuOworI2lmIEVOQUJM
RShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+
Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGFyZ3Vt
ZW50c1swXS50b0RvdWJsZSgpLCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzJd
LnRvRG91YmxlKCkpOworI2Vsc2UKICAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSwgYXJndW1lbnRz
WzFdLnRvRG91YmxlKCksIGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyNlbmRpZgogfQogCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTUyOSw3
ICsxNTQxLDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlv
bkVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNJbnQz
MigpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOworI2lmIEVO
QUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgbV9zaGVsbC0+d2ViVmlld0hvc3Qo
KS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGFyZ3Vt
ZW50c1swXS50b0ludDMyKCksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsK
KyNlbHNlCiAgICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0TW9ja0dlb2xvY2F0aW9u
RXJyb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3Vt
ZW50c1sxXSkpOworI2VuZGlmCiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0
TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc1ODE3ODE0MjdjZDQ2Zjc1NjdlMTgzOTNiZTZl
Y2JiNGQzMDMyMTcuLjAzYWZmYTM5NTRlNDY1NGE4YjMyNTcwMTQyMDI5N2I4NzA1OWU3YzEgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudE1v
Y2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRl
eCA4N2ZiYWNhNGJlYTIwMTI2MmYyOTE3YmNiY2E3ZDJiMTU3ZjQ1MzFlLi5mMzBmYzk4NTVmNTM2
YjZhMTE3NjZkNTM1MDcxNGJmMjUyMjQ1NTJkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC00Myw3ICs0MywxMSBAQAog
I2luY2x1ZGUgIldlYkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1
ZGUgIldlYkZyYW1lLmgiCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyNp
bmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKKyNlbHNlCiAjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0
ZW0uaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKQEAgLTU3
MSw3ICs1NzUsMTkgQEAgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBXZWJWaWV3SG9zdDo6bm90
aWZpY2F0aW9uUHJlc2VudGVyKCkKICAgICByZXR1cm4gbV9zaGVsbC0+bm90aWZpY2F0aW9uUHJl
c2VudGVyKCk7CiB9CiAKLSNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyNp
ZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bkNsaWVudCogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uQ2xpZW50KCkKK3sKKyAgICByZXR1cm4g
Z2VvbG9jYXRpb25DbGllbnRNb2NrKCk7Cit9CisKK1dlYktpdDo6V2ViR2VvbG9jYXRpb25DbGll
bnRNb2NrKiBXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25DbGllbnRNb2NrKCkKK3sKKyAgICBpZiAo
IW1fd2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmdldCgpKQorICAgICAgICBtX3dlYkdlb2xvY2F0
aW9uQ2xpZW50TW9jay5zZXQoV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpjcmVhdGUoKSk7Cisg
ICAgcmV0dXJuIG1fd2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmdldCgpOworfQorI2Vsc2UKIFdl
YktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25TZXJ2
aWNlKCkKIHsKICAgICBpZiAoIW1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jay5nZXQoKSkKQEAgLTEx
NjcsNyArMTE4MywxMCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpyZXNldCgpCiAgICAgbV9lZGl0Q29t
bWFuZE5hbWUuY2xlYXIoKTsKICAgICBtX2VkaXRDb21tYW5kVmFsdWUuY2xlYXIoKTsKIAotI2lm
ICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorI2lmIEVOQUJMRShDTElFTlRfQkFT
RURfR0VPTE9DQVRJT04pCisgICAgaWYgKG1fd2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmdldCgp
KQorICAgICAgICBtX3dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay0+cmVzZXRNb2NrKCk7CisjZWxz
ZQogICAgIG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jbGVhcigpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmgg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4
IGM4NTk1YjM2ZjMwNzk3OTk3MGY0YThiYzgwMzM0ODVkNWI2ZGVjN2UuLjA5MWVjOTY0NTgwMjlk
NWM0MGZlN2E4ZTUxOTE2NTJiZDhhODMyMDIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtNDgsNiArNDgsOCBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQ7CiBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s7CitjbGFzcyBXZWJH
ZW9sb2NhdGlvbkNsaWVudDsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazsKIGNsYXNz
IFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwpAQCAtMTM3LDcgKzEzOSw5
IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVi
bGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCBpbnQgaGlzdG9yeUZvcndh
cmRMaXN0Q291bnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb24oY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiwgV2ViS2l0OjpXZWJB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKTsKLSNpZiAhRU5BQkxFKENM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FU
SU9OKQorICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudCogZ2VvbG9jYXRp
b25DbGllbnQoKTsKKyNlbHNlCiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2Vy
dmljZSogZ2VvbG9jYXRpb25TZXJ2aWNlKCk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFdlYktpdDo6
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpX
ZWJTcGVlY2hJbnB1dExpc3RlbmVyKik7CkBAIC0yMDYsNiArMjEwLDExIEBAIGNsYXNzIFdlYlZp
ZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2Vi
RnJhbWVDbGllbnQsCiAgICAgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sq
IGRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOwogICAgIE1vY2tTcGVsbENoZWNrKiBtb2Nr
U3BlbGxDaGVjaygpOwogCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAg
ICAvLyBHZW9sb2NhdGlvbiBjbGllbnQgbW9ja3MgZm9yIExheW91dFRlc3RDb250cm9sbGVyCisg
ICAgV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2sqIGdlb2xvY2F0aW9uQ2xpZW50TW9j
aygpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGxheW91
dFRlc3RDb250cm9sbGVyKCkgY29uc3Q7CiAKQEAgLTMwNyw4ICszMTYsMTAgQEAgcHJpdmF0ZToK
IAogICAgIE93blB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51RGF0YT4gbV9sYXN0Q29udGV4dE1l
bnVEYXRhOwogCi0jaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgLy8g
R2VvbG9jYXRpb24KKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIE93
blB0cjxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV93ZWJHZW9sb2NhdGlvbkNs
aWVudE1vY2s7CisjZWxzZQogICAgIE93blB0cjxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2s+IG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jazsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74915</attachid>
            <date>2010-11-26 04:03:14 -0800</date>
            <delta_ts>2010-12-06 07:25:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46895-20101126120311.patch</filename>
            <type>text/plain</type>
            <size>21051</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDU0MDNmYzM5YmEzOWIwODc2NWIwNWE1ZTUzYjQ2ZWE5ZGVhZjU1ZTIu
Ljk0MTA0MWNiMThjZWMzOWZmNzU5YTQ2NGNmODVjZmU4ZmIxNGYzNjQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IG1vY2tzIGZvciBjbGllbnQtYmFzZWQgZ2VvbG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
ODk1CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6fldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKToKKyAg
ICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpz
ZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXNldE1vY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcDoKKwogMjAxMC0xMS0yNSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUm9sbCBjaHJvbWl1bSA2NzAwNDo2NzQw
NC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggNTE4NThkNTgwMTY3ZGE1ZDE5YThmNTM1Mjg3NjA3MTIxNGM5
YzA5Ni4uNTM3ZDRjYjE0MWRhMzYzYzJlZjMwYWUwMDQ3YmNkOGE0ODE4YTQxYSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTE3Myw2ICsxNzMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9u
dENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCisgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvbkVycm9yLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkdlb2xvY2F0aW9uU2VydmljZS5oJywKQEAgLTQ0NCw2ICs0NDUsNyBAQAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViRm9ybUVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkZyYW1lSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmgnLAor
ICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvbkVycm9yLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmNwcCcsCkBAIC04NTQsNiArODU2LDEx
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsnIkVOQUJMRV9DTElFTlRfQkFT
RURfR0VPTE9DQVRJT049MSIgaW4gZmVhdHVyZV9kZWZpbmVzJywgeworICAgICAgICAgICAgICAg
ICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAn
V2ViR2VvbG9jYXRpb25TZXJ2aWNlLiokJ10sCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgfV0KICAgICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgwN2RlNGQ1ZDRmODNhY2Y3OTUzN2ViZDIyYTA1OWQ1ZWRhYzU2NDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jay5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2tf
aAorI2RlZmluZSBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJQ
cml2YXRlT3duUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdlb2xvY2F0aW9u
Q2xpZW50TW9jazsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2sgOiBwdWJsaWMgV2ViR2VvbG9jYXRpb25DbGllbnQgeworcHVibGljOgorICAgIFdFQktJ
VF9BUEkgc3RhdGljIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogY3JlYXRlKCk7CisgICAgfldl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jaygpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lUX0FQSSB2
b2lkIHNldFBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91Ymxl
IGFjY3VyYWN5KTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0RXJyb3IoaW50IGVycm9yQ29kZSwg
Y29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UGVybWlz
c2lvbihib29sKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXRNb2NrKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmco
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOworCisgICAg
dmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRyb2xsZXIoY29uc3QgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyJik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oY29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCYpOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChjb25z
dCBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Jik7CisKKyAgICB2aXJ0dWFsIGJvb2wg
bGFzdFBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24mIHdlYlBvc2l0aW9uKTsKKworcHJp
dmF0ZToKKyAgICBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2soKSB7IGluaXRpYWxpemUoKTsgfQor
ICAgIFdFQktJVF9BUEkgdm9pZCBpbml0aWFsaXplKCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHJl
c2V0KCk7CisKKyAgICBXZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50
TW9jaz4gbV9jbGllbnRNb2NrOworfTsKK30KKworI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50TW9ja19oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jay5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdlNmMzZjNhMGFlMDUwNzIyYWU2MTNhM2ZiZDdiNDcwNGI4
NDJhYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrLmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJDdXJyZW50
VGltZS5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25D
bGllbnRNb2NrLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgorI2luY2x1ZGUgIkdl
b2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVk
ZSAiV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25F
cnJvci5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNp
bmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBX
ZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJH
ZW9sb2NhdGlvbkNsaWVudE1vY2soKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OmluaXRpYWxpemUoKQoreworICAgIG1fY2xpZW50TW9jay5yZXNldChuZXcgR2VvbG9jYXRp
b25DbGllbnRNb2NrKCkpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVz
ZXQoKQoreworICAgIG1fY2xpZW50TW9jay5yZXNldCgwKTsKK30KKwordm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KQoreworICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gd2Vi
UG9zaXRpb24oY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgMCwgZmFsc2UsIDAs
IGZhbHNlLCAwLCBmYWxzZSwgMCk7CisgICAgbV9jbGllbnRNb2NrLT5zZXRQb3NpdGlvbih3ZWJQ
b3NpdGlvbik7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRFcnJvcihp
bnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgV2ViR2VvbG9j
YXRpb25FcnJvcjo6RXJyb3IgY29kZSA9IFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUG9zaXRp
b25VbmF2YWlsYWJsZTsKKyAgICBzd2l0Y2ggKGVycm9yQ29kZSkgeworICAgIGNhc2UgUG9zaXRp
b25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQ6CisgICAgICAgIGNvZGUgPSBXZWJHZW9sb2NhdGlv
bkVycm9yOjpFcnJvclBlcm1pc3Npb25EZW5pZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEU6CisgICAgICAgIGNvZGUgPSBXZWJH
ZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5hdmFpbGFibGU7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIFdlYkdlb2xvY2F0aW9uRXJyb3Igd2ViRXJyb3IoY29kZSwgbWVzc2Fn
ZSk7CisgICAgbV9jbGllbnRNb2NrLT5zZXRFcnJvcih3ZWJFcnJvcik7Cit9CisKK3ZvaWQgV2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCkKK3sKKyAg
ICBtX2NsaWVudE1vY2stPnNldFBlcm1pc3Npb24oYWxsb3dlZCk7Cit9CisKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnRNb2NrOjpyZXNldE1vY2soKQoreworICAgIG1fY2xpZW50TW9jay0+cmVz
ZXQoKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmco
KQoreworICAgIG1fY2xpZW50TW9jay0+c3RhcnRVcGRhdGluZygpOworfQorCit2b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c3RvcFVwZGF0aW5nKCkKK3sKKyAgICBtX2NsaWVudE1vY2st
PnN0b3BVcGRhdGluZygpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgYWNjdXJhY3kpCit7CisgICAgbV9jbGllbnRNb2NrLT5z
ZXRFbmFibGVIaWdoQWNjdXJhY3koYWNjdXJhY3kpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQoreworICAgIG1fY2xpZW50TW9jay0+
Z2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OnNldENvbnRyb2xsZXIoY29uc3QgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyJiBjb250cm9s
bGVyKQoreworICAgIG1fY2xpZW50TW9jay0+c2V0Q29udHJvbGxlcihjb250cm9sbGVyLmNvbnRy
b2xsZXIoKSk7Cit9CisKK2Jvb2wgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRp
b24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiYgd2ViUG9zaXRpb24pCit7CisgICAgUmVmUHRyPEdl
b2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gbV9jbGllbnRNb2NrLT5sYXN0UG9zaXRpb24o
KTsKKyAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB3ZWJQ
b3NpdGlvbiA9IHBvc2l0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlcXVlc3RQZXJtaXNzaW9uKGNvbnN0IFdlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgbV9jbGllbnRNb2Nr
LT5yZXF1ZXN0UGVybWlzc2lvbihyZXF1ZXN0Lmdlb2xvY2F0aW9uKCkpOworfQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoY29uc3QgV2Vi
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBtX2NsaWVudE1v
Y2stPmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KHJlcXVlc3QuZ2VvbG9jYXRpb24oKSk7Cit9CisK
K30gLy8gV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0
aW9uU2VydmljZU1vY2suY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmNwcAppbmRleCAwN2QzZjQ0NTk4Y2RhMzE4M2EwMDM0ZDBlZDFkNmQxMjgyN2U5
YTI0Li42NjdiOGIxNmVmYmJhMDM0NGY5ZTI1MWMwYjRkNmZmNTdhNzljYzBkIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAKQEAgLTQx
LDM5ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKEdFT0xP
Q0FUSU9OKQotCi0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLS8vIEZJWE1F
OiBJbXBsZW1lbnQgbW9jayBiaW5kaW5ncyBmb3IgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uLiBV
bHRpbWF0ZWx5Ci0vLyBtb3ZlIHRvIGFub3RoZXIgY2xhc3MgYW5kIHJlbW92ZSBXZWJHZW9sb2Nh
dGlvblNlcnZpY2UqLgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9ja0NsaWVudEJhc2VkSW1wbCA6IHB1YmxpYyBXZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrIHsKLX07Ci0KLVdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2sqIFdlYkdlb2xvY2F0aW9u
U2VydmljZU1vY2s6OmNyZWF0ZVdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2soKQotewotICAgIHJl
dHVybiBuZXcgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0NsaWVudEJhc2VkSW1wbDsKLX0KLQot
dm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNz
aW9uKGJvb2wgYWxsb3dlZCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1vY2sgYmluZGlu
ZwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3Vy
YWN5KQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbW9jayBiaW5kaW5nCi19Ci0KLXZvaWQg
V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGVy
cm9yQ29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQotewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgbW9jayBiaW5kaW5nCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZWxzZQog
dXNpbmcgV2ViQ29yZTo6Q29vcmRpbmF0ZXM7CiB1c2luZyBXZWJDb3JlOjpGcmFtZTsKIHVzaW5n
IFdlYkNvcmU6Okdlb2xvY2F0aW9uOwpAQCAtMjcyLDYgKzIzOSw0IEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlTW9ja0ltcGw6Om5vdGlmeVBlbmRpbmdQZXJtaXNzaW9ucygpCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggNTVjZWRhZTNm
YzRkYTRkM2ZjZDQyMjRkODM1N2Y0MjQ4YmUyYjlkMi4uYmM5ZWZjZWE1MjE5OWFmZTFhNWY2ZThl
Y2E1ZGI2Y2EyOGJlZjY1YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTExLTI1ICBKb2hu
IEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IG1vY2tz
IGZvciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2ODk1CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hv
c3Q6Omdlb2xvY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlv
bkNsaWVudE1vY2spOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc2V0KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorCiAyMDEwLTExLTI0ICBOaWNv
bGFzIER1ZnJlc25lICA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGU1MWViYjMyZmJjMWM5YTc1Mzk4NTlmMWUyZDhjYTIxYjQ1MTAwYzUuLjE0MzYwNGM1ZWNj
MDY1ZjFmOTc5NzI5NGJiZGMyMDM0NjVlNjJkZTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTQzLDcgKzQzLDExIEBACiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJX
ZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpZiBFTkFCTEUoQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OKQorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgor
I2Vsc2UKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgiCisjZW5kaWYKICNp
bmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRl
ICJXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKQEAgLTE1MTMsNyArMTUxNywxMSBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQogICAgICAgICByZXR1
cm47CisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBtX3NoZWxsLT53
ZWJWaWV3SG9zdCgpLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0UGVybWlzc2lvbihhcmd1
bWVudHNbMF0udG9Cb29sZWFuKCkpOworI2Vsc2UKICAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrOjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGFyZ3VtZW50c1swXS50b0Jvb2xlYW4o
KSk7CisjZW5kaWYKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKQEAgLTE1MjEsNyArMTUyOSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
ZwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMyB8
fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpIHx8
ICFhcmd1bWVudHNbMl0uaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+Z2Vv
bG9jYXRpb25DbGllbnRNb2NrKCktPnNldFBvc2l0aW9uKGFyZ3VtZW50c1swXS50b0RvdWJsZSgp
LCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOworI2Vs
c2UKICAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzFdLnRvRG91YmxlKCksIGFy
Z3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyNlbmRpZgogfQogCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTUyOSw3ICsxNTQxLDExIEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNJbnQzMigpIHx8ICFhcmd1bWVudHNb
MV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCisgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+Z2VvbG9jYXRpb25DbGll
bnRNb2NrKCktPnNldEVycm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGNwcFZhcmlhbnRUb1dl
YlN0cmluZyhhcmd1bWVudHNbMV0pKTsKKyNlbHNlCiAgICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3Bw
VmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOworI2VuZGlmCiB9CiAKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc1ODE3
ODE0MjdjZDQ2Zjc1NjdlMTgzOTNiZTZlY2JiNGQzMDMyMTcuLjAzYWZmYTM5NTRlNDY1NGE4YjMy
NTcwMTQyMDI5N2I4NzA1OWU3YzEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNDksNiArNDks
NyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogY2xhc3MgV2ViU3BlZWNo
SW5wdXRMaXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA4N2ZiYWNhNGJlYTIwMTI2MmYyOTE3YmNiY2E3ZDJi
MTU3ZjQ1MzFlLi5jODkyNjdlN2I2MmEwMDM1MzFmYjI1N2NmYTE3NTQ3MmEzYjJiZjMwIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCkBAIC00Myw3ICs0MywxMSBAQAogI2luY2x1ZGUgIldlYkRyYWdEYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaWYgRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2su
aCIKKyNlbHNlCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIgorI2VuZGlm
CiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5j
bHVkZSAiV2ViUmFuZ2UuaCIKQEAgLTU3MSwxMCArNTc1LDIyIEBAIFdlYk5vdGlmaWNhdGlvblBy
ZXNlbnRlciogV2ViVmlld0hvc3Q6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpCiAgICAgcmV0dXJu
IG1fc2hlbGwtPm5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogfQogCi0jaWYgIUVOQUJMRShDTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKK1dlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQqIFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlv
bkNsaWVudCgpCit7CisgICAgcmV0dXJuIGdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOworfQorCitX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9u
Q2xpZW50TW9jaygpCit7CisgICAgaWYgKCFtX3dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jaykKKyAg
ICAgICAgbV93ZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suc2V0KFdlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6Y3JlYXRlKCkpOworICAgIHJldHVybiBtX3dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5n
ZXQoKTsKK30KKyNlbHNlCiBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogV2ViVmlld0hv
c3Q6Omdlb2xvY2F0aW9uU2VydmljZSgpCiB7Ci0gICAgaWYgKCFtX2dlb2xvY2F0aW9uU2Vydmlj
ZU1vY2suZ2V0KCkpCisgICAgaWYgKCFtX2dlb2xvY2F0aW9uU2VydmljZU1vY2spCiAgICAgICAg
IG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jay5zZXQoV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6
Y3JlYXRlV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jaygpKTsKICAgICByZXR1cm4gbV9nZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmdldCgpOwogfQpAQCAtMTE2Nyw3ICsxMTgzLDEwIEBAIHZvaWQgV2Vi
Vmlld0hvc3Q6OnJlc2V0KCkKICAgICBtX2VkaXRDb21tYW5kTmFtZS5jbGVhcigpOwogICAgIG1f
ZWRpdENvbW1hbmRWYWx1ZS5jbGVhcigpOwogCi0jaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBpZiAo
bV93ZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suZ2V0KCkpCisgICAgICAgIG1fd2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrLT5yZXNldE1vY2soKTsKKyNlbHNlCiAgICAgbV9nZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNsZWFyKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggYzg1OTViMzZmMzA3OTc5OTcwZjRhOGJj
ODAzMzQ4NWQ1YjZkZWM3ZS4uMDkxZWM5NjQ1ODAyOWQ1YzQwZmU3YThlNTE5MTY1MmJkOGE4MzIw
MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCkBAIC00OCw2ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJh
bWU7CiBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jazsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50OworY2xhc3Mg
V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOwogY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9j
azsKIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKIGNsYXNzIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2s7CkBAIC0xMzcsNyArMTM5LDkgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBw
dWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVu
dCwKICAgICB2aXJ0dWFsIGludCBoaXN0b3J5Rm9yd2FyZExpc3RDb3VudCgpOwogICAgIHZpcnR1
YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBXZWJLaXQ6OldlYkFj
Y2Vzc2liaWxpdHlPYmplY3QmLCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24p
OwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNh
dGlvblByZXNlbnRlcigpOwotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQor
I2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgdmlydHVhbCBXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50KiBnZW9sb2NhdGlvbkNsaWVudCgpOworI2Vsc2UKICAgICB2
aXJ0dWFsIFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2Uo
KTsKICNlbmRpZgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIq
IHNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsK
QEAgLTIwNiw2ICsyMTAsMTEgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICBXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrKCk7CiAgICAgTW9ja1NwZWxsQ2hlY2sqIG1vY2tTcGVsbENoZWNrKCk7CiAKKyNpZiBFTkFC
TEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIC8vIEdlb2xvY2F0aW9uIGNsaWVudCBt
b2NrcyBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jayogZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXIoKSBjb25zdDsK
IApAQCAtMzA3LDggKzMxNiwxMCBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVEYXRhPiBtX2xhc3RDb250ZXh0TWVudURhdGE7CiAKLSNpZiAhRU5BQkxFKENM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAvLyBHZW9sb2NhdGlvbgorI2lmIEVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgT3duUHRyPFdlYktpdDo6V2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrPiBtX3dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazsKKyNlbHNlCiAgICAgT3du
UHRyPFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jaz4gbV9nZW9sb2NhdGlvblNlcnZp
Y2VNb2NrOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75694</attachid>
            <date>2010-12-06 07:25:13 -0800</date>
            <delta_ts>2010-12-07 07:09:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46895-20101206152511.patch</filename>
            <type>text/plain</type>
            <size>21314</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDEwZGI5NGFlNWM2NDJjMzgyODMyYzhkZjBhMDMwMDU2YThiYmIyZGQu
LjQ5M2I2MmZmMzZkNDUyZTZhNjVhZWZiNTQ2NjVmNDliNDU4MWE5ZTIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IG1vY2tzIGZvciBjbGllbnQtYmFzZWQgZ2VvbG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
ODk1CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6fldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKToKKyAg
ICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpz
ZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXNldE1vY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcDoKKwogMjAxMC0xMi0wMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjczMzAyLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAppbmRleCAwMWJiMDkyNDUwODQwZDAwMGQyZWVhMzAyYzllNmJhNDY2ZjMyNzdi
Li5hY2ViYzI0YzQ1MTlhMjg0YTJmNjc5YThjNzA3NzllMjE1NDIyMWY1IDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cApAQCAtMTczLDYgKzE3Myw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb250Q2Fj
aGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkdlb2xvY2F0aW9uRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlLmgnLApAQCAtNDQ0LDYgKzQ0NSw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJh
bWVJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uRXJyb3IuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwJywKQEAgLTY2Nyw3ICs2NjksNiBAQAog
ICAgICAgICAgICAgICAgIFsnIkVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT049MSIgaW4g
ZmVhdHVyZV9kZWZpbmVzJywgewogICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCiAg
ICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25TZXJ2aWNl
LiokJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAnV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jay4qJ10sCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAg
ICAgfSwgewogICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKQEAgLTg1Myw2ICs4NTQs
MTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgWyciRU5BQkxFX0NMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTj0xIiBpbiBmZWF0dXJlX2RlZmluZXMnLCB7CisgICAgICAgICAgICAg
ICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScs
ICdXZWJHZW9sb2NhdGlvblNlcnZpY2UuKiQnXSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgXSwKICAgICAgICAgfSwKICAgICAgICAgewpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1v
Y2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDYzMmRkYjhiNDk3N2NhMWMwNWJlOWE2MGU2MzZkY2FkYWRkYzU2NQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGll
bnRNb2NrLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
a19oCisjZGVmaW5lIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9ja19oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIldl
YlByaXZhdGVPd25QdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgR2VvbG9jYXRp
b25DbGllbnRNb2NrOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdlb2xvY2F0
aW9uUG9zaXRpb247CitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50TW9jayA6IHB1YmxpYyBXZWJHZW9sb2NhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgV0VC
S0lUX0FQSSBzdGF0aWMgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBjcmVhdGUoKTsKKyAgICB+
V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKCkgeyByZXNldCgpOyB9CisKKyAgICBXRUJLSVRfQVBJ
IHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWNjdXJhY3kpOworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRFcnJvcihpbnQgZXJyb3JDb2Rl
LCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRQZXJt
aXNzaW9uKGJvb2wpOworICAgIFdFQktJVF9BUEkgdm9pZCByZXNldE1vY2soKTsKKworICAgIHZp
cnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGlu
ZygpOworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udHJvbGxlcihjb25zdCBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXImKTsKKworICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihjb25zdCBXZWJHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0Jik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KGNv
bnN0IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmKTsKKworICAgIHZpcnR1YWwgYm9v
bCBsYXN0UG9zaXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiYgd2ViUG9zaXRpb24pOworCitw
cml2YXRlOgorICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOworICAgIFdFQktJVF9BUEkg
dm9pZCByZXNldCgpOworCisgICAgV2ViUHJpdmF0ZU93blB0cjxXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudE1vY2s+IG1fY2xpZW50TW9jazsKK307Cit9CisKKyNlbmRpZiAvLyBXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2tfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlv
bkNsaWVudE1vY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxYjM2ZTExMjU5OTA2NTg4NmFjOTU2ZDMxOWZl
MGEzMTQzNDViODAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAi
Q3VycmVudFRpbWUuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkdlb2xv
Y2F0aW9uQ2xpZW50TW9jay5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uRXJyb3IuaCIKKyNpbmNs
dWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb25FcnJvci5oIgor
I2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYkdlb2xv
Y2F0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jayogV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpjcmVhdGUoKQoreworICAgIHJldHVybiBu
ZXcgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnRNb2NrOjpzZXRQb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSkKK3sKKyAgICBXZWJHZW9sb2NhdGlvblBvc2l0aW9uIHdlYlBvc2l0
aW9uKGN1cnJlbnRUaW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDAsIGZhbHNlLCAwLCBmYWxz
ZSwgMCwgZmFsc2UsIDApOworICAgIG1fY2xpZW50TW9jay0+c2V0UG9zaXRpb24od2ViUG9zaXRp
b24pOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RXJyb3IoaW50IGVy
cm9yQ29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQoreworICAgIFdlYkdlb2xvY2F0aW9u
RXJyb3I6OkVycm9yIGNvZGUgPSBXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5h
dmFpbGFibGU7CisgICAgc3dpdGNoIChlcnJvckNvZGUpIHsKKyAgICBjYXNlIFBvc2l0aW9uRXJy
b3I6OlBFUk1JU1NJT05fREVOSUVEOgorICAgICAgICBjb2RlID0gV2ViR2VvbG9jYXRpb25FcnJv
cjo6RXJyb3JQZXJtaXNzaW9uRGVuaWVkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBvc2l0
aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFOgorICAgICAgICBjb2RlID0gV2ViR2VvbG9j
YXRpb25FcnJvcjo6RXJyb3JQb3NpdGlvblVuYXZhaWxhYmxlOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBXZWJHZW9sb2NhdGlvbkVycm9yIHdlYkVycm9yKGNvZGUsIG1lc3NhZ2UpOwor
ICAgIG1fY2xpZW50TW9jay0+c2V0RXJyb3Iod2ViRXJyb3IpOworfQorCit2b2lkIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6c2V0UGVybWlzc2lvbihib29sIGFsbG93ZWQpCit7CisgICAgbV9j
bGllbnRNb2NrLT5zZXRQZXJtaXNzaW9uKGFsbG93ZWQpOworfQorCit2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50TW9jazo6cmVzZXRNb2NrKCkKK3sKKyAgICBtX2NsaWVudE1vY2stPnJlc2V0KCk7
Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKCkKK3sK
KyAgICBtX2NsaWVudE1vY2stPnN0YXJ0VXBkYXRpbmcoKTsKK30KKwordm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZygpCit7CisgICAgbV9jbGllbnRNb2NrLT5zdG9w
VXBkYXRpbmcoKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShib29sIGFjY3VyYWN5KQoreworICAgIG1fY2xpZW50TW9jay0+c2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGFjY3VyYWN5KTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2s6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKK3sKKyAgICBtX2NsaWVudE1vY2stPmdlb2xv
Y2F0aW9uRGVzdHJveWVkKCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpz
ZXRDb250cm9sbGVyKGNvbnN0IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlciYgY29udHJvbGxlcikK
K3sKKyAgICBtX2NsaWVudE1vY2stPnNldENvbnRyb2xsZXIoY29udHJvbGxlci5jb250cm9sbGVy
KCkpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1pc3Np
b24oY29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBtX2NsaWVudE1vY2stPnJlcXVlc3RQZXJtaXNzaW9uKHJlcXVlc3QuZ2VvbG9jYXRpb24oKSk7
Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpjYW5jZWxQZXJtaXNzaW9uUmVx
dWVzdChjb25zdCBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0JiByZXF1ZXN0KQorewor
ICAgIG1fY2xpZW50TW9jay0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZW9sb2Nh
dGlvbigpKTsKK30KKworYm9vbCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3NpdGlv
bihXZWJHZW9sb2NhdGlvblBvc2l0aW9uJiB3ZWJQb3NpdGlvbikKK3sKKyAgICBSZWZQdHI8R2Vv
bG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBtX2NsaWVudE1vY2stPmxhc3RQb3NpdGlvbigp
OworICAgIGlmICghcG9zaXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHdlYlBv
c2l0aW9uID0gcG9zaXRpb24ucmVsZWFzZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitXZWJH
ZW9sb2NhdGlvbkNsaWVudE1vY2s6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jaygpCit7CisgICAg
bV9jbGllbnRNb2NrLnJlc2V0KG5ldyBHZW9sb2NhdGlvbkNsaWVudE1vY2soKSk7Cit9CisKK3Zv
aWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCgpCit7CisgICAgbV9jbGllbnRNb2Nr
LnJlc2V0KDApOworfQorCit9IC8vIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAKaW5kZXggMDdkM2Y0NDU5OGNkYTMxODNhMDAz
NGQwZWQxZDZkMTI4MjdlOWEyNC4uNjY3YjhiMTZlZmJiYTAzNDRmOWUyNTFjMGI0ZDZmZjU3YTc5
Y2MwZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2suY3BwCkBAIC00MSwzOSArNDEsNiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
I2lmIEVOQUJMRShHRU9MT0NBVElPTikKLQotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pCi0vLyBGSVhNRTogSW1wbGVtZW50IG1vY2sgYmluZGluZ3MgZm9yIGNsaWVudC1iYXNl
ZCBnZW9sb2NhdGlvbi4gVWx0aW1hdGVseQotLy8gbW92ZSB0byBhbm90aGVyIGNsYXNzIGFuZCBy
ZW1vdmUgV2ViR2VvbG9jYXRpb25TZXJ2aWNlKi4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tDbGllbnRCYXNlZEltcGwgOiBwdWJsaWMgV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlTW9jayB7Ci19OwotCi1XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2Nr
KiBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpjcmVhdGVXZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrKCkKLXsKLSAgICByZXR1cm4gbmV3IFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tDbGllbnRC
YXNlZEltcGw7Ci19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0TW9ja0dl
b2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93ZWQpCi17Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudCBtb2NrIGJpbmRpbmcKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGRvdWJsZSBhY2N1cmFjeSkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1vY2sgYmlu
ZGluZwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKLXsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IG1vY2sgYmluZGluZwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2Vsc2UKIHVzaW5nIFdlYkNvcmU6OkNvb3JkaW5hdGVzOwogdXNpbmcgV2ViQ29y
ZTo6RnJhbWU7CiB1c2luZyBXZWJDb3JlOjpHZW9sb2NhdGlvbjsKQEAgLTI3Miw2ICsyMzksNCBA
QCB2b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tJbXBsOjpub3RpZnlQZW5kaW5nUGVybWlz
c2lvbnMoKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGZiOWIyNjdmZWRlODU4OGVmYzA4YjFmN2FlN2I5MzIwY2ZmNmNmNTguLjFmMjZmZjkz
M2I0OGU4ZTJlODljYzAwOWI4NDlmZDFmMzUyOTJhYWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxMC0xMS0yNSAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1d
IEltcGxlbWVudCBtb2NrcyBmb3IgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njg5NQorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbik6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJWaWV3
SG9zdDo6Z2VvbG9jYXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXNl
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKwog
MjAxMC0xMi0wNCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBh
NTUwNzBlOTgyNzI3NzZmNDY4YzRjOTQyMGNjMzE0NTFjMGM5NjUzLi5kMjUyYzYzYjQ1MDZkMzFk
YmIxNWM3ZDk1ZGJlYzkyNDhiN2UxNmQzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00
Myw3ICs0MywxMSBAQAogI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiV2ViRWxl
bWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKKyNlbHNl
CiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIgorI2VuZGlmCiAjaW5jbHVk
ZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCkBAIC0xNTEzLDcgKzE1MTcsMTEgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW0KICAgICByZXN1bHQtPnNldE51bGwoKTsKICAgICBpZiAoYXJndW1lbnRz
LnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5pc0Jvb2woKSkKICAgICAgICAgcmV0dXJuOwor
I2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgbV9zaGVsbC0+d2ViVmll
d0hvc3QoKS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldFBlcm1pc3Npb24oYXJndW1lbnRz
WzBdLnRvQm9vbGVhbigpKTsKKyNlbHNlCiAgICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6
c2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihhcmd1bWVudHNbMF0udG9Cb29sZWFuKCkpOwor
I2VuZGlmCiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCkBAIC0xNTIxLDcgKzE1MjksMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmcKICAg
ICByZXN1bHQtPnNldE51bGwoKTsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDMgfHwgIWFy
Z3VtZW50c1swXS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbMV0uaXNOdW1iZXIoKSB8fCAhYXJn
dW1lbnRzWzJdLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybjsKKyNpZiBFTkFCTEUoQ0xJRU5U
X0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPmdlb2xvY2F0
aW9uQ2xpZW50TW9jaygpLT5zZXRQb3NpdGlvbihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSwgYXJn
dW1lbnRzWzFdLnRvRG91YmxlKCksIGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyNlbHNlCiAg
ICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
YXJndW1lbnRzWzBdLnRvRG91YmxlKCksIGFyZ3VtZW50c1sxXS50b0RvdWJsZSgpLCBhcmd1bWVu
dHNbMl0udG9Eb3VibGUoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTE1MjksNyArMTU0MSwxMSBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5p
c1N0cmluZygpKQogICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikKKyAgICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5nZW9sb2NhdGlvbkNsaWVudE1v
Y2soKS0+c2V0RXJyb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3Ry
aW5nKGFyZ3VtZW50c1sxXSkpOworI2Vsc2UKICAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2Nr
OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBjcHBWYXJp
YW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CisjZW5kaWYKIH0KIAogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNzU4MTc4MTQy
N2NkNDZmNzU2N2UxODM5M2JlNmVjYmI0ZDMwMzIxNy4uMDNhZmZhMzk1NGU0NjU0YThiMzI1NzAx
NDIwMjk3Yjg3MDU5ZTdjMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC00OSw2ICs0OSw3IEBA
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jazsKIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsK
IGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1
dExpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwCmluZGV4IDg3ZmJhY2E0YmVhMjAxMjYyZjI5MTdiY2JjYTdkMmIxNTdm
NDUzMWUuLmJmNmJiYTQ4Y2E1OGY3ZGZkYzFhMmMyMjRmMjkxMDU1N2M1ZjZlYTAgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAK
QEAgLTQzLDcgKzQzLDExIEBACiAjaW5jbHVkZSAiV2ViRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJX
ZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpZiBFTkFCTEUoQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OKQorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgor
I2Vsc2UKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgiCisjZW5kaWYKICNp
bmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRl
ICJXZWJSYW5nZS5oIgpAQCAtNTcxLDEwICs1NzUsMjIgQEAgV2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyKiBXZWJWaWV3SG9zdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkKICAgICByZXR1cm4gbV9z
aGVsbC0+bm90aWZpY2F0aW9uUHJlc2VudGVyKCk7CiB9CiAKLSNpZiAhRU5BQkxFKENMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQor
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudCogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uQ2xp
ZW50KCkKK3sKKyAgICByZXR1cm4gZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7Cit9CisKK1dlYktp
dDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25DbGll
bnRNb2NrKCkKK3sKKyAgICBpZiAoIW1fZ2VvbG9jYXRpb25DbGllbnRNb2NrKQorICAgICAgICBt
X2dlb2xvY2F0aW9uQ2xpZW50TW9jay5zZXQoV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpjcmVh
dGUoKSk7CisgICAgcmV0dXJuIG1fZ2VvbG9jYXRpb25DbGllbnRNb2NrLmdldCgpOworfQorI2Vs
c2UKIFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBXZWJWaWV3SG9zdDo6Z2VvbG9jYXRp
b25TZXJ2aWNlKCkKIHsKLSAgICBpZiAoIW1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jay5nZXQoKSkK
KyAgICBpZiAoIW1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jaykKICAgICAgICAgbV9nZW9sb2NhdGlv
blNlcnZpY2VNb2NrLnNldChXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpjcmVhdGVXZWJHZW9s
b2NhdGlvblNlcnZpY2VNb2NrKCkpOwogICAgIHJldHVybiBtX2dlb2xvY2F0aW9uU2VydmljZU1v
Y2suZ2V0KCk7CiB9CkBAIC0xMTY3LDcgKzExODMsMTAgQEAgdm9pZCBXZWJWaWV3SG9zdDo6cmVz
ZXQoKQogICAgIG1fZWRpdENvbW1hbmROYW1lLmNsZWFyKCk7CiAgICAgbV9lZGl0Q29tbWFuZFZh
bHVlLmNsZWFyKCk7CiAKLSNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyNp
ZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIGlmIChtX2dlb2xvY2F0aW9u
Q2xpZW50TW9jay5nZXQoKSkKKyAgICAgICAgbV9nZW9sb2NhdGlvbkNsaWVudE1vY2stPnJlc2V0
TW9jaygpOworI2Vsc2UKICAgICBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2suY2xlYXIoKTsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaAppbmRleCBjODU5NWIzNmYzMDc5Nzk5NzBmNGE4YmM4MDMzNDg1ZDViNmRlYzdlLi4y
MGIyOWMwZDljYjYxMDllZjU1NWEwMDg0NzBiM2NlZDE1MDhlOTg4IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTQ4LDYgKzQ4
LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50OwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
OworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQ7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2s7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOwogY2xhc3MgV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKQEAg
LTEzNyw3ICsxMzksOSBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZp
ZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgaW50
IGhpc3RvcnlGb3J3YXJkTGlzdENvdW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uKGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYs
IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbik7CiAgICAgdmlydHVhbCBXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCk7Ci0j
aWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisjaWYgRU5BQkxFKENMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGll
bnQqIGdlb2xvY2F0aW9uQ2xpZW50KCk7CisjZWxzZQogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJH
ZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2VydmljZSgpOwogI2VuZGlmCiAgICAgdmly
dHVhbCBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciogc3BlZWNoSW5wdXRDb250cm9s
bGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOwpAQCAtMjA2LDYgKzIxMCwxMSBA
QCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1Ymxp
YyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrKiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKICAgICBNb2NrU3Bl
bGxDaGVjayogbW9ja1NwZWxsQ2hlY2soKTsKIAorI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pCisgICAgLy8gR2VvbG9jYXRpb24gY2xpZW50IG1vY2tzIGZvciBMYXlvdXRUZXN0
Q29udHJvbGxlcgorICAgIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBnZW9sb2Nh
dGlvbkNsaWVudE1vY2soKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIExheW91dFRlc3RDb250
cm9sbGVyKiBsYXlvdXRUZXN0Q29udHJvbGxlcigpIGNvbnN0OwogCkBAIC0zMDcsOCArMzE2LDEw
IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudURhdGE+IG1f
bGFzdENvbnRleHRNZW51RGF0YTsKIAotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FU
SU9OKQogICAgIC8vIEdlb2xvY2F0aW9uCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NB
VElPTikKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s+IG1fZ2Vv
bG9jYXRpb25DbGllbnRNb2NrOworI2Vsc2UKICAgICBPd25QdHI8V2ViS2l0OjpXZWJHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrPiBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2s7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75813</attachid>
            <date>2010-12-07 07:09:48 -0800</date>
            <delta_ts>2010-12-08 10:32:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46895-20101207150946.patch</filename>
            <type>text/plain</type>
            <size>21312</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDdjZmQ4ODUzNzdkMzBjZDk0YzFlODZhYWNhMWE5ZGZmZmUwYTFhMWYu
LmY0NWM1MzA5YzNjZmM5MzRlZTdlYzY4YTA3NzBkM2U1MTAzYzNmYTkgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IG1vY2tzIGZvciBjbGllbnQtYmFzZWQgZ2VvbG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
ODk1CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6fldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKToKKyAg
ICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpz
ZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXNldE1vY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcDoKKwogMjAxMC0xMi0wNyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCAwMWJiMDkyNDUwODQwZDAwMGQyZWVhMzAyYzllNmJhNDY2ZjMyNzdiLi5hY2ViYzI0YzQ1
MTlhMjg0YTJmNjc5YThjNzA3NzllMjE1NDIyMWY1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTczLDYg
KzE3Myw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb250Q2FjaGUuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
Ykdlb2xvY2F0aW9uRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25T
ZXJ2aWNlLmgnLApAQCAtNDQ0LDYgKzQ0NSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJG
b3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcsCisgICAgICAgICAgICAgICAg
J3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkdlb2xvY2F0aW9uRXJyb3IuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9u
U2VydmljZUJyaWRnZUltcGwuY3BwJywKQEAgLTY2Nyw3ICs2NjksNiBAQAogICAgICAgICAgICAg
ICAgIFsnIkVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT049MSIgaW4gZmVhdHVyZV9kZWZp
bmVzJywgewogICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCiAgICAgICAgICAgICAg
ICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25TZXJ2aWNlLiokJ10sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9j
ay4qJ10sCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgfSwgewogICAg
ICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKQEAgLTg1Myw2ICs4NTQsMTEgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAgICAgfV0sCisgICAgICAgICAgICAgICAgWyciRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NB
VElPTj0xIiBpbiBmZWF0dXJlX2RlZmluZXMnLCB7CisgICAgICAgICAgICAgICAgICAgICdzb3Vy
Y2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2Nh
dGlvblNlcnZpY2UuKiQnXSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICB9XQogICAgICAgICAgICAgXSwKICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDhhODVlMmI4ZjQxZDk0M2ZmZDZiZDg4ZTQ1YTUxZjlmMWNlMDFlZgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9ja19oCisjZGVmaW5l
IFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9ja19oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVPd25Q
dHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247
CitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayA6IHB1
YmxpYyBXZWJHZW9sb2NhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgV0VCS0lUX0FQSSBzdGF0
aWMgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBjcmVhdGUoKTsKKyAgICB+V2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrKCkgeyByZXNldCgpOyB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UG9z
aXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kp
OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJT
dHJpbmcmIG1lc3NhZ2UpOworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wp
OworICAgIFdFQktJVF9BUEkgdm9pZCByZXNldE1vY2soKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
dGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxl
cihXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKKworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihjb25zdCBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Jik7CisgICAg
dmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KGNvbnN0IFdlYkdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QmKTsKKworICAgIHZpcnR1YWwgYm9vbCBsYXN0UG9zaXRpb24oV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbiYgd2ViUG9zaXRpb24pOworCitwcml2YXRlOgorICAgIFdlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jaygpOworICAgIFdFQktJVF9BUEkgdm9pZCByZXNldCgpOworCisg
ICAgV2ViUHJpdmF0ZU93blB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s+IG1fY2xp
ZW50TW9jazsKK307Cit9CisKKyNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2tfaApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2su
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUzODE2NmFhYjQyMWRlM2YzYTQ0ZjBlMDU3ODAyMWUxOTNiYjE2ODQKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAiQ3VycmVudFRpbWUuaCIKKyNp
bmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ2xpZW50TW9jay5o
IgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBv
c2l0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb25FcnJvci5oIgorI2luY2x1ZGUgIldlYkdlb2xv
Y2F0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uRXJyb3IuaCIKKyNp
bmNsdWRlICJXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogV2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpjcmVhdGUoKQoreworICAgIHJldHVybiBuZXcgV2ViR2VvbG9jYXRpb25D
bGllbnRNb2NrKCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQb3Np
dGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkK
K3sKKyAgICBXZWJHZW9sb2NhdGlvblBvc2l0aW9uIHdlYlBvc2l0aW9uKGN1cnJlbnRUaW1lKCks
IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmFsc2UsIDAsIGZhbHNlLCAwLCBmYWxzZSwgMCwgZmFsc2UsIDApOwor
ICAgIG1fY2xpZW50TW9jay0+c2V0UG9zaXRpb24od2ViUG9zaXRpb24pOworfQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgV2Vi
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yIGNvZGUg
PSBXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5hdmFpbGFibGU7CisgICAgc3dp
dGNoIChlcnJvckNvZGUpIHsKKyAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVO
SUVEOgorICAgICAgICBjb2RlID0gV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQZXJtaXNzaW9u
RGVuaWVkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9O
X1VOQVZBSUxBQkxFOgorICAgICAgICBjb2RlID0gV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQ
b3NpdGlvblVuYXZhaWxhYmxlOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBXZWJHZW9s
b2NhdGlvbkVycm9yIHdlYkVycm9yKGNvZGUsIG1lc3NhZ2UpOworICAgIG1fY2xpZW50TW9jay0+
c2V0RXJyb3Iod2ViRXJyb3IpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6
c2V0UGVybWlzc2lvbihib29sIGFsbG93ZWQpCit7CisgICAgbV9jbGllbnRNb2NrLT5zZXRQZXJt
aXNzaW9uKGFsbG93ZWQpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVz
ZXRNb2NrKCkKK3sKKyAgICBtX2NsaWVudE1vY2stPnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2NsaWVudE1vY2st
PnN0YXJ0VXBkYXRpbmcoKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0
b3BVcGRhdGluZygpCit7CisgICAgbV9jbGllbnRNb2NrLT5zdG9wVXBkYXRpbmcoKTsKK30KKwor
dm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29s
IGFjY3VyYWN5KQoreworICAgIG1fY2xpZW50TW9jay0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGFj
Y3VyYWN5KTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omdlb2xvY2F0aW9u
RGVzdHJveWVkKCkKK3sKKyAgICBtX2NsaWVudE1vY2stPmdlb2xvY2F0aW9uRGVzdHJveWVkKCk7
Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVyKFdlYkdl
b2xvY2F0aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKK3sKKyAgICBtX2NsaWVudE1vY2stPnNl
dENvbnRyb2xsZXIoY29udHJvbGxlci0+Y29udHJvbGxlcigpKTsKKyAgICBkZWxldGUgY29udHJv
bGxlcjsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlcXVlc3RQZXJtaXNz
aW9uKGNvbnN0IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmIHJlcXVlc3QpCit7Cisg
ICAgbV9jbGllbnRNb2NrLT5yZXF1ZXN0UGVybWlzc2lvbihyZXF1ZXN0Lmdlb2xvY2F0aW9uKCkp
OworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoY29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sK
KyAgICBtX2NsaWVudE1vY2stPmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KHJlcXVlc3QuZ2VvbG9j
YXRpb24oKSk7Cit9CisKK2Jvb2wgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRp
b24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiYgd2ViUG9zaXRpb24pCit7CisgICAgUmVmUHRyPEdl
b2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gbV9jbGllbnRNb2NrLT5sYXN0UG9zaXRpb24o
KTsKKyAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB3ZWJQ
b3NpdGlvbiA9IHBvc2l0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworV2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2soKQoreworICAg
IG1fY2xpZW50TW9jay5yZXNldChuZXcgR2VvbG9jYXRpb25DbGllbnRNb2NrKCkpOworfQorCit2
b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXQoKQoreworICAgIG1fY2xpZW50TW9j
ay5yZXNldCgwKTsKK30KKworfSAvLyBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwCmluZGV4IDA3ZDNmNDQ1OThjZGEzMTgzYTAw
MzRkMGVkMWQ2ZDEyODI3ZTlhMjQuLjY2N2I4YjE2ZWZiYmEwMzQ0ZjllMjUxYzBiNGQ2ZmY1N2E3
OWNjMGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcApAQCAtNDEsMzkgKzQxLDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0KLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xP
Q0FUSU9OKQotLy8gRklYTUU6IEltcGxlbWVudCBtb2NrIGJpbmRpbmdzIGZvciBjbGllbnQtYmFz
ZWQgZ2VvbG9jYXRpb24uIFVsdGltYXRlbHkKLS8vIG1vdmUgdG8gYW5vdGhlciBjbGFzcyBhbmQg
cmVtb3ZlIFdlYkdlb2xvY2F0aW9uU2VydmljZSouCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1j
bGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrQ2xpZW50QmFzZWRJbXBsIDogcHVibGljIFdl
Ykdlb2xvY2F0aW9uU2VydmljZU1vY2sgewotfTsKLQotV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9j
ayogV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y3JlYXRlV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jaygpCi17Ci0gICAgcmV0dXJuIG5ldyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrQ2xpZW50
QmFzZWRJbXBsOwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tH
ZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKQotewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgbW9jayBiaW5kaW5nCi19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0
dWRlLCBkb3VibGUgYWNjdXJhY3kpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBtb2NrIGJp
bmRpbmcKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCi17Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudCBtb2NrIGJpbmRpbmcKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbHNlCiB1c2luZyBXZWJDb3JlOjpDb29yZGluYXRlczsKIHVzaW5nIFdlYkNv
cmU6OkZyYW1lOwogdXNpbmcgV2ViQ29yZTo6R2VvbG9jYXRpb247CkBAIC0yNzIsNiArMjM5LDQg
QEAgdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6bm90aWZ5UGVuZGluZ1Blcm1p
c3Npb25zKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlNjkzNGQ1MjgxYWJkOWFjMzI1ZjFkZjhmOWI2MjhjMWQ3NmM0YTA1Li4zOWQwODYx
OTY1YmNiNjE2ZWIwYjAxYTJhNjAwMjk1OTc4ZGIzNTRkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTEtMjUgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XSBJbXBsZW1lbnQgbW9ja3MgZm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY4OTUKKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6Cisg
ICAgICAgIChXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViVmll
d0hvc3Q6Omdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVz
ZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisK
IDIwMTAtMTItMDYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYTU1
MDcwZTk4MjcyNzc2ZjQ2OGM0Yzk0MjBjYzMxNDUxYzBjOTY1My4uZDI1MmM2M2I0NTA2ZDMxZGJi
MTVjN2Q5NWRiZWM5MjQ4YjdlMTZkMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDMs
NyArNDMsMTEgQEAKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUgIldlYkVsZW1l
bnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCisjZWxzZQog
I2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suaCIKKyNlbmRpZgogI2luY2x1ZGUg
IldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYk5v
dGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMTUxMyw3ICsxNTE3LDExIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50cy5z
aXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNCb29sKCkpCiAgICAgICAgIHJldHVybjsKKyNp
ZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIG1fc2hlbGwtPndlYlZpZXdI
b3N0KCktPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5zZXRQZXJtaXNzaW9uKGFyZ3VtZW50c1sw
XS50b0Jvb2xlYW4oKSk7CisjZWxzZQogICAgIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNl
dE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpKTsKKyNl
bmRpZgogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
dWx0KQpAQCAtMTUyMSw3ICsxNTI5LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJnCiAgICAg
cmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAzIHx8ICFhcmd1
bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkgfHwgIWFyZ3Vt
ZW50c1syXS5pc051bWJlcigpKQogICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKENMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikKKyAgICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5nZW9sb2NhdGlv
bkNsaWVudE1vY2soKS0+c2V0UG9zaXRpb24oYXJndW1lbnRzWzBdLnRvRG91YmxlKCksIGFyZ3Vt
ZW50c1sxXS50b0RvdWJsZSgpLCBhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CisjZWxzZQogICAg
IFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGFy
Z3VtZW50c1swXS50b0RvdWJsZSgpLCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwgYXJndW1lbnRz
WzJdLnRvRG91YmxlKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCkBAIC0xNTI5LDcgKzE1NDEsMTEgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWUKICAgICByZXN1bHQtPnNldE51bGwoKTsKICAgICBpZiAoYXJndW1lbnRzLnNp
emUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbMV0uaXNT
dHJpbmcoKSkKICAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pCisgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+Z2VvbG9jYXRpb25DbGllbnRNb2Nr
KCktPnNldEVycm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGNwcFZhcmlhbnRUb1dlYlN0cmlu
Zyhhcmd1bWVudHNbMV0pKTsKKyNlbHNlCiAgICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFyaWFu
dFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOworI2VuZGlmCiB9CiAKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc1ODE3ODE0Mjdj
ZDQ2Zjc1NjdlMTgzOTNiZTZlY2JiNGQzMDMyMTcuLjAzYWZmYTM5NTRlNDY1NGE4YjMyNTcwMTQy
MDI5N2I4NzA1OWU3YzEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBAQAog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJH
ZW9sb2NhdGlvbkNsaWVudE1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CiBj
bGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRM
aXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcAppbmRleCA2Yjk3Yzc0MjlmZWY1YTU0N2Y2MDA0NWMwMjM1N2Q1ZGE5ZTM1
NDVmLi4xMGEyODIzYmE1NDhmOTI4Y2FlZWY5MzAyODIwOGQ1YWRiNjk5NTQxIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBA
IC00Myw3ICs0MywxMSBAQAogI2luY2x1ZGUgIldlYkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiV2Vi
RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaWYgRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKKyNl
bHNlCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIgorI2VuZGlmCiAjaW5j
bHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAi
V2ViUmFuZ2UuaCIKQEAgLTU3MSwxMCArNTc1LDIyIEBAIFdlYk5vdGlmaWNhdGlvblByZXNlbnRl
ciogV2ViVmlld0hvc3Q6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpCiAgICAgcmV0dXJuIG1fc2hl
bGwtPm5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogfQogCi0jaWYgIUVOQUJMRShDTElFTlRfQkFT
RURfR0VPTE9DQVRJT04pCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKK1dl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQqIFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlvbkNsaWVu
dCgpCit7CisgICAgcmV0dXJuIGdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOworfQorCitXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uQ2xpZW50
TW9jaygpCit7CisgICAgaWYgKCFtX2dlb2xvY2F0aW9uQ2xpZW50TW9jaykKKyAgICAgICAgbV9n
ZW9sb2NhdGlvbkNsaWVudE1vY2suc2V0KFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRl
KCkpOworICAgIHJldHVybiBtX2dlb2xvY2F0aW9uQ2xpZW50TW9jay5nZXQoKTsKK30KKyNlbHNl
CiBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9u
U2VydmljZSgpCiB7Ci0gICAgaWYgKCFtX2dlb2xvY2F0aW9uU2VydmljZU1vY2suZ2V0KCkpCisg
ICAgaWYgKCFtX2dlb2xvY2F0aW9uU2VydmljZU1vY2spCiAgICAgICAgIG1fZ2VvbG9jYXRpb25T
ZXJ2aWNlTW9jay5zZXQoV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y3JlYXRlV2ViR2VvbG9j
YXRpb25TZXJ2aWNlTW9jaygpKTsKICAgICByZXR1cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2Nr
LmdldCgpOwogfQpAQCAtMTE3MSw3ICsxMTg3LDEwIEBAIHZvaWQgV2ViVmlld0hvc3Q6OnJlc2V0
KCkKICAgICBtX2VkaXRDb21tYW5kTmFtZS5jbGVhcigpOwogICAgIG1fZWRpdENvbW1hbmRWYWx1
ZS5jbGVhcigpOwogCi0jaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisjaWYg
RU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBpZiAobV9nZW9sb2NhdGlvbkNs
aWVudE1vY2suZ2V0KCkpCisgICAgICAgIG1fZ2VvbG9jYXRpb25DbGllbnRNb2NrLT5yZXNldE1v
Y2soKTsKKyNlbHNlCiAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNsZWFyKCk7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmgKaW5kZXggYzg1OTViMzZmMzA3OTc5OTcwZjRhOGJjODAzMzQ4NWQ1YjZkZWM3ZS4uMjBi
MjljMGQ5Y2I2MTA5ZWY1NTVhMDA4NDcwYjNjZWQxNTA4ZTk4OCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC00OCw2ICs0OCw4
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazsK
K2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50OworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnRN
b2NrOwogY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazsKIGNsYXNzIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlcjsKIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CkBAIC0x
MzcsNyArMTM5LDkgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3
Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIGludCBo
aXN0b3J5Rm9yd2FyZExpc3RDb3VudCgpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbihjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBX
ZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24pOwogICAgIHZpcnR1YWwgV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpOwotI2lm
ICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorI2lmIEVOQUJMRShDTElFTlRfQkFT
RURfR0VPTE9DQVRJT04pCisgICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50
KiBnZW9sb2NhdGlvbkNsaWVudCgpOworI2Vsc2UKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKTsKICNlbmRpZgogICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJvbGxl
cihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKQEAgLTIwNiw2ICsyMTAsMTEgQEAg
Y2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMg
V2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiAgICAgTW9ja1NwZWxs
Q2hlY2sqIG1vY2tTcGVsbENoZWNrKCk7CiAKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xP
Q0FUSU9OKQorICAgIC8vIEdlb2xvY2F0aW9uIGNsaWVudCBtb2NrcyBmb3IgTGF5b3V0VGVzdENv
bnRyb2xsZXIKKyAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogZ2VvbG9jYXRp
b25DbGllbnRNb2NrKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXIoKSBjb25zdDsKIApAQCAtMzA3LDggKzMxNiwxMCBA
QCBwcml2YXRlOgogCiAgICAgT3duUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVEYXRhPiBtX2xh
c3RDb250ZXh0TWVudURhdGE7CiAKLSNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKICAgICAvLyBHZW9sb2NhdGlvbgorI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJ
T04pCisgICAgT3duUHRyPFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrPiBtX2dlb2xv
Y2F0aW9uQ2xpZW50TW9jazsKKyNlbHNlCiAgICAgT3duUHRyPFdlYktpdDo6V2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jaz4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75927</attachid>
            <date>2010-12-08 10:32:23 -0800</date>
            <delta_ts>2010-12-10 07:37:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46895-20101208183220.patch</filename>
            <type>text/plain</type>
            <size>21321</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDU2YjliY2U4NDNlOGJmMGJjYWYyNDU0OTZhYjFjMDE2M2QzYWIzZDIu
LmQzYmM2MmVkYzlhMGMyMjhlZTY0MTliZDRlNTliNjQ4OTNiNDFjZTUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IG1vY2tzIGZvciBjbGllbnQtYmFzZWQgZ2VvbG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
ODk1CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6fldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKToKKyAg
ICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpz
ZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXNldE1vY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcDoKKwogMjAxMC0xMi0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMDFi
YjA5MjQ1MDg0MGQwMDBkMmVlYTMwMmM5ZTZiYTQ2NmYzMjc3Yi4uYWNlYmMyNGM0NTE5YTI4NGEy
ZjY3OWE4YzcwNzc5ZTIxNTQyMjFmNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw2ICsxNzMsNyBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2Nh
dGlvbkVycm9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZS5o
JywKQEAgLTQ0NCw2ICs0NDUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViRm9ybUVsZW1l
bnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZyYW1lSW1wbC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9s
b2NhdGlvbkVycm9yLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2VJbXBsLmNwcCcsCkBAIC02NjcsNyArNjY5LDYgQEAKICAgICAgICAgICAgICAgICBbJyJF
TkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OPTEiIGluIGZlYXR1cmVfZGVmaW5lcycsIHsK
ICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgICAgICAgICAg
ICAgWydleGNsdWRlJywgJ1dlYkdlb2xvY2F0aW9uU2VydmljZS4qJCddLAotICAgICAgICAgICAg
ICAgICAgICAgICAgWydpbmNsdWRlJywgJ1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suKiddLAog
ICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcy8nOiBbCkBAIC04NTMsNiArODU0LDExIEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIH1d
LAorICAgICAgICAgICAgICAgIFsnIkVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT049MSIg
aW4gZmVhdHVyZV9kZWZpbmVzJywgeworICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBb
CisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25TZXJ2
aWNlLiokJ10sCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfV0KICAg
ICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4YTg1ZTJi
OGY0MWQ5NDNmZmQ2YmQ4OGU0NWE1MWY5ZjFjZTAxZWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oCkBAIC0wLDAgKzEs
NzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2tfaAorI2RlZmluZSBXZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlT3duUHRyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdlb2xvY2F0aW9uQ2xpZW50TW9jazsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3Mg
V2ViU3RyaW5nOworCitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMgV2Vi
R2VvbG9jYXRpb25DbGllbnQgeworcHVibGljOgorICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jayogY3JlYXRlKCk7CisgICAgfldlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jaygpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFBvc2l0aW9uKGRv
dWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKKyAgICBX
RUJLSVRfQVBJIHZvaWQgc2V0RXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgV2ViU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UGVybWlzc2lvbihib29sKTsKKyAgICBX
RUJLSVRfQVBJIHZvaWQgcmVzZXRNb2NrKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRh
dGluZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGdlb2xv
Y2F0aW9uRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoV2ViR2Vv
bG9jYXRpb25Db250cm9sbGVyKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oY29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCYpOworICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChjb25zdCBXZWJHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0Jik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbGFzdFBvc2l0aW9uKFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24mIHdlYlBvc2l0aW9uKTsKKworcHJpdmF0ZToKKyAgICBXZWJHZW9sb2NhdGlv
bkNsaWVudE1vY2soKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKworICAgIFdlYlBy
aXZhdGVPd25QdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrPiBtX2NsaWVudE1vY2s7
Cit9OworfQorCisjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrX2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZWMzZGQxMWE2MjljMWM0MWE3ZTA1MjNkNDhjZTlkNzgxZjRiMDBkCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBA
IC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaCIKKworI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCisjaW5jbHVkZSAi
R2VvbG9jYXRpb24uaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKKyNpbmNs
dWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5o
IgorI2luY2x1ZGUgIlBvc2l0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkVycm9yLmgiCisjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2sqIFdlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
aygpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24oZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCit7CisgICAg
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiB3ZWJQb3NpdGlvbihjdXJyZW50VGltZSgpLCBsYXRpdHVk
ZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbHNlLCAwLCBmYWxzZSwgMCwgZmFsc2UsIDAsIGZhbHNlLCAwKTsKKyAgICBtX2Ns
aWVudE1vY2stPnNldFBvc2l0aW9uKHdlYlBvc2l0aW9uKTsKK30KKwordm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnNldEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvciBjb2RlOworICAgIHN3
aXRjaCAoZXJyb3JDb2RlKSB7CisgICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RF
TklFRDoKKyAgICAgICAgY29kZSA9IFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUGVybWlzc2lv
bkRlbmllZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQT1NJVElP
Tl9VTkFWQUlMQUJMRToKKyAgICAgICAgY29kZSA9IFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9y
UG9zaXRpb25VbmF2YWlsYWJsZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBX
ZWJHZW9sb2NhdGlvbkVycm9yIHdlYkVycm9yKGNvZGUsIG1lc3NhZ2UpOworICAgIG1fY2xpZW50
TW9jay0+c2V0RXJyb3Iod2ViRXJyb3IpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6c2V0UGVybWlzc2lvbihib29sIGFsbG93ZWQpCit7CisgICAgbV9jbGllbnRNb2NrLT5z
ZXRQZXJtaXNzaW9uKGFsbG93ZWQpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6cmVzZXRNb2NrKCkKK3sKKyAgICBtX2NsaWVudE1vY2stPnJlc2V0KCk7Cit9CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2NsaWVu
dE1vY2stPnN0YXJ0VXBkYXRpbmcoKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OnN0b3BVcGRhdGluZygpCit7CisgICAgbV9jbGllbnRNb2NrLT5zdG9wVXBkYXRpbmcoKTsK
K30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sIGFjY3VyYWN5KQoreworICAgIG1fY2xpZW50TW9jay0+c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGFjY3VyYWN5KTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omdlb2xv
Y2F0aW9uRGVzdHJveWVkKCkKK3sKKyAgICBtX2NsaWVudE1vY2stPmdlb2xvY2F0aW9uRGVzdHJv
eWVkKCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVy
KFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKK3sKKyAgICBtX2NsaWVudE1v
Y2stPnNldENvbnRyb2xsZXIoY29udHJvbGxlci0+Y29udHJvbGxlcigpKTsKKyAgICBkZWxldGUg
Y29udHJvbGxlcjsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlcXVlc3RQ
ZXJtaXNzaW9uKGNvbnN0IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgbV9jbGllbnRNb2NrLT5yZXF1ZXN0UGVybWlzc2lvbihyZXF1ZXN0Lmdlb2xvY2F0
aW9uKCkpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlz
c2lvblJlcXVlc3QoY29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICBtX2NsaWVudE1vY2stPmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KHJlcXVlc3Qu
Z2VvbG9jYXRpb24oKSk7Cit9CisKK2Jvb2wgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0
UG9zaXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiYgd2ViUG9zaXRpb24pCit7CisgICAgUmVm
UHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gbV9jbGllbnRNb2NrLT5sYXN0UG9z
aXRpb24oKTsKKyAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICB3ZWJQb3NpdGlvbiA9IHBvc2l0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2soKQor
eworICAgIG1fY2xpZW50TW9jay5yZXNldChuZXcgR2VvbG9jYXRpb25DbGllbnRNb2NrKCkpOwor
fQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXQoKQoreworICAgIG1fY2xp
ZW50TW9jay5yZXNldCgwKTsKK30KKworfSAvLyBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwCmluZGV4IDA3ZDNmNDQ1OThjZGEz
MTgzYTAwMzRkMGVkMWQ2ZDEyODI3ZTlhMjQuLjY2N2I4YjE2ZWZiYmEwMzQ0ZjllMjUxYzBiNGQ2
ZmY1N2E3OWNjMGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jay5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrLmNwcApAQCAtNDEsMzkgKzQxLDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0KLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKQotLy8gRklYTUU6IEltcGxlbWVudCBtb2NrIGJpbmRpbmdzIGZvciBjbGll
bnQtYmFzZWQgZ2VvbG9jYXRpb24uIFVsdGltYXRlbHkKLS8vIG1vdmUgdG8gYW5vdGhlciBjbGFz
cyBhbmQgcmVtb3ZlIFdlYkdlb2xvY2F0aW9uU2VydmljZSouCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrQ2xpZW50QmFzZWRJbXBsIDogcHVi
bGljIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2sgewotfTsKLQotV2ViR2VvbG9jYXRpb25TZXJ2
aWNlTW9jayogV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y3JlYXRlV2ViR2VvbG9jYXRpb25T
ZXJ2aWNlTW9jaygpCi17Ci0gICAgcmV0dXJuIG5ldyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2Nr
Q2xpZW50QmFzZWRJbXBsOwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNl
dE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKQotewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgbW9jayBiaW5kaW5nCi19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBt
b2NrIGJpbmRpbmcKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2Nr
R2VvbG9jYXRpb25FcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2Up
Ci17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBtb2NrIGJpbmRpbmcKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbHNlCiB1c2luZyBXZWJDb3JlOjpDb29yZGluYXRlczsKIHVzaW5n
IFdlYkNvcmU6OkZyYW1lOwogdXNpbmcgV2ViQ29yZTo6R2VvbG9jYXRpb247CkBAIC0yNzIsNiAr
MjM5LDQgQEAgdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6bm90aWZ5UGVuZGlu
Z1Blcm1pc3Npb25zKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NB
VElPTikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0No
YW5nZUxvZwppbmRleCA4MDQ5ZGJmMjhhN2ViMTk5Y2UyNmY2MDIyMGJlYzg0NWJiMGU1MDY1Li5l
ZmZiYjQwM2RlY2MzZDMwODBkMWNlNWQ0Y2E1N2Y5MDNlZDQ5YzMwIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTAtMTEtMjUgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0No
cm9taXVtXSBJbXBsZW1lbnQgbW9ja3MgZm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY4OTUKKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24p
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25F
cnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25DbGllbnQpOgorICAgICAgICAo
V2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJWaWV3SG9z
dDo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
Lmg6CisKIDIwMTAtMTItMDggIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggYTU1MDcwZTk4MjcyNzc2ZjQ2OGM0Yzk0MjBjYzMxNDUxYzBjOTY1My4uZDI1MmM2M2I0
NTA2ZDMxZGJiMTVjN2Q5NWRiZWM5MjQ4YjdlMTZkMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cApAQCAtNDMsNyArNDMsMTEgQEAKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2lmIEVOQUJMRShDTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgi
CisjZWxzZQogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suaCIKKyNlbmRpZgog
I2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1
ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMTUxMyw3ICsxNTE3LDExIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFy
Z3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNCb29sKCkpCiAgICAgICAgIHJl
dHVybjsKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIG1fc2hlbGwt
PndlYlZpZXdIb3N0KCktPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5zZXRQZXJtaXNzaW9uKGFy
Z3VtZW50c1swXS50b0Jvb2xlYW4oKSk7CisjZWxzZQogICAgIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oYXJndW1lbnRzWzBdLnRvQm9vbGVh
bigpKTsKKyNlbmRpZgogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQpAQCAtMTUyMSw3ICsxNTI5LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJnCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAz
IHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkg
fHwgIWFyZ3VtZW50c1syXS5pc051bWJlcigpKQogICAgICAgICByZXR1cm47CisjaWYgRU5BQkxF
KENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5n
ZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0UG9zaXRpb24oYXJndW1lbnRzWzBdLnRvRG91Ymxl
KCksIGFyZ3VtZW50c1sxXS50b0RvdWJsZSgpLCBhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7Cisj
ZWxzZQogICAgIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uKGFyZ3VtZW50c1swXS50b0RvdWJsZSgpLCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwg
YXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCkBAIC0xNTI5LDcgKzE1NDEsMTEgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWUKICAgICByZXN1bHQtPnNldE51bGwoKTsKICAgICBpZiAoYXJn
dW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpIHx8ICFhcmd1bWVu
dHNbMV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDTElFTlRfQkFT
RURfR0VPTE9DQVRJT04pCisgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+Z2VvbG9jYXRpb25D
bGllbnRNb2NrKCktPnNldEVycm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGNwcFZhcmlhbnRU
b1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKKyNlbHNlCiAgICAgV2ViR2VvbG9jYXRpb25TZXJ2
aWNlTW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwg
Y3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOworI2VuZGlmCiB9CiAKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc1
ODE3ODE0MjdjZDQ2Zjc1NjdlMTgzOTNiZTZlY2JiNGQzMDMyMTcuLjAzYWZmYTM5NTRlNDY1NGE4
YjMyNTcwMTQyMDI5N2I4NzA1OWU3YzEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNDksNiAr
NDksNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogY2xhc3MgV2ViU3Bl
ZWNoSW5wdXRMaXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA2Yjk3Yzc0MjlmZWY1YTU0N2Y2MDA0NWMwMjM1
N2Q1ZGE5ZTM1NDVmLi4xMGEyODIzYmE1NDhmOTI4Y2FlZWY5MzAyODIwOGQ1YWRiNjk5NTQxIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwCkBAIC00Myw3ICs0MywxMSBAQAogI2luY2x1ZGUgIldlYkRyYWdEYXRhLmgiCiAjaW5j
bHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaWYgRU5BQkxFKENM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudE1v
Y2suaCIKKyNlbHNlCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIgorI2Vu
ZGlmCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAj
aW5jbHVkZSAiV2ViUmFuZ2UuaCIKQEAgLTU3MSwxMCArNTc1LDIyIEBAIFdlYk5vdGlmaWNhdGlv
blByZXNlbnRlciogV2ViVmlld0hvc3Q6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpCiAgICAgcmV0
dXJuIG1fc2hlbGwtPm5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogfQogCi0jaWYgIUVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NB
VElPTikKK1dlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQqIFdlYlZpZXdIb3N0OjpnZW9sb2Nh
dGlvbkNsaWVudCgpCit7CisgICAgcmV0dXJuIGdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOworfQor
CitXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogV2ViVmlld0hvc3Q6Omdlb2xvY2F0
aW9uQ2xpZW50TW9jaygpCit7CisgICAgaWYgKCFtX2dlb2xvY2F0aW9uQ2xpZW50TW9jaykKKyAg
ICAgICAgbV9nZW9sb2NhdGlvbkNsaWVudE1vY2suc2V0KFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6Y3JlYXRlKCkpOworICAgIHJldHVybiBtX2dlb2xvY2F0aW9uQ2xpZW50TW9jay5nZXQoKTsK
K30KKyNlbHNlCiBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogV2ViVmlld0hvc3Q6Omdl
b2xvY2F0aW9uU2VydmljZSgpCiB7Ci0gICAgaWYgKCFtX2dlb2xvY2F0aW9uU2VydmljZU1vY2su
Z2V0KCkpCisgICAgaWYgKCFtX2dlb2xvY2F0aW9uU2VydmljZU1vY2spCiAgICAgICAgIG1fZ2Vv
bG9jYXRpb25TZXJ2aWNlTW9jay5zZXQoV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y3JlYXRl
V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jaygpKTsKICAgICByZXR1cm4gbV9nZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmdldCgpOwogfQpAQCAtMTE3MSw3ICsxMTg3LDEwIEBAIHZvaWQgV2ViVmlld0hv
c3Q6OnJlc2V0KCkKICAgICBtX2VkaXRDb21tYW5kTmFtZS5jbGVhcigpOwogICAgIG1fZWRpdENv
bW1hbmRWYWx1ZS5jbGVhcigpOwogCi0jaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJ
T04pCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBpZiAobV9nZW9s
b2NhdGlvbkNsaWVudE1vY2suZ2V0KCkpCisgICAgICAgIG1fZ2VvbG9jYXRpb25DbGllbnRNb2Nr
LT5yZXNldE1vY2soKTsKKyNlbHNlCiAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNsZWFy
KCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmgKaW5kZXggYzg1OTViMzZmMzA3OTc5OTcwZjRhOGJjODAzMzQ4NWQ1YjZk
ZWM3ZS4uMjBiMjljMGQ5Y2I2MTA5ZWY1NTVhMDA4NDcwYjNjZWQxNTA4ZTk4OCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC00
OCw2ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jazsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50OworY2xhc3MgV2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrOwogY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazsKIGNsYXNzIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlcjsKIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2s7CkBAIC0xMzcsNyArMTM5LDkgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0
OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0
dWFsIGludCBoaXN0b3J5Rm9yd2FyZExpc3RDb3VudCgpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlP
YmplY3QmLCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24pOwogICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRl
cigpOwotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorI2lmIEVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uQ2xpZW50KiBnZW9sb2NhdGlvbkNsaWVudCgpOworI2Vsc2UKICAgICB2aXJ0dWFsIFdlYktp
dDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKTsKICNlbmRpZgog
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0
Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKQEAgLTIwNiw2ICsy
MTAsMTEgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50
LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICBXZWJLaXQ6OldlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiAgICAg
TW9ja1NwZWxsQ2hlY2sqIG1vY2tTcGVsbENoZWNrKCk7CiAKKyNpZiBFTkFCTEUoQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OKQorICAgIC8vIEdlb2xvY2F0aW9uIGNsaWVudCBtb2NrcyBmb3IgTGF5
b3V0VGVzdENvbnRyb2xsZXIKKyAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayog
Z2VvbG9jYXRpb25DbGllbnRNb2NrKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXIoKSBjb25zdDsKIApAQCAtMzA3LDgg
KzMxNiwxMCBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVE
YXRhPiBtX2xhc3RDb250ZXh0TWVudURhdGE7CiAKLSNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKICAgICAvLyBHZW9sb2NhdGlvbgorI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCisgICAgT3duUHRyPFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2Nr
PiBtX2dlb2xvY2F0aW9uQ2xpZW50TW9jazsKKyNlbHNlCiAgICAgT3duUHRyPFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25TZXJ2aWNlTW9jaz4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrOwogI2VuZGlm
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76198</attachid>
            <date>2010-12-10 07:37:33 -0800</date>
            <delta_ts>2010-12-10 10:54:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46895-20101210153730.patch</filename>
            <type>text/plain</type>
            <size>21405</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDgxNjRkNmI1YzllN2U3Nzk1NDQ0YTVkM2EwYTllZmI2ZmJjYTlmZWYu
LjE5NTU3ZDRiZDYwNTMxNWM4NGMzZjhiOTExYmQ3YmU5ZjJkOTBkOWMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IG1vY2tzIGZvciBjbGllbnQtYmFzZWQgZ2VvbG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
ODk1CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6fldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKToKKyAg
ICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpz
ZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXNldE1vY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcDoKKwogMjAxMC0xMi0xMCAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKaW5kZXggY2JlYTA0ZDc3NzNlODg3OTc3OTUxYmJlOTgxNzhiYzk3OTk2MGI5Ny4uYmQ4ZjRh
NWM1ZWI1MzFiMjAzMWI4NjFlMzQ3NTY4NGRhZmY0ZDc5NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3
NCw2ICsxNzQsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVt
ZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudC5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkdlb2xvY2F0aW9uRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgnLApAQCAtNDUxLDYgKzQ1Miw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkZyYW1lSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25DbGll
bnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvbkVycm9yLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAnLApAQCAtNjc2LDcgKzY3OCw2IEBACiAgICAgICAgICAgICAgICAgWyci
RU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTj0xIiBpbiBmZWF0dXJlX2RlZmluZXMnLCB7
CiAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvblNlcnZpY2UuKiQnXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFsnaW5jbHVkZScsICdXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLionXSwK
ICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAg
ICAgICAgICAgJ3NvdXJjZXMvJzogWwpAQCAtODY2LDYgKzg2NywxMSBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICB9
XSwKKyAgICAgICAgICAgICAgICBbJyJFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OPTEi
IGluIGZlYXR1cmVfZGVmaW5lcycsIHsKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMvJzog
WworICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ1dlYkdlb2xvY2F0aW9uU2Vy
dmljZS4qJCddLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH1dCiAg
ICAgICAgICAgICBdLAogICAgICAgICB9LAogICAgICAgICB7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGE4NWUy
YjhmNDFkOTQzZmZkNmJkODhlNDVhNTFmOWYxY2UwMWVmCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtMCwwICsx
LDc2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrX2gKKyNkZWZpbmUgV2ViR2Vv
bG9jYXRpb25DbGllbnRNb2NrX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
IldlYkdlb2xvY2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0ci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHZW9sb2NhdGlvbkNsaWVudE1vY2s7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsKK2NsYXNz
IFdlYlN0cmluZzsKKworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrIDogcHVibGljIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJH
ZW9sb2NhdGlvbkNsaWVudE1vY2sqIGNyZWF0ZSgpOworICAgIH5XZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2soKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRQb3NpdGlvbihk
b3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CisgICAg
V0VCS0lUX0FQSSB2b2lkIHNldEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYg
bWVzc2FnZSk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFBlcm1pc3Npb24oYm9vbCk7CisgICAg
V0VCS0lUX0FQSSB2b2lkIHJlc2V0TW9jaygpOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBk
YXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2
b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKKworICAgIHZpcnR1YWwgdm9pZCBnZW9s
b2NhdGlvbkRlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKFdlYkdl
b2xvY2F0aW9uQ29udHJvbGxlciopOworCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNz
aW9uKGNvbnN0IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoY29uc3QgV2ViR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCYpOworCisgICAgdmlydHVhbCBib29sIGxhc3RQb3NpdGlvbihXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uJiB3ZWJQb3NpdGlvbik7CisKK3ByaXZhdGU6CisgICAgV2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrKCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7CisKKyAgICBXZWJQ
cml2YXRlT3duUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV9jbGllbnRNb2Nr
OworfTsKK30KKworI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9ja19oCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWVjM2RkMTFhNjI5YzFjNDFhN2UwNTIzZDQ4Y2U5ZDc4MWY0YjAwZAotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApA
QCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJDdXJyZW50VGltZS5oIgorI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCisjaW5j
bHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24u
aCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25D
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25FcnJvci5oIgorI2luY2x1ZGUg
IldlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2s6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJHZW9sb2NhdGlvbkNsaWVudE1v
Y2soKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKGRv
dWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQoreworICAg
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gd2ViUG9zaXRpb24oY3VycmVudFRpbWUoKSwgbGF0aXR1
ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWxzZSwgMCwgZmFsc2UsIDAsIGZhbHNlLCAwLCBmYWxzZSwgMCk7CisgICAgbV9j
bGllbnRNb2NrLT5zZXRQb3NpdGlvbih3ZWJQb3NpdGlvbik7Cit9CisKK3ZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpzZXRFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3IgY29kZTsKKyAgICBz
d2l0Y2ggKGVycm9yQ29kZSkgeworICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9E
RU5JRUQ6CisgICAgICAgIGNvZGUgPSBXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBlcm1pc3Np
b25EZW5pZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UE9TSVRJ
T05fVU5BVkFJTEFCTEU6CisgICAgICAgIGNvZGUgPSBXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJv
clBvc2l0aW9uVW5hdmFpbGFibGU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
V2ViR2VvbG9jYXRpb25FcnJvciB3ZWJFcnJvcihjb2RlLCBtZXNzYWdlKTsKKyAgICBtX2NsaWVu
dE1vY2stPnNldEVycm9yKHdlYkVycm9yKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2s6OnNldFBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKQoreworICAgIG1fY2xpZW50TW9jay0+
c2V0UGVybWlzc2lvbihhbGxvd2VkKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OnJlc2V0TW9jaygpCit7CisgICAgbV9jbGllbnRNb2NrLT5yZXNldCgpOworfQorCit2b2lk
IFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZygpCit7CisgICAgbV9jbGll
bnRNb2NrLT5zdGFydFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1fY2xpZW50TW9jay0+c3RvcFVwZGF0aW5nKCk7
Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRFbmFibGVIaWdoQWNjdXJh
Y3koYm9vbCBhY2N1cmFjeSkKK3sKKyAgICBtX2NsaWVudE1vY2stPnNldEVuYWJsZUhpZ2hBY2N1
cmFjeShhY2N1cmFjeSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9s
b2NhdGlvbkRlc3Ryb3llZCgpCit7CisgICAgbV9jbGllbnRNb2NrLT5nZW9sb2NhdGlvbkRlc3Ry
b3llZCgpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxl
cihXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgbV9jbGllbnRN
b2NrLT5zZXRDb250cm9sbGVyKGNvbnRyb2xsZXItPmNvbnRyb2xsZXIoKSk7CisgICAgZGVsZXRl
IGNvbnRyb2xsZXI7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0
UGVybWlzc2lvbihjb25zdCBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIG1fY2xpZW50TW9jay0+cmVxdWVzdFBlcm1pc3Npb24ocmVxdWVzdC5nZW9sb2Nh
dGlvbigpKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KGNvbnN0IFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QmIHJlcXVl
c3QpCit7CisgICAgbV9jbGllbnRNb2NrLT5jYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChyZXF1ZXN0
Lmdlb2xvY2F0aW9uKCkpOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFz
dFBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24mIHdlYlBvc2l0aW9uKQoreworICAgIFJl
ZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IG1fY2xpZW50TW9jay0+bGFzdFBv
c2l0aW9uKCk7CisgICAgaWYgKCFwb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgd2ViUG9zaXRpb24gPSBwb3NpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKCkK
K3sKKyAgICBtX2NsaWVudE1vY2sucmVzZXQobmV3IEdlb2xvY2F0aW9uQ2xpZW50TW9jaygpKTsK
K30KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlc2V0KCkKK3sKKyAgICBtX2Ns
aWVudE1vY2sucmVzZXQoMCk7Cit9CisKK30gLy8gV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcAppbmRleCAwN2QzZjQ0NTk4Y2Rh
MzE4M2EwMDM0ZDBlZDFkNmQxMjgyN2U5YTI0Li42NjdiOGIxNmVmYmJhMDM0NGY5ZTI1MWMwYjRk
NmZmNTdhNzljYzBkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0
aW9uU2VydmljZU1vY2suY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jay5jcHAKQEAgLTQxLDM5ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotCi0jaWYgRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKLS8vIEZJWE1FOiBJbXBsZW1lbnQgbW9jayBiaW5kaW5ncyBmb3IgY2xp
ZW50LWJhc2VkIGdlb2xvY2F0aW9uLiBVbHRpbWF0ZWx5Ci0vLyBtb3ZlIHRvIGFub3RoZXIgY2xh
c3MgYW5kIHJlbW92ZSBXZWJHZW9sb2NhdGlvblNlcnZpY2UqLgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0NsaWVudEJhc2VkSW1wbCA6IHB1
YmxpYyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrIHsKLX07Ci0KLVdlYkdlb2xvY2F0aW9uU2Vy
dmljZU1vY2sqIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OmNyZWF0ZVdlYkdlb2xvY2F0aW9u
U2VydmljZU1vY2soKQotewotICAgIHJldHVybiBuZXcgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9j
a0NsaWVudEJhc2VkSW1wbDsKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpz
ZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCkKLXsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IG1vY2sgYmluZGluZwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91Ymxl
IGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
bW9jayBiaW5kaW5nCi19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0TW9j
a0dlb2xvY2F0aW9uRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdl
KQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbW9jayBiaW5kaW5nCi19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZWxzZQogdXNpbmcgV2ViQ29yZTo6Q29vcmRpbmF0ZXM7CiB1c2lu
ZyBXZWJDb3JlOjpGcmFtZTsKIHVzaW5nIFdlYkNvcmU6Okdlb2xvY2F0aW9uOwpAQCAtMjcyLDYg
KzIzOSw0IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw6Om5vdGlmeVBlbmRp
bmdQZXJtaXNzaW9ucygpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9D
QVRJT04pCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKaW5kZXggZTRmYTE0MzZhYzMyZWM1ODliYzJlYzFlYjg3NjhkZmQ2ZjQzMjIxMS4u
ZmM5NDVhM2I3MTU2NDA5OGMxNmU1YmZkNTQ0ZmVmNjk1NGJkY2E5NyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtD
aHJvbWl1bV0gSW1wbGVtZW50IG1vY2tzIGZvciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2ODk1CisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9u
RXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uQ2xpZW50KToKKyAgICAgICAg
KFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlvbkNsaWVudE1vY2spOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5oOgorCiAyMDEwLTEyLTEwICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBu
b2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYTU1MDcwZTk4MjcyNzc2ZjQ2OGM0Yzk0
MjBjYzMxNDUxYzBjOTY1My4uZDI1MmM2M2I0NTA2ZDMxZGJiMTVjN2Q5NWRiZWM5MjQ4YjdlMTZk
MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsMTEgQEAKICNpbmNsdWRl
ICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJG
cmFtZS5oIgorI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCisjZWxzZQogI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uU2VydmljZU1vY2suaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5o
IgpAQCAtMTUxMyw3ICsxNTE3LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtCiAgICAgcmVz
dWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVu
dHNbMF0uaXNCb29sKCkpCiAgICAgICAgIHJldHVybjsKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKQorICAgIG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPmdlb2xvY2F0aW9uQ2xp
ZW50TW9jaygpLT5zZXRQZXJtaXNzaW9uKGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSk7CisjZWxz
ZQogICAgIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1p
c3Npb24oYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpKTsKKyNlbmRpZgogfQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTUyMSw3ICsxNTI5
LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJnCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAg
ICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAzIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8
fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1syXS5pc051bWJlcigpKQog
ICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAg
ICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0UG9z
aXRpb24oYXJndW1lbnRzWzBdLnRvRG91YmxlKCksIGFyZ3VtZW50c1sxXS50b0RvdWJsZSgpLCBh
cmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CisjZWxzZQogICAgIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGFyZ3VtZW50c1swXS50b0RvdWJsZSgp
LCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
CkBAIC0xNTI5LDcgKzE1NDEsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWUKICAgICByZXN1
bHQtPnNldE51bGwoKTsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50
c1swXS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0
dXJuOworI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgbV9zaGVsbC0+
d2ViVmlld0hvc3QoKS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldEVycm9yKGFyZ3VtZW50
c1swXS50b0ludDMyKCksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKKyNl
bHNlCiAgICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50
c1sxXSkpOworI2VuZGlmCiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9k
YWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc1ODE3ODE0MjdjZDQ2Zjc1NjdlMTgzOTNiZTZlY2Ji
NGQzMDMyMTcuLjAzYWZmYTM5NTRlNDY1NGE4YjMyNTcwMTQyMDI5N2I4NzA1OWU3YzEgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s7
CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA2
Yjk3Yzc0MjlmZWY1YTU0N2Y2MDA0NWMwMjM1N2Q1ZGE5ZTM1NDVmLi4xMGEyODIzYmE1NDhmOTI4
Y2FlZWY5MzAyODIwOGQ1YWRiNjk5NTQxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC00Myw3ICs0MywxMSBAQAogI2lu
Y2x1ZGUgIldlYkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1ZGUg
IldlYkZyYW1lLmgiCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKKyNlbHNlCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jay5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0u
aCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKQEAgLTU3MSwx
MCArNTc1LDIyIEBAIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlciogV2ViVmlld0hvc3Q6Om5vdGlm
aWNhdGlvblByZXNlbnRlcigpCiAgICAgcmV0dXJuIG1fc2hlbGwtPm5vdGlmaWNhdGlvblByZXNl
bnRlcigpOwogfQogCi0jaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisjaWYg
RU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKK1dlYktpdDo6V2ViR2VvbG9jYXRpb25D
bGllbnQqIFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlvbkNsaWVudCgpCit7CisgICAgcmV0dXJuIGdl
b2xvY2F0aW9uQ2xpZW50TW9jaygpOworfQorCitXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jayogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uQ2xpZW50TW9jaygpCit7CisgICAgaWYgKCFt
X2dlb2xvY2F0aW9uQ2xpZW50TW9jaykKKyAgICAgICAgbV9nZW9sb2NhdGlvbkNsaWVudE1vY2su
c2V0KFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKCkpOworICAgIHJldHVybiBtX2dl
b2xvY2F0aW9uQ2xpZW50TW9jay5nZXQoKTsKK30KKyNlbHNlCiBXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uU2VydmljZSogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uU2VydmljZSgpCiB7Ci0gICAgaWYg
KCFtX2dlb2xvY2F0aW9uU2VydmljZU1vY2suZ2V0KCkpCisgICAgaWYgKCFtX2dlb2xvY2F0aW9u
U2VydmljZU1vY2spCiAgICAgICAgIG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jay5zZXQoV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jazo6Y3JlYXRlV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jaygpKTsK
ICAgICByZXR1cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLmdldCgpOwogfQpAQCAtMTE3MSw3
ICsxMTg3LDEwIEBAIHZvaWQgV2ViVmlld0hvc3Q6OnJlc2V0KCkKICAgICBtX2VkaXRDb21tYW5k
TmFtZS5jbGVhcigpOwogICAgIG1fZWRpdENvbW1hbmRWYWx1ZS5jbGVhcigpOwogCi0jaWYgIUVO
QUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKKyAgICBpZiAobV9nZW9sb2NhdGlvbkNsaWVudE1vY2suZ2V0KCkpCisgICAg
ICAgIG1fZ2VvbG9jYXRpb25DbGllbnRNb2NrLT5yZXNldE1vY2soKTsKKyNlbHNlCiAgICAgbV9n
ZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNsZWFyKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggYzg1OTViMzZm
MzA3OTc5OTcwZjRhOGJjODAzMzQ4NWQ1YjZkZWM3ZS4uMjBiMjljMGQ5Y2I2MTA5ZWY1NTVhMDA4
NDcwYjNjZWQxNTA4ZTk4OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC00OCw2ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNs
YXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazsKK2NsYXNzIFdlYkdlb2xvY2F0aW9u
Q2xpZW50OworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOwogY2xhc3MgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlTW9jazsKIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKIGNsYXNz
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CkBAIC0xMzcsNyArMTM5LDkgQEAgY2xhc3Mg
V2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0
OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIGludCBoaXN0b3J5Rm9yd2FyZExpc3RDb3Vu
dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25z
dCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb24pOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJOb3RpZmljYXRpb25QcmVz
ZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpOwotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKQorI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAg
dmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50KiBnZW9sb2NhdGlvbkNsaWVudCgp
OworI2Vsc2UKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBnZW9s
b2NhdGlvblNlcnZpY2UoKTsKICNlbmRpZgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElu
cHV0TGlzdGVuZXIqKTsKQEAgLTIwNiw2ICsyMTAsMTEgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBw
dWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVu
dCwKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrKCk7CiAgICAgTW9ja1NwZWxsQ2hlY2sqIG1vY2tTcGVsbENoZWNr
KCk7CiAKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIC8vIEdlb2xv
Y2F0aW9uIGNsaWVudCBtb2NrcyBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICBXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRy
b2xsZXIoKSBjb25zdDsKIApAQCAtMzA3LDggKzMxNiwxMCBAQCBwcml2YXRlOgogCiAgICAgT3du
UHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVEYXRhPiBtX2xhc3RDb250ZXh0TWVudURhdGE7CiAK
LSNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAvLyBHZW9sb2NhdGlv
bgorI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgT3duUHRyPFdlYktp
dDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrPiBtX2dlb2xvY2F0aW9uQ2xpZW50TW9jazsKKyNl
bHNlCiAgICAgT3duUHRyPFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jaz4gbV9nZW9s
b2NhdGlvblNlcnZpY2VNb2NrOwogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>