<?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>40768</bug_id>
          
          <creation_ts>2010-06-17 03:00:53 -0700</creation_ts>
          <short_desc>Web Inspector: WebSocket in Resources tab</short_desc>
          <delta_ts>2010-09-13 23:57:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</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>38728</dependson>
    
    <dependson>39864</dependson>
    
    <dependson>41661</dependson>
          <blocked>34565</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>tkent</cc>
    
    <cc>ukai</cc>
    
    <cc>victorw</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>239314</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-17 03:00:53 -0700</bug_when>
    <thetext>Add WebSocket resource definition and show WebSocket resources in the Resources tab.

This is a child bug of bug 34565. Bug 38831 is a sibling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239321</commentid>
    <comment_count>1</comment_count>
      <attachid>58976</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-17 03:27:18 -0700</bug_when>
    <thetext>Created attachment 58976
Screenshot of prototype v1

Here is a screenshot of my first try.

There are a few rough edges:

- We need to decide the color of the bar chart (line 466 of inspector.js, see below), and create an image (front-end/Images/timelineBar???.png).

         scripts: new WebInspector.ResourceCategory(&quot;scripts&quot;, WebInspector.UIString(&quot;Scripts&quot;), &quot;rgb(255,121,0)&quot;),
         xhr: new WebInspector.ResourceCategory(&quot;xhr&quot;, WebInspector.UIString(&quot;XHR&quot;), &quot;rgb(231,231,10)&quot;),
         fonts: new WebInspector.ResourceCategory(&quot;fonts&quot;, WebInspector.UIString(&quot;Fonts&quot;), &quot;rgb(255,82,62)&quot;),
+        websocket: new WebInspector.ResourceCategory(&quot;websockets&quot;, WebInspector.UIString(&quot;WebSocket&quot;), &quot;rgb(???,???,???)&quot;),
         other: new WebInspector.ResourceCategory(&quot;other&quot;, WebInspector.UIString(&quot;Other&quot;), &quot;rgb(186,186,186)&quot;)
     };

  I&apos;m wondering if there&apos;s anybody responsible for these colors.

- We need to consider how to represent extra challenge/response field of WebSocket handshake. In my (tentative) implementation they are shown as &quot;(Key3)&quot; and &quot;(Challenge Response)&quot; in Request/Response headers list.

Suggestions and comments are highly appreciated. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239323</commentid>
    <comment_count>2</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-06-17 03:37:14 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=58976) [details]
&gt; Screenshot of prototype v1

&gt; - We need to consider how to represent extra challenge/response field of WebSocket handshake. In my (tentative) implementation they are shown as &quot;(Key3)&quot; and &quot;(Challenge Response)&quot; in Request/Response headers list.

I think (Key3) and (Challenge Response) would be fine.
(Reply) for (Challenge Response) might be ok, because websocket spec says it&apos;s /reply/ (4.1 44 in http://www.whatwg.org/specs/web-socket-protocol/ )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241778</commentid>
    <comment_count>3</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-23 02:55:15 -0700</bug_when>
    <thetext>Is there anybody who can create a new bar image (front-end/Images/timelinePill&lt;new color name&gt;.png) for WebSocket?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241787</commentid>
    <comment_count>4</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-23 03:19:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Is there anybody who can create a new bar image (front-end/Images/timelinePill&lt;new color name&gt;.png) for WebSocket?

timelineHollowPill&lt;new color name&gt;.png, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241804</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-23 04:50:09 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Is there anybody who can create a new bar image (front-end/Images/timelinePill&lt;new color name&gt;.png) for WebSocket?
&gt; 
&gt; timelineHollowPill&lt;new color name&gt;.png, too.

You should reuse the one for &apos;loading&apos; instead (blue).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241809</commentid>
    <comment_count>6</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-23 05:20:56 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; Is there anybody who can create a new bar image (front-end/Images/timelinePill&lt;new color name&gt;.png) for WebSocket?
&gt; &gt; 
&gt; &gt; timelineHollowPill&lt;new color name&gt;.png, too.
&gt; 
&gt; You should reuse the one for &apos;loading&apos; instead (blue).

Oops, I should have mentioned that these images will be used for timeline bars in Resources tab, not in Timeline tab.

Let me give some more context.

There are seven predefined colors for each resource type:
  - Documents: Blue
  - Stylesheets: Stylesheets
  - Images: Purple
  - Scripts: Orange
  - XHR: Yellow
  - Fonts: Red
  - Other: Gray

I want to add &quot;WebSocket resource type&quot;, but apparently timeline bars in Resources tab are drawn with images under front-end/Images directory, namely timelinePill*.png and timelineHollowPill*.png. These colors should match ones defined in line 460 of front-end/inspector.js.

As I don&apos;t have enough image-hacking skills to create a nice shiny image, I&apos;d like to find someone to create one. If there&apos;s nobody found, I&apos;d like to try to do it myself, but mine might not be so cool :p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242454</commentid>
    <comment_count>7</comment_count>
      <attachid>59642</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-24 05:11:24 -0700</bug_when>
    <thetext>Created attachment 59642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242459</commentid>
    <comment_count>8</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-24 05:16:53 -0700</bug_when>
    <thetext>So far I don&apos;t decide a bar color of WebSocket resources, because I didn&apos;t create a bar image so far. WebSocket resources are shown gray.

I don&apos;t have an idea of how to create a new bar image aligned with the existing ones...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242474</commentid>
    <comment_count>9</comment_count>
      <attachid>59642</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-24 05:53:20 -0700</bug_when>
    <thetext>Comment on attachment 59642
Patch

Looks sane. Please find a number of nits below. I don&apos;t like the way m_frame and m_loader are now nullable, but maybe it is Ok for now.

WebCore/inspector/InspectorController.cpp:1441
 +  void InspectorController::didCreateWebSocket(unsigned long identifier, const KURL&amp; url)
Do we really need to distinguish between didCreateWebSocket and willSendWebSocketHandshake? Can socket lag in between of those on its own or these are just corresponding js calls?

WebCore/inspector/InspectorController.cpp:1470
 +      // FIXME: Record timing?
I think you should mark response received time here.

WebCore/inspector/InspectorResource.cpp:199
 +              jsonObject.set(&quot;documentURL&quot;, m_requestURL.string());
Not sure this is entirely correct. Frameless resource should not reference any document.

WebCore/inspector/InspectorResource.cpp:327
 +      if (!m_loader)
I think this should be based on Key challenge, not the loader existence.

WebCore/websockets/WebSocketChannel.cpp:370
 +              m_identifierAssigned = true;
Isn&apos;t it equivalent to m_identifier != 0?


WebCore/inspector/front-end/ResourceView.js:283
 +              headers.push({header: &quot;(Key3)&quot;, value: this.resource.webSocketRequestKey3});
This formally is not a header. We do have special treatment of form parameters and such. This key could have dedicated place in UI too, no need for hack.

WebCore/inspector/front-end/ResourceView.js:292
 +              headers.push({header: &quot;(Challenge Response)&quot;, value: this.resource.webSocketChallengeResponse});
Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242934</commentid>
    <comment_count>10</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-25 03:53:28 -0700</bug_when>
    <thetext>Thank you for your review!

(In reply to comment #9)
&gt; (From update of attachment 59642 [details])
&gt; Looks sane. Please find a number of nits below. I don&apos;t like the way m_frame and m_loader are now nullable, but maybe it is Ok for now.

Nullable loader and frame were actually my concern, too, but I could not think of a good resolution.

Maybe we need to create an abstract layer of inspector resources? I don&apos;t have a concrete idea for now.

&gt; 
&gt; WebCore/inspector/InspectorController.cpp:1441
&gt;  +  void InspectorController::didCreateWebSocket(unsigned long identifier, const KURL&amp; url)
&gt; Do we really need to distinguish between didCreateWebSocket and willSendWebSocketHandshake? Can socket lag in between of those on its own or these are just corresponding js calls?

Between didCreateWebSocket and willSendWebSocketHandshake, the browser tries to establish a socket connection. Thus willSendWebSocketHandshake may not happen if we cannot connect to the server (e.g. connection refused).

I want to see a resource line even if the connecting attempt is failed, so I guess the two functions should be separated.

&gt; 
&gt; WebCore/inspector/InspectorController.cpp:1470
&gt;  +      // FIXME: Record timing?
&gt; I think you should mark response received time here.

Hmm, I tried it in fact, but the timing chart was not shown in a way I intended. The bar timing is calculated as follows:
  - latency (light-colored bar) = responseReceived time -  start time
  - download (solid-colored bar) = end time - responseReceived time

I didn&apos;t think this formula fit this case. I thought I had to tweak the bar representation. That is why I did not mark response received time here.

Perhaps I have to add a new timing type for WebSocket?

&gt; 
&gt; WebCore/inspector/InspectorResource.cpp:199
&gt;  +              jsonObject.set(&quot;documentURL&quot;, m_requestURL.string());
&gt; Not sure this is entirely correct. Frameless resource should not reference any document.

I was not sure about the difference between &quot;url&quot; and &quot;documentURL&quot;. Could you elaborate more?

&gt; 
&gt; WebCore/inspector/InspectorResource.cpp:327
&gt;  +      if (!m_loader)
&gt; I think this should be based on Key challenge, not the loader existence.

Challenge key is not set until the handshake is sent. Probably it&apos;s good to add a flag that identifies the WebSocket resource type.

&gt; 
&gt; WebCore/websockets/WebSocketChannel.cpp:370
&gt;  +              m_identifierAssigned = true;
&gt; Isn&apos;t it equivalent to m_identifier != 0?

I didn&apos;t know 0 is not a valid identifier. Will fix.

&gt; 
&gt; 
&gt; WebCore/inspector/front-end/ResourceView.js:283
&gt;  +              headers.push({header: &quot;(Key3)&quot;, value: this.resource.webSocketRequestKey3});
&gt; This formally is not a header. We do have special treatment of form parameters and such. This key could have dedicated place in UI too, no need for hack.
&gt; 
&gt; WebCore/inspector/front-end/ResourceView.js:292
&gt;  +              headers.push({header: &quot;(Challenge Response)&quot;, value: this.resource.webSocketChallengeResponse});
&gt; Ditto.

Sure, I want to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246529</commentid>
    <comment_count>11</comment_count>
      <attachid>60503</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-05 01:45:03 -0700</bug_when>
    <thetext>Created attachment 60503
Patch v2 (Updated as per Pavel&apos;s comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246549</commentid>
    <comment_count>12</comment_count>
      <attachid>60503</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-05 03:00:44 -0700</bug_when>
    <thetext>Comment on attachment 60503
Patch v2 (Updated as per Pavel&apos;s comments)

Looks good. One thing before we land it: I still don&apos;t like the way it forks InspectorResource. What you were suggesting (extracting the common part into a superclass) sounds like a good solution to me. We could do it later, but it just might be easier to do it now, before the HTTP and WebSocket concepts are mixed in the InspectorResource class. I also foresee InspectorWebSocketResource getting more functionality InspectorResource does not have (like having chunks of data available). The complex thing is that this hierarchy needs to exist both in naive and js layers. Would you sign up for such a refactoring?

WebCore/inspector/InspectorResource.h:110
 +          KURL documentURL() const { return m_documentURL; }
Does not seem to be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246566</commentid>
    <comment_count>13</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-05 04:17:03 -0700</bug_when>
    <thetext>Thank you for your review.

(In reply to comment #12)
&gt; (From update of attachment 60503 [details])
&gt; Looks good. One thing before we land it: I still don&apos;t like the way it forks InspectorResource. What you were suggesting (extracting the common part into a superclass) sounds like a good solution to me. We could do it later, but it just might be easier to do it now, before the HTTP and WebSocket concepts are mixed in the InspectorResource class. I also foresee InspectorWebSocketResource getting more functionality InspectorResource does not have (like having chunks of data available). The complex thing is that this hierarchy needs to exist both in naive and js layers. Would you sign up for such a refactoring?

Sure, I&apos;m happy to decouple InspectorResource and do the refactoring. I want to start working on it after I complete WebSocket support in Inspector&apos;s Timeline panel (bug 38831), which I&apos;m preparing a patch for.

&gt; 
&gt; WebCore/inspector/InspectorResource.h:110
&gt;  +          KURL documentURL() const { return m_documentURL; }
&gt; Does not seem to be used.

Will be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246888</commentid>
    <comment_count>14</comment_count>
      <attachid>60592</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-05 23:42:08 -0700</bug_when>
    <thetext>Created attachment 60592
Patch v3 (Remove documentURL function)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246891</commentid>
    <comment_count>15</comment_count>
      <attachid>60592</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-07-05 23:44:41 -0700</bug_when>
    <thetext>Comment on attachment 60592
Patch v3 (Remove documentURL function)

I will land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246893</commentid>
    <comment_count>16</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-07-05 23:49:16 -0700</bug_when>
    <thetext>Committed r62529: &lt;http://trac.webkit.org/changeset/62529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246904</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-06 00:13:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/62529 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246941</commentid>
    <comment_count>18</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-06 01:33:10 -0700</bug_when>
    <thetext>The commit was reverted since it broke http/tests/inspector/resource-har-conversion.html. I&apos;m looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247024</commentid>
    <comment_count>19</comment_count>
      <attachid>60620</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-06 05:05:36 -0700</bug_when>
    <thetext>Created attachment 60620
Patch v4 (Fix documentURL regression)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247025</commentid>
    <comment_count>20</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-07-06 05:09:23 -0700</bug_when>
    <thetext>It would be nice if you describe how you fixed the regression on this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247293</commentid>
    <comment_count>21</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-06 21:35:52 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; It would be nice if you describe how you fixed the regression on this bug.

The regression was happened because in InspectorResource::create() loader-&gt;frame()-&gt;document()-&gt;url() may be inaccurate (may point to the previous page). To fix this, I added documentURL() function that lazily obtains the document URL.

The following is my fix:

diff --git a/WebCore/inspector/InspectorResource.cpp b/WebCore/inspector/InspectorResource.cpp
index 5157a53..6dd00e0 100644
--- a/WebCore/inspector/InspectorResource.cpp
+++ b/WebCore/inspector/InspectorResource.cpp
@@ -115,7 +115,9 @@ PassRefPtr&lt;InspectorResource&gt; InspectorResource::appendRedirect(unsigned long id
 PassRefPtr&lt;InspectorResource&gt; InspectorResource::create(unsigned long identifier, DocumentLoader* loader, const KURL&amp; requestURL)
 {
     ASSERT(loader);
-    return adoptRef(new InspectorResource(identifier, loader, requestURL, loader-&gt;frame()-&gt;document()-&gt;url()));
+    // We cannot set documentURL here, because loader-&gt;frame()-&gt;document()-&gt;url() may not be accurate at this moment.
+    // It will be fetched in documentURL() method when it becomes necessary.
+    return adoptRef(new InspectorResource(identifier, loader, requestURL, KURL()));
 }
 
 PassRefPtr&lt;InspectorResource&gt; InspectorResource::createCached(unsigned long identifier, DocumentLoader* loader, const CachedResource* cachedResource)
@@ -212,7 +214,7 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
     ScriptObject jsonObject = frontend-&gt;newScriptObject();
     if (m_changes.hasChange(RequestChange)) {
         jsonObject.set(&quot;url&quot;, m_requestURL.string());
-        jsonObject.set(&quot;documentURL&quot;, m_documentURL.string());
+        jsonObject.set(&quot;documentURL&quot;, documentURL().string());
         jsonObject.set(&quot;host&quot;, m_requestURL.host());
         jsonObject.set(&quot;path&quot;, m_requestURL.path());
         jsonObject.set(&quot;lastPathComponent&quot;, m_requestURL.lastPathComponent());
@@ -408,6 +410,16 @@ PassRefPtr&lt;SharedBuffer&gt; InspectorResource::resourceData(String* textEncodingNam
     return cachedResource-&gt;data();
 }
 
+KURL InspectorResource::documentURL()
+{
+    if (!m_documentURL.isNull())
+        return m_documentURL;
+
+    ASSERT(m_frame);
+    m_documentURL = m_frame-&gt;document()-&gt;url();
+    return m_documentURL;
+}
+
 void InspectorResource::startTiming()
 {
     m_startTime = currentTime();
diff --git a/WebCore/inspector/InspectorResource.h b/WebCore/inspector/InspectorResource.h
index 26110f2..34aa2d9 100644
--- a/WebCore/inspector/InspectorResource.h
+++ b/WebCore/inspector/InspectorResource.h
@@ -107,6 +107,7 @@ namespace WebCore {
         void markMainResource() { m_isMainResource = true; }
         unsigned long identifier() const { return m_identifier; }
         KURL requestURL() const { return m_requestURL; }
+        KURL documentURL();
         Frame* frame() const { return m_frame.get(); }
         const String&amp; mimeType() const { return m_mimeType; }
         const HTTPHeaderMap&amp; requestHeaderFields() const { return m_requestHeaderFields; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247333</commentid>
    <comment_count>22</comment_count>
      <attachid>60620</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-06 23:07:26 -0700</bug_when>
    <thetext>Comment on attachment 60620
Patch v4 (Fix documentURL regression)

WebCore/inspector/InspectorResource.cpp:415
 +      if (!m_documentURL.isNull())
This logic looks unclear. I don&apos;t think you should initialize m_documentURL in constructor given that majority of cases it will initialize with empty URL. I&apos;d just assign to it when you know information is available: in InspectorResource::updateRequest for generic resources  and in InspectorResource::createWebSocket for web sockets. r- for that.

Otherwise, looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247373</commentid>
    <comment_count>23</comment_count>
      <attachid>60702</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-07 01:01:19 -0700</bug_when>
    <thetext>Created attachment 60702
Patch v5 (Updated as per comment #22)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247440</commentid>
    <comment_count>24</comment_count>
      <attachid>60702</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-07 03:14:00 -0700</bug_when>
    <thetext>Comment on attachment 60702
Patch v5 (Updated as per comment #22)

Rejecting patch 60702 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 19294 test cases.
http/tests/inspector/resource-har-conversion.html -&gt; failed

Exiting early after 1 failures. 18452 tests run.
526.58s total testing time

18451 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
12 test cases (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/3358472</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247469</commentid>
    <comment_count>25</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-07 04:11:43 -0700</bug_when>
    <thetext>:(

Sounds like updateRequest() is also too early?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247484</commentid>
    <comment_count>26</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-07 04:47:43 -0700</bug_when>
    <thetext>As far as I tested, updateRequest() did not seem to be the right place to call m_frame-&gt;document()-&gt;url(). updateScriptObject() seemed safe.

I don&apos;t know why :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247488</commentid>
    <comment_count>27</comment_count>
      <attachid>60702</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-07 05:07:26 -0700</bug_when>
    <thetext>Comment on attachment 60702
Patch v5 (Updated as per comment #22)

Not sure why it failed. Does it pass locally?
Anyways, now that it is again not landed I have a chance to comment on it a bit more.

WebCore/inspector/InspectorResource.h:164
 +          InspectorResource(unsigned long identifier, DocumentLoader*, const KURL&amp; requestURL, const KURL&amp; documentURL);
I thought we agreed that this parameter should not go to the constructor (see previous review comments).

WebCore/inspector/InspectorResource.h:110
 +          KURL documentURL();
Seems to be of no use.

WebCore/inspector/InspectorResource.cpp:118
 +      // We cannot set documentURL here, because loader-&gt;frame()-&gt;document()-&gt;url() may not be accurate at this moment.
If you remove extra constructor argument, there will be no need in this comment.

WebCore/inspector/InspectorResource.cpp:145
 +      RefPtr&lt;InspectorResource&gt; resource(new InspectorResource(identifier, 0, requestURL, documentURL));
Add m_documentURL = documentURL below instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254729</commentid>
    <comment_count>28</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-22 04:44:08 -0700</bug_when>
    <thetext>Apologies for delay in response.

(In reply to comment #27)
&gt; (From update of attachment 60702 [details])
&gt; Not sure why it failed. Does it pass locally?

Actually it does not.

I&apos;ve figured out the cause:
- InspectorResource::updateRequest() is called during willSendRequest callback, but m_frame-&gt;document() is not ready at this point. It points to the URL of the previous page.
- Frame::setURL() is called (indirectly) by FrameLoader::receivedFirstData(), and we need to obtain the documentURL after this point.

I think the only way to resolve this situation is to obtain documentURL in InspectorResource::updateScriptObject(). If you have an alternative idea, I appreciate it.


I want to fix other issues you pointed out in comment #27.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255972</commentid>
    <comment_count>29</comment_count>
      <attachid>62556</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-26 04:21:43 -0700</bug_when>
    <thetext>Created attachment 62556
Patch v6 (Fix regression, this time for sure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256385</commentid>
    <comment_count>30</comment_count>
      <attachid>62556</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-26 21:51:49 -0700</bug_when>
    <thetext>Comment on attachment 62556
Patch v6 (Fix regression, this time for sure)

Clearing flags on attachment: 62556

Committed r64104: &lt;http://trac.webkit.org/changeset/64104&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256386</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-26 21:51:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256712</commentid>
    <comment_count>32</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-07-27 11:15:58 -0700</bug_when>
    <thetext>Reverted r64104 for reason:

The patch causes chromium webkit socket laytest crashes on windows randomly

Committed r64142: &lt;http://trac.webkit.org/changeset/64142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269753</commentid>
    <comment_count>33</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-08-26 00:17:40 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Reverted r64104 for reason:
&gt; 
&gt; The patch causes chromium webkit socket laytest crashes on windows randomly
&gt; 
&gt; Committed r64142: &lt;http://trac.webkit.org/changeset/64142&gt;

I&apos;ve been investigating this, but I really could not reproduce these crashes, and there were no useful stack trace available. I suspect they were caused by Chromium&apos;s bot issue (Incredibuild sometimes produces a corrupt binary).

http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/8e831aec217eab90/dd397c598f8e8139

Thus, I want to check in my code again, and see if my code really cause crashes.

I will shortly upload another patch for review that contains a few changes to follow recent changes in web inspector. There&apos;s no change in functionality.

To WebKit gardeners: If you see crashes under websocket/ tests after WebKit roll , please try to clobber builders before reverting my commit. If the crashes are real, feel free to revert my change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269760</commentid>
    <comment_count>34</comment_count>
      <attachid>65532</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-08-26 00:36:26 -0700</bug_when>
    <thetext>Created attachment 65532
Patch v7 (Updated for inspector changes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269763</commentid>
    <comment_count>35</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-08-26 00:59:27 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; Created an attachment (id=65532) [details]
&gt; Patch v7 (Updated for inspector changes)

I&apos;ll land this change next week, after Chromium M7 branch is cut.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270325</commentid>
    <comment_count>36</comment_count>
      <attachid>65532</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-08-26 23:11:53 -0700</bug_when>
    <thetext>Comment on attachment 65532
Patch v7 (Updated for inspector changes)

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index 90f722c24dba7744f34e4645233c077060bcf63f..29bdc4b09a26e081f781908380b1bf4b4787c781 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,72 @@
&gt; +2010-08-26  Yuta Kitamura  &lt;yutak@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add WebSocket resource type to Web Inspector.
&gt; +
&gt; +        When a new WebSocket connection is established, a line for that connection
&gt; +        will appear in Web Inspector&apos;s Resources tab. If the resource name is
&gt; +        clicked, the details of handshake request and response will be shown.
&gt; +
&gt; +        Web Inspector: WebSocket in Resources tab
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=40768
&gt; +
&gt; +        * inspector/InspectorController.cpp:
&gt; +        (WebCore::InspectorController::addResource): WebSocket resource does not
&gt; +        have an associated loader, thus frame might be null. Need to check it.
&gt; +        (WebCore::InspectorController::removeResource): Ditto.
&gt; +        (WebCore::InspectorController::didCreateWebSocket):
&gt; +        (WebCore::InspectorController::willSendWebSocketHandshakeRequest):
&gt; +        (WebCore::InspectorController::didReceiveWebSocketHandshakeResponse):
&gt; +        (WebCore::InspectorController::didCloseWebSocket):
&gt; +        * inspector/InspectorController.h:
&gt; +        * inspector/InspectorResource.cpp: Add null checks of m_loader and m_frame,
&gt; +        because WebSocket does not have a loader and we need to allow null for
&gt; +        these variables.
&gt; +        (WebCore::createReadableStringFromBinary):
&gt; +        (WebCore::InspectorResource::InspectorResource):
&gt; +        (WebCore::InspectorResource::create): Factory function of
&gt; +        regular (non-WebSocket) resources.
&gt; +        (WebCore::InspectorResource::createWebSocket): Factory function of
&gt; +        WebSocket resources.
&gt; +        (WebCore::InspectorResource::updateWebSocketRequest):
&gt; +        (WebCore::InspectorResource::updateWebSocketResponse):
&gt; +        (WebCore::InspectorResource::updateScriptObject): m_frame-&gt;document() becomes
&gt; +        available when Frame::setDocument() is called. We cannot obtain documentURL
&gt; +        during the constructor or updateRequest() function, because m_frame-&gt;document()
&gt; +        is not available yet at that point and documentURL will contain a wrong URL.
&gt; +        As far as I know, updateScriptObject() is the only place where we can safely
&gt; +        obtain documentURL.
&gt; +        (WebCore::InspectorResource::cachedResource):
&gt; +        (WebCore::InspectorResource::type):
&gt; +        (WebCore::InspectorResource::resourceData):
&gt; +        * inspector/InspectorResource.h:
&gt; +        (WebCore::InspectorResource::):
&gt; +        (WebCore::InspectorResource::markWebSocket):
&gt; +        * inspector/front-end/Resource.js:
&gt; +        (WebInspector.Resource.Type.toString):
&gt; +        (WebInspector.Resource.prototype.set type):
&gt; +        (WebInspector.Resource.prototype._mimeTypeIsConsistentWithType):
&gt; +        * inspector/front-end/ResourceView.js:
&gt; +        (WebInspector.ResourceView.prototype._refreshRequestHeaders):
&gt; +        (WebInspector.ResourceView.prototype._refreshResponseHeaders):
&gt; +        (WebInspector.ResourceView.prototype._refreshHeaders):
&gt; +        * inspector/front-end/inspector.css:
&gt; +        (.resources-category-websockets, .resources-category-other):
&gt; +        (.resources-category-websockets .resources-graph-bar):
&gt; +        (.resources-category-websockets.resource-cached .resources-graph-bar):
&gt; +        * inspector/front-end/inspector.js:
&gt; +        (WebInspector.loaded):
&gt; +        (WebInspector.updateResource):
&gt; +        * websockets/WebSocketChannel.cpp:
&gt; +        (WebCore::WebSocketChannel::WebSocketChannel):
&gt; +        (WebCore::WebSocketChannel::disconnect):
&gt; +        (WebCore::WebSocketChannel::didOpen):
&gt; +        (WebCore::WebSocketChannel::didClose):
&gt; +        (WebCore::WebSocketChannel::processBuffer):
&gt; +        (WebCore::WebSocketChannel::identifier):
&gt; +        * websockets/WebSocketChannel.h:
&gt; +
&gt;  2010-08-25  Sheriff Bot  &lt;webkit.review.bot@gmail.com&gt;
&gt;  
&gt;          Unreviewed, rolling out r66074.
&gt; diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
&gt; index f47b32174967ce6faff4f008a2df613f9b925272..1a47571e329e256edb7f3cf3fe83accf13f73791 100644
&gt; --- a/WebCore/inspector/InspectorController.cpp
&gt; +++ b/WebCore/inspector/InspectorController.cpp
&gt; @@ -798,6 +798,8 @@ void InspectorController::addResource(InspectorResource* resource)
&gt;      m_knownResources.add(resource-&gt;requestURL());
&gt;  
&gt;      Frame* frame = resource-&gt;frame();
&gt; +    if (!frame)
&gt; +        return;
&gt;      ResourcesMap* resourceMap = m_frameResources.get(frame);
&gt;      if (resourceMap)
&gt;          resourceMap-&gt;set(resource-&gt;identifier(), resource);
&gt; @@ -816,6 +818,8 @@ void InspectorController::removeResource(InspectorResource* resource)
&gt;          m_knownResources.remove(requestURL);
&gt;  
&gt;      Frame* frame = resource-&gt;frame();
&gt; +    if (!frame)
&gt; +        return;
&gt;      ResourcesMap* resourceMap = m_frameResources.get(frame);
&gt;      if (!resourceMap) {
&gt;          ASSERT_NOT_REACHED();
&gt; @@ -1442,6 +1446,56 @@ InspectorDOMStorageResource* InspectorController::getDOMStorageResourceForId(lon
&gt;  }
&gt;  #endif
&gt;  
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +void InspectorController::didCreateWebSocket(unsigned long identifier, const KURL&amp; requestURL, const KURL&amp; documentURL)
&gt; +{
&gt; +    if (!enabled())
&gt; +        return;
&gt; +    ASSERT(m_inspectedPage);
&gt; +
&gt; +    RefPtr&lt;InspectorResource&gt; resource = InspectorResource::createWebSocket(identifier, requestURL, documentURL);
&gt; +    addResource(resource.get());
&gt; +
&gt; +    if (m_frontend)
&gt; +        resource-&gt;updateScriptObject(m_frontend.get());
&gt; +}
&gt; +
&gt; +void InspectorController::willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest&amp; request)
&gt; +{
&gt; +    RefPtr&lt;InspectorResource&gt; resource = getTrackedResource(identifier);
&gt; +    if (!resource)
&gt; +        return;
&gt; +    resource-&gt;startTiming();
&gt; +    resource-&gt;updateWebSocketRequest(request);
&gt; +    if (m_frontend)
&gt; +        resource-&gt;updateScriptObject(m_frontend.get());
&gt; +}
&gt; +
&gt; +void InspectorController::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse&amp; response)
&gt; +{
&gt; +    RefPtr&lt;InspectorResource&gt; resource = getTrackedResource(identifier);
&gt; +    if (!resource)
&gt; +        return;
&gt; +    // Calling resource-&gt;markResponseReceivedTime() here makes resources bar chart confusing, because
&gt; +    // we cannot apply the &quot;latency + download&quot; model of regular resources to WebSocket connections.
&gt; +    // FIXME: Design a new UI for bar charts of WebSocket resources, and record timing here.
&gt; +    resource-&gt;updateWebSocketResponse(response);
&gt; +    if (m_frontend)
&gt; +        resource-&gt;updateScriptObject(m_frontend.get());
&gt; +}
&gt; +
&gt; +void InspectorController::didCloseWebSocket(unsigned long identifier)
&gt; +{
&gt; +    RefPtr&lt;InspectorResource&gt; resource = getTrackedResource(identifier);
&gt; +    if (!resource)
&gt; +        return;
&gt; +
&gt; +    resource-&gt;endTiming();
&gt; +    if (m_frontend)
&gt; +        resource-&gt;updateScriptObject(m_frontend.get());
&gt; +}
&gt; +#endif // ENABLE(WEB_SOCKETS)
&gt; +
&gt;  #if ENABLE(JAVASCRIPT_DEBUGGER)
&gt;  void InspectorController::addProfile(PassRefPtr&lt;ScriptProfile&gt; prpProfile, unsigned lineNumber, const String&amp; sourceURL)
&gt;  {
&gt; diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
&gt; index 7ed25490de2e7af1c7646e739cf5c49fcf8abd1b..43974ab427c98ef66213edeccb4ecf35faeeff04 100644
&gt; --- a/WebCore/inspector/InspectorController.h
&gt; +++ b/WebCore/inspector/InspectorController.h
&gt; @@ -87,6 +87,11 @@ class StorageArea;
&gt;  class InspectorApplicationCacheAgent;
&gt;  #endif
&gt;  
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +class WebSocketHandshakeRequest;
&gt; +class WebSocketHandshakeResponse;
&gt; +#endif
&gt; +
&gt;  class InspectorController : public Noncopyable {
&gt;  public:
&gt;      typedef HashMap&lt;unsigned long, RefPtr&lt;InspectorResource&gt; &gt; ResourcesMap;
&gt; @@ -204,6 +209,12 @@ public:
&gt;      void setDOMStorageItem(long storageId, const String&amp; key, const String&amp; value, bool* success);
&gt;      void removeDOMStorageItem(long storageId, const String&amp; key, bool* success);
&gt;  #endif
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +    void didCreateWebSocket(unsigned long identifier, const KURL&amp; requestURL, const KURL&amp; documentURL);
&gt; +    void willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest&amp;);
&gt; +    void didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse&amp;);
&gt; +    void didCloseWebSocket(unsigned long identifier);
&gt; +#endif
&gt;  
&gt;      const ResourcesMap&amp; resources() const { return m_resources; }
&gt;      InspectorResource* resourceForURL(const String&amp; url);
&gt; diff --git a/WebCore/inspector/InspectorResource.cpp b/WebCore/inspector/InspectorResource.cpp
&gt; index ed07339e6a1301eea0fdbe1901086d9ad92a678a..342ad7904ced429754342aa9f78243aa5a1c1527 100644
&gt; --- a/WebCore/inspector/InspectorResource.cpp
&gt; +++ b/WebCore/inspector/InspectorResource.cpp
&gt; @@ -43,14 +43,37 @@
&gt;  #include &quot;ResourceLoadTiming.h&quot;
&gt;  #include &quot;ResourceRequest.h&quot;
&gt;  #include &quot;ResourceResponse.h&quot;
&gt; +#include &quot;StringBuffer.h&quot;
&gt;  #include &quot;TextEncoding.h&quot;
&gt; +#include &quot;WebSocketHandshakeRequest.h&quot;
&gt; +#include &quot;WebSocketHandshakeResponse.h&quot;
&gt; +
&gt; +#include &lt;wtf/Assertions.h&gt;
&gt;  
&gt;  namespace WebCore {
&gt;  
&gt; +// Create human-readable binary representation, like &quot;01:23:45:67:89:AB:CD:EF&quot;.
&gt; +static String createReadableStringFromBinary(const unsigned char* value, size_t length)
&gt; +{
&gt; +    ASSERT(length &gt; 0);
&gt; +    static const char hexDigits[17] = &quot;0123456789ABCDEF&quot;;
&gt; +    size_t bufferSize = length * 3 - 1;
&gt; +    StringBuffer buffer(bufferSize);
&gt; +    size_t index = 0;
&gt; +    for (size_t i = 0; i &lt; length; ++i) {
&gt; +        if (i &gt; 0)
&gt; +            buffer[index++] = &apos;:&apos;;
&gt; +        buffer[index++] = hexDigits[value[i] &gt;&gt; 4];
&gt; +        buffer[index++] = hexDigits[value[i] &amp; 0xF];
&gt; +    }
&gt; +    ASSERT(index == bufferSize);
&gt; +    return String::adopt(buffer);
&gt; +}
&gt; +
&gt;  InspectorResource::InspectorResource(unsigned long identifier, DocumentLoader* loader, const KURL&amp; requestURL)
&gt;      : m_identifier(identifier)
&gt;      , m_loader(loader)
&gt; -    , m_frame(loader-&gt;frame())
&gt; +    , m_frame(loader ? loader-&gt;frame() : 0)
&gt;      , m_requestURL(requestURL)
&gt;      , m_expectedContentLength(0)
&gt;      , m_cached(false)
&gt; @@ -66,6 +89,9 @@ InspectorResource::InspectorResource(unsigned long identifier, DocumentLoader* l
&gt;      , m_connectionID(0)
&gt;      , m_connectionReused(false)
&gt;      , m_isMainResource(false)
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +    , m_isWebSocket(false)
&gt; +#endif
&gt;  {
&gt;  }
&gt;  
&gt; @@ -88,6 +114,12 @@ PassRefPtr&lt;InspectorResource&gt; InspectorResource::appendRedirect(unsigned long id
&gt;      return redirect;
&gt;  }
&gt;  
&gt; +PassRefPtr&lt;InspectorResource&gt; InspectorResource::create(unsigned long identifier, DocumentLoader* loader, const KURL&amp; requestURL)
&gt; +{
&gt; +    ASSERT(loader);
&gt; +    return adoptRef(new InspectorResource(identifier, loader, requestURL));
&gt; +}
&gt; +
&gt;  PassRefPtr&lt;InspectorResource&gt; InspectorResource::createCached(unsigned long identifier, DocumentLoader* loader, const CachedResource* cachedResource)
&gt;  {
&gt;      PassRefPtr&lt;InspectorResource&gt; resource = create(identifier, loader, KURL(ParsedURLString, cachedResource-&gt;url()));
&gt; @@ -107,6 +139,16 @@ PassRefPtr&lt;InspectorResource&gt; InspectorResource::createCached(unsigned long iden
&gt;      return resource;
&gt;  }
&gt;  
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +PassRefPtr&lt;InspectorResource&gt; InspectorResource::createWebSocket(unsigned long identifier, const KURL&amp; requestURL, const KURL&amp; documentURL)
&gt; +{
&gt; +    RefPtr&lt;InspectorResource&gt; resource = adoptRef(new InspectorResource(identifier, 0, requestURL));
&gt; +    resource-&gt;markWebSocket();
&gt; +    resource-&gt;m_documentURL = documentURL;
&gt; +    return resource.release();
&gt; +}
&gt; +#endif
&gt; +
&gt;  void InspectorResource::updateRequest(const ResourceRequest&amp; request)
&gt;  {
&gt;      m_requestHeaderFields = request.httpHeaderFields();
&gt; @@ -146,6 +188,27 @@ void InspectorResource::updateResponse(const ResourceResponse&amp; response)
&gt;      m_changes.set(TypeChange);
&gt;  }
&gt;  
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +void InspectorResource::updateWebSocketRequest(const WebSocketHandshakeRequest&amp; request)
&gt; +{
&gt; +    m_requestHeaderFields = request.headerFields();
&gt; +    m_requestMethod = &quot;GET&quot;; // Currently we always use &quot;GET&quot; to request handshake.
&gt; +    m_webSocketRequestKey3.set(new WebSocketHandshakeRequest::Key3(request.key3()));
&gt; +    m_changes.set(RequestChange);
&gt; +    m_changes.set(TypeChange);
&gt; +}
&gt; +
&gt; +void InspectorResource::updateWebSocketResponse(const WebSocketHandshakeResponse&amp; response)
&gt; +{
&gt; +    m_responseStatusCode = response.statusCode();
&gt; +    m_responseStatusText = response.statusText();
&gt; +    m_responseHeaderFields = response.headerFields();
&gt; +    m_webSocketChallengeResponse.set(new WebSocketHandshakeResponse::ChallengeResponse(response.challengeResponse()));
&gt; +    m_changes.set(ResponseChange);
&gt; +    m_changes.set(TypeChange);
&gt; +}
&gt; +#endif // ENABLE(WEB_SOCKETS)
&gt; +
&gt;  static PassRefPtr&lt;InspectorObject&gt; buildHeadersObject(const HTTPHeaderMap&amp; headers)
&gt;  {
&gt;      RefPtr&lt;InspectorObject&gt; object = InspectorObject::create();
&gt; @@ -183,8 +246,10 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
&gt;      RefPtr&lt;InspectorObject&gt; jsonObject = InspectorObject::create();
&gt;      jsonObject-&gt;setNumber(&quot;id&quot;, m_identifier);
&gt;      if (m_changes.hasChange(RequestChange)) {
&gt; +        if (m_frame)
&gt; +            m_documentURL = m_frame-&gt;document()-&gt;url();
&gt;          jsonObject-&gt;setString(&quot;url&quot;, m_requestURL.string());
&gt; -        jsonObject-&gt;setString(&quot;documentURL&quot;, m_frame-&gt;document()-&gt;url().string());
&gt; +        jsonObject-&gt;setString(&quot;documentURL&quot;, m_documentURL.string());
&gt;          jsonObject-&gt;setString(&quot;host&quot;, m_requestURL.host());
&gt;          jsonObject-&gt;setString(&quot;path&quot;, m_requestURL.path());
&gt;          jsonObject-&gt;setString(&quot;lastPathComponent&quot;, m_requestURL.lastPathComponent());
&gt; @@ -194,6 +259,10 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
&gt;          jsonObject-&gt;setString(&quot;requestMethod&quot;, m_requestMethod);
&gt;          jsonObject-&gt;setString(&quot;requestFormData&quot;, m_requestFormData);
&gt;          jsonObject-&gt;setBool(&quot;didRequestChange&quot;, true);
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +        if (m_webSocketRequestKey3)
&gt; +            jsonObject-&gt;setString(&quot;webSocketRequestKey3&quot;, createReadableStringFromBinary(m_webSocketRequestKey3-&gt;value, sizeof(m_webSocketRequestKey3-&gt;value)));
&gt; +#endif
&gt;      }
&gt;  
&gt;      if (m_changes.hasChange(ResponseChange)) {
&gt; @@ -209,6 +278,10 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
&gt;          jsonObject-&gt;setBool(&quot;cached&quot;, m_cached);
&gt;          if (m_loadTiming &amp;&amp; !m_cached)
&gt;              jsonObject-&gt;setObject(&quot;timing&quot;, buildObjectForTiming(m_loadTiming.get()));
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +        if (m_webSocketChallengeResponse)
&gt; +            jsonObject-&gt;setString(&quot;webSocketChallengeResponse&quot;, createReadableStringFromBinary(m_webSocketChallengeResponse-&gt;value, sizeof(m_webSocketChallengeResponse-&gt;value)));
&gt; +#endif
&gt;          jsonObject-&gt;setBool(&quot;didResponseChange&quot;, true);
&gt;      }
&gt;  
&gt; @@ -267,6 +340,8 @@ CachedResource* InspectorResource::cachedResource() const
&gt;      // Try hard to find a corresponding CachedResource. During preloading, DocLoader may not have the resource in document resources set yet,
&gt;      // but Inspector will already try to fetch data that is only available via CachedResource (and it won&apos;t update once the resource is added,
&gt;      // because m_changes will not have the appropriate bits set).
&gt; +    if (!m_frame)
&gt; +        return 0;
&gt;      const String&amp; url = m_requestURL.string();
&gt;      CachedResource* cachedResource = m_frame-&gt;document()-&gt;docLoader()-&gt;cachedResource(url);
&gt;      if (!cachedResource)
&gt; @@ -303,6 +378,12 @@ InspectorResource::Type InspectorResource::type() const
&gt;      if (!m_overrideContent.isNull())
&gt;          return m_overrideContentType;
&gt;  
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +    if (m_isWebSocket)
&gt; +        return WebSocket;
&gt; +#endif
&gt; +
&gt; +    ASSERT(m_loader);
&gt;      if (equalIgnoringFragmentIdentifier(m_requestURL, m_loader-&gt;requestURL())) {
&gt;          InspectorResource::Type resourceType = cachedResourceType();
&gt;          if (resourceType == Other)
&gt; @@ -342,7 +423,7 @@ String InspectorResource::sourceString() const
&gt;  
&gt;  PassRefPtr&lt;SharedBuffer&gt; InspectorResource::resourceData(String* textEncodingName) const
&gt;  {
&gt; -    if (equalIgnoringFragmentIdentifier(m_requestURL, m_loader-&gt;requestURL())) {
&gt; +    if (m_loader &amp;&amp; equalIgnoringFragmentIdentifier(m_requestURL, m_loader-&gt;requestURL())) {
&gt;          *textEncodingName = m_frame-&gt;document()-&gt;inputEncoding();
&gt;          return m_loader-&gt;mainResourceData();
&gt;      }
&gt; diff --git a/WebCore/inspector/InspectorResource.h b/WebCore/inspector/InspectorResource.h
&gt; index 4004142c2374cce64ee58714bae04a4ce43faa46..3fd5a69b9d8cb9b0e8399d4ff46abd842201b7c1 100644
&gt; --- a/WebCore/inspector/InspectorResource.h
&gt; +++ b/WebCore/inspector/InspectorResource.h
&gt; @@ -34,6 +34,8 @@
&gt;  #include &quot;HTTPHeaderMap.h&quot;
&gt;  #include &quot;KURL.h&quot;
&gt;  #include &quot;ScriptString.h&quot;
&gt; +#include &quot;WebSocketHandshakeRequest.h&quot;
&gt; +#include &quot;WebSocketHandshakeResponse.h&quot;
&gt;  
&gt;  #include &lt;wtf/CurrentTime.h&gt;
&gt;  #include &lt;wtf/OwnPtr.h&gt;
&gt; @@ -51,6 +53,11 @@ namespace WebCore {
&gt;      class ResourceRequest;
&gt;      class ResourceResponse;
&gt;  
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +    class WebSocketHandshakeRequest;
&gt; +    class WebSocketHandshakeResponse;
&gt; +#endif
&gt; +
&gt;      class InspectorResource : public RefCounted&lt;InspectorResource&gt; {
&gt;      public:
&gt;  
&gt; @@ -63,16 +70,19 @@ namespace WebCore {
&gt;              Script,
&gt;              XHR,
&gt;              Media,
&gt; +            WebSocket,
&gt;              Other
&gt;          };
&gt;  
&gt; -        static PassRefPtr&lt;InspectorResource&gt; create(unsigned long identifier, DocumentLoader* loader, const KURL&amp; requestURL)
&gt; -        {
&gt; -            return adoptRef(new InspectorResource(identifier, loader, requestURL));
&gt; -        }
&gt; +        static PassRefPtr&lt;InspectorResource&gt; create(unsigned long identifier, DocumentLoader* loader, const KURL&amp; requestURL);
&gt;  
&gt;          static PassRefPtr&lt;InspectorResource&gt; createCached(unsigned long identifier, DocumentLoader*, const CachedResource*);
&gt;  
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +        // WebSocket resource doesn&apos;t have its loader. For WebSocket resources, m_loader and m_frame will become null.
&gt; +        static PassRefPtr&lt;InspectorResource&gt; createWebSocket(unsigned long identifier, const KURL&amp; requestURL, const KURL&amp; documentURL);
&gt; +#endif
&gt; +
&gt;          ~InspectorResource();
&gt;  
&gt;          PassRefPtr&lt;InspectorResource&gt; appendRedirect(unsigned long identifier, const KURL&amp; redirectURL);
&gt; @@ -82,6 +92,11 @@ namespace WebCore {
&gt;          void updateRequest(const ResourceRequest&amp;);
&gt;          void updateResponse(const ResourceResponse&amp;);
&gt;  
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +        void updateWebSocketRequest(const WebSocketHandshakeRequest&amp;);
&gt; +        void updateWebSocketResponse(const WebSocketHandshakeResponse&amp;);
&gt; +#endif
&gt; +
&gt;          void setOverrideContent(const ScriptString&amp; data, Type);
&gt;  
&gt;          String sourceString() const;
&gt; @@ -149,10 +164,15 @@ namespace WebCore {
&gt;          Type cachedResourceType() const;
&gt;          CachedResource* cachedResource() const;
&gt;  
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +        void markWebSocket() { m_isWebSocket = true; }
&gt; +#endif
&gt; +
&gt;          unsigned long m_identifier;
&gt;          RefPtr&lt;DocumentLoader&gt; m_loader;
&gt;          RefPtr&lt;Frame&gt; m_frame;
&gt;          KURL m_requestURL;
&gt; +        KURL m_documentURL;
&gt;          HTTPHeaderMap m_requestHeaderFields;
&gt;          HTTPHeaderMap m_responseHeaderFields;
&gt;          String m_mimeType;
&gt; @@ -179,6 +199,15 @@ namespace WebCore {
&gt;          String m_requestMethod;
&gt;          String m_requestFormData;
&gt;          Vector&lt;RefPtr&lt;InspectorResource&gt; &gt; m_redirects;
&gt; +
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +        bool m_isWebSocket;
&gt; +
&gt; +        // The following fields are not used for resources other than WebSocket.
&gt; +        // We allocate them dynamically to reduce memory consumption for regular resources.
&gt; +        OwnPtr&lt;WebSocketHandshakeRequest::Key3&gt; m_webSocketRequestKey3;
&gt; +        OwnPtr&lt;WebSocketHandshakeResponse::ChallengeResponse&gt; m_webSocketChallengeResponse;
&gt; +#endif
&gt;      };
&gt;  
&gt;  } // namespace WebCore
&gt; diff --git a/WebCore/inspector/front-end/Resource.js b/WebCore/inspector/front-end/Resource.js
&gt; index 06a610d0962da838f16774dffb9620a687b11c1f..cedded357036010f311327d1c226082095fe90f0 100644
&gt; --- a/WebCore/inspector/front-end/Resource.js
&gt; +++ b/WebCore/inspector/front-end/Resource.js
&gt; @@ -45,7 +45,8 @@ WebInspector.Resource.Type = {
&gt;      Script:     4,
&gt;      XHR:        5,
&gt;      Media:      6,
&gt; -    Other:      7,
&gt; +    WebSocket:  7,
&gt; +    Other:      8,
&gt;  
&gt;      isTextType: function(type)
&gt;      {
&gt; @@ -67,6 +68,8 @@ WebInspector.Resource.Type = {
&gt;                  return WebInspector.UIString(&quot;script&quot;);
&gt;              case this.XHR:
&gt;                  return WebInspector.UIString(&quot;XHR&quot;);
&gt; +            case this.WebSocket:
&gt; +                return WebInspector.UIString(&quot;WebSocket&quot;);
&gt;              case this.Other:
&gt;              default:
&gt;                  return WebInspector.UIString(&quot;other&quot;);
&gt; @@ -363,6 +366,9 @@ WebInspector.Resource.prototype = {
&gt;              case WebInspector.Resource.Type.XHR:
&gt;                  this.category = WebInspector.resourceCategories.xhr;
&gt;                  break;
&gt; +            case WebInspector.Resource.Type.WebSocket:
&gt; +                this.category = WebInspector.resourceCategories.websocket;
&gt; +                break;
&gt;              case WebInspector.Resource.Type.Other:
&gt;              default:
&gt;                  this.category = WebInspector.resourceCategories.other;
&gt; @@ -575,7 +581,8 @@ WebInspector.Resource.prototype = {
&gt;  
&gt;          if (typeof this.type === &quot;undefined&quot;
&gt;           || this.type === WebInspector.Resource.Type.Other
&gt; -         || this.type === WebInspector.Resource.Type.XHR)
&gt; +         || this.type === WebInspector.Resource.Type.XHR
&gt; +         || this.type === WebInspector.Resource.Type.WebSocket)
&gt;              return true;
&gt;  
&gt;          if (this.mimeType in WebInspector.MIMETypes)
&gt; diff --git a/WebCore/inspector/front-end/ResourceView.js b/WebCore/inspector/front-end/ResourceView.js
&gt; index 7ce09b6a64ed904f1bd74b20265267648f86048b..1c2574f72eb47024697e60503249f1ed8ebb9619 100644
&gt; --- a/WebCore/inspector/front-end/ResourceView.js
&gt; +++ b/WebCore/inspector/front-end/ResourceView.js
&gt; @@ -279,13 +279,19 @@ WebInspector.ResourceView.prototype = {
&gt;  
&gt;      _refreshRequestHeaders: function()
&gt;      {
&gt; -        this._refreshHeaders(WebInspector.UIString(&quot;Request Headers&quot;), this.resource.sortedRequestHeaders, this.requestHeadersTreeElement);
&gt; +        var additionalRow = null;
&gt; +        if (typeof this.resource.webSocketRequestKey3 !== &quot;undefined&quot;)
&gt; +            additionalRow = {header: &quot;(Key3)&quot;, value: this.resource.webSocketRequestKey3};
&gt; +        this._refreshHeaders(WebInspector.UIString(&quot;Request Headers&quot;), this.resource.sortedRequestHeaders, additionalRow, this.requestHeadersTreeElement);
&gt;          this._refreshFormData();
&gt;      },
&gt;  
&gt;      _refreshResponseHeaders: function()
&gt;      {
&gt; -        this._refreshHeaders(WebInspector.UIString(&quot;Response Headers&quot;), this.resource.sortedResponseHeaders, this.responseHeadersTreeElement);
&gt; +        var additionalRow = null;
&gt; +        if (typeof this.resource.webSocketChallengeResponse !== &quot;undefined&quot;)
&gt; +            additionalRow = {header: &quot;(Challenge Response)&quot;, value: this.resource.webSocketChallengeResponse};
&gt; +        this._refreshHeaders(WebInspector.UIString(&quot;Response Headers&quot;), this.resource.sortedResponseHeaders, additionalRow, this.responseHeadersTreeElement);
&gt;      },
&gt;  
&gt;      _refreshHTTPInformation: function()
&gt; @@ -316,7 +322,7 @@ WebInspector.ResourceView.prototype = {
&gt;          }
&gt;      },
&gt;      
&gt; -    _refreshHeaders: function(title, headers, headersTreeElement)
&gt; +    _refreshHeaders: function(title, headers, additionalRow, headersTreeElement)
&gt;      {
&gt;          headersTreeElement.removeChildren();
&gt;  
&gt; @@ -333,6 +339,15 @@ WebInspector.ResourceView.prototype = {
&gt;              headerTreeElement.selectable = false;
&gt;              headersTreeElement.appendChild(headerTreeElement);
&gt;          }
&gt; +
&gt; +        if (additionalRow) {
&gt; +            var title = &quot;&lt;div class=\&quot;header-name\&quot;&gt;&quot; + additionalRow.header.escapeHTML() + &quot;:&lt;/div&gt;&quot;;
&gt; +            title += &quot;&lt;div class=\&quot;header-value source-code\&quot;&gt;&quot; + additionalRow.value.escapeHTML() + &quot;&lt;/div&gt;&quot;
&gt; +
&gt; +            var headerTreeElement = new TreeElement(title, null, false);
&gt; +            headerTreeElement.selectable = false;
&gt; +            headersTreeElement.appendChild(headerTreeElement);
&gt; +        }
&gt;      }
&gt;  }
&gt;  
&gt; diff --git a/WebCore/inspector/front-end/inspector.css b/WebCore/inspector/front-end/inspector.css
&gt; index 431981652638b17406fec463cb7d163dfe540c92..28234183676608656aea5c04a7088968b2c18309 100644
&gt; --- a/WebCore/inspector/front-end/inspector.css
&gt; +++ b/WebCore/inspector/front-end/inspector.css
&gt; @@ -2835,7 +2835,8 @@ button.enable-toggle-status-bar-item.toggled-on .glyph {
&gt;  }
&gt;  
&gt;  .resources-category-documents, .resources-category-stylesheets, .resources-category-images,
&gt; -.resources-category-scripts, .resources-category-xhr, .resources-category-fonts, .resources-category-other {
&gt; +.resources-category-scripts, .resources-category-xhr, .resources-category-fonts,
&gt; +.resources-category-websockets, .resources-category-other {
&gt;      display: none;
&gt;  }
&gt;  
&gt; @@ -2845,6 +2846,7 @@ button.enable-toggle-status-bar-item.toggled-on .glyph {
&gt;  .filter-all .resources-category-scripts, .filter-scripts .resources-category-scripts,
&gt;  .filter-all .resources-category-xhr, .filter-xhr .resources-category-xhr,
&gt;  .filter-all .resources-category-fonts, .filter-fonts .resources-category-fonts,
&gt; +.filter-all .resources-category-websockets, .filter-websockets .resources-category-websockets,
&gt;  .filter-all .resources-category-other, .filter-other .resources-category-other,
&gt;  .resource-sidebar-tree-item.selected {
&gt;      display: list-item;
&gt; @@ -2920,6 +2922,15 @@ button.enable-toggle-status-bar-item.toggled-on .glyph {
&gt;      -webkit-border-image: url(Images/timelineHollowPillYellow.png) 6 7 6 7;
&gt;  }
&gt;  
&gt; +/* FIXME: Create bar images for WebSocket. */
&gt; +.resources-category-websockets .resources-graph-bar {
&gt; +    -webkit-border-image: url(Images/timelinePillGray.png) 6 7 6 7;
&gt; +}
&gt; +
&gt; +.resources-category-websockets.resource-cached .resources-graph-bar {
&gt; +   -webkit-border-image: url(Images/timelineHollowPillGray.png) 6 7 6 7;
&gt; +}
&gt; +
&gt;  #resource-views {
&gt;      position: absolute;
&gt;      top: 23px;
&gt; diff --git a/WebCore/inspector/front-end/inspector.js b/WebCore/inspector/front-end/inspector.js
&gt; index db89e20e25fb90c5f894ac358dbebc4ce4a3bd0f..12280d34d827c69e08f5e56f10976718c28b5f79 100644
&gt; --- a/WebCore/inspector/front-end/inspector.js
&gt; +++ b/WebCore/inspector/front-end/inspector.js
&gt; @@ -515,6 +515,7 @@ WebInspector.doLoadedDone = function()
&gt;          scripts: new WebInspector.ResourceCategory(&quot;scripts&quot;, WebInspector.UIString(&quot;Scripts&quot;), &quot;rgb(255,121,0)&quot;),
&gt;          xhr: new WebInspector.ResourceCategory(&quot;xhr&quot;, WebInspector.UIString(&quot;XHR&quot;), &quot;rgb(231,231,10)&quot;),
&gt;          fonts: new WebInspector.ResourceCategory(&quot;fonts&quot;, WebInspector.UIString(&quot;Fonts&quot;), &quot;rgb(255,82,62)&quot;),
&gt; +        websocket: new WebInspector.ResourceCategory(&quot;websockets&quot;, WebInspector.UIString(&quot;WebSocket&quot;), &quot;rgb(186,186,186)&quot;), // FIXME: Decide the color.
&gt;          other: new WebInspector.ResourceCategory(&quot;other&quot;, WebInspector.UIString(&quot;Other&quot;), &quot;rgb(186,186,186)&quot;)
&gt;      };
&gt;  
&gt; @@ -1219,6 +1220,8 @@ WebInspector.updateResource = function(payload)
&gt;          resource.requestMethod = payload.requestMethod;
&gt;          resource.requestFormData = payload.requestFormData;
&gt;          resource.documentURL = payload.documentURL;
&gt; +        if (typeof payload.webSocketRequestKey3 !== &quot;undefined&quot;)
&gt; +            resource.webSocketRequestKey3 = payload.webSocketRequestKey3;
&gt;  
&gt;          if (resource.mainResource)
&gt;              this.mainResource = resource;
&gt; @@ -1243,6 +1246,8 @@ WebInspector.updateResource = function(payload)
&gt;          resource.connectionReused = payload.connectionReused;
&gt;          resource.timing = payload.timing;
&gt;          resource.cached = payload.cached;
&gt; +        if (typeof payload.webSocketChallengeResponse !== &quot;undefined&quot;)
&gt; +            resource.webSocketChallengeResponse = payload.webSocketChallengeResponse;
&gt;      }
&gt;  
&gt;      if (payload.didTypeChange) {
&gt; diff --git a/WebCore/websockets/WebSocketChannel.cpp b/WebCore/websockets/WebSocketChannel.cpp
&gt; index 54be16a495be1a8c3224ca363d627dcf3dc0cc92..d58b902ab5f10e43cfbd8daacb8c4ce124c9b5ed 100644
&gt; --- a/WebCore/websockets/WebSocketChannel.cpp
&gt; +++ b/WebCore/websockets/WebSocketChannel.cpp
&gt; @@ -36,8 +36,11 @@
&gt;  
&gt;  #include &quot;CookieJar.h&quot;
&gt;  #include &quot;Document.h&quot;
&gt; +#include &quot;InspectorController.h&quot;
&gt;  #include &quot;Logging.h&quot;
&gt; +#include &quot;Page.h&quot;
&gt;  #include &quot;PlatformString.h&quot;
&gt; +#include &quot;ProgressTracker.h&quot;
&gt;  #include &quot;ScriptExecutionContext.h&quot;
&gt;  #include &quot;SocketStreamError.h&quot;
&gt;  #include &quot;SocketStreamHandle.h&quot;
&gt; @@ -63,7 +66,14 @@ WebSocketChannel::WebSocketChannel(ScriptExecutionContext* context, WebSocketCha
&gt;      , m_closed(false)
&gt;      , m_shouldDiscardReceivedData(false)
&gt;      , m_unhandledBufferedAmount(0)
&gt; +#if ENABLE(INSPECTOR)
&gt; +    , m_identifier(0)
&gt; +#endif
&gt;  {
&gt; +#if ENABLE(INSPECTOR)
&gt; +    if (InspectorController* controller = m_context-&gt;inspectorController())
&gt; +        controller-&gt;didCreateWebSocket(identifier(), url, m_context-&gt;url());
&gt; +#endif
&gt;  }
&gt;  
&gt;  WebSocketChannel::~WebSocketChannel()
&gt; @@ -112,6 +122,11 @@ void WebSocketChannel::close()
&gt;  void WebSocketChannel::disconnect()
&gt;  {
&gt;      LOG(Network, &quot;WebSocketChannel %p disconnect&quot;, this);
&gt; +#if ENABLE(INSPECTOR)
&gt; +    if (m_context)
&gt; +        if (InspectorController* controller = m_context-&gt;inspectorController())
&gt; +            controller-&gt;didCloseWebSocket(identifier());
&gt; +#endif
&gt;      m_handshake.clearScriptExecutionContext();
&gt;      m_client = 0;
&gt;      m_context = 0;
&gt; @@ -137,6 +152,10 @@ void WebSocketChannel::didOpen(SocketStreamHandle* handle)
&gt;      ASSERT(handle == m_handle);
&gt;      if (!m_context)
&gt;          return;
&gt; +#if ENABLE(INSPECTOR)
&gt; +    if (InspectorController* controller = m_context-&gt;inspectorController())
&gt; +        controller-&gt;willSendWebSocketHandshakeRequest(identifier(), m_handshake.clientHandshakeRequest());
&gt; +#endif
&gt;      const CString&amp; handshakeMessage = m_handshake.clientHandshakeMessage();
&gt;      if (!handle-&gt;send(handshakeMessage.data(), handshakeMessage.length())) {
&gt;          m_context-&gt;addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, &quot;Error sending handshake message.&quot;, 0, m_handshake.clientOrigin());
&gt; @@ -147,6 +166,11 @@ void WebSocketChannel::didOpen(SocketStreamHandle* handle)
&gt;  void WebSocketChannel::didClose(SocketStreamHandle* handle)
&gt;  {
&gt;      LOG(Network, &quot;WebSocketChannel %p didClose&quot;, this);
&gt; +#if ENABLE(INSPECTOR)
&gt; +    if (m_context)
&gt; +        if (InspectorController* controller = m_context-&gt;inspectorController())
&gt; +            controller-&gt;didCloseWebSocket(identifier());
&gt; +#endif
&gt;      ASSERT_UNUSED(handle, handle == m_handle || !m_handle);
&gt;      m_closed = true;
&gt;      if (m_handle) {
&gt; @@ -250,6 +274,10 @@ bool WebSocketChannel::processBuffer()
&gt;          if (headerLength &lt;= 0)
&gt;              return false;
&gt;          if (m_handshake.mode() == WebSocketHandshake::Connected) {
&gt; +#if ENABLE(INSPECTOR)
&gt; +            if (InspectorController* controller = m_context-&gt;inspectorController())
&gt; +                controller-&gt;didReceiveWebSocketHandshakeResponse(identifier(), m_handshake.serverHandshakeResponse());
&gt; +#endif
&gt;              if (!m_handshake.serverSetCookie().isEmpty()) {
&gt;                  if (m_context-&gt;isDocument()) {
&gt;                      Document* document = static_cast&lt;Document*&gt;(m_context);
&gt; @@ -367,6 +395,21 @@ void WebSocketChannel::resumeTimerFired(Timer&lt;WebSocketChannel&gt;* timer)
&gt;          didClose(m_handle.get());
&gt;  }
&gt;  
&gt; +#if ENABLE(INSPECTOR)
&gt; +unsigned long WebSocketChannel::identifier()
&gt; +{
&gt; +    if (m_identifier)
&gt; +        return m_identifier;
&gt; +
&gt; +    if (InspectorController* controller = m_context-&gt;inspectorController())
&gt; +        if (Page* page = controller-&gt;inspectedPage())
&gt; +            m_identifier = page-&gt;progress()-&gt;createUniqueIdentifier();
&gt; +
&gt; +    ASSERT(m_identifier);
&gt; +    return m_identifier;
&gt; +}
&gt; +#endif // ENABLE(INSPECTOR)
&gt; +
&gt;  }  // namespace WebCore
&gt;  
&gt;  #endif  // ENABLE(WEB_SOCKETS)
&gt; diff --git a/WebCore/websockets/WebSocketChannel.h b/WebCore/websockets/WebSocketChannel.h
&gt; index 43d431a0f899e00309e6a3059eb64c298ce20163..a08e6bb2e6ac8675886787cbf3b6a457d25cc1f8 100644
&gt; --- a/WebCore/websockets/WebSocketChannel.h
&gt; +++ b/WebCore/websockets/WebSocketChannel.h
&gt; @@ -84,6 +84,10 @@ namespace WebCore {
&gt;          bool processBuffer();
&gt;          void resumeTimerFired(Timer&lt;WebSocketChannel&gt;* timer);
&gt;  
&gt; +#if ENABLE(INSPECTOR)
&gt; +        unsigned long identifier();
&gt; +#endif
&gt; +
&gt;          ScriptExecutionContext* m_context;
&gt;          WebSocketChannelClient* m_client;
&gt;          WebSocketHandshake m_handshake;
&gt; @@ -96,6 +100,10 @@ namespace WebCore {
&gt;          bool m_closed;
&gt;          bool m_shouldDiscardReceivedData;
&gt;          unsigned long m_unhandledBufferedAmount;
&gt; +
&gt; +#if ENABLE(INSPECTOR)
&gt; +        unsigned long m_identifier;
&gt; +#endif
&gt;      };
&gt;  
&gt;  } // namespace WebCore

WebCore/inspector/InspectorResource.cpp:145
 +      RefPtr&lt;InspectorResource&gt; resource = adoptRef(new InspectorResource(identifier, 0, requestURL));
I think you don&apos;t need adoptRef here. (cf. http://webkit.org/coding/RefPtr.html Mixing RefPtr and PassRefPtr)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270346</commentid>
    <comment_count>37</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-08-27 00:03:04 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; WebCore/inspector/InspectorResource.cpp:145
&gt;  +      RefPtr&lt;InspectorResource&gt; resource = adoptRef(new InspectorResource(identifier, 0, requestURL));
&gt; I think you don&apos;t need adoptRef here. (cf. http://webkit.org/coding/RefPtr.html Mixing RefPtr and PassRefPtr)

adoptRef has recently become necessary. If we omit adoptRef here, assertion at RefCounted.h:37 (!m_adoptionIsRequired) triggers.

I guess we should update the documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270355</commentid>
    <comment_count>38</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-08-27 00:34:22 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; I guess we should update the documentation.

Filed bug 44752.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270358</commentid>
    <comment_count>39</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-08-27 00:41:34 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; &gt; I guess we should update the documentation.
&gt; 
&gt; Filed bug 44752.

OK. LTGM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274913</commentid>
    <comment_count>40</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-09-07 02:04:33 -0700</bug_when>
    <thetext>Today I tried to land this patch again, but I&apos;ve found the following test regression in inspector/extensions-events.html.

--- /tmp/layout-test-results/inspector/extensions-events-expected.txt	2010-09-07 17:24:22.000000000 +0900
+++ /tmp/layout-test-results/inspector/extensions-events-actual.txt	2010-09-07 17:24:22.000000000 +0900
@@ -9,7 +9,7 @@
 {
     0 : {
         id : &lt;number&gt;
-        type : 7
+        type : 8
         har : &lt;object&gt;
     }
 }

It seems this dump is local variable at  WebInspector.ExtensionServer._onGetResources (ExtensionServer.js:264, where resourceWrapper function is mapped over WebInspector.resources), and the difference is caused because new resource type is added.

I think it is okay to change the baseline for this test. I will upload a patch for review to make sure this change is right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274919</commentid>
    <comment_count>41</comment_count>
      <attachid>66696</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-09-07 02:17:38 -0700</bug_when>
    <thetext>Created attachment 66696
Patch v8 (Test expectation update)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274922</commentid>
    <comment_count>42</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-09-07 02:25:30 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; Today I tried to land this patch again, but I&apos;ve found the following test regression in inspector/extensions-events.html.
&gt; 
&gt; --- /tmp/layout-test-results/inspector/extensions-events-expected.txt    2010-09-07 17:24:22.000000000 +0900
&gt; +++ /tmp/layout-test-results/inspector/extensions-events-actual.txt    2010-09-07 17:24:22.000000000 +0900
&gt; @@ -9,7 +9,7 @@
&gt;  {
&gt;      0 : {
&gt;          id : &lt;number&gt;
&gt; -        type : 7
&gt; +        type : 8
&gt;          har : &lt;object&gt;
&gt;      }
&gt;  }
&gt; 

It&apos;s ok to rebaseline the test for now, though this highlights the need for us to provide some abstraction in the extensions API from resource type constants used in front-end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278028</commentid>
    <comment_count>43</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-09-13 00:25:27 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; It seems this dump is local variable at  WebInspector.ExtensionServer._onGetResources (ExtensionServer.js:264, where resourceWrapper function is mapped over WebInspector.resources), and the difference is caused because new resource type is added.
&gt; 
&gt; I think it is okay to change the baseline for this test. I will upload a patch for review to make sure this change is right.

This problem was resolved, thus I think I can land the without baseline changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278063</commentid>
    <comment_count>44</comment_count>
      <attachid>67379</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-09-13 01:51:13 -0700</bug_when>
    <thetext>Created attachment 67379
Patch v9 (Update new test expectation)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278067</commentid>
    <comment_count>45</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-09-13 02:02:32 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; Created an attachment (id=67379) [details]
&gt; Patch v9 (Update new test expectation)

It turned out that I need to update one test expectation:
  * inspector/extensions-api-expected.txt

I think this is pretty obvious, but I want to make sure this is okay, so I&apos;m requesting a review for this.

Pavel, could you r+ this patch if you are okay with this? Diffs under WebCore/ has not changed since you r+&apos;ed the previous patch (except for a few updates needed to merge with latest Inspector code).

I&apos;m sorry that it took too long to land this patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278090</commentid>
    <comment_count>46</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-09-13 03:04:23 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; Created an attachment (id=67379) [details]
&gt; Patch v9 (Update new test expectation)

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278091</commentid>
    <comment_count>47</comment_count>
      <attachid>67379</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-13 03:06:44 -0700</bug_when>
    <thetext>Comment on attachment 67379
Patch v9 (Update new test expectation)

This has been up in the air for too long, so let us land now. However, please consider extracting web resource into a separate class to get rid of multiple conditions and ifdefs. We probably should talk about how to approach it in a way that would be consistent with the rest of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278739</commentid>
    <comment_count>48</comment_count>
      <attachid>67379</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-13 23:28:02 -0700</bug_when>
    <thetext>Comment on attachment 67379
Patch v9 (Update new test expectation)

Clearing flags on attachment: 67379

Committed r67447: &lt;http://trac.webkit.org/changeset/67447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278740</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-13 23:28:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278741</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-13 23:33:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67447 might have broken Qt Linux Release minimal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278745</commentid>
    <comment_count>51</comment_count>
      <attachid>67522</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-09-13 23:47:31 -0700</bug_when>
    <thetext>Created attachment 67522
Fix Qt builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278746</commentid>
    <comment_count>52</comment_count>
      <attachid>67522</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-13 23:48:31 -0700</bug_when>
    <thetext>Comment on attachment 67522
Fix Qt builds

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278748</commentid>
    <comment_count>53</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-13 23:57:23 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; (From update of attachment 67522 [details])
&gt; ok.

It was landed as r67448.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>58976</attachid>
            <date>2010-06-17 03:27:18 -0700</date>
            <delta_ts>2010-06-17 03:27:18 -0700</delta_ts>
            <desc>Screenshot of prototype v1</desc>
            <filename>resources.png</filename>
            <type>image/png</type>
            <size>158309</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">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
V102fPh3ZmsqIYQgGDC0hC5NUJCShCgkCCiiqFTxoaggkKBSHisSUAlNlNeOhS7FR4hSQgAVIUQR
GxCkx4BSAkm2zpzz/jFhsz1LICA31/WZP5LZM6fNhL35zs7ZLVNKpVKpKIrqXlX3sHpPtz157LHH
OrY7f/78jsW67Y//XAMAr7FXM/atxNjX14j576ef3v4dO2ZZtvrqI8vt7etvuOEj//zn6quPTCnt
vOvul13yk5aW5p132X2/DxxQU1v729tvfWrhwgMO/FhK6fJLfzr3rjtramr3/9BHUkq77j7xF1dc
mmXZ+z/44ZTSbrtPvOrKS/NKvv8BB6aUamvrRqy++rbb7/iH39+xzbbbd17z5Pfu1djY+P++ff4X
v3pmdWcaGxs77um2D5032tDQ0LFYt50BAPiv8kpi38oNfn39ZN/f/va36kd3H3nkkXHjxs2fP3/0
6NEPP/xwXV3dPffcc9BBBzU2Nj7wwAPz5s0rl8vVa+c9//zz11xzTW1t7d577z1u3LjW1tYbb7yx
KIrZs2fvs88+73znO5966qlrrrlmyJAhd91117777ltTU3PddddVL25YveTfokWLRo0a1W39TU1N
O+20080331zdq0ql0nFPtyU7b7e1tbVjsW7742UGALzGsqIopkyZcsxOgx57+IFH/t38kTNmDeRh
5fb2effc/cH9prySyzMXRfHDi39+0KFHeBpiu/++u/fdd9839CEsXLjwDf2TKfbf/r+++z9jRn3N
HXectsvstpNPdv7tv/1/LX3pI1tvM3Z4SuniB0bddNNN1Ts7D34bTpk2kPVUKpX58+efeuqpr3Dw
+9KXvrTHHnv0XP/8+fPXXnvt6s/qNjc3P/roo2uvvfbChQvHjh07aNCgRYsWPfHEE5VKZdSoUeus
s071B+uampqqV/AcNmzYE0888eyzz5ZKpbe85S2jR49esmTJk08+2dzcPHjw4HXXXXfw4MHPP//8
k08+WRTFmDFjRo4cef/992+wwQY1NTWPPfbY6quvnmVZx/rXWmutRx99NKW08cYbV/dq0KBBDz/8
cPWebnuyYMGCju2uscYaHYt125832+A3fPjwgw46yAAMAK+xaXtv2DH4vco/2feyxr6UUn19g+cD
AOB1sdLX7Fu5wa+2trbXLW600UYdW2lsbNxkk01SSquttlr1ztVWW221TtdT3myzzbrt25gxY8aM
GdPx1yFDhowfP77zAiNGjBgxYkTHXzu+2vGbTDqvv2Nnqn/ofE+3Pem83c6LddsfLzMA4DX2imLf
K7k8c9XQYcM8BwAAr4sB/jbejl/F+woHv4aGhgFuEQCAlbaysS/LGhsbP3/KF/7zn3+XStlKDZfF
mmuO3n6Hd3oOAABeFwP/yb66urrDDjus+ltoV25Dw4cP32CDDfykGwDAqraSsa9UKo1Zd73dJkxq
aWlZ6W03Nja+fZvtPAcAAK+Lgae3NdZYY/PNN29ra1vpbdXX148dO1bsAwBY1VY+9q0xas01Rq3p
DAIAvEENML1lWTZ06NDqL9B4DTYHAMArUesUAAC8ObmCHgBAPGIfAMCblB+1AwCIR+wDAHiTEvsA
AOLpHvuGvOKrsUBPw4YNe0Pv/+LFi9/Qh2D/7f/ru//19UWqqamvr294Pc6D82//38z7v0IHH3yw
KYVX10033eQkAMDrq+QUAAAAAEAMYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAA
BCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8A
AAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQ
Yh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAA
AEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2
AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAA
BCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8A
AAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQ
Yh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAA
AEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2
AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAA
BCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8A
AAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQ
Yh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAA
AEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2
AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAA
BCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8A
AAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQ
Yh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAA
AEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2
AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAA
BCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8A
AAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQ
Yh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAA
AEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2
AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAA
BCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8A
AAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQ
Yh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAA
AEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2
AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAA
BCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8A
AAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQ
Yh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAA
AEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2
AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAA
BCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8A
AAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQ
Yh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAA
AEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2
AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAA
BCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQYh8AAAAABCH2AQAAAEAQtU4B
AMCb03NLK04CAEAwfrIPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAg
CLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAA
AAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ
+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAA
AIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEP
AAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAg
CLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAA
AAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ
+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAA
AIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEP
AAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAgCLEPAAAAAIIQ+wAAAAAg
CLEPAAAAAIIQ+wAAAAAgiNpuf1/y7AInhVfX+PHj586d+0Y/igULFth/+2//V87UqSlNHXpPmppe
p/8UeP3Y/zfz/vfP4IfBDwDi6R77Nt9qy1W0pb/d9xcr73Xlm2y5XW3W5rX4JpdlWVEUne/5631/
2WSzTZ0ZAFYds5nBD4MfAPF0j31ZsSq/q1l5b4rC6/BNoVjR66BIKeu2mNcGAKuS2czgh8EPgHhq
e/u+s4omm8LKe1/5qjzt/BfNfP0+yVmWqkNfx2Kr9IUHAAY/gx8GPwBC6hH78lU4TVp5XwOl7+zk
Rfe5sCgKb/ACsEqZzQx+GPwAiMdP9r3+K0/e4CV1vMP7Gr3wAMDgZ/DD4AdASLU9vvH0/j1myl57
DXylN8ya1ftwk63KyWmlVv5CUzHzhrajJtWts3rpVV/5APd8WENqafGt/U3qiQf+tO74bXr9p1cU
RcqcIQBWJYOfwQ+DHwDh1PacQXofBbOX882nr3el+rj/m9/8Zkpp+vTpy0fMKVN6LjZx4sTOywx0
o317cGH+9V+1/2dx8fPflU+aWrcSR7TvzJaOP193YuPPf1e+4q5yz8U+tGPtx3au7Wfs6/+n9oui
yF/829UXXHDJLX9/pj2l0vB1t5n0seOO2muDwaXsFQ0FxeI7jtvrlHvT1mfMOv/dQ1/G0/3SAzvU
rbH5Xp/8wnGT16l/2a+W10OP/e+w9deuPODKA06tnpNdhr26B9L9WX74r3NP+8pZX/nfz2605Q6p
qF6jueuVmr3BC8Cq/Y5o8DP4GfwMfgBE0+NjvP2+k/nr3/y6/9Xt+d49+1pJnud9rjxLs2fPLlIx
/aTp/c0cWZ+719/K+3D3Q/k3r29vK6eU0u8frCyZXDOkIXslKy+yIpX6GBFKWX97vsL38SrP3nr6
8effOWjPr/3i8xNHPTfnzCNOvubME7Oxlx+/+aCBTOBFKlqemvvLH13yz0mnn7zD0E6nN0ullFIq
pSzr8gbjCkedZQ/c7ptzLtptSNvCWZ/90Bd++bUzNnv7+VNG16Q3wNuSw9793bl3Z1mWltx29O7T
51UPZGgqiqL5mZt+seycvMoH0nN+O+87329pabngoh+ce+EOyy7T3OkjHXmeu3YLAKs2ghj8DH4G
P4MfAOH0/Mm+/pYul8sD++bW1+TR++InnXRSlmW33HJLeult3l6HyzzP8zzve6x5GYf94MLlA98G
o0vHvKdhSH2eivSKVl6kg3auPWSX+pe95ys67anpwRvvbk1pvU3GjyqVs7V2O+3GuV/Ji7y1tXWA
O5aW3DPjxG/9KW27S9H1+iDFQJ/6Pp7ioq2lpbmmGLndHuPS7+772+0PN00ZPfQN8T83qaWlJaWU
tbQVnQ4kpZSGvPuiuXenlFpaWl7liavr2m779bVPPLEgpfTEEwtum3Xt7nu9P3V9MbhuCwCvwTdE
g5/Bz+Bn8AMgmJcX+wb6LfBlznx5JZ8+bXoq0i233JKKNH369HJ7+WUdRv9jWV6ka+ZWJm9ZGj4o
Syn96/n89GuXDXw7bFjz+X0aarK8n2+vA5/5Lr697Rd3V3p+Zf8dag7u49Mcy67F2//6a4auNSyl
RfPPPfrkF6cfe+C73lopNy/ft5bHb/z2md/5v78+W4zcYr/jTvvkxHXqU1ry2+OmnHJvGrX9xk3z
Wnca//jN96eU0h9P2eu4M244b5dh3Z6pF/9y+Ze/d9nN/xmz3+dmHLfr8PkXfPSoK59Z55Af/+QT
G9S3Pfz9Qw77yb9GHfDdS47ddFDW/SkuUipSpb29klIq1ZayrMjzyov3/uyMs35254LWbMSmU485
5bg912vIX/jzJV8/+9I7HluSpZqRm+515CnH7Tly7vFTT703bXr08WOvv3DWM2/b79Szjtt1zdqU
Ur8HtcWJp20669wr/1Eeu9f0r0+fvGbTfZee9c1Luqx5vYbixT9324e3NWap42cHitTrgaSU0uLf
Hrnrqfemrc+44fx3pzuqWzzh5E1mXXDV/c2j33Hg4bun2392+Z0LB22y3+e+Vt3dygv39ret3v5d
lJqf+emlV2Upqz73P730qgm7vrsYNKr7zGfqA2AVRxCDn8HP4GfwAyB47OvrfciBfLX/xZqamvp5
eJ7n06ZNSyndcsstRVFU/3z22WffeuutHctMmDChev/LWvkLzencX5f//Hjx0NPZSVNr8yKdM6v8
YnNKKe08ruaEvepS3l7p93D6Wfn/TR/c8ef29vaDd649bNeGnotVKpW+1tDU1NTW1tb/iS3qxx9y
zLtunHFn0zO//+Hnf3/5uL0+/skj9tl6VF1KKbU88MOTTr/2qS2n/ey84syDZ35pWsPaPzhqfGOe
l1JKaUnjoT+/bqsRaw55z6cnfXZe2u4bs7/zjlJTni+bRYpl233o5mePmHHsM0d9/dqvfmPry87Y
cfLOI6687l9zfv/UIWPf8tTv5/wrpRHv2mPd+rzHA1OR53n70sfv+M38lGq22G1sfZ5XXpx33qk/
uLNpu89f/rnasw86fca0hnV//InK97/wvd8uGvvpy361z3/O+9ix15x56uhx521QSimlf1z54EfP
On7hUd+49qszt7/89HePyPo/qAdmPXbU6TPajzz22lkX/nzq9nvc+L/f7b7m773/uR77cPGxmw16
aQ7reO80y4vlB5Iv+wV51U+45Hmep+oW//7Lfx7+9XMaPv0/P5/787OeOODcC7/1tk8efdm1M3/6
nu2P36xh8bx+t9Xlfx46XvANI7/7w590eZFkqcjzLMs6FmtqavIeLwCrlMHP4GfwM/gBEE/P30SW
93Grvv+Vr+jWz2Kp/8dWKu1FkWdZKpWy6j2lUtbt1vfDe195XuQX3VL+8+NFSunOh4rb769ceVd5
/tNFSmmHDUvTp9aUUvsADqrPPW9vb+24pZTnebnzPR23PC/3u/K0oh0ojZ76tSvOP2b3dWtSSksf
nHXB8R+ddvnDrSlPLQ9e/5uFKY3bc+cx6737PeNSWjDr+oda8pfeJRz7rs1GDhuWtTa3LvvMQvPS
Hs9XSmmTww/fedy79tg4pba/3PFIS/36E7cfktLjt97975an5s5+PKXB20waO6iXB/7x1Km77T5p
yiFnz6vf6sCvnrbHqFIltTx0y12LU9p44g5rrb3D5HEp/fvWmx5palrcklJ69KJpn/v+Izt9Z/Yf
/nDF/6xfVz388Yd/YrdxO00el1Lrvbc90rzCg1p/yn5bjR67zZiU0vMLnm9tWtJzzZXe9qGlr1ds
z6eg457qVzfe78DtR689bq2UUhp/0Ee3HT1mk7eklJ5b8Hw5Ty3/HPC2+rsVRdHba6Nwc3Nzc3N7
BbcVlzqDn8HP4Gfwc3Nzc3MLNvj1+AUdRe9Xpq2+z7T33vv0PzC+9O5ZXyvp77K3M2fOnDNnzsSJ
E6dNm1apVFJK06ZNP+mkz3Z+E7h6/8BXnqV08j71N/4l/+7s9nKevjenaG0vUkpvG5VNm1KXVyoD
vBJvX3u+//nLP3Xyi+Nqf3RH/qs/9fJW7d7blA7fpdTfoN3vmSmK1Naehm39kTMv3//R2y779gXf
u/1fbff97Ip/vO9zW+UvLnw+pTR4WF2WpxGDU0qLFi4qZ/my42ocXFfKi0r20mEWRZYXaflfl/1h
0NDaIk/DB6WUmhYtzbP6DSdt23DzHfNvvuuh0k0PpVS39R4bNuZF3uOB2379pnM2+uM5n/7ctf96
oWisreRFVlSW/mdxSun+b3xg929Ul37uyefq337UcRPuP+vWhQvuunLmXVeeO2bStDOm7VpdyeBh
dUWehjWmlJY+tyTP8hUc1NARDamcamqqZ27wVkd+ZuI/zpzddc297UO5lBdF9RA63jfNln90Ytl7
vR3PdZE6tjhkRH0qp5pSSikNHl5XlFNtTUopVfKU5ZUl/W+r0xO5/I9Ln3n0Uyd8/oUXXqz+dcSI
1S6cOWPwqLFFyvxONgBeMwY/g5/Bz+AHQDw9Psbb1+yRLR/pVqivleR9P/qcs2fOmTNn0qSJJ0yb
1l6pVDeX55WUV3ruxsvbaF6ZtGVprRENX726dWlrkVJaY2j2hf3rS6XK/q02ZWkAAAjuSURBVOeV
Lz66ZnBDttJH1H2Zvs5PlvW/hoFcMKdcqZQrNWvvfMiZW4w+4n1n/KP5xaZKKmpXW2dESouWPtdU
bi+eX5pSGrnuajWpWHbaSrXZS2NDkarjRG+XZl767NJye80LzSmloWsOKaXK4E3es2XNHff8/aof
v7ggpWyL944bUvR6TefW1mKNnT414/B7D/3R5V+56B0XT99uSDZ45NCUlmz2hRt+uPeoUkqpKIol
TU21e3/56qnH/+23c2698ReX3Pb4Lef/YPJ2e6SUUnrx34vb22uXb73I+j+oLrNQkRrW2fvLV0/5
TJc1v2PfnvuwtLm542FFbye56Pqlrudq+ZSYddl6KrIh/W9r+So6vQYGrTn2YwcecNH3flz960c/
/MHG0WPzImVdFysy/40CYBUy+Bn8DH4GPwDi6RH7ipWaSga2kr7uP3fmzNvmzJk4ceLxJ05rL1dS
Svu97309F9t9woTjTzzx5W70w+eXLz+udtO3ZsfuWX/erLa8SMe+t25oQ6W6fF70fcgDOS1dlzls
t9ojJvTyS9kq/b41nVLK+30jr2iZ//3Dj7z8qeG7n3LBCbuNfPaOOY+n1PDOqRsMKvLSBlP2WPO6
qx668XePbl78Zn5K6+37/vUbinzpshXmqciLIivqhzem1Nq2eHFbZXBtafkgU13swasu+8NG698y
P6XGbSeu11BUiqFbvmfT4p6/LrjnyZTS+D22GpbyvFg+cndcUiRPRVt7zdgPfmriFSfNvuG8K97/
3UPXHztp28Ybb3/g6hv+vtn6135q2i+ffevHvvOdSX/49McvfnzN/c75wTEfb/rdbf/v0WFrDSlV
V/LPyy/5w6bjZz+U0uB37PG2hiLPBnBQHXvS9ugPDvr4xY91XfPgXvbhoh8csWH9skNYfumWjqcg
FdVnoeNLRVF0/KK+zlvssvWiyAetYFt9/RuaMHX/63716wULn3rr2m+ZMHX/lKc8pa6/M88bvACs
WgY/g5/Bz+AHQPzYlxWVV77SvlbS1/2lLE2cOOHEE08ol9uyZfdkvS7Wz+6t4EtF2nnjUlNr7WPP
FJu/tdzpW36eFSt/RN2W+dGtlevv7WV1U7fODt2l38f2P1M3bHD0uV9MM398w5mH7ntGSrUjN33v
CZ85ftdRpbaUGjc7euZp5bO+feER/5OPfPuBM047ZGxj0dYxYGSpyFKRDdn8mBMn/HXGrd/80rWb
XbD/unXd5pBN99nwDzMvuLd24w984cQdR2TtWSoNe/vE8emvD6aU0gYTtlmtNhWpy/vrXdZfHrzF
4R9cZ/bFT1x2wc17fmOvnU4+5zON5/zogo8fmJXW2HzfU089YqMh+fizv9Iy4zvXnLDPtakYtuEe
x53yiXGNd6aUUho3ZfRvvnz2nxo2PfCLJ+ywWtY+wINatiN16x129ldazui65kGlwT33ob7zIRTd
znyndS5/+7a3r3bdeiqybPhOK9hWn//jdMwnDvnaWece9YmDs6JIpZTlKcu6LJb5rWwArEoGP4Of
wc/gB0DEGa8opkyZcsxOgx57+IFH/t188k/u6nW5D+z3gYGv9Oprr+5557y587Z7x3a9Ll9bU5tS
KleWXwalvr6Xt0nzSt55mQGu/MPfSpd/+qWpsVRKqZTn5Y4v/ejINLh+BYfTz8o772dbW1tNTU1N
9YoiXVUqlb7e4J03d97OO+/c0t7a/z6USqVBDY21tbUppaJI7eX2ltaW6uSapayxoaG+rj6l1Nre
1tLaUn3I8KHDUkqLly6pLlZfVz+oobFcqSxtXtp5zdXFWtvaGurr8zxvam6u5JWUUk37Iz8+/Mif
Lkxp/U9f/N0PrF2qpK4f5+m2/saGhob6hnK5vLS5KcuyxobG+rq6lFK5Umlpaa7keedDqFQqza0t
5Rdu//w+X/xj2vaMX583afX6cl5pbm7OizzLshUeVEpp2JChKaUXlyzuueZKpdLrPvTyDyDLquvp
OJCOrby4ZHGvW+y29epKBrKtXt+unX/fXRtvteOyAS8VnT8sMm/uvO22385/pABYaTMO3XGbscNT
Shc/MOqmm26q3mnwM/gZ/Ax+AMQe/Hp+jLf3a0X83/XXD3wDrW1tvd7f18rbypWXvuct09La3se6
+7yURd+XOi4+/K3lS3X6lVvLHjWwT2r0vvKu+5nl5by9nL/cPU/LL3vcp0peLGlu7nWdRUpNra1N
ra3dNvTCkiWd76n+friee9KxWMtLz1pRlJtbi/yxuX98OqVU2upDE0eVOj7JkfV8YPXO5ta25tbq
GrKiSE0tLU0tLZ13techdJz4tva2RUs67382gIPq+HPW28npfR96HcO6HUjnNfexxe7LDHRbvd25
4VbvypdNn6koqu/vZgN/YQDAK2HwM/gZ/Ax+AMRT22OK6H0Cal3RO5ADGm+yVfmj6X2s/OoT61di
PH1N9zylvMj/e14TxdJ7Tv/g/97TnhrW3HTCPp84+r0jS3nbsrnkVR1BOl0kJe988Zos6qBTrOhF
Vj0jxct4DACsivHJ4GfwM/gZ/AB44+oR+/JVOXy8Hitv7fK223/lnlffjvzvGfuH7Pi1WTd2Ova2
zmPaq7qhnWbcfGMvk82b8+rERcpS0X3Gc6FmAFYpg5/Bz+Bn8AMgnNqUUnt7e0qDqn8vpdKq25iV
9z3zeSnS2wvDpzkAeLUZ/Ax+GPwAiG3ZT/aVW5vqakojhtQ6I76183q+EADg1VO9SHNPBj+DHwY/
AAIPfllRFJMnT/74FotbWpqXtlaeX9q+aGnZOQIAeMN5+oXWoY01DXWl2lKpY+DLi/TTB5f/Nl6D
HwBA7MEvq14Z9lMH7LLj6MWVvGgrF+2V3CkDAHjDaWrN62tTqZSVsmzE4LrqnXc+PfTCK+/ovJjB
DwAg8OC37OMbDy5qTCm9a60ldTUppRqnDADgDWfE4O733Pn00OqY15nBDwAg8OC37Cf7qiZPnuxk
AQCE0fHp3Z4MfgAAIQe/LrEPAAAAAHjjKjkFAAAAABCD2AcAAAAAQYh9AAAAABCE2AcAAAAAQfx/
YspP+GYbYcsAAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59642</attachid>
            <date>2010-06-24 05:11:24 -0700</date>
            <delta_ts>2010-07-05 01:44:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40768-20100624211122.patch</filename>
            <type>text/plain</type>
            <size>27805</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjgxZTBiYmQyZTE5NDM3ZDJiMmUzNmY1NmRmYTMyZTQ4MTM4NTQzYy4uOGYzMWNiNjdiOWQ5OWE2
YzJiYTJjZmUzZmFmOGI0N2RkNjM0YmNkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMC0wNi0yNCAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViU29ja2V0IHJlc291cmNlIHR5cGUgdG8g
V2ViIEluc3BlY3Rvci4KKworICAgICAgICBXaGVuIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLCBhIGxpbmUgZm9yIHRoYXQgY29ubmVjdGlvbgorICAgICAgICB3aWxs
IGFwcGVhciBpbiBXZWIgSW5zcGVjdG9yJ3MgUmVzb3VyY2VzIHRhYi4gSWYgdGhlIHJlc291cmNl
IG5hbWUgaXMKKyAgICAgICAgY2xpY2tlZCwgdGhlIGRldGFpbHMgb2YgaGFuZHNoYWtlIHJlcXVl
c3QgYW5kIHJlc3BvbnNlIHdpbGwgYmUgc2hvd24uCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
V2ViU29ja2V0IGluIFJlc291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNzY4CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRSZXNvdXJjZSk6IFdlYlNvY2tldCByZXNvdXJjZSBkb2VzIG5vdAorICAgICAgICBoYXZlIGFu
IGFzc29jaWF0ZWQgbG9hZGVyLCB0aHVzIGZyYW1lIG1pZ2h0IGJlIG51bGwuIE5lZWQgdG8gY2hl
Y2sgaXQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVSZXNv
dXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2Nr
ZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDogQWRkIG51bGwgY2hlY2tzIG9mIG1f
bG9hZGVyIGFuZCBtX2ZyYW1lLAorICAgICAgICBiZWNhdXNlIFdlYlNvY2tldCBkb2VzIG5vdCBo
YXZlIGEgbG9hZGVyIGFuZCB3ZSBuZWVkIHRvIGFsbG93IG51bGwgZm9yCisgICAgICAgIHRoZXNl
IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJp
bmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVdlYlNv
Y2tldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0
ZVdlYlNvY2tldFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNl
Ojp1cGRhdGVTY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2U6OmNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNl
Ojp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpyZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6Oik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLnRv
U3RyaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IHR5
cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5fbWltZVR5cGVJ
c0NvbnNpc3RlbnRXaXRoVHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlw
ZS5fcmVmcmVzaFJlcXVlc3RIZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICgucmVzb3VyY2VzLWNhdGVn
b3J5LXdlYnNvY2tldHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIpOgorICAgICAgICAoLnJl
c291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzIC5yZXNvdXJjZXMtZ3JhcGgtYmFyKToKKyAgICAg
ICAgKC5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291
cmNlcy1ncmFwaC1iYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IudXBkYXRlUmVzb3VyY2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFu
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpc2Nvbm5lY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3Blbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldENoYW5uZWw6OmlkZW50aWZpZXIpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oOgorCiAyMDEwLTA2LTIzICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGln
Z3NAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBiNTNkNjRjMDhhMzA4
ZTI4NzMyYjQzZWJiNDc3NDlmNDIxMGIxNzEzLi5mMmZhMmVkNGVmNGEwNDQxNTNiMGZiZTdjMWUz
OGIwNzFjNmY4NTFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cApAQCAtNzg3LDYgKzc4Nyw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUmVzb3Vy
Y2UoSW5zcGVjdG9yUmVzb3VyY2UqIHJlc291cmNlKQogICAgIG1fa25vd25SZXNvdXJjZXMuYWRk
KHJlc291cmNlLT5yZXF1ZXN0VVJMKCkpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gcmVzb3VyY2Ut
PmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlc291cmNl
c01hcCogcmVzb3VyY2VNYXAgPSBtX2ZyYW1lUmVzb3VyY2VzLmdldChmcmFtZSk7CiAgICAgaWYg
KHJlc291cmNlTWFwKQogICAgICAgICByZXNvdXJjZU1hcC0+c2V0KHJlc291cmNlLT5pZGVudGlm
aWVyKCksIHJlc291cmNlKTsKQEAgLTgwNSw2ICs4MDcsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnJlbW92ZVJlc291cmNlKEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZSkKICAgICAg
ICAgbV9rbm93blJlc291cmNlcy5yZW1vdmUocmVxdWVzdFVSTCk7CiAKICAgICBGcmFtZSogZnJh
bWUgPSByZXNvdXJjZS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CiAgICAgUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCA9IG1fZnJhbWVSZXNvdXJjZXMuZ2V0KGZy
YW1lKTsKICAgICBpZiAoIXJlc291cmNlTWFwKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTQzMyw2ICsxNDM3LDU0IEBAIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZSog
SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0RE9NU3RvcmFnZVJlc291cmNlRm9ySWQobG9uCiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VS
TCYgdXJsKQoreworICAgIGlmICghZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgQVNT
RVJUKG1faW5zcGVjdGVkUGFnZSk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJl
c291cmNlID0gSW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZShpZGVudGlmaWVyLCAwLCB1cmwpOwor
ICAgIGFkZFJlc291cmNlKHJlc291cmNlLmdldCgpKTsKKworICAgIGlmIChtX2Zyb250ZW5kKQor
ICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwor
fQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNv
dXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNl
KQorICAgICAgICByZXR1cm47CisgICAgcmVzb3VyY2UtPnN0YXJ0VGltaW5nKCk7CisgICAgcmVz
b3VyY2UtPnVwZGF0ZVdlYlNvY2tldFJlcXVlc3QocmVxdWVzdCk7CisgICAgaWYgKG1fZnJvbnRl
bmQpCisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQo
KSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNv
dXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CisgICAgaWYg
KCFyZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBSZWNvcmQgdGltaW5n
PworICAgIHJlc291cmNlLT51cGRhdGVXZWJTb2NrZXRSZXNwb25zZShyZXNwb25zZSk7CisgICAg
aWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9m
cm9udGVuZC5nZXQoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VX
ZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworICAgIFJlZlB0cjxJbnNwZWN0
b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7Cisg
ICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzb3VyY2UtPmVuZFRp
bWluZygpOworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2Ny
aXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShXRUJfU09D
S0VUUykKKwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjphZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJvZmls
ZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYjJkMWQ1YTcxN2IzNjY3MTgw
ZWQ1NjhhMmQ4YmM4ZjBiOGUxZDBmMS4uMDhkMjEzOWY3NmRlZDkwYmU5ZDRlNjJiMmNmOWYwN2I2
ZWU5YTM3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODgs
NiArODgsMTEgQEAgY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOwogY2xhc3MgSW5z
cGVjdG9yUmVzb3VyY2U7CiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZTsKIAorI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q7CitjbGFz
cyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTsKKyNlbmRpZgorCiBjbGFzcyBJbnNwZWN0b3JD
b250cm9sbGVyCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIE5vbmNvcHlhYmxlCkBA
IC0yMDgsNiArMjEzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGxv
bmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogICAgIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxv
bmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisgICAgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBLVVJMJik7CisgICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZSYpOworICAgIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKTsKKyNlbmRpZgogCiAgICAgY29uc3QgUmVzb3VyY2VzTWFwJiByZXNvdXJjZXMoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlczsgfQogICAgIEluc3BlY3RvclJlc291cmNlKiByZXNvdXJj
ZUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZS5jcHAKaW5kZXggZjBlMzkxZGU5NjI2ZTg2MGMxN2I1NGVlY2RmZjJlZmMzN2RiNjlkNi4u
MzM5YzRiYjI4ODE4YTU5MTI5MjliZDk2NTQ5NWEwYzRmYmZkZTVlNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtNDEsMTUgKzQxLDM4IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU3RyaW5nQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlLmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKKy8vIENyZWF0ZSBodW1hbi1yZWFkYWJsZSBiaW5hcnkgcmVwcmVzZW50
YXRpb24sIGxpa2UgIjAxOjIzOjQ1OjY3Ojg5OkFCOkNEOkVGIi4KK3N0YXRpYyBTdHJpbmcgY3Jl
YXRlUmVhZGFibGVTdHJpbmdGcm9tQmluYXJ5KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHZhbHVlLCBz
aXplX3QgbGVuZ3RoKQoreworICAgIEFTU0VSVChsZW5ndGggPiAwKTsKKyAgICBzdGF0aWMgY29u
c3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOworICAgIHNpemVfdCBi
dWZmZXJTaXplID0gbGVuZ3RoICogMyAtIDE7CisgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcihidWZm
ZXJTaXplKTsKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgYnVmZmVy
W2luZGV4KytdID0gJzonOworICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBoZXhEaWdpdHNbdmFs
dWVbaV0gPj4gNF07CisgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1t2YWx1ZVtp
XSAmIDB4Rl07CisgICAgfQorICAgIEFTU0VSVChpbmRleCA9PSBidWZmZXJTaXplKTsKKyAgICBy
ZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOworfQorCiBJbnNwZWN0b3JSZXNvdXJjZTo6SW5z
cGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgLCBtX2xvYWRlcihsb2FkZXIpCi0gICAgLCBtX2ZyYW1lKGxvYWRlci0+ZnJh
bWUoKSkKKyAgICAsIG1fZnJhbWUobG9hZGVyID8gbG9hZGVyLT5mcmFtZSgpIDogMCkKICAgICAs
IG1fcmVxdWVzdFVSTChyZXF1ZXN0VVJMKQogICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgo
MCkKICAgICAsIG1fY2FjaGVkKGZhbHNlKQpAQCAtMTMyLDYgKzE1NSwyNyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKICAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOwogfQogCisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlV2ViU29ja2V0UmVxdWVz
dChjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG1fcmVx
dWVzdEhlYWRlckZpZWxkcyA9IHJlcXVlc3QuaGVhZGVyRmllbGRzKCk7CisgICAgbV9yZXF1ZXN0
TWV0aG9kID0gIkdFVCI7IC8vIEN1cnJlbnRseSB3ZSBhbHdheXMgdXNlICJHRVQiIHRvIHJlcXVl
c3QgaGFuZHNoYWtlLgorICAgIG1fd2ViU29ja2V0UmVxdWVzdEtleTMuc2V0KG5ldyBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0OjpLZXkzKHJlcXVlc3Qua2V5MygpKSk7CisgICAgbV9jaGFuZ2Vz
LnNldChSZXF1ZXN0Q2hhbmdlKTsKKyAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOworfQor
Cit2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXNwb25zZShjb25zdCBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbV9yZXNwb25zZVN0
YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXNDb2RlKCk7CisgICAgbV9yZXNwb25zZVN0YXR1c1Rl
eHQgPSByZXNwb25zZS5zdGF0dXNUZXh0KCk7CisgICAgbV9yZXNwb25zZUhlYWRlckZpZWxkcyA9
IHJlc3BvbnNlLmhlYWRlckZpZWxkcygpOworICAgIG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9u
c2Uuc2V0KG5ldyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2Uo
cmVzcG9uc2UuY2hhbGxlbmdlUmVzcG9uc2UoKSkpOworICAgIG1fY2hhbmdlcy5zZXQoUmVzcG9u
c2VDaGFuZ2UpOworICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7Cit9CisjZW5kaWYgLy8g
RU5BQkxFKFdFQl9TT0NLRVRTKQorCiBzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3Qo
U2NyaXB0T2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiB7CiAg
ICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKQEAg
LTE0OSw3ICsxOTMsMTAgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2Jq
ZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICBTY3JpcHRPYmplY3QganNvbk9i
amVjdCA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICBpZiAobV9jaGFuZ2VzLmhh
c0NoYW5nZShSZXF1ZXN0Q2hhbmdlKSkgewogICAgICAgICBqc29uT2JqZWN0LnNldCgidXJsIiwg
bV9yZXF1ZXN0VVJMLnN0cmluZygpKTsKLSAgICAgICAganNvbk9iamVjdC5zZXQoImRvY3VtZW50
VVJMIiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICBpZiAo
bV9mcmFtZSkKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJkb2N1bWVudFVSTCIsIG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAganNvbk9iamVjdC5zZXQoImRvY3VtZW50VVJMIiwgbV9yZXF1ZXN0VVJMLnN0cmluZygpKTsK
ICAgICAgICAganNvbk9iamVjdC5zZXQoImhvc3QiLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKICAg
ICAgICAganNvbk9iamVjdC5zZXQoInBhdGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKICAgICAg
ICAganNvbk9iamVjdC5zZXQoImxhc3RQYXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQ
YXRoQ29tcG9uZW50KCkpOwpAQCAtMTYxLDYgKzIwOCwxMCBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogICAg
ICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdEZvcm1EYXRhIiwgbV9yZXF1ZXN0Rm9ybURhdGEp
OwogICAgICAgICBqc29uT2JqZWN0LnNldCgiZGlkUmVxdWVzdENoYW5nZSIsIHRydWUpOwogICAg
ICAgICBqc29uT2JqZWN0LnNldCgiY2FjaGVkIiwgbV9jYWNoZWQpOworI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKKyAgICAgICAgaWYgKG1fd2ViU29ja2V0UmVxdWVzdEtleTMpCisgICAgICAgICAg
ICBqc29uT2JqZWN0LnNldCgid2ViU29ja2V0UmVxdWVzdEtleTMiLCBjcmVhdGVSZWFkYWJsZVN0
cmluZ0Zyb21CaW5hcnkobV93ZWJTb2NrZXRSZXF1ZXN0S2V5My0+dmFsdWUsIHNpemVvZihtX3dl
YlNvY2tldFJlcXVlc3RLZXkzLT52YWx1ZSkpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlmICht
X2NoYW5nZXMuaGFzQ2hhbmdlKFJlc3BvbnNlQ2hhbmdlKSkgewpAQCAtMTcyLDYgKzIyMywxMCBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJv
bnRlbmQqIGZyb250ZW5kKQogICAgICAgICBTY3JpcHRPYmplY3QgcmVzcG9uc2VIZWFkZXJzID0g
ZnJvbnRlbmQtPm5ld1NjcmlwdE9iamVjdCgpOwogICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmpl
Y3QoJnJlc3BvbnNlSGVhZGVycywgbV9yZXNwb25zZUhlYWRlckZpZWxkcyk7CiAgICAgICAgIGpz
b25PYmplY3Quc2V0KCJyZXNwb25zZUhlYWRlcnMiLCByZXNwb25zZUhlYWRlcnMpOworI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKKyAgICAgICAgaWYgKG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9u
c2UpCisgICAgICAgICAgICBqc29uT2JqZWN0LnNldCgid2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9u
c2UiLCBjcmVhdGVSZWFkYWJsZVN0cmluZ0Zyb21CaW5hcnkobV93ZWJTb2NrZXRDaGFsbGVuZ2VS
ZXNwb25zZS0+dmFsdWUsIHNpemVvZihtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlLT52YWx1
ZSkpKTsKKyNlbmRpZgogICAgICAgICBqc29uT2JqZWN0LnNldCgiZGlkUmVzcG9uc2VDaGFuZ2Ui
LCB0cnVlKTsKICAgICB9CiAKQEAgLTIzMCw2ICsyODUsOCBAQCBDYWNoZWRSZXNvdXJjZSogSW5z
cGVjdG9yUmVzb3VyY2U6OmNhY2hlZFJlc291cmNlKCkgY29uc3QKICAgICAvLyBUcnkgaGFyZCB0
byBmaW5kIGEgY29ycmVzcG9uZGluZyBDYWNoZWRSZXNvdXJjZS4gRHVyaW5nIHByZWxvYWRpbmcs
IERvY0xvYWRlciBtYXkgbm90IGhhdmUgdGhlIHJlc291cmNlIGluIGRvY3VtZW50IHJlc291cmNl
cyBzZXQgeWV0LAogICAgIC8vIGJ1dCBJbnNwZWN0b3Igd2lsbCBhbHJlYWR5IHRyeSB0byBmZXRj
aCBkYXRhIHRoYXQgaXMgb25seSBhdmFpbGFibGUgdmlhIENhY2hlZFJlc291cmNlIChhbmQgaXQg
d29uJ3QgdXBkYXRlIG9uY2UgdGhlIHJlc291cmNlIGlzIGFkZGVkLAogICAgIC8vIGJlY2F1c2Ug
bV9jaGFuZ2VzIHdpbGwgbm90IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGJpdHMgc2V0KS4KKyAgICBp
ZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiAwOwogICAgIGNvbnN0IFN0cmluZyYgdXJsID0g
bV9yZXF1ZXN0VVJMLnN0cmluZygpOwogICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5jYWNoZWRSZXNvdXJjZSh1cmwp
OwogICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCkBAIC0yNjYsNiArMzIzLDEwIEBAIEluc3BlY3Rv
clJlc291cmNlOjpUeXBlIEluc3BlY3RvclJlc291cmNlOjp0eXBlKCkgY29uc3QKICAgICBpZiAo
IW1fb3ZlcnJpZGVDb250ZW50LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbV9vdmVycmlkZUNv
bnRlbnRUeXBlOwogCisgICAgLy8gV2ViU29ja2V0IHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBs
b2FkZXIuCisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuIFdlYlNvY2tldDsKKwog
ICAgIGlmIChtX3JlcXVlc3RVUkwgPT0gbV9sb2FkZXItPnJlcXVlc3RVUkwoKSkgewogICAgICAg
ICBJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUgPSBjYWNoZWRSZXNvdXJjZVR5
cGUoKTsKICAgICAgICAgaWYgKHJlc291cmNlVHlwZSA9PSBPdGhlcikKQEAgLTMwNSw3ICszNjYs
NyBAQCBTdHJpbmcgSW5zcGVjdG9yUmVzb3VyY2U6OnNvdXJjZVN0cmluZygpIGNvbnN0CiAKIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JSZXNvdXJjZTo6cmVzb3VyY2VEYXRhKFN0
cmluZyogdGV4dEVuY29kaW5nTmFtZSkgY29uc3QKIHsKLSAgICBpZiAobV9yZXF1ZXN0VVJMID09
IG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpIHsKKyAgICBpZiAobV9sb2FkZXIgJiYgbV9yZXF1ZXN0
VVJMID09IG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpIHsKICAgICAgICAgKnRleHRFbmNvZGluZ05h
bWUgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCk7CiAgICAgICAgIHJldHVy
biBtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZS5oCmluZGV4IDliOTE4ODliMTlmN2UzYTQ2YTk2YTljMzU0NGQwNTM3NTM4
Y2JmOWQuLjIzOWI0ZGQ4Y2YyZDZhYmRmYWIyNDAyNTJkM2FiNmZlMzY4OTRiMTUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgorI2lu
Y2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCiAKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC01MCw5ICs1MiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAgICAgY2xh
c3MgRnJhbWU7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLQogICAgIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBjbGFzcyBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0OworICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
OworI2VuZGlmCisKICAgICBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEluc3BlY3RvclJlc291cmNlPiB7CiAgICAgcHVibGljOgogCkBAIC02NSw5ICs3MSwxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTY3JpcHQsCiAgICAgICAgICAgICBY
SFIsCiAgICAgICAgICAgICBNZWRpYSwKKyAgICAgICAgICAgIFdlYlNvY2tldCwKICAgICAgICAg
ICAgIE90aGVyCiAgICAgICAgIH07CiAKKyAgICAgICAgLy8gV2ViU29ja2V0IHJlc291cmNlIGRv
ZXNuJ3QgaGF2ZSBpdHMgbG9hZGVyLCB0aHVzIGxvYWRlciBtYXkgYmUgbnVsbC4KICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IGNyZWF0ZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RV
UkwpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9y
UmVzb3VyY2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0VVJMKSk7CkBAIC04NCw2ICs5Miwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdXBkYXRlUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICAgICAgdm9pZCB1cGRhdGVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHZv
aWQgdXBkYXRlV2ViU29ja2V0UmVxdWVzdChjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
Jik7CisgICAgICAgIHZvaWQgdXBkYXRlV2ViU29ja2V0UmVzcG9uc2UoY29uc3QgV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UmKTsKKyNlbmRpZgorCiAgICAgICAgIHZvaWQgc2V0T3ZlcnJpZGVD
b250ZW50KGNvbnN0IFNjcmlwdFN0cmluZyYgZGF0YSwgVHlwZSk7CiAKICAgICAgICAgU3RyaW5n
IHNvdXJjZVN0cmluZygpIGNvbnN0OwpAQCAtMTc5LDYgKzE5MiwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RNZXRob2Q7CiAgICAgICAgIFN0cmluZyBt
X3JlcXVlc3RGb3JtRGF0YTsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJj
ZT4gPiBtX3JlZGlyZWN0czsKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAgICAgLy8g
VGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIG5vdCB1c2VkIGZvciByZXNvdXJjZXMgb3RoZXIgdGhh
biBXZWJTb2NrZXQuCisgICAgICAgIC8vIFdlIGFsbG9jYXRlIHRoZW0gZHluYW1pY2FsbHkgdG8g
cmVkdWNlIG1lbW9yeSBjb25zdW1wdGlvbiBmb3IgcmVndWxhciByZXNvdXJjZXMuCisgICAgICAg
IE93blB0cjxXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpLZXkzPiBtX3dlYlNvY2tldFJlcXVl
c3RLZXkzOworICAgICAgICBPd25QdHI8V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxs
ZW5nZVJlc3BvbnNlPiBtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlOworI2VuZGlmCiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlLmpzCmluZGV4IDJhZTIzYTBmOTMzNTg4M2U0ZmY5YjQxZjgzY2Y2MjZhNzVlYzk3ZDAu
LmU2NmEzMjA2ZDcwOWU2YTYzMWZmOGU3MGFmZjZmZjE3NmVkOWI2NDYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTQ1LDcgKzQ1LDggQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUgPSB7CiAgICAgU2NyaXB0OiAgICAgNCwKICAgICBYSFI6ICAgICAgICA1
LAogICAgIE1lZGlhOiAgICAgIDYsCi0gICAgT3RoZXI6ICAgICAgNywKKyAgICBXZWJTb2NrZXQ6
ICA3LAorICAgIE90aGVyOiAgICAgIDgsCiAKICAgICBpc1RleHRUeXBlOiBmdW5jdGlvbih0eXBl
KQogICAgIHsKQEAgLTY3LDYgKzY4LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUgPSB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygic2NyaXB0Iik7
CiAgICAgICAgICAgICBjYXNlIHRoaXMuWEhSOgogICAgICAgICAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlhIUiIpOworICAgICAgICAgICAgY2FzZSB0aGlzLldlYlNvY2tl
dDoKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXZWJTb2Nr
ZXQiKTsKICAgICAgICAgICAgIGNhc2UgdGhpcy5PdGhlcjoKICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygib3RoZXIiKTsK
QEAgLTM1Miw2ICszNTUsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFI6CiAgICAgICAg
ICAgICAgICAgdGhpcy5jYXRlZ29yeSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMu
eGhyOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQ6CisgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29y
eSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMud2Vic29ja2V0OworICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5PdGhlcjoKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgdGhpcy5jYXRl
Z29yeSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMub3RoZXI7CkBAIC01NjQsNyAr
NTcwLDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBp
ZiAodHlwZW9mIHRoaXMudHlwZSA9PT0gInVuZGVmaW5lZCIKICAgICAgICAgIHx8IHRoaXMudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuT3RoZXIKLSAgICAgICAgIHx8IHRoaXMu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSKQorICAgICAgICAgfHwgdGhp
cy50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFIKKyAgICAgICAgIHx8IHRo
aXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0KQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHRoaXMubWltZVR5cGUgaW4gV2ViSW5z
cGVjdG9yLk1JTUVUeXBlcykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VW
aWV3LmpzCmluZGV4IGJmZDE1NzZkMmM3YjFkY2E0MDgxNWZlZjFmODU4ODJmYjEzNjA4MjguLjk1
MWQyYWI4MTk5NmNkZTlhYWYwNjk1MTc4YWZjODJiOGM4YWFjYjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwpAQCAtMjc4LDEzICsyNzgsMTkgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVmcmVzaFJlcXVl
c3RIZWFkZXJzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVy
cyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgSGVhZGVycyIpLCB0aGlzLnJlc291cmNl
LnNvcnRlZFJlcXVlc3RIZWFkZXJzLCB0aGlzLnJlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOwor
ICAgICAgICB2YXIgaGVhZGVycyA9IHRoaXMucmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhlYWRlcnM7
CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5MyAh
PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBoZWFkZXJzLnB1c2goe2hlYWRlcjogIihLZXkz
KSIsIHZhbHVlOiB0aGlzLnJlc291cmNlLndlYlNvY2tldFJlcXVlc3RLZXkzfSk7CisgICAgICAg
IHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBIZWFk
ZXJzIiksIGhlYWRlcnMsIHRoaXMucmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CiAgICAgICAg
IHRoaXMuX3JlZnJlc2hGb3JtRGF0YSgpOwogICAgIH0sCiAKICAgICBfcmVmcmVzaFJlc3BvbnNl
SGVhZGVyczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMo
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSBIZWFkZXJzIiksIHRoaXMucmVzb3VyY2Uu
c29ydGVkUmVzcG9uc2VIZWFkZXJzLCB0aGlzLnJlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50KTsK
KyAgICAgICAgdmFyIGhlYWRlcnMgPSB0aGlzLnJlc291cmNlLnNvcnRlZFJlc3BvbnNlSGVhZGVy
czsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJl
c3BvbnNlICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIGhlYWRlcnMucHVzaCh7aGVhZGVy
OiAiKENoYWxsZW5nZSBSZXNwb25zZSkiLCB2YWx1ZTogdGhpcy5yZXNvdXJjZS53ZWJTb2NrZXRD
aGFsbGVuZ2VSZXNwb25zZX0pOworICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgaGVhZGVycywgdGhpcy5yZXNwb25z
ZUhlYWRlcnNUcmVlRWxlbWVudCk7CiAgICAgfSwKIAogICAgIF9yZWZyZXNoSFRUUEluZm9ybWF0
aW9uOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
CmluZGV4IGI5MjY3MmFmYTczZWI4NjY0NGM4NGJjOWZkZWNiYjE1ODVhNDFmZmEuLjkyNmU3Yzlm
ZTU1MzZiMDM5ODZjNzQzNTI1MDk4YzA5OGM1NTg3NTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0yNzk5LDcgKzI3OTksOCBAQCBidXR0b24uZW5hYmxl
LXRvZ2dsZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogfQogCiAucmVzb3Vy
Y2VzLWNhdGVnb3J5LWRvY3VtZW50cywgLnJlc291cmNlcy1jYXRlZ29yeS1zdHlsZXNoZWV0cywg
LnJlc291cmNlcy1jYXRlZ29yeS1pbWFnZXMsCi0ucmVzb3VyY2VzLWNhdGVnb3J5LXNjcmlwdHMs
IC5yZXNvdXJjZXMtY2F0ZWdvcnkteGhyLCAucmVzb3VyY2VzLWNhdGVnb3J5LWZvbnRzLCAucmVz
b3VyY2VzLWNhdGVnb3J5LW90aGVyIHsKKy5yZXNvdXJjZXMtY2F0ZWdvcnktc2NyaXB0cywgLnJl
c291cmNlcy1jYXRlZ29yeS14aHIsIC5yZXNvdXJjZXMtY2F0ZWdvcnktZm9udHMsCisucmVzb3Vy
Y2VzLWNhdGVnb3J5LXdlYnNvY2tldHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIgewogICAg
IGRpc3BsYXk6IG5vbmU7CiB9CiAKQEAgLTI4MDksNiArMjgxMCw3IEBAIGJ1dHRvbi5lbmFibGUt
dG9nZ2xlLXN0YXR1cy1iYXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CiAuZmlsdGVyLWFsbCAu
cmVzb3VyY2VzLWNhdGVnb3J5LXNjcmlwdHMsIC5maWx0ZXItc2NyaXB0cyAucmVzb3VyY2VzLWNh
dGVnb3J5LXNjcmlwdHMsCiAuZmlsdGVyLWFsbCAucmVzb3VyY2VzLWNhdGVnb3J5LXhociwgLmZp
bHRlci14aHIgLnJlc291cmNlcy1jYXRlZ29yeS14aHIsCiAuZmlsdGVyLWFsbCAucmVzb3VyY2Vz
LWNhdGVnb3J5LWZvbnRzLCAuZmlsdGVyLWZvbnRzIC5yZXNvdXJjZXMtY2F0ZWdvcnktZm9udHMs
CisuZmlsdGVyLWFsbCAucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMsIC5maWx0ZXItd2Vi
c29ja2V0cyAucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMsCiAuZmlsdGVyLWFsbCAucmVz
b3VyY2VzLWNhdGVnb3J5LW90aGVyLCAuZmlsdGVyLW90aGVyIC5yZXNvdXJjZXMtY2F0ZWdvcnkt
b3RoZXIsCiAucmVzb3VyY2Utc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZWQgewogICAgIGRpc3Bs
YXk6IGxpc3QtaXRlbTsKQEAgLTI4ODQsNiArMjg4NiwxNSBAQCBidXR0b24uZW5hYmxlLXRvZ2ds
ZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogICAgIC13ZWJraXQtYm9yZGVy
LWltYWdlOiB1cmwoSW1hZ2VzL3RpbWVsaW5lSG9sbG93UGlsbFllbGxvdy5wbmcpIDYgNyA2IDc7
CiB9CiAKKy8qIEZJWE1FOiBDcmVhdGUgYmFyIGltYWdlcyBmb3IgV2ViU29ja2V0LiAqLworLnJl
c291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzIC5yZXNvdXJjZXMtZ3JhcGgtYmFyIHsKKyAgICAt
d2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aW1lbGluZVBpbGxHcmF5LnBuZykgNiA3
IDYgNzsKK30KKworLnJlc291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLnJlc291cmNlLWNhY2hl
ZCAucmVzb3VyY2VzLWdyYXBoLWJhciB7CisgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKElt
YWdlcy90aW1lbGluZUhvbGxvd1BpbGxHcmF5LnBuZykgNiA3IDYgNzsKK30KKwogI3Jlc291cmNl
LXZpZXdzIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAyM3B4OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggM2JiNDE4MDdiZDA5NzExNzgx
ODhjMTY2N2I3NmI5YmE3MWRhZGNkMC4uNjRjYjIwZDY2M2UxZTczZTIxZjVlMzg0MThhNmY0ODc5
OTkzYWUwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC00
NjMsNiArNDYzLDcgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
c2NyaXB0czogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJzY3JpcHRzIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHRzIiksICJyZ2IoMjU1LDEyMSwwKSIpLAogICAgICAg
ICB4aHI6IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSgieGhyIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJYSFIiKSwgInJnYigyMzEsMjMxLDEwKSIpLAogICAgICAgICBmb250czog
bmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJmb250cyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRm9udHMiKSwgInJnYigyNTUsODIsNjIpIiksCisgICAgICAgIHdlYnNvY2tldDog
bmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJ3ZWJzb2NrZXRzIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJXZWJTb2NrZXQiKSwgInJnYigxODYsMTg2LDE4NikiKSwgLy8gRklYTUU6
IERlY2lkZSB0aGUgY29sb3IuCiAgICAgICAgIG90aGVyOiBuZXcgV2ViSW5zcGVjdG9yLlJlc291
cmNlQ2F0ZWdvcnkoIm90aGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdGhlciIpLCAicmdi
KDE4NiwxODYsMTg2KSIpCiAgICAgfTsKIApAQCAtMTE1NSw2ICsxMTU2LDggQEAgV2ViSW5zcGVj
dG9yLnVwZGF0ZVJlc291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKICAgICAg
ICAgcmVzb3VyY2UucmVxdWVzdEZvcm1EYXRhID0gcGF5bG9hZC5yZXF1ZXN0Rm9ybURhdGE7CiAg
ICAgICAgIHJlc291cmNlLmNhY2hlZCA9IHBheWxvYWQuY2FjaGVkOwogICAgICAgICByZXNvdXJj
ZS5kb2N1bWVudFVSTCA9IHBheWxvYWQuZG9jdW1lbnRVUkw7CisgICAgICAgIGlmICh0eXBlb2Yg
cGF5bG9hZC53ZWJTb2NrZXRSZXF1ZXN0S2V5MyAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAg
ICByZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5MyA9IHBheWxvYWQud2ViU29ja2V0UmVxdWVz
dEtleTM7CiAKICAgICAgICAgaWYgKHJlc291cmNlLm1haW5SZXNvdXJjZSkKICAgICAgICAgICAg
IHRoaXMubWFpblJlc291cmNlID0gcmVzb3VyY2U7CkBAIC0xMTc0LDYgKzExNzcsOCBAQCBXZWJJ
bnNwZWN0b3IudXBkYXRlUmVzb3VyY2UgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBwYXlsb2FkKQog
ICAgICAgICByZXNvdXJjZS5zdGF0dXNUZXh0ID0gcGF5bG9hZC5zdGF0dXNUZXh0OwogICAgICAg
ICByZXNvdXJjZS5zdWdnZXN0ZWRGaWxlbmFtZSA9IHBheWxvYWQuc3VnZ2VzdGVkRmlsZW5hbWU7
CiAgICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVycyA9IHBheWxvYWQucmVzcG9uc2VIZWFk
ZXJzOworICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9u
c2UgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxl
bmdlUmVzcG9uc2UgPSBwYXlsb2FkLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlOwogICAgIH0K
IAogICAgIGlmIChwYXlsb2FkLmRpZFR5cGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAppbmRleCA1ODU5ZmQ3ZjA2NTA3ZjMzN2MyODE4MjZhYzhjNjE0YjI3
MGIyOTM1Li4wYmE4NGZhNjJiMThlZjgwNTZlOGNhOTllYWMyMjczMTM5Zjg0ZjI1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0zNiw4ICszNiwxMSBAQAogCiAj
aW5jbHVkZSAiQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlByb2dyZXNzVHJh
Y2tlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
b2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgpAQCAt
NjIsNyArNjUsMTYgQEAgV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGEKICAgICAsIG1fc3VzcGVuZGVk
KGZhbHNlKQogICAgICwgbV9jbG9zZWQoZmFsc2UpCiAgICAgLCBtX3VuaGFuZGxlZEJ1ZmZlcmVk
QW1vdW50KDApCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAsIG1faWRlbnRpZmllcigwKQor
ICAgICwgbV9pZGVudGlmaWVyQXNzaWduZWQoZmFsc2UpCisjZW5kaWYKIHsKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gbV9j
b250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIGlmIChQYWdlKiBwYWdlID0g
Y29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpKQorICAgICAgICAgICAgY29udHJvbGxlci0+ZGlk
Q3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIoKSwgdXJsKTsKKyNlbmRpZgogfQogCiBXZWJTb2Nr
ZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCkBAIC0xMTEsNiArMTIzLDExIEBAIHZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaXNjb25u
ZWN0KCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlzY29ubmVj
dCIsIHRoaXMpOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKG1fY29udGV4dCkKKyAg
ICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPmRpZENsb3NlV2Vi
U29ja2V0KGlkZW50aWZpZXIoKSk7CisjZW5kaWYKICAgICBtX2hhbmRzaGFrZS5jbGVhclNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBtX2NsaWVudCA9IDA7CiAgICAgbV9jb250ZXh0ID0g
MDsKQEAgLTEzNiw2ICsxNTMsMTAgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKFNv
Y2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUp
OwogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4
dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBjb250cm9sbGVyLT53aWxsU2VuZFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllcigpLCBtX2hhbmRzaGFrZS5jbGllbnRI
YW5kc2hha2VSZXF1ZXN0KCkpOworI2VuZGlmCiAgICAgY29uc3QgQ1N0cmluZyYgaGFuZHNoYWtl
TWVzc2FnZSA9IG1faGFuZHNoYWtlLmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKTsKICAgICBpZiAo
IWhhbmRsZS0+c2VuZChoYW5kc2hha2VNZXNzYWdlLmRhdGEoKSwgaGFuZHNoYWtlTWVzc2FnZS5s
ZW5ndGgoKSkpIHsKICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3Igc2VuZGluZyBoYW5k
c2hha2UgbWVzc2FnZS4iLCAwLCBtX2hhbmRzaGFrZS5jbGllbnRPcmlnaW4oKSk7CkBAIC0xNDYs
NiArMTY3LDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1I
YW5kbGUqIGhhbmRsZSkKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2UoU29ja2V0U3Ry
ZWFtSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGRpZENsb3NlIiwgdGhpcyk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAobV9j
b250ZXh0KQorICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IG1f
Y29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICAgICAgY29udHJvbGxlci0+
ZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRpZmllcigpKTsKKyNlbmRpZgogICAgIEFTU0VSVF9VTlVT
RUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUgfHwgIW1faGFuZGxlKTsKICAgICBtX2Nsb3Nl
ZCA9IHRydWU7CiAgICAgaWYgKG1faGFuZGxlKSB7CkBAIC0yMzcsNiArMjYzLDEwIEBAIGJvb2wg
V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAgICAgIGlmIChoZWFkZXJMZW5n
dGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1faGFuZHNo
YWtlLm1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZCkgeworI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJv
bGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICAgICAgICAg
IGNvbnRyb2xsZXItPmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShpZGVudGlm
aWVyKCksIG1faGFuZHNoYWtlLnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkpOworI2VuZGlmCiAg
ICAgICAgICAgICBpZiAoIW1faGFuZHNoYWtlLnNlcnZlclNldENvb2tpZSgpLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAg
ICAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KG1fY29udGV4dCk7CkBAIC0zMjgsNiArMzU4LDIzIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCiAgICAgICAg
IGRpZENsb3NlKG1faGFuZGxlLmdldCgpKTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCit1
bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmlkZW50aWZpZXIoKQoreworICAgIGlmICht
X2lkZW50aWZpZXJBc3NpZ25lZCkKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKworICAg
IGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0
b3JDb250cm9sbGVyKCkpCisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gY29udHJvbGxlci0+aW5z
cGVjdGVkUGFnZSgpKSB7CisgICAgICAgICAgICBtX2lkZW50aWZpZXIgPSBwYWdlLT5wcm9ncmVz
cygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJB
c3NpZ25lZCA9IHRydWU7CisgICAgICAgIH0KKworICAgIEFTU0VSVChtX2lkZW50aWZpZXJBc3Np
Z25lZCk7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShX
RUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGE5MGM2
ZGMxMWYyY2Q4YTk1MDQ3MmRiYWZmODU0MWEzYTk0YTBhNGUuLjM4MTdhMDQyNDVlYzM3YzY2ZDVk
ZTQ5Y2UwNmZhZTUyMjAyOTMyYzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aApAQCAtODQsNiArODQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHBy
b2Nlc3NCdWZmZXIoKTsKICAgICAgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNv
Y2tldENoYW5uZWw+KiB0aW1lcik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIoKTsKKyNlbmRpZgorCiAgICAgICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIG1fY29udGV4dDsKICAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCog
bV9jbGllbnQ7CiAgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZSBtX2hhbmRzaGFrZTsKQEAgLTk1
LDYgKzk5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3N1c3BlbmRl
ZDsKICAgICAgICAgYm9vbCBtX2Nsb3NlZDsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX3VuaGFu
ZGxlZEJ1ZmZlcmVkQW1vdW50OworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAgICAgdW5z
aWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CisgICAgICAgIGJvb2wgbV9pZGVudGlmaWVyQXNzaWdu
ZWQ7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60503</attachid>
            <date>2010-07-05 01:45:03 -0700</date>
            <delta_ts>2010-07-05 23:42:02 -0700</delta_ts>
            <desc>Patch v2 (Updated as per Pavel&apos;s comments)</desc>
            <filename>bug-40768-20100705174501.patch</filename>
            <type>text/plain</type>
            <size>32925</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmQ2MGYwNDg4MjZjNWQ1NTk2NjkxM2Y3MjI5N2Q4Y2U0MzgyNDZiMS4uY2YzODVlZmMzYjM1ZmQx
ODQzYzUwN2UyZTdjZjdkYWViMzExZjc1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAxMC0wNy0wNSAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViU29ja2V0IHJlc291cmNlIHR5cGUgdG8g
V2ViIEluc3BlY3Rvci4KKworICAgICAgICBXaGVuIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLCBhIGxpbmUgZm9yIHRoYXQgY29ubmVjdGlvbgorICAgICAgICB3aWxs
IGFwcGVhciBpbiBXZWIgSW5zcGVjdG9yJ3MgUmVzb3VyY2VzIHRhYi4gSWYgdGhlIHJlc291cmNl
IG5hbWUgaXMKKyAgICAgICAgY2xpY2tlZCwgdGhlIGRldGFpbHMgb2YgaGFuZHNoYWtlIHJlcXVl
c3QgYW5kIHJlc3BvbnNlIHdpbGwgYmUgc2hvd24uCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
V2ViU29ja2V0IGluIFJlc291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNzY4CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRSZXNvdXJjZSk6IFdlYlNvY2tldCByZXNvdXJjZSBkb2VzIG5vdAorICAgICAgICBoYXZlIGFu
IGFzc29jaWF0ZWQgbG9hZGVyLCB0aHVzIGZyYW1lIG1pZ2h0IGJlIG51bGwuIE5lZWQgdG8gY2hl
Y2sgaXQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVSZXNv
dXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2Nr
ZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDogQWRkIG51bGwgY2hlY2tzIG9mIG1f
bG9hZGVyIGFuZCBtX2ZyYW1lLAorICAgICAgICBiZWNhdXNlIFdlYlNvY2tldCBkb2VzIG5vdCBo
YXZlIGEgbG9hZGVyIGFuZCB3ZSBuZWVkIHRvIGFsbG93IG51bGwgZm9yCisgICAgICAgIHRoZXNl
IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJp
bmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZSk6IEZh
Y3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgcmVndWxhciAobm9uLVdlYlNvY2tldCkgcmVzb3Vy
Y2VzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tl
dCk6IEZhY3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgV2ViU29ja2V0IHJlc291cmNlcy4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2Ny
aXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpjYWNoZWRS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6cmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlOjopOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6
OmRvY3VtZW50VVJMKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjptYXJr
V2ViU29ja2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUudG9TdHJpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5zZXQgdHlwZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9taW1lVHlwZUlzQ29uc2lzdGVudFdpdGhUeXBl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVxdWVzdEhl
YWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuX3Jl
ZnJlc2hSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmll
dy5wcm90b3R5cGUuX3JlZnJlc2hIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICgucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tl
dHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIpOgorICAgICAgICAoLnJlc291cmNlcy1jYXRl
Z29yeS13ZWJzb2NrZXRzIC5yZXNvdXJjZXMtZ3JhcGgtYmFyKToKKyAgICAgICAgKC5yZXNvdXJj
ZXMtY2F0ZWdvcnktd2Vic29ja2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291cmNlcy1ncmFwaC1i
YXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IudXBkYXRlUmVz
b3VyY2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmlkZW50aWZpZXIpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgor
CiAyMDEwLTA3LTA0ICBBbGljZSBMaXUgIDxhbGljZS5saXVAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IDIyNTYwNDE1YjU1YzFhZTU5OGJhOTIzOWE3ODFkNjk1ZDBmMzE3
NzYuLjg3NmNiNmJjNTNkZmFlZGVmNTM2N2VkMGY0ZDNkZTc1MWQ2OTVjMDkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC03OTMsNiArNzkzLDggQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRSZXNvdXJjZShJbnNwZWN0b3JSZXNvdXJjZSogcmVz
b3VyY2UpCiAgICAgbV9rbm93blJlc291cmNlcy5hZGQocmVzb3VyY2UtPnJlcXVlc3RVUkwoKSk7
CiAKICAgICBGcmFtZSogZnJhbWUgPSByZXNvdXJjZS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1l
KQorICAgICAgICByZXR1cm47CiAgICAgUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCA9IG1fZnJh
bWVSZXNvdXJjZXMuZ2V0KGZyYW1lKTsKICAgICBpZiAocmVzb3VyY2VNYXApCiAgICAgICAgIHJl
c291cmNlTWFwLT5zZXQocmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgcmVzb3VyY2UpOwpAQCAtODEx
LDYgKzgxMyw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlUmVzb3VyY2UoSW5z
cGVjdG9yUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICBtX2tub3duUmVzb3VyY2VzLnJlbW92
ZShyZXF1ZXN0VVJMKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHJlc291cmNlLT5mcmFtZSgpOwor
ICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKICAgICBSZXNvdXJjZXNNYXAqIHJlc291
cmNlTWFwID0gbV9mcmFtZVJlc291cmNlcy5nZXQoZnJhbWUpOwogICAgIGlmICghcmVzb3VyY2VN
YXApIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNDQ0LDYgKzE0NDgsNTYg
QEAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRE
T01TdG9yYWdlUmVzb3VyY2VGb3JJZChsb24KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDcmVhdGVXZWJTb2NrZXQodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJM
JiBkb2N1bWVudFVSTCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOworCisgICAgUmVmUHRyPEluc3BlY3RvclJlc291
cmNlPiByZXNvdXJjZSA9IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVXZWJTb2NrZXQoaWRlbnRp
ZmllciwgcmVxdWVzdFVSTCwgZG9jdW1lbnRVUkwpOworICAgIGFkZFJlc291cmNlKHJlc291cmNl
LmdldCgpKTsKKworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICByZXNvdXJjZS0+dXBkYXRl
U2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmIHJlcXVlc3QpCit7Cisg
ICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRSZXNvdXJj
ZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47CisgICAg
cmVzb3VyY2UtPnN0YXJ0VGltaW5nKCk7CisgICAgcmVzb3VyY2UtPnVwZGF0ZVdlYlNvY2tldFJl
cXVlc3QocmVxdWVzdCk7CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51
cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHJlc3Bv
bnNlKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFj
a2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0
dXJuOworICAgIC8vIENhbGxpbmcgcmVzb3VyY2UtPm1hcmtSZXNwb25zZVJlY2VpdmVkVGltZSgp
IGhlcmUgbWFrZXMgcmVzb3VyY2VzIGJhciBjaGFydCBjb25mdXNpbmcsIGJlY2F1c2UKKyAgICAv
LyB3ZSBjYW5ub3QgYXBwbHkgdGhlICJsYXRlbmN5ICsgZG93bmxvYWQiIG1vZGVsIG9mIHJlZ3Vs
YXIgcmVzb3VyY2VzIHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucy4KKyAgICAvLyBGSVhNRTogRGVz
aWduIGEgbmV3IFVJIGZvciBiYXIgY2hhcnRzIG9mIFdlYlNvY2tldCByZXNvdXJjZXMsIGFuZCBy
ZWNvcmQgdGltaW5nIGhlcmUuCisgICAgcmVzb3VyY2UtPnVwZGF0ZVdlYlNvY2tldFJlc3BvbnNl
KHJlc3BvbnNlKTsKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0
ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7Cisg
ICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRSZXNvdXJj
ZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAg
ICByZXNvdXJjZS0+ZW5kVGltaW5nKCk7CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJl
c291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7Cit9CisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFByb2ZpbGUoUGFzc1JlZlB0cjxTY3JpcHRQ
cm9maWxlPiBwcnBQcm9maWxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA0
Yzk0ZDZkMDU4NzhhYmVkOTc0NjQxNmVmYmM0ZDc0ZWU0OWZmNTAwLi4yOGE5N2U2ODQ0ZWRiMGU4
MDZhMjJkYjFkN2YwZGMyNGIyNzBlZDVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC04OCw2ICs4OCwxMSBAQCBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2U7CiBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsKIGNsYXNzIEluc3BlY3RvcldvcmtlclJl
c291cmNlOwogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorY2xhc3MgV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdDsKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOworI2VuZGlmCisK
IGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXIKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJs
aWMgTm9uY29weWFibGUKQEAgLTIwOCw2ICsyMTMsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
RE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCByZW1vdmVET01TdG9yYWdlSXRl
bShsb25nIGNhbGxJZCwgbG9uZyBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICNlbmRp
ZgorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtV
UkwmIGRvY3VtZW50VVJMKTsKKyAgICB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
Jik7CisgICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
OworI2VuZGlmCiAKICAgICBjb25zdCBSZXNvdXJjZXNNYXAmIHJlc291cmNlcygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VzOyB9CiAgICAgSW5zcGVjdG9yUmVzb3VyY2UqIHJlc291cmNlRm9y
VVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
LmNwcAppbmRleCBmMGUzOTFkZTk2MjZlODYwYzE3YjU0ZWVjZGZmMmVmYzM3ZGI2OWQ2Li41MTU3
YTUzN2RlMGRiYjhhYjRhZjJlMmI1OTU5MjFjOGU5ZjFlMDg3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC00MSwxNiArNDEsNDAgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTdHJpbmdCdWZmZXIuaCIKICNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotSW5zcGVjdG9yUmVzb3VyY2U6Okluc3BlY3RvclJlc291cmNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgcmVx
dWVzdFVSTCkKKy8vIENyZWF0ZSBodW1hbi1yZWFkYWJsZSBiaW5hcnkgcmVwcmVzZW50YXRpb24s
IGxpa2UgIjAxOjIzOjQ1OjY3Ojg5OkFCOkNEOkVGIi4KK3N0YXRpYyBTdHJpbmcgY3JlYXRlUmVh
ZGFibGVTdHJpbmdGcm9tQmluYXJ5KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHZhbHVlLCBzaXplX3Qg
bGVuZ3RoKQoreworICAgIEFTU0VSVChsZW5ndGggPiAwKTsKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOworICAgIHNpemVfdCBidWZmZXJT
aXplID0gbGVuZ3RoICogMyAtIDE7CisgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcihidWZmZXJTaXpl
KTsKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgYnVmZmVyW2luZGV4
KytdID0gJzonOworICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBoZXhEaWdpdHNbdmFsdWVbaV0g
Pj4gNF07CisgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1t2YWx1ZVtpXSAmIDB4
Rl07CisgICAgfQorICAgIEFTU0VSVChpbmRleCA9PSBidWZmZXJTaXplKTsKKyAgICByZXR1cm4g
U3RyaW5nOjphZG9wdChidWZmZXIpOworfQorCitJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9y
UmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCkKICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9sb2FkZXIobG9hZGVyKQotICAgICwg
bV9mcmFtZShsb2FkZXItPmZyYW1lKCkpCisgICAgLCBtX2ZyYW1lKGxvYWRlciA/IGxvYWRlci0+
ZnJhbWUoKSA6IDApCiAgICAgLCBtX3JlcXVlc3RVUkwocmVxdWVzdFVSTCkKKyAgICAsIG1fZG9j
dW1lbnRVUkwoZG9jdW1lbnRVUkwpCiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQog
ICAgICwgbV9jYWNoZWQoZmFsc2UpCiAgICAgLCBtX2ZpbmlzaGVkKGZhbHNlKQpAQCAtNjMsNiAr
ODcsOSBAQCBJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbAogICAgICwgbV9sb2FkRXZlbnRUaW1lKC0x
LjApCiAgICAgLCBtX2RvbUNvbnRlbnRFdmVudFRpbWUoLTEuMCkKICAgICAsIG1faXNNYWluUmVz
b3VyY2UoZmFsc2UpCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICwgbV9pc1dlYlNvY2tl
dChmYWxzZSkKKyNlbmRpZgogewogfQogCkBAIC04NSw2ICsxMTIsMTIgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JSZXNvdXJjZT4gSW5zcGVjdG9yUmVzb3VyY2U6OmFwcGVuZFJlZGlyZWN0KHVuc2ln
bmVkIGxvbmcgaWQKICAgICByZXR1cm4gcmVkaXJlY3Q7CiB9CiAKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKQor
eworICAgIEFTU0VSVChsb2FkZXIpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9y
UmVzb3VyY2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0VVJMLCBsb2FkZXItPmZyYW1lKCkt
PmRvY3VtZW50KCktPnVybCgpKSk7Cit9CisKIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+
IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UpCiB7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBj
cmVhdGUoaWRlbnRpZmllciwgbG9hZGVyLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgY2FjaGVkUmVz
b3VyY2UtPnVybCgpKSk7CkBAIC0xMDQsNiArMTM3LDE1IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9y
UmVzb3VyY2U+IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVDYWNoZWQodW5zaWduZWQgbG9uZyBp
ZGVuCiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
UGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdl
YlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkws
IGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJj
ZT4gcmVzb3VyY2UobmV3IEluc3BlY3RvclJlc291cmNlKGlkZW50aWZpZXIsIDAsIHJlcXVlc3RV
UkwsIGRvY3VtZW50VVJMKSk7CisgICAgcmVzb3VyY2UtPm1hcmtXZWJTb2NrZXQoKTsKKyAgICBy
ZXR1cm4gcmVzb3VyY2UucmVsZWFzZSgpOworfQorI2VuZGlmCisKIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2U6OnVwZGF0ZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIG1fcmVxdWVzdEhlYWRlckZpZWxkcyA9IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwpA
QCAtMTMyLDYgKzE3NCwyNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX2NoYW5nZXMuc2V0KFR5
cGVDaGFuZ2UpOwogfQogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQordm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZTo6dXBkYXRlV2ViU29ja2V0UmVxdWVzdChjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG1fcmVxdWVzdEhlYWRlckZpZWxkcyA9IHJlcXVlc3Qu
aGVhZGVyRmllbGRzKCk7CisgICAgbV9yZXF1ZXN0TWV0aG9kID0gIkdFVCI7IC8vIEN1cnJlbnRs
eSB3ZSBhbHdheXMgdXNlICJHRVQiIHRvIHJlcXVlc3QgaGFuZHNoYWtlLgorICAgIG1fd2ViU29j
a2V0UmVxdWVzdEtleTMuc2V0KG5ldyBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpLZXkzKHJl
cXVlc3Qua2V5MygpKSk7CisgICAgbV9jaGFuZ2VzLnNldChSZXF1ZXN0Q2hhbmdlKTsKKyAgICBt
X2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlOjp1
cGRhdGVXZWJTb2NrZXRSZXNwb25zZShjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYg
cmVzcG9uc2UpCit7CisgICAgbV9yZXNwb25zZVN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXND
b2RlKCk7CisgICAgbV9yZXNwb25zZVN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0dXNUZXh0KCk7
CisgICAgbV9yZXNwb25zZUhlYWRlckZpZWxkcyA9IHJlc3BvbnNlLmhlYWRlckZpZWxkcygpOwor
ICAgIG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2Uuc2V0KG5ldyBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2UocmVzcG9uc2UuY2hhbGxlbmdlUmVzcG9uc2Uo
KSkpOworICAgIG1fY2hhbmdlcy5zZXQoUmVzcG9uc2VDaGFuZ2UpOworICAgIG1fY2hhbmdlcy5z
ZXQoVHlwZUNoYW5nZSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiBzdGF0
aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoU2NyaXB0T2JqZWN0KiBvYmplY3QsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiB7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKQEAgLTE0OSw3ICsyMTIsNyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kKQogICAgIFNjcmlwdE9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld1NjcmlwdE9i
amVjdCgpOwogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKFJlcXVlc3RDaGFuZ2UpKSB7CiAg
ICAgICAgIGpzb25PYmplY3Quc2V0KCJ1cmwiLCBtX3JlcXVlc3RVUkwuc3RyaW5nKCkpOwotICAg
ICAgICBqc29uT2JqZWN0LnNldCgiZG9jdW1lbnRVUkwiLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJkb2N1bWVudFVSTCIsIG1f
ZG9jdW1lbnRVUkwuc3RyaW5nKCkpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgiaG9zdCIsIG1f
cmVxdWVzdFVSTC5ob3N0KCkpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgicGF0aCIsIG1fcmVx
dWVzdFVSTC5wYXRoKCkpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgibGFzdFBhdGhDb21wb25l
bnQiLCBtX3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7CkBAIC0xNjEsNiArMjI0LDEw
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0Rm9ybURh
dGEiLCBtX3JlcXVlc3RGb3JtRGF0YSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRSZXF1
ZXN0Q2hhbmdlIiwgdHJ1ZSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJjYWNoZWQiLCBtX2Nh
Y2hlZCk7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICBpZiAobV93ZWJTb2NrZXRS
ZXF1ZXN0S2V5MykKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJ3ZWJTb2NrZXRSZXF1ZXN0
S2V5MyIsIGNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeShtX3dlYlNvY2tldFJlcXVlc3RL
ZXkzLT52YWx1ZSwgc2l6ZW9mKG1fd2ViU29ja2V0UmVxdWVzdEtleTMtPnZhbHVlKSkpOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoUmVzcG9uc2VDaGFuZ2Up
KSB7CkBAIC0xNzIsNiArMjM5LDEwIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNj
cmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgICAgIFNjcmlwdE9i
amVjdCByZXNwb25zZUhlYWRlcnMgPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7CiAgICAg
ICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdCgmcmVzcG9uc2VIZWFkZXJzLCBtX3Jlc3BvbnNlSGVh
ZGVyRmllbGRzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInJlc3BvbnNlSGVhZGVycyIsIHJl
c3BvbnNlSGVhZGVycyk7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICBpZiAobV93
ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSkKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJ3
ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSIsIGNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFy
eShtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlLT52YWx1ZSwgc2l6ZW9mKG1fd2ViU29ja2V0
Q2hhbGxlbmdlUmVzcG9uc2UtPnZhbHVlKSkpOworI2VuZGlmCiAgICAgICAgIGpzb25PYmplY3Qu
c2V0KCJkaWRSZXNwb25zZUNoYW5nZSIsIHRydWUpOwogICAgIH0KIApAQCAtMjMwLDYgKzMwMSw4
IEBAIENhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JSZXNvdXJjZTo6Y2FjaGVkUmVzb3VyY2UoKSBj
b25zdAogICAgIC8vIFRyeSBoYXJkIHRvIGZpbmQgYSBjb3JyZXNwb25kaW5nIENhY2hlZFJlc291
cmNlLiBEdXJpbmcgcHJlbG9hZGluZywgRG9jTG9hZGVyIG1heSBub3QgaGF2ZSB0aGUgcmVzb3Vy
Y2UgaW4gZG9jdW1lbnQgcmVzb3VyY2VzIHNldCB5ZXQsCiAgICAgLy8gYnV0IEluc3BlY3RvciB3
aWxsIGFscmVhZHkgdHJ5IHRvIGZldGNoIGRhdGEgdGhhdCBpcyBvbmx5IGF2YWlsYWJsZSB2aWEg
Q2FjaGVkUmVzb3VyY2UgKGFuZCBpdCB3b24ndCB1cGRhdGUgb25jZSB0aGUgcmVzb3VyY2UgaXMg
YWRkZWQsCiAgICAgLy8gYmVjYXVzZSBtX2NoYW5nZXMgd2lsbCBub3QgaGF2ZSB0aGUgYXBwcm9w
cmlhdGUgYml0cyBzZXQpLgorICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CiAg
ICAgY29uc3QgU3RyaW5nJiB1cmwgPSBtX3JlcXVlc3RVUkwuc3RyaW5nKCk7CiAgICAgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVy
KCktPmNhY2hlZFJlc291cmNlKHVybCk7CiAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKQEAgLTI2
Niw2ICszMzksMTIgQEAgSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgSW5zcGVjdG9yUmVzb3VyY2U6
OnR5cGUoKSBjb25zdAogICAgIGlmICghbV9vdmVycmlkZUNvbnRlbnQuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBtX292ZXJyaWRlQ29udGVudFR5cGU7CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisgICAgaWYgKG1faXNXZWJTb2NrZXQpCisgICAgICAgIHJldHVybiBXZWJTb2NrZXQ7Cisj
ZW5kaWYKKworICAgIEFTU0VSVChtX2xvYWRlcik7CiAgICAgaWYgKG1fcmVxdWVzdFVSTCA9PSBt
X2xvYWRlci0+cmVxdWVzdFVSTCgpKSB7CiAgICAgICAgIEluc3BlY3RvclJlc291cmNlOjpUeXBl
IHJlc291cmNlVHlwZSA9IGNhY2hlZFJlc291cmNlVHlwZSgpOwogICAgICAgICBpZiAocmVzb3Vy
Y2VUeXBlID09IE90aGVyKQpAQCAtMzA1LDcgKzM4NCw3IEBAIFN0cmluZyBJbnNwZWN0b3JSZXNv
dXJjZTo6c291cmNlU3RyaW5nKCkgY29uc3QKIAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IElu
c3BlY3RvclJlc291cmNlOjpyZXNvdXJjZURhdGEoU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKSBj
b25zdAogewotICAgIGlmIChtX3JlcXVlc3RVUkwgPT0gbV9sb2FkZXItPnJlcXVlc3RVUkwoKSkg
eworICAgIGlmIChtX2xvYWRlciAmJiBtX3JlcXVlc3RVUkwgPT0gbV9sb2FkZXItPnJlcXVlc3RV
UkwoKSkgewogICAgICAgICAqdGV4dEVuY29kaW5nTmFtZSA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PmlucHV0RW5jb2RpbmcoKTsKICAgICAgICAgcmV0dXJuIG1fbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKaW5kZXggOWI5
MTg4OWIxOWY3ZTNhNDZhOTZhOWMzNTQ0ZDA1Mzc1MzhjYmY5ZC4uMmFhYTBjNDdjYmY3NmU1ZWUx
MGU5Njk2NjRiMzU3YzVhMzk0NTgxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZS5oCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRTdHJpbmcuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuaCIKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KQEAgLTUwLDkgKzUyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwotCiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q7CisgICAg
Y2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U7CisjZW5kaWYKKwogICAgIGNsYXNzIElu
c3BlY3RvclJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yUmVzb3VyY2U+IHsK
ICAgICBwdWJsaWM6CiAKQEAgLTY1LDE2ICs3MSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICBTY3JpcHQsCiAgICAgICAgICAgICBYSFIsCiAgICAgICAgICAgICBNZWRpYSwK
KyAgICAgICAgICAgIFdlYlNvY2tldCwKICAgICAgICAgICAgIE90aGVyCiAgICAgICAgIH07CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IGNyZWF0ZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwm
IHJlcXVlc3RVUkwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW5zcGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0VVJMKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IGNyZWF0
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IEtVUkwmIHJlcXVlc3RVUkwpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
clJlc291cmNlPiBjcmVhdGVDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisgICAgICAgIC8vIFdlYlNvY2tldCByZXNvdXJjZSBkb2Vzbid0IGhhdmUgaXRzIGxvYWRl
ci4gRm9yIFdlYlNvY2tldCByZXNvdXJjZXMsIG1fbG9hZGVyIGFuZCBtX2ZyYW1lIHdpbGwgYmVj
b21lIG51bGwuCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBj
cmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1
ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CisjZW5kaWYKKwogICAgICAgICB+SW5z
cGVjdG9yUmVzb3VyY2UoKTsKIAogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNl
PiBhcHBlbmRSZWRpcmVjdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJl
ZGlyZWN0VVJMKTsKQEAgLTg0LDYgKzkzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCB1cGRhdGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2
b2lkIHVwZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKKyAgICAgICAgdm9pZCB1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0KGNvbnN0
IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmKTsKKyAgICAgICAgdm9pZCB1cGRhdGVXZWJTb2Nr
ZXRSZXNwb25zZShjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYpOworI2VuZGlmCisK
ICAgICAgICAgdm9pZCBzZXRPdmVycmlkZUNvbnRlbnQoY29uc3QgU2NyaXB0U3RyaW5nJiBkYXRh
LCBUeXBlKTsKIAogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nKCkgY29uc3Q7CkBAIC05Myw2
ICsxMDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbWFya01haW5SZXNv
dXJjZSgpIHsgbV9pc01haW5SZXNvdXJjZSA9IHRydWU7IH0KICAgICAgICAgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgICAgIEtV
UkwgcmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFVSTDsgfQorICAgICAgICBL
VVJMIGRvY3VtZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFVSTDsgfQogICAgICAg
ICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lLmdldCgpOyB9CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAg
ICAgICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJGaWVsZHMoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3RIZWFkZXJGaWVsZHM7IH0KQEAgLTE0NiwxNiArMTYxLDIxIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIENoYW5nZVR5cGUgbV9jaGFuZ2U7CiAgICAg
ICAgIH07CiAKLSAgICAgICAgSW5zcGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpOworICAgICAgICBJ
bnNwZWN0b3JSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpOwogICAg
ICAgICBUeXBlIHR5cGUoKSBjb25zdDsKIAogICAgICAgICBUeXBlIGNhY2hlZFJlc291cmNlVHlw
ZSgpIGNvbnN0OwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKSBjb25z
dDsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAgICAgdm9pZCBtYXJrV2ViU29ja2V0
KCkgeyBtX2lzV2ViU29ja2V0ID0gdHJ1ZTsgfQorI2VuZGlmCisKICAgICAgICAgdW5zaWduZWQg
bG9uZyBtX2lkZW50aWZpZXI7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9sb2Fk
ZXI7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKICAgICAgICAgS1VSTCBtX3JlcXVl
c3RVUkw7CisgICAgICAgIEtVUkwgbV9kb2N1bWVudFVSTDsKICAgICAgICAgSFRUUEhlYWRlck1h
cCBtX3JlcXVlc3RIZWFkZXJGaWVsZHM7CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgbV9yZXNwb25z
ZUhlYWRlckZpZWxkczsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CkBAIC0xNzksNiArMTk5
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fcmVxdWVzdE1ldGhv
ZDsKICAgICAgICAgU3RyaW5nIG1fcmVxdWVzdEZvcm1EYXRhOwogICAgICAgICBWZWN0b3I8UmVm
UHRyPEluc3BlY3RvclJlc291cmNlPiA+IG1fcmVkaXJlY3RzOworCisjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQorICAgICAgICBib29sIG1faXNXZWJTb2NrZXQ7CisKKyAgICAgICAgLy8gVGhlIGZv
bGxvd2luZyBmaWVsZHMgYXJlIG5vdCB1c2VkIGZvciByZXNvdXJjZXMgb3RoZXIgdGhhbiBXZWJT
b2NrZXQuCisgICAgICAgIC8vIFdlIGFsbG9jYXRlIHRoZW0gZHluYW1pY2FsbHkgdG8gcmVkdWNl
IG1lbW9yeSBjb25zdW1wdGlvbiBmb3IgcmVndWxhciByZXNvdXJjZXMuCisgICAgICAgIE93blB0
cjxXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpLZXkzPiBtX3dlYlNvY2tldFJlcXVlc3RLZXkz
OworICAgICAgICBPd25QdHI8V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJl
c3BvbnNlPiBtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlOworI2VuZGlmCiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
LmpzCmluZGV4IDJhZTIzYTBmOTMzNTg4M2U0ZmY5YjQxZjgzY2Y2MjZhNzVlYzk3ZDAuLmU2NmEz
MjA2ZDcwOWU2YTYzMWZmOGU3MGFmZjZmZjE3NmVkOWI2NDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTQ1LDcgKzQ1LDggQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUgPSB7CiAgICAgU2NyaXB0OiAgICAgNCwKICAgICBYSFI6ICAgICAgICA1LAogICAg
IE1lZGlhOiAgICAgIDYsCi0gICAgT3RoZXI6ICAgICAgNywKKyAgICBXZWJTb2NrZXQ6ICA3LAor
ICAgIE90aGVyOiAgICAgIDgsCiAKICAgICBpc1RleHRUeXBlOiBmdW5jdGlvbih0eXBlKQogICAg
IHsKQEAgLTY3LDYgKzY4LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUgPSB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygic2NyaXB0Iik7CiAgICAg
ICAgICAgICBjYXNlIHRoaXMuWEhSOgogICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlhIUiIpOworICAgICAgICAgICAgY2FzZSB0aGlzLldlYlNvY2tldDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXZWJTb2NrZXQiKTsK
ICAgICAgICAgICAgIGNhc2UgdGhpcy5PdGhlcjoKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygib3RoZXIiKTsKQEAgLTM1
Miw2ICszNTUsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFI6CiAgICAgICAgICAgICAg
ICAgdGhpcy5jYXRlZ29yeSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOwog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5XZWJTb2NrZXQ6CisgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeSA9IFdl
Ykluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMud2Vic29ja2V0OworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5PdGhl
cjoKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeSA9
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMub3RoZXI7CkBAIC01NjQsNyArNTcwLDgg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodHlw
ZW9mIHRoaXMudHlwZSA9PT0gInVuZGVmaW5lZCIKICAgICAgICAgIHx8IHRoaXMudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuT3RoZXIKLSAgICAgICAgIHx8IHRoaXMudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSKQorICAgICAgICAgfHwgdGhpcy50eXBl
ID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFIKKyAgICAgICAgIHx8IHRoaXMudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0KQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHRoaXMubWltZVR5cGUgaW4gV2ViSW5zcGVjdG9y
Lk1JTUVUeXBlcykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3Lmpz
CmluZGV4IGJmZDE1NzZkMmM3YjFkY2E0MDgxNWZlZjFmODU4ODJmYjEzNjA4MjguLjUxN2U5MTY1
NDEzMTczNjE5NDhlYzM1OGUyM2IxNmU1ZDUyODUxODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwpAQCAtMjc4LDEzICsyNzgsMTkgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVmcmVzaFJlcXVlc3RIZWFk
ZXJzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgSGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNvcnRl
ZFJlcXVlc3RIZWFkZXJzLCB0aGlzLnJlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOworICAgICAg
ICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNv
dXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5MyAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBh
ZGRpdGlvbmFsUm93ID0ge2hlYWRlcjogIihLZXkzKSIsIHZhbHVlOiB0aGlzLnJlc291cmNlLndl
YlNvY2tldFJlcXVlc3RLZXkzfTsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5yZXNvdXJjZS5zb3J0ZWRS
ZXF1ZXN0SGVhZGVycywgYWRkaXRpb25hbFJvdywgdGhpcy5yZXF1ZXN0SGVhZGVyc1RyZWVFbGVt
ZW50KTsKICAgICAgICAgdGhpcy5fcmVmcmVzaEZvcm1EYXRhKCk7CiAgICAgfSwKIAogICAgIF9y
ZWZyZXNoUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9y
ZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwg
dGhpcy5yZXNvdXJjZS5zb3J0ZWRSZXNwb25zZUhlYWRlcnMsIHRoaXMucmVzcG9uc2VIZWFkZXJz
VHJlZUVsZW1lbnQpOworICAgICAgICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7CisgICAgICAg
IGlmICh0eXBlb2YgdGhpcy5yZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSAhPT0g
InVuZGVmaW5lZCIpCisgICAgICAgICAgICBhZGRpdGlvbmFsUm93ID0ge2hlYWRlcjogIihDaGFs
bGVuZ2UgUmVzcG9uc2UpIiwgdmFsdWU6IHRoaXMucmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdl
UmVzcG9uc2V9OworICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5yZXNvdXJjZS5zb3J0ZWRSZXNwb25zZUhl
YWRlcnMsIGFkZGl0aW9uYWxSb3csIHRoaXMucmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQpOwog
ICAgIH0sCiAKICAgICBfcmVmcmVzaEhUVFBJbmZvcm1hdGlvbjogZnVuY3Rpb24oKQpAQCAtMzE1
LDcgKzMyMSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAgICAgfSwKICAgICAKLSAgICBfcmVmcmVzaEhlYWRlcnM6IGZ1bmN0aW9uKHRpdGxl
LCBoZWFkZXJzLCBoZWFkZXJzVHJlZUVsZW1lbnQpCisgICAgX3JlZnJlc2hIZWFkZXJzOiBmdW5j
dGlvbih0aXRsZSwgaGVhZGVycywgYWRkaXRpb25hbFJvdywgaGVhZGVyc1RyZWVFbGVtZW50KQog
ICAgIHsKICAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAg
LTMzMiw2ICszMzgsMTUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CiAgICAg
ICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyVHJlZUVsZW1lbnQp
OwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGFkZGl0aW9uYWxSb3cpIHsKKyAgICAgICAgICAg
IHZhciB0aXRsZSA9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLW5hbWVcIj4iICsgYWRkaXRpb25hbFJv
dy5oZWFkZXIuZXNjYXBlSFRNTCgpICsgIjo8L2Rpdj4iOworICAgICAgICAgICAgdGl0bGUgKz0g
IjxkaXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNlLWNvZGVcIj4iICsgYWRkaXRpb25hbFJv
dy52YWx1ZS5lc2NhcGVIVE1MKCkgKyAiPC9kaXY+IgorCisgICAgICAgICAgICB2YXIgaGVhZGVy
VHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQodGl0bGUsIG51bGwsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAg
IGhlYWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CisgICAg
ICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3MKaW5kZXggYjkyNjcyYWZhNzNlYjg2NjQ0Yzg0YmM5ZmRlY2JiMTU4NWE0MWZmYS4uOTI2ZTdj
OWZlNTUzNmIwMzk4NmM3NDM1MjUwOThjMDk4YzU1ODc1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTI3OTksNyArMjc5OSw4IEBAIGJ1dHRvbi5lbmFi
bGUtdG9nZ2xlLXN0YXR1cy1iYXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CiB9CiAKIC5yZXNv
dXJjZXMtY2F0ZWdvcnktZG9jdW1lbnRzLCAucmVzb3VyY2VzLWNhdGVnb3J5LXN0eWxlc2hlZXRz
LCAucmVzb3VyY2VzLWNhdGVnb3J5LWltYWdlcywKLS5yZXNvdXJjZXMtY2F0ZWdvcnktc2NyaXB0
cywgLnJlc291cmNlcy1jYXRlZ29yeS14aHIsIC5yZXNvdXJjZXMtY2F0ZWdvcnktZm9udHMsIC5y
ZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIgeworLnJlc291cmNlcy1jYXRlZ29yeS1zY3JpcHRzLCAu
cmVzb3VyY2VzLWNhdGVnb3J5LXhociwgLnJlc291cmNlcy1jYXRlZ29yeS1mb250cywKKy5yZXNv
dXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cywgLnJlc291cmNlcy1jYXRlZ29yeS1vdGhlciB7CiAg
ICAgZGlzcGxheTogbm9uZTsKIH0KIApAQCAtMjgwOSw2ICsyODEwLDcgQEAgYnV0dG9uLmVuYWJs
ZS10b2dnbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKIC5maWx0ZXItYWxs
IC5yZXNvdXJjZXMtY2F0ZWdvcnktc2NyaXB0cywgLmZpbHRlci1zY3JpcHRzIC5yZXNvdXJjZXMt
Y2F0ZWdvcnktc2NyaXB0cywKIC5maWx0ZXItYWxsIC5yZXNvdXJjZXMtY2F0ZWdvcnkteGhyLCAu
ZmlsdGVyLXhociAucmVzb3VyY2VzLWNhdGVnb3J5LXhociwKIC5maWx0ZXItYWxsIC5yZXNvdXJj
ZXMtY2F0ZWdvcnktZm9udHMsIC5maWx0ZXItZm9udHMgLnJlc291cmNlcy1jYXRlZ29yeS1mb250
cywKKy5maWx0ZXItYWxsIC5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cywgLmZpbHRlci13
ZWJzb2NrZXRzIC5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cywKIC5maWx0ZXItYWxsIC5y
ZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIsIC5maWx0ZXItb3RoZXIgLnJlc291cmNlcy1jYXRlZ29y
eS1vdGhlciwKIC5yZXNvdXJjZS1zaWRlYmFyLXRyZWUtaXRlbS5zZWxlY3RlZCB7CiAgICAgZGlz
cGxheTogbGlzdC1pdGVtOwpAQCAtMjg4NCw2ICsyODg2LDE1IEBAIGJ1dHRvbi5lbmFibGUtdG9n
Z2xlLXN0YXR1cy1iYXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CiAgICAgLXdlYmtpdC1ib3Jk
ZXItaW1hZ2U6IHVybChJbWFnZXMvdGltZWxpbmVIb2xsb3dQaWxsWWVsbG93LnBuZykgNiA3IDYg
NzsKIH0KIAorLyogRklYTUU6IENyZWF0ZSBiYXIgaW1hZ2VzIGZvciBXZWJTb2NrZXQuICovCisu
cmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMgLnJlc291cmNlcy1ncmFwaC1iYXIgeworICAg
IC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RpbWVsaW5lUGlsbEdyYXkucG5nKSA2
IDcgNiA3OworfQorCisucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMucmVzb3VyY2UtY2Fj
aGVkIC5yZXNvdXJjZXMtZ3JhcGgtYmFyIHsKKyAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwo
SW1hZ2VzL3RpbWVsaW5lSG9sbG93UGlsbEdyYXkucG5nKSA2IDcgNiA3OworfQorCiAjcmVzb3Vy
Y2Utdmlld3MgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDIzcHg7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAzYmI0MTgwN2JkMDk3MTE3
ODE4OGMxNjY3Yjc2YjliYTcxZGFkY2QwLi42NGNiMjBkNjYzZTFlNzNlMjFmNWUzODQxOGE2ZjQ4
Nzk5OTNhZTBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAg
LTQ2Myw2ICs0NjMsNyBAQCBXZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogICAgICAg
ICBzY3JpcHRzOiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2F0ZWdvcnkoInNjcmlwdHMiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdHMiKSwgInJnYigyNTUsMTIxLDApIiksCiAgICAg
ICAgIHhocjogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJ4aHIiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlhIUiIpLCAicmdiKDIzMSwyMzEsMTApIiksCiAgICAgICAgIGZvbnRz
OiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2F0ZWdvcnkoImZvbnRzIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJGb250cyIpLCAicmdiKDI1NSw4Miw2MikiKSwKKyAgICAgICAgd2Vic29ja2V0
OiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2F0ZWdvcnkoIndlYnNvY2tldHMiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIldlYlNvY2tldCIpLCAicmdiKDE4NiwxODYsMTg2KSIpLCAvLyBGSVhN
RTogRGVjaWRlIHRoZSBjb2xvci4KICAgICAgICAgb3RoZXI6IG5ldyBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VDYXRlZ29yeSgib3RoZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk90aGVyIiksICJy
Z2IoMTg2LDE4NiwxODYpIikKICAgICB9OwogCkBAIC0xMTU1LDYgKzExNTYsOCBAQCBXZWJJbnNw
ZWN0b3IudXBkYXRlUmVzb3VyY2UgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBwYXlsb2FkKQogICAg
ICAgICByZXNvdXJjZS5yZXF1ZXN0Rm9ybURhdGEgPSBwYXlsb2FkLnJlcXVlc3RGb3JtRGF0YTsK
ICAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gcGF5bG9hZC5jYWNoZWQ7CiAgICAgICAgIHJlc291
cmNlLmRvY3VtZW50VVJMID0gcGF5bG9hZC5kb2N1bWVudFVSTDsKKyAgICAgICAgaWYgKHR5cGVv
ZiBwYXlsb2FkLndlYlNvY2tldFJlcXVlc3RLZXkzICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAg
ICAgIHJlc291cmNlLndlYlNvY2tldFJlcXVlc3RLZXkzID0gcGF5bG9hZC53ZWJTb2NrZXRSZXF1
ZXN0S2V5MzsKIAogICAgICAgICBpZiAocmVzb3VyY2UubWFpblJlc291cmNlKQogICAgICAgICAg
ICAgdGhpcy5tYWluUmVzb3VyY2UgPSByZXNvdXJjZTsKQEAgLTExNzQsNiArMTE3Nyw4IEBAIFdl
Ykluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHBheWxvYWQp
CiAgICAgICAgIHJlc291cmNlLnN0YXR1c1RleHQgPSBwYXlsb2FkLnN0YXR1c1RleHQ7CiAgICAg
ICAgIHJlc291cmNlLnN1Z2dlc3RlZEZpbGVuYW1lID0gcGF5bG9hZC5zdWdnZXN0ZWRGaWxlbmFt
ZTsKICAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzID0gcGF5bG9hZC5yZXNwb25zZUhl
YWRlcnM7CisgICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNw
b25zZSAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXNvdXJjZS53ZWJTb2NrZXRDaGFs
bGVuZ2VSZXNwb25zZSA9IHBheWxvYWQud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2U7CiAgICAg
fQogCiAgICAgaWYgKHBheWxvYWQuZGlkVHlwZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU4NTlmZDdmMDY1MDdmMzM3YzI4MTgyNmFjOGM2MTRi
MjcwYjI5MzUuLmM2MThkODY0NDZiMzczYWRiZTczNzEyZmNhNzdhYWQwYTFlNmY4ZjAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM2LDggKzM2LDExIEBACiAK
ICNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NU
cmFja2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNvY2tldFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCkBA
IC02Miw3ICs2NSwxNCBAQCBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYQogICAgICwgbV9zdXNwZW5k
ZWQoZmFsc2UpCiAgICAgLCBtX2Nsb3NlZChmYWxzZSkKICAgICAsIG1fdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQoMCkKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICwgbV9pZGVudGlmaWVyKDAp
CisjZW5kaWYKIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBjb250cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisg
ICAgICAgIGNvbnRyb2xsZXItPmRpZENyZWF0ZVdlYlNvY2tldChpZGVudGlmaWVyKCksIHVybCwg
bV9jb250ZXh0LT51cmwoKSk7CisjZW5kaWYKIH0KIAogV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNv
Y2tldENoYW5uZWwoKQpAQCAtMTExLDYgKzEyMSwxMSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmNsb3NlKCkKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlzY29ubmVjdCgpCiB7CiAgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpc2Nvbm5lY3QiLCB0aGlzKTsKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVy
KCkpCisgICAgICAgICAgICBjb250cm9sbGVyLT5kaWRDbG9zZVdlYlNvY2tldChpZGVudGlmaWVy
KCkpOworI2VuZGlmCiAgICAgbV9oYW5kc2hha2UuY2xlYXJTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgbV9jbGllbnQgPSAwOwogICAgIG1fY29udGV4dCA9IDA7CkBAIC0xMzYsNiArMTUx
LDEwIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUq
IGhhbmRsZSkKICAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlKTsKICAgICBpZiAoIW1fY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkKKyAgICAgICAgY29udHJvbGxlci0+d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0KGlkZW50aWZpZXIoKSwgbV9oYW5kc2hha2UuY2xpZW50SGFuZHNoYWtlUmVxdWVzdCgp
KTsKKyNlbmRpZgogICAgIGNvbnN0IENTdHJpbmcmIGhhbmRzaGFrZU1lc3NhZ2UgPSBtX2hhbmRz
aGFrZS5jbGllbnRIYW5kc2hha2VNZXNzYWdlKCk7CiAgICAgaWYgKCFoYW5kbGUtPnNlbmQoaGFu
ZHNoYWtlTWVzc2FnZS5kYXRhKCksIGhhbmRzaGFrZU1lc3NhZ2UubGVuZ3RoKCkpKSB7CiAgICAg
ICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIHNlbmRpbmcgaGFuZHNoYWtlIG1lc3NhZ2UuIiwg
MCwgbV9oYW5kc2hha2UuY2xpZW50T3JpZ2luKCkpOwpAQCAtMTQ2LDYgKzE2NSwxMSBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxl
KQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZSIsIHRo
aXMpOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPmRpZENsb3NlV2ViU29ja2V0
KGlkZW50aWZpZXIoKSk7CisjZW5kaWYKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxl
ID09IG1faGFuZGxlIHx8ICFtX2hhbmRsZSk7CiAgICAgbV9jbG9zZWQgPSB0cnVlOwogICAgIGlm
IChtX2hhbmRsZSkgewpAQCAtMjM3LDYgKzI2MSwxMCBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6
OnByb2Nlc3NCdWZmZXIoKQogICAgICAgICBpZiAoaGVhZGVyTGVuZ3RoIDw9IDApCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChtX2hhbmRzaGFrZS5tb2RlKCkgPT0gV2Vi
U29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAg
ICAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvbnRleHQt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgICAgICBjb250cm9sbGVyLT5kaWRS
ZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoaWRlbnRpZmllcigpLCBtX2hhbmRzaGFr
ZS5zZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpKTsKKyNlbmRpZgogICAgICAgICAgICAgaWYgKCFt
X2hhbmRzaGFrZS5zZXJ2ZXJTZXRDb29raWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX2NvbnRleHQpOwpAQCAt
MzI4LDYgKzM1NiwyMSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQo
VGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQogICAgICAgICBkaWRDbG9zZShtX2hhbmRs
ZS5nZXQoKSk7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQordW5zaWduZWQgbG9uZyBXZWJT
b2NrZXRDaGFubmVsOjppZGVudGlmaWVyKCkKK3sKKyAgICBpZiAobV9pZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gbV9pZGVudGlmaWVyOworCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBjb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkpCisgICAgICAgICAg
ICBtX2lkZW50aWZpZXIgPSBwYWdlLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVy
KCk7CisKKyAgICBBU1NFUlQobV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gbV9pZGVudGlmaWVy
OworfQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKIH0gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKaW5kZXggYTkwYzZkYzExZjJjZDhhOTUwNDcyZGJhZmY4NTQxYTNhOTRh
MGE0ZS4uNDhjNTFjY2YxYjNiOTA2Y2U1M2E5Yzg1ZjA1MGUwYzkzNjEyZTU4NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC04NCw2ICs4NCwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcHJvY2Vzc0J1ZmZlcigpOwogICAgICAgICB2b2lkIHJl
c3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKTsKIAorI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpOworI2Vu
ZGlmCisKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogICAgICAg
ICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgV2ViU29ja2V0SGFu
ZHNoYWtlIG1faGFuZHNoYWtlOwpAQCAtOTUsNiArOTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIG1fc3VzcGVuZGVkOwogICAgICAgICBib29sIG1fY2xvc2VkOwogICAg
ICAgICB1bnNpZ25lZCBsb25nIG1fdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQ7CisKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKKyNlbmRp
ZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60592</attachid>
            <date>2010-07-05 23:42:08 -0700</date>
            <delta_ts>2010-07-06 05:05:29 -0700</delta_ts>
            <desc>Patch v3 (Remove documentURL function)</desc>
            <filename>bug-40768-20100706154206.patch</filename>
            <type>text/plain</type>
            <size>32333</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTY2MWRjMTJiNWE4NWNmNjFjMTgzYTA4ODNmMzM4NDk3ODBiMzIxNy4uMWM2ZDU1YzI2MmViMWM3
MDUyYzAzZjAxZjNmN2RiMjBlOGJjMTEzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxMC0wNy0wNSAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViU29ja2V0IHJlc291cmNlIHR5cGUgdG8g
V2ViIEluc3BlY3Rvci4KKworICAgICAgICBXaGVuIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLCBhIGxpbmUgZm9yIHRoYXQgY29ubmVjdGlvbgorICAgICAgICB3aWxs
IGFwcGVhciBpbiBXZWIgSW5zcGVjdG9yJ3MgUmVzb3VyY2VzIHRhYi4gSWYgdGhlIHJlc291cmNl
IG5hbWUgaXMKKyAgICAgICAgY2xpY2tlZCwgdGhlIGRldGFpbHMgb2YgaGFuZHNoYWtlIHJlcXVl
c3QgYW5kIHJlc3BvbnNlIHdpbGwgYmUgc2hvd24uCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
V2ViU29ja2V0IGluIFJlc291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNzY4CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRSZXNvdXJjZSk6IFdlYlNvY2tldCByZXNvdXJjZSBkb2VzIG5vdAorICAgICAgICBoYXZlIGFu
IGFzc29jaWF0ZWQgbG9hZGVyLCB0aHVzIGZyYW1lIG1pZ2h0IGJlIG51bGwuIE5lZWQgdG8gY2hl
Y2sgaXQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVSZXNv
dXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2Nr
ZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDogQWRkIG51bGwgY2hlY2tzIG9mIG1f
bG9hZGVyIGFuZCBtX2ZyYW1lLAorICAgICAgICBiZWNhdXNlIFdlYlNvY2tldCBkb2VzIG5vdCBo
YXZlIGEgbG9hZGVyIGFuZCB3ZSBuZWVkIHRvIGFsbG93IG51bGwgZm9yCisgICAgICAgIHRoZXNl
IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJp
bmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZSk6IEZh
Y3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgcmVndWxhciAobm9uLVdlYlNvY2tldCkgcmVzb3Vy
Y2VzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tl
dCk6IEZhY3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgV2ViU29ja2V0IHJlc291cmNlcy4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2Ny
aXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpjYWNoZWRS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6cmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlOjopOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6
Om1hcmtXZWJTb2NrZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Uu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS50b1N0cmluZyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLnNldCB0eXBlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuX21pbWVUeXBlSXNDb25zaXN0ZW50V2l0
aFR5cGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuX3JlZnJlc2hSZXF1
ZXN0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlw
ZS5fcmVmcmVzaFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VWaWV3LnByb3RvdHlwZS5fcmVmcmVzaEhlYWRlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vi
c29ja2V0cywgLnJlc291cmNlcy1jYXRlZ29yeS1vdGhlcik6CisgICAgICAgICgucmVzb3VyY2Vz
LWNhdGVnb3J5LXdlYnNvY2tldHMgLnJlc291cmNlcy1ncmFwaC1iYXIpOgorICAgICAgICAoLnJl
c291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLnJlc291cmNlLWNhY2hlZCAucmVzb3VyY2VzLWdy
YXBoLWJhcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci51cGRh
dGVSZXNvdXJjZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OnByb2Nlc3NCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6aWRlbnRpZmllcik6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Lmg6CisKIDIwMTAtMDctMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAppbmRleCBkNDE3YTZhN2I3OTIzODNjYTA2NThhODU3MzhjODY4ZmIwNzQyNTM2Li4wYzEwMTNj
OTEzOGNiODM4MTgyNzMxNDcwZjgwNDM4NTU5YzAwMWJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODA1LDYgKzgwNSw4IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6YWRkUmVzb3VyY2UoSW5zcGVjdG9yUmVzb3VyY2UqIHJlc291cmNlKQogICAg
IG1fa25vd25SZXNvdXJjZXMuYWRkKHJlc291cmNlLT5yZXF1ZXN0VVJMKCkpOwogCiAgICAgRnJh
bWUqIGZyYW1lID0gcmVzb3VyY2UtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuOwogICAgIFJlc291cmNlc01hcCogcmVzb3VyY2VNYXAgPSBtX2ZyYW1lUmVzb3VyY2Vz
LmdldChmcmFtZSk7CiAgICAgaWYgKHJlc291cmNlTWFwKQogICAgICAgICByZXNvdXJjZU1hcC0+
c2V0KHJlc291cmNlLT5pZGVudGlmaWVyKCksIHJlc291cmNlKTsKQEAgLTgyMyw2ICs4MjUsOCBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbW92ZVJlc291cmNlKEluc3BlY3RvclJlc291
cmNlKiByZXNvdXJjZSkKICAgICAgICAgbV9rbm93blJlc291cmNlcy5yZW1vdmUocmVxdWVzdFVS
TCk7CiAKICAgICBGcmFtZSogZnJhbWUgPSByZXNvdXJjZS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm47CiAgICAgUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCA9IG1f
ZnJhbWVSZXNvdXJjZXMuZ2V0KGZyYW1lKTsKICAgICBpZiAoIXJlc291cmNlTWFwKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTQ2Niw2ICsxNDcwLDU2IEBAIEluc3BlY3Rv
ckRPTVN0b3JhZ2VSZXNvdXJjZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0RE9NU3RvcmFnZVJl
c291cmNlRm9ySWQobG9uCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKK3Zv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRV
UkwpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQo
bV9pbnNwZWN0ZWRQYWdlKTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3Vy
Y2UgPSBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHJlcXVl
c3RVUkwsIGRvY3VtZW50VVJMKTsKKyAgICBhZGRSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSk7CisK
KyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVj
dChtX2Zyb250ZW5kLmdldCgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxs
U2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIFJlZlB0cjxJ
bnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmll
cik7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworICAgIHJlc291cmNlLT5z
dGFydFRpbWluZygpOworICAgIHJlc291cmNlLT51cGRhdGVXZWJTb2NrZXRSZXF1ZXN0KHJlcXVl
c3QpOworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0
T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gZ2V0VHJhY2tlZFJlc291cmNl
KGlkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKyAgICAv
LyBDYWxsaW5nIHJlc291cmNlLT5tYXJrUmVzcG9uc2VSZWNlaXZlZFRpbWUoKSBoZXJlIG1ha2Vz
IHJlc291cmNlcyBiYXIgY2hhcnQgY29uZnVzaW5nLCBiZWNhdXNlCisgICAgLy8gd2UgY2Fubm90
IGFwcGx5IHRoZSAibGF0ZW5jeSArIGRvd25sb2FkIiBtb2RlbCBvZiByZWd1bGFyIHJlc291cmNl
cyB0byBXZWJTb2NrZXQgY29ubmVjdGlvbnMuCisgICAgLy8gRklYTUU6IERlc2lnbiBhIG5ldyBV
SSBmb3IgYmFyIGNoYXJ0cyBvZiBXZWJTb2NrZXQgcmVzb3VyY2VzLCBhbmQgcmVjb3JkIHRpbWlu
ZyBoZXJlLgorICAgIHJlc291cmNlLT51cGRhdGVXZWJTb2NrZXRSZXNwb25zZShyZXNwb25zZSk7
CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmpl
Y3QobV9mcm9udGVuZC5nZXQoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworICAgIFJlZlB0cjxJ
bnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmll
cik7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzb3VyY2Ut
PmVuZFRpbWluZygpOworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICByZXNvdXJjZS0+dXBk
YXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShX
RUJfU09DS0VUUykKKwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJw
UHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggM2NjM2UzZWM2NDZi
YzUyNjViODg4YTQ3NjQ4NDEyZGZlZjAwMTU2OC4uNjE2NTk4OTgxYzYzMzg4NjVjMWVhYzYwNGJl
NTg1NmNlNWU1ZWRjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApA
QCAtOTAsNiArOTAsMTEgQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiBjbGFzcyBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKK2Ns
YXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q7CitjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZTsKKyNlbmRpZgorCiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyCiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU2NyaXB0
RGVidWdMaXN0ZW5lciwgcHVibGljIE5vbmNvcHlhYmxlCkBAIC0yMTUsNiArMjIwLDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGxvbmcgY2FsbElkLCBsb25nIHN0b3Jh
Z2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQg
cmVtb3ZlRE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBT
dHJpbmcmIGtleSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgdm9pZCBk
aWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CisgICAgdm9pZCB3aWxsU2VuZFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKKyNlbmRpZgogCiAgICAgY29uc3QgUmVzb3VyY2VzTWFwJiBy
ZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlczsgfQogICAgIEluc3BlY3RvclJl
c291cmNlKiByZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggZjBlMzkxZGU5NjI2ZTg2MGMxN2I1NGVlY2Rm
ZjJlZmMzN2RiNjlkNi4uNTE1N2E1MzdkZTBkYmI4YWI0YWYyZTJiNTk1OTIxYzhlOWYxZTA4NyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtNDEsMTYgKzQxLDQw
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU3RyaW5n
QnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgorI2luY2x1ZGUg
IldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3RvclJlc291cmNlOjpJbnNwZWN0
b3JSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpCisvLyBDcmVhdGUgaHVtYW4tcmVhZGFibGUgYmlu
YXJ5IHJlcHJlc2VudGF0aW9uLCBsaWtlICIwMToyMzo0NTo2Nzo4OTpBQjpDRDpFRiIuCitzdGF0
aWMgU3RyaW5nIGNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeShjb25zdCB1bnNpZ25lZCBj
aGFyKiB2YWx1ZSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoID4gMCk7Cisg
ICAgc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsK
KyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGxlbmd0aCAqIDMgLSAxOworICAgIFN0cmluZ0J1ZmZl
ciBidWZmZXIoYnVmZmVyU2l6ZSk7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChpID4gMCkKKyAgICAg
ICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9ICc6JzsKKyAgICAgICAgYnVmZmVyW2luZGV4KytdID0g
aGV4RGlnaXRzW3ZhbHVlW2ldID4+IDRdOworICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBoZXhE
aWdpdHNbdmFsdWVbaV0gJiAweEZdOworICAgIH0KKyAgICBBU1NFUlQoaW5kZXggPT0gYnVmZmVy
U2l6ZSk7CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKK30KKworSW5zcGVjdG9y
UmVzb3VyY2U6Okluc3BlY3RvclJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYg
ZG9jdW1lbnRVUkwpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fbG9h
ZGVyKGxvYWRlcikKLSAgICAsIG1fZnJhbWUobG9hZGVyLT5mcmFtZSgpKQorICAgICwgbV9mcmFt
ZShsb2FkZXIgPyBsb2FkZXItPmZyYW1lKCkgOiAwKQogICAgICwgbV9yZXF1ZXN0VVJMKHJlcXVl
c3RVUkwpCisgICAgLCBtX2RvY3VtZW50VVJMKGRvY3VtZW50VVJMKQogICAgICwgbV9leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoMCkKICAgICAsIG1fY2FjaGVkKGZhbHNlKQogICAgICwgbV9maW5pc2hl
ZChmYWxzZSkKQEAgLTYzLDYgKzg3LDkgQEAgSW5zcGVjdG9yUmVzb3VyY2U6Okluc3BlY3RvclJl
c291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGwKICAgICAs
IG1fbG9hZEV2ZW50VGltZSgtMS4wKQogICAgICwgbV9kb21Db250ZW50RXZlbnRUaW1lKC0xLjAp
CiAgICAgLCBtX2lzTWFpblJlc291cmNlKGZhbHNlKQorI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KyAgICAsIG1faXNXZWJTb2NrZXQoZmFsc2UpCisjZW5kaWYKIHsKIH0KIApAQCAtODUsNiArMTEy
LDEyIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291cmNlOjph
cHBlbmRSZWRpcmVjdCh1bnNpZ25lZCBsb25nIGlkCiAgICAgcmV0dXJuIHJlZGlyZWN0OwogfQog
CitQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
S1VSTCYgcmVxdWVzdFVSTCkKK3sKKyAgICBBU1NFUlQobG9hZGVyKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluc3BlY3RvclJlc291cmNlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdFVS
TCwgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKSkpOworfQorCiBQYXNzUmVmUHRy
PEluc3BlY3RvclJlc291cmNlPiBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlQ2FjaGVkKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQogewogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVz
b3VyY2U+IHJlc291cmNlID0gY3JlYXRlKGlkZW50aWZpZXIsIGxvYWRlciwgS1VSTChQYXJzZWRV
UkxTdHJpbmcsIGNhY2hlZFJlc291cmNlLT51cmwoKSkpOwpAQCAtMTA0LDYgKzEzNywxNSBAQCBQ
YXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlQ2Fj
aGVkKHVuc2lnbmVkIGxvbmcgaWRlbgogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAorI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3BlY3Rv
clJlc291cmNlOjpjcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCkKK3sKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlKG5ldyBJbnNwZWN0b3JSZXNvdXJjZShpZGVu
dGlmaWVyLCAwLCByZXF1ZXN0VVJMLCBkb2N1bWVudFVSTCkpOworICAgIHJlc291cmNlLT5tYXJr
V2ViU29ja2V0KCk7CisgICAgcmV0dXJuIHJlc291cmNlLnJlbGVhc2UoKTsKK30KKyNlbmRpZgor
CiB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKICAgICBtX3JlcXVlc3RIZWFkZXJGaWVsZHMgPSByZXF1ZXN0Lmh0
dHBIZWFkZXJGaWVsZHMoKTsKQEAgLTEzMiw2ICsxNzQsMjcgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZTo6dXBkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAg
ICAgbV9jaGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVdlYlNvY2tldFJlcXVlc3QoY29uc3Qg
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBtX3JlcXVlc3RIZWFk
ZXJGaWVsZHMgPSByZXF1ZXN0LmhlYWRlckZpZWxkcygpOworICAgIG1fcmVxdWVzdE1ldGhvZCA9
ICJHRVQiOyAvLyBDdXJyZW50bHkgd2UgYWx3YXlzIHVzZSAiR0VUIiB0byByZXF1ZXN0IGhhbmRz
aGFrZS4KKyAgICBtX3dlYlNvY2tldFJlcXVlc3RLZXkzLnNldChuZXcgV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdDo6S2V5MyhyZXF1ZXN0LmtleTMoKSkpOworICAgIG1fY2hhbmdlcy5zZXQoUmVx
dWVzdENoYW5nZSk7CisgICAgbV9jaGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlV2ViU29ja2V0UmVzcG9uc2UoY29uc3QgV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fcmVzcG9uc2VTdGF0dXNDb2Rl
ID0gcmVzcG9uc2Uuc3RhdHVzQ29kZSgpOworICAgIG1fcmVzcG9uc2VTdGF0dXNUZXh0ID0gcmVz
cG9uc2Uuc3RhdHVzVGV4dCgpOworICAgIG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMgPSByZXNwb25z
ZS5oZWFkZXJGaWVsZHMoKTsKKyAgICBtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlLnNldChu
ZXcgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlKHJlc3BvbnNl
LmNoYWxsZW5nZVJlc3BvbnNlKCkpKTsKKyAgICBtX2NoYW5nZXMuc2V0KFJlc3BvbnNlQ2hhbmdl
KTsKKyAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOworfQorI2VuZGlmIC8vIEVOQUJMRShX
RUJfU09DS0VUUykKKwogc3RhdGljIHZvaWQgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KFNjcmlwdE9i
amVjdCogb2JqZWN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogewogICAgIEhUVFBI
ZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7CkBAIC0xNDksNyAr
MjEyLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KEluc3Bl
Y3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICBTY3JpcHRPYmplY3QganNvbk9iamVjdCA9IGZy
b250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShS
ZXF1ZXN0Q2hhbmdlKSkgewogICAgICAgICBqc29uT2JqZWN0LnNldCgidXJsIiwgbV9yZXF1ZXN0
VVJMLnN0cmluZygpKTsKLSAgICAgICAganNvbk9iamVjdC5zZXQoImRvY3VtZW50VVJMIiwgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICBqc29uT2JqZWN0LnNl
dCgiZG9jdW1lbnRVUkwiLCBtX2RvY3VtZW50VVJMLnN0cmluZygpKTsKICAgICAgICAganNvbk9i
amVjdC5zZXQoImhvc3QiLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKICAgICAgICAganNvbk9iamVj
dC5zZXQoInBhdGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKICAgICAgICAganNvbk9iamVjdC5z
ZXQoImxhc3RQYXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50KCkp
OwpAQCAtMTYxLDYgKzIyNCwxMCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3Jp
cHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogICAgICAgICBqc29uT2JqZWN0
LnNldCgicmVxdWVzdEZvcm1EYXRhIiwgbV9yZXF1ZXN0Rm9ybURhdGEpOwogICAgICAgICBqc29u
T2JqZWN0LnNldCgiZGlkUmVxdWVzdENoYW5nZSIsIHRydWUpOwogICAgICAgICBqc29uT2JqZWN0
LnNldCgiY2FjaGVkIiwgbV9jYWNoZWQpOworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAg
ICAgaWYgKG1fd2ViU29ja2V0UmVxdWVzdEtleTMpCisgICAgICAgICAgICBqc29uT2JqZWN0LnNl
dCgid2ViU29ja2V0UmVxdWVzdEtleTMiLCBjcmVhdGVSZWFkYWJsZVN0cmluZ0Zyb21CaW5hcnko
bV93ZWJTb2NrZXRSZXF1ZXN0S2V5My0+dmFsdWUsIHNpemVvZihtX3dlYlNvY2tldFJlcXVlc3RL
ZXkzLT52YWx1ZSkpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hh
bmdlKFJlc3BvbnNlQ2hhbmdlKSkgewpAQCAtMTcyLDYgKzIzOSwxMCBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KQogICAgICAgICBTY3JpcHRPYmplY3QgcmVzcG9uc2VIZWFkZXJzID0gZnJvbnRlbmQtPm5ld1Nj
cmlwdE9iamVjdCgpOwogICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlc3BvbnNlSGVh
ZGVycywgbV9yZXNwb25zZUhlYWRlckZpZWxkcyk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJy
ZXNwb25zZUhlYWRlcnMiLCByZXNwb25zZUhlYWRlcnMpOworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKyAgICAgICAgaWYgKG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UpCisgICAgICAgICAg
ICBqc29uT2JqZWN0LnNldCgid2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UiLCBjcmVhdGVSZWFk
YWJsZVN0cmluZ0Zyb21CaW5hcnkobV93ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZS0+dmFsdWUs
IHNpemVvZihtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlLT52YWx1ZSkpKTsKKyNlbmRpZgog
ICAgICAgICBqc29uT2JqZWN0LnNldCgiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsKICAgICB9
CiAKQEAgLTIzMCw2ICszMDEsOCBAQCBDYWNoZWRSZXNvdXJjZSogSW5zcGVjdG9yUmVzb3VyY2U6
OmNhY2hlZFJlc291cmNlKCkgY29uc3QKICAgICAvLyBUcnkgaGFyZCB0byBmaW5kIGEgY29ycmVz
cG9uZGluZyBDYWNoZWRSZXNvdXJjZS4gRHVyaW5nIHByZWxvYWRpbmcsIERvY0xvYWRlciBtYXkg
bm90IGhhdmUgdGhlIHJlc291cmNlIGluIGRvY3VtZW50IHJlc291cmNlcyBzZXQgeWV0LAogICAg
IC8vIGJ1dCBJbnNwZWN0b3Igd2lsbCBhbHJlYWR5IHRyeSB0byBmZXRjaCBkYXRhIHRoYXQgaXMg
b25seSBhdmFpbGFibGUgdmlhIENhY2hlZFJlc291cmNlIChhbmQgaXQgd29uJ3QgdXBkYXRlIG9u
Y2UgdGhlIHJlc291cmNlIGlzIGFkZGVkLAogICAgIC8vIGJlY2F1c2UgbV9jaGFuZ2VzIHdpbGwg
bm90IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGJpdHMgc2V0KS4KKyAgICBpZiAoIW1fZnJhbWUpCisg
ICAgICAgIHJldHVybiAwOwogICAgIGNvbnN0IFN0cmluZyYgdXJsID0gbV9yZXF1ZXN0VVJMLnN0
cmluZygpOwogICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPmRvY0xvYWRlcigpLT5jYWNoZWRSZXNvdXJjZSh1cmwpOwogICAgIGlmICghY2Fj
aGVkUmVzb3VyY2UpCkBAIC0yNjYsNiArMzM5LDEyIEBAIEluc3BlY3RvclJlc291cmNlOjpUeXBl
IEluc3BlY3RvclJlc291cmNlOjp0eXBlKCkgY29uc3QKICAgICBpZiAoIW1fb3ZlcnJpZGVDb250
ZW50LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbV9vdmVycmlkZUNvbnRlbnRUeXBlOwogCisj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmIChtX2lzV2ViU29ja2V0KQorICAgICAgICBy
ZXR1cm4gV2ViU29ja2V0OworI2VuZGlmCisKKyAgICBBU1NFUlQobV9sb2FkZXIpOwogICAgIGlm
IChtX3JlcXVlc3RVUkwgPT0gbV9sb2FkZXItPnJlcXVlc3RVUkwoKSkgewogICAgICAgICBJbnNw
ZWN0b3JSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUgPSBjYWNoZWRSZXNvdXJjZVR5cGUoKTsK
ICAgICAgICAgaWYgKHJlc291cmNlVHlwZSA9PSBPdGhlcikKQEAgLTMwNSw3ICszODQsNyBAQCBT
dHJpbmcgSW5zcGVjdG9yUmVzb3VyY2U6OnNvdXJjZVN0cmluZygpIGNvbnN0CiAKIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JSZXNvdXJjZTo6cmVzb3VyY2VEYXRhKFN0cmluZyog
dGV4dEVuY29kaW5nTmFtZSkgY29uc3QKIHsKLSAgICBpZiAobV9yZXF1ZXN0VVJMID09IG1fbG9h
ZGVyLT5yZXF1ZXN0VVJMKCkpIHsKKyAgICBpZiAobV9sb2FkZXIgJiYgbV9yZXF1ZXN0VVJMID09
IG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpIHsKICAgICAgICAgKnRleHRFbmNvZGluZ05hbWUgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCk7CiAgICAgICAgIHJldHVybiBtX2xv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZS5oCmluZGV4IDliOTE4ODliMTlmN2UzYTQ2YTk2YTljMzU0NGQwNTM3NTM4Y2JmOWQu
LjI2MTEwZjJmYWJhNTAxZjY1YTliMDc5OTY1NGZjNWY0ZTJjZmUwNTQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuaApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIlNjcmlw
dE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3Ry
aW5nLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgorI2luY2x1ZGUg
IldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC01MCw5ICs1MiwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAgICAgY2xhc3MgRnJh
bWU7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLQogICAgIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBjbGFzcyBXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0OworICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOworI2Vu
ZGlmCisKICAgICBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElu
c3BlY3RvclJlc291cmNlPiB7CiAgICAgcHVibGljOgogCkBAIC02NSwxNiArNzEsMTkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgU2NyaXB0LAogICAgICAgICAgICAgWEhSLAog
ICAgICAgICAgICAgTWVkaWEsCisgICAgICAgICAgICBXZWJTb2NrZXQsCiAgICAgICAgICAgICBP
dGhlcgogICAgICAgICB9OwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJl
c291cmNlPiBjcmVhdGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvclJlc291cmNlKGlkZW50aWZpZXIsIGxvYWRlciwg
cmVxdWVzdFVSTCkpOwotICAgICAgICB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3RvclJlc291cmNlPiBjcmVhdGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKTsKIAogICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gY3JlYXRlQ2FjaGVkKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogCisj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICAvLyBXZWJTb2NrZXQgcmVzb3VyY2UgZG9l
c24ndCBoYXZlIGl0cyBsb2FkZXIuIEZvciBXZWJTb2NrZXQgcmVzb3VyY2VzLCBtX2xvYWRlciBh
bmQgbV9mcmFtZSB3aWxsIGJlY29tZSBudWxsLgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JSZXNvdXJjZT4gY3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpOworI2Vu
ZGlmCisKICAgICAgICAgfkluc3BlY3RvclJlc291cmNlKCk7CiAKICAgICAgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JSZXNvdXJjZT4gYXBwZW5kUmVkaXJlY3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBLVVJMJiByZWRpcmVjdFVSTCk7CkBAIC04NCw2ICs5MywxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdXBkYXRlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICAgICAgdm9pZCB1cGRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHZvaWQgdXBkYXRlV2Vi
U29ja2V0UmVxdWVzdChjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Jik7CisgICAgICAg
IHZvaWQgdXBkYXRlV2ViU29ja2V0UmVzcG9uc2UoY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UmKTsKKyNlbmRpZgorCiAgICAgICAgIHZvaWQgc2V0T3ZlcnJpZGVDb250ZW50KGNvbnN0
IFNjcmlwdFN0cmluZyYgZGF0YSwgVHlwZSk7CiAKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmlu
ZygpIGNvbnN0OwpAQCAtMTQ2LDE2ICsxNjAsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgQ2hhbmdlVHlwZSBtX2NoYW5nZTsKICAgICAgICAgfTsKIAotICAgICAgICBJbnNw
ZWN0b3JSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgS1VSTCYgcmVxdWVzdFVSTCk7CisgICAgICAgIEluc3BlY3RvclJlc291cmNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0
OwogCiAgICAgICAgIFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKCkgY29uc3Q7CiAgICAgICAgIENh
Y2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0OwogCisjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQorICAgICAgICB2b2lkIG1hcmtXZWJTb2NrZXQoKSB7IG1faXNXZWJTb2NrZXQgPSB0
cnVlOyB9CisjZW5kaWYKKwogICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKICAg
ICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2xvYWRlcjsKICAgICAgICAgUmVmUHRyPEZy
YW1lPiBtX2ZyYW1lOwogICAgICAgICBLVVJMIG1fcmVxdWVzdFVSTDsKKyAgICAgICAgS1VSTCBt
X2RvY3VtZW50VVJMOwogICAgICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlckZpZWxk
czsKICAgICAgICAgSFRUUEhlYWRlck1hcCBtX3Jlc3BvbnNlSGVhZGVyRmllbGRzOwogICAgICAg
ICBTdHJpbmcgbV9taW1lVHlwZTsKQEAgLTE3OSw2ICsxOTgsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwogICAgICAgICBTdHJpbmcgbV9y
ZXF1ZXN0Rm9ybURhdGE7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+
ID4gbV9yZWRpcmVjdHM7CisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIGJvb2wg
bV9pc1dlYlNvY2tldDsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgbm90
IHVzZWQgZm9yIHJlc291cmNlcyBvdGhlciB0aGFuIFdlYlNvY2tldC4KKyAgICAgICAgLy8gV2Ug
YWxsb2NhdGUgdGhlbSBkeW5hbWljYWxseSB0byByZWR1Y2UgbWVtb3J5IGNvbnN1bXB0aW9uIGZv
ciByZWd1bGFyIHJlc291cmNlcy4KKyAgICAgICAgT3duUHRyPFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3Q6OktleTM+IG1fd2ViU29ja2V0UmVxdWVzdEtleTM7CisgICAgICAgIE93blB0cjxXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U+IG1fd2ViU29ja2V0Q2hh
bGxlbmdlUmVzcG9uc2U7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5kZXggMmFlMjNhMGY5MzM1
ODgzZTRmZjliNDFmODNjZjYyNmE3NWVjOTdkMC4uZTY2YTMyMDZkNzA5ZTZhNjMxZmY4ZTcwYWZm
NmZmMTc2ZWQ5YjY0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpA
QCAtNDUsNyArNDUsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICBTY3Jp
cHQ6ICAgICA0LAogICAgIFhIUjogICAgICAgIDUsCiAgICAgTWVkaWE6ICAgICAgNiwKLSAgICBP
dGhlcjogICAgICA3LAorICAgIFdlYlNvY2tldDogIDcsCisgICAgT3RoZXI6ICAgICAgOCwKIAog
ICAgIGlzVGV4dFR5cGU6IGZ1bmN0aW9uKHR5cGUpCiAgICAgewpAQCAtNjcsNiArNjgsOCBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJzY3JpcHQiKTsKICAgICAgICAgICAgIGNhc2UgdGhpcy5YSFI6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIik7Cisg
ICAgICAgICAgICBjYXNlIHRoaXMuV2ViU29ja2V0OgorICAgICAgICAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldlYlNvY2tldCIpOwogICAgICAgICAgICAgY2FzZSB0aGlz
Lk90aGVyOgogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJvdGhlciIpOwpAQCAtMzUyLDYgKzM1NSw5IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLlhIUjoKICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gV2Vi
SW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy54aHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldDoK
KyAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0
ZWdvcmllcy53ZWJzb2NrZXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLk90aGVyOgogICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNl
Q2F0ZWdvcmllcy5vdGhlcjsKQEAgLTU2NCw3ICs1NzAsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlID09PSAidW5k
ZWZpbmVkIgogICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VHlwZS5PdGhlcgotICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5YSFIpCisgICAgICAgICB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLlhIUgorICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5XZWJTb2NrZXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAg
ICBpZiAodGhpcy5taW1lVHlwZSBpbiBXZWJJbnNwZWN0b3IuTUlNRVR5cGVzKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggYmZkMTU3NmQyYzdiMWRj
YTQwODE1ZmVmMWY4NTg4MmZiMTM2MDgyOC4uNTE3ZTkxNjU0MTMxNzM2MTk0OGVjMzU4ZTIzYjE2
ZTVkNTI4NTE4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3
LmpzCkBAIC0yNzgsMTMgKzI3OCwxOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3Rv
dHlwZSA9IHsKIAogICAgIF9yZWZyZXNoUmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVx
dWVzdCBIZWFkZXJzIiksIHRoaXMucmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhlYWRlcnMsIHRoaXMu
cmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAgIHZhciBhZGRpdGlvbmFsUm93ID0g
bnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc291cmNlLndlYlNvY2tldFJlcXVlc3RL
ZXkzICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVy
OiAiKEtleTMpIiwgdmFsdWU6IHRoaXMucmVzb3VyY2Uud2ViU29ja2V0UmVxdWVzdEtleTN9Owor
ICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVl
c3QgSGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNvcnRlZFJlcXVlc3RIZWFkZXJzLCBhZGRpdGlv
bmFsUm93LCB0aGlzLnJlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgICAgICB0aGlzLl9y
ZWZyZXNoRm9ybURhdGEoKTsKICAgICB9LAogCiAgICAgX3JlZnJlc2hSZXNwb25zZUhlYWRlcnM6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVzcG9uc2UgSGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNvcnRlZFJl
c3BvbnNlSGVhZGVycywgdGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAg
IHZhciBhZGRpdGlvbmFsUm93ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc291
cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAg
ICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVyOiAiKENoYWxsZW5nZSBSZXNwb25zZSkiLCB2YWx1
ZTogdGhpcy5yZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZX07CisgICAgICAgIHRo
aXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UgSGVhZGVy
cyIpLCB0aGlzLnJlc291cmNlLnNvcnRlZFJlc3BvbnNlSGVhZGVycywgYWRkaXRpb25hbFJvdywg
dGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CiAgICAgfSwKIAogICAgIF9yZWZyZXNo
SFRUUEluZm9ybWF0aW9uOiBmdW5jdGlvbigpCkBAIC0zMTUsNyArMzIxLDcgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogICAgIAot
ICAgIF9yZWZyZXNoSGVhZGVyczogZnVuY3Rpb24odGl0bGUsIGhlYWRlcnMsIGhlYWRlcnNUcmVl
RWxlbWVudCkKKyAgICBfcmVmcmVzaEhlYWRlcnM6IGZ1bmN0aW9uKHRpdGxlLCBoZWFkZXJzLCBh
ZGRpdGlvbmFsUm93LCBoZWFkZXJzVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBoZWFkZXJz
VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMzMyLDYgKzMzOCwxNSBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGhlYWRlclRy
ZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGhlYWRlcnNUcmVlRWxl
bWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CiAgICAgICAgIH0KKworICAgICAg
ICBpZiAoYWRkaXRpb25hbFJvdykgeworICAgICAgICAgICAgdmFyIHRpdGxlID0gIjxkaXYgY2xh
c3M9XCJoZWFkZXItbmFtZVwiPiIgKyBhZGRpdGlvbmFsUm93LmhlYWRlci5lc2NhcGVIVE1MKCkg
KyAiOjwvZGl2PiI7CisgICAgICAgICAgICB0aXRsZSArPSAiPGRpdiBjbGFzcz1cImhlYWRlci12
YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyBhZGRpdGlvbmFsUm93LnZhbHVlLmVzY2FwZUhUTUwoKSAr
ICI8L2Rpdj4iCisKKyAgICAgICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9IG5ldyBUcmVl
RWxlbWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOworICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1l
bnQuc2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmFw
cGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBkOGUyOWU4OWJhNTkw
MWY4OTRkYjUyYWE2ZDMzNzRhZmRhYWE5NTM4Li4xNWY4MzAyNjNkOTg2OTg4YTNlODI4OWU0Yjk5
MmMxZWU2OWQzOGEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
cwpAQCAtMjgwMyw3ICsyODAzLDggQEAgYnV0dG9uLmVuYWJsZS10b2dnbGUtc3RhdHVzLWJhci1p
dGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKIH0KIAogLnJlc291cmNlcy1jYXRlZ29yeS1kb2N1bWVu
dHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktc3R5bGVzaGVldHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnkt
aW1hZ2VzLAotLnJlc291cmNlcy1jYXRlZ29yeS1zY3JpcHRzLCAucmVzb3VyY2VzLWNhdGVnb3J5
LXhociwgLnJlc291cmNlcy1jYXRlZ29yeS1mb250cywgLnJlc291cmNlcy1jYXRlZ29yeS1vdGhl
ciB7CisucmVzb3VyY2VzLWNhdGVnb3J5LXNjcmlwdHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnkteGhy
LCAucmVzb3VyY2VzLWNhdGVnb3J5LWZvbnRzLAorLnJlc291cmNlcy1jYXRlZ29yeS13ZWJzb2Nr
ZXRzLCAucmVzb3VyY2VzLWNhdGVnb3J5LW90aGVyIHsKICAgICBkaXNwbGF5OiBub25lOwogfQog
CkBAIC0yODEzLDYgKzI4MTQsNyBAQCBidXR0b24uZW5hYmxlLXRvZ2dsZS1zdGF0dXMtYmFyLWl0
ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS1z
Y3JpcHRzLCAuZmlsdGVyLXNjcmlwdHMgLnJlc291cmNlcy1jYXRlZ29yeS1zY3JpcHRzLAogLmZp
bHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS14aHIsIC5maWx0ZXIteGhyIC5yZXNvdXJjZXMt
Y2F0ZWdvcnkteGhyLAogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS1mb250cywgLmZp
bHRlci1mb250cyAucmVzb3VyY2VzLWNhdGVnb3J5LWZvbnRzLAorLmZpbHRlci1hbGwgLnJlc291
cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLCAuZmlsdGVyLXdlYnNvY2tldHMgLnJlc291cmNlcy1j
YXRlZ29yeS13ZWJzb2NrZXRzLAogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS1vdGhl
ciwgLmZpbHRlci1vdGhlciAucmVzb3VyY2VzLWNhdGVnb3J5LW90aGVyLAogLnJlc291cmNlLXNp
ZGViYXItdHJlZS1pdGVtLnNlbGVjdGVkIHsKICAgICBkaXNwbGF5OiBsaXN0LWl0ZW07CkBAIC0y
ODg4LDYgKzI4OTAsMTUgQEAgYnV0dG9uLmVuYWJsZS10b2dnbGUtc3RhdHVzLWJhci1pdGVtLnRv
Z2dsZWQtb24gLmdseXBoIHsKICAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90
aW1lbGluZUhvbGxvd1BpbGxZZWxsb3cucG5nKSA2IDcgNiA3OwogfQogCisvKiBGSVhNRTogQ3Jl
YXRlIGJhciBpbWFnZXMgZm9yIFdlYlNvY2tldC4gKi8KKy5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vi
c29ja2V0cyAucmVzb3VyY2VzLWdyYXBoLWJhciB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6
IHVybChJbWFnZXMvdGltZWxpbmVQaWxsR3JheS5wbmcpIDYgNyA2IDc7Cit9CisKKy5yZXNvdXJj
ZXMtY2F0ZWdvcnktd2Vic29ja2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291cmNlcy1ncmFwaC1i
YXIgeworICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGltZWxpbmVIb2xsb3dQ
aWxsR3JheS5wbmcpIDYgNyA2IDc7Cit9CisKICNyZXNvdXJjZS12aWV3cyB7CiAgICAgcG9zaXRp
b246IGFic29sdXRlOwogICAgIHRvcDogMjNweDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzCmluZGV4IGM1Mjc0NWY0MGE4MWQ3OTI0YTIwYjIzZDhjZTVmMDIzZDg3NzYw
OWIuLjQyMTcxNmM1OGQ3NWI1NDkwOGFiOGUzYjgxMzg0ZDEyNDFhYTg1YmEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDY0LDYgKzQ2NCw3IEBAIFdlYklu
c3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgICAgIHNjcmlwdHM6IG5ldyBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSgic2NyaXB0cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2NyaXB0cyIpLCAicmdiKDI1NSwxMjEsMCkiKSwKICAgICAgICAgeGhyOiBuZXcgV2ViSW5zcGVj
dG9yLlJlc291cmNlQ2F0ZWdvcnkoInhociIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIiks
ICJyZ2IoMjMxLDIzMSwxMCkiKSwKICAgICAgICAgZm9udHM6IG5ldyBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VDYXRlZ29yeSgiZm9udHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvbnRzIiksICJy
Z2IoMjU1LDgyLDYyKSIpLAorICAgICAgICB3ZWJzb2NrZXQ6IG5ldyBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VDYXRlZ29yeSgid2Vic29ja2V0cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2ViU29j
a2V0IiksICJyZ2IoMTg2LDE4NiwxODYpIiksIC8vIEZJWE1FOiBEZWNpZGUgdGhlIGNvbG9yLgog
ICAgICAgICBvdGhlcjogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJvdGhlciIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3RoZXIiKSwgInJnYigxODYsMTg2LDE4NikiKQogICAg
IH07CiAKQEAgLTExNjEsNiArMTE2Miw4IEBAIFdlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSA9
IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHBheWxvYWQpCiAgICAgICAgIHJlc291cmNlLnJlcXVlc3RG
b3JtRGF0YSA9IHBheWxvYWQucmVxdWVzdEZvcm1EYXRhOwogICAgICAgICByZXNvdXJjZS5jYWNo
ZWQgPSBwYXlsb2FkLmNhY2hlZDsKICAgICAgICAgcmVzb3VyY2UuZG9jdW1lbnRVUkwgPSBwYXls
b2FkLmRvY3VtZW50VVJMOworICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQud2ViU29ja2V0UmVx
dWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmVzb3VyY2Uud2ViU29ja2V0
UmVxdWVzdEtleTMgPSBwYXlsb2FkLndlYlNvY2tldFJlcXVlc3RLZXkzOwogCiAgICAgICAgIGlm
IChyZXNvdXJjZS5tYWluUmVzb3VyY2UpCiAgICAgICAgICAgICB0aGlzLm1haW5SZXNvdXJjZSA9
IHJlc291cmNlOwpAQCAtMTE4MSw2ICsxMTg0LDggQEAgV2ViSW5zcGVjdG9yLnVwZGF0ZVJlc291
cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKICAgICAgICAgcmVzb3VyY2Uuc3Rh
dHVzVGV4dCA9IHBheWxvYWQuc3RhdHVzVGV4dDsKICAgICAgICAgcmVzb3VyY2Uuc3VnZ2VzdGVk
RmlsZW5hbWUgPSBwYXlsb2FkLnN1Z2dlc3RlZEZpbGVuYW1lOwogICAgICAgICByZXNvdXJjZS5y
ZXNwb25zZUhlYWRlcnMgPSBwYXlsb2FkLnJlc3BvbnNlSGVhZGVyczsKKyAgICAgICAgaWYgKHR5
cGVvZiBwYXlsb2FkLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikK
KyAgICAgICAgICAgIHJlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlID0gcGF5bG9h
ZC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZTsKICAgICB9CiAKICAgICBpZiAocGF5bG9hZC5k
aWRUeXBlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggNTg1OWZkN2YwNjUwN2YzMzdjMjgxODI2YWM4YzYxNGIyNzBiMjkzNS4uYzYxOGQ4NjQ0NmIz
NzNhZGJlNzM3MTJmY2E3N2FhZDBhMWU2ZjhmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtMzYsOCArMzYsMTEgQEAKIAogI2luY2x1ZGUgIkNvb2tpZUphci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIK
ICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKQEAgLTYyLDcgKzY1LDE0IEBAIFdlYlNv
Y2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgV2ViU29ja2V0Q2hhCiAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKICAgICAsIG1fY2xv
c2VkKGZhbHNlKQogICAgICwgbV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudCgwKQorI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgLCBtX2lkZW50aWZpZXIoMCkKKyNlbmRpZgogeworI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBt
X2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgY29udHJvbGxlci0+ZGlk
Q3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIoKSwgdXJsLCBtX2NvbnRleHQtPnVybCgpKTsKKyNl
bmRpZgogfQogCiBXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCkBAIC0xMTEs
NiArMTIxLDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQogdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpkaXNjb25uZWN0KCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgZGlzY29ubmVjdCIsIHRoaXMpOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
aWYgKG1fY29udGV4dCkKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgIGNvbnRy
b2xsZXItPmRpZENsb3NlV2ViU29ja2V0KGlkZW50aWZpZXIoKSk7CisjZW5kaWYKICAgICBtX2hh
bmRzaGFrZS5jbGVhclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBtX2NsaWVudCA9IDA7
CiAgICAgbV9jb250ZXh0ID0gMDsKQEAgLTEzNiw2ICsxNTEsMTAgQEAgdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpkaWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogICAgIEFTU0VSVCho
YW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29u
dHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBjb250
cm9sbGVyLT53aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllcigpLCBt
X2hhbmRzaGFrZS5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkpOworI2VuZGlmCiAgICAgY29uc3Qg
Q1N0cmluZyYgaGFuZHNoYWtlTWVzc2FnZSA9IG1faGFuZHNoYWtlLmNsaWVudEhhbmRzaGFrZU1l
c3NhZ2UoKTsKICAgICBpZiAoIWhhbmRsZS0+c2VuZChoYW5kc2hha2VNZXNzYWdlLmRhdGEoKSwg
aGFuZHNoYWtlTWVzc2FnZS5sZW5ndGgoKSkpIHsKICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAi
RXJyb3Igc2VuZGluZyBoYW5kc2hha2UgbWVzc2FnZS4iLCAwLCBtX2hhbmRzaGFrZS5jbGllbnRP
cmlnaW4oKSk7CkBAIC0xNDYsNiArMTY1LDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
T3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZGlkQ2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlIiwgdGhpcyk7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogY29udHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAg
ICAgICAgY29udHJvbGxlci0+ZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRpZmllcigpKTsKKyNlbmRp
ZgogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUgfHwgIW1faGFu
ZGxlKTsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAgICAgaWYgKG1faGFuZGxlKSB7CkBAIC0yMzcs
NiArMjYxLDEwIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAg
ICAgIGlmIChoZWFkZXJMZW5ndGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKG1faGFuZHNoYWtlLm1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5l
Y3RlZCkgeworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgICAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigp
KQorICAgICAgICAgICAgICAgIGNvbnRyb2xsZXItPmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZShpZGVudGlmaWVyKCksIG1faGFuZHNoYWtlLnNlcnZlckhhbmRzaGFrZVJlc3Bv
bnNlKCkpOworI2VuZGlmCiAgICAgICAgICAgICBpZiAoIW1faGFuZHNoYWtlLnNlcnZlclNldENv
b2tpZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQtPmlzRG9j
dW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7CkBAIC0zMjgsNiArMzU2LDIxIEBAIHZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVs
PiogdGltZXIpCiAgICAgICAgIGRpZENsb3NlKG1faGFuZGxlLmdldCgpKTsKIH0KIAorI2lmIEVO
QUJMRShJTlNQRUNUT1IpCit1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmlkZW50aWZp
ZXIoKQoreworICAgIGlmIChtX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBtX2lkZW50aWZp
ZXI7CisKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4
dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGNvbnRy
b2xsZXItPmluc3BlY3RlZFBhZ2UoKSkKKyAgICAgICAgICAgIG1faWRlbnRpZmllciA9IHBhZ2Ut
PnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKworICAgIEFTU0VSVChtX2lk
ZW50aWZpZXIpOworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKKwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFC
TEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBh
OTBjNmRjMTFmMmNkOGE5NTA0NzJkYmFmZjg1NDFhM2E5NGEwYTRlLi40OGM1MWNjZjFiM2I5MDZj
ZTUzYTljODVmMDUwZTBjOTM2MTJlNTg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmgKQEAgLTg0LDYgKzg0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBwcm9jZXNzQnVmZmVyKCk7CiAgICAgICAgIHZvaWQgcmVzdW1lVGltZXJGaXJlZChUaW1lcjxX
ZWJTb2NrZXRDaGFubmVsPiogdGltZXIpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCk7CisjZW5kaWYKKwogICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CiAgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGll
bnQqIG1fY2xpZW50OwogICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2UgbV9oYW5kc2hha2U7CkBA
IC05NSw2ICs5OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9zdXNw
ZW5kZWQ7CiAgICAgICAgIGJvb2wgbV9jbG9zZWQ7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV91
bmhhbmRsZWRCdWZmZXJlZEFtb3VudDsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAg
IHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60620</attachid>
            <date>2010-07-06 05:05:36 -0700</date>
            <delta_ts>2010-07-07 01:01:12 -0700</delta_ts>
            <desc>Patch v4 (Fix documentURL regression)</desc>
            <filename>bug-40768-20100706210533.patch</filename>
            <type>text/plain</type>
            <size>33477</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTBhMDY4MzJiMDc3YzY2OTA2NDBiMzA0MDMxN2NhYzNjNTg3MTAxMC4uNTY4Yzg4YjBhOGVlMjE3
ZWVmYjM2MTZkYTBhYzAzMWZhNzYzMjJjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAxMC0wNy0wNiAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViU29ja2V0IHJlc291cmNlIHR5cGUgdG8g
V2ViIEluc3BlY3Rvci4KKworICAgICAgICBXaGVuIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLCBhIGxpbmUgZm9yIHRoYXQgY29ubmVjdGlvbgorICAgICAgICB3aWxs
IGFwcGVhciBpbiBXZWIgSW5zcGVjdG9yJ3MgUmVzb3VyY2VzIHRhYi4gSWYgdGhlIHJlc291cmNl
IG5hbWUgaXMKKyAgICAgICAgY2xpY2tlZCwgdGhlIGRldGFpbHMgb2YgaGFuZHNoYWtlIHJlcXVl
c3QgYW5kIHJlc3BvbnNlIHdpbGwgYmUgc2hvd24uCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
V2ViU29ja2V0IGluIFJlc291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNzY4CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRSZXNvdXJjZSk6IFdlYlNvY2tldCByZXNvdXJjZSBkb2VzIG5vdAorICAgICAgICBoYXZlIGFu
IGFzc29jaWF0ZWQgbG9hZGVyLCB0aHVzIGZyYW1lIG1pZ2h0IGJlIG51bGwuIE5lZWQgdG8gY2hl
Y2sgaXQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVSZXNv
dXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2Nr
ZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDogQWRkIG51bGwgY2hlY2tzIG9mIG1f
bG9hZGVyIGFuZCBtX2ZyYW1lLAorICAgICAgICBiZWNhdXNlIFdlYlNvY2tldCBkb2VzIG5vdCBo
YXZlIGEgbG9hZGVyIGFuZCB3ZSBuZWVkIHRvIGFsbG93IG51bGwgZm9yCisgICAgICAgIHRoZXNl
IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJp
bmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZSk6IEZh
Y3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgcmVndWxhciAobm9uLVdlYlNvY2tldCkgcmVzb3Vy
Y2VzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tl
dCk6IEZhY3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgV2ViU29ja2V0IHJlc291cmNlcy4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2Ny
aXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpjYWNoZWRS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6cmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpkb2N1bWVudFVSTCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjptYXJr
V2ViU29ja2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUudG9TdHJpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5zZXQgdHlwZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9taW1lVHlwZUlzQ29uc2lzdGVudFdpdGhUeXBl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVxdWVzdEhl
YWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuX3Jl
ZnJlc2hSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmll
dy5wcm90b3R5cGUuX3JlZnJlc2hIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICgucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tl
dHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIpOgorICAgICAgICAoLnJlc291cmNlcy1jYXRl
Z29yeS13ZWJzb2NrZXRzIC5yZXNvdXJjZXMtZ3JhcGgtYmFyKToKKyAgICAgICAgKC5yZXNvdXJj
ZXMtY2F0ZWdvcnktd2Vic29ja2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291cmNlcy1ncmFwaC1i
YXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IudXBkYXRlUmVz
b3VyY2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmlkZW50aWZpZXIpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgor
CiAyMDEwLTA3LTA1ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBkNDE3YTZhN2I3OTIzODNjYTA2NThhODU3Mzhj
ODY4ZmIwNzQyNTM2Li4wYzEwMTNjOTEzOGNiODM4MTgyNzMxNDcwZjgwNDM4NTU5YzAwMWJjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODA1LDYgKzgw
NSw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUmVzb3VyY2UoSW5zcGVjdG9yUmVz
b3VyY2UqIHJlc291cmNlKQogICAgIG1fa25vd25SZXNvdXJjZXMuYWRkKHJlc291cmNlLT5yZXF1
ZXN0VVJMKCkpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gcmVzb3VyY2UtPmZyYW1lKCk7CisgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlc291cmNlc01hcCogcmVzb3VyY2VN
YXAgPSBtX2ZyYW1lUmVzb3VyY2VzLmdldChmcmFtZSk7CiAgICAgaWYgKHJlc291cmNlTWFwKQog
ICAgICAgICByZXNvdXJjZU1hcC0+c2V0KHJlc291cmNlLT5pZGVudGlmaWVyKCksIHJlc291cmNl
KTsKQEAgLTgyMyw2ICs4MjUsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbW92ZVJl
c291cmNlKEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZSkKICAgICAgICAgbV9rbm93blJlc291
cmNlcy5yZW1vdmUocmVxdWVzdFVSTCk7CiAKICAgICBGcmFtZSogZnJhbWUgPSByZXNvdXJjZS0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CiAgICAgUmVzb3VyY2Vz
TWFwKiByZXNvdXJjZU1hcCA9IG1fZnJhbWVSZXNvdXJjZXMuZ2V0KGZyYW1lKTsKICAgICBpZiAo
IXJlc291cmNlTWFwKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTQ2Niw2
ICsxNDcwLDU2IEBAIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZSogSW5zcGVjdG9yQ29udHJv
bGxlcjo6Z2V0RE9NU3RvcmFnZVJlc291cmNlRm9ySWQobG9uCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV2Vi
U29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwg
Y29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKKworICAgIFJlZlB0cjxJbnNw
ZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlV2ViU29j
a2V0KGlkZW50aWZpZXIsIHJlcXVlc3RVUkwsIGRvY3VtZW50VVJMKTsKKyAgICBhZGRSZXNvdXJj
ZShyZXNvdXJjZS5nZXQoKSk7CisKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgcmVzb3Vy
Y2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1
ZXN0KQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFj
a2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0
dXJuOworICAgIHJlc291cmNlLT5zdGFydFRpbWluZygpOworICAgIHJlc291cmNlLT51cGRhdGVX
ZWJTb2NrZXRSZXF1ZXN0KHJlcXVlc3QpOworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICBy
ZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworfQorCit2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlJiByZXNwb25zZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNl
ID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2UpCisg
ICAgICAgIHJldHVybjsKKyAgICAvLyBDYWxsaW5nIHJlc291cmNlLT5tYXJrUmVzcG9uc2VSZWNl
aXZlZFRpbWUoKSBoZXJlIG1ha2VzIHJlc291cmNlcyBiYXIgY2hhcnQgY29uZnVzaW5nLCBiZWNh
dXNlCisgICAgLy8gd2UgY2Fubm90IGFwcGx5IHRoZSAibGF0ZW5jeSArIGRvd25sb2FkIiBtb2Rl
bCBvZiByZWd1bGFyIHJlc291cmNlcyB0byBXZWJTb2NrZXQgY29ubmVjdGlvbnMuCisgICAgLy8g
RklYTUU6IERlc2lnbiBhIG5ldyBVSSBmb3IgYmFyIGNoYXJ0cyBvZiBXZWJTb2NrZXQgcmVzb3Vy
Y2VzLCBhbmQgcmVjb3JkIHRpbWluZyBoZXJlLgorICAgIHJlc291cmNlLT51cGRhdGVXZWJTb2Nr
ZXRSZXNwb25zZShyZXNwb25zZSk7CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJlc291
cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFj
a2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgcmVzb3VyY2UtPmVuZFRpbWluZygpOworICAgIGlmIChtX2Zyb250ZW5kKQor
ICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwor
fQorI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKwogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKFBhc3NSZWZQ
dHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKaW5kZXggM2NjM2UzZWM2NDZiYzUyNjViODg4YTQ3NjQ4NDEyZGZlZjAwMTU2OC4uNjE2NTk4
OTgxYzYzMzg4NjVjMWVhYzYwNGJlNTg1NmNlNWU1ZWRjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaApAQCAtOTAsNiArOTAsMTEgQEAgY2xhc3MgU3RvcmFnZUFyZWE7
CiBjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q7CitjbGFz
cyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTsKKyNlbmRpZgorCiBjbGFzcyBJbnNwZWN0b3JD
b250cm9sbGVyCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIE5vbmNvcHlhYmxlCkBA
IC0yMTUsNiArMjIwLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGxv
bmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogICAgIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxv
bmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisgICAgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7
CisgICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Jik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlk
Q2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyNlbmRpZgogCiAgICAg
Y29uc3QgUmVzb3VyY2VzTWFwJiByZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNl
czsgfQogICAgIEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcm
IHVybCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggZjBlMzkx
ZGU5NjI2ZTg2MGMxN2I1NGVlY2RmZjJlZmMzN2RiNjlkNi4uNmRkMDBlMDkwMGY4OTYzMTA3ZTg4
ODE1NDA3YTNhNjRjMmVkYjExMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
LmNwcApAQCAtNDEsMTYgKzQxLDQwIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCisjaW5jbHVkZSAiU3RyaW5nQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCisKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3Bl
Y3RvclJlc291cmNlOjpJbnNwZWN0b3JSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpCisvLyBDcmVh
dGUgaHVtYW4tcmVhZGFibGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uLCBsaWtlICIwMToyMzo0NTo2
Nzo4OTpBQjpDRDpFRiIuCitzdGF0aWMgU3RyaW5nIGNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJp
bmFyeShjb25zdCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBB
U1NFUlQobGVuZ3RoID4gMCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9
ICIwMTIzNDU2Nzg5QUJDREVGIjsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGxlbmd0aCAqIDMg
LSAxOworICAgIFN0cmluZ0J1ZmZlciBidWZmZXIoYnVmZmVyU2l6ZSk7CisgICAgc2l6ZV90IGlu
ZGV4ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9ICc6JzsKKyAgICAg
ICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW3ZhbHVlW2ldID4+IDRdOworICAgICAgICBi
dWZmZXJbaW5kZXgrK10gPSBoZXhEaWdpdHNbdmFsdWVbaV0gJiAweEZdOworICAgIH0KKyAgICBB
U1NFUlQoaW5kZXggPT0gYnVmZmVyU2l6ZSk7CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVm
ZmVyKTsKK30KKworSW5zcGVjdG9yUmVzb3VyY2U6Okluc3BlY3RvclJlc291cmNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgcmVx
dWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKICAgICAsIG1fbG9hZGVyKGxvYWRlcikKLSAgICAsIG1fZnJhbWUobG9hZGVyLT5m
cmFtZSgpKQorICAgICwgbV9mcmFtZShsb2FkZXIgPyBsb2FkZXItPmZyYW1lKCkgOiAwKQogICAg
ICwgbV9yZXF1ZXN0VVJMKHJlcXVlc3RVUkwpCisgICAgLCBtX2RvY3VtZW50VVJMKGRvY3VtZW50
VVJMKQogICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKICAgICAsIG1fY2FjaGVkKGZh
bHNlKQogICAgICwgbV9maW5pc2hlZChmYWxzZSkKQEAgLTYzLDYgKzg3LDkgQEAgSW5zcGVjdG9y
UmVzb3VyY2U6Okluc3BlY3RvclJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGwKICAgICAsIG1fbG9hZEV2ZW50VGltZSgtMS4wKQogICAgICwgbV9kb21D
b250ZW50RXZlbnRUaW1lKC0xLjApCiAgICAgLCBtX2lzTWFpblJlc291cmNlKGZhbHNlKQorI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAsIG1faXNXZWJTb2NrZXQoZmFsc2UpCisjZW5kaWYK
IHsKIH0KIApAQCAtODUsNiArMTEyLDE0IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+
IEluc3BlY3RvclJlc291cmNlOjphcHBlbmRSZWRpcmVjdCh1bnNpZ25lZCBsb25nIGlkCiAgICAg
cmV0dXJuIHJlZGlyZWN0OwogfQogCitQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBJbnNw
ZWN0b3JSZXNvdXJjZTo6Y3JlYXRlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCkKK3sKKyAgICBBU1NFUlQobG9h
ZGVyKTsKKyAgICAvLyBXZSBjYW5ub3Qgc2V0IGRvY3VtZW50VVJMIGhlcmUsIGJlY2F1c2UgbG9h
ZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKSBtYXkgbm90IGJlIGFjY3VyYXRlIGF0IHRo
aXMgbW9tZW50LgorICAgIC8vIEl0IHdpbGwgYmUgZmV0Y2hlZCBpbiBkb2N1bWVudFVSTCgpIG1l
dGhvZCB3aGVuIGl0IGJlY29tZXMgbmVjZXNzYXJ5LgorICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW5zcGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0VVJMLCBLVVJMKCkp
KTsKK30KKwogUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5zcGVjdG9yUmVzb3VyY2U6
OmNyZWF0ZUNhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBQYXNz
UmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZShpZGVudGlmaWVyLCBs
b2FkZXIsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBjYWNoZWRSZXNvdXJjZS0+dXJsKCkpKTsKQEAg
LTEwNCw2ICsxMzksMTUgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5zcGVjdG9y
UmVzb3VyY2U6OmNyZWF0ZUNhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW4KICAgICByZXR1cm4gcmVz
b3VyY2U7CiB9CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitQYXNzUmVmUHRyPEluc3BlY3Rv
clJlc291cmNlPiBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1l
bnRVUkwpCit7CisgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZShuZXcgSW5z
cGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgMCwgcmVxdWVzdFVSTCwgZG9jdW1lbnRVUkwpKTsK
KyAgICByZXNvdXJjZS0+bWFya1dlYlNvY2tldCgpOworICAgIHJldHVybiByZXNvdXJjZS5yZWxl
YXNlKCk7Cit9CisjZW5kaWYKKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgbV9yZXF1ZXN0SGVhZGVy
RmllbGRzID0gcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7CkBAIC0xMzIsNiArMTc2LDI3IEBA
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7CiB9CiAKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCit2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJT
b2NrZXRSZXF1ZXN0KGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmIHJlcXVlc3QpCit7
CisgICAgbV9yZXF1ZXN0SGVhZGVyRmllbGRzID0gcmVxdWVzdC5oZWFkZXJGaWVsZHMoKTsKKyAg
ICBtX3JlcXVlc3RNZXRob2QgPSAiR0VUIjsgLy8gQ3VycmVudGx5IHdlIGFsd2F5cyB1c2UgIkdF
VCIgdG8gcmVxdWVzdCBoYW5kc2hha2UuCisgICAgbV93ZWJTb2NrZXRSZXF1ZXN0S2V5My5zZXQo
bmV3IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6OktleTMocmVxdWVzdC5rZXkzKCkpKTsKKyAg
ICBtX2NoYW5nZXMuc2V0KFJlcXVlc3RDaGFuZ2UpOworICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNo
YW5nZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVdlYlNvY2tldFJlc3Bv
bnNlKGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBt
X3Jlc3BvbnNlU3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGUoKTsKKyAgICBtX3Jlc3Bv
bnNlU3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQoKTsKKyAgICBtX3Jlc3BvbnNlSGVh
ZGVyRmllbGRzID0gcmVzcG9uc2UuaGVhZGVyRmllbGRzKCk7CisgICAgbV93ZWJTb2NrZXRDaGFs
bGVuZ2VSZXNwb25zZS5zZXQobmV3IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVu
Z2VSZXNwb25zZShyZXNwb25zZS5jaGFsbGVuZ2VSZXNwb25zZSgpKSk7CisgICAgbV9jaGFuZ2Vz
LnNldChSZXNwb25zZUNoYW5nZSk7CisgICAgbV9jaGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKK30K
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKIHN0YXRpYyB2b2lkIHBvcHVsYXRlSGVh
ZGVyc09iamVjdChTY3JpcHRPYmplY3QqIG9iamVjdCwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVh
ZGVycykKIHsKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJz
LmVuZCgpOwpAQCAtMTQ5LDcgKzIxNCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0
ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgU2NyaXB0T2Jq
ZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7CiAgICAgaWYgKG1f
Y2hhbmdlcy5oYXNDaGFuZ2UoUmVxdWVzdENoYW5nZSkpIHsKICAgICAgICAganNvbk9iamVjdC5z
ZXQoInVybCIsIG1fcmVxdWVzdFVSTC5zdHJpbmcoKSk7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0
KCJkb2N1bWVudFVSTCIsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKKyAg
ICAgICAganNvbk9iamVjdC5zZXQoImRvY3VtZW50VVJMIiwgZG9jdW1lbnRVUkwoKS5zdHJpbmco
KSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJob3N0IiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7
CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJwYXRoIiwgbV9yZXF1ZXN0VVJMLnBhdGgoKSk7CiAg
ICAgICAgIGpzb25PYmplY3Quc2V0KCJsYXN0UGF0aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5s
YXN0UGF0aENvbXBvbmVudCgpKTsKQEAgLTE2MSw2ICsyMjYsMTAgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkK
ICAgICAgICAganNvbk9iamVjdC5zZXQoInJlcXVlc3RGb3JtRGF0YSIsIG1fcmVxdWVzdEZvcm1E
YXRhKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFJlcXVlc3RDaGFuZ2UiLCB0cnVlKTsK
ICAgICAgICAganNvbk9iamVjdC5zZXQoImNhY2hlZCIsIG1fY2FjaGVkKTsKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisgICAgICAgIGlmIChtX3dlYlNvY2tldFJlcXVlc3RLZXkzKQorICAgICAg
ICAgICAganNvbk9iamVjdC5zZXQoIndlYlNvY2tldFJlcXVlc3RLZXkzIiwgY3JlYXRlUmVhZGFi
bGVTdHJpbmdGcm9tQmluYXJ5KG1fd2ViU29ja2V0UmVxdWVzdEtleTMtPnZhbHVlLCBzaXplb2Yo
bV93ZWJTb2NrZXRSZXF1ZXN0S2V5My0+dmFsdWUpKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBp
ZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShSZXNwb25zZUNoYW5nZSkpIHsKQEAgLTE3Miw2ICsyNDEs
MTAgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KEluc3BlY3Rv
ckZyb250ZW5kKiBmcm9udGVuZCkKICAgICAgICAgU2NyaXB0T2JqZWN0IHJlc3BvbnNlSGVhZGVy
cyA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICAgICAgcG9wdWxhdGVIZWFkZXJz
T2JqZWN0KCZyZXNwb25zZUhlYWRlcnMsIG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMpOwogICAgICAg
ICBqc29uT2JqZWN0LnNldCgicmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9uc2VIZWFkZXJzKTsKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIGlmIChtX3dlYlNvY2tldENoYWxsZW5nZVJl
c3BvbnNlKQorICAgICAgICAgICAganNvbk9iamVjdC5zZXQoIndlYlNvY2tldENoYWxsZW5nZVJl
c3BvbnNlIiwgY3JlYXRlUmVhZGFibGVTdHJpbmdGcm9tQmluYXJ5KG1fd2ViU29ja2V0Q2hhbGxl
bmdlUmVzcG9uc2UtPnZhbHVlLCBzaXplb2YobV93ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZS0+
dmFsdWUpKSk7CisjZW5kaWYKICAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFJlc3BvbnNlQ2hh
bmdlIiwgdHJ1ZSk7CiAgICAgfQogCkBAIC0yMzAsNiArMzAzLDggQEAgQ2FjaGVkUmVzb3VyY2Uq
IEluc3BlY3RvclJlc291cmNlOjpjYWNoZWRSZXNvdXJjZSgpIGNvbnN0CiAgICAgLy8gVHJ5IGhh
cmQgdG8gZmluZCBhIGNvcnJlc3BvbmRpbmcgQ2FjaGVkUmVzb3VyY2UuIER1cmluZyBwcmVsb2Fk
aW5nLCBEb2NMb2FkZXIgbWF5IG5vdCBoYXZlIHRoZSByZXNvdXJjZSBpbiBkb2N1bWVudCByZXNv
dXJjZXMgc2V0IHlldCwKICAgICAvLyBidXQgSW5zcGVjdG9yIHdpbGwgYWxyZWFkeSB0cnkgdG8g
ZmV0Y2ggZGF0YSB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIHZpYSBDYWNoZWRSZXNvdXJjZSAoYW5k
IGl0IHdvbid0IHVwZGF0ZSBvbmNlIHRoZSByZXNvdXJjZSBpcyBhZGRlZCwKICAgICAvLyBiZWNh
dXNlIG1fY2hhbmdlcyB3aWxsIG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBiaXRzIHNldCkuCisg
ICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gMDsKICAgICBjb25zdCBTdHJpbmcmIHVy
bCA9IG1fcmVxdWVzdFVSTC5zdHJpbmcoKTsKICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2Uo
dXJsKTsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQpAQCAtMjY2LDYgKzM0MSwxMiBAQCBJbnNw
ZWN0b3JSZXNvdXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSgpIGNvbnN0CiAgICAg
aWYgKCFtX292ZXJyaWRlQ29udGVudC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG1fb3ZlcnJp
ZGVDb250ZW50VHlwZTsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAobV9pc1dl
YlNvY2tldCkKKyAgICAgICAgcmV0dXJuIFdlYlNvY2tldDsKKyNlbmRpZgorCisgICAgQVNTRVJU
KG1fbG9hZGVyKTsKICAgICBpZiAobV9yZXF1ZXN0VVJMID09IG1fbG9hZGVyLT5yZXF1ZXN0VVJM
KCkpIHsKICAgICAgICAgSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlID0gY2Fj
aGVkUmVzb3VyY2VUeXBlKCk7CiAgICAgICAgIGlmIChyZXNvdXJjZVR5cGUgPT0gT3RoZXIpCkBA
IC0zMDUsNyArMzg2LDcgQEAgU3RyaW5nIEluc3BlY3RvclJlc291cmNlOjpzb3VyY2VTdHJpbmco
KSBjb25zdAogCiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5zcGVjdG9yUmVzb3VyY2U6OnJl
c291cmNlRGF0YShTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKG1f
cmVxdWVzdFVSTCA9PSBtX2xvYWRlci0+cmVxdWVzdFVSTCgpKSB7CisgICAgaWYgKG1fbG9hZGVy
ICYmIG1fcmVxdWVzdFVSTCA9PSBtX2xvYWRlci0+cmVxdWVzdFVSTCgpKSB7CiAgICAgICAgICp0
ZXh0RW5jb2RpbmdOYW1lID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpOwog
ICAgICAgICByZXR1cm4gbV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICB9CkBAIC0z
MjksNiArNDEwLDE2IEBAIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JSZXNvdXJj
ZTo6cmVzb3VyY2VEYXRhKFN0cmluZyogdGV4dEVuY29kaW5nTmFtCiAgICAgcmV0dXJuIGNhY2hl
ZFJlc291cmNlLT5kYXRhKCk7CiB9CiAKK0tVUkwgSW5zcGVjdG9yUmVzb3VyY2U6OmRvY3VtZW50
VVJMKCkKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnRVUkwuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biBtX2RvY3VtZW50VVJMOworCisgICAgQVNTRVJUKG1fZnJhbWUpOworICAgIG1fZG9jdW1lbnRV
UkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICByZXR1cm4gbV9kb2N1bWVudFVS
TDsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6c3RhcnRUaW1pbmcoKQogewogICAgIG1f
c3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZS5oCmluZGV4IDliOTE4ODliMTlmN2UzYTQ2YTk2YTljMzU0NGQwNTM3NTM4Y2JmOWQuLjM0YWEy
ZDkyZDNiY2EzZjAxZTkyNzVmYmVkNzUxNWNjZDU3YzQ2YmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2UuaApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIlNjcmlwdE9iamVj
dC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RyaW5nLmgi
CisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC01MCw5ICs1MiwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAgICAgY2xhc3MgRnJhbWU7CiAg
ICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLQogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0OworICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOworI2VuZGlmCisK
ICAgICBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3Rv
clJlc291cmNlPiB7CiAgICAgcHVibGljOgogCkBAIC02NSwxNiArNzEsMTkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgU2NyaXB0LAogICAgICAgICAgICAgWEhSLAogICAgICAg
ICAgICAgTWVkaWEsCisgICAgICAgICAgICBXZWJTb2NrZXQsCiAgICAgICAgICAgICBPdGhlcgog
ICAgICAgICB9OwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNl
PiBjcmVhdGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluc3BlY3RvclJlc291cmNlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVz
dFVSTCkpOwotICAgICAgICB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJl
c291cmNlPiBjcmVhdGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKTsKIAogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gY3JlYXRlQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorICAgICAgICAvLyBXZWJTb2NrZXQgcmVzb3VyY2UgZG9lc24ndCBo
YXZlIGl0cyBsb2FkZXIuIEZvciBXZWJTb2NrZXQgcmVzb3VyY2VzLCBtX2xvYWRlciBhbmQgbV9m
cmFtZSB3aWxsIGJlY29tZSBudWxsLgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JSZXNvdXJjZT4gY3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpOworI2VuZGlmCisK
ICAgICAgICAgfkluc3BlY3RvclJlc291cmNlKCk7CiAKICAgICAgICAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JSZXNvdXJjZT4gYXBwZW5kUmVkaXJlY3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBLVVJMJiByZWRpcmVjdFVSTCk7CkBAIC04NCw2ICs5MywxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgdXBkYXRlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICAgICAgdm9pZCB1cGRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHZvaWQgdXBkYXRlV2ViU29ja2V0
UmVxdWVzdChjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Jik7CisgICAgICAgIHZvaWQg
dXBkYXRlV2ViU29ja2V0UmVzcG9uc2UoY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Um
KTsKKyNlbmRpZgorCiAgICAgICAgIHZvaWQgc2V0T3ZlcnJpZGVDb250ZW50KGNvbnN0IFNjcmlw
dFN0cmluZyYgZGF0YSwgVHlwZSk7CiAKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZygpIGNv
bnN0OwpAQCAtOTMsNiArMTA3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IG1hcmtNYWluUmVzb3VyY2UoKSB7IG1faXNNYWluUmVzb3VyY2UgPSB0cnVlOyB9CiAgICAgICAg
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQogICAgICAgICBLVVJMIHJlcXVlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RVUkw7
IH0KKyAgICAgICAgS1VSTCBkb2N1bWVudFVSTCgpOwogICAgICAgICBGcmFtZSogZnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lLmdldCgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgICAgIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJGaWVsZHMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RI
ZWFkZXJGaWVsZHM7IH0KQEAgLTE0NiwxNiArMTYxLDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIENoYW5nZVR5cGUgbV9jaGFuZ2U7CiAgICAgICAgIH07CiAKLSAgICAgICAg
SW5zcGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciosIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpOworICAgICAgICBJbnNwZWN0b3JSZXNvdXJjZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYgcmVx
dWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpOwogICAgICAgICBUeXBlIHR5cGUoKSBj
b25zdDsKIAogICAgICAgICBUeXBlIGNhY2hlZFJlc291cmNlVHlwZSgpIGNvbnN0OwogICAgICAg
ICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKSBjb25zdDsKIAorI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKKyAgICAgICAgdm9pZCBtYXJrV2ViU29ja2V0KCkgeyBtX2lzV2ViU29ja2V0
ID0gdHJ1ZTsgfQorI2VuZGlmCisKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7
CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9sb2FkZXI7CiAgICAgICAgIFJlZlB0
cjxGcmFtZT4gbV9mcmFtZTsKICAgICAgICAgS1VSTCBtX3JlcXVlc3RVUkw7CisgICAgICAgIEtV
UkwgbV9kb2N1bWVudFVSTDsKICAgICAgICAgSFRUUEhlYWRlck1hcCBtX3JlcXVlc3RIZWFkZXJG
aWVsZHM7CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgbV9yZXNwb25zZUhlYWRlckZpZWxkczsKICAg
ICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CkBAIC0xNzksNiArMTk5LDE1IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fcmVxdWVzdE1ldGhvZDsKICAgICAgICAgU3RyaW5n
IG1fcmVxdWVzdEZvcm1EYXRhOwogICAgICAgICBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclJlc291
cmNlPiA+IG1fcmVkaXJlY3RzOworCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICBi
b29sIG1faXNXZWJTb2NrZXQ7CisKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJl
IG5vdCB1c2VkIGZvciByZXNvdXJjZXMgb3RoZXIgdGhhbiBXZWJTb2NrZXQuCisgICAgICAgIC8v
IFdlIGFsbG9jYXRlIHRoZW0gZHluYW1pY2FsbHkgdG8gcmVkdWNlIG1lbW9yeSBjb25zdW1wdGlv
biBmb3IgcmVndWxhciByZXNvdXJjZXMuCisgICAgICAgIE93blB0cjxXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0OjpLZXkzPiBtX3dlYlNvY2tldFJlcXVlc3RLZXkzOworICAgICAgICBPd25QdHI8
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlPiBtX3dlYlNvY2tl
dENoYWxsZW5nZVJlc3BvbnNlOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCmluZGV4IDJhZTIzYTBm
OTMzNTg4M2U0ZmY5YjQxZjgzY2Y2MjZhNzVlYzk3ZDAuLmU2NmEzMjA2ZDcwOWU2YTYzMWZmOGU3
MGFmZjZmZjE3NmVkOWI2NDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Uu
anMKQEAgLTQ1LDcgKzQ1LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUgPSB7CiAgICAg
U2NyaXB0OiAgICAgNCwKICAgICBYSFI6ICAgICAgICA1LAogICAgIE1lZGlhOiAgICAgIDYsCi0g
ICAgT3RoZXI6ICAgICAgNywKKyAgICBXZWJTb2NrZXQ6ICA3LAorICAgIE90aGVyOiAgICAgIDgs
CiAKICAgICBpc1RleHRUeXBlOiBmdW5jdGlvbih0eXBlKQogICAgIHsKQEAgLTY3LDYgKzY4LDgg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygic2NyaXB0Iik7CiAgICAgICAgICAgICBjYXNlIHRoaXMu
WEhSOgogICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhIUiIp
OworICAgICAgICAgICAgY2FzZSB0aGlzLldlYlNvY2tldDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXZWJTb2NrZXQiKTsKICAgICAgICAgICAgIGNhc2Ug
dGhpcy5PdGhlcjoKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygib3RoZXIiKTsKQEAgLTM1Miw2ICszNTUsOSBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFI6CiAgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeSA9
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2Nr
ZXQ6CisgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeSA9IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZUNhdGVnb3JpZXMud2Vic29ja2V0OworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5PdGhlcjoKICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeSA9IFdlYkluc3BlY3Rvci5yZXNv
dXJjZUNhdGVnb3JpZXMub3RoZXI7CkBAIC01NjQsNyArNTcwLDggQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodHlwZW9mIHRoaXMudHlwZSA9PT0g
InVuZGVmaW5lZCIKICAgICAgICAgIHx8IHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUuT3RoZXIKLSAgICAgICAgIHx8IHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuWEhSKQorICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5YSFIKKyAgICAgICAgIHx8IHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuV2ViU29ja2V0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAgICAgaWYgKHRoaXMubWltZVR5cGUgaW4gV2ViSW5zcGVjdG9yLk1JTUVUeXBlcykKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCmluZGV4IGJmZDE1NzZkMmM3
YjFkY2E0MDgxNWZlZjFmODU4ODJmYjEzNjA4MjguLjUxN2U5MTY1NDEzMTczNjE5NDhlYzM1OGUy
M2IxNmU1ZDUyODUxODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
Vmlldy5qcwpAQCAtMjc4LDEzICsyNzgsMTkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5w
cm90b3R5cGUgPSB7CiAKICAgICBfcmVmcmVzaFJlcXVlc3RIZWFkZXJzOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlcXVlc3QgSGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNvcnRlZFJlcXVlc3RIZWFkZXJzLCB0
aGlzLnJlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOworICAgICAgICB2YXIgYWRkaXRpb25hbFJv
dyA9IG51bGw7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNvdXJjZS53ZWJTb2NrZXRSZXF1
ZXN0S2V5MyAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBhZGRpdGlvbmFsUm93ID0ge2hl
YWRlcjogIihLZXkzKSIsIHZhbHVlOiB0aGlzLnJlc291cmNlLndlYlNvY2tldFJlcXVlc3RLZXkz
fTsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
ZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5yZXNvdXJjZS5zb3J0ZWRSZXF1ZXN0SGVhZGVycywgYWRk
aXRpb25hbFJvdywgdGhpcy5yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsKICAgICAgICAgdGhp
cy5fcmVmcmVzaEZvcm1EYXRhKCk7CiAgICAgfSwKIAogICAgIF9yZWZyZXNoUmVzcG9uc2VIZWFk
ZXJzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5yZXNvdXJjZS5zb3J0
ZWRSZXNwb25zZUhlYWRlcnMsIHRoaXMucmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQpOworICAg
ICAgICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5y
ZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSAhPT0gInVuZGVmaW5lZCIpCisgICAg
ICAgICAgICBhZGRpdGlvbmFsUm93ID0ge2hlYWRlcjogIihDaGFsbGVuZ2UgUmVzcG9uc2UpIiwg
dmFsdWU6IHRoaXMucmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2V9OworICAgICAg
ICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhl
YWRlcnMiKSwgdGhpcy5yZXNvdXJjZS5zb3J0ZWRSZXNwb25zZUhlYWRlcnMsIGFkZGl0aW9uYWxS
b3csIHRoaXMucmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgIH0sCiAKICAgICBfcmVm
cmVzaEhUVFBJbmZvcm1hdGlvbjogZnVuY3Rpb24oKQpAQCAtMzE1LDcgKzMyMSw3IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKICAg
ICAKLSAgICBfcmVmcmVzaEhlYWRlcnM6IGZ1bmN0aW9uKHRpdGxlLCBoZWFkZXJzLCBoZWFkZXJz
VHJlZUVsZW1lbnQpCisgICAgX3JlZnJlc2hIZWFkZXJzOiBmdW5jdGlvbih0aXRsZSwgaGVhZGVy
cywgYWRkaXRpb25hbFJvdywgaGVhZGVyc1RyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaGVh
ZGVyc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAgLTMzMiw2ICszMzgsMTUgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBoZWFk
ZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBoZWFkZXJzVHJl
ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyVHJlZUVsZW1lbnQpOwogICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGFkZGl0aW9uYWxSb3cpIHsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8ZGl2
IGNsYXNzPVwiaGVhZGVyLW5hbWVcIj4iICsgYWRkaXRpb25hbFJvdy5oZWFkZXIuZXNjYXBlSFRN
TCgpICsgIjo8L2Rpdj4iOworICAgICAgICAgICAgdGl0bGUgKz0gIjxkaXYgY2xhc3M9XCJoZWFk
ZXItdmFsdWUgc291cmNlLWNvZGVcIj4iICsgYWRkaXRpb25hbFJvdy52YWx1ZS5lc2NhcGVIVE1M
KCkgKyAiPC9kaXY+IgorCisgICAgICAgICAgICB2YXIgaGVhZGVyVHJlZUVsZW1lbnQgPSBuZXcg
VHJlZUVsZW1lbnQodGl0bGUsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAgIGhlYWRlclRyZWVF
bGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVu
dC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CisgICAgICAgIH0KICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggZDhlMjllODli
YTU5MDFmODk0ZGI1MmFhNmQzMzc0YWZkYWFhOTUzOC4uMTVmODMwMjYzZDk4Njk4OGEzZTgyODll
NGI5OTJjMWVlNjlkMzhhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MKQEAgLTI4MDMsNyArMjgwMyw4IEBAIGJ1dHRvbi5lbmFibGUtdG9nZ2xlLXN0YXR1cy1i
YXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CiB9CiAKIC5yZXNvdXJjZXMtY2F0ZWdvcnktZG9j
dW1lbnRzLCAucmVzb3VyY2VzLWNhdGVnb3J5LXN0eWxlc2hlZXRzLCAucmVzb3VyY2VzLWNhdGVn
b3J5LWltYWdlcywKLS5yZXNvdXJjZXMtY2F0ZWdvcnktc2NyaXB0cywgLnJlc291cmNlcy1jYXRl
Z29yeS14aHIsIC5yZXNvdXJjZXMtY2F0ZWdvcnktZm9udHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnkt
b3RoZXIgeworLnJlc291cmNlcy1jYXRlZ29yeS1zY3JpcHRzLCAucmVzb3VyY2VzLWNhdGVnb3J5
LXhociwgLnJlc291cmNlcy1jYXRlZ29yeS1mb250cywKKy5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vi
c29ja2V0cywgLnJlc291cmNlcy1jYXRlZ29yeS1vdGhlciB7CiAgICAgZGlzcGxheTogbm9uZTsK
IH0KIApAQCAtMjgxMyw2ICsyODE0LDcgQEAgYnV0dG9uLmVuYWJsZS10b2dnbGUtc3RhdHVzLWJh
ci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKIC5maWx0ZXItYWxsIC5yZXNvdXJjZXMtY2F0ZWdv
cnktc2NyaXB0cywgLmZpbHRlci1zY3JpcHRzIC5yZXNvdXJjZXMtY2F0ZWdvcnktc2NyaXB0cywK
IC5maWx0ZXItYWxsIC5yZXNvdXJjZXMtY2F0ZWdvcnkteGhyLCAuZmlsdGVyLXhociAucmVzb3Vy
Y2VzLWNhdGVnb3J5LXhociwKIC5maWx0ZXItYWxsIC5yZXNvdXJjZXMtY2F0ZWdvcnktZm9udHMs
IC5maWx0ZXItZm9udHMgLnJlc291cmNlcy1jYXRlZ29yeS1mb250cywKKy5maWx0ZXItYWxsIC5y
ZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cywgLmZpbHRlci13ZWJzb2NrZXRzIC5yZXNvdXJj
ZXMtY2F0ZWdvcnktd2Vic29ja2V0cywKIC5maWx0ZXItYWxsIC5yZXNvdXJjZXMtY2F0ZWdvcnkt
b3RoZXIsIC5maWx0ZXItb3RoZXIgLnJlc291cmNlcy1jYXRlZ29yeS1vdGhlciwKIC5yZXNvdXJj
ZS1zaWRlYmFyLXRyZWUtaXRlbS5zZWxlY3RlZCB7CiAgICAgZGlzcGxheTogbGlzdC1pdGVtOwpA
QCAtMjg4OCw2ICsyODkwLDE1IEBAIGJ1dHRvbi5lbmFibGUtdG9nZ2xlLXN0YXR1cy1iYXItaXRl
bS50b2dnbGVkLW9uIC5nbHlwaCB7CiAgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFn
ZXMvdGltZWxpbmVIb2xsb3dQaWxsWWVsbG93LnBuZykgNiA3IDYgNzsKIH0KIAorLyogRklYTUU6
IENyZWF0ZSBiYXIgaW1hZ2VzIGZvciBXZWJTb2NrZXQuICovCisucmVzb3VyY2VzLWNhdGVnb3J5
LXdlYnNvY2tldHMgLnJlc291cmNlcy1ncmFwaC1iYXIgeworICAgIC13ZWJraXQtYm9yZGVyLWlt
YWdlOiB1cmwoSW1hZ2VzL3RpbWVsaW5lUGlsbEdyYXkucG5nKSA2IDcgNiA3OworfQorCisucmVz
b3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMucmVzb3VyY2UtY2FjaGVkIC5yZXNvdXJjZXMtZ3Jh
cGgtYmFyIHsKKyAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RpbWVsaW5lSG9s
bG93UGlsbEdyYXkucG5nKSA2IDcgNiA3OworfQorCiAjcmVzb3VyY2Utdmlld3MgewogICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDIzcHg7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCBjNTI3NDVmNDBhODFkNzkyNGEyMGIyM2Q4Y2U1ZjAyM2Q4
Nzc2MDliLi40MjE3MTZjNThkNzViNTQ5MDhhYjhlM2I4MTM4NGQxMjQxYWE4NWJhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTQ2NCw2ICs0NjQsNyBAQCBX
ZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogICAgICAgICBzY3JpcHRzOiBuZXcgV2Vi
SW5zcGVjdG9yLlJlc291cmNlQ2F0ZWdvcnkoInNjcmlwdHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNjcmlwdHMiKSwgInJnYigyNTUsMTIxLDApIiksCiAgICAgICAgIHhocjogbmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJ4aHIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhI
UiIpLCAicmdiKDIzMSwyMzEsMTApIiksCiAgICAgICAgIGZvbnRzOiBuZXcgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2F0ZWdvcnkoImZvbnRzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb250cyIp
LCAicmdiKDI1NSw4Miw2MikiKSwKKyAgICAgICAgd2Vic29ja2V0OiBuZXcgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2F0ZWdvcnkoIndlYnNvY2tldHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldl
YlNvY2tldCIpLCAicmdiKDE4NiwxODYsMTg2KSIpLCAvLyBGSVhNRTogRGVjaWRlIHRoZSBjb2xv
ci4KICAgICAgICAgb3RoZXI6IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSgib3Ro
ZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk90aGVyIiksICJyZ2IoMTg2LDE4NiwxODYpIikK
ICAgICB9OwogCkBAIC0xMTYxLDYgKzExNjIsOCBAQCBXZWJJbnNwZWN0b3IudXBkYXRlUmVzb3Vy
Y2UgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBwYXlsb2FkKQogICAgICAgICByZXNvdXJjZS5yZXF1
ZXN0Rm9ybURhdGEgPSBwYXlsb2FkLnJlcXVlc3RGb3JtRGF0YTsKICAgICAgICAgcmVzb3VyY2Uu
Y2FjaGVkID0gcGF5bG9hZC5jYWNoZWQ7CiAgICAgICAgIHJlc291cmNlLmRvY3VtZW50VVJMID0g
cGF5bG9hZC5kb2N1bWVudFVSTDsKKyAgICAgICAgaWYgKHR5cGVvZiBwYXlsb2FkLndlYlNvY2tl
dFJlcXVlc3RLZXkzICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJlc291cmNlLndlYlNv
Y2tldFJlcXVlc3RLZXkzID0gcGF5bG9hZC53ZWJTb2NrZXRSZXF1ZXN0S2V5MzsKIAogICAgICAg
ICBpZiAocmVzb3VyY2UubWFpblJlc291cmNlKQogICAgICAgICAgICAgdGhpcy5tYWluUmVzb3Vy
Y2UgPSByZXNvdXJjZTsKQEAgLTExODEsNiArMTE4NCw4IEBAIFdlYkluc3BlY3Rvci51cGRhdGVS
ZXNvdXJjZSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHBheWxvYWQpCiAgICAgICAgIHJlc291cmNl
LnN0YXR1c1RleHQgPSBwYXlsb2FkLnN0YXR1c1RleHQ7CiAgICAgICAgIHJlc291cmNlLnN1Z2dl
c3RlZEZpbGVuYW1lID0gcGF5bG9hZC5zdWdnZXN0ZWRGaWxlbmFtZTsKICAgICAgICAgcmVzb3Vy
Y2UucmVzcG9uc2VIZWFkZXJzID0gcGF5bG9hZC5yZXNwb25zZUhlYWRlcnM7CisgICAgICAgIGlm
ICh0eXBlb2YgcGF5bG9hZC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSAhPT0gInVuZGVmaW5l
ZCIpCisgICAgICAgICAgICByZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSA9IHBh
eWxvYWQud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2U7CiAgICAgfQogCiAgICAgaWYgKHBheWxv
YWQuZGlkVHlwZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
CmluZGV4IDU4NTlmZDdmMDY1MDdmMzM3YzI4MTgyNmFjOGM2MTRiMjcwYjI5MzUuLmM2MThkODY0
NDZiMzczYWRiZTczNzEyZmNhNzdhYWQwYTFlNmY4ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM2LDggKzM2LDExIEBACiAKICNpbmNsdWRlICJDb29raWVK
YXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9y
LmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCkBAIC02Miw3ICs2NSwxNCBAQCBX
ZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFdlYlNvY2tldENoYQogICAgICwgbV9zdXNwZW5kZWQoZmFsc2UpCiAgICAgLCBt
X2Nsb3NlZChmYWxzZSkKICAgICAsIG1fdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQoMCkKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgICwgbV9pZGVudGlmaWVyKDApCisjZW5kaWYKIHsKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIGNvbnRyb2xsZXIt
PmRpZENyZWF0ZVdlYlNvY2tldChpZGVudGlmaWVyKCksIHVybCwgbV9jb250ZXh0LT51cmwoKSk7
CisjZW5kaWYKIH0KIAogV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQpAQCAt
MTExLDYgKzEyMSwxMSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKCkKIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlzY29ubmVjdCgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXRDaGFubmVsICVwIGRpc2Nvbm5lY3QiLCB0aGlzKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
ICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250
cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgICBj
b250cm9sbGVyLT5kaWRDbG9zZVdlYlNvY2tldChpZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAg
bV9oYW5kc2hha2UuY2xlYXJTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgbV9jbGllbnQg
PSAwOwogICAgIG1fY29udGV4dCA9IDA7CkBAIC0xMzYsNiArMTUxLDEwIEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKICAgICBBU1NF
UlQoaGFuZGxlID09IG1faGFuZGxlKTsKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0
dXJuOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAg
Y29udHJvbGxlci0+d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50aWZpZXIo
KSwgbV9oYW5kc2hha2UuY2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpKTsKKyNlbmRpZgogICAgIGNv
bnN0IENTdHJpbmcmIGhhbmRzaGFrZU1lc3NhZ2UgPSBtX2hhbmRzaGFrZS5jbGllbnRIYW5kc2hh
a2VNZXNzYWdlKCk7CiAgICAgaWYgKCFoYW5kbGUtPnNlbmQoaGFuZHNoYWtlTWVzc2FnZS5kYXRh
KCksIGhhbmRzaGFrZU1lc3NhZ2UubGVuZ3RoKCkpKSB7CiAgICAgICAgIG1fY29udGV4dC0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIkVycm9yIHNlbmRpbmcgaGFuZHNoYWtlIG1lc3NhZ2UuIiwgMCwgbV9oYW5kc2hha2UuY2xp
ZW50T3JpZ2luKCkpOwpAQCAtMTQ2LDYgKzE2NSwxMSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogewogICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZSIsIHRoaXMpOworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAg
ICAgICAgICAgIGNvbnRyb2xsZXItPmRpZENsb3NlV2ViU29ja2V0KGlkZW50aWZpZXIoKSk7Cisj
ZW5kaWYKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlIHx8ICFt
X2hhbmRsZSk7CiAgICAgbV9jbG9zZWQgPSB0cnVlOwogICAgIGlmIChtX2hhbmRsZSkgewpAQCAt
MjM3LDYgKzI2MSwxMCBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIoKQog
ICAgICAgICBpZiAoaGVhZGVyTGVuZ3RoIDw9IDApCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGlmIChtX2hhbmRzaGFrZS5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtlOjpD
b25uZWN0ZWQpIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICAgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSkKKyAgICAgICAgICAgICAgICBjb250cm9sbGVyLT5kaWRSZWNlaXZlV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UoaWRlbnRpZmllcigpLCBtX2hhbmRzaGFrZS5zZXJ2ZXJIYW5kc2hha2VS
ZXNwb25zZSgpKTsKKyNlbmRpZgogICAgICAgICAgICAgaWYgKCFtX2hhbmRzaGFrZS5zZXJ2ZXJT
ZXRDb29raWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9jb250ZXh0LT5p
c0RvY3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX2NvbnRleHQpOwpAQCAtMzI4LDYgKzM1NiwyMSBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hh
bm5lbD4qIHRpbWVyKQogICAgICAgICBkaWRDbG9zZShtX2hhbmRsZS5nZXQoKSk7CiB9CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQordW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjppZGVu
dGlmaWVyKCkKK3sKKyAgICBpZiAobV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbV9pZGVu
dGlmaWVyOworCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2Nv
bnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBj
b250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkpCisgICAgICAgICAgICBtX2lkZW50aWZpZXIgPSBw
YWdlLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisKKyAgICBBU1NFUlQo
bV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyOworfQorI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCisKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAgLy8g
RU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5k
ZXggYTkwYzZkYzExZjJjZDhhOTUwNDcyZGJhZmY4NTQxYTNhOTRhMGE0ZS4uNDhjNTFjY2YxYjNi
OTA2Y2U1M2E5Yzg1ZjA1MGUwYzkzNjEyZTU4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oCkBAIC04NCw2ICs4NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgcHJvY2Vzc0J1ZmZlcigpOwogICAgICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoVGlt
ZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpOworI2VuZGlmCisKICAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogICAgICAgICBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlIG1faGFuZHNoYWtl
OwpAQCAtOTUsNiArOTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1f
c3VzcGVuZGVkOwogICAgICAgICBib29sIG1fY2xvc2VkOwogICAgICAgICB1bnNpZ25lZCBsb25n
IG1fdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQ7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAg
ICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60702</attachid>
            <date>2010-07-07 01:01:19 -0700</date>
            <delta_ts>2010-07-26 04:21:37 -0700</delta_ts>
            <desc>Patch v5 (Updated as per comment #22)</desc>
            <filename>bug-40768-20100707170116.patch</filename>
            <type>text/plain</type>
            <size>33308</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDM3ZDdjZGExYjJlNmY2OWFlMWNiMmVmM2RhYTUzY2ExN2VhOTQ3My4uMjhkMGE3NWFmNmE3MTUw
MDQ0ZTIyOGZmYjllMWNkYjJhMmU4NDYwMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAxMC0wNy0wNyAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViU29ja2V0IHJlc291cmNlIHR5cGUgdG8g
V2ViIEluc3BlY3Rvci4KKworICAgICAgICBXaGVuIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLCBhIGxpbmUgZm9yIHRoYXQgY29ubmVjdGlvbgorICAgICAgICB3aWxs
IGFwcGVhciBpbiBXZWIgSW5zcGVjdG9yJ3MgUmVzb3VyY2VzIHRhYi4gSWYgdGhlIHJlc291cmNl
IG5hbWUgaXMKKyAgICAgICAgY2xpY2tlZCwgdGhlIGRldGFpbHMgb2YgaGFuZHNoYWtlIHJlcXVl
c3QgYW5kIHJlc3BvbnNlIHdpbGwgYmUgc2hvd24uCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
V2ViU29ja2V0IGluIFJlc291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNzY4CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRSZXNvdXJjZSk6IFdlYlNvY2tldCByZXNvdXJjZSBkb2VzIG5vdAorICAgICAgICBoYXZlIGFu
IGFzc29jaWF0ZWQgbG9hZGVyLCB0aHVzIGZyYW1lIG1pZ2h0IGJlIG51bGwuIE5lZWQgdG8gY2hl
Y2sgaXQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVSZXNv
dXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2Nr
ZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDogQWRkIG51bGwgY2hlY2tzIG9mIG1f
bG9hZGVyIGFuZCBtX2ZyYW1lLAorICAgICAgICBiZWNhdXNlIFdlYlNvY2tldCBkb2VzIG5vdCBo
YXZlIGEgbG9hZGVyIGFuZCB3ZSBuZWVkIHRvIGFsbG93IG51bGwgZm9yCisgICAgICAgIHRoZXNl
IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJp
bmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZSk6IEZh
Y3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgcmVndWxhciAobm9uLVdlYlNvY2tldCkgcmVzb3Vy
Y2VzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tl
dCk6IEZhY3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgV2ViU29ja2V0IHJlc291cmNlcy4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpjYWNoZWRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6cmVzb3VyY2VEYXRhKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlOjopOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6Om1h
cmtXZWJTb2NrZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS50b1N0cmluZyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLnNldCB0eXBlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuX21pbWVUeXBlSXNDb25zaXN0ZW50V2l0aFR5
cGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuX3JlZnJlc2hSZXF1ZXN0
SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZS5f
cmVmcmVzaFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VW
aWV3LnByb3RvdHlwZS5fcmVmcmVzaEhlYWRlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29j
a2V0cywgLnJlc291cmNlcy1jYXRlZ29yeS1vdGhlcik6CisgICAgICAgICgucmVzb3VyY2VzLWNh
dGVnb3J5LXdlYnNvY2tldHMgLnJlc291cmNlcy1ncmFwaC1iYXIpOgorICAgICAgICAoLnJlc291
cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLnJlc291cmNlLWNhY2hlZCAucmVzb3VyY2VzLWdyYXBo
LWJhcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci51cGRhdGVS
ZXNvdXJjZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWw6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6aWRlbnRpZmllcik6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6
CisKIDIwMTAtMDctMDYgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBG
aXggcHJvZHVjdGlvbiBidWlsZHMgb24gTWFjIE9TIFguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGYyMGEzZTllYjU4NzVhNGQ3N2ZiNGFkZDI1N2MxNTMz
MWVjN2RlNTAuLmQ4YTA0OWJmYTQ2ZTNkY2Q1MzkyZmIzODM4YTM1ZDhmMTRhMzUxZjYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC04MDcsNiArODA3LDgg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRSZXNvdXJjZShJbnNwZWN0b3JSZXNvdXJj
ZSogcmVzb3VyY2UpCiAgICAgbV9rbm93blJlc291cmNlcy5hZGQocmVzb3VyY2UtPnJlcXVlc3RV
UkwoKSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSByZXNvdXJjZS0+ZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm47CiAgICAgUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCA9
IG1fZnJhbWVSZXNvdXJjZXMuZ2V0KGZyYW1lKTsKICAgICBpZiAocmVzb3VyY2VNYXApCiAgICAg
ICAgIHJlc291cmNlTWFwLT5zZXQocmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgcmVzb3VyY2UpOwpA
QCAtODI1LDYgKzgyNyw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlUmVzb3Vy
Y2UoSW5zcGVjdG9yUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICBtX2tub3duUmVzb3VyY2Vz
LnJlbW92ZShyZXF1ZXN0VVJMKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHJlc291cmNlLT5mcmFt
ZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKICAgICBSZXNvdXJjZXNNYXAq
IHJlc291cmNlTWFwID0gbV9mcmFtZVJlc291cmNlcy5nZXQoZnJhbWUpOwogICAgIGlmICghcmVz
b3VyY2VNYXApIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNDY4LDYgKzE0
NzIsNTYgQEAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBJbnNwZWN0b3JDb250cm9sbGVy
OjpnZXRET01TdG9yYWdlUmVzb3VyY2VGb3JJZChsb24KIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDcmVhdGVXZWJTb2Nr
ZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBLVVJMJiBkb2N1bWVudFVSTCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOworCisgICAgUmVmUHRyPEluc3BlY3Rv
clJlc291cmNlPiByZXNvdXJjZSA9IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVXZWJTb2NrZXQo
aWRlbnRpZmllciwgcmVxdWVzdFVSTCwgZG9jdW1lbnRVUkwpOworICAgIGFkZFJlc291cmNlKHJl
c291cmNlLmdldCgpKTsKKworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICByZXNvdXJjZS0+
dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworfQorCit2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRS
ZXNvdXJjZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47
CisgICAgcmVzb3VyY2UtPnN0YXJ0VGltaW5nKCk7CisgICAgcmVzb3VyY2UtPnVwZGF0ZVdlYlNv
Y2tldFJlcXVlc3QocmVxdWVzdCk7CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJlc291
cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Um
IHJlc3BvbnNlKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBn
ZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIC8vIENhbGxpbmcgcmVzb3VyY2UtPm1hcmtSZXNwb25zZVJlY2VpdmVk
VGltZSgpIGhlcmUgbWFrZXMgcmVzb3VyY2VzIGJhciBjaGFydCBjb25mdXNpbmcsIGJlY2F1c2UK
KyAgICAvLyB3ZSBjYW5ub3QgYXBwbHkgdGhlICJsYXRlbmN5ICsgZG93bmxvYWQiIG1vZGVsIG9m
IHJlZ3VsYXIgcmVzb3VyY2VzIHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucy4KKyAgICAvLyBGSVhN
RTogRGVzaWduIGEgbmV3IFVJIGZvciBiYXIgY2hhcnRzIG9mIFdlYlNvY2tldCByZXNvdXJjZXMs
IGFuZCByZWNvcmQgdGltaW5nIGhlcmUuCisgICAgcmVzb3VyY2UtPnVwZGF0ZVdlYlNvY2tldFJl
c3BvbnNlKHJlc3BvbnNlKTsKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgcmVzb3VyY2Ut
PnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKK30KKwordm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
Cit7CisgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRS
ZXNvdXJjZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47
CisKKyAgICByZXNvdXJjZS0+ZW5kVGltaW5nKCk7CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAg
ICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFByb2ZpbGUoUGFzc1JlZlB0cjxT
Y3JpcHRQcm9maWxlPiBwcnBQcm9maWxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApp
bmRleCAwZTVlMmNmMWQ2YWNkZWM0M2IwZjM0MzE4ZGEyOGNiNzIwNTQwZDU5Li45YWQ5YWYxNTU0
ZGMwZTk3ZWVlZDc1NmFhMDY3MTdhMjA4YWUxZmRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC05MSw2ICs5MSwxMSBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIGNs
YXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDsKK2NsYXNzIFdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOworI2VuZGlmCisKIGNsYXNzIEluc3BlY3RvckNvbnRy
b2xsZXIKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgTm9uY29weWFibGUKQEAgLTIx
Niw2ICsyMjEsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0obG9uZyBj
YWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CiAgICAgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShsb25nIGNhbGxJZCwgbG9uZyBz
dG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfU09D
S0VUUykKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMKTsKKyAg
ICB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRDbG9z
ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworI2VuZGlmCiAKICAgICBjb25z
dCBSZXNvdXJjZXNNYXAmIHJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9
CiAgICAgSW5zcGVjdG9yUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJs
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAppbmRleCBmMGUzOTFkZTk2
MjZlODYwYzE3YjU0ZWVjZGZmMmVmYzM3ZGI2OWQ2Li42Yjg3YTZhOGM5OGRkMzY0OTEzZDQ4MzE4
YjNhNzM3N2MxMzgxZWJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3Bw
CkBAIC00MSwxNiArNDEsNDAgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
KyNpbmNsdWRlICJTdHJpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNp
bmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKworI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9y
UmVzb3VyY2U6Okluc3BlY3RvclJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCkKKy8vIENyZWF0ZSBo
dW1hbi1yZWFkYWJsZSBiaW5hcnkgcmVwcmVzZW50YXRpb24sIGxpa2UgIjAxOjIzOjQ1OjY3Ojg5
OkFCOkNEOkVGIi4KK3N0YXRpYyBTdHJpbmcgY3JlYXRlUmVhZGFibGVTdHJpbmdGcm9tQmluYXJ5
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHZhbHVlLCBzaXplX3QgbGVuZ3RoKQoreworICAgIEFTU0VS
VChsZW5ndGggPiAwKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAx
MjM0NTY3ODlBQkNERUYiOworICAgIHNpemVfdCBidWZmZXJTaXplID0gbGVuZ3RoICogMyAtIDE7
CisgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcihidWZmZXJTaXplKTsKKyAgICBzaXplX3QgaW5kZXgg
PSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
aWYgKGkgPiAwKQorICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gJzonOworICAgICAgICBi
dWZmZXJbaW5kZXgrK10gPSBoZXhEaWdpdHNbdmFsdWVbaV0gPj4gNF07CisgICAgICAgIGJ1ZmZl
cltpbmRleCsrXSA9IGhleERpZ2l0c1t2YWx1ZVtpXSAmIDB4Rl07CisgICAgfQorICAgIEFTU0VS
VChpbmRleCA9PSBidWZmZXJTaXplKTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIp
OworfQorCitJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQogICAgICwgbV9sb2FkZXIobG9hZGVyKQotICAgICwgbV9mcmFtZShsb2FkZXItPmZyYW1l
KCkpCisgICAgLCBtX2ZyYW1lKGxvYWRlciA/IGxvYWRlci0+ZnJhbWUoKSA6IDApCiAgICAgLCBt
X3JlcXVlc3RVUkwocmVxdWVzdFVSTCkKKyAgICAsIG1fZG9jdW1lbnRVUkwoZG9jdW1lbnRVUkwp
CiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQogICAgICwgbV9jYWNoZWQoZmFsc2Up
CiAgICAgLCBtX2ZpbmlzaGVkKGZhbHNlKQpAQCAtNjMsNiArODcsOSBAQCBJbnNwZWN0b3JSZXNv
dXJjZTo6SW5zcGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciogbAogICAgICwgbV9sb2FkRXZlbnRUaW1lKC0xLjApCiAgICAgLCBtX2RvbUNvbnRl
bnRFdmVudFRpbWUoLTEuMCkKICAgICAsIG1faXNNYWluUmVzb3VyY2UoZmFsc2UpCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorICAgICwgbV9pc1dlYlNvY2tldChmYWxzZSkKKyNlbmRpZgogewog
fQogCkBAIC04NSw2ICsxMTIsMTQgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5z
cGVjdG9yUmVzb3VyY2U6OmFwcGVuZFJlZGlyZWN0KHVuc2lnbmVkIGxvbmcgaWQKICAgICByZXR1
cm4gcmVkaXJlY3Q7CiB9CiAKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3BlY3Rv
clJlc291cmNlOjpjcmVhdGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKQoreworICAgIEFTU0VSVChsb2FkZXIp
OworICAgIC8vIFdlIGNhbm5vdCBzZXQgZG9jdW1lbnRVUkwgaGVyZSwgYmVjYXVzZSBsb2FkZXIt
PmZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpIG1heSBub3QgYmUgYWNjdXJhdGUgYXQgdGhpcyBt
b21lbnQuCisgICAgLy8gSXQgd2lsbCBiZSBmZXRjaGVkIGluIHVwZGF0ZVJlcXVlc3QoKSBmdW5j
dGlvbi4KKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvclJlc291cmNlKGlkZW50aWZp
ZXIsIGxvYWRlciwgcmVxdWVzdFVSTCwgS1VSTCgpKSk7Cit9CisKIFBhc3NSZWZQdHI8SW5zcGVj
dG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVDYWNoZWQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4g
cmVzb3VyY2UgPSBjcmVhdGUoaWRlbnRpZmllciwgbG9hZGVyLCBLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgY2FjaGVkUmVzb3VyY2UtPnVybCgpKSk7CkBAIC0xMDQsMTIgKzEzOSwyMyBAQCBQYXNzUmVm
UHRyPEluc3BlY3RvclJlc291cmNlPiBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlQ2FjaGVkKHVu
c2lnbmVkIGxvbmcgaWRlbgogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAorI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291
cmNlOjpjcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJM
JiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCkKK3sKKyAgICBSZWZQdHI8SW5z
cGVjdG9yUmVzb3VyY2U+IHJlc291cmNlKG5ldyBJbnNwZWN0b3JSZXNvdXJjZShpZGVudGlmaWVy
LCAwLCByZXF1ZXN0VVJMLCBkb2N1bWVudFVSTCkpOworICAgIHJlc291cmNlLT5tYXJrV2ViU29j
a2V0KCk7CisgICAgcmV0dXJuIHJlc291cmNlLnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCiB2b2lk
IEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKICAgICBtX3JlcXVlc3RIZWFkZXJGaWVsZHMgPSByZXF1ZXN0Lmh0dHBIZWFk
ZXJGaWVsZHMoKTsKICAgICBtX3JlcXVlc3RNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsK
ICAgICBpZiAocmVxdWVzdC5odHRwQm9keSgpICYmICFyZXF1ZXN0Lmh0dHBCb2R5KCktPmlzRW1w
dHkoKSkKICAgICAgICAgbV9yZXF1ZXN0Rm9ybURhdGEgPSByZXF1ZXN0Lmh0dHBCb2R5KCktPmZs
YXR0ZW5Ub1N0cmluZygpOworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBtX2RvY3VtZW50VVJM
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAKICAgICBtX2NoYW5nZXMuc2V0KFJlcXVl
c3RDaGFuZ2UpOwogfQpAQCAtMTMyLDYgKzE3OCwyNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
Ojp1cGRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBt
X2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOwogfQogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlV2ViU29ja2V0UmVxdWVzdChjb25zdCBXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG1fcmVxdWVzdEhlYWRlckZp
ZWxkcyA9IHJlcXVlc3QuaGVhZGVyRmllbGRzKCk7CisgICAgbV9yZXF1ZXN0TWV0aG9kID0gIkdF
VCI7IC8vIEN1cnJlbnRseSB3ZSBhbHdheXMgdXNlICJHRVQiIHRvIHJlcXVlc3QgaGFuZHNoYWtl
LgorICAgIG1fd2ViU29ja2V0UmVxdWVzdEtleTMuc2V0KG5ldyBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0OjpLZXkzKHJlcXVlc3Qua2V5MygpKSk7CisgICAgbV9jaGFuZ2VzLnNldChSZXF1ZXN0
Q2hhbmdlKTsKKyAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOworfQorCit2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXNwb25zZShjb25zdCBXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbV9yZXNwb25zZVN0YXR1c0NvZGUgPSBy
ZXNwb25zZS5zdGF0dXNDb2RlKCk7CisgICAgbV9yZXNwb25zZVN0YXR1c1RleHQgPSByZXNwb25z
ZS5zdGF0dXNUZXh0KCk7CisgICAgbV9yZXNwb25zZUhlYWRlckZpZWxkcyA9IHJlc3BvbnNlLmhl
YWRlckZpZWxkcygpOworICAgIG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2Uuc2V0KG5ldyBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2UocmVzcG9uc2UuY2hh
bGxlbmdlUmVzcG9uc2UoKSkpOworICAgIG1fY2hhbmdlcy5zZXQoUmVzcG9uc2VDaGFuZ2UpOwor
ICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9T
T0NLRVRTKQorCiBzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoU2NyaXB0T2JqZWN0
KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiB7CiAgICAgSFRUUEhlYWRl
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKQEAgLTE0OSw3ICsyMTYs
NyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kKQogICAgIFNjcmlwdE9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRl
bmQtPm5ld1NjcmlwdE9iamVjdCgpOwogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKFJlcXVl
c3RDaGFuZ2UpKSB7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJ1cmwiLCBtX3JlcXVlc3RVUkwu
c3RyaW5nKCkpOwotICAgICAgICBqc29uT2JqZWN0LnNldCgiZG9jdW1lbnRVUkwiLCBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJk
b2N1bWVudFVSTCIsIG1fZG9jdW1lbnRVUkwuc3RyaW5nKCkpOwogICAgICAgICBqc29uT2JqZWN0
LnNldCgiaG9zdCIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpOwogICAgICAgICBqc29uT2JqZWN0LnNl
dCgicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgi
bGFzdFBhdGhDb21wb25lbnQiLCBtX3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7CkBA
IC0xNjEsNiArMjI4LDEwIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9i
amVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgICAgIGpzb25PYmplY3Quc2V0
KCJyZXF1ZXN0Rm9ybURhdGEiLCBtX3JlcXVlc3RGb3JtRGF0YSk7CiAgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJkaWRSZXF1ZXN0Q2hhbmdlIiwgdHJ1ZSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0
KCJjYWNoZWQiLCBtX2NhY2hlZCk7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICBp
ZiAobV93ZWJTb2NrZXRSZXF1ZXN0S2V5MykKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJ3
ZWJTb2NrZXRSZXF1ZXN0S2V5MyIsIGNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeShtX3dl
YlNvY2tldFJlcXVlc3RLZXkzLT52YWx1ZSwgc2l6ZW9mKG1fd2ViU29ja2V0UmVxdWVzdEtleTMt
PnZhbHVlKSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2Uo
UmVzcG9uc2VDaGFuZ2UpKSB7CkBAIC0xNzIsNiArMjQzLDEwIEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAg
ICAgICAgIFNjcmlwdE9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBmcm9udGVuZC0+bmV3U2NyaXB0
T2JqZWN0KCk7CiAgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdCgmcmVzcG9uc2VIZWFkZXJz
LCBtX3Jlc3BvbnNlSGVhZGVyRmllbGRzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInJlc3Bv
bnNlSGVhZGVycyIsIHJlc3BvbnNlSGVhZGVycyk7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
ICAgICAgICBpZiAobV93ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSkKKyAgICAgICAgICAgIGpz
b25PYmplY3Quc2V0KCJ3ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSIsIGNyZWF0ZVJlYWRhYmxl
U3RyaW5nRnJvbUJpbmFyeShtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlLT52YWx1ZSwgc2l6
ZW9mKG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UtPnZhbHVlKSkpOworI2VuZGlmCiAgICAg
ICAgIGpzb25PYmplY3Quc2V0KCJkaWRSZXNwb25zZUNoYW5nZSIsIHRydWUpOwogICAgIH0KIApA
QCAtMjMwLDYgKzMwNSw4IEBAIENhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JSZXNvdXJjZTo6Y2Fj
aGVkUmVzb3VyY2UoKSBjb25zdAogICAgIC8vIFRyeSBoYXJkIHRvIGZpbmQgYSBjb3JyZXNwb25k
aW5nIENhY2hlZFJlc291cmNlLiBEdXJpbmcgcHJlbG9hZGluZywgRG9jTG9hZGVyIG1heSBub3Qg
aGF2ZSB0aGUgcmVzb3VyY2UgaW4gZG9jdW1lbnQgcmVzb3VyY2VzIHNldCB5ZXQsCiAgICAgLy8g
YnV0IEluc3BlY3RvciB3aWxsIGFscmVhZHkgdHJ5IHRvIGZldGNoIGRhdGEgdGhhdCBpcyBvbmx5
IGF2YWlsYWJsZSB2aWEgQ2FjaGVkUmVzb3VyY2UgKGFuZCBpdCB3b24ndCB1cGRhdGUgb25jZSB0
aGUgcmVzb3VyY2UgaXMgYWRkZWQsCiAgICAgLy8gYmVjYXVzZSBtX2NoYW5nZXMgd2lsbCBub3Qg
aGF2ZSB0aGUgYXBwcm9wcmlhdGUgYml0cyBzZXQpLgorICAgIGlmICghbV9mcmFtZSkKKyAgICAg
ICAgcmV0dXJuIDA7CiAgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBtX3JlcXVlc3RVUkwuc3RyaW5n
KCk7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9jTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKHVybCk7CiAgICAgaWYgKCFjYWNoZWRS
ZXNvdXJjZSkKQEAgLTI2Niw2ICszNDMsMTIgQEAgSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgSW5z
cGVjdG9yUmVzb3VyY2U6OnR5cGUoKSBjb25zdAogICAgIGlmICghbV9vdmVycmlkZUNvbnRlbnQu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBtX292ZXJyaWRlQ29udGVudFR5cGU7CiAKKyNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgaWYgKG1faXNXZWJTb2NrZXQpCisgICAgICAgIHJldHVy
biBXZWJTb2NrZXQ7CisjZW5kaWYKKworICAgIEFTU0VSVChtX2xvYWRlcik7CiAgICAgaWYgKG1f
cmVxdWVzdFVSTCA9PSBtX2xvYWRlci0+cmVxdWVzdFVSTCgpKSB7CiAgICAgICAgIEluc3BlY3Rv
clJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSA9IGNhY2hlZFJlc291cmNlVHlwZSgpOwogICAg
ICAgICBpZiAocmVzb3VyY2VUeXBlID09IE90aGVyKQpAQCAtMzA1LDcgKzM4OCw3IEBAIFN0cmlu
ZyBJbnNwZWN0b3JSZXNvdXJjZTo6c291cmNlU3RyaW5nKCkgY29uc3QKIAogUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEluc3BlY3RvclJlc291cmNlOjpyZXNvdXJjZURhdGEoU3RyaW5nKiB0ZXh0
RW5jb2RpbmdOYW1lKSBjb25zdAogewotICAgIGlmIChtX3JlcXVlc3RVUkwgPT0gbV9sb2FkZXIt
PnJlcXVlc3RVUkwoKSkgeworICAgIGlmIChtX2xvYWRlciAmJiBtX3JlcXVlc3RVUkwgPT0gbV9s
b2FkZXItPnJlcXVlc3RVUkwoKSkgewogICAgICAgICAqdGV4dEVuY29kaW5nTmFtZSA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKTsKICAgICAgICAgcmV0dXJuIG1fbG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlLmgKaW5kZXggOWI5MTg4OWIxOWY3ZTNhNDZhOTZhOWMzNTQ0ZDA1Mzc1MzhjYmY5ZC4uMzRh
YTJkOTJkM2JjYTNmMDFlOTI3NWZiZWQ3NTE1Y2NkNTdjNDZiYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5oCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRTdHJpbmcu
aCIKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTUwLDkgKzUyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKICAgICBjbGFzcyBGcmFtZTsK
ICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotCiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3Q7CisgICAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U7CisjZW5kaWYK
KwogICAgIGNsYXNzIEluc3BlY3RvclJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVj
dG9yUmVzb3VyY2U+IHsKICAgICBwdWJsaWM6CiAKQEAgLTY1LDE2ICs3MSwxOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTY3JpcHQsCiAgICAgICAgICAgICBYSFIsCiAgICAg
ICAgICAgICBNZWRpYSwKKyAgICAgICAgICAgIFdlYlNvY2tldCwKICAgICAgICAgICAgIE90aGVy
CiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2U+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5zcGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1
ZXN0VVJMKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
UmVzb3VyY2U+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpOwogCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBjcmVhdGVDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAKKyNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIC8vIFdlYlNvY2tldCByZXNvdXJjZSBkb2Vzbid0
IGhhdmUgaXRzIGxvYWRlci4gRm9yIFdlYlNvY2tldCByZXNvdXJjZXMsIG1fbG9hZGVyIGFuZCBt
X2ZyYW1lIHdpbGwgYmVjb21lIG51bGwuCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3RvclJlc291cmNlPiBjcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CisjZW5kaWYK
KwogICAgICAgICB+SW5zcGVjdG9yUmVzb3VyY2UoKTsKIAogICAgICAgICBQYXNzUmVmUHRyPElu
c3BlY3RvclJlc291cmNlPiBhcHBlbmRSZWRpcmVjdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IEtVUkwmIHJlZGlyZWN0VVJMKTsKQEAgLTg0LDYgKzkzLDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCB1cGRhdGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogICAgICAgICB2b2lkIHVwZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAgICAgdm9pZCB1cGRhdGVXZWJTb2Nr
ZXRSZXF1ZXN0KGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmKTsKKyAgICAgICAgdm9p
ZCB1cGRhdGVXZWJTb2NrZXRSZXNwb25zZShjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZSYpOworI2VuZGlmCisKICAgICAgICAgdm9pZCBzZXRPdmVycmlkZUNvbnRlbnQoY29uc3QgU2Ny
aXB0U3RyaW5nJiBkYXRhLCBUeXBlKTsKIAogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nKCkg
Y29uc3Q7CkBAIC05Myw2ICsxMDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgbWFya01haW5SZXNvdXJjZSgpIHsgbV9pc01haW5SZXNvdXJjZSA9IHRydWU7IH0KICAgICAg
ICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CiAgICAgICAgIEtVUkwgcmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFVS
TDsgfQorICAgICAgICBLVVJMIGRvY3VtZW50VVJMKCk7CiAgICAgICAgIEZyYW1lKiBmcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWUuZ2V0KCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICAgICAgY29uc3QgSFRU
UEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlckZpZWxkcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVz
dEhlYWRlckZpZWxkczsgfQpAQCAtMTQ2LDE2ICsxNjEsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgQ2hhbmdlVHlwZSBtX2NoYW5nZTsKICAgICAgICAgfTsKIAotICAgICAg
ICBJbnNwZWN0b3JSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCk7CisgICAgICAgIEluc3BlY3RvclJlc291cmNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CiAgICAgICAgIFR5cGUgdHlwZSgp
IGNvbnN0OwogCiAgICAgICAgIFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKCkgY29uc3Q7CiAgICAg
ICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0OwogCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorICAgICAgICB2b2lkIG1hcmtXZWJTb2NrZXQoKSB7IG1faXNXZWJTb2Nr
ZXQgPSB0cnVlOyB9CisjZW5kaWYKKwogICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmll
cjsKICAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2xvYWRlcjsKICAgICAgICAgUmVm
UHRyPEZyYW1lPiBtX2ZyYW1lOwogICAgICAgICBLVVJMIG1fcmVxdWVzdFVSTDsKKyAgICAgICAg
S1VSTCBtX2RvY3VtZW50VVJMOwogICAgICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRl
ckZpZWxkczsKICAgICAgICAgSFRUUEhlYWRlck1hcCBtX3Jlc3BvbnNlSGVhZGVyRmllbGRzOwog
ICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKQEAgLTE3OSw2ICsxOTksMTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwogICAgICAgICBTdHJp
bmcgbV9yZXF1ZXN0Rm9ybURhdGE7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yUmVz
b3VyY2U+ID4gbV9yZWRpcmVjdHM7CisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAg
IGJvb2wgbV9pc1dlYlNvY2tldDsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZpZWxkcyBh
cmUgbm90IHVzZWQgZm9yIHJlc291cmNlcyBvdGhlciB0aGFuIFdlYlNvY2tldC4KKyAgICAgICAg
Ly8gV2UgYWxsb2NhdGUgdGhlbSBkeW5hbWljYWxseSB0byByZWR1Y2UgbWVtb3J5IGNvbnN1bXB0
aW9uIGZvciByZWd1bGFyIHJlc291cmNlcy4KKyAgICAgICAgT3duUHRyPFdlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3Q6OktleTM+IG1fd2ViU29ja2V0UmVxdWVzdEtleTM7CisgICAgICAgIE93blB0
cjxXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U+IG1fd2ViU29j
a2V0Q2hhbGxlbmdlUmVzcG9uc2U7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Uu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5kZXggMmFlMjNh
MGY5MzM1ODgzZTRmZjliNDFmODNjZjYyNmE3NWVjOTdkMC4uZTY2YTMyMDZkNzA5ZTZhNjMxZmY4
ZTcwYWZmNmZmMTc2ZWQ5YjY0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qcwpAQCAtNDUsNyArNDUsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAg
ICBTY3JpcHQ6ICAgICA0LAogICAgIFhIUjogICAgICAgIDUsCiAgICAgTWVkaWE6ICAgICAgNiwK
LSAgICBPdGhlcjogICAgICA3LAorICAgIFdlYlNvY2tldDogIDcsCisgICAgT3RoZXI6ICAgICAg
OCwKIAogICAgIGlzVGV4dFR5cGU6IGZ1bmN0aW9uKHR5cGUpCiAgICAgewpAQCAtNjcsNiArNjgs
OCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJzY3JpcHQiKTsKICAgICAgICAgICAgIGNhc2UgdGhp
cy5YSFI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhS
Iik7CisgICAgICAgICAgICBjYXNlIHRoaXMuV2ViU29ja2V0OgorICAgICAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldlYlNvY2tldCIpOwogICAgICAgICAgICAgY2Fz
ZSB0aGlzLk90aGVyOgogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJvdGhlciIpOwpAQCAtMzUyLDYgKzM1NSw5IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhIUjoKICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5
ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy54aHI7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNv
Y2tldDoKKyAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJlc291
cmNlQ2F0ZWdvcmllcy53ZWJzb2NrZXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLk90aGVyOgogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJl
c291cmNlQ2F0ZWdvcmllcy5vdGhlcjsKQEAgLTU2NCw3ICs1NzAsOCBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlID09
PSAidW5kZWZpbmVkIgogICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5PdGhlcgotICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5YSFIpCisgICAgICAgICB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLlhIUgorICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgICAgICBpZiAodGhpcy5taW1lVHlwZSBpbiBXZWJJbnNwZWN0b3IuTUlNRVR5cGVzKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggYmZkMTU3NmQy
YzdiMWRjYTQwODE1ZmVmMWY4NTg4MmZiMTM2MDgyOC4uNTE3ZTkxNjU0MTMxNzM2MTk0OGVjMzU4
ZTIzYjE2ZTVkNTI4NTE4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VWaWV3LmpzCkBAIC0yNzgsMTMgKzI3OCwxOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3
LnByb3RvdHlwZSA9IHsKIAogICAgIF9yZWZyZXNoUmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMucmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhlYWRlcnMs
IHRoaXMucmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAgIHZhciBhZGRpdGlvbmFs
Um93ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc291cmNlLndlYlNvY2tldFJl
cXVlc3RLZXkzICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7
aGVhZGVyOiAiKEtleTMpIiwgdmFsdWU6IHRoaXMucmVzb3VyY2Uud2ViU29ja2V0UmVxdWVzdEtl
eTN9OworICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlcXVlc3QgSGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNvcnRlZFJlcXVlc3RIZWFkZXJzLCBh
ZGRpdGlvbmFsUm93LCB0aGlzLnJlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgICAgICB0
aGlzLl9yZWZyZXNoRm9ybURhdGEoKTsKICAgICB9LAogCiAgICAgX3JlZnJlc2hSZXNwb25zZUhl
YWRlcnM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UgSGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNv
cnRlZFJlc3BvbnNlSGVhZGVycywgdGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7Cisg
ICAgICAgIHZhciBhZGRpdGlvbmFsUm93ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlz
LnJlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikKKyAg
ICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVyOiAiKENoYWxsZW5nZSBSZXNwb25zZSki
LCB2YWx1ZTogdGhpcy5yZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZX07CisgICAg
ICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2Ug
SGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNvcnRlZFJlc3BvbnNlSGVhZGVycywgYWRkaXRpb25h
bFJvdywgdGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CiAgICAgfSwKIAogICAgIF9y
ZWZyZXNoSFRUUEluZm9ybWF0aW9uOiBmdW5jdGlvbigpCkBAIC0zMTUsNyArMzIxLDcgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAog
ICAgIAotICAgIF9yZWZyZXNoSGVhZGVyczogZnVuY3Rpb24odGl0bGUsIGhlYWRlcnMsIGhlYWRl
cnNUcmVlRWxlbWVudCkKKyAgICBfcmVmcmVzaEhlYWRlcnM6IGZ1bmN0aW9uKHRpdGxlLCBoZWFk
ZXJzLCBhZGRpdGlvbmFsUm93LCBoZWFkZXJzVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBo
ZWFkZXJzVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMzMyLDYgKzMzOCwxNSBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGhl
YWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGhlYWRlcnNU
cmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CiAgICAgICAgIH0KKwor
ICAgICAgICBpZiAoYWRkaXRpb25hbFJvdykgeworICAgICAgICAgICAgdmFyIHRpdGxlID0gIjxk
aXYgY2xhc3M9XCJoZWFkZXItbmFtZVwiPiIgKyBhZGRpdGlvbmFsUm93LmhlYWRlci5lc2NhcGVI
VE1MKCkgKyAiOjwvZGl2PiI7CisgICAgICAgICAgICB0aXRsZSArPSAiPGRpdiBjbGFzcz1cImhl
YWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyBhZGRpdGlvbmFsUm93LnZhbHVlLmVzY2FwZUhU
TUwoKSArICI8L2Rpdj4iCisKKyAgICAgICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9IG5l
dyBUcmVlRWxlbWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOworICAgICAgICAgICAgaGVhZGVyVHJl
ZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICAgICAgaGVhZGVyc1RyZWVFbGVt
ZW50LmFwcGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsKKyAgICAgICAgfQogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3Mg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBkOGUyOWU4
OWJhNTkwMWY4OTRkYjUyYWE2ZDMzNzRhZmRhYWE5NTM4Li4xNWY4MzAyNjNkOTg2OTg4YTNlODI4
OWU0Yjk5MmMxZWU2OWQzOGEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmNzcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmNzcwpAQCAtMjgwMyw3ICsyODAzLDggQEAgYnV0dG9uLmVuYWJsZS10b2dnbGUtc3RhdHVz
LWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKIH0KIAogLnJlc291cmNlcy1jYXRlZ29yeS1k
b2N1bWVudHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktc3R5bGVzaGVldHMsIC5yZXNvdXJjZXMtY2F0
ZWdvcnktaW1hZ2VzLAotLnJlc291cmNlcy1jYXRlZ29yeS1zY3JpcHRzLCAucmVzb3VyY2VzLWNh
dGVnb3J5LXhociwgLnJlc291cmNlcy1jYXRlZ29yeS1mb250cywgLnJlc291cmNlcy1jYXRlZ29y
eS1vdGhlciB7CisucmVzb3VyY2VzLWNhdGVnb3J5LXNjcmlwdHMsIC5yZXNvdXJjZXMtY2F0ZWdv
cnkteGhyLCAucmVzb3VyY2VzLWNhdGVnb3J5LWZvbnRzLAorLnJlc291cmNlcy1jYXRlZ29yeS13
ZWJzb2NrZXRzLCAucmVzb3VyY2VzLWNhdGVnb3J5LW90aGVyIHsKICAgICBkaXNwbGF5OiBub25l
OwogfQogCkBAIC0yODEzLDYgKzI4MTQsNyBAQCBidXR0b24uZW5hYmxlLXRvZ2dsZS1zdGF0dXMt
YmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRl
Z29yeS1zY3JpcHRzLCAuZmlsdGVyLXNjcmlwdHMgLnJlc291cmNlcy1jYXRlZ29yeS1zY3JpcHRz
LAogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS14aHIsIC5maWx0ZXIteGhyIC5yZXNv
dXJjZXMtY2F0ZWdvcnkteGhyLAogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS1mb250
cywgLmZpbHRlci1mb250cyAucmVzb3VyY2VzLWNhdGVnb3J5LWZvbnRzLAorLmZpbHRlci1hbGwg
LnJlc291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLCAuZmlsdGVyLXdlYnNvY2tldHMgLnJlc291
cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLAogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29y
eS1vdGhlciwgLmZpbHRlci1vdGhlciAucmVzb3VyY2VzLWNhdGVnb3J5LW90aGVyLAogLnJlc291
cmNlLXNpZGViYXItdHJlZS1pdGVtLnNlbGVjdGVkIHsKICAgICBkaXNwbGF5OiBsaXN0LWl0ZW07
CkBAIC0yODg4LDYgKzI4OTAsMTUgQEAgYnV0dG9uLmVuYWJsZS10b2dnbGUtc3RhdHVzLWJhci1p
dGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKICAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKElt
YWdlcy90aW1lbGluZUhvbGxvd1BpbGxZZWxsb3cucG5nKSA2IDcgNiA3OwogfQogCisvKiBGSVhN
RTogQ3JlYXRlIGJhciBpbWFnZXMgZm9yIFdlYlNvY2tldC4gKi8KKy5yZXNvdXJjZXMtY2F0ZWdv
cnktd2Vic29ja2V0cyAucmVzb3VyY2VzLWdyYXBoLWJhciB7CisgICAgLXdlYmtpdC1ib3JkZXIt
aW1hZ2U6IHVybChJbWFnZXMvdGltZWxpbmVQaWxsR3JheS5wbmcpIDYgNyA2IDc7Cit9CisKKy5y
ZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291cmNlcy1n
cmFwaC1iYXIgeworICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGltZWxpbmVI
b2xsb3dQaWxsR3JheS5wbmcpIDYgNyA2IDc7Cit9CisKICNyZXNvdXJjZS12aWV3cyB7CiAgICAg
cG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMjNweDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGM1Mjc0NWY0MGE4MWQ3OTI0YTIwYjIzZDhjZTVmMDIz
ZDg3NzYwOWIuLjQyMTcxNmM1OGQ3NWI1NDkwOGFiOGUzYjgxMzg0ZDEyNDFhYTg1YmEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDY0LDYgKzQ2NCw3IEBA
IFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgICAgIHNjcmlwdHM6IG5ldyBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSgic2NyaXB0cyIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2NyaXB0cyIpLCAicmdiKDI1NSwxMjEsMCkiKSwKICAgICAgICAgeGhyOiBuZXcgV2Vi
SW5zcGVjdG9yLlJlc291cmNlQ2F0ZWdvcnkoInhociIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
WEhSIiksICJyZ2IoMjMxLDIzMSwxMCkiKSwKICAgICAgICAgZm9udHM6IG5ldyBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VDYXRlZ29yeSgiZm9udHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvbnRz
IiksICJyZ2IoMjU1LDgyLDYyKSIpLAorICAgICAgICB3ZWJzb2NrZXQ6IG5ldyBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VDYXRlZ29yeSgid2Vic29ja2V0cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
V2ViU29ja2V0IiksICJyZ2IoMTg2LDE4NiwxODYpIiksIC8vIEZJWE1FOiBEZWNpZGUgdGhlIGNv
bG9yLgogICAgICAgICBvdGhlcjogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJv
dGhlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3RoZXIiKSwgInJnYigxODYsMTg2LDE4Niki
KQogICAgIH07CiAKQEAgLTExNjEsNiArMTE2Miw4IEBAIFdlYkluc3BlY3Rvci51cGRhdGVSZXNv
dXJjZSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHBheWxvYWQpCiAgICAgICAgIHJlc291cmNlLnJl
cXVlc3RGb3JtRGF0YSA9IHBheWxvYWQucmVxdWVzdEZvcm1EYXRhOwogICAgICAgICByZXNvdXJj
ZS5jYWNoZWQgPSBwYXlsb2FkLmNhY2hlZDsKICAgICAgICAgcmVzb3VyY2UuZG9jdW1lbnRVUkwg
PSBwYXlsb2FkLmRvY3VtZW50VVJMOworICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQud2ViU29j
a2V0UmVxdWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmVzb3VyY2Uud2Vi
U29ja2V0UmVxdWVzdEtleTMgPSBwYXlsb2FkLndlYlNvY2tldFJlcXVlc3RLZXkzOwogCiAgICAg
ICAgIGlmIChyZXNvdXJjZS5tYWluUmVzb3VyY2UpCiAgICAgICAgICAgICB0aGlzLm1haW5SZXNv
dXJjZSA9IHJlc291cmNlOwpAQCAtMTE4MSw2ICsxMTg0LDggQEAgV2ViSW5zcGVjdG9yLnVwZGF0
ZVJlc291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKICAgICAgICAgcmVzb3Vy
Y2Uuc3RhdHVzVGV4dCA9IHBheWxvYWQuc3RhdHVzVGV4dDsKICAgICAgICAgcmVzb3VyY2Uuc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBwYXlsb2FkLnN1Z2dlc3RlZEZpbGVuYW1lOwogICAgICAgICByZXNv
dXJjZS5yZXNwb25zZUhlYWRlcnMgPSBwYXlsb2FkLnJlc3BvbnNlSGVhZGVyczsKKyAgICAgICAg
aWYgKHR5cGVvZiBwYXlsb2FkLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZp
bmVkIikKKyAgICAgICAgICAgIHJlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlID0g
cGF5bG9hZC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZTsKICAgICB9CiAKICAgICBpZiAocGF5
bG9hZC5kaWRUeXBlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggNTg1OWZkN2YwNjUwN2YzMzdjMjgxODI2YWM4YzYxNGIyNzBiMjkzNS4uYzYxOGQ4
NjQ0NmIzNzNhZGJlNzM3MTJmY2E3N2FhZDBhMWU2ZjhmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzYsOCArMzYsMTEgQEAKIAogI2luY2x1ZGUgIkNvb2tp
ZUphci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJy
b3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKQEAgLTYyLDcgKzY1LDE0IEBA
IFdlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgV2ViU29ja2V0Q2hhCiAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKICAgICAs
IG1fY2xvc2VkKGZhbHNlKQogICAgICwgbV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudCgwKQorI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgLCBtX2lkZW50aWZpZXIoMCkKKyNlbmRpZgogeworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgY29udHJvbGxl
ci0+ZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIoKSwgdXJsLCBtX2NvbnRleHQtPnVybCgp
KTsKKyNlbmRpZgogfQogCiBXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCkBA
IC0xMTEsNiArMTIxLDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQogdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaXNjb25uZWN0KCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldENoYW5uZWwgJXAgZGlzY29ubmVjdCIsIHRoaXMpOworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgICAg
IGNvbnRyb2xsZXItPmRpZENsb3NlV2ViU29ja2V0KGlkZW50aWZpZXIoKSk7CisjZW5kaWYKICAg
ICBtX2hhbmRzaGFrZS5jbGVhclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBtX2NsaWVu
dCA9IDA7CiAgICAgbV9jb250ZXh0ID0gMDsKQEAgLTEzNiw2ICsxNTEsMTAgQEAgdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogICAgIEFT
U0VSVChoYW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICBy
ZXR1cm47CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogY29udHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAg
ICBjb250cm9sbGVyLT53aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmll
cigpLCBtX2hhbmRzaGFrZS5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkpOworI2VuZGlmCiAgICAg
Y29uc3QgQ1N0cmluZyYgaGFuZHNoYWtlTWVzc2FnZSA9IG1faGFuZHNoYWtlLmNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKTsKICAgICBpZiAoIWhhbmRsZS0+c2VuZChoYW5kc2hha2VNZXNzYWdlLmRh
dGEoKSwgaGFuZHNoYWtlTWVzc2FnZS5sZW5ndGgoKSkpIHsKICAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiRXJyb3Igc2VuZGluZyBoYW5kc2hha2UgbWVzc2FnZS4iLCAwLCBtX2hhbmRzaGFrZS5j
bGllbnRPcmlnaW4oKSk7CkBAIC0xNDYsNiArMTY1LDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkQ2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlIiwgdGhpcyk7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQor
ICAgICAgICAgICAgY29udHJvbGxlci0+ZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRpZmllcigpKTsK
KyNlbmRpZgogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUgfHwg
IW1faGFuZGxlKTsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAgICAgaWYgKG1faGFuZGxlKSB7CkBA
IC0yMzcsNiArMjYxLDEwIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigp
CiAgICAgICAgIGlmIChoZWFkZXJMZW5ndGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKG1faGFuZHNoYWtlLm1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6
OkNvbm5lY3RlZCkgeworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgICAgICBpZiAoSW5z
cGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJv
bGxlcigpKQorICAgICAgICAgICAgICAgIGNvbnRyb2xsZXItPmRpZFJlY2VpdmVXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZShpZGVudGlmaWVyKCksIG1faGFuZHNoYWtlLnNlcnZlckhhbmRzaGFr
ZVJlc3BvbnNlKCkpOworI2VuZGlmCiAgICAgICAgICAgICBpZiAoIW1faGFuZHNoYWtlLnNlcnZl
clNldENvb2tpZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQt
PmlzRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7CkBAIC0zMjgsNiArMzU2LDIxIEBA
IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRD
aGFubmVsPiogdGltZXIpCiAgICAgICAgIGRpZENsb3NlKG1faGFuZGxlLmdldCgpKTsKIH0KIAor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCit1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6Omlk
ZW50aWZpZXIoKQoreworICAgIGlmIChtX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBtX2lk
ZW50aWZpZXI7CisKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IG1f
Y29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKSkKKyAgICAgICAgICAgIG1faWRlbnRpZmllciA9
IHBhZ2UtPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKworICAgIEFTU0VS
VChtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKKwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAv
LyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApp
bmRleCBhOTBjNmRjMTFmMmNkOGE5NTA0NzJkYmFmZjg1NDFhM2E5NGEwYTRlLi40OGM1MWNjZjFi
M2I5MDZjZTUzYTljODVmMDUwZTBjOTM2MTJlNTg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmgKQEAgLTg0LDYgKzg0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgYm9vbCBwcm9jZXNzQnVmZmVyKCk7CiAgICAgICAgIHZvaWQgcmVzdW1lVGltZXJGaXJlZChU
aW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCk7CisjZW5kaWYKKwogICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CiAgICAgICAgIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQqIG1fY2xpZW50OwogICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2UgbV9oYW5kc2hh
a2U7CkBAIC05NSw2ICs5OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
bV9zdXNwZW5kZWQ7CiAgICAgICAgIGJvb2wgbV9jbG9zZWQ7CiAgICAgICAgIHVuc2lnbmVkIGxv
bmcgbV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudDsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOworI2VuZGlmCiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62556</attachid>
            <date>2010-07-26 04:21:43 -0700</date>
            <delta_ts>2010-08-26 00:36:19 -0700</delta_ts>
            <desc>Patch v6 (Fix regression, this time for sure)</desc>
            <filename>bug-40768-20100726202141.patch</filename>
            <type>text/plain</type>
            <size>32276</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGNkNWY1NjkwNWUzMjdhOTJiNmMzNTc3MmU1OTZiMGQ1NzZlOGJlMS4uNzc1YjlhYmIxY2I5N2Nk
Mzk1OTgwNzQxYzllM2Y3YmNjNjA3NTY0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMC0wNy0yNiAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViU29ja2V0IHJlc291cmNlIHR5cGUgdG8g
V2ViIEluc3BlY3Rvci4KKworICAgICAgICBXaGVuIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLCBhIGxpbmUgZm9yIHRoYXQgY29ubmVjdGlvbgorICAgICAgICB3aWxs
IGFwcGVhciBpbiBXZWIgSW5zcGVjdG9yJ3MgUmVzb3VyY2VzIHRhYi4gSWYgdGhlIHJlc291cmNl
IG5hbWUgaXMKKyAgICAgICAgY2xpY2tlZCwgdGhlIGRldGFpbHMgb2YgaGFuZHNoYWtlIHJlcXVl
c3QgYW5kIHJlc3BvbnNlIHdpbGwgYmUgc2hvd24uCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
V2ViU29ja2V0IGluIFJlc291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNzY4CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRSZXNvdXJjZSk6IFdlYlNvY2tldCByZXNvdXJjZSBkb2VzIG5vdAorICAgICAgICBoYXZlIGFu
IGFzc29jaWF0ZWQgbG9hZGVyLCB0aHVzIGZyYW1lIG1pZ2h0IGJlIG51bGwuIE5lZWQgdG8gY2hl
Y2sgaXQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVSZXNv
dXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2Nr
ZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDogQWRkIG51bGwgY2hlY2tzIG9mIG1f
bG9hZGVyIGFuZCBtX2ZyYW1lLAorICAgICAgICBiZWNhdXNlIFdlYlNvY2tldCBkb2VzIG5vdCBo
YXZlIGEgbG9hZGVyIGFuZCB3ZSBuZWVkIHRvIGFsbG93IG51bGwgZm9yCisgICAgICAgIHRoZXNl
IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJp
bmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZSk6IEZh
Y3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgcmVndWxhciAobm9uLVdlYlNvY2tldCkgcmVzb3Vy
Y2VzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tl
dCk6IEZhY3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgV2ViU29ja2V0IHJlc291cmNlcy4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2Ny
aXB0T2JqZWN0KTogbV9mcmFtZS0+ZG9jdW1lbnQoKSBiZWNvbWVzCisgICAgICAgIGF2YWlsYWJs
ZSB3aGVuIEZyYW1lOjpzZXREb2N1bWVudCgpIGlzIGNhbGxlZC4gV2UgY2Fubm90IG9idGFpbiBk
b2N1bWVudFVSTAorICAgICAgICBkdXJpbmcgdGhlIGNvbnN0cnVjdG9yIG9yIHVwZGF0ZVJlcXVl
c3QoKSBmdW5jdGlvbiwgYmVjYXVzZSBtX2ZyYW1lLT5kb2N1bWVudCgpCisgICAgICAgIGlzIG5v
dCBhdmFpbGFibGUgeWV0IGF0IHRoYXQgcG9pbnQgYW5kIGRvY3VtZW50VVJMIHdpbGwgY29udGFp
biBhIHdyb25nIFVSTC4KKyAgICAgICAgQXMgZmFyIGFzIEkga25vdywgdXBkYXRlU2NyaXB0T2Jq
ZWN0KCkgaXMgdGhlIG9ubHkgcGxhY2Ugd2hlcmUgd2UgY2FuIHNhZmVseQorICAgICAgICBvYnRh
aW4gZG9jdW1lbnRVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6Y2Fj
aGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlOjptYXJrV2ViU29ja2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUudG9TdHJpbmcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5zZXQgdHlwZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9taW1lVHlwZUlzQ29uc2lzdGVu
dFdpdGhUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlLl9yZWZyZXNo
UmVxdWVzdEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90
b3R5cGUuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlVmlldy5wcm90b3R5cGUuX3JlZnJlc2hIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICgucmVzb3VyY2VzLWNhdGVnb3J5
LXdlYnNvY2tldHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIpOgorICAgICAgICAoLnJlc291
cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzIC5yZXNvdXJjZXMtZ3JhcGgtYmFyKToKKyAgICAgICAg
KC5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291cmNl
cy1ncmFwaC1iYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
dXBkYXRlUmVzb3VyY2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpc2Nvbm5lY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3Blbik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OmlkZW50aWZpZXIpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oOgorCiAyMDEwLTA3LTI2ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlMjljN2FlZTAxMjJiNzVkZDhm
ZTllMmNkOTBiYjk3MGZlNjIzZmExLi42ZDU3YmY3NDk3NTVlZjY5N2I5MzFiZWM3YjkyMGU0ZDgw
YjEwNTNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAt
ODI2LDYgKzgyNiw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUmVzb3VyY2UoSW5z
cGVjdG9yUmVzb3VyY2UqIHJlc291cmNlKQogICAgIG1fa25vd25SZXNvdXJjZXMuYWRkKHJlc291
cmNlLT5yZXF1ZXN0VVJMKCkpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gcmVzb3VyY2UtPmZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlc291cmNlc01hcCog
cmVzb3VyY2VNYXAgPSBtX2ZyYW1lUmVzb3VyY2VzLmdldChmcmFtZSk7CiAgICAgaWYgKHJlc291
cmNlTWFwKQogICAgICAgICByZXNvdXJjZU1hcC0+c2V0KHJlc291cmNlLT5pZGVudGlmaWVyKCks
IHJlc291cmNlKTsKQEAgLTg0NCw2ICs4NDYsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnJlbW92ZVJlc291cmNlKEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZSkKICAgICAgICAgbV9r
bm93blJlc291cmNlcy5yZW1vdmUocmVxdWVzdFVSTCk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBy
ZXNvdXJjZS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CiAgICAg
UmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCA9IG1fZnJhbWVSZXNvdXJjZXMuZ2V0KGZyYW1lKTsK
ICAgICBpZiAoIXJlc291cmNlTWFwKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMTQ4Nyw2ICsxNDkxLDU2IEBAIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZSogSW5zcGVj
dG9yQ29udHJvbGxlcjo6Z2V0RE9NU3RvcmFnZVJlc291cmNlRm9ySWQobG9uCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVx
dWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpCit7CisgICAgaWYgKCFlbmFibGVkKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKKworICAgIFJl
ZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBJbnNwZWN0b3JSZXNvdXJjZTo6Y3Jl
YXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHJlcXVlc3RVUkwsIGRvY3VtZW50VVJMKTsKKyAgICBh
ZGRSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSk7CisKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAg
ICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIHJlc291cmNlLT5zdGFydFRpbWluZygpOworICAgIHJlc291cmNl
LT51cGRhdGVXZWJTb2NrZXRSZXF1ZXN0KHJlcXVlc3QpOworICAgIGlmIChtX2Zyb250ZW5kKQor
ICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwor
fQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+
IHJlc291cmNlID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZpZXIpOworICAgIGlmICghcmVz
b3VyY2UpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBDYWxsaW5nIHJlc291cmNlLT5tYXJrUmVz
cG9uc2VSZWNlaXZlZFRpbWUoKSBoZXJlIG1ha2VzIHJlc291cmNlcyBiYXIgY2hhcnQgY29uZnVz
aW5nLCBiZWNhdXNlCisgICAgLy8gd2UgY2Fubm90IGFwcGx5IHRoZSAibGF0ZW5jeSArIGRvd25s
b2FkIiBtb2RlbCBvZiByZWd1bGFyIHJlc291cmNlcyB0byBXZWJTb2NrZXQgY29ubmVjdGlvbnMu
CisgICAgLy8gRklYTUU6IERlc2lnbiBhIG5ldyBVSSBmb3IgYmFyIGNoYXJ0cyBvZiBXZWJTb2Nr
ZXQgcmVzb3VyY2VzLCBhbmQgcmVjb3JkIHRpbWluZyBoZXJlLgorICAgIHJlc291cmNlLT51cGRh
dGVXZWJTb2NrZXRSZXNwb25zZShyZXNwb25zZSk7CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAg
ICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcmVzb3VyY2UtPmVuZFRpbWluZygpOworICAgIGlmIChtX2Zy
b250ZW5kKQorICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQu
Z2V0KCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKwogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxl
KFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKaW5kZXggMTc2ZGQxMTNjNGMxYTY1YjkwMzg1MDQ0NDhkYTc3NzdlMWE3ODIx
MS4uYmM5NDczZmVlYzgzNTMxMWM0ZDZhZDI1OTg1ZGFjYzQ4MzUwYTk3NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtOTIsNiArOTIsMTEgQEAgY2xhc3MgU3Rv
cmFnZUFyZWE7CiBjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3Q7CitjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTsKKyNlbmRpZgorCiBjbGFzcyBJ
bnNwZWN0b3JDb250cm9sbGVyCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIE5vbmNv
cHlhYmxlCkBAIC0yMjMsNiArMjI4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERPTVN0b3Jh
Z2VJdGVtKGxvbmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0obG9uZyBj
YWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1
bWVudFVSTCk7CisgICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Jik7
CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYpOworICAg
IHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyNlbmRp
ZgogCiAgICAgY29uc3QgUmVzb3VyY2VzTWFwJiByZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBt
X3Jlc291cmNlczsgfQogICAgIEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZUZvclVSTChjb25z
dCBTdHJpbmcmIHVybCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5k
ZXggNmE1OTE5Y2YzZWNkM2JlYjkyOTE0MGE3NTFlNGNmYmNhYTMzM2FkOS4uMzg1ZmQ1Mjc0MmMy
NTc5MTgyNGE2YzA4NzVkYWVlNDJjYWZiNzc2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlLmNwcApAQCAtNDIsMTUgKzQyLDM4IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
VGltaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlN0cmluZ0J1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIldlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZS5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisvLyBDcmVhdGUgaHVtYW4tcmVhZGFibGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uLCBsaWtl
ICIwMToyMzo0NTo2Nzo4OTpBQjpDRDpFRiIuCitzdGF0aWMgU3RyaW5nIGNyZWF0ZVJlYWRhYmxl
U3RyaW5nRnJvbUJpbmFyeShjb25zdCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSwgc2l6ZV90IGxlbmd0
aCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoID4gMCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgaGV4
RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IGxlbmd0aCAqIDMgLSAxOworICAgIFN0cmluZ0J1ZmZlciBidWZmZXIoYnVmZmVyU2l6ZSk7Cisg
ICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9
ICc6JzsKKyAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW3ZhbHVlW2ldID4+IDRd
OworICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBoZXhEaWdpdHNbdmFsdWVbaV0gJiAweEZdOwor
ICAgIH0KKyAgICBBU1NFUlQoaW5kZXggPT0gYnVmZmVyU2l6ZSk7CisgICAgcmV0dXJuIFN0cmlu
Zzo6YWRvcHQoYnVmZmVyKTsKK30KKwogSW5zcGVjdG9yUmVzb3VyY2U6Okluc3BlY3RvclJlc291
cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgS1VSTCYgcmVxdWVzdFVSTCkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAg
ICwgbV9sb2FkZXIobG9hZGVyKQotICAgICwgbV9mcmFtZShsb2FkZXItPmZyYW1lKCkpCisgICAg
LCBtX2ZyYW1lKGxvYWRlciA/IGxvYWRlci0+ZnJhbWUoKSA6IDApCiAgICAgLCBtX3JlcXVlc3RV
UkwocmVxdWVzdFVSTCkKICAgICAsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKDApCiAgICAgLCBt
X2NhY2hlZChmYWxzZSkKQEAgLTY2LDYgKzg5LDkgQEAgSW5zcGVjdG9yUmVzb3VyY2U6Okluc3Bl
Y3RvclJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGwK
ICAgICAsIG1fY29ubmVjdGlvbklEKDApCiAgICAgLCBtX2Nvbm5lY3Rpb25SZXVzZWQoZmFsc2Up
CiAgICAgLCBtX2lzTWFpblJlc291cmNlKGZhbHNlKQorI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KyAgICAsIG1faXNXZWJTb2NrZXQoZmFsc2UpCisjZW5kaWYKIHsKIH0KIApAQCAtODgsNiArMTE0
LDEyIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291cmNlOjph
cHBlbmRSZWRpcmVjdCh1bnNpZ25lZCBsb25nIGlkCiAgICAgcmV0dXJuIHJlZGlyZWN0OwogfQog
CitQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
S1VSTCYgcmVxdWVzdFVSTCkKK3sKKyAgICBBU1NFUlQobG9hZGVyKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluc3BlY3RvclJlc291cmNlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdFVS
TCkpOworfQorCiBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBJbnNwZWN0b3JSZXNvdXJj
ZTo6Y3JlYXRlQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQogewogICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gY3JlYXRlKGlkZW50aWZpZXIs
IGxvYWRlciwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIGNhY2hlZFJlc291cmNlLT51cmwoKSkpOwpA
QCAtMTA3LDYgKzEzOSwxNiBAQCBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBJbnNwZWN0
b3JSZXNvdXJjZTo6Y3JlYXRlQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbgogICAgIHJldHVybiBy
ZXNvdXJjZTsKIH0KIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVXZWJTb2NrZXQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1
bWVudFVSTCkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gYWRv
cHRSZWYobmV3IEluc3BlY3RvclJlc291cmNlKGlkZW50aWZpZXIsIDAsIHJlcXVlc3RVUkwpKTsK
KyAgICByZXNvdXJjZS0+bWFya1dlYlNvY2tldCgpOworICAgIHJlc291cmNlLT5tX2RvY3VtZW50
VVJMID0gZG9jdW1lbnRVUkw7CisgICAgcmV0dXJuIHJlc291cmNlLnJlbGVhc2UoKTsKK30KKyNl
bmRpZgorCiB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBtX3JlcXVlc3RIZWFkZXJGaWVsZHMgPSByZXF1
ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKQEAgLTE0Niw2ICsxODgsMjcgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZTo6dXBkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAgICAgbV9jaGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKIH0KIAorI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVdlYlNvY2tldFJlcXVlc3Qo
Y29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBtX3JlcXVl
c3RIZWFkZXJGaWVsZHMgPSByZXF1ZXN0LmhlYWRlckZpZWxkcygpOworICAgIG1fcmVxdWVzdE1l
dGhvZCA9ICJHRVQiOyAvLyBDdXJyZW50bHkgd2UgYWx3YXlzIHVzZSAiR0VUIiB0byByZXF1ZXN0
IGhhbmRzaGFrZS4KKyAgICBtX3dlYlNvY2tldFJlcXVlc3RLZXkzLnNldChuZXcgV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdDo6S2V5MyhyZXF1ZXN0LmtleTMoKSkpOworICAgIG1fY2hhbmdlcy5z
ZXQoUmVxdWVzdENoYW5nZSk7CisgICAgbV9jaGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlV2ViU29ja2V0UmVzcG9uc2UoY29uc3QgV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fcmVzcG9uc2VTdGF0
dXNDb2RlID0gcmVzcG9uc2Uuc3RhdHVzQ29kZSgpOworICAgIG1fcmVzcG9uc2VTdGF0dXNUZXh0
ID0gcmVzcG9uc2Uuc3RhdHVzVGV4dCgpOworICAgIG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMgPSBy
ZXNwb25zZS5oZWFkZXJGaWVsZHMoKTsKKyAgICBtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNl
LnNldChuZXcgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlKHJl
c3BvbnNlLmNoYWxsZW5nZVJlc3BvbnNlKCkpKTsKKyAgICBtX2NoYW5nZXMuc2V0KFJlc3BvbnNl
Q2hhbmdlKTsKKyAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOworfQorI2VuZGlmIC8vIEVO
QUJMRShXRUJfU09DS0VUUykKKwogc3RhdGljIHZvaWQgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KFNj
cmlwdE9iamVjdCogb2JqZWN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogewogICAg
IEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7CkBAIC0x
NjEsOCArMjI0LDExIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVj
dChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAKICAgICBTY3JpcHRPYmplY3QganNvbk9i
amVjdCA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICBpZiAobV9jaGFuZ2VzLmhh
c0NoYW5nZShSZXF1ZXN0Q2hhbmdlKSkgeworICAgICAgICBpZiAobV9mcmFtZSkKKyAgICAgICAg
ICAgIG1fZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKwogICAgICAg
ICBqc29uT2JqZWN0LnNldCgidXJsIiwgbV9yZXF1ZXN0VVJMLnN0cmluZygpKTsKLSAgICAgICAg
anNvbk9iamVjdC5zZXQoImRvY3VtZW50VVJMIiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCkpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiZG9jdW1lbnRVUkwiLCBtX2RvY3Vt
ZW50VVJMLnN0cmluZygpKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImhvc3QiLCBtX3JlcXVl
c3RVUkwuaG9zdCgpKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInBhdGgiLCBtX3JlcXVlc3RV
UkwucGF0aCgpKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImxhc3RQYXRoQ29tcG9uZW50Iiwg
bV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50KCkpOwpAQCAtMTczLDYgKzIzOSwxMCBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kKQogICAgICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdE1ldGhvZCIsIG1f
cmVxdWVzdE1ldGhvZCk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0Rm9ybURhdGEi
LCBtX3JlcXVlc3RGb3JtRGF0YSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRSZXF1ZXN0
Q2hhbmdlIiwgdHJ1ZSk7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICBpZiAobV93
ZWJTb2NrZXRSZXF1ZXN0S2V5MykKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJ3ZWJTb2Nr
ZXRSZXF1ZXN0S2V5MyIsIGNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeShtX3dlYlNvY2tl
dFJlcXVlc3RLZXkzLT52YWx1ZSwgc2l6ZW9mKG1fd2ViU29ja2V0UmVxdWVzdEtleTMtPnZhbHVl
KSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoUmVzcG9u
c2VDaGFuZ2UpKSB7CkBAIC0xODksNiArMjU5LDEwIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6
OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgICAg
IGpzb25PYmplY3Quc2V0KCJjYWNoZWQiLCBtX2NhY2hlZCk7CiAgICAgICAgIGlmIChtX2xvYWRU
aW1pbmcgJiYgIW1fY2FjaGVkKQogICAgICAgICAgICAganNvbk9iamVjdC5zZXQoInRpbWluZyIs
IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGZyb250ZW5kLCBtX2xvYWRUaW1pbmcuZ2V0KCkpKTsKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIGlmIChtX3dlYlNvY2tldENoYWxsZW5nZVJl
c3BvbnNlKQorICAgICAgICAgICAganNvbk9iamVjdC5zZXQoIndlYlNvY2tldENoYWxsZW5nZVJl
c3BvbnNlIiwgY3JlYXRlUmVhZGFibGVTdHJpbmdGcm9tQmluYXJ5KG1fd2ViU29ja2V0Q2hhbGxl
bmdlUmVzcG9uc2UtPnZhbHVlLCBzaXplb2YobV93ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZS0+
dmFsdWUpKSk7CisjZW5kaWYKICAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFJlc3BvbnNlQ2hh
bmdlIiwgdHJ1ZSk7CiAgICAgfQogCkBAIC0yNDcsNiArMzIxLDggQEAgQ2FjaGVkUmVzb3VyY2Uq
IEluc3BlY3RvclJlc291cmNlOjpjYWNoZWRSZXNvdXJjZSgpIGNvbnN0CiAgICAgLy8gVHJ5IGhh
cmQgdG8gZmluZCBhIGNvcnJlc3BvbmRpbmcgQ2FjaGVkUmVzb3VyY2UuIER1cmluZyBwcmVsb2Fk
aW5nLCBEb2NMb2FkZXIgbWF5IG5vdCBoYXZlIHRoZSByZXNvdXJjZSBpbiBkb2N1bWVudCByZXNv
dXJjZXMgc2V0IHlldCwKICAgICAvLyBidXQgSW5zcGVjdG9yIHdpbGwgYWxyZWFkeSB0cnkgdG8g
ZmV0Y2ggZGF0YSB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIHZpYSBDYWNoZWRSZXNvdXJjZSAoYW5k
IGl0IHdvbid0IHVwZGF0ZSBvbmNlIHRoZSByZXNvdXJjZSBpcyBhZGRlZCwKICAgICAvLyBiZWNh
dXNlIG1fY2hhbmdlcyB3aWxsIG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBiaXRzIHNldCkuCisg
ICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gMDsKICAgICBjb25zdCBTdHJpbmcmIHVy
bCA9IG1fcmVxdWVzdFVSTC5zdHJpbmcoKTsKICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2Uo
dXJsKTsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQpAQCAtMjgzLDYgKzM1OSwxMiBAQCBJbnNw
ZWN0b3JSZXNvdXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSgpIGNvbnN0CiAgICAg
aWYgKCFtX292ZXJyaWRlQ29udGVudC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG1fb3ZlcnJp
ZGVDb250ZW50VHlwZTsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAobV9pc1dl
YlNvY2tldCkKKyAgICAgICAgcmV0dXJuIFdlYlNvY2tldDsKKyNlbmRpZgorCisgICAgQVNTRVJU
KG1fbG9hZGVyKTsKICAgICBpZiAobV9yZXF1ZXN0VVJMID09IG1fbG9hZGVyLT5yZXF1ZXN0VVJM
KCkpIHsKICAgICAgICAgSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlID0gY2Fj
aGVkUmVzb3VyY2VUeXBlKCk7CiAgICAgICAgIGlmIChyZXNvdXJjZVR5cGUgPT0gT3RoZXIpCkBA
IC0zMjIsNyArNDA0LDcgQEAgU3RyaW5nIEluc3BlY3RvclJlc291cmNlOjpzb3VyY2VTdHJpbmco
KSBjb25zdAogCiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5zcGVjdG9yUmVzb3VyY2U6OnJl
c291cmNlRGF0YShTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKG1f
cmVxdWVzdFVSTCA9PSBtX2xvYWRlci0+cmVxdWVzdFVSTCgpKSB7CisgICAgaWYgKG1fbG9hZGVy
ICYmIG1fcmVxdWVzdFVSTCA9PSBtX2xvYWRlci0+cmVxdWVzdFVSTCgpKSB7CiAgICAgICAgICp0
ZXh0RW5jb2RpbmdOYW1lID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpOwog
ICAgICAgICByZXR1cm4gbV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaAppbmRleCA0OGUxYTIwNTk3ZTBlZGM4ODUxOGRl
NTc5NmU3NTQ5Yzc2MDY5ZGFiLi5lNWMzYWJjMjc1ZDVjMWI0OGJlNjUxOWQ5MmY2OTZmNzFjM2Iy
MmFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKQEAgLTM2LDYgKzM2LDgg
QEAKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFN0cmluZy5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogCiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNTMs
NiArNTUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQorICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q7CisgICAgY2xhc3MgV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2U7CisjZW5kaWYKKwogICAgIGNsYXNzIEluc3BlY3RvclJlc291
cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yUmVzb3VyY2U+IHsKICAgICBwdWJsaWM6
CiAKQEAgLTY1LDE2ICs3MiwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBT
Y3JpcHQsCiAgICAgICAgICAgICBYSFIsCiAgICAgICAgICAgICBNZWRpYSwKKyAgICAgICAgICAg
IFdlYlNvY2tldCwKICAgICAgICAgICAgIE90aGVyCiAgICAgICAgIH07CiAKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yUmVz
b3VyY2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0VVJMKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IGNyZWF0ZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVl
c3RVUkwpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBj
cmVhdGVDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNv
bnN0IENhY2hlZFJlc291cmNlKik7CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAg
IC8vIFdlYlNvY2tldCByZXNvdXJjZSBkb2Vzbid0IGhhdmUgaXRzIGxvYWRlci4gRm9yIFdlYlNv
Y2tldCByZXNvdXJjZXMsIG1fbG9hZGVyIGFuZCBtX2ZyYW1lIHdpbGwgYmVjb21lIG51bGwuCisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBjcmVhdGVXZWJTb2Nr
ZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBLVVJMJiBkb2N1bWVudFVSTCk7CisjZW5kaWYKKwogICAgICAgICB+SW5zcGVjdG9yUmVzb3Vy
Y2UoKTsKIAogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBhcHBlbmRSZWRp
cmVjdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlZGlyZWN0VVJMKTsK
QEAgLTg0LDYgKzk0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB1cGRh
dGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2b2lkIHVwZGF0ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKyAgICAgICAgdm9pZCB1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0KGNvbnN0IFdlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3QmKTsKKyAgICAgICAgdm9pZCB1cGRhdGVXZWJTb2NrZXRSZXNwb25zZShj
b25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYpOworI2VuZGlmCisKICAgICAgICAgdm9p
ZCBzZXRPdmVycmlkZUNvbnRlbnQoY29uc3QgU2NyaXB0U3RyaW5nJiBkYXRhLCBUeXBlKTsKIAog
ICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nKCkgY29uc3Q7CkBAIC0xNTMsMTAgKzE2OCwxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU2NyaXB0T2JqZWN0IGJ1aWxkT2JqZWN0
Rm9yVGltaW5nKEluc3BlY3RvckZyb250ZW5kKiwgUmVzb3VyY2VMb2FkVGltaW5nKik7CiAKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHZvaWQgbWFya1dlYlNvY2tldCgpIHsgbV9p
c1dlYlNvY2tldCA9IHRydWU7IH0KKyNlbmRpZgorCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9p
ZGVudGlmaWVyOwogICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1fbG9hZGVyOwogICAg
ICAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CiAgICAgICAgIEtVUkwgbV9yZXF1ZXN0VVJMOwor
ICAgICAgICBLVVJMIG1fZG9jdW1lbnRVUkw7CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgbV9yZXF1
ZXN0SGVhZGVyRmllbGRzOwogICAgICAgICBIVFRQSGVhZGVyTWFwIG1fcmVzcG9uc2VIZWFkZXJG
aWVsZHM7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtMTgzLDYgKzIwMywxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RNZXRob2Q7CiAgICAg
ICAgIFN0cmluZyBtX3JlcXVlc3RGb3JtRGF0YTsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxJbnNw
ZWN0b3JSZXNvdXJjZT4gPiBtX3JlZGlyZWN0czsKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KyAgICAgICAgYm9vbCBtX2lzV2ViU29ja2V0OworCisgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcg
ZmllbGRzIGFyZSBub3QgdXNlZCBmb3IgcmVzb3VyY2VzIG90aGVyIHRoYW4gV2ViU29ja2V0Lgor
ICAgICAgICAvLyBXZSBhbGxvY2F0ZSB0aGVtIGR5bmFtaWNhbGx5IHRvIHJlZHVjZSBtZW1vcnkg
Y29uc3VtcHRpb24gZm9yIHJlZ3VsYXIgcmVzb3VyY2VzLgorICAgICAgICBPd25QdHI8V2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdDo6S2V5Mz4gbV93ZWJTb2NrZXRSZXF1ZXN0S2V5MzsKKyAgICAg
ICAgT3duUHRyPFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZT4g
bV93ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZTsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwppbmRl
eCAwNmE2MTBkMDk2MmRhODM4ZjE2Nzc0ZGZmYjk2MjBhNjg3YjExYzFmLi5jZWRkZWQzNTcwMzYw
MTBmMzExMzI3ZDFjMjI2MDgyMDk1ZmU5MGYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2UuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlLmpzCkBAIC00NSw3ICs0NSw4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBl
ID0gewogICAgIFNjcmlwdDogICAgIDQsCiAgICAgWEhSOiAgICAgICAgNSwKICAgICBNZWRpYTog
ICAgICA2LAotICAgIE90aGVyOiAgICAgIDcsCisgICAgV2ViU29ja2V0OiAgNywKKyAgICBPdGhl
cjogICAgICA4LAogCiAgICAgaXNUZXh0VHlwZTogZnVuY3Rpb24odHlwZSkKICAgICB7CkBAIC02
Nyw2ICs2OCw4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlID0gewogICAgICAgICAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInNjcmlwdCIpOwogICAgICAgICAgICAg
Y2FzZSB0aGlzLlhIUjoKICAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJYSFIiKTsKKyAgICAgICAgICAgIGNhc2UgdGhpcy5XZWJTb2NrZXQ6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2ViU29ja2V0Iik7CiAgICAgICAg
ICAgICBjYXNlIHRoaXMuT3RoZXI6CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIm90aGVyIik7CkBAIC0zNjMsNiArMzY2
LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSOgogICAgICAgICAgICAgICAgIHRoaXMu
Y2F0ZWdvcnkgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnhocjsKICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGUuV2ViU29ja2V0OgorICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBXZWJJbnNwZWN0
b3IucmVzb3VyY2VDYXRlZ29yaWVzLndlYnNvY2tldDsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuT3RoZXI6CiAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLm90aGVyOwpAQCAtNTc1LDcgKzU4MSw4IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHR5cGVvZiB0aGlz
LnR5cGUgPT09ICJ1bmRlZmluZWQiCiAgICAgICAgICB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLk90aGVyCi0gICAgICAgICB8fCB0aGlzLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhIUikKKyAgICAgICAgIHx8IHRoaXMudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSCisgICAgICAgICB8fCB0aGlzLnR5cGUgPT09IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgICAgIGlmICh0aGlzLm1pbWVUeXBlIGluIFdlYkluc3BlY3Rvci5NSU1FVHlw
ZXMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwppbmRleCBi
ZmQxNTc2ZDJjN2IxZGNhNDA4MTVmZWYxZjg1ODgyZmIxMzYwODI4Li41MTdlOTE2NTQxMzE3MzYx
OTQ4ZWMzNThlMjNiMTZlNWQ1Mjg1MTgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVZpZXcuanMKQEAgLTI3OCwxMyArMjc4LDE5IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3JlZnJlc2hSZXF1ZXN0SGVhZGVyczogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5yZXNvdXJjZS5zb3J0ZWRSZXF1ZXN0
SGVhZGVycywgdGhpcy5yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsKKyAgICAgICAgdmFyIGFk
ZGl0aW9uYWxSb3cgPSBudWxsOworICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzb3VyY2Uud2Vi
U29ja2V0UmVxdWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgYWRkaXRpb25h
bFJvdyA9IHtoZWFkZXI6ICIoS2V5MykiLCB2YWx1ZTogdGhpcy5yZXNvdXJjZS53ZWJTb2NrZXRS
ZXF1ZXN0S2V5M307CisgICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMucmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhl
YWRlcnMsIGFkZGl0aW9uYWxSb3csIHRoaXMucmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CiAg
ICAgICAgIHRoaXMuX3JlZnJlc2hGb3JtRGF0YSgpOwogICAgIH0sCiAKICAgICBfcmVmcmVzaFJl
c3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fcmVmcmVzaEhl
YWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSBIZWFkZXJzIiksIHRoaXMucmVz
b3VyY2Uuc29ydGVkUmVzcG9uc2VIZWFkZXJzLCB0aGlzLnJlc3BvbnNlSGVhZGVyc1RyZWVFbGVt
ZW50KTsKKyAgICAgICAgdmFyIGFkZGl0aW9uYWxSb3cgPSBudWxsOworICAgICAgICBpZiAodHlw
ZW9mIHRoaXMucmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UgIT09ICJ1bmRlZmlu
ZWQiKQorICAgICAgICAgICAgYWRkaXRpb25hbFJvdyA9IHtoZWFkZXI6ICIoQ2hhbGxlbmdlIFJl
c3BvbnNlKSIsIHZhbHVlOiB0aGlzLnJlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNl
fTsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
ZXNwb25zZSBIZWFkZXJzIiksIHRoaXMucmVzb3VyY2Uuc29ydGVkUmVzcG9uc2VIZWFkZXJzLCBh
ZGRpdGlvbmFsUm93LCB0aGlzLnJlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50KTsKICAgICB9LAog
CiAgICAgX3JlZnJlc2hIVFRQSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkKQEAgLTMxNSw3ICszMjEs
NyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
ICAgIH0sCiAgICAgCi0gICAgX3JlZnJlc2hIZWFkZXJzOiBmdW5jdGlvbih0aXRsZSwgaGVhZGVy
cywgaGVhZGVyc1RyZWVFbGVtZW50KQorICAgIF9yZWZyZXNoSGVhZGVyczogZnVuY3Rpb24odGl0
bGUsIGhlYWRlcnMsIGFkZGl0aW9uYWxSb3csIGhlYWRlcnNUcmVlRWxlbWVudCkKICAgICB7CiAg
ICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0zMzIsNiAr
MzM4LDE1IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgaGVhZGVyVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwogICAgICAgICAgICAg
aGVhZGVyc1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsKICAgICAg
ICAgfQorCisgICAgICAgIGlmIChhZGRpdGlvbmFsUm93KSB7CisgICAgICAgICAgICB2YXIgdGl0
bGUgPSAiPGRpdiBjbGFzcz1cImhlYWRlci1uYW1lXCI+IiArIGFkZGl0aW9uYWxSb3cuaGVhZGVy
LmVzY2FwZUhUTUwoKSArICI6PC9kaXY+IjsKKyAgICAgICAgICAgIHRpdGxlICs9ICI8ZGl2IGNs
YXNzPVwiaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiArIGFkZGl0aW9uYWxSb3cudmFsdWUu
ZXNjYXBlSFRNTCgpICsgIjwvZGl2PiIKKworICAgICAgICAgICAgdmFyIGhlYWRlclRyZWVFbGVt
ZW50ID0gbmV3IFRyZWVFbGVtZW50KHRpdGxlLCBudWxsLCBmYWxzZSk7CisgICAgICAgICAgICBo
ZWFkZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgICAgICAgICBoZWFkZXJz
VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyVHJlZUVsZW1lbnQpOworICAgICAgICB9CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmNzcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4
IGYxZWU0OWY0N2M0MDU0ODU2ZDQxZGI5YmQyM2QzNjM1MjRkZjA2MWEuLmU4ZTQ3ODJiOGIwOWQz
ZjRhNTA0NTYyNzYxYTAwZjZiZGI1NDQ5NjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuY3NzCkBAIC0yODE5LDcgKzI4MTksOCBAQCBidXR0b24uZW5hYmxlLXRvZ2ds
ZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogfQogCiAucmVzb3VyY2VzLWNh
dGVnb3J5LWRvY3VtZW50cywgLnJlc291cmNlcy1jYXRlZ29yeS1zdHlsZXNoZWV0cywgLnJlc291
cmNlcy1jYXRlZ29yeS1pbWFnZXMsCi0ucmVzb3VyY2VzLWNhdGVnb3J5LXNjcmlwdHMsIC5yZXNv
dXJjZXMtY2F0ZWdvcnkteGhyLCAucmVzb3VyY2VzLWNhdGVnb3J5LWZvbnRzLCAucmVzb3VyY2Vz
LWNhdGVnb3J5LW90aGVyIHsKKy5yZXNvdXJjZXMtY2F0ZWdvcnktc2NyaXB0cywgLnJlc291cmNl
cy1jYXRlZ29yeS14aHIsIC5yZXNvdXJjZXMtY2F0ZWdvcnktZm9udHMsCisucmVzb3VyY2VzLWNh
dGVnb3J5LXdlYnNvY2tldHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIgewogICAgIGRpc3Bs
YXk6IG5vbmU7CiB9CiAKQEAgLTI4MjksNiArMjgzMCw3IEBAIGJ1dHRvbi5lbmFibGUtdG9nZ2xl
LXN0YXR1cy1iYXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CiAuZmlsdGVyLWFsbCAucmVzb3Vy
Y2VzLWNhdGVnb3J5LXNjcmlwdHMsIC5maWx0ZXItc2NyaXB0cyAucmVzb3VyY2VzLWNhdGVnb3J5
LXNjcmlwdHMsCiAuZmlsdGVyLWFsbCAucmVzb3VyY2VzLWNhdGVnb3J5LXhociwgLmZpbHRlci14
aHIgLnJlc291cmNlcy1jYXRlZ29yeS14aHIsCiAuZmlsdGVyLWFsbCAucmVzb3VyY2VzLWNhdGVn
b3J5LWZvbnRzLCAuZmlsdGVyLWZvbnRzIC5yZXNvdXJjZXMtY2F0ZWdvcnktZm9udHMsCisuZmls
dGVyLWFsbCAucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMsIC5maWx0ZXItd2Vic29ja2V0
cyAucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMsCiAuZmlsdGVyLWFsbCAucmVzb3VyY2Vz
LWNhdGVnb3J5LW90aGVyLCAuZmlsdGVyLW90aGVyIC5yZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIs
CiAucmVzb3VyY2Utc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZWQgewogICAgIGRpc3BsYXk6IGxp
c3QtaXRlbTsKQEAgLTI5MDQsNiArMjkwNiwxNSBAQCBidXR0b24uZW5hYmxlLXRvZ2dsZS1zdGF0
dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogICAgIC13ZWJraXQtYm9yZGVyLWltYWdl
OiB1cmwoSW1hZ2VzL3RpbWVsaW5lSG9sbG93UGlsbFllbGxvdy5wbmcpIDYgNyA2IDc7CiB9CiAK
Ky8qIEZJWE1FOiBDcmVhdGUgYmFyIGltYWdlcyBmb3IgV2ViU29ja2V0LiAqLworLnJlc291cmNl
cy1jYXRlZ29yeS13ZWJzb2NrZXRzIC5yZXNvdXJjZXMtZ3JhcGgtYmFyIHsKKyAgICAtd2Via2l0
LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aW1lbGluZVBpbGxHcmF5LnBuZykgNiA3IDYgNzsK
K30KKworLnJlc291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLnJlc291cmNlLWNhY2hlZCAucmVz
b3VyY2VzLWdyYXBoLWJhciB7CisgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90
aW1lbGluZUhvbGxvd1BpbGxHcmF5LnBuZykgNiA3IDYgNzsKK30KKwogI3Jlc291cmNlLXZpZXdz
IHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAyM3B4OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMGFkZjA1N2JhNmU2Y2NlNjY4NzM1ODAy
NjBjNzRjN2VkYzViYmU3YS4uZjFmNjdmYThkNTA0Y2E0YTI5YmU3NjBjZjJlMTBkZWQwZjcyMmNl
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC00NjQsNiAr
NDY0LDcgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAgICAgc2NyaXB0
czogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJzY3JpcHRzIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTY3JpcHRzIiksICJyZ2IoMjU1LDEyMSwwKSIpLAogICAgICAgICB4aHI6
IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSgieGhyIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJYSFIiKSwgInJnYigyMzEsMjMxLDEwKSIpLAogICAgICAgICBmb250czogbmV3IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJmb250cyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRm9udHMiKSwgInJnYigyNTUsODIsNjIpIiksCisgICAgICAgIHdlYnNvY2tldDogbmV3IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJ3ZWJzb2NrZXRzIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJXZWJTb2NrZXQiKSwgInJnYigxODYsMTg2LDE4NikiKSwgLy8gRklYTUU6IERlY2lk
ZSB0aGUgY29sb3IuCiAgICAgICAgIG90aGVyOiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2F0
ZWdvcnkoIm90aGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdGhlciIpLCAicmdiKDE4Niwx
ODYsMTg2KSIpCiAgICAgfTsKIApAQCAtMTE2Myw2ICsxMTY0LDggQEAgV2ViSW5zcGVjdG9yLnVw
ZGF0ZVJlc291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKICAgICAgICAgcmVz
b3VyY2UucmVxdWVzdE1ldGhvZCA9IHBheWxvYWQucmVxdWVzdE1ldGhvZDsKICAgICAgICAgcmVz
b3VyY2UucmVxdWVzdEZvcm1EYXRhID0gcGF5bG9hZC5yZXF1ZXN0Rm9ybURhdGE7CiAgICAgICAg
IHJlc291cmNlLmRvY3VtZW50VVJMID0gcGF5bG9hZC5kb2N1bWVudFVSTDsKKyAgICAgICAgaWYg
KHR5cGVvZiBwYXlsb2FkLndlYlNvY2tldFJlcXVlc3RLZXkzICE9PSAidW5kZWZpbmVkIikKKyAg
ICAgICAgICAgIHJlc291cmNlLndlYlNvY2tldFJlcXVlc3RLZXkzID0gcGF5bG9hZC53ZWJTb2Nr
ZXRSZXF1ZXN0S2V5MzsKIAogICAgICAgICBpZiAocmVzb3VyY2UubWFpblJlc291cmNlKQogICAg
ICAgICAgICAgdGhpcy5tYWluUmVzb3VyY2UgPSByZXNvdXJjZTsKQEAgLTExODcsNiArMTE5MCw4
IEBAIFdlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHBh
eWxvYWQpCiAgICAgICAgIHJlc291cmNlLmNvbm5lY3Rpb25SZXVzZWQgPSBwYXlsb2FkLmNvbm5l
Y3Rpb25SZXVzZWQ7CiAgICAgICAgIHJlc291cmNlLnRpbWluZyA9IHBheWxvYWQudGltaW5nOwog
ICAgICAgICByZXNvdXJjZS5jYWNoZWQgPSBwYXlsb2FkLmNhY2hlZDsKKyAgICAgICAgaWYgKHR5
cGVvZiBwYXlsb2FkLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikK
KyAgICAgICAgICAgIHJlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlID0gcGF5bG9h
ZC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZTsKICAgICB9CiAKICAgICBpZiAocGF5bG9hZC5k
aWRUeXBlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggNTg1OWZkN2YwNjUwN2YzMzdjMjgxODI2YWM4YzYxNGIyNzBiMjkzNS4uYzYxOGQ4NjQ0NmIz
NzNhZGJlNzM3MTJmY2E3N2FhZDBhMWU2ZjhmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtMzYsOCArMzYsMTEgQEAKIAogI2luY2x1ZGUgIkNvb2tpZUphci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIK
ICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKQEAgLTYyLDcgKzY1LDE0IEBAIFdlYlNv
Y2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgV2ViU29ja2V0Q2hhCiAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKICAgICAsIG1fY2xv
c2VkKGZhbHNlKQogICAgICwgbV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudCgwKQorI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgLCBtX2lkZW50aWZpZXIoMCkKKyNlbmRpZgogeworI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBt
X2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgY29udHJvbGxlci0+ZGlk
Q3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIoKSwgdXJsLCBtX2NvbnRleHQtPnVybCgpKTsKKyNl
bmRpZgogfQogCiBXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCkBAIC0xMTEs
NiArMTIxLDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQogdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpkaXNjb25uZWN0KCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgZGlzY29ubmVjdCIsIHRoaXMpOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
aWYgKG1fY29udGV4dCkKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgIGNvbnRy
b2xsZXItPmRpZENsb3NlV2ViU29ja2V0KGlkZW50aWZpZXIoKSk7CisjZW5kaWYKICAgICBtX2hh
bmRzaGFrZS5jbGVhclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBtX2NsaWVudCA9IDA7
CiAgICAgbV9jb250ZXh0ID0gMDsKQEAgLTEzNiw2ICsxNTEsMTAgQEAgdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpkaWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogICAgIEFTU0VSVCho
YW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29u
dHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBjb250
cm9sbGVyLT53aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllcigpLCBt
X2hhbmRzaGFrZS5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkpOworI2VuZGlmCiAgICAgY29uc3Qg
Q1N0cmluZyYgaGFuZHNoYWtlTWVzc2FnZSA9IG1faGFuZHNoYWtlLmNsaWVudEhhbmRzaGFrZU1l
c3NhZ2UoKTsKICAgICBpZiAoIWhhbmRsZS0+c2VuZChoYW5kc2hha2VNZXNzYWdlLmRhdGEoKSwg
aGFuZHNoYWtlTWVzc2FnZS5sZW5ndGgoKSkpIHsKICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAi
RXJyb3Igc2VuZGluZyBoYW5kc2hha2UgbWVzc2FnZS4iLCAwLCBtX2hhbmRzaGFrZS5jbGllbnRP
cmlnaW4oKSk7CkBAIC0xNDYsNiArMTY1LDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
T3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZGlkQ2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlIiwgdGhpcyk7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogY29udHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAg
ICAgICAgY29udHJvbGxlci0+ZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRpZmllcigpKTsKKyNlbmRp
ZgogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUgfHwgIW1faGFu
ZGxlKTsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAgICAgaWYgKG1faGFuZGxlKSB7CkBAIC0yMzcs
NiArMjYxLDEwIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAg
ICAgIGlmIChoZWFkZXJMZW5ndGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKG1faGFuZHNoYWtlLm1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5l
Y3RlZCkgeworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgICAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigp
KQorICAgICAgICAgICAgICAgIGNvbnRyb2xsZXItPmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZShpZGVudGlmaWVyKCksIG1faGFuZHNoYWtlLnNlcnZlckhhbmRzaGFrZVJlc3Bv
bnNlKCkpOworI2VuZGlmCiAgICAgICAgICAgICBpZiAoIW1faGFuZHNoYWtlLnNlcnZlclNldENv
b2tpZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQtPmlzRG9j
dW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7CkBAIC0zMjgsNiArMzU2LDIxIEBAIHZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVs
PiogdGltZXIpCiAgICAgICAgIGRpZENsb3NlKG1faGFuZGxlLmdldCgpKTsKIH0KIAorI2lmIEVO
QUJMRShJTlNQRUNUT1IpCit1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmlkZW50aWZp
ZXIoKQoreworICAgIGlmIChtX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBtX2lkZW50aWZp
ZXI7CisKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4
dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGNvbnRy
b2xsZXItPmluc3BlY3RlZFBhZ2UoKSkKKyAgICAgICAgICAgIG1faWRlbnRpZmllciA9IHBhZ2Ut
PnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKworICAgIEFTU0VSVChtX2lk
ZW50aWZpZXIpOworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKKwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFC
TEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBh
OTBjNmRjMTFmMmNkOGE5NTA0NzJkYmFmZjg1NDFhM2E5NGEwYTRlLi40OGM1MWNjZjFiM2I5MDZj
ZTUzYTljODVmMDUwZTBjOTM2MTJlNTg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmgKQEAgLTg0LDYgKzg0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBwcm9jZXNzQnVmZmVyKCk7CiAgICAgICAgIHZvaWQgcmVzdW1lVGltZXJGaXJlZChUaW1lcjxX
ZWJTb2NrZXRDaGFubmVsPiogdGltZXIpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCk7CisjZW5kaWYKKwogICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CiAgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGll
bnQqIG1fY2xpZW50OwogICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2UgbV9oYW5kc2hha2U7CkBA
IC05NSw2ICs5OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9zdXNw
ZW5kZWQ7CiAgICAgICAgIGJvb2wgbV9jbG9zZWQ7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV91
bmhhbmRsZWRCdWZmZXJlZEFtb3VudDsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAg
IHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65532</attachid>
            <date>2010-08-26 00:36:26 -0700</date>
            <delta_ts>2010-09-07 02:17:30 -0700</delta_ts>
            <desc>Patch v7 (Updated for inspector changes)</desc>
            <filename>bug-40768-20100826163624.patch</filename>
            <type>text/plain</type>
            <size>32514</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTBmNzIyYzI0ZGJhNzc0NGYzNGU0NjQ1MjMzYzA3NzA2MGJjZjYzZi4uMjliZGM0YjA5YTI2ZTA4
MWY3ODE5MDgzODBiMWJmNGI0Nzg3Yzc4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMC0wOC0yNiAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViU29ja2V0IHJlc291cmNlIHR5cGUgdG8g
V2ViIEluc3BlY3Rvci4KKworICAgICAgICBXaGVuIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLCBhIGxpbmUgZm9yIHRoYXQgY29ubmVjdGlvbgorICAgICAgICB3aWxs
IGFwcGVhciBpbiBXZWIgSW5zcGVjdG9yJ3MgUmVzb3VyY2VzIHRhYi4gSWYgdGhlIHJlc291cmNl
IG5hbWUgaXMKKyAgICAgICAgY2xpY2tlZCwgdGhlIGRldGFpbHMgb2YgaGFuZHNoYWtlIHJlcXVl
c3QgYW5kIHJlc3BvbnNlIHdpbGwgYmUgc2hvd24uCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
V2ViU29ja2V0IGluIFJlc291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNzY4CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRSZXNvdXJjZSk6IFdlYlNvY2tldCByZXNvdXJjZSBkb2VzIG5vdAorICAgICAgICBoYXZlIGFu
IGFzc29jaWF0ZWQgbG9hZGVyLCB0aHVzIGZyYW1lIG1pZ2h0IGJlIG51bGwuIE5lZWQgdG8gY2hl
Y2sgaXQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVSZXNv
dXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2Nr
ZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDogQWRkIG51bGwgY2hlY2tzIG9mIG1f
bG9hZGVyIGFuZCBtX2ZyYW1lLAorICAgICAgICBiZWNhdXNlIFdlYlNvY2tldCBkb2VzIG5vdCBo
YXZlIGEgbG9hZGVyIGFuZCB3ZSBuZWVkIHRvIGFsbG93IG51bGwgZm9yCisgICAgICAgIHRoZXNl
IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJp
bmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZSk6IEZh
Y3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgcmVndWxhciAobm9uLVdlYlNvY2tldCkgcmVzb3Vy
Y2VzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tl
dCk6IEZhY3RvcnkgZnVuY3Rpb24gb2YKKyAgICAgICAgV2ViU29ja2V0IHJlc291cmNlcy4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2Ny
aXB0T2JqZWN0KTogbV9mcmFtZS0+ZG9jdW1lbnQoKSBiZWNvbWVzCisgICAgICAgIGF2YWlsYWJs
ZSB3aGVuIEZyYW1lOjpzZXREb2N1bWVudCgpIGlzIGNhbGxlZC4gV2UgY2Fubm90IG9idGFpbiBk
b2N1bWVudFVSTAorICAgICAgICBkdXJpbmcgdGhlIGNvbnN0cnVjdG9yIG9yIHVwZGF0ZVJlcXVl
c3QoKSBmdW5jdGlvbiwgYmVjYXVzZSBtX2ZyYW1lLT5kb2N1bWVudCgpCisgICAgICAgIGlzIG5v
dCBhdmFpbGFibGUgeWV0IGF0IHRoYXQgcG9pbnQgYW5kIGRvY3VtZW50VVJMIHdpbGwgY29udGFp
biBhIHdyb25nIFVSTC4KKyAgICAgICAgQXMgZmFyIGFzIEkga25vdywgdXBkYXRlU2NyaXB0T2Jq
ZWN0KCkgaXMgdGhlIG9ubHkgcGxhY2Ugd2hlcmUgd2UgY2FuIHNhZmVseQorICAgICAgICBvYnRh
aW4gZG9jdW1lbnRVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6Y2Fj
aGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlOjptYXJrV2ViU29ja2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUudG9TdHJpbmcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5zZXQgdHlwZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9taW1lVHlwZUlzQ29uc2lzdGVu
dFdpdGhUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlLl9yZWZyZXNo
UmVxdWVzdEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90
b3R5cGUuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlVmlldy5wcm90b3R5cGUuX3JlZnJlc2hIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICgucmVzb3VyY2VzLWNhdGVnb3J5
LXdlYnNvY2tldHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIpOgorICAgICAgICAoLnJlc291
cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzIC5yZXNvdXJjZXMtZ3JhcGgtYmFyKToKKyAgICAgICAg
KC5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291cmNl
cy1ncmFwaC1iYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
dXBkYXRlUmVzb3VyY2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpc2Nvbm5lY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3Blbik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OmlkZW50aWZpZXIpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oOgorCiAyMDEwLTA4LTI1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjYwNzQuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGY0N2IzMjE3NDk2N2Nl
NmZhZmY0ZjAwOGEyZGY2MTNmOWI5MjUyNzIuLjFhNDc1NzFlMzI5ZTI1NmVkYjdmM2NmM2ZlODNh
Y2NmMTNmNzM3OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC03OTgsNiArNzk4LDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRSZXNvdXJj
ZShJbnNwZWN0b3JSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgbV9rbm93blJlc291cmNlcy5hZGQo
cmVzb3VyY2UtPnJlcXVlc3RVUkwoKSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSByZXNvdXJjZS0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CiAgICAgUmVzb3VyY2Vz
TWFwKiByZXNvdXJjZU1hcCA9IG1fZnJhbWVSZXNvdXJjZXMuZ2V0KGZyYW1lKTsKICAgICBpZiAo
cmVzb3VyY2VNYXApCiAgICAgICAgIHJlc291cmNlTWFwLT5zZXQocmVzb3VyY2UtPmlkZW50aWZp
ZXIoKSwgcmVzb3VyY2UpOwpAQCAtODE2LDYgKzgxOCw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6cmVtb3ZlUmVzb3VyY2UoSW5zcGVjdG9yUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAg
ICBtX2tub3duUmVzb3VyY2VzLnJlbW92ZShyZXF1ZXN0VVJMKTsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IHJlc291cmNlLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsK
ICAgICBSZXNvdXJjZXNNYXAqIHJlc291cmNlTWFwID0gbV9mcmFtZVJlc291cmNlcy5nZXQoZnJh
bWUpOwogICAgIGlmICghcmVzb3VyY2VNYXApIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0xNDQyLDYgKzE0NDYsNTYgQEAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBJ
bnNwZWN0b3JDb250cm9sbGVyOjpnZXRET01TdG9yYWdlUmVzb3VyY2VGb3JJZChsb24KIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJM
JiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCkKK3sKKyAgICBpZiAoIWVuYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOworCisg
ICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IEluc3BlY3RvclJlc291cmNl
OjpjcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwgcmVxdWVzdFVSTCwgZG9jdW1lbnRVUkwpOwor
ICAgIGFkZFJlc291cmNlKHJlc291cmNlLmdldCgpKTsKKworICAgIGlmIChtX2Zyb250ZW5kKQor
ICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwor
fQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNv
dXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNl
KQorICAgICAgICByZXR1cm47CisgICAgcmVzb3VyY2UtPnN0YXJ0VGltaW5nKCk7CisgICAgcmVz
b3VyY2UtPnVwZGF0ZVdlYlNvY2tldFJlcXVlc3QocmVxdWVzdCk7CisgICAgaWYgKG1fZnJvbnRl
bmQpCisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQo
KSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNv
dXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CisgICAgaWYg
KCFyZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIENhbGxpbmcgcmVzb3VyY2UtPm1h
cmtSZXNwb25zZVJlY2VpdmVkVGltZSgpIGhlcmUgbWFrZXMgcmVzb3VyY2VzIGJhciBjaGFydCBj
b25mdXNpbmcsIGJlY2F1c2UKKyAgICAvLyB3ZSBjYW5ub3QgYXBwbHkgdGhlICJsYXRlbmN5ICsg
ZG93bmxvYWQiIG1vZGVsIG9mIHJlZ3VsYXIgcmVzb3VyY2VzIHRvIFdlYlNvY2tldCBjb25uZWN0
aW9ucy4KKyAgICAvLyBGSVhNRTogRGVzaWduIGEgbmV3IFVJIGZvciBiYXIgY2hhcnRzIG9mIFdl
YlNvY2tldCByZXNvdXJjZXMsIGFuZCByZWNvcmQgdGltaW5nIGhlcmUuCisgICAgcmVzb3VyY2Ut
PnVwZGF0ZVdlYlNvY2tldFJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICBpZiAobV9mcm9udGVuZCkK
KyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsK
K30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIpCit7CisgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNv
dXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNl
KQorICAgICAgICByZXR1cm47CisKKyAgICByZXNvdXJjZS0+ZW5kVGltaW5nKCk7CisgICAgaWYg
KG1fZnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9u
dGVuZC5nZXQoKSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFBy
b2ZpbGUoUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBwcnBQcm9maWxlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAppbmRleCA3ZWQyNTQ5MGRlMmU3YWYxYzc2NDZlNzM5Y2Y1YzQ5ZmNm
OGFiZDFiLi40Mzk3NGFiNDI3Yzk4ZWY2NjIxM2VkZWNjYjRlY2YzNWZhZWVmZjA0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC04Nyw2ICs4NywxMSBAQCBjbGFz
cyBTdG9yYWdlQXJlYTsKIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKICNl
bmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdDsKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOworI2VuZGlmCisKIGNs
YXNzIEluc3BlY3RvckNvbnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgog
ICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2U+ID4gUmVzb3VyY2VzTWFwOwpAQCAtMjA0LDYgKzIwOSwxMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRET01TdG9yYWdlSXRlbShsb25nIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3MpOwogICAgIHZvaWQgcmVtb3ZlRE9NU3Rv
cmFnZUl0ZW0obG9uZyBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBib29sKiBzdWNjZXNz
KTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICB2b2lkIGRpZENyZWF0ZVdl
YlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkws
IGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMKTsKKyAgICB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3QmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpOworI2VuZGlmCiAKICAgICBjb25zdCBSZXNvdXJjZXNNYXAmIHJlc291cmNlcygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9CiAgICAgSW5zcGVjdG9yUmVzb3VyY2UqIHJl
c291cmNlRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlLmNwcAppbmRleCBlZDA3MzM5ZTZhMTMwMWVlYTBmZGJlMTkwMTA4NmQ5YWQ5MmE2
NzhhLi4zNDJhZDc5MDRjZWQ0Mjk3NTQzNDJhYTlmNzgyNDNhYTVhMWMxNTI3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC00MywxNCArNDMsMzcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU3RyaW5nQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCisKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIENy
ZWF0ZSBodW1hbi1yZWFkYWJsZSBiaW5hcnkgcmVwcmVzZW50YXRpb24sIGxpa2UgIjAxOjIzOjQ1
OjY3Ojg5OkFCOkNEOkVGIi4KK3N0YXRpYyBTdHJpbmcgY3JlYXRlUmVhZGFibGVTdHJpbmdGcm9t
QmluYXJ5KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHZhbHVlLCBzaXplX3QgbGVuZ3RoKQoreworICAg
IEFTU0VSVChsZW5ndGggPiAwKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTdd
ID0gIjAxMjM0NTY3ODlBQkNERUYiOworICAgIHNpemVfdCBidWZmZXJTaXplID0gbGVuZ3RoICog
MyAtIDE7CisgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcihidWZmZXJTaXplKTsKKyAgICBzaXplX3Qg
aW5kZXggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gJzonOworICAg
ICAgICBidWZmZXJbaW5kZXgrK10gPSBoZXhEaWdpdHNbdmFsdWVbaV0gPj4gNF07CisgICAgICAg
IGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1t2YWx1ZVtpXSAmIDB4Rl07CisgICAgfQorICAg
IEFTU0VSVChpbmRleCA9PSBidWZmZXJTaXplKTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChi
dWZmZXIpOworfQorCiBJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVzb3VyY2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiBy
ZXF1ZXN0VVJMKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2xvYWRl
cihsb2FkZXIpCi0gICAgLCBtX2ZyYW1lKGxvYWRlci0+ZnJhbWUoKSkKKyAgICAsIG1fZnJhbWUo
bG9hZGVyID8gbG9hZGVyLT5mcmFtZSgpIDogMCkKICAgICAsIG1fcmVxdWVzdFVSTChyZXF1ZXN0
VVJMKQogICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKICAgICAsIG1fY2FjaGVkKGZh
bHNlKQpAQCAtNjYsNiArODksOSBAQCBJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVzb3Vy
Y2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbAogICAgICwgbV9j
b25uZWN0aW9uSUQoMCkKICAgICAsIG1fY29ubmVjdGlvblJldXNlZChmYWxzZSkKICAgICAsIG1f
aXNNYWluUmVzb3VyY2UoZmFsc2UpCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICwgbV9p
c1dlYlNvY2tldChmYWxzZSkKKyNlbmRpZgogewogfQogCkBAIC04OCw2ICsxMTQsMTIgQEAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5zcGVjdG9yUmVzb3VyY2U6OmFwcGVuZFJlZGly
ZWN0KHVuc2lnbmVkIGxvbmcgaWQKICAgICByZXR1cm4gcmVkaXJlY3Q7CiB9CiAKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGUodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1
ZXN0VVJMKQoreworICAgIEFTU0VSVChsb2FkZXIpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW5zcGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0VVJMKSk7Cit9CisK
IFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVD
YWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBjcmVhdGUoaWRlbnRpZmllciwgbG9hZGVyLCBL
VVJMKFBhcnNlZFVSTFN0cmluZywgY2FjaGVkUmVzb3VyY2UtPnVybCgpKSk7CkBAIC0xMDcsNiAr
MTM5LDE2IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291cmNl
OjpjcmVhdGVDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVuCiAgICAgcmV0dXJuIHJlc291cmNlOwog
fQogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJj
ZT4gSW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMKQor
eworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBhZG9wdFJlZihuZXcg
SW5zcGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgMCwgcmVxdWVzdFVSTCkpOworICAgIHJlc291
cmNlLT5tYXJrV2ViU29ja2V0KCk7CisgICAgcmVzb3VyY2UtPm1fZG9jdW1lbnRVUkwgPSBkb2N1
bWVudFVSTDsKKyAgICByZXR1cm4gcmVzb3VyY2UucmVsZWFzZSgpOworfQorI2VuZGlmCisKIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIG1fcmVxdWVzdEhlYWRlckZpZWxkcyA9IHJlcXVlc3QuaHR0cEhl
YWRlckZpZWxkcygpOwpAQCAtMTQ2LDYgKzE4OCwyNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
Ojp1cGRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBt
X2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOwogfQogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlV2ViU29ja2V0UmVxdWVzdChjb25zdCBXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG1fcmVxdWVzdEhlYWRlckZp
ZWxkcyA9IHJlcXVlc3QuaGVhZGVyRmllbGRzKCk7CisgICAgbV9yZXF1ZXN0TWV0aG9kID0gIkdF
VCI7IC8vIEN1cnJlbnRseSB3ZSBhbHdheXMgdXNlICJHRVQiIHRvIHJlcXVlc3QgaGFuZHNoYWtl
LgorICAgIG1fd2ViU29ja2V0UmVxdWVzdEtleTMuc2V0KG5ldyBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0OjpLZXkzKHJlcXVlc3Qua2V5MygpKSk7CisgICAgbV9jaGFuZ2VzLnNldChSZXF1ZXN0
Q2hhbmdlKTsKKyAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOworfQorCit2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXNwb25zZShjb25zdCBXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbV9yZXNwb25zZVN0YXR1c0NvZGUgPSBy
ZXNwb25zZS5zdGF0dXNDb2RlKCk7CisgICAgbV9yZXNwb25zZVN0YXR1c1RleHQgPSByZXNwb25z
ZS5zdGF0dXNUZXh0KCk7CisgICAgbV9yZXNwb25zZUhlYWRlckZpZWxkcyA9IHJlc3BvbnNlLmhl
YWRlckZpZWxkcygpOworICAgIG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2Uuc2V0KG5ldyBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2UocmVzcG9uc2UuY2hh
bGxlbmdlUmVzcG9uc2UoKSkpOworICAgIG1fY2hhbmdlcy5zZXQoUmVzcG9uc2VDaGFuZ2UpOwor
ICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9T
T0NLRVRTKQorCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkSGVhZGVy
c09iamVjdChjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogewogICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CkBAIC0xODMs
OCArMjQ2LDEwIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
anNvbk9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk9iamVjdC0+
c2V0TnVtYmVyKCJpZCIsIG1faWRlbnRpZmllcik7CiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFu
Z2UoUmVxdWVzdENoYW5nZSkpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUpCisgICAgICAgICAgICBt
X2RvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgICAgIGpzb25P
YmplY3QtPnNldFN0cmluZygidXJsIiwgbV9yZXF1ZXN0VVJMLnN0cmluZygpKTsKLSAgICAgICAg
anNvbk9iamVjdC0+c2V0U3RyaW5nKCJkb2N1bWVudFVSTCIsIG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpKTsKKyAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJkb2N1bWVu
dFVSTCIsIG1fZG9jdW1lbnRVUkwuc3RyaW5nKCkpOwogICAgICAgICBqc29uT2JqZWN0LT5zZXRT
dHJpbmcoImhvc3QiLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKICAgICAgICAganNvbk9iamVjdC0+
c2V0U3RyaW5nKCJwYXRoIiwgbV9yZXF1ZXN0VVJMLnBhdGgoKSk7CiAgICAgICAgIGpzb25PYmpl
Y3QtPnNldFN0cmluZygibGFzdFBhdGhDb21wb25lbnQiLCBtX3JlcXVlc3RVUkwubGFzdFBhdGhD
b21wb25lbnQoKSk7CkBAIC0xOTQsNiArMjU5LDEwIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6
OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgICAg
IGpzb25PYmplY3QtPnNldFN0cmluZygicmVxdWVzdE1ldGhvZCIsIG1fcmVxdWVzdE1ldGhvZCk7
CiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygicmVxdWVzdEZvcm1EYXRhIiwgbV9yZXF1
ZXN0Rm9ybURhdGEpOwogICAgICAgICBqc29uT2JqZWN0LT5zZXRCb29sKCJkaWRSZXF1ZXN0Q2hh
bmdlIiwgdHJ1ZSk7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICBpZiAobV93ZWJT
b2NrZXRSZXF1ZXN0S2V5MykKKyAgICAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygid2Vi
U29ja2V0UmVxdWVzdEtleTMiLCBjcmVhdGVSZWFkYWJsZVN0cmluZ0Zyb21CaW5hcnkobV93ZWJT
b2NrZXRSZXF1ZXN0S2V5My0+dmFsdWUsIHNpemVvZihtX3dlYlNvY2tldFJlcXVlc3RLZXkzLT52
YWx1ZSkpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKFJl
c3BvbnNlQ2hhbmdlKSkgewpAQCAtMjA5LDYgKzI3OCwxMCBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogICAg
ICAgICBqc29uT2JqZWN0LT5zZXRCb29sKCJjYWNoZWQiLCBtX2NhY2hlZCk7CiAgICAgICAgIGlm
IChtX2xvYWRUaW1pbmcgJiYgIW1fY2FjaGVkKQogICAgICAgICAgICAganNvbk9iamVjdC0+c2V0
T2JqZWN0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZyhtX2xvYWRUaW1pbmcuZ2V0KCkp
KTsKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIGlmIChtX3dlYlNvY2tldENoYWxs
ZW5nZVJlc3BvbnNlKQorICAgICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJ3ZWJTb2Nr
ZXRDaGFsbGVuZ2VSZXNwb25zZSIsIGNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeShtX3dl
YlNvY2tldENoYWxsZW5nZVJlc3BvbnNlLT52YWx1ZSwgc2l6ZW9mKG1fd2ViU29ja2V0Q2hhbGxl
bmdlUmVzcG9uc2UtPnZhbHVlKSkpOworI2VuZGlmCiAgICAgICAgIGpzb25PYmplY3QtPnNldEJv
b2woImRpZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogCkBAIC0yNjcsNiArMzQwLDgg
QEAgQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclJlc291cmNlOjpjYWNoZWRSZXNvdXJjZSgpIGNv
bnN0CiAgICAgLy8gVHJ5IGhhcmQgdG8gZmluZCBhIGNvcnJlc3BvbmRpbmcgQ2FjaGVkUmVzb3Vy
Y2UuIER1cmluZyBwcmVsb2FkaW5nLCBEb2NMb2FkZXIgbWF5IG5vdCBoYXZlIHRoZSByZXNvdXJj
ZSBpbiBkb2N1bWVudCByZXNvdXJjZXMgc2V0IHlldCwKICAgICAvLyBidXQgSW5zcGVjdG9yIHdp
bGwgYWxyZWFkeSB0cnkgdG8gZmV0Y2ggZGF0YSB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIHZpYSBD
YWNoZWRSZXNvdXJjZSAoYW5kIGl0IHdvbid0IHVwZGF0ZSBvbmNlIHRoZSByZXNvdXJjZSBpcyBh
ZGRlZCwKICAgICAvLyBiZWNhdXNlIG1fY2hhbmdlcyB3aWxsIG5vdCBoYXZlIHRoZSBhcHByb3By
aWF0ZSBiaXRzIHNldCkuCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gMDsKICAg
ICBjb25zdCBTdHJpbmcmIHVybCA9IG1fcmVxdWVzdFVSTC5zdHJpbmcoKTsKICAgICBDYWNoZWRS
ZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2NMb2FkZXIo
KS0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQpAQCAtMzAz
LDYgKzM3OCwxMiBAQCBJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZTo6
dHlwZSgpIGNvbnN0CiAgICAgaWYgKCFtX292ZXJyaWRlQ29udGVudC5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIG1fb3ZlcnJpZGVDb250ZW50VHlwZTsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKyAgICBpZiAobV9pc1dlYlNvY2tldCkKKyAgICAgICAgcmV0dXJuIFdlYlNvY2tldDsKKyNl
bmRpZgorCisgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihtX3JlcXVlc3RVUkwsIG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpKSB7CiAg
ICAgICAgIEluc3BlY3RvclJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSA9IGNhY2hlZFJlc291
cmNlVHlwZSgpOwogICAgICAgICBpZiAocmVzb3VyY2VUeXBlID09IE90aGVyKQpAQCAtMzQyLDcg
KzQyMyw3IEBAIFN0cmluZyBJbnNwZWN0b3JSZXNvdXJjZTo6c291cmNlU3RyaW5nKCkgY29uc3QK
IAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluc3BlY3RvclJlc291cmNlOjpyZXNvdXJjZURh
dGEoU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKSBjb25zdAogewotICAgIGlmIChlcXVhbElnbm9y
aW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fcmVxdWVzdFVSTCwgbV9sb2FkZXItPnJlcXVlc3RVUkwo
KSkpIHsKKyAgICBpZiAobV9sb2FkZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihtX3JlcXVlc3RVUkwsIG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpKSB7CiAgICAgICAgICp0ZXh0
RW5jb2RpbmdOYW1lID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpOwogICAg
ICAgICByZXR1cm4gbV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaAppbmRleCA0MDA0MTQyYzIzNzRjY2U2NGVlNTg3MTRi
YWUwNGE0Y2U0M2ZhYTQ2Li4zZmQ1YTY5YjlkOGNiOWIwZTgzOTlkNGZmNDZhYmQ4NDIyMDFiN2Mx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKQEAgLTM0LDYgKzM0LDggQEAK
ICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IlNjcmlwdFN0cmluZy5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIK
KyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogCiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNTEsNiArNTMsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGNs
YXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q7CisgICAgY2xhc3MgV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2U7CisjZW5kaWYKKwogICAgIGNsYXNzIEluc3BlY3RvclJlc291cmNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yUmVzb3VyY2U+IHsKICAgICBwdWJsaWM6CiAKQEAgLTYz
LDE2ICs3MCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTY3JpcHQsCiAg
ICAgICAgICAgICBYSFIsCiAgICAgICAgICAgICBNZWRpYSwKKyAgICAgICAgICAgIFdlYlNvY2tl
dCwKICAgICAgICAgICAgIE90aGVyCiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yUmVzb3VyY2UoaWRl
bnRpZmllciwgbG9hZGVyLCByZXF1ZXN0VVJMKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpOwog
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBjcmVhdGVDYWNo
ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hl
ZFJlc291cmNlKik7CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIC8vIFdlYlNv
Y2tldCByZXNvdXJjZSBkb2Vzbid0IGhhdmUgaXRzIGxvYWRlci4gRm9yIFdlYlNvY2tldCByZXNv
dXJjZXMsIG1fbG9hZGVyIGFuZCBtX2ZyYW1lIHdpbGwgYmVjb21lIG51bGwuCisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBjcmVhdGVXZWJTb2NrZXQodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBk
b2N1bWVudFVSTCk7CisjZW5kaWYKKwogICAgICAgICB+SW5zcGVjdG9yUmVzb3VyY2UoKTsKIAog
ICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBhcHBlbmRSZWRpcmVjdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlZGlyZWN0VVJMKTsKQEAgLTgyLDYg
KzkyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB1cGRhdGVSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2b2lkIHVwZGF0ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAg
ICAgdm9pZCB1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0KGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QmKTsKKyAgICAgICAgdm9pZCB1cGRhdGVXZWJTb2NrZXRSZXNwb25zZShjb25zdCBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZSYpOworI2VuZGlmCisKICAgICAgICAgdm9pZCBzZXRPdmVy
cmlkZUNvbnRlbnQoY29uc3QgU2NyaXB0U3RyaW5nJiBkYXRhLCBUeXBlKTsKIAogICAgICAgICBT
dHJpbmcgc291cmNlU3RyaW5nKCkgY29uc3Q7CkBAIC0xNDksMTAgKzE2NCwxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKCkgY29uc3Q7CiAg
ICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0OwogCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorICAgICAgICB2b2lkIG1hcmtXZWJTb2NrZXQoKSB7IG1faXNXZWJT
b2NrZXQgPSB0cnVlOyB9CisjZW5kaWYKKwogICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRp
ZmllcjsKICAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2xvYWRlcjsKICAgICAgICAg
UmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwogICAgICAgICBLVVJMIG1fcmVxdWVzdFVSTDsKKyAgICAg
ICAgS1VSTCBtX2RvY3VtZW50VVJMOwogICAgICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhl
YWRlckZpZWxkczsKICAgICAgICAgSFRUUEhlYWRlck1hcCBtX3Jlc3BvbnNlSGVhZGVyRmllbGRz
OwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKQEAgLTE3OSw2ICsxOTksMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwogICAgICAgICBT
dHJpbmcgbV9yZXF1ZXN0Rm9ybURhdGE7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9y
UmVzb3VyY2U+ID4gbV9yZWRpcmVjdHM7CisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAg
ICAgIGJvb2wgbV9pc1dlYlNvY2tldDsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZpZWxk
cyBhcmUgbm90IHVzZWQgZm9yIHJlc291cmNlcyBvdGhlciB0aGFuIFdlYlNvY2tldC4KKyAgICAg
ICAgLy8gV2UgYWxsb2NhdGUgdGhlbSBkeW5hbWljYWxseSB0byByZWR1Y2UgbWVtb3J5IGNvbnN1
bXB0aW9uIGZvciByZWd1bGFyIHJlc291cmNlcy4KKyAgICAgICAgT3duUHRyPFdlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3Q6OktleTM+IG1fd2ViU29ja2V0UmVxdWVzdEtleTM7CisgICAgICAgIE93
blB0cjxXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U+IG1fd2Vi
U29ja2V0Q2hhbGxlbmdlUmVzcG9uc2U7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5kZXggMDZh
NjEwZDA5NjJkYTgzOGYxNjc3NGRmZmI5NjIwYTY4N2IxMWMxZi4uY2VkZGVkMzU3MDM2MDEwZjMx
MTMyN2QxYzIyNjA4MjA5NWZlOTBmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZS5qcwpAQCAtNDUsNyArNDUsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsK
ICAgICBTY3JpcHQ6ICAgICA0LAogICAgIFhIUjogICAgICAgIDUsCiAgICAgTWVkaWE6ICAgICAg
NiwKLSAgICBPdGhlcjogICAgICA3LAorICAgIFdlYlNvY2tldDogIDcsCisgICAgT3RoZXI6ICAg
ICAgOCwKIAogICAgIGlzVGV4dFR5cGU6IGZ1bmN0aW9uKHR5cGUpCiAgICAgewpAQCAtNjcsNiAr
NjgsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJzY3JpcHQiKTsKICAgICAgICAgICAgIGNhc2Ug
dGhpcy5YSFI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
WEhSIik7CisgICAgICAgICAgICBjYXNlIHRoaXMuV2ViU29ja2V0OgorICAgICAgICAgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldlYlNvY2tldCIpOwogICAgICAgICAgICAg
Y2FzZSB0aGlzLk90aGVyOgogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJvdGhlciIpOwpAQCAtMzYzLDYgKzM2Niw5IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhIUjoKICAgICAgICAgICAgICAgICB0aGlzLmNhdGVn
b3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy54aHI7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldl
YlNvY2tldDoKKyAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJl
c291cmNlQ2F0ZWdvcmllcy53ZWJzb2NrZXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLk90aGVyOgogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9y
LnJlc291cmNlQ2F0ZWdvcmllcy5vdGhlcjsKQEAgLTU3NSw3ICs1ODEsOCBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBl
ID09PSAidW5kZWZpbmVkIgogICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5PdGhlcgotICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5YSFIpCisgICAgICAgICB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLlhIUgorICAgICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgICAgICBpZiAodGhpcy5taW1lVHlwZSBpbiBXZWJJbnNwZWN0b3IuTUlNRVR5cGVzKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggN2NlMDli
NmE2NGVkOTA0ZjFiZDc0YjIwMjY1MjY3NjQ4Zjg2MDQ4Yi4uMWMyNTc0ZjcyZWI0NzAyNDY5N2U2
MDUwMzI0OWYxZWQ4ZWJiOTYxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VWaWV3LmpzCkBAIC0yNzksMTMgKzI3OSwxOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VW
aWV3LnByb3RvdHlwZSA9IHsKIAogICAgIF9yZWZyZXNoUmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMucmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhlYWRl
cnMsIHRoaXMucmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAgIHZhciBhZGRpdGlv
bmFsUm93ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc291cmNlLndlYlNvY2tl
dFJlcXVlc3RLZXkzICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cg
PSB7aGVhZGVyOiAiKEtleTMpIiwgdmFsdWU6IHRoaXMucmVzb3VyY2Uud2ViU29ja2V0UmVxdWVz
dEtleTN9OworICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJlcXVlc3QgSGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNvcnRlZFJlcXVlc3RIZWFkZXJz
LCBhZGRpdGlvbmFsUm93LCB0aGlzLnJlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgICAg
ICB0aGlzLl9yZWZyZXNoRm9ybURhdGEoKTsKICAgICB9LAogCiAgICAgX3JlZnJlc2hSZXNwb25z
ZUhlYWRlcnM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJz
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UgSGVhZGVycyIpLCB0aGlzLnJlc291cmNl
LnNvcnRlZFJlc3BvbnNlSGVhZGVycywgdGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7
CisgICAgICAgIHZhciBhZGRpdGlvbmFsUm93ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0
aGlzLnJlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikK
KyAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVyOiAiKENoYWxsZW5nZSBSZXNwb25z
ZSkiLCB2YWx1ZTogdGhpcy5yZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZX07Cisg
ICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9u
c2UgSGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNvcnRlZFJlc3BvbnNlSGVhZGVycywgYWRkaXRp
b25hbFJvdywgdGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CiAgICAgfSwKIAogICAg
IF9yZWZyZXNoSFRUUEluZm9ybWF0aW9uOiBmdW5jdGlvbigpCkBAIC0zMTYsNyArMzIyLDcgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9
LAogICAgIAotICAgIF9yZWZyZXNoSGVhZGVyczogZnVuY3Rpb24odGl0bGUsIGhlYWRlcnMsIGhl
YWRlcnNUcmVlRWxlbWVudCkKKyAgICBfcmVmcmVzaEhlYWRlcnM6IGZ1bmN0aW9uKHRpdGxlLCBo
ZWFkZXJzLCBhZGRpdGlvbmFsUm93LCBoZWFkZXJzVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAg
ICBoZWFkZXJzVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMzMzLDYgKzMzOSwx
NSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGhlYWRl
cnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CiAgICAgICAgIH0K
KworICAgICAgICBpZiAoYWRkaXRpb25hbFJvdykgeworICAgICAgICAgICAgdmFyIHRpdGxlID0g
IjxkaXYgY2xhc3M9XCJoZWFkZXItbmFtZVwiPiIgKyBhZGRpdGlvbmFsUm93LmhlYWRlci5lc2Nh
cGVIVE1MKCkgKyAiOjwvZGl2PiI7CisgICAgICAgICAgICB0aXRsZSArPSAiPGRpdiBjbGFzcz1c
ImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyBhZGRpdGlvbmFsUm93LnZhbHVlLmVzY2Fw
ZUhUTUwoKSArICI8L2Rpdj4iCisKKyAgICAgICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9
IG5ldyBUcmVlRWxlbWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOworICAgICAgICAgICAgaGVhZGVy
VHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICAgICAgaGVhZGVyc1RyZWVF
bGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsKKyAgICAgICAgfQogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3MgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCA0MzE5
ODE2NTI2MzhiMTc0MDZmZWM0NjNjYjdkMTYzZGZlNTQwYzkyLi4yODIzNDE4MzY3NjYwODY1NmFl
YTVjMDRhNzA4ODk2OGIyYzE4MzA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzcwpAQCAtMjgzNSw3ICsyODM1LDggQEAgYnV0dG9uLmVuYWJsZS10b2dnbGUtc3Rh
dHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKIH0KIAogLnJlc291cmNlcy1jYXRlZ29y
eS1kb2N1bWVudHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktc3R5bGVzaGVldHMsIC5yZXNvdXJjZXMt
Y2F0ZWdvcnktaW1hZ2VzLAotLnJlc291cmNlcy1jYXRlZ29yeS1zY3JpcHRzLCAucmVzb3VyY2Vz
LWNhdGVnb3J5LXhociwgLnJlc291cmNlcy1jYXRlZ29yeS1mb250cywgLnJlc291cmNlcy1jYXRl
Z29yeS1vdGhlciB7CisucmVzb3VyY2VzLWNhdGVnb3J5LXNjcmlwdHMsIC5yZXNvdXJjZXMtY2F0
ZWdvcnkteGhyLCAucmVzb3VyY2VzLWNhdGVnb3J5LWZvbnRzLAorLnJlc291cmNlcy1jYXRlZ29y
eS13ZWJzb2NrZXRzLCAucmVzb3VyY2VzLWNhdGVnb3J5LW90aGVyIHsKICAgICBkaXNwbGF5OiBu
b25lOwogfQogCkBAIC0yODQ1LDYgKzI4NDYsNyBAQCBidXR0b24uZW5hYmxlLXRvZ2dsZS1zdGF0
dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogLmZpbHRlci1hbGwgLnJlc291cmNlcy1j
YXRlZ29yeS1zY3JpcHRzLCAuZmlsdGVyLXNjcmlwdHMgLnJlc291cmNlcy1jYXRlZ29yeS1zY3Jp
cHRzLAogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS14aHIsIC5maWx0ZXIteGhyIC5y
ZXNvdXJjZXMtY2F0ZWdvcnkteGhyLAogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS1m
b250cywgLmZpbHRlci1mb250cyAucmVzb3VyY2VzLWNhdGVnb3J5LWZvbnRzLAorLmZpbHRlci1h
bGwgLnJlc291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLCAuZmlsdGVyLXdlYnNvY2tldHMgLnJl
c291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLAogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRl
Z29yeS1vdGhlciwgLmZpbHRlci1vdGhlciAucmVzb3VyY2VzLWNhdGVnb3J5LW90aGVyLAogLnJl
c291cmNlLXNpZGViYXItdHJlZS1pdGVtLnNlbGVjdGVkIHsKICAgICBkaXNwbGF5OiBsaXN0LWl0
ZW07CkBAIC0yOTIwLDYgKzI5MjIsMTUgQEAgYnV0dG9uLmVuYWJsZS10b2dnbGUtc3RhdHVzLWJh
ci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKICAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJs
KEltYWdlcy90aW1lbGluZUhvbGxvd1BpbGxZZWxsb3cucG5nKSA2IDcgNiA3OwogfQogCisvKiBG
SVhNRTogQ3JlYXRlIGJhciBpbWFnZXMgZm9yIFdlYlNvY2tldC4gKi8KKy5yZXNvdXJjZXMtY2F0
ZWdvcnktd2Vic29ja2V0cyAucmVzb3VyY2VzLWdyYXBoLWJhciB7CisgICAgLXdlYmtpdC1ib3Jk
ZXItaW1hZ2U6IHVybChJbWFnZXMvdGltZWxpbmVQaWxsR3JheS5wbmcpIDYgNyA2IDc7Cit9CisK
Ky5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291cmNl
cy1ncmFwaC1iYXIgeworICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGltZWxp
bmVIb2xsb3dQaWxsR3JheS5wbmcpIDYgNyA2IDc7Cit9CisKICNyZXNvdXJjZS12aWV3cyB7CiAg
ICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMjNweDsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGRiODllMjBlMjVmYjkwYzVmODk0YWMzNThkYmVi
YzRjZTRhM2JkMGYuLjEyMjgwZDM0ZDgyN2M2OWUwOGY1ZTU2ZjEwOTc2NzE4YzI4YjVmNzkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNTE1LDYgKzUxNSw3
IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgICAgIHNjcmlw
dHM6IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSgic2NyaXB0cyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2NyaXB0cyIpLCAicmdiKDI1NSwxMjEsMCkiKSwKICAgICAgICAgeGhy
OiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2F0ZWdvcnkoInhociIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiWEhSIiksICJyZ2IoMjMxLDIzMSwxMCkiKSwKICAgICAgICAgZm9udHM6IG5ldyBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSgiZm9udHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkZvbnRzIiksICJyZ2IoMjU1LDgyLDYyKSIpLAorICAgICAgICB3ZWJzb2NrZXQ6IG5ldyBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSgid2Vic29ja2V0cyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiV2ViU29ja2V0IiksICJyZ2IoMTg2LDE4NiwxODYpIiksIC8vIEZJWE1FOiBEZWNp
ZGUgdGhlIGNvbG9yLgogICAgICAgICBvdGhlcjogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNh
dGVnb3J5KCJvdGhlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3RoZXIiKSwgInJnYigxODYs
MTg2LDE4NikiKQogICAgIH07CiAKQEAgLTEyMTksNiArMTIyMCw4IEBAIFdlYkluc3BlY3Rvci51
cGRhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiAgICAgICAgIHJlc291cmNlLnJlcXVl
c3RNZXRob2QgPSBwYXlsb2FkLnJlcXVlc3RNZXRob2Q7CiAgICAgICAgIHJlc291cmNlLnJlcXVl
c3RGb3JtRGF0YSA9IHBheWxvYWQucmVxdWVzdEZvcm1EYXRhOwogICAgICAgICByZXNvdXJjZS5k
b2N1bWVudFVSTCA9IHBheWxvYWQuZG9jdW1lbnRVUkw7CisgICAgICAgIGlmICh0eXBlb2YgcGF5
bG9hZC53ZWJTb2NrZXRSZXF1ZXN0S2V5MyAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBy
ZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5MyA9IHBheWxvYWQud2ViU29ja2V0UmVxdWVzdEtl
eTM7CiAKICAgICAgICAgaWYgKHJlc291cmNlLm1haW5SZXNvdXJjZSkKICAgICAgICAgICAgIHRo
aXMubWFpblJlc291cmNlID0gcmVzb3VyY2U7CkBAIC0xMjQzLDYgKzEyNDYsOCBAQCBXZWJJbnNw
ZWN0b3IudXBkYXRlUmVzb3VyY2UgPSBmdW5jdGlvbihwYXlsb2FkKQogICAgICAgICByZXNvdXJj
ZS5jb25uZWN0aW9uUmV1c2VkID0gcGF5bG9hZC5jb25uZWN0aW9uUmV1c2VkOwogICAgICAgICBy
ZXNvdXJjZS50aW1pbmcgPSBwYXlsb2FkLnRpbWluZzsKICAgICAgICAgcmVzb3VyY2UuY2FjaGVk
ID0gcGF5bG9hZC5jYWNoZWQ7CisgICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC53ZWJTb2NrZXRD
aGFsbGVuZ2VSZXNwb25zZSAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXNvdXJjZS53
ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSA9IHBheWxvYWQud2ViU29ja2V0Q2hhbGxlbmdlUmVz
cG9uc2U7CiAgICAgfQogCiAgICAgaWYgKHBheWxvYWQuZGlkVHlwZUNoYW5nZSkgewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU0YmUxNmE0OTViZTFhOGMzMjI0
Y2EzNjNkNjI3ZGNmM2RjMGNjOTIuLmQ1OGI5MDJhYjVmMTBlNDNjZmJkOGRhYWNiOGM0Y2UxMjRj
OWI1ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM2LDgg
KzM2LDExIEBACiAKICNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFt
SGFuZGxlLmgiCkBAIC02Myw3ICs2NiwxNCBAQCBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRD
aGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYQogICAg
ICwgbV9jbG9zZWQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEoZmFs
c2UpCiAgICAgLCBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50KDApCisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICAsIG1faWRlbnRpZmllcigwKQorI2VuZGlmCiB7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4
dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBjb250cm9sbGVyLT5kaWRDcmVhdGVX
ZWJTb2NrZXQoaWRlbnRpZmllcigpLCB1cmwsIG1fY29udGV4dC0+dXJsKCkpOworI2VuZGlmCiB9
CiAKIFdlYlNvY2tldENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkKQEAgLTExMiw2ICsxMjIs
MTEgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgpCiB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmRpc2Nvbm5lY3QoKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAl
cCBkaXNjb25uZWN0IiwgdGhpcyk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAobV9j
b250ZXh0KQorICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IG1f
Y29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICAgICAgY29udHJvbGxlci0+
ZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRpZmllcigpKTsKKyNlbmRpZgogICAgIG1faGFuZHNoYWtl
LmNsZWFyU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIG1fY2xpZW50ID0gMDsKICAgICBt
X2NvbnRleHQgPSAwOwpAQCAtMTM3LDYgKzE1MiwxMCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiAgICAgQVNTRVJUKGhhbmRsZSA9
PSBtX2hhbmRsZSk7CiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIGNvbnRyb2xsZXIt
PndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChpZGVudGlmaWVyKCksIG1faGFuZHNo
YWtlLmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSk7CisjZW5kaWYKICAgICBjb25zdCBDU3RyaW5n
JiBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UuY2xpZW50SGFuZHNoYWtlTWVzc2FnZSgp
OwogICAgIGlmICghaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1lc3NhZ2UuZGF0YSgpLCBoYW5kc2hh
a2VNZXNzYWdlLmxlbmd0aCgpKSkgewogICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBz
ZW5kaW5nIGhhbmRzaGFrZSBtZXNzYWdlLiIsIDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigp
KTsKQEAgLTE0Nyw2ICsxNjYsMTEgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKFNv
Y2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9z
ZShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldENoYW5uZWwgJXAgZGlkQ2xvc2UiLCB0aGlzKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
ICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250
cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgICBj
b250cm9sbGVyLT5kaWRDbG9zZVdlYlNvY2tldChpZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAg
QVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSB8fCAhbV9oYW5kbGUpOwog
ICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBpZiAobV9oYW5kbGUpIHsKQEAgLTI1MCw2ICsyNzQs
MTAgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICAgICAgaWYg
KGhlYWRlckxlbmd0aCA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBp
ZiAobV9oYW5kc2hha2UubW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKSB7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBjb250cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAg
ICAgICAgICAgICAgY29udHJvbGxlci0+ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlKGlkZW50aWZpZXIoKSwgbV9oYW5kc2hha2Uuc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSk7
CisjZW5kaWYKICAgICAgICAgICAgIGlmICghbV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCku
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0
PERvY3VtZW50Kj4obV9jb250ZXh0KTsKQEAgLTM2Nyw2ICszOTUsMjEgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpyZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1l
cikKICAgICAgICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0KCkpOwogfQogCisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKK3Vuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5lbDo6aWRlbnRpZmllcigpCit7
CisgICAgaWYgKG1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKwor
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gbV9jb250ZXh0LT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gY29udHJvbGxlci0+
aW5zcGVjdGVkUGFnZSgpKQorICAgICAgICAgICAgbV9pZGVudGlmaWVyID0gcGFnZS0+cHJvZ3Jl
c3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworCisgICAgQVNTRVJUKG1faWRlbnRpZmll
cik7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SKQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShXRUJf
U09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDQzZDQzMWEw
Zjg5OWUwMDMwOWU2YTMwNTllYjY0YzI5OGNlMjAxNjMuLmEwOGU2YmIyZTZhYzg2NzU4ODY3ODdj
YmYzYjZhNDU3ZDI1Y2MxZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApA
QCAtODQsNiArODQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHByb2Nl
c3NCdWZmZXIoKTsKICAgICAgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tl
dENoYW5uZWw+KiB0aW1lcik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIoKTsKKyNlbmRpZgorCiAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIG1fY29udGV4dDsKICAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9j
bGllbnQ7CiAgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZSBtX2hhbmRzaGFrZTsKQEAgLTk2LDYg
KzEwMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9jbG9zZWQ7CiAg
ICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhOwogICAgICAgICB1bnNpZ25l
ZCBsb25nIG1fdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQ7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKKyNlbmRpZgogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66696</attachid>
            <date>2010-09-07 02:17:38 -0700</date>
            <delta_ts>2010-09-13 01:51:06 -0700</delta_ts>
            <desc>Patch v8 (Test expectation update)</desc>
            <filename>bug-40768-20100907181736.patch</filename>
            <type>text/plain</type>
            <size>33684</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYTdhMTk3ZmZhNTczNWYxODgxM2MzNzIzNjcxNDFmMzM1MTczNzI2Li43YzAwZDg1
ZmJiY2M5ZjNkMjA5NWE4Y2IwNjgwNWNmYzNjNjFhNGIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDktMDcgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBleHBlY3RhdGlv
biBuZWVkcyB0byBiZSB1cGRhdGVkIGJlY2F1c2UgbmV3IHJlc291cmNlIHR5cGUgZm9yCisgICAg
ICAgIFdlYiBJbnNwZWN0b3IgaXMgZGVmaW5lZC4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBX
ZWJTb2NrZXQgaW4gUmVzb3VyY2VzIHRhYgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDA3NjgKKworICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25z
LWV2ZW50cy1leHBlY3RlZC50eHQ6CisKIDIwMTAtMDktMDcgIEZ1bWl0b3NoaSBVa2FpICA8dWth
aUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnVpbGQgZml4LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXZlbnRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWV2ZW50cy1leHBlY3RlZC50eHQK
aW5kZXggNmIxYmEwYTg5MzhlYTZkZjg5N2E2OTEyMzNkYzIxYjE2NzIzMTFkYy4uMjAxMmIwNmQy
ZDliNjQ3NzI5NzAxYWNjZjNjNzEzYTg4MGUwNjNhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtZXZlbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1ldmVudHMtZXhwZWN0ZWQudHh0CkBAIC05LDcgKzksNyBA
QCBHb3QgY2FsbGJhY2ssIGFyZ3VtZW50cyBkdW1wIGZvbGxvd3M6CiB7CiAgICAgMCA6IHsKICAg
ICAgICAgaWQgOiA8bnVtYmVyPgotICAgICAgICB0eXBlIDogNworICAgICAgICB0eXBlIDogOAog
ICAgICAgICBoYXIgOiA8b2JqZWN0PgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ1OWI1OTE3YzJlYTcwMGZkMGIxZDdl
OGI3ZDkyYWQ0ODU3NWFlYi4uNzFmN2ExOWI1NGJiNTM5MTQ5ODAwOTA1ZWU1YTgyODU4MjRhM2Vh
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3MiBAQAorMjAxMC0wOS0wNyAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViU29ja2V0IHJlc291cmNlIHR5cGUgdG8gV2ViIEluc3BlY3Rvci4KKworICAgICAg
ICBXaGVuIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLCBhIGxpbmUg
Zm9yIHRoYXQgY29ubmVjdGlvbgorICAgICAgICB3aWxsIGFwcGVhciBpbiBXZWIgSW5zcGVjdG9y
J3MgUmVzb3VyY2VzIHRhYi4gSWYgdGhlIHJlc291cmNlIG5hbWUgaXMKKyAgICAgICAgY2xpY2tl
ZCwgdGhlIGRldGFpbHMgb2YgaGFuZHNoYWtlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHdpbGwgYmUg
c2hvd24uCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogV2ViU29ja2V0IGluIFJlc291cmNlcyB0
YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNzY4
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRSZXNvdXJjZSk6IFdlYlNvY2tldCBy
ZXNvdXJjZSBkb2VzIG5vdAorICAgICAgICBoYXZlIGFuIGFzc29jaWF0ZWQgbG9hZGVyLCB0aHVz
IGZyYW1lIG1pZ2h0IGJlIG51bGwuIE5lZWQgdG8gY2hlY2sgaXQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVSZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV2ViU29ja2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRS
ZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xvc2VXZWJTb2NrZXQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlLmNwcDogQWRkIG51bGwgY2hlY2tzIG9mIG1fbG9hZGVyIGFuZCBtX2ZyYW1lLAorICAg
ICAgICBiZWNhdXNlIFdlYlNvY2tldCBkb2VzIG5vdCBoYXZlIGEgbG9hZGVyIGFuZCB3ZSBuZWVk
IHRvIGFsbG93IG51bGwgZm9yCisgICAgICAgIHRoZXNlIHZhcmlhYmxlcy4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZSk6IEZhY3RvcnkgZnVuY3Rpb24gb2YKKyAgICAg
ICAgcmVndWxhciAobm9uLVdlYlNvY2tldCkgcmVzb3VyY2VzLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tldCk6IEZhY3RvcnkgZnVuY3Rpb24gb2YK
KyAgICAgICAgV2ViU29ja2V0IHJlc291cmNlcy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KTogbV9mcmFtZS0+ZG9j
dW1lbnQoKSBiZWNvbWVzCisgICAgICAgIGF2YWlsYWJsZSB3aGVuIEZyYW1lOjpzZXREb2N1bWVu
dCgpIGlzIGNhbGxlZC4gV2UgY2Fubm90IG9idGFpbiBkb2N1bWVudFVSTAorICAgICAgICBkdXJp
bmcgdGhlIGNvbnN0cnVjdG9yIG9yIHVwZGF0ZVJlcXVlc3QoKSBmdW5jdGlvbiwgYmVjYXVzZSBt
X2ZyYW1lLT5kb2N1bWVudCgpCisgICAgICAgIGlzIG5vdCBhdmFpbGFibGUgeWV0IGF0IHRoYXQg
cG9pbnQgYW5kIGRvY3VtZW50VVJMIHdpbGwgY29udGFpbiBhIHdyb25nIFVSTC4KKyAgICAgICAg
QXMgZmFyIGFzIEkga25vdywgdXBkYXRlU2NyaXB0T2JqZWN0KCkgaXMgdGhlIG9ubHkgcGxhY2Ug
d2hlcmUgd2UgY2FuIHNhZmVseQorICAgICAgICBvYnRhaW4gZG9jdW1lbnRVUkwuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6Y2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2U6OnJlc291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjptYXJrV2ViU29ja2V0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGUudG9TdHJpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZS5zZXQgdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UucHJvdG90eXBlLl9taW1lVHlwZUlzQ29uc2lzdGVudFdpdGhUeXBlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVxdWVzdEhlYWRlcnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuX3JlZnJlc2hSZXNwb25zZUhl
YWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuX3Jl
ZnJlc2hIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3M6CisgICAgICAgICgucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMsIC5yZXNvdXJjZXMt
Y2F0ZWdvcnktb3RoZXIpOgorICAgICAgICAoLnJlc291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRz
IC5yZXNvdXJjZXMtZ3JhcGgtYmFyKToKKyAgICAgICAgKC5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vi
c29ja2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291cmNlcy1ncmFwaC1iYXIpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IudXBkYXRlUmVzb3VyY2UpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWw6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6ZGlkT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpk
aWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmlkZW50aWZpZXIpOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorCiAyMDEwLTA5LTA3ICBL
d2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IDFlMTMxZjdhMTlhZTA0MzRkNzNhNWY5ZTk0MTM0MGYxMDQ4NWIxYjguLjM5Njg3YmJm
ZWFmZmE0YzUwMzBmM2U3MGEyYjQ3YjgwZGFkOWY5NDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC03OTgsNiArNzk4LDggQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjphZGRSZXNvdXJjZShJbnNwZWN0b3JSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAg
bV9rbm93blJlc291cmNlcy5hZGQocmVzb3VyY2UtPnJlcXVlc3RVUkwoKSk7CiAKICAgICBGcmFt
ZSogZnJhbWUgPSByZXNvdXJjZS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm47CiAgICAgUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCA9IG1fZnJhbWVSZXNvdXJjZXMu
Z2V0KGZyYW1lKTsKICAgICBpZiAocmVzb3VyY2VNYXApCiAgICAgICAgIHJlc291cmNlTWFwLT5z
ZXQocmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgcmVzb3VyY2UpOwpAQCAtODE2LDYgKzgxOCw4IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlUmVzb3VyY2UoSW5zcGVjdG9yUmVzb3Vy
Y2UqIHJlc291cmNlKQogICAgICAgICBtX2tub3duUmVzb3VyY2VzLnJlbW92ZShyZXF1ZXN0VVJM
KTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHJlc291cmNlLT5mcmFtZSgpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybjsKICAgICBSZXNvdXJjZXNNYXAqIHJlc291cmNlTWFwID0gbV9m
cmFtZVJlc291cmNlcy5nZXQoZnJhbWUpOwogICAgIGlmICghcmVzb3VyY2VNYXApIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNDQyLDYgKzE0NDYsNTYgQEAgSW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlKiBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRET01TdG9yYWdlUmVz
b3VyY2VGb3JJZChsb24KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQordm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVS
TCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCht
X2luc3BlY3RlZFBhZ2UpOworCisgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJj
ZSA9IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwgcmVxdWVz
dFVSTCwgZG9jdW1lbnRVUkwpOworICAgIGFkZFJlc291cmNlKHJlc291cmNlLmdldCgpKTsKKwor
ICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQuZ2V0KCkpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxT
ZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgUmVmUHRyPElu
c3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShpZGVudGlmaWVy
KTsKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47CisgICAgcmVzb3VyY2UtPnN0
YXJ0VGltaW5nKCk7CisgICAgcmVzb3VyY2UtPnVwZGF0ZVdlYlNvY2tldFJlcXVlc3QocmVxdWVz
dCk7CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRP
YmplY3QobV9mcm9udGVuZC5nZXQoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAg
IFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFja2VkUmVzb3VyY2Uo
aWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworICAgIC8v
IENhbGxpbmcgcmVzb3VyY2UtPm1hcmtSZXNwb25zZVJlY2VpdmVkVGltZSgpIGhlcmUgbWFrZXMg
cmVzb3VyY2VzIGJhciBjaGFydCBjb25mdXNpbmcsIGJlY2F1c2UKKyAgICAvLyB3ZSBjYW5ub3Qg
YXBwbHkgdGhlICJsYXRlbmN5ICsgZG93bmxvYWQiIG1vZGVsIG9mIHJlZ3VsYXIgcmVzb3VyY2Vz
IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucy4KKyAgICAvLyBGSVhNRTogRGVzaWduIGEgbmV3IFVJ
IGZvciBiYXIgY2hhcnRzIG9mIFdlYlNvY2tldCByZXNvdXJjZXMsIGFuZCByZWNvcmQgdGltaW5n
IGhlcmUuCisgICAgcmVzb3VyY2UtPnVwZGF0ZVdlYlNvY2tldFJlc3BvbnNlKHJlc3BvbnNlKTsK
KyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVj
dChtX2Zyb250ZW5kLmdldCgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRD
bG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisgICAgUmVmUHRyPElu
c3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShpZGVudGlmaWVy
KTsKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICByZXNvdXJjZS0+
ZW5kVGltaW5nKCk7CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51cGRh
dGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9TT0NLRVRTKQorCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmFkZFByb2ZpbGUoUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBwcnBQ
cm9maWxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA0MDA5OWM2YmE2MDVh
ODlmMjFjZjAwYTRkN2RkMTcyNzY5MmFlMWJhLi4wNzljZjU1ZTk1NDMyYTI1M2Q1YjgwNTkzNmRh
ODY5NTI1YTUwNDEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBA
IC04OSw2ICs4OSwxMSBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIGNsYXNzIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorY2xh
c3MgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDsKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlOworI2VuZGlmCisKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXIgOiBwdWJsaWMgTm9u
Y29weWFibGUgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBS
ZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+ID4gUmVzb3VyY2VzTWFwOwpAQCAtMjA5LDYgKzIxNCwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRET01TdG9yYWdlSXRlbShsb25nIHN0b3JhZ2VJZCwg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3MpOwog
ICAgIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0obG9uZyBzdG9yYWdlSWQsIGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKiBzdWNjZXNzKTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KyAgICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMKTsKKyAgICB2b2lk
IHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRDbG9zZVdlYlNv
Y2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworI2VuZGlmCiAKICAgICBjb25zdCBSZXNv
dXJjZXNNYXAmIHJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9CiAgICAg
SW5zcGVjdG9yUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAppbmRleCAxMzFjZTk1OTFiN2EwMDYz
OWYzZGYyY2FjZWQyZjlmOWU3MWM0ZDQzLi41MjhmMTliODYzZmYyYWQ5ZTAxZjUxNGI4ZjM2NTNl
MmVmNjYzMzJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC00
MywxNCArNDMsMzcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRUaW1pbmcuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5j
bHVkZSAiU3RyaW5nQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlLmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKKy8vIENyZWF0ZSBodW1hbi1yZWFkYWJsZSBiaW5hcnkgcmVwcmVzZW50
YXRpb24sIGxpa2UgIjAxOjIzOjQ1OjY3Ojg5OkFCOkNEOkVGIi4KK3N0YXRpYyBTdHJpbmcgY3Jl
YXRlUmVhZGFibGVTdHJpbmdGcm9tQmluYXJ5KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHZhbHVlLCBz
aXplX3QgbGVuZ3RoKQoreworICAgIEFTU0VSVChsZW5ndGggPiAwKTsKKyAgICBzdGF0aWMgY29u
c3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOworICAgIHNpemVfdCBi
dWZmZXJTaXplID0gbGVuZ3RoICogMyAtIDE7CisgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcihidWZm
ZXJTaXplKTsKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgYnVmZmVy
W2luZGV4KytdID0gJzonOworICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBoZXhEaWdpdHNbdmFs
dWVbaV0gPj4gNF07CisgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1t2YWx1ZVtp
XSAmIDB4Rl07CisgICAgfQorICAgIEFTU0VSVChpbmRleCA9PSBidWZmZXJTaXplKTsKKyAgICBy
ZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOworfQorCiBJbnNwZWN0b3JSZXNvdXJjZTo6SW5z
cGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgLCBtX2xvYWRlcihsb2FkZXIpCi0gICAgLCBtX2ZyYW1lKGxvYWRlci0+ZnJh
bWUoKSkKKyAgICAsIG1fZnJhbWUobG9hZGVyID8gbG9hZGVyLT5mcmFtZSgpIDogMCkKICAgICAs
IG1fcmVxdWVzdFVSTChyZXF1ZXN0VVJMKQogICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgo
MCkKICAgICAsIG1fY2FjaGVkKGZhbHNlKQpAQCAtNjYsNiArODksOSBAQCBJbnNwZWN0b3JSZXNv
dXJjZTo6SW5zcGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciogbAogICAgICwgbV9jb25uZWN0aW9uSUQoMCkKICAgICAsIG1fY29ubmVjdGlvblJl
dXNlZChmYWxzZSkKICAgICAsIG1faXNNYWluUmVzb3VyY2UoZmFsc2UpCisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorICAgICwgbV9pc1dlYlNvY2tldChmYWxzZSkKKyNlbmRpZgogewogfQogCkBA
IC04OCw2ICsxMTQsMTIgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5zcGVjdG9y
UmVzb3VyY2U6OmFwcGVuZFJlZGlyZWN0KHVuc2lnbmVkIGxvbmcgaWQKICAgICByZXR1cm4gcmVk
aXJlY3Q7CiB9CiAKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3BlY3RvclJlc291
cmNlOjpjcmVhdGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKQoreworICAgIEFTU0VSVChsb2FkZXIpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgbG9hZGVy
LCByZXF1ZXN0VVJMKSk7Cit9CisKIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IEluc3Bl
Y3RvclJlc291cmNlOjpjcmVhdGVDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Up
CiB7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBjcmVhdGUo
aWRlbnRpZmllciwgbG9hZGVyLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgY2FjaGVkUmVzb3VyY2Ut
PnVybCgpKSk7CkBAIC0xMDcsNiArMTM5LDE2IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2U+IEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVuCiAg
ICAgcmV0dXJuIHJlc291cmNlOwogfQogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tl
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IEtVUkwmIGRvY3VtZW50VVJMKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVz
b3VyY2UgPSBhZG9wdFJlZihuZXcgSW5zcGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgMCwgcmVx
dWVzdFVSTCkpOworICAgIHJlc291cmNlLT5tYXJrV2ViU29ja2V0KCk7CisgICAgcmVzb3VyY2Ut
Pm1fZG9jdW1lbnRVUkwgPSBkb2N1bWVudFVSTDsKKyAgICByZXR1cm4gcmVzb3VyY2UucmVsZWFz
ZSgpOworfQorI2VuZGlmCisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIG1fcmVxdWVzdEhlYWRlckZp
ZWxkcyA9IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwpAQCAtMTQ2LDYgKzE4OCwyNyBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKICAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOwogfQogCisjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlV2ViU29j
a2V0UmVxdWVzdChjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1ZXN0KQorewor
ICAgIG1fcmVxdWVzdEhlYWRlckZpZWxkcyA9IHJlcXVlc3QuaGVhZGVyRmllbGRzKCk7CisgICAg
bV9yZXF1ZXN0TWV0aG9kID0gIkdFVCI7IC8vIEN1cnJlbnRseSB3ZSBhbHdheXMgdXNlICJHRVQi
IHRvIHJlcXVlc3QgaGFuZHNoYWtlLgorICAgIG1fd2ViU29ja2V0UmVxdWVzdEtleTMuc2V0KG5l
dyBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpLZXkzKHJlcXVlc3Qua2V5MygpKSk7CisgICAg
bV9jaGFuZ2VzLnNldChSZXF1ZXN0Q2hhbmdlKTsKKyAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFu
Z2UpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXNwb25z
ZShjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbV9y
ZXNwb25zZVN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXNDb2RlKCk7CisgICAgbV9yZXNwb25z
ZVN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0dXNUZXh0KCk7CisgICAgbV9yZXNwb25zZUhlYWRl
ckZpZWxkcyA9IHJlc3BvbnNlLmhlYWRlckZpZWxkcygpOworICAgIG1fd2ViU29ja2V0Q2hhbGxl
bmdlUmVzcG9uc2Uuc2V0KG5ldyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdl
UmVzcG9uc2UocmVzcG9uc2UuY2hhbGxlbmdlUmVzcG9uc2UoKSkpOworICAgIG1fY2hhbmdlcy5z
ZXQoUmVzcG9uc2VDaGFuZ2UpOworICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGJ1aWxkSGVhZGVyc09iamVjdChjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJz
KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CkBAIC0xODMsOCArMjQ2LDEwIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6
OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAganNvbk9iamVjdC0+c2V0TnVtYmVyKCJpZCIsIG1faWRlbnRpZmllcik7CiAgICAg
aWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoUmVxdWVzdENoYW5nZSkpIHsKKyAgICAgICAgaWYgKG1f
ZnJhbWUpCisgICAgICAgICAgICBtX2RvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygidXJsIiwgbV9yZXF1ZXN0VVJM
LnN0cmluZygpKTsKLSAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJkb2N1bWVudFVSTCIs
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKKyAgICAgICAganNvbk9iamVj
dC0+c2V0U3RyaW5nKCJkb2N1bWVudFVSTCIsIG1fZG9jdW1lbnRVUkwuc3RyaW5nKCkpOwogICAg
ICAgICBqc29uT2JqZWN0LT5zZXRTdHJpbmcoImhvc3QiLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsK
ICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIiwgbV9yZXF1ZXN0VVJMLnBhdGgo
KSk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygibGFzdFBhdGhDb21wb25lbnQiLCBt
X3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7CkBAIC0xOTQsNiArMjU5LDEwIEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVu
ZCogZnJvbnRlbmQpCiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygicmVxdWVzdE1ldGhv
ZCIsIG1fcmVxdWVzdE1ldGhvZCk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygicmVx
dWVzdEZvcm1EYXRhIiwgbV9yZXF1ZXN0Rm9ybURhdGEpOwogICAgICAgICBqc29uT2JqZWN0LT5z
ZXRCb29sZWFuKCJkaWRSZXF1ZXN0Q2hhbmdlIiwgdHJ1ZSk7CisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorICAgICAgICBpZiAobV93ZWJTb2NrZXRSZXF1ZXN0S2V5MykKKyAgICAgICAgICAgIGpz
b25PYmplY3QtPnNldFN0cmluZygid2ViU29ja2V0UmVxdWVzdEtleTMiLCBjcmVhdGVSZWFkYWJs
ZVN0cmluZ0Zyb21CaW5hcnkobV93ZWJTb2NrZXRSZXF1ZXN0S2V5My0+dmFsdWUsIHNpemVvZiht
X3dlYlNvY2tldFJlcXVlc3RLZXkzLT52YWx1ZSkpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlm
IChtX2NoYW5nZXMuaGFzQ2hhbmdlKFJlc3BvbnNlQ2hhbmdlKSkgewpAQCAtMjA5LDYgKzI3OCwx
MCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kKQogICAgICAgICBqc29uT2JqZWN0LT5zZXRCb29sZWFuKCJjYWNo
ZWQiLCBtX2NhY2hlZCk7CiAgICAgICAgIGlmIChtX2xvYWRUaW1pbmcgJiYgIW1fY2FjaGVkKQog
ICAgICAgICAgICAganNvbk9iamVjdC0+c2V0T2JqZWN0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZv
clRpbWluZyhtX2xvYWRUaW1pbmcuZ2V0KCkpKTsKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisg
ICAgICAgIGlmIChtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlKQorICAgICAgICAgICAganNv
bk9iamVjdC0+c2V0U3RyaW5nKCJ3ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSIsIGNyZWF0ZVJl
YWRhYmxlU3RyaW5nRnJvbUJpbmFyeShtX3dlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlLT52YWx1
ZSwgc2l6ZW9mKG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UtPnZhbHVlKSkpOworI2VuZGlm
CiAgICAgICAgIGpzb25PYmplY3QtPnNldEJvb2xlYW4oImRpZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1
ZSk7CiAgICAgfQogCkBAIC0yNjcsNiArMzQwLDggQEAgQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3Rv
clJlc291cmNlOjpjYWNoZWRSZXNvdXJjZSgpIGNvbnN0CiAgICAgLy8gVHJ5IGhhcmQgdG8gZmlu
ZCBhIGNvcnJlc3BvbmRpbmcgQ2FjaGVkUmVzb3VyY2UuIER1cmluZyBwcmVsb2FkaW5nLCBEb2NM
b2FkZXIgbWF5IG5vdCBoYXZlIHRoZSByZXNvdXJjZSBpbiBkb2N1bWVudCByZXNvdXJjZXMgc2V0
IHlldCwKICAgICAvLyBidXQgSW5zcGVjdG9yIHdpbGwgYWxyZWFkeSB0cnkgdG8gZmV0Y2ggZGF0
YSB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIHZpYSBDYWNoZWRSZXNvdXJjZSAoYW5kIGl0IHdvbid0
IHVwZGF0ZSBvbmNlIHRoZSByZXNvdXJjZSBpcyBhZGRlZCwKICAgICAvLyBiZWNhdXNlIG1fY2hh
bmdlcyB3aWxsIG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBiaXRzIHNldCkuCisgICAgaWYgKCFt
X2ZyYW1lKQorICAgICAgICByZXR1cm4gMDsKICAgICBjb25zdCBTdHJpbmcmIHVybCA9IG1fcmVx
dWVzdFVSTC5zdHJpbmcoKTsKICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKICAg
ICBpZiAoIWNhY2hlZFJlc291cmNlKQpAQCAtMzAzLDYgKzM3OCwxMiBAQCBJbnNwZWN0b3JSZXNv
dXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSgpIGNvbnN0CiAgICAgaWYgKCFtX292
ZXJyaWRlQ29udGVudC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVDb250ZW50
VHlwZTsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAobV9pc1dlYlNvY2tldCkK
KyAgICAgICAgcmV0dXJuIFdlYlNvY2tldDsKKyNlbmRpZgorCisgICAgQVNTRVJUKG1fbG9hZGVy
KTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihtX3JlcXVlc3RVUkws
IG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpKSB7CiAgICAgICAgIEluc3BlY3RvclJlc291cmNlOjpU
eXBlIHJlc291cmNlVHlwZSA9IGNhY2hlZFJlc291cmNlVHlwZSgpOwogICAgICAgICBpZiAocmVz
b3VyY2VUeXBlID09IE90aGVyKQpAQCAtMzQyLDcgKzQyMyw3IEBAIFN0cmluZyBJbnNwZWN0b3JS
ZXNvdXJjZTo6c291cmNlU3RyaW5nKCkgY29uc3QKIAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IEluc3BlY3RvclJlc291cmNlOjpyZXNvdXJjZURhdGEoU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1l
KSBjb25zdAogewotICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fcmVx
dWVzdFVSTCwgbV9sb2FkZXItPnJlcXVlc3RVUkwoKSkpIHsKKyAgICBpZiAobV9sb2FkZXIgJiYg
ZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihtX3JlcXVlc3RVUkwsIG1fbG9hZGVyLT5y
ZXF1ZXN0VVJMKCkpKSB7CiAgICAgICAgICp0ZXh0RW5jb2RpbmdOYW1lID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aW5wdXRFbmNvZGluZygpOwogICAgICAgICByZXR1cm4gbV9sb2FkZXItPm1haW5S
ZXNvdXJjZURhdGEoKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaApp
bmRleCA0MDA0MTQyYzIzNzRjY2U2NGVlNTg3MTRiYWUwNGE0Y2U0M2ZhYTQ2Li4zZmQ1YTY5Yjlk
OGNiOWIwZTgzOTlkNGZmNDZhYmQ4NDIyMDFiN2MxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0cmluZy5oIgorI2luY2x1ZGUg
IldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZS5oIgogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgpAQCAtNTEsNiArNTMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCisj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3Q7CisgICAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U7CisjZW5kaWYKKwogICAg
IGNsYXNzIEluc3BlY3RvclJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yUmVz
b3VyY2U+IHsKICAgICBwdWJsaWM6CiAKQEAgLTYzLDE2ICs3MCwxOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICBTY3JpcHQsCiAgICAgICAgICAgICBYSFIsCiAgICAgICAgICAg
ICBNZWRpYSwKKyAgICAgICAgICAgIFdlYlNvY2tldCwKICAgICAgICAgICAgIE90aGVyCiAgICAg
ICAgIH07CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IGNy
ZWF0ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IEtVUkwmIHJlcXVlc3RVUkwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW5zcGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0VVJM
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2U+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3RvclJlc291cmNlPiBjcmVhdGVDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisgICAgICAgIC8vIFdlYlNvY2tldCByZXNvdXJjZSBkb2Vzbid0IGhhdmUg
aXRzIGxvYWRlci4gRm9yIFdlYlNvY2tldCByZXNvdXJjZXMsIG1fbG9hZGVyIGFuZCBtX2ZyYW1l
IHdpbGwgYmVjb21lIG51bGwuCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJl
c291cmNlPiBjcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBL
VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CisjZW5kaWYKKwogICAg
ICAgICB+SW5zcGVjdG9yUmVzb3VyY2UoKTsKIAogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
clJlc291cmNlPiBhcHBlbmRSZWRpcmVjdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IEtVUkwmIHJlZGlyZWN0VVJMKTsKQEAgLTgyLDYgKzkyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCB1cGRhdGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
ICAgICAgICB2b2lkIHVwZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAor
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAgICAgdm9pZCB1cGRhdGVXZWJTb2NrZXRSZXF1
ZXN0KGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmKTsKKyAgICAgICAgdm9pZCB1cGRh
dGVXZWJTb2NrZXRSZXNwb25zZShjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYpOwor
I2VuZGlmCisKICAgICAgICAgdm9pZCBzZXRPdmVycmlkZUNvbnRlbnQoY29uc3QgU2NyaXB0U3Ry
aW5nJiBkYXRhLCBUeXBlKTsKIAogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nKCkgY29uc3Q7
CkBAIC0xNDksMTAgKzE2NCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFR5cGUg
Y2FjaGVkUmVzb3VyY2VUeXBlKCkgY29uc3Q7CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSgpIGNvbnN0OwogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICB2
b2lkIG1hcmtXZWJTb2NrZXQoKSB7IG1faXNXZWJTb2NrZXQgPSB0cnVlOyB9CisjZW5kaWYKKwog
ICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKICAgICAgICAgUmVmUHRyPERvY3Vt
ZW50TG9hZGVyPiBtX2xvYWRlcjsKICAgICAgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwogICAg
ICAgICBLVVJMIG1fcmVxdWVzdFVSTDsKKyAgICAgICAgS1VSTCBtX2RvY3VtZW50VVJMOwogICAg
ICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlckZpZWxkczsKICAgICAgICAgSFRUUEhl
YWRlck1hcCBtX3Jlc3BvbnNlSGVhZGVyRmllbGRzOwogICAgICAgICBTdHJpbmcgbV9taW1lVHlw
ZTsKQEAgLTE3OSw2ICsxOTksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJp
bmcgbV9yZXF1ZXN0TWV0aG9kOwogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0Rm9ybURhdGE7CiAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+ID4gbV9yZWRpcmVjdHM7CisK
KyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIGJvb2wgbV9pc1dlYlNvY2tldDsKKwor
ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgbm90IHVzZWQgZm9yIHJlc291cmNl
cyBvdGhlciB0aGFuIFdlYlNvY2tldC4KKyAgICAgICAgLy8gV2UgYWxsb2NhdGUgdGhlbSBkeW5h
bWljYWxseSB0byByZWR1Y2UgbWVtb3J5IGNvbnN1bXB0aW9uIGZvciByZWd1bGFyIHJlc291cmNl
cy4KKyAgICAgICAgT3duUHRyPFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6OktleTM+IG1fd2Vi
U29ja2V0UmVxdWVzdEtleTM7CisgICAgICAgIE93blB0cjxXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U+IG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2U7Cisj
ZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2UuanMKaW5kZXggMDZhNjEwZDA5NjJkYTgzOGYxNjc3NGRmZmI5NjIw
YTY4N2IxMWMxZi4uY2VkZGVkMzU3MDM2MDEwZjMxMTMyN2QxYzIyNjA4MjA5NWZlOTBmMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpAQCAtNDUsNyArNDUsOCBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICBTY3JpcHQ6ICAgICA0LAogICAgIFhI
UjogICAgICAgIDUsCiAgICAgTWVkaWE6ICAgICAgNiwKLSAgICBPdGhlcjogICAgICA3LAorICAg
IFdlYlNvY2tldDogIDcsCisgICAgT3RoZXI6ICAgICAgOCwKIAogICAgIGlzVGV4dFR5cGU6IGZ1
bmN0aW9uKHR5cGUpCiAgICAgewpAQCAtNjcsNiArNjgsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJzY3JpcHQiKTsKICAgICAgICAgICAgIGNhc2UgdGhpcy5YSFI6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIik7CisgICAgICAgICAgICBjYXNlIHRo
aXMuV2ViU29ja2V0OgorICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIldlYlNvY2tldCIpOwogICAgICAgICAgICAgY2FzZSB0aGlzLk90aGVyOgogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJvdGhlciIpOwpAQCAtMzYzLDYgKzM2Niw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhI
UjoKICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNl
Q2F0ZWdvcmllcy54aHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldDoKKyAgICAgICAgICAgICAgICB0
aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy53ZWJzb2NrZXQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLk90aGVyOgogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICB0aGlzLmNhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5vdGhlcjsK
QEAgLTU3NSw3ICs1ODEsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewog
CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlID09PSAidW5kZWZpbmVkIgogICAgICAgICAg
fHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5PdGhlcgotICAgICAg
ICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFIpCisgICAg
ICAgICB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhIUgorICAg
ICAgICAgfHwgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2Nr
ZXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAodGhpcy5taW1lVHlw
ZSBpbiBXZWJJbnNwZWN0b3IuTUlNRVR5cGVzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggN2NlMDliNmE2NGVkOTA0ZjFiZDc0YjIwMjY1MjY3NjQ4
Zjg2MDQ4Yi4uMWMyNTc0ZjcyZWI0NzAyNDY5N2U2MDUwMzI0OWYxZWQ4ZWJiOTYxOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC0yNzksMTMgKzI3
OSwxOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIF9y
ZWZyZXNoUmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Jl
ZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRo
aXMucmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhlYWRlcnMsIHRoaXMucmVxdWVzdEhlYWRlcnNUcmVl
RWxlbWVudCk7CisgICAgICAgIHZhciBhZGRpdGlvbmFsUm93ID0gbnVsbDsKKyAgICAgICAgaWYg
KHR5cGVvZiB0aGlzLnJlc291cmNlLndlYlNvY2tldFJlcXVlc3RLZXkzICE9PSAidW5kZWZpbmVk
IikKKyAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVyOiAiKEtleTMpIiwgdmFsdWU6
IHRoaXMucmVzb3VyY2Uud2ViU29ja2V0UmVxdWVzdEtleTN9OworICAgICAgICB0aGlzLl9yZWZy
ZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgSGVhZGVycyIpLCB0aGlz
LnJlc291cmNlLnNvcnRlZFJlcXVlc3RIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLnJlcXVl
c3RIZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgICAgICB0aGlzLl9yZWZyZXNoRm9ybURhdGEoKTsK
ICAgICB9LAogCiAgICAgX3JlZnJlc2hSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVz
cG9uc2UgSGVhZGVycyIpLCB0aGlzLnJlc291cmNlLnNvcnRlZFJlc3BvbnNlSGVhZGVycywgdGhp
cy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAgIHZhciBhZGRpdGlvbmFsUm93
ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc291cmNlLndlYlNvY2tldENoYWxs
ZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cg
PSB7aGVhZGVyOiAiKENoYWxsZW5nZSBSZXNwb25zZSkiLCB2YWx1ZTogdGhpcy5yZXNvdXJjZS53
ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZX07CisgICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJz
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UgSGVhZGVycyIpLCB0aGlzLnJlc291cmNl
LnNvcnRlZFJlc3BvbnNlSGVhZGVycywgYWRkaXRpb25hbFJvdywgdGhpcy5yZXNwb25zZUhlYWRl
cnNUcmVlRWxlbWVudCk7CiAgICAgfSwKIAogICAgIF9yZWZyZXNoSFRUUEluZm9ybWF0aW9uOiBm
dW5jdGlvbigpCkBAIC0zMTYsNyArMzIyLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogICAgIAotICAgIF9yZWZyZXNoSGVhZGVy
czogZnVuY3Rpb24odGl0bGUsIGhlYWRlcnMsIGhlYWRlcnNUcmVlRWxlbWVudCkKKyAgICBfcmVm
cmVzaEhlYWRlcnM6IGZ1bmN0aW9uKHRpdGxlLCBoZWFkZXJzLCBhZGRpdGlvbmFsUm93LCBoZWFk
ZXJzVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQucmVtb3Zl
Q2hpbGRyZW4oKTsKIApAQCAtMzMzLDYgKzMzOSwxNSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFi
bGUgPSBmYWxzZTsKICAgICAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZCho
ZWFkZXJUcmVlRWxlbWVudCk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoYWRkaXRpb25hbFJv
dykgeworICAgICAgICAgICAgdmFyIHRpdGxlID0gIjxkaXYgY2xhc3M9XCJoZWFkZXItbmFtZVwi
PiIgKyBhZGRpdGlvbmFsUm93LmhlYWRlci5lc2NhcGVIVE1MKCkgKyAiOjwvZGl2PiI7CisgICAg
ICAgICAgICB0aXRsZSArPSAiPGRpdiBjbGFzcz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwi
PiIgKyBhZGRpdGlvbmFsUm93LnZhbHVlLmVzY2FwZUhUTUwoKSArICI8L2Rpdj4iCisKKyAgICAg
ICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCh0aXRsZSwgbnVs
bCwgZmFsc2UpOworICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZh
bHNlOworICAgICAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRy
ZWVFbGVtZW50KTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCA0MzE5ODE2NTI2MzhiMTc0MDZmZWM0NjNjYjdkMTYz
ZGZlNTQwYzkyLi4yODIzNDE4MzY3NjYwODY1NmFlYTVjMDRhNzA4ODk2OGIyYzE4MzA5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMjgzNSw3ICsyODM1
LDggQEAgYnV0dG9uLmVuYWJsZS10b2dnbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmds
eXBoIHsKIH0KIAogLnJlc291cmNlcy1jYXRlZ29yeS1kb2N1bWVudHMsIC5yZXNvdXJjZXMtY2F0
ZWdvcnktc3R5bGVzaGVldHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktaW1hZ2VzLAotLnJlc291cmNl
cy1jYXRlZ29yeS1zY3JpcHRzLCAucmVzb3VyY2VzLWNhdGVnb3J5LXhociwgLnJlc291cmNlcy1j
YXRlZ29yeS1mb250cywgLnJlc291cmNlcy1jYXRlZ29yeS1vdGhlciB7CisucmVzb3VyY2VzLWNh
dGVnb3J5LXNjcmlwdHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnkteGhyLCAucmVzb3VyY2VzLWNhdGVn
b3J5LWZvbnRzLAorLnJlc291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLCAucmVzb3VyY2VzLWNh
dGVnb3J5LW90aGVyIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCkBAIC0yODQ1LDYgKzI4NDYs
NyBAQCBidXR0b24uZW5hYmxlLXRvZ2dsZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5
cGggewogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS1zY3JpcHRzLCAuZmlsdGVyLXNj
cmlwdHMgLnJlc291cmNlcy1jYXRlZ29yeS1zY3JpcHRzLAogLmZpbHRlci1hbGwgLnJlc291cmNl
cy1jYXRlZ29yeS14aHIsIC5maWx0ZXIteGhyIC5yZXNvdXJjZXMtY2F0ZWdvcnkteGhyLAogLmZp
bHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS1mb250cywgLmZpbHRlci1mb250cyAucmVzb3Vy
Y2VzLWNhdGVnb3J5LWZvbnRzLAorLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS13ZWJz
b2NrZXRzLCAuZmlsdGVyLXdlYnNvY2tldHMgLnJlc291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRz
LAogLmZpbHRlci1hbGwgLnJlc291cmNlcy1jYXRlZ29yeS1vdGhlciwgLmZpbHRlci1vdGhlciAu
cmVzb3VyY2VzLWNhdGVnb3J5LW90aGVyLAogLnJlc291cmNlLXNpZGViYXItdHJlZS1pdGVtLnNl
bGVjdGVkIHsKICAgICBkaXNwbGF5OiBsaXN0LWl0ZW07CkBAIC0yOTIwLDYgKzI5MjIsMTUgQEAg
YnV0dG9uLmVuYWJsZS10b2dnbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsK
ICAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aW1lbGluZUhvbGxvd1BpbGxZ
ZWxsb3cucG5nKSA2IDcgNiA3OwogfQogCisvKiBGSVhNRTogQ3JlYXRlIGJhciBpbWFnZXMgZm9y
IFdlYlNvY2tldC4gKi8KKy5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cyAucmVzb3VyY2Vz
LWdyYXBoLWJhciB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGltZWxp
bmVQaWxsR3JheS5wbmcpIDYgNyA2IDc7Cit9CisKKy5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29j
a2V0cy5yZXNvdXJjZS1jYWNoZWQgLnJlc291cmNlcy1ncmFwaC1iYXIgeworICAgLXdlYmtpdC1i
b3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGltZWxpbmVIb2xsb3dQaWxsR3JheS5wbmcpIDYgNyA2
IDc7Cit9CisKICNyZXNvdXJjZS12aWV3cyB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAg
IHRvcDogMjNweDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4
IDg0MDc0NWY4OTQzMjBhMTIyNTM4ZTQxZWI2ZjAyOTZjOWE4NjU1OTMuLjFiOGJmN2UxYzQ4MTMy
Y2VhMTkxMGFhZDQ4YTkwY2M4NzQ3MGMzY2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcwpAQCAtNTE3LDYgKzUxNyw3IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERv
bmUgPSBmdW5jdGlvbigpCiAgICAgICAgIHNjcmlwdHM6IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VDYXRlZ29yeSgic2NyaXB0cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NyaXB0cyIpLCAi
cmdiKDI1NSwxMjEsMCkiKSwKICAgICAgICAgeGhyOiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNl
Q2F0ZWdvcnkoInhociIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIiksICJyZ2IoMjMxLDIz
MSwxMCkiKSwKICAgICAgICAgZm9udHM6IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29y
eSgiZm9udHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvbnRzIiksICJyZ2IoMjU1LDgyLDYy
KSIpLAorICAgICAgICB3ZWJzb2NrZXQ6IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29y
eSgid2Vic29ja2V0cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2ViU29ja2V0IiksICJyZ2Io
MTg2LDE4NiwxODYpIiksIC8vIEZJWE1FOiBEZWNpZGUgdGhlIGNvbG9yLgogICAgICAgICBvdGhl
cjogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJvdGhlciIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiT3RoZXIiKSwgInJnYigxODYsMTg2LDE4NikiKQogICAgIH07CiAKQEAgLTEy
MjMsNiArMTIyNCw4IEBAIFdlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKHBh
eWxvYWQpCiAgICAgICAgIHJlc291cmNlLnJlcXVlc3RNZXRob2QgPSBwYXlsb2FkLnJlcXVlc3RN
ZXRob2Q7CiAgICAgICAgIHJlc291cmNlLnJlcXVlc3RGb3JtRGF0YSA9IHBheWxvYWQucmVxdWVz
dEZvcm1EYXRhOwogICAgICAgICByZXNvdXJjZS5kb2N1bWVudFVSTCA9IHBheWxvYWQuZG9jdW1l
bnRVUkw7CisgICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC53ZWJTb2NrZXRSZXF1ZXN0S2V5MyAh
PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5
MyA9IHBheWxvYWQud2ViU29ja2V0UmVxdWVzdEtleTM7CiAKICAgICAgICAgaWYgKHJlc291cmNl
Lm1haW5SZXNvdXJjZSkKICAgICAgICAgICAgIHRoaXMubWFpblJlc291cmNlID0gcmVzb3VyY2U7
CkBAIC0xMjQ3LDYgKzEyNTAsOCBAQCBXZWJJbnNwZWN0b3IudXBkYXRlUmVzb3VyY2UgPSBmdW5j
dGlvbihwYXlsb2FkKQogICAgICAgICByZXNvdXJjZS5jb25uZWN0aW9uUmV1c2VkID0gcGF5bG9h
ZC5jb25uZWN0aW9uUmV1c2VkOwogICAgICAgICByZXNvdXJjZS50aW1pbmcgPSBwYXlsb2FkLnRp
bWluZzsKICAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gcGF5bG9hZC5jYWNoZWQ7CisgICAgICAg
IGlmICh0eXBlb2YgcGF5bG9hZC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSAhPT0gInVuZGVm
aW5lZCIpCisgICAgICAgICAgICByZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSA9
IHBheWxvYWQud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2U7CiAgICAgfQogCiAgICAgaWYgKHBh
eWxvYWQuZGlkVHlwZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDU0YmUxNmE0OTViZTFhOGMzMjI0Y2EzNjNkNjI3ZGNmM2RjMGNjOTIuLmQ1OGI5
MDJhYjVmMTBlNDNjZmJkOGRhYWNiOGM0Y2UxMjRjOWI1ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM2LDggKzM2LDExIEBACiAKICNpbmNsdWRlICJDb29r
aWVKYXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVy
cm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCkBAIC02Myw3ICs2NiwxNCBA
QCBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFdlYlNvY2tldENoYQogICAgICwgbV9jbG9zZWQoZmFsc2UpCiAgICAgLCBt
X3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEoZmFsc2UpCiAgICAgLCBtX3VuaGFuZGxlZEJ1ZmZl
cmVkQW1vdW50KDApCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAsIG1faWRlbnRpZmllcigw
KQorI2VuZGlmCiB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQor
ICAgICAgICBjb250cm9sbGVyLT5kaWRDcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllcigpLCB1cmws
IG1fY29udGV4dC0+dXJsKCkpOworI2VuZGlmCiB9CiAKIFdlYlNvY2tldENoYW5uZWw6On5XZWJT
b2NrZXRDaGFubmVsKCkKQEAgLTExMiw2ICsxMjIsMTEgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpjbG9zZSgpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpc2Nvbm5lY3QoKQogewogICAgIExP
RyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaXNjb25uZWN0IiwgdGhpcyk7CisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IG1fY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxl
cigpKQorICAgICAgICAgICAgY29udHJvbGxlci0+ZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRpZmll
cigpKTsKKyNlbmRpZgogICAgIG1faGFuZHNoYWtlLmNsZWFyU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIG1fY2xpZW50ID0gMDsKICAgICBtX2NvbnRleHQgPSAwOwpAQCAtMTM3LDYgKzE1
MiwxMCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxl
KiBoYW5kbGUpCiAgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAgICAgaWYgKCFtX2Nv
bnRleHQpCiAgICAgICAgIHJldHVybjsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250
cm9sbGVyKCkpCisgICAgICAgIGNvbnRyb2xsZXItPndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdChpZGVudGlmaWVyKCksIG1faGFuZHNoYWtlLmNsaWVudEhhbmRzaGFrZVJlcXVlc3Qo
KSk7CisjZW5kaWYKICAgICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5k
c2hha2UuY2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpOwogICAgIGlmICghaGFuZGxlLT5zZW5kKGhh
bmRzaGFrZU1lc3NhZ2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkgewogICAg
ICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBzZW5kaW5nIGhhbmRzaGFrZSBtZXNzYWdlLiIs
IDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKQEAgLTE0Nyw2ICsxNjYsMTEgQEAgdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQog
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRs
ZSkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkQ2xvc2UiLCB0
aGlzKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChtX2NvbnRleHQpCisgICAgICAg
IGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0
b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgICBjb250cm9sbGVyLT5kaWRDbG9zZVdlYlNvY2tl
dChpZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRs
ZSA9PSBtX2hhbmRsZSB8fCAhbV9oYW5kbGUpOwogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBp
ZiAobV9oYW5kbGUpIHsKQEAgLTI1MCw2ICsyNzQsMTAgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVs
Ojpwcm9jZXNzQnVmZmVyKCkKICAgICAgICAgaWYgKGhlYWRlckxlbmd0aCA8PSAwKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAobV9oYW5kc2hha2UubW9kZSgpID09IFdl
YlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKSB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICAgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gbV9jb250ZXh0
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgICAgICAgY29udHJvbGxlci0+ZGlk
UmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKGlkZW50aWZpZXIoKSwgbV9oYW5kc2hh
a2Uuc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSk7CisjZW5kaWYKICAgICAgICAgICAgIGlmICgh
bV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKQEAg
LTM2Nyw2ICszOTUsMjEgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZXN1bWVUaW1lckZpcmVk
KFRpbWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcikKICAgICAgICAgZGlkQ2xvc2UobV9oYW5k
bGUuZ2V0KCkpOwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK3Vuc2lnbmVkIGxvbmcgV2Vi
U29ja2V0Q2hhbm5lbDo6aWRlbnRpZmllcigpCit7CisgICAgaWYgKG1faWRlbnRpZmllcikKKyAg
ICAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKworICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBjb250cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAg
IGlmIChQYWdlKiBwYWdlID0gY29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpKQorICAgICAgICAg
ICAgbV9pZGVudGlmaWVyID0gcGFnZS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmll
cigpOworCisgICAgQVNTRVJUKG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIG1faWRlbnRpZmll
cjsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCiB9ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCmluZGV4IDQzZDQzMWEwZjg5OWUwMDMwOWU2YTMwNTllYjY0YzI5OGNl
MjAxNjMuLmEwOGU2YmIyZTZhYzg2NzU4ODY3ODdjYmYzYjZhNDU3ZDI1Y2MxZjggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtODQsNiArODQsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIHByb2Nlc3NCdWZmZXIoKTsKICAgICAgICAgdm9pZCBy
ZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcik7CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIoKTsKKyNl
bmRpZgorCiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKICAgICAg
ICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9jbGllbnQ7CiAgICAgICAgIFdlYlNvY2tldEhh
bmRzaGFrZSBtX2hhbmRzaGFrZTsKQEAgLTk2LDYgKzEwMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV9jbG9zZWQ7CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJk
UmVjZWl2ZWREYXRhOwogICAgICAgICB1bnNpZ25lZCBsb25nIG1fdW5oYW5kbGVkQnVmZmVyZWRB
bW91bnQ7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICB1bnNpZ25lZCBsb25nIG1f
aWRlbnRpZmllcjsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67379</attachid>
            <date>2010-09-13 01:51:13 -0700</date>
            <delta_ts>2010-09-13 23:28:02 -0700</delta_ts>
            <desc>Patch v9 (Update new test expectation)</desc>
            <filename>bug-40768-20100913175111.patch</filename>
            <type>text/plain</type>
            <size>33608</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOTE3ZTFmNjI5OWM4NzBhYTgwY2NlOTBkYzJkMzVmYWVkMmJiMDhlLi4wYzk4OGU5
MDZhMTc5NGU5MTExOTI5OTI1NWIwZWQyYmFlNTVhYmM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDktMTMgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
V2ViU29ja2V0IGluIFJlc291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNzY4CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9u
cy1hcGktZXhwZWN0ZWQudHh0OiBBZGRlZCBhIG5ldyByZXNvdXJjZSB0eXBlLgorCiAyMDEwLTA5
LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5z
aW9ucy1hcGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMt
YXBpLWV4cGVjdGVkLnR4dAppbmRleCAzZTY2YWI2MzEwYzMwN2Q0YzRmNTY4NjU0MGM4YzAzM2I4
ZjMyMGFhLi45NWQzYTI2YjU4NTlhMTQ1NDkxOTFlYmE5ZmVlOWEwZDkwZTE3MjYwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQKQEAg
LTU0LDYgKzU0LDcgQEAgUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQogICAgICAgICAg
ICAgU2NyaXB0IDogInNjcmlwdCIKICAgICAgICAgICAgIFhIUiA6ICJYSFIiCiAgICAgICAgICAg
ICBNZWRpYSA6ICJtZWRpYSIKKyAgICAgICAgICAgIFdlYlNvY2tldCA6ICJXZWJTb2NrZXQiCiAg
ICAgICAgICAgICBPdGhlciA6ICJvdGhlciIKICAgICAgICAgfQogICAgICAgICBnZXRBbGwgOiA8
ZnVuY3Rpb24+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDIxMTQ3Y2E0ZTRhNDFmZTJjNjczYWUxYjJkZjQ2ZDk3ZTZhMzcyNmEuLjk5YjIw
NzA1ZGE1NGU2MGNhNTRiMDkzNTAwYzc5MDRmYzg0YjQ4MDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTAt
MDktMTMgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYlNvY2tldCByZXNvdXJj
ZSB0eXBlIHRvIFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgV2hlbiBhIG5ldyBXZWJTb2NrZXQg
Y29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCwgYSBsaW5lIGZvciB0aGF0IGNvbm5lY3Rpb24KKyAg
ICAgICAgd2lsbCBhcHBlYXIgaW4gV2ViIEluc3BlY3RvcidzIFJlc291cmNlcyB0YWIuIElmIHRo
ZSByZXNvdXJjZSBuYW1lIGlzCisgICAgICAgIGNsaWNrZWQsIHRoZSBkZXRhaWxzIG9mIGhhbmRz
aGFrZSByZXF1ZXN0IGFuZCByZXNwb25zZSB3aWxsIGJlIHNob3duLgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFdlYlNvY2tldCBpbiBSZXNvdXJjZXMgdGFiCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDc2OAorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6YWRkUmVzb3VyY2UpOiBXZWJTb2NrZXQgcmVzb3VyY2UgZG9lcyBub3QKKyAgICAg
ICAgaGF2ZSBhbiBhc3NvY2lhdGVkIGxvYWRlciwgdGh1cyBmcmFtZSBtaWdodCBiZSBudWxsLiBO
ZWVkIHRvIGNoZWNrIGl0LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
cmVtb3ZlUmVzb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmRpZENyZWF0ZVdlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENs
b3NlV2ViU29ja2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHA6IEFkZCBudWxsIGNo
ZWNrcyBvZiBtX2xvYWRlciBhbmQgbV9mcmFtZSwKKyAgICAgICAgYmVjYXVzZSBXZWJTb2NrZXQg
ZG9lcyBub3QgaGF2ZSBhIGxvYWRlciBhbmQgd2UgbmVlZCB0byBhbGxvdyBudWxsIGZvcgorICAg
ICAgICB0aGVzZSB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWFkYWJsZVN0
cmluZ0Zyb21CaW5hcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6Oklu
c3BlY3RvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpj
cmVhdGUpOiBGYWN0b3J5IGZ1bmN0aW9uIG9mCisgICAgICAgIHJlZ3VsYXIgKG5vbi1XZWJTb2Nr
ZXQpIHJlc291cmNlcy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpjcmVh
dGVXZWJTb2NrZXQpOiBGYWN0b3J5IGZ1bmN0aW9uIG9mCisgICAgICAgIFdlYlNvY2tldCByZXNv
dXJjZXMuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlV2ViU29j
a2V0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRl
V2ViU29ja2V0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6
OnVwZGF0ZVNjcmlwdE9iamVjdCk6IG1fZnJhbWUtPmRvY3VtZW50KCkgYmVjb21lcworICAgICAg
ICBhdmFpbGFibGUgd2hlbiBGcmFtZTo6c2V0RG9jdW1lbnQoKSBpcyBjYWxsZWQuIFdlIGNhbm5v
dCBvYnRhaW4gZG9jdW1lbnRVUkwKKyAgICAgICAgZHVyaW5nIHRoZSBjb25zdHJ1Y3RvciBvciB1
cGRhdGVSZXF1ZXN0KCkgZnVuY3Rpb24sIGJlY2F1c2UgbV9mcmFtZS0+ZG9jdW1lbnQoKQorICAg
ICAgICBpcyBub3QgYXZhaWxhYmxlIHlldCBhdCB0aGF0IHBvaW50IGFuZCBkb2N1bWVudFVSTCB3
aWxsIGNvbnRhaW4gYSB3cm9uZyBVUkwuCisgICAgICAgIEFzIGZhciBhcyBJIGtub3csIHVwZGF0
ZVNjcmlwdE9iamVjdCgpIGlzIHRoZSBvbmx5IHBsYWNlIHdoZXJlIHdlIGNhbiBzYWZlbHkKKyAg
ICAgICAgb2J0YWluIGRvY3VtZW50VVJMLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2U6OmNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpyZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6Oik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZTo6bWFya1dlYlNvY2tldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLnRv
U3RyaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IHR5
cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5fbWltZVR5cGVJ
c0NvbnNpc3RlbnRXaXRoVHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlw
ZS5fcmVmcmVzaFJlcXVlc3RIZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlLl9yZWZyZXNoSGVhZGVycyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAoLnJlc291cmNl
cy1jYXRlZ29yeS13ZWJzb2NrZXRzLCAucmVzb3VyY2VzLWNhdGVnb3J5LW90aGVyKToKKyAgICAg
ICAgKC5yZXNvdXJjZXMtY2F0ZWdvcnktd2Vic29ja2V0cyAucmVzb3VyY2VzLWdyYXBoLWJhcik6
CisgICAgICAgICgucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMucmVzb3VyY2UtY2FjaGVk
IC5yZXNvdXJjZXMtZ3JhcGgtYmFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2FkZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLnVwZGF0ZVJlc291cmNlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6V2ViU29j
a2V0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaXNjb25u
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjppZGVudGlmaWVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaDoKKwogMjAxMC0wOS0xMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAcGFyb2dhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXgg
ODY5NTc1ODVkMjc4NTZjZGViODUzMDE0NzlhMzRhZDQzZTYwM2FmNy4uOTBlZjM0NDQ0ODk0MWJh
NjY2N2YxNjIyM2M2NWYxNjI0ZTUzZGY5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTgwMCw2ICs4MDAsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmFkZFJlc291cmNlKEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZSkKICAgICBtX2tub3du
UmVzb3VyY2VzLmFkZChyZXNvdXJjZS0+cmVxdWVzdFVSTCgpKTsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IHJlc291cmNlLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsK
ICAgICBSZXNvdXJjZXNNYXAqIHJlc291cmNlTWFwID0gbV9mcmFtZVJlc291cmNlcy5nZXQoZnJh
bWUpOwogICAgIGlmIChyZXNvdXJjZU1hcCkKICAgICAgICAgcmVzb3VyY2VNYXAtPnNldChyZXNv
dXJjZS0+aWRlbnRpZmllcigpLCByZXNvdXJjZSk7CkBAIC04MTgsNiArODIwLDggQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVSZXNvdXJjZShJbnNwZWN0b3JSZXNvdXJjZSogcmVz
b3VyY2UpCiAgICAgICAgIG1fa25vd25SZXNvdXJjZXMucmVtb3ZlKHJlcXVlc3RVUkwpOwogCiAg
ICAgRnJhbWUqIGZyYW1lID0gcmVzb3VyY2UtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgcmV0dXJuOwogICAgIFJlc291cmNlc01hcCogcmVzb3VyY2VNYXAgPSBtX2ZyYW1lUmVz
b3VyY2VzLmdldChmcmFtZSk7CiAgICAgaWYgKCFyZXNvdXJjZU1hcCkgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE0NDQsNiArMTQ0OCw1NiBAQCBJbnNwZWN0b3JET01TdG9y
YWdlUmVzb3VyY2UqIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldERPTVN0b3JhZ2VSZXNvdXJjZUZv
cklkKGxvbgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCit2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMKQorewor
ICAgIGlmICghZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1faW5zcGVj
dGVkUGFnZSk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gSW5z
cGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tldChpZGVudGlmaWVyLCByZXF1ZXN0VVJMLCBk
b2N1bWVudFVSTCk7CisgICAgYWRkUmVzb3VyY2UocmVzb3VyY2UuZ2V0KCkpOworCisgICAgaWYg
KG1fZnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9u
dGVuZC5nZXQoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9y
UmVzb3VyY2U+IHJlc291cmNlID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZpZXIpOworICAg
IGlmICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKyAgICByZXNvdXJjZS0+c3RhcnRUaW1p
bmcoKTsKKyAgICByZXNvdXJjZS0+dXBkYXRlV2ViU29ja2V0UmVxdWVzdChyZXF1ZXN0KTsKKyAg
ICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdCht
X2Zyb250ZW5kLmdldCgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNl
aXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgUmVmUHRy
PEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShpZGVudGlm
aWVyKTsKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47CisgICAgLy8gQ2FsbGlu
ZyByZXNvdXJjZS0+bWFya1Jlc3BvbnNlUmVjZWl2ZWRUaW1lKCkgaGVyZSBtYWtlcyByZXNvdXJj
ZXMgYmFyIGNoYXJ0IGNvbmZ1c2luZywgYmVjYXVzZQorICAgIC8vIHdlIGNhbm5vdCBhcHBseSB0
aGUgImxhdGVuY3kgKyBkb3dubG9hZCIgbW9kZWwgb2YgcmVndWxhciByZXNvdXJjZXMgdG8gV2Vi
U29ja2V0IGNvbm5lY3Rpb25zLgorICAgIC8vIEZJWE1FOiBEZXNpZ24gYSBuZXcgVUkgZm9yIGJh
ciBjaGFydHMgb2YgV2ViU29ja2V0IHJlc291cmNlcywgYW5kIHJlY29yZCB0aW1pbmcgaGVyZS4K
KyAgICByZXNvdXJjZS0+dXBkYXRlV2ViU29ja2V0UmVzcG9uc2UocmVzcG9uc2UpOworICAgIGlm
IChtX2Zyb250ZW5kKQorICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJv
bnRlbmQuZ2V0KCkpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsb3NlV2Vi
U29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9y
UmVzb3VyY2U+IHJlc291cmNlID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZpZXIpOworICAg
IGlmICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKworICAgIHJlc291cmNlLT5lbmRUaW1p
bmcoKTsKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlw
dE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6YWRkUHJvZmlsZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUs
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDQwMDk5YzZiYTYwNWE4OWYyMWNm
MDBhNGQ3ZGQxNzI3NjkyYWUxYmEuLjA3OWNmNTVlOTU0MzJhMjUzZDViODA1OTM2ZGE4Njk1MjVh
NTA0MTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTg5LDYg
Kzg5LDExIEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitjbGFzcyBXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0OworY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U7
CisjZW5kaWYKKwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFJlZlB0cjxJ
bnNwZWN0b3JSZXNvdXJjZT4gPiBSZXNvdXJjZXNNYXA7CkBAIC0yMDksNiArMjE0LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGxvbmcgc3RvcmFnZUlkLCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCogc3VjY2Vzcyk7CiAgICAgdm9p
ZCByZW1vdmVET01TdG9yYWdlSXRlbShsb25nIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wqIHN1Y2Nlc3MpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIHZv
aWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VS
TCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpOworICAgIHZvaWQgd2lsbFNl
bmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZENsb3NlV2ViU29ja2V0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisjZW5kaWYKIAogICAgIGNvbnN0IFJlc291cmNlc01h
cCYgcmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KICAgICBJbnNwZWN0
b3JSZXNvdXJjZSogcmVzb3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCmluZGV4IGJlNzc4MjdlM2M1M2JmZmQyNjYzMWI2
NjUzYTY5YzY3ZTcxZWQwYzMuLjBhNDc4NGQwMGU0OWU1OGU2NDE5YmE1MDM5YmFlZTYwNjlhNDEx
MGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKQEAgLTQzLDE0ICs0
MywzNyBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJT
dHJpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorLy8gQ3JlYXRlIGh1bWFuLXJlYWRhYmxlIGJpbmFyeSByZXByZXNlbnRhdGlvbiwg
bGlrZSAiMDE6MjM6NDU6Njc6ODk6QUI6Q0Q6RUYiLgorc3RhdGljIFN0cmluZyBjcmVhdGVSZWFk
YWJsZVN0cmluZ0Zyb21CaW5hcnkoY29uc3QgdW5zaWduZWQgY2hhciogdmFsdWUsIHNpemVfdCBs
ZW5ndGgpCit7CisgICAgQVNTRVJUKGxlbmd0aCA+IDApOworICAgIHN0YXRpYyBjb25zdCBjaGFy
IGhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7CisgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSBsZW5ndGggKiAzIC0gMTsKKyAgICBTdHJpbmdCdWZmZXIgYnVmZmVyKGJ1ZmZlclNpemUp
OworICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICBpZiAoaSA+IDApCisgICAgICAgICAgICBidWZmZXJbaW5kZXgr
K10gPSAnOic7CisgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1t2YWx1ZVtpXSA+
PiA0XTsKKyAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW3ZhbHVlW2ldICYgMHhG
XTsKKyAgICB9CisgICAgQVNTRVJUKGluZGV4ID09IGJ1ZmZlclNpemUpOworICAgIHJldHVybiBT
dHJpbmc6OmFkb3B0KGJ1ZmZlcik7Cit9CisKIEluc3BlY3RvclJlc291cmNlOjpJbnNwZWN0b3JS
ZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
ICAgICAsIG1fbG9hZGVyKGxvYWRlcikKLSAgICAsIG1fZnJhbWUobG9hZGVyLT5mcmFtZSgpKQor
ICAgICwgbV9mcmFtZShsb2FkZXIgPyBsb2FkZXItPmZyYW1lKCkgOiAwKQogICAgICwgbV9yZXF1
ZXN0VVJMKHJlcXVlc3RVUkwpCiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQogICAg
ICwgbV9jYWNoZWQoZmFsc2UpCkBAIC02Niw2ICs4OSw5IEBAIEluc3BlY3RvclJlc291cmNlOjpJ
bnNwZWN0b3JSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsCiAgICAgLCBtX2Nvbm5lY3Rpb25JRCgwKQogICAgICwgbV9jb25uZWN0aW9uUmV1c2VkKGZh
bHNlKQogICAgICwgbV9pc01haW5SZXNvdXJjZShmYWxzZSkKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisgICAgLCBtX2lzV2ViU29ja2V0KGZhbHNlKQorI2VuZGlmCiB7CiB9CiAKQEAgLTg4LDYg
KzExNCwxMiBAQCBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBJbnNwZWN0b3JSZXNvdXJj
ZTo6YXBwZW5kUmVkaXJlY3QodW5zaWduZWQgbG9uZyBpZAogICAgIHJldHVybiByZWRpcmVjdDsK
IH0KIAorUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5zcGVjdG9yUmVzb3VyY2U6OmNy
ZWF0ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IEtVUkwmIHJlcXVlc3RVUkwpCit7CisgICAgQVNTRVJUKGxvYWRlcik7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JSZXNvdXJjZShpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVl
c3RVUkwpKTsKK30KKwogUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5zcGVjdG9yUmVz
b3VyY2U6OmNyZWF0ZUNhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAg
ICBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZShpZGVudGlm
aWVyLCBsb2FkZXIsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBjYWNoZWRSZXNvdXJjZS0+dXJsKCkp
KTsKQEAgLTEwNyw2ICsxMzksMTYgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gSW5z
cGVjdG9yUmVzb3VyY2U6OmNyZWF0ZUNhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW4KICAgICByZXR1
cm4gcmVzb3VyY2U7CiB9CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitQYXNzUmVmUHRyPElu
c3BlY3RvclJlc291cmNlPiBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlV2ViU29ja2V0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYg
ZG9jdW1lbnRVUkwpCit7CisgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9
IGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JSZXNvdXJjZShpZGVudGlmaWVyLCAwLCByZXF1ZXN0VVJM
KSk7CisgICAgcmVzb3VyY2UtPm1hcmtXZWJTb2NrZXQoKTsKKyAgICByZXNvdXJjZS0+bV9kb2N1
bWVudFVSTCA9IGRvY3VtZW50VVJMOworICAgIHJldHVybiByZXNvdXJjZS5yZWxlYXNlKCk7Cit9
CisjZW5kaWYKKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgbV9yZXF1ZXN0SGVhZGVyRmllbGRzID0g
cmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7CkBAIC0xNDYsNiArMTg4LDI3IEBAIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7CiB9CiAKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCit2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVXZWJTb2NrZXRSZXF1
ZXN0KGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgbV9y
ZXF1ZXN0SGVhZGVyRmllbGRzID0gcmVxdWVzdC5oZWFkZXJGaWVsZHMoKTsKKyAgICBtX3JlcXVl
c3RNZXRob2QgPSAiR0VUIjsgLy8gQ3VycmVudGx5IHdlIGFsd2F5cyB1c2UgIkdFVCIgdG8gcmVx
dWVzdCBoYW5kc2hha2UuCisgICAgbV93ZWJTb2NrZXRSZXF1ZXN0S2V5My5zZXQobmV3IFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3Q6OktleTMocmVxdWVzdC5rZXkzKCkpKTsKKyAgICBtX2NoYW5n
ZXMuc2V0KFJlcXVlc3RDaGFuZ2UpOworICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVdlYlNvY2tldFJlc3BvbnNlKGNvbnN0
IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX3Jlc3BvbnNl
U3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGUoKTsKKyAgICBtX3Jlc3BvbnNlU3RhdHVz
VGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQoKTsKKyAgICBtX3Jlc3BvbnNlSGVhZGVyRmllbGRz
ID0gcmVzcG9uc2UuaGVhZGVyRmllbGRzKCk7CisgICAgbV93ZWJTb2NrZXRDaGFsbGVuZ2VSZXNw
b25zZS5zZXQobmV3IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25z
ZShyZXNwb25zZS5jaGFsbGVuZ2VSZXNwb25zZSgpKSk7CisgICAgbV9jaGFuZ2VzLnNldChSZXNw
b25zZUNoYW5nZSk7CisgICAgbV9jaGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKK30KKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gYnVpbGRIZWFkZXJzT2JqZWN0KGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiB7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKQEAgLTE4Myw4ICsyNDYsMTAgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRl
U2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBqc29uT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBqc29uT2JqZWN0LT5zZXROdW1iZXIoImlkIiwgbV9pZGVudGlmaWVyKTsKICAgICBpZiAobV9j
aGFuZ2VzLmhhc0NoYW5nZShSZXF1ZXN0Q2hhbmdlKSkgeworICAgICAgICBpZiAobV9mcmFtZSkK
KyAgICAgICAgICAgIG1fZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsK
ICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJ1cmwiLCBtX3JlcXVlc3RVUkwuc3RyaW5n
KCkpOwotICAgICAgICBqc29uT2JqZWN0LT5zZXRTdHJpbmcoImRvY3VtZW50VVJMIiwgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICBqc29uT2JqZWN0LT5zZXRT
dHJpbmcoImRvY3VtZW50VVJMIiwgbV9kb2N1bWVudFVSTC5zdHJpbmcoKSk7CiAgICAgICAgIGpz
b25PYmplY3QtPnNldFN0cmluZygiaG9zdCIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpOwogICAgICAg
ICBqc29uT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKICAg
ICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJsYXN0UGF0aENvbXBvbmVudCIsIG1fcmVxdWVz
dFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsKQEAgLTE5NCw2ICsyNTksMTAgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCkKICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJyZXF1ZXN0TWV0aG9kIiwgbV9y
ZXF1ZXN0TWV0aG9kKTsKICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJyZXF1ZXN0Rm9y
bURhdGEiLCBtX3JlcXVlc3RGb3JtRGF0YSk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldEJvb2xl
YW4oImRpZFJlcXVlc3RDaGFuZ2UiLCB0cnVlKTsKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisg
ICAgICAgIGlmIChtX3dlYlNvY2tldFJlcXVlc3RLZXkzKQorICAgICAgICAgICAganNvbk9iamVj
dC0+c2V0U3RyaW5nKCJ3ZWJTb2NrZXRSZXF1ZXN0S2V5MyIsIGNyZWF0ZVJlYWRhYmxlU3RyaW5n
RnJvbUJpbmFyeShtX3dlYlNvY2tldFJlcXVlc3RLZXkzLT52YWx1ZSwgc2l6ZW9mKG1fd2ViU29j
a2V0UmVxdWVzdEtleTMtPnZhbHVlKSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgaWYgKG1fY2hh
bmdlcy5oYXNDaGFuZ2UoUmVzcG9uc2VDaGFuZ2UpKSB7CkBAIC0yMDksNiArMjc4LDEwIEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVu
ZCogZnJvbnRlbmQpCiAgICAgICAgIGpzb25PYmplY3QtPnNldEJvb2xlYW4oImNhY2hlZCIsIG1f
Y2FjaGVkKTsKICAgICAgICAgaWYgKG1fbG9hZFRpbWluZyAmJiAhbV9jYWNoZWQpCiAgICAgICAg
ICAgICBqc29uT2JqZWN0LT5zZXRPYmplY3QoInRpbWluZyIsIGJ1aWxkT2JqZWN0Rm9yVGltaW5n
KG1fbG9hZFRpbWluZy5nZXQoKSkpOworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAgICAg
aWYgKG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UpCisgICAgICAgICAgICBqc29uT2JqZWN0
LT5zZXRTdHJpbmcoIndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlIiwgY3JlYXRlUmVhZGFibGVT
dHJpbmdGcm9tQmluYXJ5KG1fd2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UtPnZhbHVlLCBzaXpl
b2YobV93ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZS0+dmFsdWUpKSk7CisjZW5kaWYKICAgICAg
ICAganNvbk9iamVjdC0+c2V0Qm9vbGVhbigiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsKICAg
ICB9CiAKQEAgLTI2Nyw2ICszNDAsOCBAQCBDYWNoZWRSZXNvdXJjZSogSW5zcGVjdG9yUmVzb3Vy
Y2U6OmNhY2hlZFJlc291cmNlKCkgY29uc3QKICAgICAvLyBUcnkgaGFyZCB0byBmaW5kIGEgY29y
cmVzcG9uZGluZyBDYWNoZWRSZXNvdXJjZS4gRHVyaW5nIHByZWxvYWRpbmcsIENhY2hlZFJlc291
cmNlTG9hZGVyIG1heSBub3QgaGF2ZSB0aGUgcmVzb3VyY2UgaW4gZG9jdW1lbnQgcmVzb3VyY2Vz
IHNldCB5ZXQsCiAgICAgLy8gYnV0IEluc3BlY3RvciB3aWxsIGFscmVhZHkgdHJ5IHRvIGZldGNo
IGRhdGEgdGhhdCBpcyBvbmx5IGF2YWlsYWJsZSB2aWEgQ2FjaGVkUmVzb3VyY2UgKGFuZCBpdCB3
b24ndCB1cGRhdGUgb25jZSB0aGUgcmVzb3VyY2UgaXMgYWRkZWQsCiAgICAgLy8gYmVjYXVzZSBt
X2NoYW5nZXMgd2lsbCBub3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgYml0cyBzZXQpLgorICAgIGlm
ICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBt
X3JlcXVlc3RVUkwuc3RyaW5nKCk7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2UodXJsKTsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQpAQCAtMzAzLDYgKzM3OCwxMiBA
QCBJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSgpIGNvbnN0
CiAgICAgaWYgKCFtX292ZXJyaWRlQ29udGVudC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG1f
b3ZlcnJpZGVDb250ZW50VHlwZTsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAo
bV9pc1dlYlNvY2tldCkKKyAgICAgICAgcmV0dXJuIFdlYlNvY2tldDsKKyNlbmRpZgorCisgICAg
QVNTRVJUKG1fbG9hZGVyKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihtX3JlcXVlc3RVUkwsIG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpKSB7CiAgICAgICAgIEluc3Bl
Y3RvclJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSA9IGNhY2hlZFJlc291cmNlVHlwZSgpOwog
ICAgICAgICBpZiAocmVzb3VyY2VUeXBlID09IE90aGVyKQpAQCAtMzQyLDcgKzQyMyw3IEBAIFN0
cmluZyBJbnNwZWN0b3JSZXNvdXJjZTo6c291cmNlU3RyaW5nKCkgY29uc3QKIAogUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IEluc3BlY3RvclJlc291cmNlOjpyZXNvdXJjZURhdGEoU3RyaW5nKiB0
ZXh0RW5jb2RpbmdOYW1lKSBjb25zdAogewotICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJ
ZGVudGlmaWVyKG1fcmVxdWVzdFVSTCwgbV9sb2FkZXItPnJlcXVlc3RVUkwoKSkpIHsKKyAgICBp
ZiAobV9sb2FkZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihtX3JlcXVlc3RV
UkwsIG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpKSB7CiAgICAgICAgICp0ZXh0RW5jb2RpbmdOYW1l
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpOwogICAgICAgICByZXR1cm4g
bV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2UuaAppbmRleCA0MDA0MTQyYzIzNzRjY2U2NGVlNTg3MTRiYWUwNGE0Y2U0M2Zh
YTQ2Li4zZmQ1YTY5YjlkOGNiOWIwZTgzOTlkNGZmNDZhYmQ4NDIyMDFiN2MxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJI
VFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0cmlu
Zy5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNTEsNiArNTMsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGNsYXNzIFdlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3Q7CisgICAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U7
CisjZW5kaWYKKwogICAgIGNsYXNzIEluc3BlY3RvclJlc291cmNlIDogcHVibGljIFJlZkNvdW50
ZWQ8SW5zcGVjdG9yUmVzb3VyY2U+IHsKICAgICBwdWJsaWM6CiAKQEAgLTYzLDE2ICs3MCwxOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTY3JpcHQsCiAgICAgICAgICAgICBY
SFIsCiAgICAgICAgICAgICBNZWRpYSwKKyAgICAgICAgICAgIFdlYlNvY2tldCwKICAgICAgICAg
ICAgIE90aGVyCiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yUmVzb3VyY2U+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yUmVzb3VyY2UoaWRlbnRpZmllciwgbG9h
ZGVyLCByZXF1ZXN0VVJMKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yUmVzb3VyY2U+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpOwogCiAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBjcmVhdGVDYWNoZWQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hlZFJlc291cmNlKik7
CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIC8vIFdlYlNvY2tldCByZXNvdXJj
ZSBkb2Vzbid0IGhhdmUgaXRzIGxvYWRlci4gRm9yIFdlYlNvY2tldCByZXNvdXJjZXMsIG1fbG9h
ZGVyIGFuZCBtX2ZyYW1lIHdpbGwgYmVjb21lIG51bGwuCisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3RvclJlc291cmNlPiBjcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7
CisjZW5kaWYKKwogICAgICAgICB+SW5zcGVjdG9yUmVzb3VyY2UoKTsKIAogICAgICAgICBQYXNz
UmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBhcHBlbmRSZWRpcmVjdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlZGlyZWN0VVJMKTsKQEAgLTgyLDYgKzkyLDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB1cGRhdGVSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwogICAgICAgICB2b2lkIHVwZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAgICAgdm9pZCB1cGRh
dGVXZWJTb2NrZXRSZXF1ZXN0KGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmKTsKKyAg
ICAgICAgdm9pZCB1cGRhdGVXZWJTb2NrZXRSZXNwb25zZShjb25zdCBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZSYpOworI2VuZGlmCisKICAgICAgICAgdm9pZCBzZXRPdmVycmlkZUNvbnRlbnQo
Y29uc3QgU2NyaXB0U3RyaW5nJiBkYXRhLCBUeXBlKTsKIAogICAgICAgICBTdHJpbmcgc291cmNl
U3RyaW5nKCkgY29uc3Q7CkBAIC0xNDksMTAgKzE2NCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKCkgY29uc3Q7CiAgICAgICAgIENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0OwogCisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorICAgICAgICB2b2lkIG1hcmtXZWJTb2NrZXQoKSB7IG1faXNXZWJTb2NrZXQgPSB0cnVl
OyB9CisjZW5kaWYKKwogICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKICAgICAg
ICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2xvYWRlcjsKICAgICAgICAgUmVmUHRyPEZyYW1l
PiBtX2ZyYW1lOwogICAgICAgICBLVVJMIG1fcmVxdWVzdFVSTDsKKyAgICAgICAgS1VSTCBtX2Rv
Y3VtZW50VVJMOwogICAgICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlckZpZWxkczsK
ICAgICAgICAgSFRUUEhlYWRlck1hcCBtX3Jlc3BvbnNlSGVhZGVyRmllbGRzOwogICAgICAgICBT
dHJpbmcgbV9taW1lVHlwZTsKQEAgLTE3OSw2ICsxOTksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwogICAgICAgICBTdHJpbmcgbV9yZXF1
ZXN0Rm9ybURhdGE7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+ID4g
bV9yZWRpcmVjdHM7CisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIGJvb2wgbV9p
c1dlYlNvY2tldDsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgbm90IHVz
ZWQgZm9yIHJlc291cmNlcyBvdGhlciB0aGFuIFdlYlNvY2tldC4KKyAgICAgICAgLy8gV2UgYWxs
b2NhdGUgdGhlbSBkeW5hbWljYWxseSB0byByZWR1Y2UgbWVtb3J5IGNvbnN1bXB0aW9uIGZvciBy
ZWd1bGFyIHJlc291cmNlcy4KKyAgICAgICAgT3duUHRyPFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3Q6OktleTM+IG1fd2ViU29ja2V0UmVxdWVzdEtleTM7CisgICAgICAgIE93blB0cjxXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U+IG1fd2ViU29ja2V0Q2hhbGxl
bmdlUmVzcG9uc2U7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5kZXggZGU4NzA0NzExMDM0N2Mw
OGI0YWU1YTg3ODEwYzY1YWI1MzgwMjNhMC4uZWE5MDUyZGI2ZTMzNzBiMGM3YzRkMTUxZjQ4ZjM2
ZTBlMjM1ZGJiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpAQCAt
NDUsNyArNDUsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICBTY3JpcHQ6
ICAgICA0LAogICAgIFhIUjogICAgICAgIDUsCiAgICAgTWVkaWE6ICAgICAgNiwKLSAgICBPdGhl
cjogICAgICA3LAorICAgIFdlYlNvY2tldDogIDcsCisgICAgT3RoZXI6ICAgICAgOCwKIAogICAg
IGlzVGV4dFR5cGU6IGZ1bmN0aW9uKHR5cGUpCiAgICAgewpAQCAtNzYsNiArNzcsOCBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gIlhIUiI7
CiAgICAgICAgICAgICBjYXNlIHRoaXMuTWVkaWE6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJt
ZWRpYSI7CisgICAgICAgICAgICBjYXNlIHRoaXMuV2ViU29ja2V0OgorICAgICAgICAgICAgICAg
IHJldHVybiAiV2ViU29ja2V0IjsKICAgICAgICAgICAgIGNhc2UgdGhpcy5PdGhlcjoKICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJvdGhlciI7CkBAIC0zNzIs
NiArMzc1LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSOgogICAgICAgICAgICAgICAg
IHRoaXMuY2F0ZWdvcnkgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnhocjsKICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUuV2ViU29ja2V0OgorICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLndlYnNvY2tldDsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuT3RoZXI6
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLm90aGVyOwpAQCAtNTg0LDcgKzU5MCw4IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHR5cGVv
ZiB0aGlzLnR5cGUgPT09ICJ1bmRlZmluZWQiCiAgICAgICAgICB8fCB0aGlzLnR5cGUgPT09IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLk90aGVyCi0gICAgICAgICB8fCB0aGlzLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhIUikKKyAgICAgICAgIHx8IHRoaXMudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSCisgICAgICAgICB8fCB0aGlzLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgICAgIGlmICh0aGlzLm1pbWVUeXBlIGluIFdlYkluc3BlY3Rvci5N
SU1FVHlwZXMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwpp
bmRleCA3Y2UwOWI2YTY0ZWQ5MDRmMWJkNzRiMjAyNjUyNjc2NDhmODYwNDhiLi4xYzI1NzRmNzJl
YjQ3MDI0Njk3ZTYwNTAzMjQ5ZjFlZDhlYmI5NjE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZVZpZXcuanMKQEAgLTI3OSwxMyArMjc5LDE5IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3JlZnJlc2hSZXF1ZXN0SGVhZGVy
czogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5yZXNvdXJjZS5zb3J0ZWRS
ZXF1ZXN0SGVhZGVycywgdGhpcy5yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsKKyAgICAgICAg
dmFyIGFkZGl0aW9uYWxSb3cgPSBudWxsOworICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzb3Vy
Y2Uud2ViU29ja2V0UmVxdWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgYWRk
aXRpb25hbFJvdyA9IHtoZWFkZXI6ICIoS2V5MykiLCB2YWx1ZTogdGhpcy5yZXNvdXJjZS53ZWJT
b2NrZXRSZXF1ZXN0S2V5M307CisgICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMucmVzb3VyY2Uuc29ydGVkUmVx
dWVzdEhlYWRlcnMsIGFkZGl0aW9uYWxSb3csIHRoaXMucmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVu
dCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hGb3JtRGF0YSgpOwogICAgIH0sCiAKICAgICBfcmVm
cmVzaFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fcmVm
cmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSBIZWFkZXJzIiksIHRo
aXMucmVzb3VyY2Uuc29ydGVkUmVzcG9uc2VIZWFkZXJzLCB0aGlzLnJlc3BvbnNlSGVhZGVyc1Ry
ZWVFbGVtZW50KTsKKyAgICAgICAgdmFyIGFkZGl0aW9uYWxSb3cgPSBudWxsOworICAgICAgICBp
ZiAodHlwZW9mIHRoaXMucmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UgIT09ICJ1
bmRlZmluZWQiKQorICAgICAgICAgICAgYWRkaXRpb25hbFJvdyA9IHtoZWFkZXI6ICIoQ2hhbGxl
bmdlIFJlc3BvbnNlKSIsIHZhbHVlOiB0aGlzLnJlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJl
c3BvbnNlfTsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZXNwb25zZSBIZWFkZXJzIiksIHRoaXMucmVzb3VyY2Uuc29ydGVkUmVzcG9uc2VIZWFk
ZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLnJlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50KTsKICAg
ICB9LAogCiAgICAgX3JlZnJlc2hIVFRQSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkKQEAgLTMxNiw3
ICszMjIsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogICAgIH0sCiAgICAgCi0gICAgX3JlZnJlc2hIZWFkZXJzOiBmdW5jdGlvbih0aXRsZSwg
aGVhZGVycywgaGVhZGVyc1RyZWVFbGVtZW50KQorICAgIF9yZWZyZXNoSGVhZGVyczogZnVuY3Rp
b24odGl0bGUsIGhlYWRlcnMsIGFkZGl0aW9uYWxSb3csIGhlYWRlcnNUcmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0z
MzMsNiArMzM5LDE1IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwogICAgICAg
ICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsK
ICAgICAgICAgfQorCisgICAgICAgIGlmIChhZGRpdGlvbmFsUm93KSB7CisgICAgICAgICAgICB2
YXIgdGl0bGUgPSAiPGRpdiBjbGFzcz1cImhlYWRlci1uYW1lXCI+IiArIGFkZGl0aW9uYWxSb3cu
aGVhZGVyLmVzY2FwZUhUTUwoKSArICI6PC9kaXY+IjsKKyAgICAgICAgICAgIHRpdGxlICs9ICI8
ZGl2IGNsYXNzPVwiaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiArIGFkZGl0aW9uYWxSb3cu
dmFsdWUuZXNjYXBlSFRNTCgpICsgIjwvZGl2PiIKKworICAgICAgICAgICAgdmFyIGhlYWRlclRy
ZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KHRpdGxlLCBudWxsLCBmYWxzZSk7CisgICAgICAg
ICAgICBoZWFkZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgICAgICAgICBo
ZWFkZXJzVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyVHJlZUVsZW1lbnQpOworICAgICAg
ICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
CmluZGV4IDQzMTk4MTY1MjYzOGIxNzQwNmZlYzQ2M2NiN2QxNjNkZmU1NDBjOTIuLjI4MjM0MTgz
Njc2NjA4NjU2YWVhNWMwNGE3MDg4OTY4YjJjMTgzMDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0yODM1LDcgKzI4MzUsOCBAQCBidXR0b24uZW5hYmxl
LXRvZ2dsZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogfQogCiAucmVzb3Vy
Y2VzLWNhdGVnb3J5LWRvY3VtZW50cywgLnJlc291cmNlcy1jYXRlZ29yeS1zdHlsZXNoZWV0cywg
LnJlc291cmNlcy1jYXRlZ29yeS1pbWFnZXMsCi0ucmVzb3VyY2VzLWNhdGVnb3J5LXNjcmlwdHMs
IC5yZXNvdXJjZXMtY2F0ZWdvcnkteGhyLCAucmVzb3VyY2VzLWNhdGVnb3J5LWZvbnRzLCAucmVz
b3VyY2VzLWNhdGVnb3J5LW90aGVyIHsKKy5yZXNvdXJjZXMtY2F0ZWdvcnktc2NyaXB0cywgLnJl
c291cmNlcy1jYXRlZ29yeS14aHIsIC5yZXNvdXJjZXMtY2F0ZWdvcnktZm9udHMsCisucmVzb3Vy
Y2VzLWNhdGVnb3J5LXdlYnNvY2tldHMsIC5yZXNvdXJjZXMtY2F0ZWdvcnktb3RoZXIgewogICAg
IGRpc3BsYXk6IG5vbmU7CiB9CiAKQEAgLTI4NDUsNiArMjg0Niw3IEBAIGJ1dHRvbi5lbmFibGUt
dG9nZ2xlLXN0YXR1cy1iYXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CiAuZmlsdGVyLWFsbCAu
cmVzb3VyY2VzLWNhdGVnb3J5LXNjcmlwdHMsIC5maWx0ZXItc2NyaXB0cyAucmVzb3VyY2VzLWNh
dGVnb3J5LXNjcmlwdHMsCiAuZmlsdGVyLWFsbCAucmVzb3VyY2VzLWNhdGVnb3J5LXhociwgLmZp
bHRlci14aHIgLnJlc291cmNlcy1jYXRlZ29yeS14aHIsCiAuZmlsdGVyLWFsbCAucmVzb3VyY2Vz
LWNhdGVnb3J5LWZvbnRzLCAuZmlsdGVyLWZvbnRzIC5yZXNvdXJjZXMtY2F0ZWdvcnktZm9udHMs
CisuZmlsdGVyLWFsbCAucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMsIC5maWx0ZXItd2Vi
c29ja2V0cyAucmVzb3VyY2VzLWNhdGVnb3J5LXdlYnNvY2tldHMsCiAuZmlsdGVyLWFsbCAucmVz
b3VyY2VzLWNhdGVnb3J5LW90aGVyLCAuZmlsdGVyLW90aGVyIC5yZXNvdXJjZXMtY2F0ZWdvcnkt
b3RoZXIsCiAucmVzb3VyY2Utc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZWQgewogICAgIGRpc3Bs
YXk6IGxpc3QtaXRlbTsKQEAgLTI5MjAsNiArMjkyMiwxNSBAQCBidXR0b24uZW5hYmxlLXRvZ2ds
ZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogICAgIC13ZWJraXQtYm9yZGVy
LWltYWdlOiB1cmwoSW1hZ2VzL3RpbWVsaW5lSG9sbG93UGlsbFllbGxvdy5wbmcpIDYgNyA2IDc7
CiB9CiAKKy8qIEZJWE1FOiBDcmVhdGUgYmFyIGltYWdlcyBmb3IgV2ViU29ja2V0LiAqLworLnJl
c291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzIC5yZXNvdXJjZXMtZ3JhcGgtYmFyIHsKKyAgICAt
d2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aW1lbGluZVBpbGxHcmF5LnBuZykgNiA3
IDYgNzsKK30KKworLnJlc291cmNlcy1jYXRlZ29yeS13ZWJzb2NrZXRzLnJlc291cmNlLWNhY2hl
ZCAucmVzb3VyY2VzLWdyYXBoLWJhciB7CisgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKElt
YWdlcy90aW1lbGluZUhvbGxvd1BpbGxHcmF5LnBuZykgNiA3IDYgNzsKK30KKwogI3Jlc291cmNl
LXZpZXdzIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAyM3B4OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggNGMzOGE1YTllYzlmYzk2OTg3
NmFlZTg1N2ZhNzhkZDkzMzYwZTFkZS4uY2I1YzgzYzk5ZTM3MjcwNDgyMzNiZDEyZGI0NjA1MDY5
ZDllZDcxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC01
MTcsNiArNTE3LDcgQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAg
ICAgICAgc2NyaXB0czogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJzY3JpcHRz
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHRzIiksICJyZ2IoMjU1LDEyMSwwKSIpLAog
ICAgICAgICB4aHI6IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSgieGhyIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIiKSwgInJnYigyMzEsMjMxLDEwKSIpLAogICAgICAgICBm
b250czogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJmb250cyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRm9udHMiKSwgInJnYigyNTUsODIsNjIpIiksCisgICAgICAgIHdlYnNv
Y2tldDogbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5KCJ3ZWJzb2NrZXRzIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJXZWJTb2NrZXQiKSwgInJnYigxODYsMTg2LDE4NikiKSwgLy8g
RklYTUU6IERlY2lkZSB0aGUgY29sb3IuCiAgICAgICAgIG90aGVyOiBuZXcgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2F0ZWdvcnkoIm90aGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdGhlciIp
LCAicmdiKDE4NiwxODYsMTg2KSIpCiAgICAgfTsKIApAQCAtMTIzMyw2ICsxMjM0LDggQEAgV2Vi
SW5zcGVjdG9yLnVwZGF0ZVJlc291cmNlID0gZnVuY3Rpb24ocGF5bG9hZCkKICAgICAgICAgcmVz
b3VyY2UucmVxdWVzdE1ldGhvZCA9IHBheWxvYWQucmVxdWVzdE1ldGhvZDsKICAgICAgICAgcmVz
b3VyY2UucmVxdWVzdEZvcm1EYXRhID0gcGF5bG9hZC5yZXF1ZXN0Rm9ybURhdGE7CiAgICAgICAg
IHJlc291cmNlLmRvY3VtZW50VVJMID0gcGF5bG9hZC5kb2N1bWVudFVSTDsKKyAgICAgICAgaWYg
KHR5cGVvZiBwYXlsb2FkLndlYlNvY2tldFJlcXVlc3RLZXkzICE9PSAidW5kZWZpbmVkIikKKyAg
ICAgICAgICAgIHJlc291cmNlLndlYlNvY2tldFJlcXVlc3RLZXkzID0gcGF5bG9hZC53ZWJTb2Nr
ZXRSZXF1ZXN0S2V5MzsKIAogICAgICAgICBpZiAocmVzb3VyY2UubWFpblJlc291cmNlKQogICAg
ICAgICAgICAgdGhpcy5tYWluUmVzb3VyY2UgPSByZXNvdXJjZTsKQEAgLTEyNTcsNiArMTI2MCw4
IEBAIFdlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiAgICAg
ICAgIHJlc291cmNlLmNvbm5lY3Rpb25SZXVzZWQgPSBwYXlsb2FkLmNvbm5lY3Rpb25SZXVzZWQ7
CiAgICAgICAgIHJlc291cmNlLnRpbWluZyA9IHBheWxvYWQudGltaW5nOwogICAgICAgICByZXNv
dXJjZS5jYWNoZWQgPSBwYXlsb2FkLmNhY2hlZDsKKyAgICAgICAgaWYgKHR5cGVvZiBwYXlsb2Fk
LndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAg
IHJlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlID0gcGF5bG9hZC53ZWJTb2NrZXRD
aGFsbGVuZ2VSZXNwb25zZTsKICAgICB9CiAKICAgICBpZiAocGF5bG9hZC5kaWRUeXBlQ2hhbmdl
KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggYTA5MjI0ZGE2
NWE0ZGVkYmEyZjEyOWMyNGI4NDJkMTFmYzFkYjk3YS4uNWNlMWNjMzgxM2U0YjUyZTkyODY5OTg0
ZGMwYTg4Mjc3YTg2MzI5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cApAQCAtMzYsOCArMzYsMTEgQEAKIAogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJT
b2NrZXRTdHJlYW1IYW5kbGUuaCIKQEAgLTYzLDcgKzY2LDE0IEBAIFdlYlNvY2tldENoYW5uZWw6
OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29j
a2V0Q2hhCiAgICAgLCBtX2Nsb3NlZChmYWxzZSkKICAgICAsIG1fc2hvdWxkRGlzY2FyZFJlY2Vp
dmVkRGF0YShmYWxzZSkKICAgICAsIG1fdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQoMCkKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgICwgbV9pZGVudGlmaWVyKDApCisjZW5kaWYKIHsKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIGNvbnRyb2xsZXIt
PmRpZENyZWF0ZVdlYlNvY2tldChpZGVudGlmaWVyKCksIHVybCwgbV9jb250ZXh0LT51cmwoKSk7
CisjZW5kaWYKIH0KIAogV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQpAQCAt
MTEzLDYgKzEyMywxMSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKCkKIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlzY29ubmVjdCgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXRDaGFubmVsICVwIGRpc2Nvbm5lY3QiLCB0aGlzKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
ICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250
cm9sbGVyID0gbV9jb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgICBj
b250cm9sbGVyLT5kaWRDbG9zZVdlYlNvY2tldChpZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAg
bV9oYW5kc2hha2UuY2xlYXJTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgbV9jbGllbnQg
PSAwOwogICAgIG1fY29udGV4dCA9IDA7CkBAIC0xMzgsNiArMTUzLDEwIEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKICAgICBBU1NF
UlQoaGFuZGxlID09IG1faGFuZGxlKTsKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0
dXJuOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAg
Y29udHJvbGxlci0+d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50aWZpZXIo
KSwgbV9oYW5kc2hha2UuY2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpKTsKKyNlbmRpZgogICAgIGNv
bnN0IENTdHJpbmcmIGhhbmRzaGFrZU1lc3NhZ2UgPSBtX2hhbmRzaGFrZS5jbGllbnRIYW5kc2hh
a2VNZXNzYWdlKCk7CiAgICAgaWYgKCFoYW5kbGUtPnNlbmQoaGFuZHNoYWtlTWVzc2FnZS5kYXRh
KCksIGhhbmRzaGFrZU1lc3NhZ2UubGVuZ3RoKCkpKSB7CiAgICAgICAgIG1fY29udGV4dC0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIkVycm9yIHNlbmRpbmcgaGFuZHNoYWtlIG1lc3NhZ2UuIiwgMCwgbV9oYW5kc2hha2UuY2xp
ZW50T3JpZ2luKCkpOwpAQCAtMTQ4LDYgKzE2NywxMSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogewogICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZSIsIHRoaXMpOworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAg
ICAgICAgICAgIGNvbnRyb2xsZXItPmRpZENsb3NlV2ViU29ja2V0KGlkZW50aWZpZXIoKSk7Cisj
ZW5kaWYKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlIHx8ICFt
X2hhbmRsZSk7CiAgICAgbV9jbG9zZWQgPSB0cnVlOwogICAgIGlmIChtX2hhbmRsZSkgewpAQCAt
MjUxLDYgKzI3NSwxMCBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIoKQog
ICAgICAgICBpZiAoaGVhZGVyTGVuZ3RoIDw9IDApCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGlmIChtX2hhbmRzaGFrZS5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtlOjpD
b25uZWN0ZWQpIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICAgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvbnRleHQtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSkKKyAgICAgICAgICAgICAgICBjb250cm9sbGVyLT5kaWRSZWNlaXZlV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UoaWRlbnRpZmllcigpLCBtX2hhbmRzaGFrZS5zZXJ2ZXJIYW5kc2hha2VS
ZXNwb25zZSgpKTsKKyNlbmRpZgogICAgICAgICAgICAgaWYgKCFtX2hhbmRzaGFrZS5zZXJ2ZXJT
ZXRDb29raWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9jb250ZXh0LT5p
c0RvY3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX2NvbnRleHQpOwpAQCAtMzY4LDYgKzM5NiwyMSBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hh
bm5lbD4qIHRpbWVyKQogICAgICAgICBkaWRDbG9zZShtX2hhbmRsZS5nZXQoKSk7CiB9CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQordW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjppZGVu
dGlmaWVyKCkKK3sKKyAgICBpZiAobV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbV9pZGVu
dGlmaWVyOworCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2Nv
bnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBj
b250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkpCisgICAgICAgICAgICBtX2lkZW50aWZpZXIgPSBw
YWdlLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisKKyAgICBBU1NFUlQo
bV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyOworfQorI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCisKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAgLy8g
RU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5k
ZXggNDNkNDMxYTBmODk5ZTAwMzA5ZTZhMzA1OWViNjRjMjk4Y2UyMDE2My4uYTA4ZTZiYjJlNmFj
ODY3NTg4Njc4N2NiZjNiNmE0NTdkMjVjYzFmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oCkBAIC04NCw2ICs4NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgcHJvY2Vzc0J1ZmZlcigpOwogICAgICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoVGlt
ZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpOworI2VuZGlmCisKICAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogICAgICAgICBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlIG1faGFuZHNoYWtl
OwpAQCAtOTYsNiArMTAwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBt
X2Nsb3NlZDsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGE7CiAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudDsKKworI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOworI2VuZGlm
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67522</attachid>
            <date>2010-09-13 23:47:31 -0700</date>
            <delta_ts>2010-09-13 23:53:41 -0700</delta_ts>
            <desc>Fix Qt builds</desc>
            <filename>bug-40768-20100914154729.patch</filename>
            <type>text/plain</type>
            <size>1501</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzAzY2E4ZDE0ZDM5MDQ4MGQ4OWM0NzAwY2VjMGJjNzRlODkwODU0NS4uNTNkNWE4NGM5NGMzZmZk
MGI1NTZjMDhjOWE3MjViZmE2OWY1OWQzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxMC0wOS0xMyAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgb25lICNpZiBndWFyZCBibG9jayB0byBmaXgg
UXQgYnVpbGRzLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdlYlNvY2tldCBpbiBSZXNvdXJj
ZXMgdGFiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MDc2OAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDoKKworMjAx
MC0wOS0xMyAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKwogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgogCiAgICAgICAgIEFkZCBXZWJTb2NrZXQgcmVzb3Vy
Y2UgdHlwZSB0byBXZWIgSW5zcGVjdG9yLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2UuY3BwCmluZGV4IDBhNDc4NGQwMGU0OWU1OGU2NDE5YmE1MDM5YmFlZTYwNjlhNDExMGMuLjli
YzAxYzg1NTVlNDk2NGQ0Y2NlMzVjOWI5NDY4ZGIwZTk1MGY2NzEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogLy8gQ3JlYXRlIGh1bWFuLXJlYWRh
YmxlIGJpbmFyeSByZXByZXNlbnRhdGlvbiwgbGlrZSAiMDE6MjM6NDU6Njc6ODk6QUI6Q0Q6RUYi
Lgogc3RhdGljIFN0cmluZyBjcmVhdGVSZWFkYWJsZVN0cmluZ0Zyb21CaW5hcnkoY29uc3QgdW5z
aWduZWQgY2hhciogdmFsdWUsIHNpemVfdCBsZW5ndGgpCiB7CkBAIC02OSw2ICs3MCw3IEBAIHN0
YXRpYyBTdHJpbmcgY3JlYXRlUmVhZGFibGVTdHJpbmdGcm9tQmluYXJ5KGNvbnN0IHVuc2lnbmVk
IGNoYXIqIHZhbHVlLCBzaXplX3QKICAgICBBU1NFUlQoaW5kZXggPT0gYnVmZmVyU2l6ZSk7CiAg
ICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KKyNlbmRpZgogCiBJbnNwZWN0b3JS
ZXNvdXJjZTo6SW5zcGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKQogICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>