<?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>71678</bug_id>
          
          <creation_ts>2011-11-07 06:18:20 -0800</creation_ts>
          <short_desc>[chromium] MediaStream API: Adding embedding code for GetUserMedia</short_desc>
          <delta_ts>2011-11-23 02:04:36 -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 API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>70897</dependson>
    
    <dependson>72925</dependson>
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>adam.bergkvist</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>fishd</cc>
    
    <cc>grunell</cc>
    
    <cc>harald</cc>
    
    <cc>kpe</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497128</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-07 06:18:20 -0800</bug_when>
    <thetext>Adding WebUserMediaRequest and UserMediaClientImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497137</commentid>
    <comment_count>1</comment_count>
      <attachid>113858</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-07 06:37:57 -0800</bug_when>
    <thetext>Created attachment 113858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497204</commentid>
    <comment_count>2</comment_count>
      <attachid>113858</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-07 08:47:49 -0800</bug_when>
    <thetext>Comment on attachment 113858
Patch

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

I would have expected the Client to implement UserMediaClient rather then having WebKit/chromium/src implement UserMediaClient in terms of WebKitPlatformSupport.  UserMediaClient seems to be asking for a policy decision, which is the purview of the Client.

&gt; Source/WebKit/chromium/public/WebKitPlatformSupport.h:332
&gt; +    virtual void requestUserMedia(const WebUserMediaRequest&amp;) { }
&gt; +    virtual void cancelUserMediaRequest(const WebUserMediaRequest&amp;) { }

I would have expected pointers, not references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498052</commentid>
    <comment_count>3</comment_count>
      <attachid>114065</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-08 07:51:10 -0800</bug_when>
    <thetext>Created attachment 114065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498055</commentid>
    <comment_count>4</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-08 07:53:17 -0800</bug_when>
    <thetext>Something along these lines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498287</commentid>
    <comment_count>5</comment_count>
      <attachid>114065</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 11:37:40 -0800</bug_when>
    <thetext>Comment on attachment 114065
Patch

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

Yes.  This looks great.

&gt; Source/WebKit/chromium/src/UserMediaClientImpl.h:37
&gt; +

Extra blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498358</commentid>
    <comment_count>6</comment_count>
      <attachid>114065</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-08 12:41:02 -0800</bug_when>
    <thetext>Comment on attachment 114065
Patch

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

&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:36
&gt; +    virtual void userMediaControllerDestroyed() = 0;

What &quot;user media controller&quot; does this method correspond to?  maybe this method should be named cancelAllUserMediaRequests?  is the expectation that a cancelled WebUserMediaRequest will have its requestFailed method called?  do you not care about distinguishing requests that fail due to cancelation from those that fail due to other errors?  no need to report an error code of some sort in other words?

&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:38
&gt; +    virtual void cancelUserMediaRequest(const WebUserMediaRequest&amp;) = 0;

it seems like the embedder will need some way to compare WebUserMediaRequest objects for equality.  otherwise, it will be difficult to correlate a cancelUserMediaRequest to a requestUserMedia call.  the WebUserMediaRequest object could be copied, so you cannot use pointer identity.

&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:49
&gt; +    void requestSucceeded(const WebVector&lt;WebMediaStreamSource&gt;&amp;);

it looks like these will require WEBKIT_EXPORT too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498809</commentid>
    <comment_count>7</comment_count>
      <attachid>114065</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-09 04:08:36 -0800</bug_when>
    <thetext>Comment on attachment 114065
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:36
&gt;&gt; +    virtual void userMediaControllerDestroyed() = 0;
&gt; 
&gt; What &quot;user media controller&quot; does this method correspond to?  maybe this method should be named cancelAllUserMediaRequests?  is the expectation that a cancelled WebUserMediaRequest will have its requestFailed method called?  do you not care about distinguishing requests that fail due to cancelation from those that fail due to other errors?  no need to report an error code of some sort in other words?

This is the UserMediaController hanging of the page.

I have asked for clarification regarding your second question from the WebCore patch author, and would prefer if cancelUserMediaRequest is called for each outstanding request in addition to this function.

And lastly, no we do not care about what went wrong since unfortunately there isn&apos;t a way to convey that error currently in the WebRTC spec.

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:38
&gt;&gt; +    virtual void cancelUserMediaRequest(const WebUserMediaRequest&amp;) = 0;
&gt; 
&gt; it seems like the embedder will need some way to compare WebUserMediaRequest objects for equality.  otherwise, it will be difficult to correlate a cancelUserMediaRequest to a requestUserMedia call.  the WebUserMediaRequest object could be copied, so you cannot use pointer identity.

Fixed.

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:49
&gt;&gt; +    void requestSucceeded(const WebVector&lt;WebMediaStreamSource&gt;&amp;);
&gt; 
&gt; it looks like these will require WEBKIT_EXPORT too

Fixed.

&gt;&gt; Source/WebKit/chromium/src/UserMediaClientImpl.h:37
&gt;&gt; +
&gt; 
&gt; Extra blank line here.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498811</commentid>
    <comment_count>8</comment_count>
      <attachid>114245</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-09 04:11:05 -0800</bug_when>
    <thetext>Created attachment 114245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498854</commentid>
    <comment_count>9</comment_count>
      <attachid>114255</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-09 05:20:15 -0800</bug_when>
    <thetext>Created attachment 114255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500598</commentid>
    <comment_count>10</comment_count>
      <attachid>114652</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-11 02:00:28 -0800</bug_when>
    <thetext>Created attachment 114652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500600</commentid>
    <comment_count>11</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-11 02:05:18 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebKit/chromium/public/WebUserMediaClient.h:36
&gt; &gt; +    virtual void userMediaControllerDestroyed() = 0;
&gt; 
&gt; What &quot;user media controller&quot; does this method correspond to?  maybe this method should be named cancelAllUserMediaRequests?  is the expectation that a cancelled WebUserMediaRequest will have its requestFailed method called?  do you not care about distinguishing requests that fail due to cancelation from those that fail due to other errors?  no need to report an error code of some sort in other words?
&gt; 

All outstanding request will be cancelled before this call. This function is more along the general cleanup line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504231</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-16 14:04:16 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 114065 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114065&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:36
&gt; &gt;&gt; +    virtual void userMediaControllerDestroyed() = 0;
&gt; &gt; 
&gt; &gt; What &quot;user media controller&quot; does this method correspond to?  maybe this method should be named cancelAllUserMediaRequests?  is the expectation that a cancelled WebUserMediaRequest will have its requestFailed method called?  do you not care about distinguishing requests that fail due to cancelation from those that fail due to other errors?  no need to report an error code of some sort in other words?
&gt; 
&gt; This is the UserMediaController hanging of the page.

From the point of view of the embedder, who only sees WebKit APIs, the UserMediaController handing off of the page does not exist.  Why do we need this method on WebUserMediaClient, and can we give it a name that makes sense from the perspective of the embedder?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504399</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-16 16:53:06 -0800</bug_when>
    <thetext>&gt; From the point of view of the embedder, who only sees WebKit APIs, the UserMediaController handing off of the page does not exist.

... and now it doesn&apos;t exist in WebCore either.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504601</commentid>
    <comment_count>14</comment_count>
      <attachid>114065</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-16 23:46:03 -0800</bug_when>
    <thetext>Comment on attachment 114065
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:36
&gt;&gt;&gt;&gt; +    virtual void userMediaControllerDestroyed() = 0;
&gt;&gt;&gt; 
&gt;&gt;&gt; What &quot;user media controller&quot; does this method correspond to?  maybe this method should be named cancelAllUserMediaRequests?  is the expectation that a cancelled WebUserMediaRequest will have its requestFailed method called?  do you not care about distinguishing requests that fail due to cancelation from those that fail due to other errors?  no need to report an error code of some sort in other words?
&gt;&gt; 
&gt;&gt; This is the UserMediaController hanging of the page.
&gt;&gt; 
&gt;&gt; I have asked for clarification regarding your second question from the WebCore patch author, and would prefer if cancelUserMediaRequest is called for each outstanding request in addition to this function.
&gt;&gt; 
&gt;&gt; And lastly, no we do not care about what went wrong since unfortunately there isn&apos;t a way to convey that error currently in the WebRTC spec.
&gt; 
&gt; From the point of view of the embedder, who only sees WebKit APIs, the UserMediaController handing off of the page does not exist.  Why do we need this method on WebUserMediaClient, and can we give it a name that makes sense from the perspective of the embedder?

This functionality is very important to have, because it signals that the system should shut down all LocalMediaStreams and their camera/audio drivers etc. Would calling it close() or shutdown() be better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504604</commentid>
    <comment_count>15</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-16 23:47:18 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; From the point of view of the embedder, who only sees WebKit APIs, the UserMediaController handing off of the page does not exist.
&gt; 
&gt; ... and now it doesn&apos;t exist in WebCore either.  :)

Unfortunately it got removed :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504608</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-16 23:50:27 -0800</bug_when>
    <thetext>&gt; This functionality is very important to have, because it signals that the system should shut down all LocalMediaStreams and their camera/audio drivers etc. Would calling it close() or shutdown() be better?

Why doesn&apos;t each LocalMediaStream signal that individually?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504617</commentid>
    <comment_count>17</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-17 00:07:26 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; This functionality is very important to have, because it signals that the system should shut down all LocalMediaStreams and their camera/audio drivers etc. Would calling it close() or shutdown() be better?
&gt; 
&gt; Why doesn&apos;t each LocalMediaStream signal that individually?

We need to now when the page is going away (page reload, closing page etc) not when the objects are garbage collected. I thought that it was best to detect that in the Document object but I am happy to learn other and better ways to reach the same goal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504621</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-17 00:16:51 -0800</bug_when>
    <thetext>It sounds like whatever is holding the LocalMediaStream objects should watch for being disconnected from the Frame (or removed from the document, etc) and then close the LocalMediaStream (which should signal the platform to spin down the devices).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504633</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-17 00:42:17 -0800</bug_when>
    <thetext>Tommy and I chatted about this topic, and we think the best solution is to make MediaStream an ActiveDOMObject, which will let it get a stop() callback when the Document detaches from the Frame.  It will also let it get suspend/resume calls for browsers that implement bfcache.

Everything should be set for that approach because MediaStream already gets a ScriptExecutionContext in its constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504702</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-11-17 03:10:09 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Tommy and I chatted about this topic, and we think the best solution is to make MediaStream an ActiveDOMObject, which will let it get a stop() callback when the Document detaches from the Frame.  It will also let it get suspend/resume calls for browsers that implement bfcache.
&gt; 
&gt; Everything should be set for that approach because MediaStream already gets a ScriptExecutionContext in its constructor.

I&apos;m not so sure that making MediaStream an ActiveDOMObject is the right approach. We see MediaStream/LocalMediaStream as an abstract representation of an actual media stream in the platform (similar to how a Blob can represent a file in the filesystem). The underlying media stream in the platform is set up when the media stream is consumed. The consumers of MediaStream objects are (currently) PeerConnection and the media elements, which have well defined lifetime handling.

Another aspect is that a MediaStream object can go away but the underlying media stream must still be consumable if there is a URL created for it using createObjectURL(). That&apos;s why we have MediaStreamDescriptor (to allow MediaStream objects to be garbage collected). 

Perhaps we should move this discussion to the MediaStream platform bug (http://webkit.org/b/70895)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504803</commentid>
    <comment_count>21</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-17 06:26:16 -0800</bug_when>
    <thetext>Regarding the discussion taking place in the last comments, I have decided to put this on hold to se if we can get the necessary signalling from the video decoder instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504804</commentid>
    <comment_count>22</comment_count>
      <attachid>115578</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-17 06:27:36 -0800</bug_when>
    <thetext>Created attachment 115578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504806</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 06:31:06 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504808</commentid>
    <comment_count>24</comment_count>
      <attachid>115579</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-17 06:33:39 -0800</bug_when>
    <thetext>Created attachment 115579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504966</commentid>
    <comment_count>25</comment_count>
      <attachid>115579</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-17 10:26:31 -0800</bug_when>
    <thetext>Comment on attachment 115579
Patch

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

&gt; Source/WebKit/chromium/src/WebUserMediaRequest.cpp:122
&gt; +    UserMediaRequest* p = other.m_private.get();
&gt; +    if (p)
&gt; +        p-&gt;ref();
&gt; +    m_private = p;

Is there a way to do this without manual reference counting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505579</commentid>
    <comment_count>26</comment_count>
      <attachid>115579</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-18 00:50:16 -0800</bug_when>
    <thetext>Comment on attachment 115579
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebUserMediaRequest.cpp:122
&gt;&gt; +    m_private = p;
&gt; 
&gt; Is there a way to do this without manual reference counting?

The WebPrivatePtr takes over the refcounted object using leakref() and the calls dererf() at destructor time, so for an object referenced from elsewhere this is needed. Dunno exactly about the design philosophy but hope that Darin can teach me the correct way here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505581</commentid>
    <comment_count>27</comment_count>
      <attachid>115579</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 00:52:41 -0800</bug_when>
    <thetext>Comment on attachment 115579
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/src/WebUserMediaRequest.cpp:122
&gt;&gt;&gt; +    UserMediaRequest* p = other.m_private.get();
&gt;&gt;&gt; +    if (p)
&gt;&gt;&gt; +        p-&gt;ref();
&gt;&gt;&gt; +    m_private = p;
&gt;&gt; 
&gt;&gt; Is there a way to do this without manual reference counting?
&gt; 
&gt; The WebPrivatePtr takes over the refcounted object using leakref() and the calls dererf() at destructor time, so for an object referenced from elsewhere this is needed. Dunno exactly about the design philosophy but hope that Darin can teach me the correct way here.

Can we use &quot;RefPtr&lt;UserMediaRequest&gt; p&quot; instead?  (I guess I could look at the definition of WebPrivatePtr in more detail).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505875</commentid>
    <comment_count>28</comment_count>
      <attachid>115579</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-18 10:06:21 -0800</bug_when>
    <thetext>Comment on attachment 115579
Patch

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

&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:28
&gt; +#include &quot;WebVector.h&quot;

nit: please just forward declare WebVector (see for example WebPageSerializer.h)

&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:39
&gt; +    virtual void pageDestroyed() = 0;

&quot;page&quot; (referring to WebCore::Page) is also a name that doesn&apos;t exist in the WebKit API.

I think a name like &quot;cancelAllUserMediaRequests&quot; might be better here.  It is much more specific.

&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:49
&gt; +    WEBKIT_EXPORT WebUserMediaRequest&amp; operator=(const WebUserMediaRequest&amp;);

as with other interface, please define an assign method, and implement operator=
in terms of that.

&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:60
&gt; +    WEBKIT_EXPORT void requestSucceeded(const WebVector&lt;WebMediaStreamSource&gt;&amp;);

There was some discussion (over email) about making requestSucceeded and requestFailed
virtual to support mocking in unit tests.  I commented that I thought perhaps that
suggested that these functions really don&apos;t belong here on the &apos;request&apos; object.

Compare this to WebURLRequest, which just describes the parameters of a request.  It
is just data.

&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:63
&gt; +    WEBKIT_EXPORT bool operator==(const WebUserMediaRequest&amp;) const;

nit: we don&apos;t export operators in the WebKit API.  Please add an equals method,
and then define an inline operator== that calls the equals method.  See WebNode.h
for example.

&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:66
&gt; +    WebUserMediaRequest(WebCore::UserMediaRequest*);

nit: do you really need both forms of constructor and both forms of operator here?
we don&apos;t elsewhere in the API.

&gt; Source/WebKit/chromium/src/WebUserMediaRequest.cpp:102
&gt; +    m_private-&gt;succeed(s);

I&apos;m trying to study what happens when succeed and fail are called, but I don&apos;t see
UserMediaRequest checked into the tree.  Is there a separate bug with that patch?

I&apos;m a little concerned about the idea that UserMediaRequest is both data representing
the request and controller code for what happens when the request succeeds or fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505896</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 10:40:34 -0800</bug_when>
    <thetext>&gt; I&apos;m trying to study what happens when succeed and fail are called, but I don&apos;t see
&gt; UserMediaRequest checked into the tree.  Is there a separate bug with that patch?

http://trac.webkit.org/browser/trunk/Source/WebCore/mediastream/UserMediaRequest.h
http://trac.webkit.org/browser/trunk/Source/WebCore/mediastream/UserMediaRequest.cpp

It might not have been rolled into Chromium yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505937</commentid>
    <comment_count>30</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-18 11:29:46 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; It might not have been rolled into Chromium yet.

Ah, yes.  I was using codesearch :-(

So, UserMediaRequest ends up having a m_scriptExecutionContext member precisely for it to handle these events.  It seems unfortunate for UserMediaRequest to be both data representing the request as well as controller that knows how to process completion of the request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505962</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 12:09:47 -0800</bug_when>
    <thetext>&gt; So, UserMediaRequest ends up having a m_scriptExecutionContext member precisely for it to handle these events.  It seems unfortunate for UserMediaRequest to be both data representing the request as well as controller that knows how to process completion of the request.

I&apos;ve been pushing this code not to have long-lived (e.g., Document- or Page-scoped) controllers.  Maybe the best solution is to split UserMediaRequest into UserMediaRequester and UserMediaRequest, with the later being just pure data.  That would keep the lifetime of these objects short (i.e., limited to the lifetime of the request).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506120</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-18 15:20:35 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; &gt; So, UserMediaRequest ends up having a m_scriptExecutionContext member precisely for it to handle these events.  It seems unfortunate for UserMediaRequest to be both data representing the request as well as controller that knows how to process completion of the request.
&gt; 
&gt; I&apos;ve been pushing this code not to have long-lived (e.g., Document- or Page-scoped) controllers.  Maybe the best solution is to split UserMediaRequest into UserMediaRequester and UserMediaRequest, with the later being just pure data.  That would keep the lifetime of these objects short (i.e., limited to the lifetime of the request).

I see.  Hmm...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506822</commentid>
    <comment_count>33</comment_count>
      <attachid>116057</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-21 02:45:08 -0800</bug_when>
    <thetext>Created attachment 116057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506823</commentid>
    <comment_count>34</comment_count>
      <attachid>115579</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-21 02:46:09 -0800</bug_when>
    <thetext>Comment on attachment 115579
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:28
&gt;&gt; +#include &quot;WebVector.h&quot;
&gt; 
&gt; nit: please just forward declare WebVector (see for example WebPageSerializer.h)

Done.

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:39
&gt;&gt; +    virtual void pageDestroyed() = 0;
&gt; 
&gt; &quot;page&quot; (referring to WebCore::Page) is also a name that doesn&apos;t exist in the WebKit API.
&gt; 
&gt; I think a name like &quot;cancelAllUserMediaRequests&quot; might be better here.  It is much more specific.

Since all outstanding requests should have been cancelled before, I&apos;m just calling it close()

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:49
&gt;&gt; +    WEBKIT_EXPORT WebUserMediaRequest&amp; operator=(const WebUserMediaRequest&amp;);
&gt; 
&gt; as with other interface, please define an assign method, and implement operator=
&gt; in terms of that.

That is exactly what I had done, but I guess you mean to also inline operator=?

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:60
&gt;&gt; +    WEBKIT_EXPORT void requestSucceeded(const WebVector&lt;WebMediaStreamSource&gt;&amp;);
&gt; 
&gt; There was some discussion (over email) about making requestSucceeded and requestFailed
&gt; virtual to support mocking in unit tests.  I commented that I thought perhaps that
&gt; suggested that these functions really don&apos;t belong here on the &apos;request&apos; object.
&gt; 
&gt; Compare this to WebURLRequest, which just describes the parameters of a request.  It
&gt; is just data.

I&apos;m just wrapping existing WebCore code.
Do you want me to split this class into data and controller objects here in the chromium embedder layer or does the WebCore class need to be rewritten before we can try to add the corresponding WebKit code again?

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:63
&gt;&gt; +    WEBKIT_EXPORT bool operator==(const WebUserMediaRequest&amp;) const;
&gt; 
&gt; nit: we don&apos;t export operators in the WebKit API.  Please add an equals method,
&gt; and then define an inline operator== that calls the equals method.  See WebNode.h
&gt; for example.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:66
&gt;&gt; +    WebUserMediaRequest(WebCore::UserMediaRequest*);
&gt; 
&gt; nit: do you really need both forms of constructor and both forms of operator here?
&gt; we don&apos;t elsewhere in the API.

Removed.

&gt;&gt;&gt;&gt; Source/WebKit/chromium/src/WebUserMediaRequest.cpp:122
&gt;&gt;&gt;&gt; +    m_private = p;
&gt;&gt;&gt; 
&gt;&gt;&gt; Is there a way to do this without manual reference counting?
&gt;&gt; 
&gt;&gt; The WebPrivatePtr takes over the refcounted object using leakref() and the calls dererf() at destructor time, so for an object referenced from elsewhere this is needed. Dunno exactly about the design philosophy but hope that Darin can teach me the correct way here.
&gt; 
&gt; Can we use &quot;RefPtr&lt;UserMediaRequest&gt; p&quot; instead?  (I guess I could look at the definition of WebPrivatePtr in more detail).

The pattern is to use WebPrivatePtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506944</commentid>
    <comment_count>35</comment_count>
      <attachid>116081</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-21 07:24:33 -0800</bug_when>
    <thetext>Created attachment 116081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506945</commentid>
    <comment_count>36</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-21 07:26:28 -0800</bug_when>
    <thetext>The difference between the latest patch and the one before it is that I have introduced a WebUserMediaController and made WebUserMediaRequest a data only object. Is this a better approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507023</commentid>
    <comment_count>37</comment_count>
      <attachid>116081</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-21 09:19:55 -0800</bug_when>
    <thetext>Comment on attachment 116081
Patch

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

&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:39
&gt; +    virtual void useController(WebUserMediaController*);

I would think that this should be a WebView::userMediaController getter, just
as you have WebViewClient::userMediaClient.

&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:40
&gt; +    virtual void close() = 0;

If this is not about cancelling pending WebUserMediaRequests, then what is it for?  Why do we need this |close| function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507024</commentid>
    <comment_count>38</comment_count>
      <attachid>116081</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-21 09:21:29 -0800</bug_when>
    <thetext>Comment on attachment 116081
Patch

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

&gt; Source/WebKit/chromium/src/UserMediaClientImpl.h:43
&gt; +class UserMediaClientImpl : public WebCore::UserMediaClient, public WebUserMediaController {

If WebUserMediaController is the way to go, then it seems UserMediaController would also
be warranted for the WebCore side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507100</commentid>
    <comment_count>39</comment_count>
      <attachid>116110</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-21 11:29:50 -0800</bug_when>
    <thetext>Created attachment 116110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507135</commentid>
    <comment_count>40</comment_count>
      <attachid>116110</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-21 12:41:25 -0800</bug_when>
    <thetext>Comment on attachment 116110
Patch

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

&gt; Source/WebKit/chromium/src/UserMediaClientImpl.cpp:14
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY

nit: this copyright notice incorrectly says that this software is provided by &quot;APPLE&quot;

I think you should switch &quot;APPLE&quot; to &quot;GOOGLE&quot; here, and in the other newly added files.

&gt; Source/WebKit/chromium/src/UserMediaClientImpl.h:47
&gt; +    virtual void pageDestroyed();

nit: Maybe we can delete UserMediaClient::pageDestroyed now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507140</commentid>
    <comment_count>41</comment_count>
      <attachid>116110</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-21 12:47:04 -0800</bug_when>
    <thetext>Comment on attachment 116110
Patch

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

&gt;&gt; Source/WebKit/chromium/src/UserMediaClientImpl.cpp:14
&gt;&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
&gt; 
&gt; nit: this copyright notice incorrectly says that this software is provided by &quot;APPLE&quot;
&gt; 
&gt; I think you should switch &quot;APPLE&quot; to &quot;GOOGLE&quot; here, and in the other newly added files.

Will fix.

&gt;&gt; Source/WebKit/chromium/src/UserMediaClientImpl.h:47
&gt;&gt; +    virtual void pageDestroyed();
&gt; 
&gt; nit: Maybe we can delete UserMediaClient::pageDestroyed now?

I think that Ericsson needs this for their GTK/gstreamer port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507152</commentid>
    <comment_count>42</comment_count>
      <attachid>116121</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-21 13:00:27 -0800</bug_when>
    <thetext>Created attachment 116121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507326</commentid>
    <comment_count>43</comment_count>
      <attachid>116121</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 17:20:31 -0800</bug_when>
    <thetext>Comment on attachment 116121
Patch

Clearing flags on attachment: 116121

Committed r100970: &lt;http://trac.webkit.org/changeset/100970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507327</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 17:20:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507509</commentid>
    <comment_count>45</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-22 04:20:30 -0800</bug_when>
    <thetext>The difference between the latest patch and the one before it is that I have introduced a WebUserMediaController and made WebUserMediaRequest a data only object. Is this a better approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507514</commentid>
    <comment_count>46</comment_count>
      <attachid>116203</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-22 04:32:18 -0800</bug_when>
    <thetext>Created attachment 116203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507517</commentid>
    <comment_count>47</comment_count>
      <attachid>116203</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-22 04:33:56 -0800</bug_when>
    <thetext>Comment on attachment 116203
Patch

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

&gt; Source/WebKit/chromium/src/UserMediaClientImpl.cpp:46
&gt; +    : m_webClient(client ? client-&gt;userMediaClient() : 0)

This is the only line that differs from the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507665</commentid>
    <comment_count>48</comment_count>
      <attachid>116203</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-22 10:16:57 -0800</bug_when>
    <thetext>Comment on attachment 116203
Patch

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

&gt; Source/WebKit/chromium/src/UserMediaClientImpl.h:49
&gt; +    UserMediaClientImpl(WebViewClient*);

nit: more conventional to initialize with a WebViewImpl*.  see EditorClientImpl.

&gt; Source/WebKit/chromium/src/UserMediaClientImpl.h:59
&gt; +    WebUserMediaClient* m_webClient;

nit: more conventional to just call this variable m_client.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:375
&gt; +    , m_userMediaClient(adoptPtr(new UserMediaClientImpl(client)))

why does m_userMediaClient need to be heap allocated?  see m_editorClientImpl for example.
it would also be a bit more conventional to name m_userMediaClient as m_userMediaClientImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507705</commentid>
    <comment_count>49</comment_count>
      <attachid>116203</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-22 11:09:37 -0800</bug_when>
    <thetext>Comment on attachment 116203
Patch

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

&gt;&gt; Source/WebKit/chromium/src/UserMediaClientImpl.h:49
&gt;&gt; +    UserMediaClientImpl(WebViewClient*);
&gt; 
&gt; nit: more conventional to initialize with a WebViewImpl*.  see EditorClientImpl.

Done.

&gt;&gt; Source/WebKit/chromium/src/UserMediaClientImpl.h:59
&gt;&gt; +    WebUserMediaClient* m_webClient;
&gt; 
&gt; nit: more conventional to just call this variable m_client.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:375
&gt;&gt; +    , m_userMediaClient(adoptPtr(new UserMediaClientImpl(client)))
&gt; 
&gt; why does m_userMediaClient need to be heap allocated?  see m_editorClientImpl for example.
&gt; it would also be a bit more conventional to name m_userMediaClient as m_userMediaClientImpl.

Fixed^2. It is a mix of heap allocated and contained objects in this class and I just choose the wrong one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507710</commentid>
    <comment_count>50</comment_count>
      <attachid>116253</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-11-22 11:11:43 -0800</bug_when>
    <thetext>Created attachment 116253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508013</commentid>
    <comment_count>51</comment_count>
      <attachid>116253</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 02:04:28 -0800</bug_when>
    <thetext>Comment on attachment 116253
Patch

Clearing flags on attachment: 116253

Committed r101058: &lt;http://trac.webkit.org/changeset/101058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508014</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 02:04:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113858</attachid>
            <date>2011-11-07 06:37:57 -0800</date>
            <delta_ts>2011-11-08 07:51:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111107153755.patch</filename>
            <type>text/plain</type>
            <size>18168</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkzOTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDEyMTUyMGUzNWUyODdi
ZDBhNTdiYmNmNjA5ZDA0M2EwYWM1ZTVjLi41YmE2NDQ4YWU0NjJmYWIwMWVjYTAxNTIxNjgyYmI0
ZjNjYjQ0YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMDcgIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
ZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBlbWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciB0
aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3ZpZGVkIGJ5IHRoZSBidWcgNTY1ODcsIHBl
bmRpbmcgZW5vdWdoIGxhbmRlZCBjb2RlLgorCisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1l
ZGlhQ2xpZW50Lmg6CisKIDIwMTEtMTEtMDYgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21h
aWwuY29tPgogCiAgICAgICAgIEZpeCBzb21lIHN0eWxlIGlzc3VlcyBpbiBJbWFnZUJ1ZmZlci5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxM2I4ODNmMDNkNjg2YmYwMDY2NDNjZjg3
YmVhNGJiZjNlZDU2MzQuLjg0ZmM3Yzc1NTMxZTAyYWI0NjhiMzIxYmI5MWNiZGNmNGMyZTFhOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTEtMDcg
IFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBlbWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1l
ZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6cmVxdWVzdFVzZXJNZWRpYSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6Y2FuY2VsVXNlck1lZGlhUmVx
dWVzdCk6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Ojp+V2ViVXNlck1lZGlhUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OmlzTnVsbCk6Cisg
ICAgICAgICogc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6VXNlck1lZGlhQ2xpZW50SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OnVzZXJNZWRpYUNvbnRyb2xsZXJEZXN0cm95
ZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpyZXF1ZXN0VXNlck1l
ZGlhKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6Y2FuY2VsVXNlck1l
ZGlhUmVxdWVzdCk6CisgICAgICAgICogc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OnVzZXJNZWRpYVF1ZXJ5Q29t
cGxldGVkKToKKyAgICAgICAgKiBzcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVzZXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdEZhaWxlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVy
YXRvciBVc2VyTWVkaWFSZXF1ZXN0Kik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMS0xMS0wNSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVzZSB0aGUgc2VjdXJpdHkgb3JpZ2lu
IGluc3RlYWQgb2YgdGhlIFVSTCB3aGVuIGNoZWNraW5nIG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAppbmRleCBh
ZGUzNzNhZTJmY2MwNTMzNTU2ODVhNDdhNmYyOGYwM2UwOWY5NGUwLi41YTViNDgzYWRjYjAzOGI0
MTU3OGRkZmM3NjlmMDNkN2Y4OGY4MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDbGllbnQuaApAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBVc2VyTWVkaWFDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1c2VyTWVkaWFDb250cm9sbGVyRGVzdHJv
eWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgVXNl
ck1lZGlhUmVxdWVzdCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVx
dWVzdChjb25zdCBVc2VyTWVkaWFSZXF1ZXN0KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0VXNlck1lZGlhKFVzZXJNZWRpYVJlcXVlc3QqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNh
bmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCopID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCB1c2VyTWVkaWFRdWVyeUNvbXBsZXRlZChjb25zdCBVc2VyTWVkaWFSZXF1ZXN0Kiwg
Y29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCA1ZDgzYzg0YjAyYjYzYjIxNTQzZWQ3ZjkwNTEwMmI2YmNiODc5ODI4Li5m
YjMzMDg3MzQxMTE2OWQzY2I4ZDhhMDEyMjkxNjU1MTMxZTRmNjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC0zMTcsNiArMzE3LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlVSTExvYWRlckNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVSTFJl
cXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJWZWN0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJW
aWV3LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlld0NsaWVudC5oJywKQEAgLTQ0
NCw2ICs0NDUsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZUluZm9DaHJvbWl1bS5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMv
VXNlck1lZGlhQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvVmlkZW9GcmFt
ZUNocm9taXVtSW1wbC5jcHAnLApAQCAtNjIzLDYgKzYyNiw3IEBACiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJVUkxSZXNwb25zZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVz
cG9uc2VQcml2YXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMRXJyb3IuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJW
aWV3SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlckJhc2UuY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmgKaW5kZXggNTI4MTQ3OTRkOWQyMTRhY2JjM2U4YzE3MjRhMjNlMDVhMTdlZTJhYi4uZGFk
YTgzMGRmMzU1YjczYzM3NzhkZjc1YWMwMGNiOWFkNDFhZmVkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJVc2Vy
TWVkaWFSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKICNpbmNsdWRlIDx0aW1l
Lmg+CkBAIC0zMjcsNiArMzI4LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJQZWVyQ29u
bmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVBlZXJDb25uZWN0aW9uSGFuZGxlcihXZWJQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYp
IHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYktpdFBsYXRmb3JtU3VwcG9ydCgpIHsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVl
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZDc1MDA4MzdmYTM0NzIwZGZkOTFhMjBiODk5MThkN2YyYjgwYWU3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViVXNlck1lZGlhUmVxdWVzdF9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYVJlcXVlc3RfaAorCisj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNs
dWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKKworY2xhc3MgV2ViVXNlck1lZGlh
UmVxdWVzdCB7CitwdWJsaWM6CisgICAgV2ViVXNlck1lZGlhUmVxdWVzdCgpIHsgfQorICAgIH5X
ZWJVc2VyTWVkaWFSZXF1ZXN0KCkgeyByZXNldCgpOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5p
c051bGwoKTsgfQorCisgICAgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxX
ZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKKyAgICB2b2lkIHJlcXVlc3RGYWlsZWQoKTsKKworI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdCopOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpVc2VyTWVkaWFSZXF1ZXN0PigpIGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3QqKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRl
UHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNlck1lZGlhUmVxdWVzdF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEyNjExMWJjZWFmNDZhN2MyNDg3ODJiM2ZhNGQxM2JkOTg1OTA1MzkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBs
LmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRJbXBsLmgiCisK
KyNpbmNsdWRlICJVc2VyTWVkaWFDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViS2l0LmgiCisj
aW5jbHVkZSAiV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlh
UmVxdWVzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1VzZXJNZWRpYUNsaWVudEltcGw6OlVzZXJNZWRpYUNsaWVudEltcGwoKQoreworfQor
Cit2b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OnVzZXJNZWRpYUNvbnRyb2xsZXJEZXN0cm95ZWQo
KQoreworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OnJlcXVlc3RVc2VyTWVkaWEoVXNl
ck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+
cmVxdWVzdFVzZXJNZWRpYShyZXF1ZXN0KTsKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRJbXBs
OjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7Cisg
ICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QocmVxdWVz
dCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRp
YUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVu
dEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMDYxYTc3ZmU4ZGFkZjJmYmY5YzY3MjFkNmEzYTY5NDAyZWRm
NWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1l
ZGlhQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRp
YUNsaWVudEltcGxfaAorI2RlZmluZSBVc2VyTWVkaWFDbGllbnRJbXBsX2gKKworI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7CisKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFVzZXJNZWRpYUNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6
VXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBVc2VyTWVkaWFDbGllbnRJbXBsKCk7CisK
KyAgICAvLyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHZpcnR1YWwgdm9pZCB1c2VyTWVkaWFDb250cm9s
bGVyRGVzdHJveWVkKCk7IC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhhdCBhbGwgVXNlck1lZGlhUmVx
dWVzdHMgYXJlIGNhbmNlbGxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJN
ZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOworICAgIHZpcnR1YWwgdm9p
ZCB1c2VyTWVkaWFRdWVyeUNvbXBsZXRlZChjb25zdCBXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0
KiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKSB7IH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVzZXJNZWRpYUNsaWVudEltcGxfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44OTYzZjUzYzBlYmU4YzNlNzMwM2M0ZWZiNmJkZWFmNDhkOTA4M2QxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlh
UmVxdWVzdC5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIldlYlVzZXJN
ZWRpYVJlcXVlc3QuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiV2Vi
U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6OldlYlVz
ZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKKyAgICA6IG1fcHJpdmF0
ZShyZXF1ZXN0KQoreworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlc2V0KCkKK3sK
KyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0Ojpy
ZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNv
dXJjZXMpCit7CisgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1
cnIgPSBzb3VyY2VzW2ldOworICAgICAgICBzLmFwcGVuZChjdXJyKTsKKyAgICB9CisKKyAgICBV
c2VyTWVkaWFDb250cm9sbGVyKiB1c2VyTWVkaWFDb250cm9sbGVyID0gbV9wcml2YXRlLT5mcmFt
ZSgpLT5wYWdlKCktPnVzZXJNZWRpYUNvbnRyb2xsZXIoKTsKKyAgICB1c2VyTWVkaWFDb250cm9s
bGVyLT51c2VyTWVkaWFSZXF1ZXN0U3VjY2VlZGVkKCp0aGlzLCBzKTsKK30KKwordm9pZCBXZWJV
c2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKCkKK3sKKyAgICBVc2VyTWVkaWFDb250cm9s
bGVyKiB1c2VyTWVkaWFDb250cm9sbGVyID0gbV9wcml2YXRlLT5mcmFtZSgpLT5wYWdlKCktPnVz
ZXJNZWRpYUNvbnRyb2xsZXIoKTsKKyAgICB1c2VyTWVkaWFDb250cm9sbGVyLT51c2VyTWVkaWFS
ZXF1ZXN0RmFpbGVkKCp0aGlzKTsKK30KKworV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3Ig
UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS5nZXQoKTsKK30KKworV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1lZGlh
UmVxdWVzdCooKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDNlNTNiYTlk
NTM0Y2Q4OTc1Y2Y4YWE2YmMwMWY5NDU3NGY2YWI5Y2QuLjNlM2Y3OWM2ZWU0MjY2YTViYzkwNGMw
YzRhODRmNzNlMzNiYzIyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQAogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNp
bmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgi
CiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkF1dG9m
aWxsQ2xpZW50LmgiCkBAIC0zNTksNiArMzYwLDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBs
KFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQog
ICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyOjpjcmVhdGUoKSkKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBt
X3VzZXJNZWRpYUNsaWVudChhZG9wdFB0cihuZXcgVXNlck1lZGlhQ2xpZW50SW1wbCgpKSkKKyNl
bmRpZgogewogICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGlu
ZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMgc3BlY2lmaWMgd3JhcHBlciBhcm91
bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJlYWRpbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGRlOWE3OWY3OThkZWFiYjFhNThiZjhiZDc0
ZjIyNjUxZDVmZGU2YmYuLmQ4MWUyZmQ4OWNkZmI1MmI1YjFkMGRmYWRjNGY1YjExMDMyYzRjYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtODEsNiArODEs
NyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9s
bFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsKIGNsYXNzIFNwZWVjaElucHV0
Q2xpZW50SW1wbDsKK2NsYXNzIFVzZXJNZWRpYUNsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViQ29tcG9zaXRvckltcGw7CiBjbGFzcyBXZWJEZXZUb29s
c0FnZW50Q2xpZW50OwpAQCAtNjAwLDYgKzYwMSwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCiAgICAgT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CiAjZW5kaWYKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgT3duUHRyPFVzZXJNZWRpYUNsaWVudEltcGw+IG1fdXNlck1lZGlhQ2xp
ZW50OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114065</attachid>
            <date>2011-11-08 07:51:10 -0800</date>
            <delta_ts>2011-11-16 23:46:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111108165108.patch</filename>
            <type>text/plain</type>
            <size>20620</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMjY2Njg4ZGU5YTRjODFh
ZDEzYWQxN2M3OGI1ZWE3NDRmN2U2MjUwLi4yNTc4ZDM0YmQ2OTgwZTFmZTM5YTcwMDVjZWI2YWIy
ZmNjZDdhNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMDggIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
ZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBlbWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciB0
aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3ZpZGVkIGJ5IHRoZSBidWcgNTY1ODcsIHBl
bmRpbmcgZW5vdWdoIGxhbmRlZCBjb2RlLgorCisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1l
ZGlhQ2xpZW50Lmg6CisKIDIwMTEtMTEtMDcgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3Igc2hvcnRjdXRzIGFu
ZCBzZXR0aW5ncyBzY3JlZW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc0OWEzN2Fj
MTAyY2ZiOWZjNzJlNWU5YWMxZDk1OGFmNzQ5MDFlM2MuLjY4YzhhMjIzY2YzNTA5ZGYyYjY0YzIw
ZWRlM2VmNzRmNTMwNmNhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzggQEAKKzIwMTEtMTEtMDggIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+
CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBlbWJlZGRpbmcg
Y29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0UGxhdGZv
cm1TdXBwb3J0Lmg6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50Ojp+V2ViVXNlck1lZGlhQ2xp
ZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6On5XZWJVc2VyTWVkaWFSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6aXNOdWxsKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
Q2xpZW50Ojp1c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJ
bXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OlVz
ZXJNZWRpYUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBs
Ojp1c2VyTWVkaWFDb250cm9sbGVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHNyYy9V
c2VyTWVkaWFDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFD
bGllbnRJbXBsOjp1c2VyTWVkaWFRdWVyeUNvbXBsZXRlZCk6CisgICAgICAgICogc3JjL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlh
UmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYVJlcXVlc3Q6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVz
dDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVl
c3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1lZGlhUmVxdWVzdCopOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTEt
MDcgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmVydCBw
bGF0Zm9ybSBhbmQgc2Nyb2xsaW5nIHRvIGludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggYWRlMzczYWUyZmNjMDUzMzU1Njg1YTQ3YTZmMjhm
MDNlMDlmOTRlMC4uNWE1YjQ4M2FkY2IwMzhiNDE1NzhkZGZjNzY5ZjAzZDdmODhmODEwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKQEAgLTQyLDgg
KzQyLDggQEAgY2xhc3MgVXNlck1lZGlhQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdXNlck1lZGlhQ29udHJvbGxlckRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFVzZXJNZWRpYVJlcXVlc3QqKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgVXNlck1lZGlhUmVxdWVzdCop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShVc2VyTWVkaWFSZXF1ZXN0
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRp
YVJlcXVlc3QqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXNlck1lZGlhUXVlcnlDb21wbGV0
ZWQoY29uc3QgVXNlck1lZGlhUmVxdWVzdCosIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNWQ4M2M4NGIwMmI2M2Iy
MTU0M2VkN2Y5MDUxMDJiNmJjYjg3OTgyOC4uMGQxYWI3NjNhMmMyMDM0MjJjNjk0NDdlZjRhOTI0
MDQwZmZhN2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzE3LDYgKzMxNyw4
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViVVJMUmVzcG9uc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2Vy
TWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmVjdG9yLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZp
ZXdDbGllbnQuaCcsCkBAIC00NDQsNiArNDQ2LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1N0
b3JhZ2VJbmZvQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VOYW1l
c3BhY2VQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVBy
b3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oJywKKyAg
ICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwJywKQEAgLTYyMyw2ICs2MjcsNyBA
QAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2UuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJX
b3JrZXJCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVzZXJNZWRpYUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MzlhODVkN2JjOTk5M2FkMjE1N2Q2MzA5
MzM2ODI0M2ZjNmUwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudF9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYUNs
aWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyTWVkaWFSZXF1ZXN0
OworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
YlVzZXJNZWRpYUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVzZXJNZWRpYUNvbnRy
b2xsZXJEZXN0cm95ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEo
Y29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
VXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVz
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFkNzUwMDgzN2ZhMzQ3MjBkZmQ5MWEyMGI4OTkxOGQ3ZjJiODBhZTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2Vy
TWVkaWFSZXF1ZXN0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJVc2VyTWVkaWFSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhUmVxdWVzdF9oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgorI2luY2x1
ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOworCitjbGFzcyBXZWJVc2VyTWVkaWFS
ZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0KCkgeyB9CisgICAgfldl
YlVzZXJNZWRpYVJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlz
TnVsbCgpOyB9CisKKyAgICB2b2lkIHJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdl
Yk1lZGlhU3RyZWFtU291cmNlPiYpOworICAgIHZvaWQgcmVxdWVzdEZhaWxlZCgpOworCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpV
c2VyTWVkaWFSZXF1ZXN0Kik7CisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3Q+KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdCooKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQ
dHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFSZXF1ZXN0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCA1MmJmYzIxNTVh
NWZiNjdiODMyODQzMzkwMDNjNDk1OThkMDdiNzliLi44Mzk1YzA4Y2VhMGVhODYxZWU0M2I2MGJk
Yjc4MWExOWZlNGE0NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlld0NsaWVudC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVu
ZXI7CiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViVVJMOwogY2xhc3MgV2Vi
VVJMUmVxdWVzdDsKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudDsKIGNsYXNzIFdlYlZpZXc7CiBj
bGFzcyBXZWJXaWRnZXQ7CiBzdHJ1Y3QgV2ViQ29uc29sZU1lc3NhZ2U7CkBAIC0zMjQsNiArMzI1
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNp
YmxlOwogICAgIH0KIAorICAgIC8vIE1lZGlhIFN0cmVhbXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCBXZWJVc2Vy
TWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudCgpIHsgcmV0dXJuIDA7IH0KKwogcHJvdGVjdGVk
OgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2E1ZDUxNDI3
NzZlODIyMmU5NmE3NDkyMmE1MmFhZjAxOGI4ODM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAiVXNlck1l
ZGlhQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgorI2luY2x1
ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworVXNlck1l
ZGlhQ2xpZW50SW1wbDo6VXNlck1lZGlhQ2xpZW50SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQp
CisgICAgOiBtX3dlYkNsaWVudChjbGllbnQtPnVzZXJNZWRpYUNsaWVudCgpKQoreworfQorCit2
b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OnVzZXJNZWRpYUNvbnRyb2xsZXJEZXN0cm95ZWQoKQor
eworICAgIGlmIChtX3dlYkNsaWVudCkKKyAgICAgICAgbV93ZWJDbGllbnQtPnVzZXJNZWRpYUNv
bnRyb2xsZXJEZXN0cm95ZWQoKTsKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpyZXF1
ZXN0VXNlck1lZGlhKFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgaWYgKG1fd2Vi
Q2xpZW50KQorICAgICAgICBtX3dlYkNsaWVudC0+cmVxdWVzdFVzZXJNZWRpYShyZXF1ZXN0KTsK
K30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVz
ZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgaWYgKG1fd2ViQ2xpZW50KQorICAgICAg
ICBtX3dlYkNsaWVudC0+Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgzM2M5YTUzMzZmMzUxNDhmMzE0NDRlZjYzZGQ1MGU1ZTEzZGM0ZjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBs
LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1lZGlhQ2xpZW50SW1wbF9o
CisjZGVmaW5lIFVzZXJNZWRpYUNsaWVudEltcGxfaAorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1T
b3VyY2UuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3
Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7CisK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFVzZXJNZWRpYUNsaWVudEltcGwgOiBw
dWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBVc2VyTWVkaWFD
bGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsKKworICAgIC8vIFdlYkNvcmU6OlVzZXJNZWRpYUNs
aWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
dmlydHVhbCB2b2lkIHVzZXJNZWRpYUNvbnRyb2xsZXJEZXN0cm95ZWQoKTsgLy8gRklYTUU6IE1h
a2Ugc3VyZSB0aGF0IGFsbCBVc2VyTWVkaWFSZXF1ZXN0cyBhcmUgY2FuY2VsbGVkLgorICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHVzZXJNZWRpYVF1ZXJ5Q29tcGxldGVkKGNv
bnN0IFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYpIHsgfTsKKworcHJpdmF0ZToKKyAgICBVc2VyTWVkaWFDbGllbnRJbXBs
KCk7CisKKyAgICBXZWJVc2VyTWVkaWFDbGllbnQqIG1fd2ViQ2xpZW50OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVc2VyTWVkaWFDbGllbnRJbXBsX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODk2M2Y1M2MwZWJlOGMzZTczMDNjNGVmYjZiZGVhZjQ4ZDkwODNkMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVl
c3QuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFS
ZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291
cmNlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJXZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpXZWJVc2VyTWVk
aWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCisgICAgOiBtX3ByaXZhdGUocmVx
dWVzdCkKK3sKK30KKwordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCgpCit7CisgICAg
bV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVz
dFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBzb3VyY2Vz
KQoreworICAgIGlmIChtX3ByaXZhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
b3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0g
c291cmNlc1tpXTsKKyAgICAgICAgcy5hcHBlbmQoY3Vycik7CisgICAgfQorCisgICAgVXNlck1l
ZGlhQ29udHJvbGxlciogdXNlck1lZGlhQ29udHJvbGxlciA9IG1fcHJpdmF0ZS0+ZnJhbWUoKS0+
cGFnZSgpLT51c2VyTWVkaWFDb250cm9sbGVyKCk7CisgICAgdXNlck1lZGlhQ29udHJvbGxlci0+
dXNlck1lZGlhUmVxdWVzdFN1Y2NlZWRlZCgqdGhpcywgcyk7Cit9CisKK3ZvaWQgV2ViVXNlck1l
ZGlhUmVxdWVzdDo6cmVxdWVzdEZhaWxlZCgpCit7CisgICAgVXNlck1lZGlhQ29udHJvbGxlciog
dXNlck1lZGlhQ29udHJvbGxlciA9IG1fcHJpdmF0ZS0+ZnJhbWUoKS0+cGFnZSgpLT51c2VyTWVk
aWFDb250cm9sbGVyKCk7CisgICAgdXNlck1lZGlhQ29udHJvbGxlci0+dXNlck1lZGlhUmVxdWVz
dEZhaWxlZCgqdGhpcyk7Cit9CisKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NS
ZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUu
Z2V0KCk7Cit9CisKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFVzZXJNZWRpYVJlcXVl
c3QqKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBiMmQxNmU1MWM3M2Vk
ZmM2NGE3YzBjMDNlODhhMzZkOWUzZmQwYTRjLi43YTdkOGJhMDg2ZjgxZjdhNjA5Y2QwZmVmMGI5
NmZiOTViMTY4YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisj
aW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlZlY3Rvci5oIgogI2lu
Y2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJXZWJBdXRvZmlsbENs
aWVudC5oIgpAQCAtMzYwLDYgKzM2MSw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJW
aWV3Q2xpZW50KiBjbGllbnQpCiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKICAgICAs
IG1fZ2VzdHVyZVJlY29nbml6ZXIoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6
Y3JlYXRlKCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICwgbV91c2Vy
TWVkaWFDbGllbnQoYWRvcHRQdHIobmV3IFVzZXJNZWRpYUNsaWVudEltcGwoY2xpZW50KSkpCisj
ZW5kaWYKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUgdGhp
bmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmljIHdyYXBwZXIgYXJv
dW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA0ZDEyYjI5NDMzYjI0MTlmZTY5YzUyNjgz
MjA0MjQ2YWU2MTU3NGQxLi5jMzhhZDBmYTE5MzIxYWY0YWQ4OGFmMGE3NGMxYTk4ZDJmMmE4Zjlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTgxLDYgKzgx
LDcgQEAgY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3Jv
bGxUaW1lcjsKIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBTcGVlY2hJbnB1
dENsaWVudEltcGw7CitjbGFzcyBVc2VyTWVkaWFDbGllbnRJbXBsOwogY2xhc3MgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkNvbXBvc2l0b3JJbXBsOwogY2xhc3MgV2ViRGV2VG9v
bHNBZ2VudENsaWVudDsKQEAgLTYwMSw2ICs2MDIsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
R0VTVFVSRV9SRUNPR05JWkVSKQogICAgIE93blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIE93blB0cjxVc2VyTWVkaWFDbGllbnRJbXBsPiBtX3VzZXJNZWRpYUNs
aWVudDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114245</attachid>
            <date>2011-11-09 04:11:05 -0800</date>
            <delta_ts>2011-11-09 05:20:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111109131103.patch</filename>
            <type>text/plain</type>
            <size>20918</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMjY2Njg4ZGU5YTRjODFh
ZDEzYWQxN2M3OGI1ZWE3NDRmN2U2MjUwLi4yNTc4ZDM0YmQ2OTgwZTFmZTM5YTcwMDVjZWI2YWIy
ZmNjZDdhNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMDggIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
ZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBlbWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciB0
aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3ZpZGVkIGJ5IHRoZSBidWcgNTY1ODcsIHBl
bmRpbmcgZW5vdWdoIGxhbmRlZCBjb2RlLgorCisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1l
ZGlhQ2xpZW50Lmg6CisKIDIwMTEtMTEtMDcgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3Igc2hvcnRjdXRzIGFu
ZCBzZXR0aW5ncyBzY3JlZW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc0OWEzN2Fj
MTAyY2ZiOWZjNzJlNWU5YWMxZDk1OGFmNzQ5MDFlM2MuLjY4YzhhMjIzY2YzNTA5ZGYyYjY0YzIw
ZWRlM2VmNzRmNTMwNmNhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzggQEAKKzIwMTEtMTEtMDggIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+
CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBlbWJlZGRpbmcg
Y29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0UGxhdGZv
cm1TdXBwb3J0Lmg6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50Ojp+V2ViVXNlck1lZGlhQ2xp
ZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6On5XZWJVc2VyTWVkaWFSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6aXNOdWxsKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
Q2xpZW50Ojp1c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJ
bXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OlVz
ZXJNZWRpYUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBs
Ojp1c2VyTWVkaWFDb250cm9sbGVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHNyYy9V
c2VyTWVkaWFDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFD
bGllbnRJbXBsOjp1c2VyTWVkaWFRdWVyeUNvbXBsZXRlZCk6CisgICAgICAgICogc3JjL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlh
UmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYVJlcXVlc3Q6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVz
dDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVl
c3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1lZGlhUmVxdWVzdCopOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTEt
MDcgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmVydCBw
bGF0Zm9ybSBhbmQgc2Nyb2xsaW5nIHRvIGludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggYWRlMzczYWUyZmNjMDUzMzU1Njg1YTQ3YTZmMjhm
MDNlMDlmOTRlMC4uNWE1YjQ4M2FkY2IwMzhiNDE1NzhkZGZjNzY5ZjAzZDdmODhmODEwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKQEAgLTQyLDgg
KzQyLDggQEAgY2xhc3MgVXNlck1lZGlhQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdXNlck1lZGlhQ29udHJvbGxlckRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFVzZXJNZWRpYVJlcXVlc3QqKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgVXNlck1lZGlhUmVxdWVzdCop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShVc2VyTWVkaWFSZXF1ZXN0
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRp
YVJlcXVlc3QqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXNlck1lZGlhUXVlcnlDb21wbGV0
ZWQoY29uc3QgVXNlck1lZGlhUmVxdWVzdCosIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNWQ4M2M4NGIwMmI2M2Iy
MTU0M2VkN2Y5MDUxMDJiNmJjYjg3OTgyOC4uMGQxYWI3NjNhMmMyMDM0MjJjNjk0NDdlZjRhOTI0
MDQwZmZhN2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzE3LDYgKzMxNyw4
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViVVJMUmVzcG9uc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2Vy
TWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmVjdG9yLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZp
ZXdDbGllbnQuaCcsCkBAIC00NDQsNiArNDQ2LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1N0
b3JhZ2VJbmZvQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VOYW1l
c3BhY2VQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVBy
b3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oJywKKyAg
ICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwJywKQEAgLTYyMyw2ICs2MjcsNyBA
QAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2UuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJX
b3JrZXJCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVzZXJNZWRpYUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MzlhODVkN2JjOTk5M2FkMjE1N2Q2MzA5
MzM2ODI0M2ZjNmUwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudF9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYUNs
aWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyTWVkaWFSZXF1ZXN0
OworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
YlVzZXJNZWRpYUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVzZXJNZWRpYUNvbnRy
b2xsZXJEZXN0cm95ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEo
Y29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
VXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVz
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1ZGJhZmM1NjU4Zjg4OTBmZDFiMGZmMmUzODk4MGVmMzUwZWYyOTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2Vy
TWVkaWFSZXF1ZXN0LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJVc2VyTWVkaWFSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhUmVxdWVzdF9oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgorI2luY2x1
ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOworCitjbGFzcyBXZWJVc2VyTWVkaWFS
ZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0KCkgeyB9CisgICAgfldl
YlVzZXJNZWRpYVJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlz
TnVsbCgpOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlcXVlc3RGYWlsZWQoKTsKKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgorICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dCopOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0PigpIGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKCkg
Y29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlVz
ZXJNZWRpYVJlcXVlc3Q+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViVXNlck1lZGlhUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggNTJiZmMyMTU1YTVmYjY3YjgzMjg0MzM5
MDAzYzQ5NTk4ZDA3Yjc5Yi4uODM5NWMwOGNlYTBlYTg2MWVlNDNiNjBiZGI3ODFhMTlmZTRhNDUy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApA
QCAtNjcsNiArNjcsNyBAQCBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2Vi
U3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7Citj
bGFzcyBXZWJVc2VyTWVkaWFDbGllbnQ7CiBjbGFzcyBXZWJWaWV3OwogY2xhc3MgV2ViV2lkZ2V0
Owogc3RydWN0IFdlYkNvbnNvbGVNZXNzYWdlOwpAQCAtMzI0LDYgKzMyNSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBXZWJQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZTsKICAgICB9CiAK
KyAgICAvLyBNZWRpYSBTdHJlYW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgV2ViVXNlck1lZGlhQ2xpZW50KiB1
c2VyTWVkaWFDbGllbnQoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmll
d0NsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1VzZXJNZWRpYUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNl
ck1lZGlhQ2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNhNWQ1MTQyNzc2ZTgyMjJlOTZhNzQ5
MjJhNTJhYWYwMThiODgzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
IlVzZXJNZWRpYUNsaWVudEltcGwuaCIKKworI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVk
aWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VzZXJNZWRpYUNsaWVudEltcGw6
OlVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQorICAgIDogbV93ZWJD
bGllbnQoY2xpZW50LT51c2VyTWVkaWFDbGllbnQoKSkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFD
bGllbnRJbXBsOjp1c2VyTWVkaWFDb250cm9sbGVyRGVzdHJveWVkKCkKK3sKKyAgICBpZiAobV93
ZWJDbGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT51c2VyTWVkaWFDb250cm9sbGVyRGVzdHJv
eWVkKCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYShV
c2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGlmIChtX3dlYkNsaWVudCkKKyAgICAg
ICAgbV93ZWJDbGllbnQtPnJlcXVlc3RVc2VyTWVkaWEocmVxdWVzdCk7Cit9CisKK3ZvaWQgVXNl
ck1lZGlhQ2xpZW50SW1wbDo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIGlmIChtX3dlYkNsaWVudCkKKyAgICAgICAgbV93ZWJDbGllbnQt
PmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QocmVxdWVzdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzk4Zjc4
ODRlODI2MmExZjIxYTRlYWQ1MWVjZTUyNWMwMjFmZGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRpYUNsaWVudEltcGxfaAorI2RlZmluZSBVc2Vy
TWVkaWFDbGllbnRJbXBsX2gKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5j
bHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgVXNlck1lZGlhQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpV
c2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIFVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmll
d0NsaWVudCopOworCisgICAgLy8gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2aXJ0dWFsIHZvaWQgdXNl
ck1lZGlhQ29udHJvbGxlckRlc3Ryb3llZCgpOyAvLyBGSVhNRTogTWFrZSBzdXJlIHRoYXQgYWxs
IFVzZXJNZWRpYVJlcXVlc3RzIGFyZSBjYW5jZWxsZWQuCisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RVc2VyTWVkaWEoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXNlck1lZGlhUXVlcnlDb21wbGV0ZWQoY29uc3QgV2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdCosIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJikg
eyB9OworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYUNsaWVudEltcGwoKTsKKworICAgIFdlYlVz
ZXJNZWRpYUNsaWVudCogbV93ZWJDbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFVzZXJNZWRpYUNsaWVudEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hY2VlM2Ji
NWJkNzJmZGI0MGEyNGVmNjQxNzM4ODVhMGVhN2RiYTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTAsMCAr
MSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKworI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldl
Yk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3QoVXNlck1l
ZGlhUmVxdWVzdCogcmVxdWVzdCkKKyAgICA6IG1fcHJpdmF0ZShyZXF1ZXN0KQoreworfQorCit2
b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQo
KTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNvdXJjZXMpCit7CisgICAgaWYgKG1f
cHJpdmF0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3IgczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOworICAg
ICAgICBzLmFwcGVuZChjdXJyKTsKKyAgICB9CisKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiB1
c2VyTWVkaWFDb250cm9sbGVyID0gbV9wcml2YXRlLT5mcmFtZSgpLT5wYWdlKCktPnVzZXJNZWRp
YUNvbnRyb2xsZXIoKTsKKyAgICB1c2VyTWVkaWFDb250cm9sbGVyLT51c2VyTWVkaWFSZXF1ZXN0
U3VjY2VlZGVkKCp0aGlzLCBzKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1
ZXN0RmFpbGVkKCkKK3sKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiB1c2VyTWVkaWFDb250cm9s
bGVyID0gbV9wcml2YXRlLT5mcmFtZSgpLT5wYWdlKCktPnVzZXJNZWRpYUNvbnRyb2xsZXIoKTsK
KyAgICB1c2VyTWVkaWFDb250cm9sbGVyLT51c2VyTWVkaWFSZXF1ZXN0RmFpbGVkKCp0aGlzKTsK
K30KKworYm9vbCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvcj09KGNvbnN0IFdlYlVzZXJN
ZWRpYVJlcXVlc3QmIG90aGVyKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSB8fCBvdGhlci5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0
KCkgPT0gb3RoZXIubV9wcml2YXRlLmdldCgpOworfQorCitXZWJVc2VyTWVkaWFSZXF1ZXN0Ojpv
cGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBV
c2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXgg
YjJkMTZlNTFjNzNlZGZjNjRhN2MwYzAzZTg4YTM2ZDllM2ZkMGE0Yy4uN2E3ZDhiYTA4NmY4MWY3
YTYwOWNkMGZlZjBiOTZmYjk1YjE2OGM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVu
dC5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUlu
ZGljYXRvci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJW
ZWN0b3IuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAi
V2ViQXV0b2ZpbGxDbGllbnQuaCIKQEAgLTM2MCw2ICszNjEsOSBAQCBXZWJWaWV3SW1wbDo6V2Vi
Vmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09H
TklaRVIpCiAgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyAgICAsIG1fdXNlck1lZGlhQ2xpZW50KGFkb3B0UHRyKG5ldyBVc2VyTWVkaWFDbGllbnRJbXBs
KGNsaWVudCkpKQorI2VuZGlmCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2Vz
IHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVjaWZp
YyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNGQxMmIyOTQzM2Iy
NDE5ZmU2OWM1MjY4MzIwNDI0NmFlNjE1NzRkMS4uYzM4YWQwZmExOTMyMWFmNGFkODhhZjBhNzRj
MWE5OGQyZjJhOGY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBj
bGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudFByb3h5OwogY2xh
c3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsOworY2xhc3MgVXNlck1lZGlhQ2xpZW50SW1wbDsKIGNs
YXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJDb21wb3NpdG9ySW1wbDsKIGNs
YXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CkBAIC02MDEsNiArNjAyLDEwIEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKICAgICBPd25QdHI8V2ViQ29yZTo6UGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKICNlbmRpZgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBPd25QdHI8VXNlck1lZGlhQ2xpZW50SW1wbD4g
bV91c2VyTWVkaWFDbGllbnQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114255</attachid>
            <date>2011-11-09 05:20:15 -0800</date>
            <delta_ts>2011-11-11 02:00:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111109142013.patch</filename>
            <type>text/plain</type>
            <size>21835</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMjY2Njg4ZGU5YTRjODFh
ZDEzYWQxN2M3OGI1ZWE3NDRmN2U2MjUwLi4yNTc4ZDM0YmQ2OTgwZTFmZTM5YTcwMDVjZWI2YWIy
ZmNjZDdhNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMDggIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
ZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBlbWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciB0
aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3ZpZGVkIGJ5IHRoZSBidWcgNTY1ODcsIHBl
bmRpbmcgZW5vdWdoIGxhbmRlZCBjb2RlLgorCisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1l
ZGlhQ2xpZW50Lmg6CisKIDIwMTEtMTEtMDcgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3Igc2hvcnRjdXRzIGFu
ZCBzZXR0aW5ncyBzY3JlZW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc0OWEzN2Fj
MTAyY2ZiOWZjNzJlNWU5YWMxZDk1OGFmNzQ5MDFlM2MuLjY4YzhhMjIzY2YzNTA5ZGYyYjY0YzIw
ZWRlM2VmNzRmNTMwNmNhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzggQEAKKzIwMTEtMTEtMDggIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+
CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBlbWJlZGRpbmcg
Y29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0UGxhdGZv
cm1TdXBwb3J0Lmg6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50Ojp+V2ViVXNlck1lZGlhQ2xp
ZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6On5XZWJVc2VyTWVkaWFSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6aXNOdWxsKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
Q2xpZW50Ojp1c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJ
bXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OlVz
ZXJNZWRpYUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBs
Ojp1c2VyTWVkaWFDb250cm9sbGVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHNyYy9V
c2VyTWVkaWFDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFD
bGllbnRJbXBsOjp1c2VyTWVkaWFRdWVyeUNvbXBsZXRlZCk6CisgICAgICAgICogc3JjL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlh
UmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYVJlcXVlc3Q6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVz
dDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVl
c3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1lZGlhUmVxdWVzdCopOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTEt
MDcgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmVydCBw
bGF0Zm9ybSBhbmQgc2Nyb2xsaW5nIHRvIGludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggYWRlMzczYWUyZmNjMDUzMzU1Njg1YTQ3YTZmMjhm
MDNlMDlmOTRlMC4uNWE1YjQ4M2FkY2IwMzhiNDE1NzhkZGZjNzY5ZjAzZDdmODhmODEwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKQEAgLTQyLDgg
KzQyLDggQEAgY2xhc3MgVXNlck1lZGlhQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdXNlck1lZGlhQ29udHJvbGxlckRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFVzZXJNZWRpYVJlcXVlc3QqKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgVXNlck1lZGlhUmVxdWVzdCop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShVc2VyTWVkaWFSZXF1ZXN0
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRp
YVJlcXVlc3QqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXNlck1lZGlhUXVlcnlDb21wbGV0
ZWQoY29uc3QgVXNlck1lZGlhUmVxdWVzdCosIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNWQ4M2M4NGIwMmI2M2Iy
MTU0M2VkN2Y5MDUxMDJiNmJjYjg3OTgyOC4uMGQxYWI3NjNhMmMyMDM0MjJjNjk0NDdlZjRhOTI0
MDQwZmZhN2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzE3LDYgKzMxNyw4
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViVVJMUmVzcG9uc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2Vy
TWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmVjdG9yLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZp
ZXdDbGllbnQuaCcsCkBAIC00NDQsNiArNDQ2LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1N0
b3JhZ2VJbmZvQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VOYW1l
c3BhY2VQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVBy
b3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oJywKKyAg
ICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwJywKQEAgLTYyMyw2ICs2MjcsNyBA
QAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2UuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJX
b3JrZXJCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVzZXJNZWRpYUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MzlhODVkN2JjOTk5M2FkMjE1N2Q2MzA5
MzM2ODI0M2ZjNmUwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudF9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYUNs
aWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyTWVkaWFSZXF1ZXN0
OworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
YlVzZXJNZWRpYUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVzZXJNZWRpYUNvbnRy
b2xsZXJEZXN0cm95ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEo
Y29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
VXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVz
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYwZTkzNDQwYTk0ZmQ1NmE4OTI0MDFkOGE1MDU2Njg4MmJkMmZjN2EK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2Vy
TWVkaWFSZXF1ZXN0LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJVc2VyTWVkaWFSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhUmVxdWVzdF9oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgorI2luY2x1
ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOworY2xhc3MgV2ViU2VjdXJpdHlPcmln
aW47CisKK2NsYXNzIFdlYlVzZXJNZWRpYVJlcXVlc3QgeworcHVibGljOgorICAgIFdlYlVzZXJN
ZWRpYVJlcXVlc3QoKSB7IH0KKyAgICB+V2ViVXNlck1lZGlhUmVxdWVzdCgpIHsgcmVzZXQoKTsg
fQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQg
Ym9vbCBhdWRpbygpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0
OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNvbnN0Owor
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBjYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKSBjb25z
dDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlNlY3VyaXR5T3JpZ2luIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBX
ZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHJlcXVlc3RGYWlsZWQoKTsKKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCop
OworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0
PigpIGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKCkgY29u
c3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3Q+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViVXNlck1lZGlhUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggNTJiZmMyMTU1YTVmYjY3YjgzMjg0MzM5MDAz
YzQ5NTk4ZDA3Yjc5Yi4uODM5NWMwOGNlYTBlYTg2MWVlNDNiNjBiZGI3ODFhMTlmZTRhNDUyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAt
NjcsNiArNjcsNyBAQCBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2ViU3Rv
cmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7CitjbGFz
cyBXZWJVc2VyTWVkaWFDbGllbnQ7CiBjbGFzcyBXZWJWaWV3OwogY2xhc3MgV2ViV2lkZ2V0Owog
c3RydWN0IFdlYkNvbnNvbGVNZXNzYWdlOwpAQCAtMzI0LDYgKzMyNSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBXZWJQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZTsKICAgICB9CiAKKyAg
ICAvLyBNZWRpYSBTdHJlYW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgV2ViVXNlck1lZGlhQ2xpZW50KiB1c2Vy
TWVkaWFDbGllbnQoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0Ns
aWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Vz
ZXJNZWRpYUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1l
ZGlhQ2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNhNWQ1MTQyNzc2ZTgyMjJlOTZhNzQ5MjJh
NTJhYWYwMThiODgzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVz
ZXJNZWRpYUNsaWVudEltcGwuaCIKKworI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFS
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VzZXJNZWRpYUNsaWVudEltcGw6OlVz
ZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQorICAgIDogbV93ZWJDbGll
bnQoY2xpZW50LT51c2VyTWVkaWFDbGllbnQoKSkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFDbGll
bnRJbXBsOjp1c2VyTWVkaWFDb250cm9sbGVyRGVzdHJveWVkKCkKK3sKKyAgICBpZiAobV93ZWJD
bGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT51c2VyTWVkaWFDb250cm9sbGVyRGVzdHJveWVk
KCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYShVc2Vy
TWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGlmIChtX3dlYkNsaWVudCkKKyAgICAgICAg
bV93ZWJDbGllbnQtPnJlcXVlc3RVc2VyTWVkaWEocmVxdWVzdCk7Cit9CisKK3ZvaWQgVXNlck1l
ZGlhQ2xpZW50SW1wbDo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KiBy
ZXF1ZXN0KQoreworICAgIGlmIChtX3dlYkNsaWVudCkKKyAgICAgICAgbV93ZWJDbGllbnQtPmNh
bmNlbFVzZXJNZWRpYVJlcXVlc3QocmVxdWVzdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzk4Zjc4ODRl
ODI2MmExZjIxYTRlYWQ1MWVjZTUyNWMwMjFmZGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRpYUNsaWVudEltcGxfaAorI2RlZmluZSBVc2VyTWVk
aWFDbGllbnRJbXBsX2gKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVk
ZSAiVXNlck1lZGlhQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgVXNlck1lZGlhQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpVc2Vy
TWVkaWFDbGllbnQgeworcHVibGljOgorICAgIFVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0Ns
aWVudCopOworCisgICAgLy8gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2aXJ0dWFsIHZvaWQgdXNlck1l
ZGlhQ29udHJvbGxlckRlc3Ryb3llZCgpOyAvLyBGSVhNRTogTWFrZSBzdXJlIHRoYXQgYWxsIFVz
ZXJNZWRpYVJlcXVlc3RzIGFyZSBjYW5jZWxsZWQuCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RV
c2VyTWVkaWEoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOworICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXNlck1lZGlhUXVlcnlDb21wbGV0ZWQoY29uc3QgV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdCosIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJikgeyB9
OworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYUNsaWVudEltcGwoKTsKKworICAgIFdlYlVzZXJN
ZWRpYUNsaWVudCogbV93ZWJDbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFVzZXJNZWRpYUNsaWVudEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2Q5MWM1ZmE1
NmUyMTg0ZDU4YmE3YTYwYzM0MGY5N2I3Nzk2ZGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwx
MjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUg
IldlYlN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpX
ZWJVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCisgICAgOiBtX3By
aXZhdGUocmVxdWVzdCkKK3sKK30KKwordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCgp
Cit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVz
dDo6YXVkaW8oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7Cit9CisK
K2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6dmlkZW8oKSBjb25zdAoreworICAgIHJldHVybiBt
X3ByaXZhdGUtPnZpZGVvKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJh
UHJlZmVyZW5jZVVzZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNhbWVyYVBy
ZWZlcmVuY2VVc2VyKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJl
ZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jYW1l
cmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKTsKK30KKworV2ViU2VjdXJpdHlPcmlnaW4gV2ViVXNl
ck1lZGlhUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBXZWJT
ZWN1cml0eU9yaWdpbihtX3ByaXZhdGUtPmZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCkpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQo
Y29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgc291cmNlcykKK3sKKyAgICBp
ZiAobV9wcml2YXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciBzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc291cmNlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IHNvdXJjZXNbaV07
CisgICAgICAgIHMuYXBwZW5kKGN1cnIpOworICAgIH0KKworICAgIFVzZXJNZWRpYUNvbnRyb2xs
ZXIqIHVzZXJNZWRpYUNvbnRyb2xsZXIgPSBtX3ByaXZhdGUtPmZyYW1lKCktPnBhZ2UoKS0+dXNl
ck1lZGlhQ29udHJvbGxlcigpOworICAgIHVzZXJNZWRpYUNvbnRyb2xsZXItPnVzZXJNZWRpYVJl
cXVlc3RTdWNjZWVkZWQoKnRoaXMsIHMpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6
OnJlcXVlc3RGYWlsZWQoKQoreworICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIHVzZXJNZWRpYUNv
bnRyb2xsZXIgPSBtX3ByaXZhdGUtPmZyYW1lKCktPnBhZ2UoKS0+dXNlck1lZGlhQ29udHJvbGxl
cigpOworICAgIHVzZXJNZWRpYUNvbnRyb2xsZXItPnVzZXJNZWRpYVJlcXVlc3RGYWlsZWQoKnRo
aXMpOworfQorCitib29sIFdlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yPT0oY29uc3QgV2Vi
VXNlck1lZGlhUmVxdWVzdCYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpIHx8IG90
aGVyLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS5nZXQoKSA9PSBvdGhlci5tX3ByaXZhdGUuZ2V0KCk7Cit9CisKK1dlYlVzZXJNZWRpYVJlcXVl
c3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4oKSBjb25zdAoreworICAg
IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJh
dG9yIFVzZXJNZWRpYVJlcXVlc3QqKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdl
dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApp
bmRleCBiMmQxNmU1MWM3M2VkZmM2NGE3YzBjMDNlODhhMzZkOWUzZmQwYTRjLi43YTdkOGJhMDg2
ZjgxZjdhNjA5Y2QwZmVmMGI5NmZiOTViMTY4YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlICJUcmFj
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0
dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1
ZGUgIlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNs
dWRlICJXZWJBdXRvZmlsbENsaWVudC5oIgpAQCAtMzYwLDYgKzM2MSw5IEBAIFdlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjaWYgRU5BQkxFKEdFU1RVUkVf
UkVDT0dOSVpFUikKICAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoV2ViQ29yZTo6UGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcjo6Y3JlYXRlKCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgICwgbV91c2VyTWVkaWFDbGllbnQoYWRvcHRQdHIobmV3IFVzZXJNZWRpYUNsaWVu
dEltcGwoY2xpZW50KSkpCisjZW5kaWYKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3Bw
IGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNw
ZWNpZmljIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFk
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA0ZDEyYjI5
NDMzYjI0MTlmZTY5YzUyNjgzMjA0MjQ2YWU2MTU3NGQxLi5jMzhhZDBmYTE5MzIxYWY0YWQ4OGFm
MGE3NGMxYTk4ZDJmMmE4ZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk7
CiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CitjbGFzcyBVc2VyTWVkaWFDbGllbnRJbXBs
OwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkNvbXBvc2l0b3JJbXBs
OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKQEAgLTYwMSw2ICs2MDIsMTAgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQogICAgIE93blB0cjxXZWJDb3Jl
OjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOwogI2VuZGlm
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIE93blB0cjxVc2VyTWVkaWFDbGllbnRJ
bXBsPiBtX3VzZXJNZWRpYUNsaWVudDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114652</attachid>
            <date>2011-11-11 02:00:28 -0800</date>
            <delta_ts>2011-11-17 06:27:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111111110026.patch</filename>
            <type>text/plain</type>
            <size>21786</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5MzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
NTY1NzE2NDc4ZThkOTc4ZDM5YWY5ZGEwODMzMjgzY2QxZGU2YTAzMi4uODBiM2UxZWMzYTRhNmMw
ZGM5N2I3ZjkwYjFhNTk1NWE2OTZhZDg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NSBAQAorMjAxMS0xMS0xMSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQWRkaW5nIGVt
YmVkZGluZyBjb2RlIGZvciBHZXRVc2VyTWVkaWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNjc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJV
c2VyTWVkaWFDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNs
aWVudDo6fldlYlVzZXJNZWRpYUNsaWVudCk6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRp
YVJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6
OldlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1
ZXN0Ojp+V2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRp
YVJlcXVlc3Q6OmlzTnVsbCk6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6dXNlck1lZGlhQ2xpZW50KToKKyAgICAgICAg
KiBzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFDbGllbnRJbXBsOjpVc2VyTWVkaWFDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6dXNlck1lZGlhQ29udHJvbGxlckRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OnJlcXVlc3RVc2VyTWVkaWEpOgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpjYW5jZWxVc2VyTWVkaWFSZXF1
ZXN0KToKKyAgICAgICAgKiBzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6dXNlck1lZGlhUXVlcnlDb21wbGV0ZWQp
OgorICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ck1lZGlhUmVxdWVzdDo6dmlkZW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1
ZXN0OjpjYW1lcmFQcmVmZXJlbmNlVXNlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRp
YVJlcXVlc3Q6OmNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ck1lZGlhUmVxdWVzdDo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVx
dWVzdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6
b3BlcmF0b3IgUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0Pik6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFVzZXJNZWRpYVJlcXVlc3QqKToKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTExLTEw
ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gQWRkIHBsdW1iaW5nIGZvciBKUyB0byB3cml0ZSB0byBjbGlwYm9hcmQgaW4gY29weS9jdXQg
ZXZlbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDA5ZWM4NjAzZjczYjE2NGY4
YTBkYjc2YjRlYjQwODIwODQ3N2MzNDEuLmQxNzczZmNlNzM1Y2U0OWFjYzcyZGU0OWFiNWM5NTVh
OWNlODY3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMxOCw2ICszMTgsOCBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9hZGVyQ2xpZW50LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVVJMUmVxdWVzdC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlVSTFJlc3BvbnNlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1l
ZGlhQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVz
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZlY3Rvci5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlZpZXcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmgnLApAQCAtNDQ1LDYgKzQ0Nyw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9y
YWdlSW5mb0Nocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNw
YWNlUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94
eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcCcsCkBAIC02MjUsNiArNjI5LDcgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJVUkxSZXNwb25zZVByaXZhdGUuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJVUkxFcnJvci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViVXNlck1lZGlhUmVxdWVz
dC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlZpZXdJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViV29y
a2VyQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJV
c2VyTWVkaWFDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDM5YTg1ZDdiYzk5OTNhZDIxNTdkNjMwOTMz
NjgyNDNmYzZlMGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJVc2VyTWVkaWFDbGllbnRfaAorI2RlZmluZSBXZWJVc2VyTWVkaWFDbGll
bnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlck1lZGlhUmVxdWVzdDsK
KworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJV
c2VyTWVkaWFDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1c2VyTWVkaWFDb250cm9s
bGVyRGVzdHJveWVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNv
bnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVz
ZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3Qu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMTAzMWY1N2M0NGQxZTE0MTMwZDE3YzA0YmQyYmQzNzhmYTA1NzNjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1l
ZGlhUmVxdWVzdC5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
VXNlck1lZGlhUmVxdWVzdF9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYVJlcXVlc3RfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2lu
OworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJVc2VyTWVkaWFSZXF1ZXN0IHsKK3B1Ymxp
YzoKKyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0KCkgeyB9CisgICAgV0VCS0lUX0VYUE9SVCBXZWJV
c2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKTsKKyAgICB+V2ViVXNl
ck1lZGlhUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0JiBvcGVyYXRvcj0oY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOworCisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7
IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBh
dWRpbygpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0OworICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNvbnN0OworICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBjYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKSBjb25zdDsKKyAg
ICBXRUJLSVRfRVhQT1JUIFdlYlNlY3VyaXR5T3JpZ2luIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7
CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0
b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVl
c3RGYWlsZWQoKTsKKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdl
YlVzZXJNZWRpYVJlcXVlc3QmKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOworICAg
IG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PigpIGNv
bnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKCkgY29uc3Q7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIGFzc2lnbihjb25zdCBXZWJVc2VyTWVkaWFSZXF1
ZXN0Jik7CisKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IG1f
cHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNl
ck1lZGlhUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmgKaW5kZXggNTJiZmMyMTU1YTVmYjY3YjgzMjg0MzM5MDAzYzQ5NTk4ZDA3Yjc5Yi4u
ODM5NWMwOGNlYTBlYTg2MWVlNDNiNjBiZGI3ODFhMTlmZTRhNDUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtNjcsNiArNjcsNyBAQCBj
bGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsK
IGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7CitjbGFzcyBXZWJVc2VyTWVkaWFD
bGllbnQ7CiBjbGFzcyBXZWJWaWV3OwogY2xhc3MgV2ViV2lkZ2V0Owogc3RydWN0IFdlYkNvbnNv
bGVNZXNzYWdlOwpAQCAtMzI0LDYgKzMyNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBX
ZWJQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZTsKICAgICB9CiAKKyAgICAvLyBNZWRpYSBTdHJl
YW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworICAgIHZpcnR1YWwgV2ViVXNlck1lZGlhQ2xpZW50KiB1c2VyTWVkaWFDbGllbnQoKSB7
IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0NsaWVudCgpIHsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDNhNWQ1MTQyNzc2ZTgyMjJlOTZhNzQ5MjJhNTJhYWYwMThiODgzNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNs
aWVudEltcGwuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudElt
cGwuaCIKKworI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJV
c2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5j
bHVkZSAiV2ViVmlld0NsaWVudC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1VzZXJNZWRpYUNsaWVudEltcGw6OlVzZXJNZWRpYUNsaWVudElt
cGwoV2ViVmlld0NsaWVudCogY2xpZW50KQorICAgIDogbV93ZWJDbGllbnQoY2xpZW50LT51c2Vy
TWVkaWFDbGllbnQoKSkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjp1c2VyTWVk
aWFDb250cm9sbGVyRGVzdHJveWVkKCkKK3sKKyAgICBpZiAobV93ZWJDbGllbnQpCisgICAgICAg
IG1fd2ViQ2xpZW50LT51c2VyTWVkaWFDb250cm9sbGVyRGVzdHJveWVkKCk7Cit9CisKK3ZvaWQg
VXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYShVc2VyTWVkaWFSZXF1ZXN0KiBy
ZXF1ZXN0KQoreworICAgIGlmIChtX3dlYkNsaWVudCkKKyAgICAgICAgbV93ZWJDbGllbnQtPnJl
cXVlc3RVc2VyTWVkaWEocmVxdWVzdCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50SW1wbDo6
Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAg
IGlmIChtX3dlYkNsaWVudCkKKyAgICAgICAgbV93ZWJDbGllbnQtPmNhbmNlbFVzZXJNZWRpYVJl
cXVlc3QocmVxdWVzdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Vz
ZXJNZWRpYUNsaWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODUyZWZmZTRhZmNhY2JlNWNkMDBlYmIy
YTE5Nzg3NjQ0ZDY5OTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFVzZXJNZWRpYUNsaWVudEltcGxfaAorI2RlZmluZSBVc2VyTWVkaWFDbGllbnRJbXBsX2gK
KworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
VXNlck1lZGlhQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgewor
cHVibGljOgorICAgIFVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworCisgICAg
Ly8gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2aXJ0dWFsIHZvaWQgdXNlck1lZGlhQ29udHJvbGxlckRl
c3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFdlYkNvcmU6OlVz
ZXJNZWRpYVJlcXVlc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVz
dChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHVzZXJNZWRp
YVF1ZXJ5Q29tcGxldGVkKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqLCBjb25zdCBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpIHsgfTsKKworcHJpdmF0ZToKKyAgICBVc2VyTWVk
aWFDbGllbnRJbXBsKCk7CisKKyAgICBXZWJVc2VyTWVkaWFDbGllbnQqIG1fd2ViQ2xpZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVc2VyTWVkaWFDbGllbnRJ
bXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRp
YVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVx
dWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA4ZjU1MmVlY2U5ZDJiNjFhODA1NDU0NTE3MjU0ZWZiYmI4
NzNkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
V2ViVXNlck1lZGlhUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJN
ZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCisjaW5j
bHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlVzZXJNZWRpYVJlcXVl
c3Q6OldlYlVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKKyAgICA6
IG1fcHJpdmF0ZShyZXF1ZXN0KQoreworfQorCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpXZWJVc2Vy
TWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAg
YXNzaWduKHJlcXVlc3QpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlc2V0KCkK
K3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKworYm9vbCBXZWJVc2VyTWVkaWFSZXF1ZXN0
OjphdWRpbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW8oKTsKK30KKwor
Ym9vbCBXZWJVc2VyTWVkaWFSZXF1ZXN0Ojp2aWRlbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+dmlkZW8oKTsKK30KKworYm9vbCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpjYW1lcmFQ
cmVmZXJlbmNlVXNlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2FtZXJhUHJl
ZmVyZW5jZVVzZXIoKTsKK30KKworYm9vbCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpjYW1lcmFQcmVm
ZXJlbmNlRW52aXJvbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNhbWVy
YVByZWZlcmVuY2VFbnZpcm9ubWVudCgpOworfQorCitXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2Vy
TWVkaWFSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNl
Y3VyaXR5T3JpZ2luKG1fcHJpdmF0ZS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZChj
b25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBzb3VyY2VzKQoreworICAgIGlm
IChtX3ByaXZhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yIHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0gc291cmNlc1tpXTsK
KyAgICAgICAgcy5hcHBlbmQoY3Vycik7CisgICAgfQorCisgICAgVXNlck1lZGlhQ29udHJvbGxl
ciogdXNlck1lZGlhQ29udHJvbGxlciA9IG1fcHJpdmF0ZS0+ZnJhbWUoKS0+cGFnZSgpLT51c2Vy
TWVkaWFDb250cm9sbGVyKCk7CisgICAgdXNlck1lZGlhQ29udHJvbGxlci0+dXNlck1lZGlhUmVx
dWVzdFN1Y2NlZWRlZCgqdGhpcywgcyk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6
cmVxdWVzdEZhaWxlZCgpCit7CisgICAgVXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhQ29u
dHJvbGxlciA9IG1fcHJpdmF0ZS0+ZnJhbWUoKS0+cGFnZSgpLT51c2VyTWVkaWFDb250cm9sbGVy
KCk7CisgICAgdXNlck1lZGlhQ29udHJvbGxlci0+dXNlck1lZGlhUmVxdWVzdEZhaWxlZCgqdGhp
cyk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3I9PShjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkgfHwgb3Ro
ZXIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LmdldCgpID09IG90aGVyLm1fcHJpdmF0ZS5nZXQoKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFS
ZXF1ZXN0Ojphc3NpZ24oY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgb3RoZXIpCit7CisgICAg
VXNlck1lZGlhUmVxdWVzdCogcCA9IG90aGVyLm1fcHJpdmF0ZS5nZXQoKTsKKyAgICBpZiAocCkK
KyAgICAgICAgcC0+cmVmKCk7CisgICAgbV9wcml2YXRlID0gcDsKK30KKworV2ViVXNlck1lZGlh
UmVxdWVzdCYgV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3I9KGNvbnN0IFdlYlVzZXJNZWRp
YVJlcXVlc3QmIG90aGVyKQoreworICAgIGFzc2lnbihvdGhlcik7CisgICAgcmV0dXJuICp0aGlz
OworfQorCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRp
YVJlcXVlc3Q+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitX
ZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBVc2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZmVkZDZmMDg0OTg3NmNmMDIyZDFkZDRiMmJk
NTUzOGJmZDQwNjIyZS4uMWFjODU5NWE4MWUwYzBmNmQ0NjgxMTU1ZDQ3YzAzM2YxMDVmNzhhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTA1LDYg
KzEwNSw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1h
bmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgorI2luY2x1ZGUgIlVzZXJN
ZWRpYUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJWZWN0b3IuaCIKICNpbmNsdWRlICJXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQXV0b2ZpbGxDbGllbnQuaCIKQEAgLTM2
MSw2ICszNjIsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xp
ZW50KQogI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCiAgICAgLCBtX2dlc3R1cmVSZWNv
Z25pemVyKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQogI2Vu
ZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdXNlck1lZGlhQ2xpZW50KGFk
b3B0UHRyKG5ldyBVc2VyTWVkaWFDbGllbnRJbXBsKGNsaWVudCkpKQorI2VuZGlmCiB7CiAgICAg
Ly8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhl
eSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVjaWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhv
ZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGluZwpAQCAtMzgzLDYgKzM4Nyw5IEBAIFdlYlZpZXdJ
bXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgcGFnZUNsaWVudHMu
ZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHku
Z2V0KCk7CiAgICAgcGFnZUNsaWVudHMuZ2VvbG9jYXRpb25DbGllbnQgPSBtX2dlb2xvY2F0aW9u
Q2xpZW50UHJveHkuZ2V0KCk7CiAgICAgcGFnZUNsaWVudHMuYmFja0ZvcndhcmRDbGllbnQgPSBC
YWNrRm9yd2FyZExpc3RDaHJvbWl1bTo6Y3JlYXRlKHRoaXMpOworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisgICAgcGFnZUNsaWVudHMudXNlck1lZGlhQ2xpZW50ID0gbV91c2VyTWVkaWFDbGll
bnQuZ2V0KCk7CisjZW5kaWYKIAogICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VD
bGllbnRzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4
IDlhMDE5OTI0YTlmMGQyZDg3NzI3NzhhNTY3ZWQzYzY0MGY5YTA4ZDMuLjdlM2VlMWVmNmZjMDll
MDFmODA2NThmY2UyOTEwNDg2OTdjOWM2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaApAQCAtODEsNiArODEsNyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGll
bnRQcm94eTsKIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbDsKK2NsYXNzIFVzZXJNZWRpYUNs
aWVudEltcGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViQ29tcG9z
aXRvckltcGw7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwpAQCAtNjAxLDYgKzYwMiwx
MCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCiAgICAgT3duUHRy
PFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7
CiAjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgT3duUHRyPFVzZXJNZWRp
YUNsaWVudEltcGw+IG1fdXNlck1lZGlhQ2xpZW50OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115578</attachid>
            <date>2011-11-17 06:27:36 -0800</date>
            <delta_ts>2011-11-17 06:33:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111117152734.patch</filename>
            <type>text/plain</type>
            <size>24514</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUwM2RjZDUzNWM0NGRk
ZDY3NWRlNTE5MzA4Njg4MTZiZmUxZjViMC4uM2M2YmVmYWYzNTI1YjYyYWFiYTNjZGQ5Y2QzZjg2
MTRlNDc0MWViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTExLTE3ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgZW1iZWRkaW5nIGNvZGUgZm9yIEdldFVzZXJNZWRpYQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE2NzgKKwor
ICAgICAgICBBZGRpbmcgdGhlIFNlY3VyaXR5T3JpZ2luIHRvIGEgVXNlck1lZGlhUmVxdWVzdCBv
YmplY3QgYmVjYXVzZSBpdCBpcyBuZWVkZWQgaW4gdGhlIGNocm9taXVtIGVtYmVkZGVyLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciB0
aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3ZpZGVkIGJ5IHRoZSBidWcgNTY1ODcsIHBl
bmRpbmcgZW5vdWdoIGxhbmRlZCBjb2RlLgorCisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpVc2Vy
TWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbik6CisK
IDIwMTEtMTEtMTYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCBmaWx0ZXIgZnVuY3Rpb24gc2hvcnRoYW5kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBlMjA3NDE3MWEyNzU1OTg1ZTYyYzFiY2U0ZDNkMWQ4NDA3ZDBjMTYzLi4yMzZmNjkx
Zjg3YjY3ODE2ODVkYzE3MjJlOWUzNTQxZjUyYjBjYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDExLTExLTE3ICBUb21teSBXaWRlbmZseWNodCAgPHRv
bW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBB
ZGRpbmcgZW1iZWRkaW5nIGNvZGUgZm9yIEdldFVzZXJNZWRpYQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE2NzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVi
bGljL1dlYlVzZXJNZWRpYUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ck1lZGlhQ2xpZW50Ojp+V2ViVXNlck1lZGlhQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
VXNlck1lZGlhUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlh
UmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYVJlcXVlc3Q6On5XZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlck1lZGlhUmVxdWVzdDo6aXNOdWxsKToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVu
dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50Ojp1c2VyTWVkaWFDbGllbnQpOgor
ICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OlVzZXJNZWRpYUNsaWVudEltcGwpOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpwYWdlRGVzdHJveWVkKToKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgor
ICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJNZWRpYVJlcXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRp
YVJlcXVlc3Q6OmF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6
dmlkZW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpjYW1lcmFQcmVm
ZXJlbmNlVXNlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OmNhbWVy
YVByZWZlcmVuY2VFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJl
cXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVx
dWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJl
cXVlc3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1
ZXN0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6
YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0Pik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJl
cXVlc3Q6Om9wZXJhdG9yIFVzZXJNZWRpYVJlcXVlc3QqKToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTExLTExICBBZHJpZW5uZSBXYWxr
ZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBFeHBvc2UgbW9jayBz
Y3JvbGxiYXJzIHRvIHdpbmRvdy5pbnRlcm5hbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggYzRjZjg3MGU2YjI2MzhlMTVhNjVjMWUw
MDA3NjY4NGE5NzlkODJmZC4uMzQxZGFlNTEyYjZjMDA5MTEwODZiMWJlMWZhNTM1YTcwOTIzNzk1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5j
cHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCiAKICNp
bmNsdWRlICJMb2NhbE1lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxp
dFN0cmluZy5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgogCkBAIC01OCw2ICs2MCw3
IEBAIFVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgVXNlck1lZGlhQ2xpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAg
LCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2Vycm9yQ2FsbGJh
Y2soZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fc2VjdXJpdHlPcmlnaW4oY29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKSkKIHsKICAgICBwYXJzZU9wdGlvbnMob3B0aW9ucyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggMTA5YmQ0NzNkMzVk
MjE2YmEwOTM5YTc0ZGNkMjQyYTZhZmY5MzUyYi4uMWY2NTcyM2IyMDYxNTAwZTgzZTE3OTM4N2E3
YmE5ZTgyNDI4YzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuaApAQCAtNDMsNiArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVXNlck1lZGlhQ2xpZW50OwogCiBjbGFzcyBVc2Vy
TWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVzdD4sIHB1Ymxp
YyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CkBAIC01OSw2ICs2MCw4IEBAIHB1YmxpYzoK
ICAgICBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2sqIHN1Y2Nlc3NDYWxsYmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNrLmdldCgpOyB9CiAgICAgTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjayogZXJyb3JDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1f
ZXJyb3JDYWxsYmFjay5nZXQoKTsgfQogCisgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQorCiAgICAgdm9p
ZCBzdGFydCgpOwogICAgIHZvaWQgbWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKIApAQCAtODMsNiArODYsOCBAQCBwcml2YXRl
OgogCiAgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gbV9zdWNj
ZXNzQ2FsbGJhY2s7CiAgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+
IG1fZXJyb3JDYWxsYmFjazsKKworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0
eU9yaWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCBiYTg1NGVhYmNkNmFmODc0NWI3MWFhYjljMTc2NTIzYzEwZTk5MjQ5Li5k
ODliZGUxODU5NmJhYzU1NDk0ZGE0ZmVlYTk3MTc0OWM5ZDUzYzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC0zMjEsNiArMzIxLDggQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlVSTExvYWRlckNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVSTFJl
cXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJWZWN0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJWaWV3LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlld0NsaWVudC5oJywKQEAgLTQ0Nyw2ICs0NDks
OCBAQAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZUluZm9DaHJvbWl1bS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlh
Q2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dENoZWNraW5nQ29t
cGxldGlvbkltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21w
bGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvVmlkZW9GcmFtZUNocm9taXVt
SW1wbC5jcHAnLApAQCAtNjI3LDYgKzYzMSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJV
UkxSZXNwb25zZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2VQcml2
YXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMRXJyb3IuY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlckJhc2UuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmE4Yzc4ODY1N2NmZmRkZDk4ODkyNjA0ZmQ1ZTdjNzBlOTZlMjE4OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5o
CkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNlck1lZGlhQ2xp
ZW50X2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYlZlY3Rv
ci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlck1lZGlhUmVxdWVzdDsK
K2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlVzZXJNZWRpYUNsaWVudCgpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYsIGNvbnN0IFdlYlZlY3RvcjxX
ZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJN
ZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZTE3ZWZmMTdmMzJkOWI3ZjhlNzdmYmE4OWQ1NjdjZjA3ZTg5ZjQyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlh
UmVxdWVzdC5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNl
ck1lZGlhUmVxdWVzdF9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYVJlcXVlc3RfaAorCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJX
ZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwor
Y2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJVc2VyTWVkaWFSZXF1ZXN0IHsKK3B1YmxpYzoK
KyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0KCkgeyB9CisgICAgV0VCS0lUX0VYUE9SVCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKTsKKyAgICB+V2ViVXNlck1l
ZGlhUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBXZWJVc2VyTWVk
aWFSZXF1ZXN0JiBvcGVyYXRvcj0oY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOworCisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhdWRp
bygpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0OworICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNvbnN0OworICAgIFdFQktJ
VF9FWFBPUlQgYm9vbCBjYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKSBjb25zdDsKKyAgICBX
RUJLSVRfRVhQT1JUIFdlYlNlY3VyaXR5T3JpZ2luIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CisK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RG
YWlsZWQoKTsKKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlVz
ZXJNZWRpYVJlcXVlc3QmKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IFdlYlVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOworICAgIFdl
YlVzZXJNZWRpYVJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0PiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0PigpIGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Qq
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIGFzc2lnbihjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0Jik7CisKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlVzZXJNZWRp
YVJlcXVlc3Q+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViVXNlck1lZGlhUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggNTJiZmMyMTU1YTVmYjY3YjgzMjg0MzM5MDAzYzQ5
NTk4ZDA3Yjc5Yi4uODM5NWMwOGNlYTBlYTg2MWVlNDNiNjBiZGI3ODFhMTlmZTRhNDUyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtNjcs
NiArNjcsNyBAQCBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2ViU3RvcmFn
ZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7CitjbGFzcyBX
ZWJVc2VyTWVkaWFDbGllbnQ7CiBjbGFzcyBXZWJWaWV3OwogY2xhc3MgV2ViV2lkZ2V0Owogc3Ry
dWN0IFdlYkNvbnNvbGVNZXNzYWdlOwpAQCAtMzI0LDYgKzMyNSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBXZWJQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZTsKICAgICB9CiAKKyAgICAv
LyBNZWRpYSBTdHJlYW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgV2ViVXNlck1lZGlhQ2xpZW50KiB1c2VyTWVk
aWFDbGllbnQoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0NsaWVu
dCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJN
ZWRpYUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlh
Q2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIyOTUxNGU5Y2ZjOTI2YjFhNDA4OGI3NGVmYWY4
ODhlMDQ1N2M4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVzZXJN
ZWRpYUNsaWVudEltcGwuaCIKKworI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtU291cmNlLmgiCisj
aW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhUmVx
dWVzdC5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitVc2VyTWVkaWFDbGllbnRJbXBsOjpVc2Vy
TWVkaWFDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fd2ViQ2xpZW50
KGNsaWVudC0+dXNlck1lZGlhQ2xpZW50KCkpCit7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50
SW1wbDo6cGFnZURlc3Ryb3llZCgpCit7CisgICAgaWYgKG1fd2ViQ2xpZW50KQorICAgICAgICBt
X3dlYkNsaWVudC0+cGFnZURlc3Ryb3llZCgpOworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudElt
cGw6OnJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0
LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcykKK3sKKyAgICBpZiAobV93
ZWJDbGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT5yZXF1ZXN0VXNlck1lZGlhKHJlcXVlc3Qs
IHNvdXJjZXMpOworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBpZiAobV93ZWJDbGll
bnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT5jYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KHJlcXVlc3Qp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJ
bXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmJmNWRmMDEzNmQ0ZGM2ODQ4ZjZjYTZjZTE4OTlhMWExYmRhOTNh
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRp
YUNsaWVudEltcGwuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2VyTWVkaWFD
bGllbnRJbXBsX2gKKyNkZWZpbmUgVXNlck1lZGlhQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgorI2luY2x1
ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVXNlck1lZGlh
UmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFVzZXJNZWRpYUNsaWVu
dEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBV
c2VyTWVkaWFDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsKKworICAgIC8vIFdlYkNvcmU6OlVz
ZXJNZWRpYUNsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBj
b25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKwor
cHJpdmF0ZToKKyAgICBVc2VyTWVkaWFDbGllbnRJbXBsKCk7CisKKyAgICBXZWJVc2VyTWVkaWFD
bGllbnQqIG1fd2ViQ2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBVc2VyTWVkaWFDbGllbnRJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFiMDE0NWMyNjUwYTkw
ZDUyOWY3OGFhYTRlOWZhNjRiOTEyMmYwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhUmVxdWVzdC5oIgorCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291
cmNlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisj
aW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtU291
cmNlLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJTdHJp
bmcuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVXNlck1lZGlhUmVxdWVzdDo6V2ViVXNlck1l
ZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQorICAgIDogbV9wcml2YXRlKHJl
cXVlc3QpCit7Cit9CisKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3Qo
Y29uc3QgUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiYgcmVxdWVzdCkKKyAgICA6IG1fcHJp
dmF0ZShyZXF1ZXN0KQoreworfQorCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpXZWJVc2VyTWVkaWFS
ZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgYXNzaWdu
KHJlcXVlc3QpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlc2V0KCkKK3sKKyAg
ICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKworYm9vbCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjphdWRp
bygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW8oKTsKK30KKworYm9vbCBX
ZWJVc2VyTWVkaWFSZXF1ZXN0Ojp2aWRlbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+dmlkZW8oKTsKK30KKworYm9vbCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpjYW1lcmFQcmVmZXJl
bmNlVXNlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2FtZXJhUHJlZmVyZW5j
ZVVzZXIoKTsKK30KKworYm9vbCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpjYW1lcmFQcmVmZXJlbmNl
RW52aXJvbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNhbWVyYVByZWZl
cmVuY2VFbnZpcm9ubWVudCgpOworfQorCitXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNlY3VyaXR5
T3JpZ2luKG1fcHJpdmF0ZS0+c2VjdXJpdHlPcmlnaW4oKSk7Cit9CisKK3ZvaWQgV2ViVXNlck1l
ZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJl
YW1Tb3VyY2U+JiBzb3VyY2VzKQoreworICAgIGlmIChtX3ByaXZhdGUuaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHM7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzb3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3Ry
ZWFtU291cmNlKiBjdXJyID0gc291cmNlc1tpXTsKKyAgICAgICAgcy5hcHBlbmQoY3Vycik7Cisg
ICAgfQorCisgICAgbV9wcml2YXRlLT5zdWNjZWVkKHMpOworfQorCit2b2lkIFdlYlVzZXJNZWRp
YVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQoKQoreworICAgIG1fcHJpdmF0ZS0+ZmFpbCgpOworfQor
Citib29sIFdlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yPT0oY29uc3QgV2ViVXNlck1lZGlh
UmVxdWVzdCYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpIHx8IG90aGVyLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKSA9
PSBvdGhlci5tX3ByaXZhdGUuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6
YXNzaWduKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIG90aGVyKQoreworICAgIFVzZXJNZWRp
YVJlcXVlc3QqIHAgPSBvdGhlci5tX3ByaXZhdGUuZ2V0KCk7CisgICAgaWYgKHApCisgICAgICAg
IHAtPnJlZigpOworICAgIG1fcHJpdmF0ZSA9IHA7Cit9CisKK1dlYlVzZXJNZWRpYVJlcXVlc3Qm
IFdlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yPShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0
JiBvdGhlcikKK3sKKyAgICBhc3NpZ24ob3RoZXIpOworICAgIHJldHVybiAqdGhpczsKK30KKwor
V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworV2ViVXNlck1l
ZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1lZGlhUmVxdWVzdCooKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCmluZGV4IGI4Nzk5NWRmMDUwZWJmNDBmMzJjZGU2ZmZmYThiY2JmMDVh
ZDY5ODEuLmVhM2IxNDc1NThmNTNmOWMxMTZmMTdlMmI0OTFiYTcyMTNjMmU3NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEwNSw2ICsxMDUsNyBA
QAogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGll
bnRJbXBsLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkF1dG9maWxsQ2xpZW50LmgiCkBAIC0zNjksNiArMzcw
LDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQogICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihX
ZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpjcmVhdGUoKSkKICNlbmRpZgorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX3VzZXJNZWRpYUNsaWVudChhZG9wdFB0cihu
ZXcgVXNlck1lZGlhQ2xpZW50SW1wbChjbGllbnQpKSkKKyNlbmRpZgogewogICAgIC8vIFdlYktp
dC93aW4vV2ViVmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0
aGUKICAgICAvLyBLSlMgc3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5l
ZWQgdG8gaGF2ZSB0aHJlYWRpbmcKQEAgLTM5MSw2ICszOTUsOSBAQCBXZWJWaWV3SW1wbDo6V2Vi
Vmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgIHBhZ2VDbGllbnRzLmRldmljZU9y
aWVudGF0aW9uQ2xpZW50ID0gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmdldCgpOwog
ICAgIHBhZ2VDbGllbnRzLmdlb2xvY2F0aW9uQ2xpZW50ID0gbV9nZW9sb2NhdGlvbkNsaWVudFBy
b3h5LmdldCgpOwogICAgIHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ2xpZW50ID0gQmFja0Zvcndh
cmRMaXN0Q2hyb21pdW06OmNyZWF0ZSh0aGlzKTsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
ICAgIHBhZ2VDbGllbnRzLnVzZXJNZWRpYUNsaWVudCA9IG1fdXNlck1lZGlhQ2xpZW50LmdldCgp
OworI2VuZGlmCiAKICAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBhZGNiODJm
MWI0ZDZiNDIyYzI2YjM1MzZmMzY5OTMyZTdlNWQ3MWEwLi5jYWRkYTQ5ZjFiNWE0YTdmM2Y0YmZj
OTEzNTAyMDYxYmQ0ZjhmNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk7
CiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CitjbGFzcyBVc2VyTWVkaWFDbGllbnRJbXBs
OwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkNvbXBvc2l0b3JJbXBs
OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKQEAgLTYxMyw2ICs2MTQsMTAgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQogICAgIE93blB0cjxXZWJDb3Jl
OjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOwogI2VuZGlm
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIE93blB0cjxVc2VyTWVkaWFDbGllbnRJ
bXBsPiBtX3VzZXJNZWRpYUNsaWVudDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115579</attachid>
            <date>2011-11-17 06:33:39 -0800</date>
            <delta_ts>2011-11-21 02:46:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111117153338.patch</filename>
            <type>text/plain</type>
            <size>21617</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGUyMDc0MTcxYTI3NTU5ODVlNjJjMWJjZTRkM2QxZDg0MDdkMGMxNjMuLjIzNmY2OTFmODdiNjc4
MTY4NWRjMTcyMmU5ZTM1NDFmNTJiMGNhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTEtMTEtMTcgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBl
bWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2Vi
VXNlck1lZGlhQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnQ6On5XZWJVc2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVk
aWFSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVx
dWVzdDo6fldlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVk
aWFSZXF1ZXN0Ojppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnVzZXJNZWRpYUNsaWVudCk6CisgICAgICAg
ICogc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhQ2xpZW50SW1wbDo6VXNlck1lZGlhQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAg
ICogc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlh
UmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYVJlcXVlc3Q6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVz
dDo6YXVkaW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Ojp2aWRlbyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OmNhbWVyYVByZWZlcmVuY2VV
c2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVy
ZW5jZUVudmlyb25tZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6
c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Ojpy
ZXF1ZXN0U3VjY2VlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6
cmVxdWVzdEZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Ojphc3NpZ24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvcj0pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVz
ZXJNZWRpYVJlcXVlc3Q+KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6
b3BlcmF0b3IgVXNlck1lZGlhUmVxdWVzdCopOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTEtMTEgIEFkcmllbm5lIFdhbGtlciAgPGVu
bmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBtb2NrIHNjcm9sbGJh
cnMgdG8gd2luZG93LmludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGJh
ODU0ZWFiY2Q2YWY4NzQ1YjcxYWFiOWMxNzY1MjNjMTBlOTkyNDkuLmQ4OWJkZTE4NTk2YmFjNTU0
OTRkYTRmZWVhOTcxNzQ5YzlkNTNjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAg
LTMyMSw2ICszMjEsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9hZGVyQ2xp
ZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMUmVxdWVzdC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYlVSTFJlc3BvbnNlLmgnLAorICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VXNlck1lZGlhUmVxdWVzdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZlY3Rvci5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZpZXcuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgnLApAQCAtNDQ3LDYgKzQ0OSw4IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9TdG9yYWdlSW5mb0Nocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3Jh
Z2VOYW1lc3BhY2VQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVu
dEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcCcsCkBAIC02
MjcsNiArNjMxLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxSZXNwb25zZVByaXZhdGUuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJVUkxFcnJvci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
VXNlck1lZGlhUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZXdJbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViV29ya2VyQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYThjNzg4NjU3Y2Zm
ZGRkOTg4OTI2MDRmZDVlN2M3MGU5NmUyMTg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVc2VyTWVkaWFDbGllbnRfaAorI2RlZmluZSBX
ZWJVc2VyTWVkaWFDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyTWVkaWFSZXF1ZXN0OworY2xhc3MgV2ViTWVkaWFT
dHJlYW1Tb3VyY2U7CisKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViVXNlck1lZGlhQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFn
ZURlc3Ryb3llZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25z
dCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291
cmNlPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25z
dCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlMTdl
ZmYxN2YzMmQ5YjdmOGU3N2ZiYTg5ZDU2N2NmMDdlODlmNDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTAs
MCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVc2VyTWVkaWFSZXF1ZXN0X2gK
KyNkZWZpbmUgV2ViVXNlck1lZGlhUmVxdWVzdF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIK
KyNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIK
KyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVXNl
ck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlh
U3RyZWFtU291cmNlOworY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXZWJTdHJpbmc7
CisKK2NsYXNzIFdlYlVzZXJNZWRpYVJlcXVlc3QgeworcHVibGljOgorICAgIFdlYlVzZXJNZWRp
YVJlcXVlc3QoKSB7IH0KKyAgICBXRUJLSVRfRVhQT1JUIFdlYlVzZXJNZWRpYVJlcXVlc3QoY29u
c3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOworICAgIH5XZWJVc2VyTWVkaWFSZXF1ZXN0KCkgeyBy
ZXNldCgpOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlVzZXJNZWRpYVJlcXVlc3QmIG9wZXJh
dG9yPShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5p
c051bGwoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGF1ZGlvKCkgY29uc3Q7CisgICAg
V0VCS0lUX0VYUE9SVCBib29sIHZpZGVvKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29s
IGNhbWVyYVByZWZlcmVuY2VVc2VyKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGNh
bWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2Vi
U2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNv
dXJjZT4mKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdEZhaWxlZCgpOworCisgICAg
V0VCS0lUX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYp
IGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViVXNlck1lZGlhUmVx
dWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7CisgICAgV2ViVXNlck1lZGlhUmVxdWVz
dChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+Jik7CisgICAgb3Bl
cmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+KCkgY29uc3Q7
CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCooKSBjb25zdDsKKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIHZvaWQgYXNzaWduKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3Qm
KTsKKworICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4gbV9wcml2
YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVk
aWFSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGll
bnQuaAppbmRleCA1MmJmYzIxNTVhNWZiNjdiODMyODQzMzkwMDNjNDk1OThkMDdiNzliLi44Mzk1
YzA4Y2VhMGVhODYxZWU0M2I2MGJkYjc4MWExOWZlNGE0NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNz
IFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlOwogY2xh
c3MgV2ViVVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVu
dDsKIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJXaWRnZXQ7CiBzdHJ1Y3QgV2ViQ29uc29sZU1l
c3NhZ2U7CkBAIC0zMjQsNiArMzI1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdlYlBh
Z2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwogICAgIH0KIAorICAgIC8vIE1lZGlhIFN0cmVhbXMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisgICAgdmlydHVhbCBXZWJVc2VyTWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudCgpIHsgcmV0
dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYjI5NTE0ZTljZmM5MjZiMWE0MDg4Yjc0ZWZhZjg4OGUwNDU3Yzg0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50
SW1wbC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5o
IgorCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJVc2Vy
TWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiV2ViVmlld0NsaWVudC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1VzZXJNZWRpYUNsaWVudEltcGw6OlVzZXJNZWRpYUNsaWVudEltcGwo
V2ViVmlld0NsaWVudCogY2xpZW50KQorICAgIDogbV93ZWJDbGllbnQoY2xpZW50LT51c2VyTWVk
aWFDbGllbnQoKSkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpwYWdlRGVzdHJv
eWVkKCkKK3sKKyAgICBpZiAobV93ZWJDbGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT5wYWdl
RGVzdHJveWVkKCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJN
ZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QsIGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQoreworICAgIGlmIChtX3dlYkNsaWVudCkKKyAgICAg
ICAgbV93ZWJDbGllbnQtPnJlcXVlc3RVc2VyTWVkaWEocmVxdWVzdCwgc291cmNlcyk7Cit9CisK
K3ZvaWQgVXNlck1lZGlhQ2xpZW50SW1wbDo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVk
aWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGlmIChtX3dlYkNsaWVudCkKKyAgICAgICAgbV93
ZWJDbGllbnQtPmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QocmVxdWVzdCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYmY1ZGYwMTM2ZDRkYzY4NDhmNmNhNmNlMTg5OWExYTFiZGE5M2E1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRpYUNsaWVudEltcGxfaAorI2Rl
ZmluZSBVc2VyTWVkaWFDbGllbnRJbXBsX2gKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNl
LmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVu
dC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVXNlck1lZGlhQ2xpZW50SW1wbCA6IHB1YmxpYyBX
ZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIFVzZXJNZWRpYUNsaWVudElt
cGwoV2ViVmlld0NsaWVudCopOworCisgICAgLy8gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2aXJ0dWFs
IHZvaWQgcGFnZURlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlh
KFBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4sIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOworCitwcml2YXRlOgorICAgIFVz
ZXJNZWRpYUNsaWVudEltcGwoKTsKKworICAgIFdlYlVzZXJNZWRpYUNsaWVudCogbV93ZWJDbGll
bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVzZXJNZWRpYUNs
aWVudEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVk
aWFSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDc4NzA0ZDM4YzQyOWU3MzBhNTFlYjMzNjE0MTJl
ZmQ5NDBmODlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJVc2VyTWVk
aWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRl
ICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KFVzZXJN
ZWRpYVJlcXVlc3QqIHJlcXVlc3QpCisgICAgOiBtX3ByaXZhdGUocmVxdWVzdCkKK3sKK30KKwor
V2ViVXNlck1lZGlhUmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdChjb25zdCBQYXNzUmVmUHRy
PFVzZXJNZWRpYVJlcXVlc3Q+JiByZXF1ZXN0KQorICAgIDogbV9wcml2YXRlKHJlcXVlc3QpCit7
Cit9CisKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2Vi
VXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBhc3NpZ24ocmVxdWVzdCk7Cit9CisK
K3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNl
dCgpOworfQorCitib29sIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5hdWRpbygpOworfQorCitib29sIFdlYlVzZXJNZWRpYVJlcXVl
c3Q6OnZpZGVvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT52aWRlbygpOworfQor
Citib29sIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmNhbWVyYVByZWZlcmVuY2VVc2VyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jYW1lcmFQcmVmZXJlbmNlVXNlcigpOworfQorCiti
b29sIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50
KCk7Cit9CisKK1dlYlNlY3VyaXR5T3JpZ2luIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnNlY3VyaXR5
T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViU2VjdXJpdHlPcmlnaW4obV9wcml2YXRl
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworfQorCit2b2lk
IFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdl
Yk1lZGlhU3RyZWFtU291cmNlPiYgc291cmNlcykKK3sKKyAgICBpZiAobV9wcml2YXRlLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAg
ICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IHNvdXJjZXNbaV07CisgICAgICAgIHMuYXBwZW5k
KGN1cnIpOworICAgIH0KKworICAgIG1fcHJpdmF0ZS0+c3VjY2VlZChzKTsKK30KKwordm9pZCBX
ZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKCkKK3sKKyAgICBtX3ByaXZhdGUtPmZh
aWwoKTsKK30KKworYm9vbCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvcj09KGNvbnN0IFdl
YlVzZXJNZWRpYVJlcXVlc3QmIG90aGVyKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSB8fCBv
dGhlci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ByaXZh
dGUuZ2V0KCkgPT0gb3RoZXIubV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdlYlVzZXJNZWRp
YVJlcXVlc3Q6OmFzc2lnbihjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBvdGhlcikKK3sKKyAg
ICBVc2VyTWVkaWFSZXF1ZXN0KiBwID0gb3RoZXIubV9wcml2YXRlLmdldCgpOworICAgIGlmIChw
KQorICAgICAgICBwLT5yZWYoKTsKKyAgICBtX3ByaXZhdGUgPSBwOworfQorCitXZWJVc2VyTWVk
aWFSZXF1ZXN0JiBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvcj0oY29uc3QgV2ViVXNlck1l
ZGlhUmVxdWVzdCYgb3RoZXIpCit7CisgICAgYXNzaWduKG90aGVyKTsKKyAgICByZXR1cm4gKnRo
aXM7Cit9CisKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisK
K1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFVzZXJNZWRpYVJlcXVlc3QqKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBiODc5OTVkZjA1MGViZjQwZjMyY2RlNmZm
ZmE4YmNiZjA1YWQ2OTgxLi5lYTNiMTQ3NTU4ZjUzZjljMTE2ZjE3ZTJiNDkxYmE3MjEzYzJlNzVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xMDUs
NiArMTA1LDcgQEAKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29t
bWFuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSAiVXNl
ck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYkFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJXZWJBdXRvZmlsbENsaWVudC5oIgpAQCAt
MzY5LDYgKzM3MCw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBj
bGllbnQpCiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKICAgICAsIG1fZ2VzdHVyZVJl
Y29nbml6ZXIoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6Y3JlYXRlKCkpCiAj
ZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICwgbV91c2VyTWVkaWFDbGllbnQo
YWRvcHRQdHIobmV3IFVzZXJNZWRpYUNsaWVudEltcGwoY2xpZW50KSkpCisjZW5kaWYKIHsKICAg
ICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0
aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmljIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0
aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBAIC0zOTEsNiArMzk1LDkgQEAgV2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICBwYWdlQ2xpZW50
cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eS5nZXQoKTsKICAgICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNsaWVudCA9IG1fZ2VvbG9jYXRp
b25DbGllbnRQcm94eS5nZXQoKTsKICAgICBwYWdlQ2xpZW50cy5iYWNrRm9yd2FyZENsaWVudCA9
IEJhY2tGb3J3YXJkTGlzdENocm9taXVtOjpjcmVhdGUodGhpcyk7CisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBwYWdlQ2xpZW50cy51c2VyTWVkaWFDbGllbnQgPSBtX3VzZXJNZWRpYUNs
aWVudC5nZXQoKTsKKyNlbmRpZgogCiAgICAgbV9wYWdlID0gYWRvcHRQdHIobmV3IFBhZ2UocGFn
ZUNsaWVudHMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggYWRjYjgyZjFiNGQ2YjQyMmMyNmIzNTM2ZjM2OTkzMmU3ZTVkNzFhMC4uY2FkZGE0OWYxYjVh
NGE3ZjNmNGJmYzkxMzUwMjA2MWJkNGY4ZjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIERldmljZU9yaWVudGF0aW9u
Q2xpZW50UHJveHk7CiBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBHZW9sb2NhdGlvbkNs
aWVudFByb3h5OwogY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsOworY2xhc3MgVXNlck1lZGlh
Q2xpZW50SW1wbDsKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJDb21w
b3NpdG9ySW1wbDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CkBAIC02MTMsNiArNjE0
LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKICAgICBPd25Q
dHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4gbV9nZXN0dXJlUmVjb2duaXpl
cjsKICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBPd25QdHI8VXNlck1l
ZGlhQ2xpZW50SW1wbD4gbV91c2VyTWVkaWFDbGllbnQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116057</attachid>
            <date>2011-11-21 02:45:08 -0800</date>
            <delta_ts>2011-11-21 07:24:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111121114506.patch</filename>
            <type>text/plain</type>
            <size>21302</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDU4NjFiNGQ2OTEwNWZhZTk4MzJiNmI1NTg0NTUzNGJmNDBlNDAyNGEuLmRhNzdlMWFhMzc5MTI3
MWMwOGVlMmI3Mjk3NzY2ZWJkYWJjZDlhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTEtMTEtMjEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBl
bWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2Vi
VXNlck1lZGlhQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnQ6On5XZWJVc2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVk
aWFSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVx
dWVzdDo6fldlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1
ZXN0Ojppc051bGwpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBw
dWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50Ojp1
c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OlVzZXJNZWRpYUNs
aWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpwYWdlRGVz
dHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVz
ZXJNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVz
ZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlck1lZGlhUmVxdWVzdDo6dmlkZW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpjYW1lcmFQcmVmZXJlbmNlVXNlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYVJlcXVlc3Q6OmNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjplcXVhbHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
TWVkaWFSZXF1ZXN0Ojphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1
ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTExLTIxICBKb2No
ZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBN
ZXRhIHJlZmVycmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMTIxMDg5NDY2ZjU2
OTg0ZDVkNDdkOWZjMTY3OWMxNzA2MzMzNjUyNi4uNzdhMDQ1MTJmYTk2YjYxY2QzZjQ0MWY1M2Jj
Yzc2ODgzMDhjOWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzI1LDYgKzMy
NSw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJV
c2VyTWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFS
ZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmVjdG9yLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlZpZXdDbGllbnQuaCcsCkBAIC00NTIsNiArNDU0LDggQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1N0b3JhZ2VJbmZvQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VO
YW1lc3BhY2VQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFj
ZVByb3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oJywK
KyAgICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwJywKQEAgLTYzNSw2ICs2Mzks
NyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2UuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFS
ZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJXb3JrZXJCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVzZXJNZWRpYUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMDA0NmMwYzNhYTM2OGFjYjFkZGUz
NTFlZmJkOGEyMjI3NWZlZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudF9oCisjZGVmaW5lIFdlYlVzZXJNZWRp
YUNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyTWVkaWFSZXF1
ZXN0OworY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3VyY2U7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgV2ViVmVjdG9yOworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfldlYlVzZXJNZWRpYUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lk
IGNsb3NlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdl
YlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdl
YlVzZXJNZWRpYVJlcXVlc3QmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYlVzZXJNZWRpYUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UyM2M5Njc0
M2YyNGVhYTBkYTBjNGZhYWQwMzkxYmI3NzE5NjUzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaApAQCAtMCwwICsx
LDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVzZXJNZWRpYVJlcXVlc3RfaAorI2Rl
ZmluZSBXZWJVc2VyTWVkaWFSZXF1ZXN0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2lu
Y2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVk
aWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJl
YW1Tb3VyY2U7CitjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFdlYlN0cmluZzsKKwor
Y2xhc3MgV2ViVXNlck1lZGlhUmVxdWVzdCB7CitwdWJsaWM6CisgICAgV2ViVXNlck1lZGlhUmVx
dWVzdCgpIHsgfQorICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVx
dWVzdCYgcmVxdWVzdCkgeyBhc3NpZ24ocmVxdWVzdCk7IH0KKyAgICB+V2ViVXNlck1lZGlhUmVx
dWVzdCgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViVXNlck1lZGlhUmVxdWVzdCYgb3BlcmF0b3I9
KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIG90aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWdu
KG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2
YXRlLmlzTnVsbCgpOyB9CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JikgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7CisKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYXVk
aW8oKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgdmlkZW8oKSBjb25zdDsKKyAgICBX
RUJLSVRfRVhQT1JUIGJvb2wgY2FtZXJhUHJlZmVyZW5jZVVzZXIoKSBjb25zdDsKKyAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgY2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3Q7CisgICAg
V0VCS0lUX0VYUE9SVCBXZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0eU9yaWdpbigpIGNvbnN0Owor
CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtU291cmNlPiYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXF1ZXN0
RmFpbGVkKCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJVc2VyTWVkaWFS
ZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4mKTsKKyAg
ICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4oKSBj
b25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdD4gbV9wcml2YXRlOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBhLCBjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBi
KQoreworICAgIHJldHVybiBhLmVxdWFscyhiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCA2MmM3YjRkNDlkN2Y3M2FkODhiNjll
NzhlN2JiZDNkMTRiZDlhNjk1Li5mMjA4MzIzNzI4ZTE4OGE1YTM1MjIzMzE5NzMwOGM3M2QxYzRi
OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBX
ZWJTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsK
K2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudDsKIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJXaWRn
ZXQ7CiBzdHJ1Y3QgV2ViQ29uc29sZU1lc3NhZ2U7CkBAIC0zMTksNiArMzIwLDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwogICAgIH0K
IAorICAgIC8vIE1lZGlhIFN0cmVhbXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCBXZWJVc2VyTWVkaWFDbGllbnQq
IHVzZXJNZWRpYUNsaWVudCgpIHsgcmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJW
aWV3Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9V
c2VyTWVkaWFDbGllbnRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjNjYzA5YzY4N2I1ODY3NDQ0ZGUw
NDM1MTNmOTQ5NmY2MjdlMTkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJVc2Vy
TWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VzZXJNZWRpYUNsaWVudElt
cGw6OlVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQorICAgIDogbV93
ZWJDbGllbnQoY2xpZW50LT51c2VyTWVkaWFDbGllbnQoKSkKK3sKK30KKwordm9pZCBVc2VyTWVk
aWFDbGllbnRJbXBsOjpwYWdlRGVzdHJveWVkKCkKK3sKKyAgICBpZiAobV93ZWJDbGllbnQpCisg
ICAgICAgIG1fd2ViQ2xpZW50LT5jbG9zZSgpOworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudElt
cGw6OnJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0
LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcykKK3sKKyAgICBpZiAobV93
ZWJDbGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT5yZXF1ZXN0VXNlck1lZGlhKHJlcXVlc3Qs
IHNvdXJjZXMpOworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBpZiAobV93ZWJDbGll
bnQpIHsKKyAgICAgICAgV2ViVXNlck1lZGlhUmVxdWVzdCB3ZWJSZXF1ZXN0KHJlcXVlc3QpOwor
ICAgICAgICBtX3dlYkNsaWVudC0+Y2FuY2VsVXNlck1lZGlhUmVxdWVzdCh3ZWJSZXF1ZXN0KTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJN
ZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNs
aWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmY1ZGYwMTM2ZDRkYzY4NDhmNmNhNmNlMTg5OWExYTFi
ZGE5M2E1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNl
ck1lZGlhQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJN
ZWRpYUNsaWVudEltcGxfaAorI2RlZmluZSBVc2VyTWVkaWFDbGllbnRJbXBsX2gKKworI2luY2x1
ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2Vy
TWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVXNlck1lZGlh
Q2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgor
ICAgIFVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworCisgICAgLy8gV2ViQ29y
ZTo6VXNlck1lZGlhQ2xpZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOworICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dD4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CisgICAgdmlydHVh
bCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCop
OworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYUNsaWVudEltcGwoKTsKKworICAgIFdlYlVzZXJN
ZWRpYUNsaWVudCogbV93ZWJDbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFVzZXJNZWRpYUNsaWVudEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGYwMjdlZGU2
Y2RlY2JmYTI5M2YyM2UyZjk4MjljNzk5OTNkOWFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwx
MjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJl
YW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldl
YlN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpXZWJV
c2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4mIHJlcXVl
c3QpCisgICAgOiBtX3ByaXZhdGUocmVxdWVzdCkKK3sKK30KKwordm9pZCBXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2Vi
VXNlck1lZGlhUmVxdWVzdDo6YXVkaW8oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUt
PmF1ZGlvKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6dmlkZW8oKSBjb25zdAor
eworICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlh
UmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZVVzZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPmNhbWVyYVByZWZlcmVuY2VVc2VyKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVx
dWVzdDo6Y2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5jYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKTsKK30KKworV2ViU2VjdXJp
dHlPcmlnaW4gV2ViVXNlck1lZGlhUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorewor
ICAgIEFTU0VSVChtX3ByaXZhdGUtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0
dXJuIFdlYlNlY3VyaXR5T3JpZ2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZWN1cml0eU9yaWdpbigpKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1
ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNvdXJj
ZXMpCit7CisgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIg
PSBzb3VyY2VzW2ldOworICAgICAgICBzLmFwcGVuZChjdXJyKTsKKyAgICB9CisKKyAgICBtX3By
aXZhdGUtPnN1Y2NlZWQocyk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVz
dEZhaWxlZCgpCit7CisgICAgbV9wcml2YXRlLT5mYWlsKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1l
ZGlhUmVxdWVzdDo6ZXF1YWxzKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIG90aGVyKSBjb25z
dAoreworICAgIGlmIChpc051bGwoKSB8fCBvdGhlci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCkgPT0gb3RoZXIubV9wcml2YXRlLmdl
dCgpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmFzc2lnbihjb25zdCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0JiBvdGhlcikKK3sKKyAgICBVc2VyTWVkaWFSZXF1ZXN0KiBwID0gb3RoZXIu
bV9wcml2YXRlLmdldCgpOworICAgIGlmIChwKQorICAgICAgICBwLT5yZWYoKTsKKyAgICBtX3By
aXZhdGUgPSBwOworfQorCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRy
PFVzZXJNZWRpYVJlcXVlc3Q+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCBiZjNmNDQ5ZTc0NTBiM2EyYmIwMTU3MmY4MjYwMTlmMDJiMTI0ZWFiLi5iYjA0MTM0ODdlM2E5
OGFlN2M1ODI4OTA4NjNmMzAwMzE0YzFhM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJl
SW5kaWNhdG9yLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUg
IlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRl
ICJXZWJBdXRvZmlsbENsaWVudC5oIgpAQCAtMzcwLDYgKzM3MSw5IEBAIFdlYlZpZXdJbXBsOjpX
ZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKICAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoV2ViQ29yZTo6UGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcjo6Y3JlYXRlKCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgICwgbV91c2VyTWVkaWFDbGllbnQoYWRvcHRQdHIobmV3IFVzZXJNZWRpYUNsaWVudElt
cGwoY2xpZW50KSkpCisjZW5kaWYKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRv
ZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNp
ZmljIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5n
CkBAIC0zOTIsNiArMzk2LDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGll
bnQqIGNsaWVudCkKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG1f
ZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQoKTsKICAgICBwYWdlQ2xpZW50cy5nZW9s
b2NhdGlvbkNsaWVudCA9IG1fZ2VvbG9jYXRpb25DbGllbnRQcm94eS5nZXQoKTsKICAgICBwYWdl
Q2xpZW50cy5iYWNrRm9yd2FyZENsaWVudCA9IEJhY2tGb3J3YXJkTGlzdENocm9taXVtOjpjcmVh
dGUodGhpcyk7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBwYWdlQ2xpZW50cy51c2Vy
TWVkaWFDbGllbnQgPSBtX3VzZXJNZWRpYUNsaWVudC5nZXQoKTsKKyNlbmRpZgogCiAgICAgbV9w
YWdlID0gYWRvcHRQdHIobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNWNiMGE5YzM1MDA0YWVlMGM3NTE4ZGQyZWM5
MWMzYzc1ZGNkYjY5Ni4uNDgyYTZhNjhmMmU5ZDcyZGY0MmJjMTk2NjRjMDJiYmViODM2YzNjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC04MSw2ICs4MSw3
IEBAIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBEcmFnU2Nyb2xs
VGltZXI7CiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgU3BlZWNoSW5wdXRD
bGllbnRJbXBsOworY2xhc3MgVXNlck1lZGlhQ2xpZW50SW1wbDsKIGNsYXNzIFdlYkFjY2Vzc2li
aWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJDb21wb3NpdG9ySW1wbDsKIGNsYXNzIFdlYkRldlRvb2xz
QWdlbnRDbGllbnQ7CkBAIC02MjUsNiArNjI2LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdF
U1RVUkVfUkVDT0dOSVpFUikKICAgICBPd25QdHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBPd25QdHI8VXNlck1lZGlhQ2xpZW50SW1wbD4gbV91c2VyTWVkaWFDbGll
bnQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116081</attachid>
            <date>2011-11-21 07:24:33 -0800</date>
            <delta_ts>2011-11-21 11:29:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111121162431.patch</filename>
            <type>text/plain</type>
            <size>24099</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDU4NjFiNGQ2OTEwNWZhZTk4MzJiNmI1NTg0NTUzNGJmNDBlNDAyNGEuLjVkYTRmYjY4MTdhZjVk
NjMyOGVmZDViY2JiYzVlYTY2NzFkZDcxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTEtMTEtMjEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBl
bWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2Vi
VXNlck1lZGlhQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnQ6On5XZWJVc2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVk
aWFDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDb250
cm9sbGVyOjp+V2ViVXNlck1lZGlhQ29udHJvbGxlcik6CisgICAgICAgICogcHVibGljL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJl
cXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVk
aWFSZXF1ZXN0Ojp+V2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRp
YVJlcXVlc3Q6OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGll
bnQ6OnVzZXJNZWRpYUNsaWVudCk6CisgICAgICAgICogc3JjL1VzZXJNZWRpYUNsaWVudEltcGwu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6VXNlck1l
ZGlhQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OnBh
Z2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpyZXF1
ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6Y2Fu
Y2VsVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudElt
cGw6OnJlcXVlc3RTdWNjZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJ
bXBsOjpyZXF1ZXN0RmFpbGVkKToKKyAgICAgICAgKiBzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5o
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVzZXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjphdWRpbyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1l
ZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZVVzZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
c2VyTWVkaWFSZXF1ZXN0OjpjYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OmVxdWFscyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJNZWRpYVJlcXVlc3Q6OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRp
YVJlcXVlc3Q6Om9wZXJhdG9yIFVzZXJNZWRpYVJlcXVlc3QqKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwp
OgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTExLTIxICBKb2NoZW4gRWlz
aW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBNZXRhIHJl
ZmVycmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMTIxMDg5NDY2ZjU2OTg0ZDVk
NDdkOWZjMTY3OWMxNzA2MzMzNjUyNi4uNzdhMDQ1MTJmYTk2YjYxY2QzZjQ0MWY1M2JjYzc2ODgz
MDhjOWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzI1LDYgKzMyNSw4IEBA
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViVVJMUmVzcG9uc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVk
aWFDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmVjdG9yLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZpZXdD
bGllbnQuaCcsCkBAIC00NTIsNiArNDU0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1N0b3Jh
Z2VJbmZvQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VOYW1lc3Bh
Y2VQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5
LmgnLAorICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oJywKKyAgICAg
ICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwJywKQEAgLTYzNSw2ICs2MzksNyBAQAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2UuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3Jr
ZXJCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVz
ZXJNZWRpYUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZWQyN2IwNDNiMWQzZTM0N2EzOTk2MDlmYjEy
MzkzN2Q4NDgwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudF9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYUNsaWVu
dF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsK
K2NsYXNzIFdlYlVzZXJNZWRpYUNvbnRyb2xsZXI7CitjbGFzcyBXZWJVc2VyTWVkaWFSZXF1ZXN0
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKKworY2xhc3MgV2ViVXNl
ck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJVc2VyTWVkaWFDbGllbnQo
KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1c2VDb250cm9sbGVyKFdlYlVzZXJNZWRpYUNvbnRy
b2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYsIGNvbnN0IFdlYlZl
Y3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNl
bFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNv
bnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzZkN2YyNTdhMDA1NTU2ZTlkOGQ4MDk0MTM1ODA0Njhh
OWFmNWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVXNlck1lZGlhQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViVXNlck1lZGlhQ29udHJvbGxlcl9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYUNv
bnRyb2xsZXJfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlck1lZGlhUmVx
dWVzdDsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIFdlYlZlY3RvcjsKKworY2xhc3MgV2ViVXNlck1lZGlhQ29udHJvbGxlciB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+V2ViVXNlck1lZGlhQ29udHJvbGxlcigpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYsIGNv
bnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RGYWlsZWQoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNlck1lZGlhQ29udHJvbGxl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVk
aWFSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFS
ZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2MxZjNhZmFjY2RiMDJiNDVjYzY0NjcxZDk1NWEyMWI1ZDlm
ZmExZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVzZXJNZWRpYVJlcXVlc3QuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlVzZXJNZWRpYVJlcXVlc3RfaAorI2RlZmluZSBXZWJVc2VyTWVkaWFSZXF1ZXN0X2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisj
aW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3VyY2U7CitjbGFzcyBXZWJTZWN1cml0
eU9yaWdpbjsKK2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViVXNlck1lZGlhUmVxdWVzdCB7
CitwdWJsaWM6CisgICAgV2ViVXNlck1lZGlhUmVxdWVzdCgpIHsgfQorICAgIFdlYlVzZXJNZWRp
YVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkgeyBhc3NpZ24ocmVx
dWVzdCk7IH0KKyAgICB+V2ViVXNlck1lZGlhUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQorCisgICAg
V2ViVXNlck1lZGlhUmVxdWVzdCYgb3BlcmF0b3I9KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3Qm
IG90aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisgICAgV0VCS0lU
X0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikgY29uc3Q7Cisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7
CisKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYXVkaW8oKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQ
T1JUIGJvb2wgdmlkZW8oKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgY2FtZXJhUHJl
ZmVyZW5jZVVzZXIoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgY2FtZXJhUHJlZmVy
ZW5jZUVudmlyb25tZW50KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJTZWN1cml0eU9y
aWdpbiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
CisgICAgV2ViVXNlck1lZGlhUmVxdWVzdChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3Q+Jik7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCoo
KSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdD4gbV9wcml2YXRlOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBhLCBjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0
JiBiKQoreworICAgIHJldHVybiBhLmVxdWFscyhiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCA2MmM3YjRkNDlkN2Y3M2FkODhi
NjllNzhlN2JiZDNkMTRiZDlhNjk1Li5mMjA4MzIzNzI4ZTE4OGE1YTM1MjIzMzE5NzMwOGM3M2Qx
YzRiOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CiBjbGFz
cyBXZWJTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViVVJMUmVxdWVz
dDsKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudDsKIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJX
aWRnZXQ7CiBzdHJ1Y3QgV2ViQ29uc29sZU1lc3NhZ2U7CkBAIC0zMTksNiArMzIwLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwogICAg
IH0KIAorICAgIC8vIE1lZGlhIFN0cmVhbXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCBXZWJVc2VyTWVkaWFDbGll
bnQqIHVzZXJNZWRpYUNsaWVudCgpIHsgcmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5X
ZWJWaWV3Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDY1YmFhMDI3MjdiMDE3MzRi
MmIzYzAwYjZiYTg3ODVmNjg4YTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1T
b3VyY2UuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJV
c2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VzZXJNZWRpYUNsaWVu
dEltcGw6OlVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQorICAgIDog
bV93ZWJDbGllbnQoY2xpZW50LT51c2VyTWVkaWFDbGllbnQoKSkKK3sKKyAgICBpZiAobV93ZWJD
bGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT51c2VDb250cm9sbGVyKHRoaXMpOworfQorCit2
b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OnBhZ2VEZXN0cm95ZWQoKQoreworICAgIGlmIChtX3dl
YkNsaWVudCkKKyAgICAgICAgbV93ZWJDbGllbnQtPmNsb3NlKCk7Cit9CisKK3ZvaWQgVXNlck1l
ZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVl
c3Q+IHJlcXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQorewor
ICAgIGlmIChtX3dlYkNsaWVudCkKKyAgICAgICAgbV93ZWJDbGllbnQtPnJlcXVlc3RVc2VyTWVk
aWEocmVxdWVzdCwgc291cmNlcyk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50SW1wbDo6Y2Fu
Y2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGlm
IChtX3dlYkNsaWVudCkKKyAgICAgICAgbV93ZWJDbGllbnQtPmNhbmNlbFVzZXJNZWRpYVJlcXVl
c3QoV2ViVXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0KSk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xp
ZW50SW1wbDo6cmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiB3ZWJS
ZXF1ZXN0LCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBzb3VyY2VzKQor
eworICAgIFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJSZXF1ZXN0OworICAgIGlmIChy
ZXF1ZXN0KSB7CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHM7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
TWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOworICAgICAgICAgICAgcy5hcHBl
bmQoY3Vycik7CisgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC0+c3VjY2VlZChzKTsKKyAgICB9
Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdEZhaWxlZChjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JiB3ZWJSZXF1ZXN0KQoreworICAgIFVzZXJNZWRpYVJlcXVlc3QqIHJl
cXVlc3QgPSB3ZWJSZXF1ZXN0OworICAgIGlmIChyZXF1ZXN0KQorICAgICAgICByZXF1ZXN0LT5m
YWlsKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJN
ZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNs
aWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2RhMDBhZmRiMmFkYjg5MzU0ZmEwMGMyOTQ4NTZhNzI2
NjQ5YjE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNl
ck1lZGlhQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJN
ZWRpYUNsaWVudEltcGxfaAorI2RlZmluZSBVc2VyTWVkaWFDbGllbnRJbXBsX2gKKworI2luY2x1
ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViVXNlck1lZGlhQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQ7CitjbGFz
cyBXZWJWaWV3Q2xpZW50OworCitjbGFzcyBVc2VyTWVkaWFDbGllbnRJbXBsIDogcHVibGljIFdl
YkNvcmU6OlVzZXJNZWRpYUNsaWVudCwgcHVibGljIFdlYlVzZXJNZWRpYUNvbnRyb2xsZXIgewor
cHVibGljOgorICAgIFVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworCisgICAg
Ly8gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOworICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdD4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7Cisg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlh
UmVxdWVzdCopOworCisgICAgLy8gV2ViS2l0OjpVc2VyTWVkaWFDb250cm9sbGVyIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmFp
bGVkKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKTsKKworcHJpdmF0ZToKKyAgICBVc2VyTWVk
aWFDbGllbnRJbXBsKCk7CisKKyAgICBXZWJVc2VyTWVkaWFDbGllbnQqIG1fd2ViQ2xpZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVc2VyTWVkaWFDbGllbnRJ
bXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRp
YVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVx
dWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxOWU1MzNkZjhiODU1MzI0YjU4OTE3Njg4OGQ4MWZiYzMz
M2QwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
V2ViVXNlck1lZGlhUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUmVx
dWVzdC5oIgorI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiV2Vi
U2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViVXNlck1lZGlhUmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdChjb25zdCBQYXNz
UmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+JiByZXF1ZXN0KQorICAgIDogbV9wcml2YXRlKHJlcXVl
c3QpCit7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVzZXQoKQoreworICAgIG1f
cHJpdmF0ZS5yZXNldCgpOworfQorCitib29sIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hdWRpbygpOworfQorCitib29sIFdlYlVz
ZXJNZWRpYVJlcXVlc3Q6OnZpZGVvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT52
aWRlbygpOworfQorCitib29sIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmNhbWVyYVByZWZlcmVuY2VV
c2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jYW1lcmFQcmVmZXJlbmNlVXNl
cigpOworfQorCitib29sIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmNhbWVyYVByZWZlcmVuY2VFbnZp
cm9ubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2FtZXJhUHJlZmVyZW5j
ZUVudmlyb25tZW50KCk7Cit9CisKK1dlYlNlY3VyaXR5T3JpZ2luIFdlYlVzZXJNZWRpYVJlcXVl
c3Q6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHJldHVybiBXZWJTZWN1cml0eU9yaWdpbihtX3By
aXZhdGUtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Cit9CisK
K2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6ZXF1YWxzKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVl
c3QmIG90aGVyKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSB8fCBvdGhlci5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCkgPT0gb3Ro
ZXIubV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmFzc2ln
bihjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBvdGhlcikKK3sKKyAgICBVc2VyTWVkaWFSZXF1
ZXN0KiBwID0gb3RoZXIubV9wcml2YXRlLmdldCgpOworICAgIGlmIChwKQorICAgICAgICBwLT5y
ZWYoKTsKKyAgICBtX3ByaXZhdGUgPSBwOworfQorCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVy
YXRvciBVc2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5n
ZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggYmYzZjQ0OWU3NDUwYjNhMmJiMDE1NzJmODI2MDE5ZjAyYjEyNGVhYi4uYmIwNDEzNDg3
ZTNhOThhZTdjNTgyODkwODYzZjMwMDMxNGMxYTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAiVHJh
Y2VFdmVudC5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2Vz
dHVyZUluZGljYXRvci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEltcGwuaCIKICNpbmNs
dWRlICJWZWN0b3IuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5j
bHVkZSAiV2ViQXV0b2ZpbGxDbGllbnQuaCIKQEAgLTM3MCw2ICszNzEsOSBAQCBXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2lmIEVOQUJMRShHRVNUVVJF
X1JFQ09HTklaRVIpCiAgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFdlYkNvcmU6OlBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICAsIG1fdXNlck1lZGlhQ2xpZW50KGFkb3B0UHRyKG5ldyBVc2VyTWVkaWFDbGll
bnRJbXBsKGNsaWVudCkpKQorI2VuZGlmCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBz
cGVjaWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVh
ZGluZwpAQCAtMzkyLDYgKzM5Niw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3
Q2xpZW50KiBjbGllbnQpCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQg
PSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAgICAgcGFnZUNsaWVudHMu
Z2VvbG9jYXRpb25DbGllbnQgPSBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAgICAg
cGFnZUNsaWVudHMuYmFja0ZvcndhcmRDbGllbnQgPSBCYWNrRm9yd2FyZExpc3RDaHJvbWl1bTo6
Y3JlYXRlKHRoaXMpOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgcGFnZUNsaWVudHMu
dXNlck1lZGlhQ2xpZW50ID0gbV91c2VyTWVkaWFDbGllbnQuZ2V0KCk7CisjZW5kaWYKIAogICAg
IG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDVjYjBhOWMzNTAwNGFlZTBjNzUxOGRk
MmVjOTFjM2M3NWRjZGI2OTYuLjQ4MmE2YTY4ZjJlOWQ3MmRmNDJiYzE5NjY0YzAyYmJlYjgzNmMz
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtODEsNiAr
ODEsNyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Nj
cm9sbFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsKIGNsYXNzIFNwZWVjaElu
cHV0Q2xpZW50SW1wbDsKK2NsYXNzIFVzZXJNZWRpYUNsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViQ29tcG9zaXRvckltcGw7CiBjbGFzcyBXZWJEZXZU
b29sc0FnZW50Q2xpZW50OwpAQCAtNjI1LDYgKzYyNiwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShHRVNUVVJFX1JFQ09HTklaRVIpCiAgICAgT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CiAjZW5kaWYKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgT3duUHRyPFVzZXJNZWRpYUNsaWVudEltcGw+IG1fdXNlck1lZGlh
Q2xpZW50OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116110</attachid>
            <date>2011-11-21 11:29:50 -0800</date>
            <delta_ts>2011-11-21 13:00:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111121202948.patch</filename>
            <type>text/plain</type>
            <size>21159</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDU4NjFiNGQ2OTEwNWZhZTk4MzJiNmI1NTg0NTUzNGJmNDBlNDAyNGEuLmRhNzdlMWFhMzc5MTI3
MWMwOGVlMmI3Mjk3NzY2ZWJkYWJjZDlhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTEtMTEtMjEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBl
bWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2Vi
VXNlck1lZGlhQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnQ6On5XZWJVc2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVk
aWFSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVx
dWVzdDo6fldlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1
ZXN0Ojppc051bGwpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBw
dWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50Ojp1
c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OlVzZXJNZWRpYUNs
aWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpwYWdlRGVz
dHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVz
ZXJNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVz
ZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlck1lZGlhUmVxdWVzdDo6dmlkZW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpjYW1lcmFQcmVmZXJlbmNlVXNlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYVJlcXVlc3Q6OmNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjplcXVhbHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
TWVkaWFSZXF1ZXN0Ojphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1
ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTExLTIxICBKb2No
ZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBN
ZXRhIHJlZmVycmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMTIxMDg5NDY2ZjU2
OTg0ZDVkNDdkOWZjMTY3OWMxNzA2MzMzNjUyNi4uNzdhMDQ1MTJmYTk2YjYxY2QzZjQ0MWY1M2Jj
Yzc2ODgzMDhjOWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzI1LDYgKzMy
NSw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJV
c2VyTWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFS
ZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmVjdG9yLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlZpZXdDbGllbnQuaCcsCkBAIC00NTIsNiArNDU0LDggQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1N0b3JhZ2VJbmZvQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VO
YW1lc3BhY2VQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFj
ZVByb3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oJywK
KyAgICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwJywKQEAgLTYzNSw2ICs2Mzks
NyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2UuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFS
ZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJXb3JrZXJCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVzZXJNZWRpYUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMDhhYTMzNTk2NGYzZTg4NThjMTky
YThhNmVmNWZmMDM2OGU2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudF9oCisjZGVmaW5lIFdlYlVzZXJNZWRp
YUNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbVNv
dXJjZTsKK2NsYXNzIFdlYlVzZXJNZWRpYVJlcXVlc3Q7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgV2ViVmVjdG9yOworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfldlYlVzZXJNZWRpYUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYsIGNvbnN0IFdlYlZl
Y3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNl
bFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVl
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZGU1YzU0N2Y1MDhhMGZmMzFmZTFiNTFhM2Y1OTc0NmE5YWIzNjM2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViVXNlck1lZGlhUmVxdWVzdF9oCisjZGVmaW5lIFdlYlVzZXJNZWRpYVJlcXVlc3RfaAorCisj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3VyY2U7CitjbGFzcyBXZWJTZWN1cml0
eU9yaWdpbjsKK2NsYXNzIFdlYlN0cmluZzsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBX
ZWJWZWN0b3I7CisKK2NsYXNzIFdlYlVzZXJNZWRpYVJlcXVlc3QgeworcHVibGljOgorICAgIFdl
YlVzZXJNZWRpYVJlcXVlc3QoKSB7IH0KKyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdl
YlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpIHsgYXNzaWduKHJlcXVlc3QpOyB9CisgICAgfldl
YlVzZXJNZWRpYVJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlVzZXJNZWRpYVJlcXVl
c3QmIG9wZXJhdG9yPShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVh
bHMoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBhc3NpZ24oY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOworCisgICAgV0VCS0lUX0VY
UE9SVCBib29sIGF1ZGlvKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIHZpZGVvKCkg
Y29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGNhbWVyYVByZWZlcmVuY2VVc2VyKCkgY29u
c3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCgp
IGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlPcmln
aW4oKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNv
bnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVxdWVzdEZhaWxlZCgpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
V2ViVXNlck1lZGlhUmVxdWVzdChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q+Jik7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCooKSBjb25z
dDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdD4gbV9wcml2YXRlOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBhLCBjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBiKQor
eworICAgIHJldHVybiBhLmVxdWFscyhiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCA2MmM3YjRkNDlkN2Y3M2FkODhiNjllNzhl
N2JiZDNkMTRiZDlhNjk1Li5mMjA4MzIzNzI4ZTE4OGE1YTM1MjIzMzE5NzMwOGM3M2QxYzRiOTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBA
IC02Nyw2ICs2Nyw3IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBXZWJT
dG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2Ns
YXNzIFdlYlVzZXJNZWRpYUNsaWVudDsKIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJXaWRnZXQ7
CiBzdHJ1Y3QgV2ViQ29uc29sZU1lc3NhZ2U7CkBAIC0zMTksNiArMzIwLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwogICAgIH0KIAor
ICAgIC8vIE1lZGlhIFN0cmVhbXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCBXZWJVc2VyTWVkaWFDbGllbnQqIHVz
ZXJNZWRpYUNsaWVudCgpIHsgcmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3
Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
VXNlck1lZGlhQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2Vy
TWVkaWFDbGllbnRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmJhNGY0YTMyMzAyYjJhN2RjOTg5NGQ1
NTE0NTg1MmI4NGE1NmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
VXNlck1lZGlhQ2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1Tb3VyY2Uu
aCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVk
aWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VzZXJNZWRpYUNsaWVudEltcGw6
OlVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQorICAgIDogbV93ZWJD
bGllbnQoY2xpZW50LT51c2VyTWVkaWFDbGllbnQoKSkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFD
bGllbnRJbXBsOjpwYWdlRGVzdHJveWVkKCkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRJ
bXBsOjpyZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVz
dCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCit7CisgICAgaWYgKG1f
d2ViQ2xpZW50KQorICAgICAgICBtX3dlYkNsaWVudC0+cmVxdWVzdFVzZXJNZWRpYShyZXF1ZXN0
LCBzb3VyY2VzKTsKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpjYW5jZWxVc2VyTWVk
aWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgaWYgKG1fd2ViQ2xp
ZW50KQorICAgICAgICBtX3dlYkNsaWVudC0+Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChXZWJVc2Vy
TWVkaWFSZXF1ZXN0KHJlcXVlc3QpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMDkyMDk5YTc0NmU3YjBl
NjA0ODIyNjUwZTc1NDgwYmNjYWU0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgKQEAgLTAsMCArMSw1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgVXNlck1lZGlhQ2xpZW50SW1wbF9oCisjZGVmaW5lIFVzZXJNZWRpYUNsaWVu
dEltcGxfaAorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50OworY2xhc3MgV2ViVmlld0NsaWVudDsKKwor
Y2xhc3MgVXNlck1lZGlhQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGll
bnQgeworcHVibGljOgorICAgIFVzZXJNZWRpYUNsaWVudEltcGwoV2ViVmlld0NsaWVudCopOwor
CisgICAgLy8gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgp
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8V2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdD4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9y
Jik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdCopOworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYUNsaWVudEltcGwoKTsK
KworICAgIFdlYlVzZXJNZWRpYUNsaWVudCogbV93ZWJDbGllbnQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVzZXJNZWRpYUNsaWVudEltcGxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMjc2MDYxNzk5NGZiMTgyZmQ3ODEzYzUyM2Q5NzY5NWIxM2NjZGViCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5j
cHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1
ZXN0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KGNv
bnN0IFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4mIHJlcXVlc3QpCisgICAgOiBtX3ByaXZh
dGUocmVxdWVzdCkKK3sKK30KKwordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCgpCit7
CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6
YXVkaW8oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7Cit9CisKK2Jv
b2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6dmlkZW8oKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPnZpZGVvKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJl
ZmVyZW5jZVVzZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNhbWVyYVByZWZl
cmVuY2VVc2VyKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVy
ZW5jZUVudmlyb25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jYW1lcmFQ
cmVmZXJlbmNlRW52aXJvbm1lbnQoKTsKK30KKworV2ViU2VjdXJpdHlPcmlnaW4gV2ViVXNlck1l
ZGlhUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX3ByaXZh
dGUtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3Jp
Z2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigp
KTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNvdXJjZXMpCit7CisgICAgaWYgKG1f
cHJpdmF0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3IgczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOworICAg
ICAgICBzLmFwcGVuZChjdXJyKTsKKyAgICB9CisKKyAgICBtX3ByaXZhdGUtPnN1Y2NlZWQocyk7
Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdEZhaWxlZCgpCit7CisgICAg
bV9wcml2YXRlLT5mYWlsKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6ZXF1YWxz
KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIG90aGVyKSBjb25zdAoreworICAgIGlmIChpc051
bGwoKSB8fCBvdGhlci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBtX3ByaXZhdGUuZ2V0KCkgPT0gb3RoZXIubV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdl
YlVzZXJNZWRpYVJlcXVlc3Q6OmFzc2lnbihjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBvdGhl
cikKK3sKKyAgICBVc2VyTWVkaWFSZXF1ZXN0KiBwID0gb3RoZXIubV9wcml2YXRlLmdldCgpOwor
ICAgIGlmIChwKQorICAgICAgICBwLT5yZWYoKTsKKyAgICBtX3ByaXZhdGUgPSBwOworfQorCitX
ZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBVc2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYmYzZjQ0OWU3NDUwYjNhMmJiMDE1NzJmODI2
MDE5ZjAyYjEyNGVhYi4uYmIwNDEzNDg3ZTNhOThhZTdjNTgyODkwODYzZjMwMDMxNGMxYTNiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTA2LDYg
KzEwNiw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1h
bmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgorI2luY2x1ZGUgIlVzZXJN
ZWRpYUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJWZWN0b3IuaCIKICNpbmNsdWRlICJXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQXV0b2ZpbGxDbGllbnQuaCIKQEAgLTM3
MCw2ICszNzEsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xp
ZW50KQogI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCiAgICAgLCBtX2dlc3R1cmVSZWNv
Z25pemVyKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQogI2Vu
ZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdXNlck1lZGlhQ2xpZW50KGFk
b3B0UHRyKG5ldyBVc2VyTWVkaWFDbGllbnRJbXBsKGNsaWVudCkpKQorI2VuZGlmCiB7CiAgICAg
Ly8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhl
eSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVjaWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhv
ZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGluZwpAQCAtMzkyLDYgKzM5Niw5IEBAIFdlYlZpZXdJ
bXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgcGFnZUNsaWVudHMu
ZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHku
Z2V0KCk7CiAgICAgcGFnZUNsaWVudHMuZ2VvbG9jYXRpb25DbGllbnQgPSBtX2dlb2xvY2F0aW9u
Q2xpZW50UHJveHkuZ2V0KCk7CiAgICAgcGFnZUNsaWVudHMuYmFja0ZvcndhcmRDbGllbnQgPSBC
YWNrRm9yd2FyZExpc3RDaHJvbWl1bTo6Y3JlYXRlKHRoaXMpOworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisgICAgcGFnZUNsaWVudHMudXNlck1lZGlhQ2xpZW50ID0gbV91c2VyTWVkaWFDbGll
bnQuZ2V0KCk7CisjZW5kaWYKIAogICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VD
bGllbnRzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4
IDVjYjBhOWMzNTAwNGFlZTBjNzUxOGRkMmVjOTFjM2M3NWRjZGI2OTYuLjQ4MmE2YTY4ZjJlOWQ3
MmRmNDJiYzE5NjY0YzAyYmJlYjgzNmMzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaApAQCAtODEsNiArODEsNyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGll
bnRQcm94eTsKIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbDsKK2NsYXNzIFVzZXJNZWRpYUNs
aWVudEltcGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViQ29tcG9z
aXRvckltcGw7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwpAQCAtNjI1LDYgKzYyNiwx
MCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCiAgICAgT3duUHRy
PFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7
CiAjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgT3duUHRyPFVzZXJNZWRp
YUNsaWVudEltcGw+IG1fdXNlck1lZGlhQ2xpZW50OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116121</attachid>
            <date>2011-11-21 13:00:27 -0800</date>
            <delta_ts>2011-11-22 04:32:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111121220026.patch</filename>
            <type>text/plain</type>
            <size>22230</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDU4NjFiNGQ2OTEwNWZhZTk4MzJiNmI1NTg0NTUzNGJmNDBlNDAyNGEuLmRhNzdlMWFhMzc5MTI3
MWMwOGVlMmI3Mjk3NzY2ZWJkYWJjZDlhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTEtMTEtMjEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBl
bWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2Vi
VXNlck1lZGlhQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnQ6On5XZWJVc2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVk
aWFSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVx
dWVzdDo6fldlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1
ZXN0Ojppc051bGwpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBw
dWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50Ojp1
c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OlVzZXJNZWRpYUNs
aWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpwYWdlRGVz
dHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVz
ZXJNZWRpYSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVz
ZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OldlYlVzZXJNZWRpYVJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlck1lZGlhUmVxdWVzdDo6dmlkZW8pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpjYW1lcmFQcmVmZXJlbmNlVXNlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYVJlcXVlc3Q6OmNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjplcXVhbHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
TWVkaWFSZXF1ZXN0Ojphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1
ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTExLTIxICBKb2No
ZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBN
ZXRhIHJlZmVycmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMTIxMDg5NDY2ZjU2
OTg0ZDVkNDdkOWZjMTY3OWMxNzA2MzMzNjUyNi4uNzdhMDQ1MTJmYTk2YjYxY2QzZjQ0MWY1M2Jj
Yzc2ODgzMDhjOWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzI1LDYgKzMy
NSw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJV
c2VyTWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFS
ZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmVjdG9yLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlZpZXdDbGllbnQuaCcsCkBAIC00NTIsNiArNDU0LDggQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1N0b3JhZ2VJbmZvQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VO
YW1lc3BhY2VQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFj
ZVByb3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oJywK
KyAgICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwJywKQEAgLTYzNSw2ICs2Mzks
NyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2UuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFS
ZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJXb3JrZXJCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVzZXJNZWRpYUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0Yjc1ZTk0MDk3Y2IzMDZhMDY0Yjdl
ODhhMmRiYTM1MmY5Y2UzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJVc2VyTWVkaWFDbGllbnRfaAorI2RlZmluZSBXZWJVc2VyTWVkaWFDbGllbnRfaAorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3VyY2U7CitjbGFzcyBXZWJV
c2VyTWVkaWFSZXF1ZXN0OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsK
KworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJV
c2VyTWVkaWFDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlh
KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJl
YW1Tb3VyY2U+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0
KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYlVzZXJNZWRpYUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjA0Nzk4NDE0ODQ0OGNlZDc4Mzg1M2M4MDRkOWZlYmM2NTQ2N2JkNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaApA
QCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVc2VyTWVkaWFSZXF1ZXN0X2gKKyNkZWZpbmUgV2Vi
VXNlck1lZGlhUmVxdWVzdF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJX
ZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJl
cXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbVNv
dXJjZTsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2ViU3RyaW5nOwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKKworY2xhc3MgV2ViVXNlck1lZGlhUmVx
dWVzdCB7CitwdWJsaWM6CisgICAgV2ViVXNlck1lZGlhUmVxdWVzdCgpIHsgfQorICAgIFdlYlVz
ZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkgeyBhc3Np
Z24ocmVxdWVzdCk7IH0KKyAgICB+V2ViVXNlck1lZGlhUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQor
CisgICAgV2ViVXNlck1lZGlhUmVxdWVzdCYgb3BlcmF0b3I9KGNvbnN0IFdlYlVzZXJNZWRpYVJl
cXVlc3QmIG90aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisgICAg
V0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikgY29u
c3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJVc2VyTWVkaWFSZXF1
ZXN0Jik7CisKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYXVkaW8oKSBjb25zdDsKKyAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgdmlkZW8oKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgY2Ft
ZXJhUHJlZmVyZW5jZVVzZXIoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgY2FtZXJh
UHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJTZWN1
cml0eU9yaWdpbiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNl
PiYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXF1ZXN0RmFpbGVkKCk7CisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQ
dHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4mKTsKKyAgICBvcGVyYXRvciBXZWJDb3JlOjpV
c2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJp
dmF0ZVB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiBtX3ByaXZhdGU7Cit9OworCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIGEsIGNvbnN0IFdl
YlVzZXJNZWRpYVJlcXVlc3QmIGIpCit7CisgICAgcmV0dXJuIGEuZXF1YWxzKGIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlVzZXJNZWRpYVJlcXVlc3RfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDYy
YzdiNGQ0OWQ3ZjczYWQ4OGI2OWU3OGU3YmJkM2QxNGJkOWE2OTUuLmYyMDgzMjM3MjhlMTg4YTVh
MzUyMjMzMTk3MzA4YzczZDFjNGI5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgV2ViU3BlZWNoSW5w
dXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJVUkw7CiBj
bGFzcyBXZWJVUkxSZXF1ZXN0OworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50OwogY2xhc3MgV2Vi
VmlldzsKIGNsYXNzIFdlYldpZGdldDsKIHN0cnVjdCBXZWJDb25zb2xlTWVzc2FnZTsKQEAgLTMx
OSw2ICszMjAsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gV2ViUGFnZVZpc2liaWxpdHlT
dGF0ZVZpc2libGU7CiAgICAgfQogCisgICAgLy8gTWVkaWEgU3RyZWFtcyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2aXJ0dWFs
IFdlYlVzZXJNZWRpYUNsaWVudCogdXNlck1lZGlhQ2xpZW50KCkgeyByZXR1cm4gMDsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgfldlYlZpZXdDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUz
MDAyNmExZjdhM2EwMTliNTNkNjYzYzE1NmNmMzYwODcyN2JkYWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcApAQCAt
MCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJXZWJNZWRp
YVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgorI2luY2x1
ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworVXNlck1l
ZGlhQ2xpZW50SW1wbDo6VXNlck1lZGlhQ2xpZW50SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQp
CisgICAgOiBtX3dlYkNsaWVudChjbGllbnQtPnVzZXJNZWRpYUNsaWVudCgpKQoreworfQorCit2
b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OnBhZ2VEZXN0cm95ZWQoKQoreworfQorCit2b2lkIFVz
ZXJNZWRpYUNsaWVudEltcGw6OnJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFS
ZXF1ZXN0PiByZXF1ZXN0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcykK
K3sKKyAgICBpZiAobV93ZWJDbGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT5yZXF1ZXN0VXNl
ck1lZGlhKHJlcXVlc3QsIHNvdXJjZXMpOworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6
OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBpZiAobV93ZWJDbGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT5jYW5jZWxVc2VyTWVkaWFS
ZXF1ZXN0KFdlYlVzZXJNZWRpYVJlcXVlc3QocmVxdWVzdCkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNm
OGVmODBiZmRhMDg0NTUwY2ZhOTk0YjgxY2M4MThkMjgzOGYxNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaApAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBVc2VyTWVkaWFDbGllbnRJbXBsX2gKKyNkZWZpbmUgVXNlck1lZGlh
Q2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUg
IlVzZXJNZWRpYUNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQ7CitjbGFzcyBXZWJWaWV3Q2xpZW50
OworCitjbGFzcyBVc2VyTWVkaWFDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRp
YUNsaWVudCB7CitwdWJsaWM6CisgICAgVXNlck1lZGlhQ2xpZW50SW1wbChXZWJWaWV3Q2xpZW50
Kik7CisKKyAgICAvLyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJv
eWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChXZWJDb3Jl
OjpVc2VyTWVkaWFSZXF1ZXN0Kik7CisKK3ByaXZhdGU6CisgICAgVXNlck1lZGlhQ2xpZW50SW1w
bCgpOworCisgICAgV2ViVXNlck1lZGlhQ2xpZW50KiBtX3dlYkNsaWVudDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVXNlck1lZGlhQ2xpZW50SW1wbF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ3ZDRlNWQxZWYxM2QwNGQ0NzM1YTJmZDUxYjQ4ZTcxMmE1MDg2NzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUg
IldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4mIHJlcXVlc3QpCisgICAgOiBtX3ByaXZhdGUocmVxdWVzdCkK
K3sKK30KKwordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCgpCit7CisgICAgbV9wcml2
YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6YXVkaW8oKSBjb25z
dAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1l
ZGlhUmVxdWVzdDo6dmlkZW8oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVv
KCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZVVzZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNhbWVyYVByZWZlcmVuY2VVc2VyKCk7
Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZUVudmlyb25t
ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jYW1lcmFQcmVmZXJlbmNlRW52
aXJvbm1lbnQoKTsKK30KKworV2ViU2VjdXJpdHlPcmlnaW4gV2ViVXNlck1lZGlhUmVxdWVzdDo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX3ByaXZhdGUtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2luKG1fcHJpdmF0
ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKK30KKwordm9p
ZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxX
ZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNvdXJjZXMpCit7CisgICAgaWYgKG1fcHJpdmF0ZS5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgczsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOworICAgICAgICBzLmFwcGVu
ZChjdXJyKTsKKyAgICB9CisKKyAgICBtX3ByaXZhdGUtPnN1Y2NlZWQocyk7Cit9CisKK3ZvaWQg
V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdEZhaWxlZCgpCit7CisgICAgbV9wcml2YXRlLT5m
YWlsKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6ZXF1YWxzKGNvbnN0IFdlYlVz
ZXJNZWRpYVJlcXVlc3QmIG90aGVyKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSB8fCBvdGhl
ci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ByaXZhdGUu
Z2V0KCkgPT0gb3RoZXIubV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJl
cXVlc3Q6OmFzc2lnbihjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBvdGhlcikKK3sKKyAgICBV
c2VyTWVkaWFSZXF1ZXN0KiBwID0gb3RoZXIubV9wcml2YXRlLmdldCgpOworICAgIGlmIChwKQor
ICAgICAgICBwLT5yZWYoKTsKKyAgICBtX3ByaXZhdGUgPSBwOworfQorCitXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpvcGVyYXRvciBVc2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKaW5kZXggYmYzZjQ0OWU3NDUwYjNhMmJiMDE1NzJmODI2MDE5ZjAyYjEyNGVh
Yi4uYmIwNDEzNDg3ZTNhOThhZTdjNTgyODkwODYzZjMwMDMxNGMxYTNiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBACiAj
aW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNs
dWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudElt
cGwuaCIKICNpbmNsdWRlICJWZWN0b3IuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiV2ViQXV0b2ZpbGxDbGllbnQuaCIKQEAgLTM3MCw2ICszNzEsOSBA
QCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2lmIEVO
QUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCiAgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFdlYkNv
cmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQogI2VuZGlmCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdXNlck1lZGlhQ2xpZW50KGFkb3B0UHRyKG5ldyBV
c2VyTWVkaWFDbGllbnRJbXBsKGNsaWVudCkpKQorI2VuZGlmCiB7CiAgICAgLy8gV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQog
ICAgIC8vIEtKUyBzcGVjaWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0
byBoYXZlIHRocmVhZGluZwpAQCAtMzkyLDYgKzM5Niw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50
YXRpb25DbGllbnQgPSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAgICAg
cGFnZUNsaWVudHMuZ2VvbG9jYXRpb25DbGllbnQgPSBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHku
Z2V0KCk7CiAgICAgcGFnZUNsaWVudHMuYmFja0ZvcndhcmRDbGllbnQgPSBCYWNrRm9yd2FyZExp
c3RDaHJvbWl1bTo6Y3JlYXRlKHRoaXMpOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAg
cGFnZUNsaWVudHMudXNlck1lZGlhQ2xpZW50ID0gbV91c2VyTWVkaWFDbGllbnQuZ2V0KCk7Cisj
ZW5kaWYKIAogICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDVjYjBhOWMzNTAw
NGFlZTBjNzUxOGRkMmVjOTFjM2M3NWRjZGI2OTYuLjQ4MmE2YTY4ZjJlOWQ3MmRmNDJiYzE5NjY0
YzAyYmJlYjgzNmMzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aApAQCAtODEsNiArODEsNyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5Owog
Y2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsKIGNs
YXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbDsKK2NsYXNzIFVzZXJNZWRpYUNsaWVudEltcGw7CiBj
bGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViQ29tcG9zaXRvckltcGw7CiBj
bGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwpAQCAtNjI1LDYgKzYyNiwxMCBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCiAgICAgT3duUHRyPFdlYkNvcmU6OlBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CiAjZW5kaWYKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgT3duUHRyPFVzZXJNZWRpYUNsaWVudEltcGw+
IG1fdXNlck1lZGlhQ2xpZW50OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116203</attachid>
            <date>2011-11-22 04:32:18 -0800</date>
            <delta_ts>2011-11-22 11:11:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111122133216.patch</filename>
            <type>text/plain</type>
            <size>22389</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGM3ZDljMDA4ZmJmMzQyOWM1MWQ4YTRhOThlODM4Njc5YmYzMDcwYjAuLjRmZTI1NWMyOWU1NmQy
ZTA2MDFjNjkzZDdlOWE3NjkwNDk5M2NjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTEtMTEtMjIgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBl
bWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVk
ZXMgYSBmaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjky
NS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50Ojp+V2ViVXNlck1lZGlhQ2xpZW50
KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6On5XZWJVc2VyTWVkaWFSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6aXNOdWxsKToKKyAgICAgICAgKFdl
YktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6dXNlck1lZGlhQ2xpZW50KToKKyAgICAgICAg
KiBzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFDbGllbnRJbXBsOjpVc2VyTWVkaWFDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYUNsaWVudEltcGw6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAg
KiBzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1l
ZGlhUmVxdWVzdDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjphdWRpbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZVVz
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpjYW1lcmFQcmVmZXJl
bmNlRW52aXJvbm1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Ojpz
ZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJl
cXVlc3RTdWNjZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Ojpy
ZXF1ZXN0RmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6ZXF1
YWxzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6YXNzaWduKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1lZGlhUmVx
dWVzdCopOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisKIDIwMTEtMTEtMTcgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gUm91dGUgd2lsbERyYXcvc2V0TmVlZHNSZWRyYXcgdG8gQ0NJbnB1dEhhbmRs
ZXIgYW5kIGZpeCBkb3VibGUtZHJhd2luZyBpc3N1ZXMgdGhhdCByZXN1bHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAppbmRleCAxMjEwODk0NjZmNTY5ODRkNWQ0N2Q5ZmMxNjc5YzE3MDYzMzM2
NTI2Li43N2EwNDUxMmZhOTZiNjFjZDNmNDQxZjUzYmNjNzY4ODMwOGM5Y2JkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zMjUsNiArMzI1LDggQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlVSTFJlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxSZXNwb25zZS5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oJywKKyAgICAg
ICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJWZWN0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJWaWV3
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlld0NsaWVudC5oJywKQEAgLTQ1Miw2
ICs0NTQsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZUluZm9DaHJvbWl1bS5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvVXNl
ck1lZGlhQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hlY2tp
bmdDb21wbGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvVmlkZW9GcmFtZUNo
cm9taXVtSW1wbC5jcHAnLApAQCAtNjM1LDYgKzYzOSw3IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJVUkxSZXNwb25zZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9u
c2VQcml2YXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMRXJyb3IuY3BwJywKKyAg
ICAgICAgICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3
SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlckJhc2UuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTRiNzVlOTQwOTdjYjMwNmEwNjRiN2U4OGEyZGJhMzUyZjljZTM3ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNs
aWVudC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudF9oCisjZGVm
aW5lIFdlYlVzZXJNZWRpYUNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJNZWRpYVN0cmVhbVNvdXJjZTsKK2NsYXNzIFdlYlVzZXJNZWRpYVJlcXVlc3Q7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlVzZXJNZWRpYUNsaWVudCgpIHsgfQorCisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVz
dCYsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVz
dCYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNl
ck1lZGlhQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVzZXJNZWRpYVJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDQ3OTg0MTQ4NDQ4Y2VkNzgzODUzYzgw
NGQ5ZmViYzY1NDY3YmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlVzZXJNZWRpYVJlcXVlc3RfaAorI2RlZmluZSBXZWJVc2VyTWVkaWFSZXF1ZXN0X2gKKworI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOworY2xhc3MgV2ViU2VjdXJpdHlP
cmlnaW47CitjbGFzcyBXZWJTdHJpbmc7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2Vi
VmVjdG9yOworCitjbGFzcyBXZWJVc2VyTWVkaWFSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJV
c2VyTWVkaWFSZXF1ZXN0KCkgeyB9CisgICAgV2ViVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KSB7IGFzc2lnbihyZXF1ZXN0KTsgfQorICAgIH5XZWJV
c2VyTWVkaWFSZXF1ZXN0KCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0
JiBvcGVyYXRvcj0oY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgb3RoZXIpCisgICAgeworICAg
ICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxz
KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXNzaWduKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKTsKKworICAgIFdFQktJVF9FWFBP
UlQgYm9vbCBhdWRpbygpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNv
bnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBjYW1lcmFQcmVmZXJlbmNlVXNlcigpIGNvbnN0
OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBjYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKSBj
b25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlNlY3VyaXR5T3JpZ2luIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlcXVlc3RGYWlsZWQoKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdl
YlVzZXJNZWRpYVJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0PiYpOworICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKCkgY29uc3Q7
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlVzZXJNZWRp
YVJlcXVlc3Q+IG1fcHJpdmF0ZTsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
V2ViVXNlck1lZGlhUmVxdWVzdCYgYSwgY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgYikKK3sK
KyAgICByZXR1cm4gYS5lcXVhbHMoYik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViVXNlck1lZGlhUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggNjJjN2I0ZDQ5ZDdmNzNhZDg4YjY5ZTc4ZTdi
YmQzZDE0YmQ5YTY5NS4uZjIwODMyMzcyOGUxODhhNWEzNTIyMzMxOTczMDhjNzNkMWM0Yjk5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAt
NjcsNiArNjcsNyBAQCBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2ViU3Rv
cmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7CitjbGFz
cyBXZWJVc2VyTWVkaWFDbGllbnQ7CiBjbGFzcyBXZWJWaWV3OwogY2xhc3MgV2ViV2lkZ2V0Owog
c3RydWN0IFdlYkNvbnNvbGVNZXNzYWdlOwpAQCAtMzE5LDYgKzMyMCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBXZWJQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZTsKICAgICB9CiAKKyAg
ICAvLyBNZWRpYSBTdHJlYW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgV2ViVXNlck1lZGlhQ2xpZW50KiB1c2Vy
TWVkaWFDbGllbnQoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0Ns
aWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Vz
ZXJNZWRpYUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1l
ZGlhQ2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY5NzE4MWE4YzFiZjRiNjBjZjA5ZGM3MWJj
YmFmYzI0YzJiNzAwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVzZXJNZWRpYUNs
aWVudEltcGwuaCIKKworI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVk
ZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhUmVxdWVzdC5o
IgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitVc2VyTWVkaWFDbGllbnRJbXBsOjpVc2VyTWVkaWFD
bGllbnRJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fd2ViQ2xpZW50KGNsaWVu
dCA/IGNsaWVudC0+dXNlck1lZGlhQ2xpZW50KCkgOiAwKQoreworfQorCit2b2lkIFVzZXJNZWRp
YUNsaWVudEltcGw6OnBhZ2VEZXN0cm95ZWQoKQoreworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVu
dEltcGw6OnJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1
ZXN0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcykKK3sKKyAgICBpZiAo
bV93ZWJDbGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT5yZXF1ZXN0VXNlck1lZGlhKHJlcXVl
c3QsIHNvdXJjZXMpOworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJN
ZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBpZiAobV93ZWJD
bGllbnQpCisgICAgICAgIG1fd2ViQ2xpZW50LT5jYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFdlYlVz
ZXJNZWRpYVJlcXVlc3QocmVxdWVzdCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNmOGVmODBiZmRhMDg0
NTUwY2ZhOTk0YjgxY2M4MThkMjgzOGYxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaApAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBVc2VyTWVkaWFDbGllbnRJbXBsX2gKKyNkZWZpbmUgVXNlck1lZGlhQ2xpZW50SW1wbF9o
CisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNs
aWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJVc2VyTWVkaWFDbGllbnQ7CitjbGFzcyBXZWJWaWV3Q2xpZW50OworCitjbGFzcyBV
c2VyTWVkaWFDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCB7Citw
dWJsaWM6CisgICAgVXNlck1lZGlhQ2xpZW50SW1wbChXZWJWaWV3Q2xpZW50Kik7CisKKyAgICAv
LyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0PiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0Kik7CisKK3ByaXZhdGU6CisgICAgVXNlck1lZGlhQ2xpZW50SW1wbCgpOworCisgICAg
V2ViVXNlck1lZGlhQ2xpZW50KiBtX3dlYkNsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gVXNlck1lZGlhQ2xpZW50SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3
ZDRlNWQxZWYxM2QwNGQ0NzM1YTJmZDUxYjQ4ZTcxMmE1MDg2NzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAt
MCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2Uu
aCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNs
dWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1Tb3VyY2Uu
aCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8VXNlck1lZGlh
UmVxdWVzdD4mIHJlcXVlc3QpCisgICAgOiBtX3ByaXZhdGUocmVxdWVzdCkKK3sKK30KKwordm9p
ZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7
Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6YXVkaW8oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6
dmlkZW8oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7Cit9CisKK2Jv
b2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZVVzZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGUtPmNhbWVyYVByZWZlcmVuY2VVc2VyKCk7Cit9CisKK2Jvb2wg
V2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKTsK
K30KKworV2ViU2VjdXJpdHlPcmlnaW4gV2ViVXNlck1lZGlhUmVxdWVzdDo6c2VjdXJpdHlPcmln
aW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX3ByaXZhdGUtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKK30KKwordm9pZCBXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVh
bVNvdXJjZT4mIHNvdXJjZXMpCit7CisgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgczsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJl
YW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOworICAgICAgICBzLmFwcGVuZChjdXJyKTsKKyAg
ICB9CisKKyAgICBtX3ByaXZhdGUtPnN1Y2NlZWQocyk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlh
UmVxdWVzdDo6cmVxdWVzdEZhaWxlZCgpCit7CisgICAgbV9wcml2YXRlLT5mYWlsKCk7Cit9CisK
K2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6ZXF1YWxzKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVl
c3QmIG90aGVyKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSB8fCBvdGhlci5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCkgPT0gb3Ro
ZXIubV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmFzc2ln
bihjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBvdGhlcikKK3sKKyAgICBVc2VyTWVkaWFSZXF1
ZXN0KiBwID0gb3RoZXIubV9wcml2YXRlLmdldCgpOworICAgIGlmIChwKQorICAgICAgICBwLT5y
ZWYoKTsKKyAgICBtX3ByaXZhdGUgPSBwOworfQorCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVy
YXRvciBVc2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5n
ZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggYmYzZjQ0OWU3NDUwYjNhMmJiMDE1NzJmODI2MDE5ZjAyYjEyNGVhYi4uYmIwNDEzNDg3
ZTNhOThhZTdjNTgyODkwODYzZjMwMDMxNGMxYTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAiVHJh
Y2VFdmVudC5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2Vz
dHVyZUluZGljYXRvci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEltcGwuaCIKICNpbmNs
dWRlICJWZWN0b3IuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5j
bHVkZSAiV2ViQXV0b2ZpbGxDbGllbnQuaCIKQEAgLTM3MCw2ICszNzEsOSBAQCBXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2lmIEVOQUJMRShHRVNUVVJF
X1JFQ09HTklaRVIpCiAgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFdlYkNvcmU6OlBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICAsIG1fdXNlck1lZGlhQ2xpZW50KGFkb3B0UHRyKG5ldyBVc2VyTWVkaWFDbGll
bnRJbXBsKGNsaWVudCkpKQorI2VuZGlmCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBz
cGVjaWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVh
ZGluZwpAQCAtMzkyLDYgKzM5Niw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3
Q2xpZW50KiBjbGllbnQpCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQg
PSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAgICAgcGFnZUNsaWVudHMu
Z2VvbG9jYXRpb25DbGllbnQgPSBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAgICAg
cGFnZUNsaWVudHMuYmFja0ZvcndhcmRDbGllbnQgPSBCYWNrRm9yd2FyZExpc3RDaHJvbWl1bTo6
Y3JlYXRlKHRoaXMpOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgcGFnZUNsaWVudHMu
dXNlck1lZGlhQ2xpZW50ID0gbV91c2VyTWVkaWFDbGllbnQuZ2V0KCk7CisjZW5kaWYKIAogICAg
IG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDVjYjBhOWMzNTAwNGFlZTBjNzUxOGRk
MmVjOTFjM2M3NWRjZGI2OTYuLjQ4MmE2YTY4ZjJlOWQ3MmRmNDJiYzE5NjY0YzAyYmJlYjgzNmMz
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtODEsNiAr
ODEsNyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Nj
cm9sbFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsKIGNsYXNzIFNwZWVjaElu
cHV0Q2xpZW50SW1wbDsKK2NsYXNzIFVzZXJNZWRpYUNsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViQ29tcG9zaXRvckltcGw7CiBjbGFzcyBXZWJEZXZU
b29sc0FnZW50Q2xpZW50OwpAQCAtNjI1LDYgKzYyNiwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShHRVNUVVJFX1JFQ09HTklaRVIpCiAgICAgT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CiAjZW5kaWYKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgT3duUHRyPFVzZXJNZWRpYUNsaWVudEltcGw+IG1fdXNlck1lZGlh
Q2xpZW50OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116253</attachid>
            <date>2011-11-22 11:11:43 -0800</date>
            <delta_ts>2011-11-23 02:04:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71678-20111122201141.patch</filename>
            <type>text/plain</type>
            <size>22346</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhhNjc5OTAwOGI5MTM3YWJkODFiMjM2Y2NmMzNlMDQ4NTQ0YTNkNjMuLmU0OTI3M2JmOTBkNTY4
ZjcwMmMyNjE4M2NkMTA1Y2NhMjJiOGY5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTEtMTEtMjIgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBl
bWJlZGRpbmcgY29kZSBmb3IgR2V0VXNlck1lZGlhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3OAorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVk
ZXMgYSBmaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjky
NS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50Ojp+V2ViVXNlck1lZGlhQ2xpZW50
KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6V2ViVXNlck1lZGlhUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6On5XZWJVc2VyTWVkaWFSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6aXNOdWxsKToKKyAgICAgICAgKFdl
YktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6dXNlck1lZGlhQ2xpZW50KToKKyAgICAgICAg
KiBzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFDbGllbnRJbXBsOjpVc2VyTWVkaWFDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYUNsaWVudEltcGw6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDbGllbnRJbXBsOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAg
KiBzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1l
ZGlhUmVxdWVzdDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjphdWRpbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZVVz
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpjYW1lcmFQcmVmZXJl
bmNlRW52aXJvbm1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Ojpz
ZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJl
cXVlc3RTdWNjZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Ojpy
ZXF1ZXN0RmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6ZXF1
YWxzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6YXNzaWduKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1lZGlhUmVx
dWVzdCopOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisKIDIwMTEtMTEtMjIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFtjaHJvbWl1bV0gZml4IGludGVybmFjdGl2ZSB1aSB0ZXN0
IGZvciBzY3JpcHRzIHBhbmVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDEyMTA4
OTQ2NmY1Njk4NGQ1ZDQ3ZDlmYzE2NzljMTcwNjMzMzY1MjYuLjc3YTA0NTEyZmE5NmI2MWNkM2Y0
NDFmNTNiY2M3Njg4MzA4YzljYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMy
NSw2ICszMjUsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9hZGVyQ2xpZW50
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMUmVxdWVzdC5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlVSTFJlc3BvbnNlLmgnLAorICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViVXNlck1lZGlhQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZlY3Rvci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZpZXcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJWaWV3Q2xpZW50LmgnLApAQCAtNDUyLDYgKzQ1NCw4IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9TdG9yYWdlSW5mb0Nocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9T
dG9yYWdlTmFtZXNwYWNlUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VO
YW1lc3BhY2VQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudElt
cGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcCcsCkBAIC02MzUs
NiArNjM5LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxSZXNwb25zZVByaXZhdGUuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJVUkxFcnJvci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZXdJbXBsLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViV29ya2VyQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGI3NWU5NDA5N2NiMzA2
YTA2NGI3ZTg4YTJkYmEzNTJmOWNlMzdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViVXNlck1lZGlhQ2xpZW50X2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50X2gK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOworY2xh
c3MgV2ViVXNlck1lZGlhUmVxdWVzdDsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJW
ZWN0b3I7CisKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViVXNlck1lZGlhQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVz
ZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1l
ZGlhU3RyZWFtU291cmNlPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlh
UmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikgPSAwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYwNDc5ODQxNDg0NDhjZWQ3ODM4NTNjODA0ZDlmZWJjNjU0NjdiZDQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNlck1lZGlhUmVxdWVzdF9oCisjZGVm
aW5lIFdlYlVzZXJNZWRpYVJlcXVlc3RfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2Vy
TWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFT
dHJlYW1Tb3VyY2U7CitjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFdlYlN0cmluZzsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CisKK2NsYXNzIFdlYlVzZXJN
ZWRpYVJlcXVlc3QgeworcHVibGljOgorICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QoKSB7IH0KKyAg
ICBXZWJVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3Qp
IHsgYXNzaWduKHJlcXVlc3QpOyB9CisgICAgfldlYlVzZXJNZWRpYVJlcXVlc3QoKSB7IHJlc2V0
KCk7IH0KKworICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QmIG9wZXJhdG9yPShjb25zdCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0JiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQo
KTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsg
fQorICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVz
dCYpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViVXNlck1l
ZGlhUmVxdWVzdCYpOworCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGF1ZGlvKCkgY29uc3Q7Cisg
ICAgV0VCS0lUX0VYUE9SVCBib29sIHZpZGVvKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBi
b29sIGNhbWVyYVByZWZlcmVuY2VVc2VyKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29s
IGNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQg
V2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKworICAgIFdFQktJVF9F
WFBPUlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVh
bVNvdXJjZT4mKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdEZhaWxlZCgpOworCisj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViVXNlck1lZGlhUmVxdWVzdChjb25zdCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+Jik7CisgICAgb3BlcmF0b3IgV2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdCooKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAg
IFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4gbV9wcml2YXRlOworfTsK
KworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBhLCBj
b25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBiKQoreworICAgIHJldHVybiBhLmVxdWFscyhiKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFSZXF1
ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApp
bmRleCA2MmM3YjRkNDlkN2Y3M2FkODhiNjllNzhlN2JiZDNkMTRiZDlhNjk1Li5mMjA4MzIzNzI4
ZTE4OGE1YTM1MjIzMzE5NzMwOGM3M2QxYzRiOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIFdlYlNw
ZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgV2Vi
VVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudDsKIGNs
YXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJXaWRnZXQ7CiBzdHJ1Y3QgV2ViQ29uc29sZU1lc3NhZ2U7
CkBAIC0zMTksNiArMzIwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdlYlBhZ2VWaXNp
YmlsaXR5U3RhdGVWaXNpYmxlOwogICAgIH0KIAorICAgIC8vIE1lZGlhIFN0cmVhbXMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAg
dmlydHVhbCBXZWJVc2VyTWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudCgpIHsgcmV0dXJuIDA7
IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZDBiNzJjMWRiMTY3NjYwNmVkYWMzMTcwOTNhMTQ5ZTFkMWViM2ZkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5j
cHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAi
V2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIK
KyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVu
dC5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworVXNlck1lZGlhQ2xpZW50SW1wbDo6VXNlck1lZGlh
Q2xpZW50SW1wbChXZWJWaWV3SW1wbCogd2ViVmlldykKKyAgICA6IG1fY2xpZW50KHdlYlZpZXct
PmNsaWVudCgpID8gd2ViVmlldy0+Y2xpZW50KCktPnVzZXJNZWRpYUNsaWVudCgpIDogMCkKK3sK
K30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpwYWdlRGVzdHJveWVkKCkKK3sKK30KKwor
dm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpyZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gcmVxdWVzdCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNv
dXJjZXMpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+cmVxdWVzdFVz
ZXJNZWRpYShyZXF1ZXN0LCBzb3VyY2VzKTsKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRJbXBs
OjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+Y2FuY2VsVXNlck1lZGlhUmVxdWVz
dChXZWJVc2VyTWVkaWFSZXF1ZXN0KHJlcXVlc3QpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmMzZhNDgx
ODM4ZjFmZjU2OWQyMjhlODgxZjM1NTk4YzJlNDI0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgVXNlck1lZGlhQ2xpZW50SW1wbF9oCisjZGVmaW5lIFVzZXJNZWRpYUNsaWVu
dEltcGxfaAorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50OworY2xhc3MgV2ViVmlld0ltcGw7CisKK2Ns
YXNzIFVzZXJNZWRpYUNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBVc2VyTWVkaWFDbGllbnRJbXBsKFdlYlZpZXdJbXBsKik7CisKKyAg
ICAvLyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0PiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0Kik7CisKK3ByaXZhdGU6CisgICAgVXNlck1lZGlhQ2xpZW50SW1wbCgpOworCisg
ICAgV2ViVXNlck1lZGlhQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gVXNlck1lZGlhQ2xpZW50SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3
ZDRlNWQxZWYxM2QwNGQ0NzM1YTJmZDUxYjQ4ZTcxMmE1MDg2NzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAt
MCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2Uu
aCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNs
dWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1Tb3VyY2Uu
aCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8VXNlck1lZGlh
UmVxdWVzdD4mIHJlcXVlc3QpCisgICAgOiBtX3ByaXZhdGUocmVxdWVzdCkKK3sKK30KKwordm9p
ZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7
Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6YXVkaW8oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7Cit9CisKK2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6
dmlkZW8oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7Cit9CisKK2Jv
b2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZVVzZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGUtPmNhbWVyYVByZWZlcmVuY2VVc2VyKCk7Cit9CisKK2Jvb2wg
V2ViVXNlck1lZGlhUmVxdWVzdDo6Y2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQoKTsK
K30KKworV2ViU2VjdXJpdHlPcmlnaW4gV2ViVXNlck1lZGlhUmVxdWVzdDo6c2VjdXJpdHlPcmln
aW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX3ByaXZhdGUtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKK30KKwordm9pZCBXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVh
bVNvdXJjZT4mIHNvdXJjZXMpCit7CisgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgczsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJl
YW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOworICAgICAgICBzLmFwcGVuZChjdXJyKTsKKyAg
ICB9CisKKyAgICBtX3ByaXZhdGUtPnN1Y2NlZWQocyk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlh
UmVxdWVzdDo6cmVxdWVzdEZhaWxlZCgpCit7CisgICAgbV9wcml2YXRlLT5mYWlsKCk7Cit9CisK
K2Jvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6ZXF1YWxzKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVl
c3QmIG90aGVyKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSB8fCBvdGhlci5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCkgPT0gb3Ro
ZXIubV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OmFzc2ln
bihjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBvdGhlcikKK3sKKyAgICBVc2VyTWVkaWFSZXF1
ZXN0KiBwID0gb3RoZXIubV9wcml2YXRlLmdldCgpOworICAgIGlmIChwKQorICAgICAgICBwLT5y
ZWYoKTsKKyAgICBtX3ByaXZhdGUgPSBwOworfQorCitXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVy
YXRvciBVc2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5n
ZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggYmYzZjQ0OWU3NDUwYjNhMmJiMDE1NzJmODI2MDE5ZjAyYjEyNGVhYi4uNzc3MmQ5ODNh
ZTBjODNlOTg0ZjBjYmFjYTIwNmFkNDBlY2YyMmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzcwLDYgKzM3MCw5IEBAIFdlYlZpZXdJbXBsOjpX
ZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKICAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoV2ViQ29yZTo6UGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcjo6Y3JlYXRlKCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgICwgbV91c2VyTWVkaWFDbGllbnRJbXBsKHRoaXMpCisjZW5kaWYKIHsKICAgICAvLyBX
ZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNh
bGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmljIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBX
ZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBAIC0zOTIsNiArMzk1LDkgQEAgV2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICBwYWdlQ2xpZW50cy5kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQo
KTsKICAgICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNsaWVudCA9IG1fZ2VvbG9jYXRpb25DbGll
bnRQcm94eS5nZXQoKTsKICAgICBwYWdlQ2xpZW50cy5iYWNrRm9yd2FyZENsaWVudCA9IEJhY2tG
b3J3YXJkTGlzdENocm9taXVtOjpjcmVhdGUodGhpcyk7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyAgICBwYWdlQ2xpZW50cy51c2VyTWVkaWFDbGllbnQgPSAmbV91c2VyTWVkaWFDbGllbnRJ
bXBsOworI2VuZGlmCiAKICAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50
cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA1Y2Iw
YTljMzUwMDRhZWUwYzc1MThkZDJlYzkxYzNjNzVkY2RiNjk2Li42ZWQ3NWIzY2IxZjE5N2Q4YjI1
M2FkZmRmMjhjMTBlZDNlMDQzOTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5Lmgi
CisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtODEsNiArODIsNyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFBy
b3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94
eTsKIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbDsKK2NsYXNzIFVzZXJNZWRpYUNsaWVudElt
cGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViQ29tcG9zaXRvcklt
cGw7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwpAQCAtNjI1LDYgKzYyNywxMCBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCiAgICAgT3duUHRyPFdlYkNv
cmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CiAjZW5k
aWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgVXNlck1lZGlhQ2xpZW50SW1wbCBt
X3VzZXJNZWRpYUNsaWVudEltcGw7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>