<?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>107027</bug_id>
          
          <creation_ts>2013-01-16 10:00:13 -0800</creation_ts>
          <short_desc>[Chromium] Notify embedder of programmatic scrolls.</short_desc>
          <delta_ts>2013-04-08 15:56:07 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>109712</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="John Knottenbelt">jknotten</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>creis</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>mvanouwerkerk</cc>
    
    <cc>peter+ews</cc>
    
    <cc>schenney</cc>
    
    <cc>tdanderson</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>808465</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-01-16 10:00:13 -0800</bug_when>
    <thetext>Chromium] Route the Javascript scroll event to the layer tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808469</commentid>
    <comment_count>1</comment_count>
      <attachid>182999</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-01-16 10:02:08 -0800</bug_when>
    <thetext>Created attachment 182999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808473</commentid>
    <comment_count>2</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-01-16 10:03:30 -0800</bug_when>
    <thetext>This change depends on https://bugs.webkit.org/show_bug.cgi?id=107026
and is needed by https://codereview.chromium.org/1196701</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808479</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 10:05:46 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808487</commentid>
    <comment_count>4</comment_count>
      <attachid>182999</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 10:09:53 -0800</bug_when>
    <thetext>Comment on attachment 182999
Patch

Attachment 182999 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15913370</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808499</commentid>
    <comment_count>5</comment_count>
      <attachid>182999</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-16 10:25:59 -0800</bug_when>
    <thetext>Comment on attachment 182999
Patch

Attachment 182999 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15913378</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809044</commentid>
    <comment_count>6</comment_count>
      <attachid>182999</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-01-16 20:59:47 -0800</bug_when>
    <thetext>Comment on attachment 182999
Patch

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

&gt; Source/Platform/chromium/public/WebLayerTreeView.h:132
&gt; +    // JavaScript has requested a scroll. Used to implement the window.scrollTo(0,1) API to
&gt; +    // hide the location bar.
&gt; +    virtual void scrollFromJavaScript(const WebPoint&amp; scrollPoint) = 0;

This doesn&apos;t really have anything to do with WebLayerTreeView or compositing.  If you want a notification out to the embedder that a certain type of scroll has happened, route it through the WebView or WebWidget family.  You can then hook it up to whatever you want on the embedder side (aka chromium code)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813123</commentid>
    <comment_count>7</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-01-22 10:07:03 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 182999 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182999&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebLayerTreeView.h:132
&gt; &gt; +    // JavaScript has requested a scroll. Used to implement the window.scrollTo(0,1) API to
&gt; &gt; +    // hide the location bar.
&gt; &gt; +    virtual void scrollFromJavaScript(const WebPoint&amp; scrollPoint) = 0;
&gt; 
&gt; This doesn&apos;t really have anything to do with WebLayerTreeView or compositing.  If you want a notification out to the embedder that a certain type of scroll has happened, route it through the WebView or WebWidget family.  You can then hook it up to whatever you want on the embedder side (aka chromium code)

Thanks for reviewing. I&apos;ve been looking into doing this by adding the method to the WebWidgetClient interface, which then gets implemented by RenderViewImpl on the chromium side. What I need to do is to plumb through to the TopControlsManager, which is owned by the cc::LayerTreeHostImpl. 

The difficulty I am having is that I can&apos;t see how to get at the cc::LayerTreeHostImpl, as WebWidgetClient::layerTreeHost() is not implemented by Chromium&apos;s RenderView, and simply returns NULL. Indeed, it is the WebViewImpl itself that creates and owns the WebLayerTreeView object.

Does this make sense? Any suggestions on how to proceed would be much appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814829</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-01-23 16:47:05 -0800</bug_when>
    <thetext>From the point of view of the WebKit API, how the top bar controls positioning maps to the compositor or even if it maps to the compositor at all are considerations of the embedder (the system on the WebWidgetClient/WebViewClient side of the interface boundary, typically chromium), not of WebKit.  Any code that&apos;s aware of the internals of top bar positioning should be on the chromium side.  In particular, I don&apos;t expect this code to live in the compositor embedding in the render process in chromium for very long.

On the chromium side, http://src.chromium.org/viewvc/chrome?view=rev&amp;revision=178256 should give you access to everything you need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815556</commentid>
    <comment_count>9</comment_count>
      <attachid>184515</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-01-24 09:32:45 -0800</bug_when>
    <thetext>Created attachment 184515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846506</commentid>
    <comment_count>10</comment_count>
      <attachid>191249</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-04 08:08:25 -0800</bug_when>
    <thetext>Created attachment 191249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846789</commentid>
    <comment_count>11</comment_count>
      <attachid>191249</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-04 13:27:59 -0800</bug_when>
    <thetext>Comment on attachment 191249
Patch

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

Where are your tests?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:4046
&gt; +    // We want to hide the URL bar on ordinary load types (not back-forward
&gt; +    // navigation / page reload) that are not originating from the compositor.
&gt; +    if (loader-&gt;loadType() == FrameLoadTypeStandard &amp;&amp; !m_scrollFromCompositor) {

You seem to be conflating scrolls from the compositor with user-initiated scrolls, but that&apos;s simply not the case.  The compositor will only handle user-initiated scrolls but in several cases we fall back to the main thread to handle the scroll itself.  How do those behave with this code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847057</commentid>
    <comment_count>12</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-04 17:07:05 -0800</bug_when>
    <thetext>I think this kind of boolean suppressing URL-bar hiding is probably the way to go given the desired behavior mentioned on the bug, but there are several other cases to cover:

1. Navigation
2. Restoring scroll offset from HistoryItem
3. Slow-path scrolling

For (1), checking whether a load is in progress may work.  For (2), the load-in-progress might cover it, and if that&apos;s not enough can put an explicit guard around HistoryController restore.  For (3), you should be able to guard it in WebViewImpl::handleInputEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847830</commentid>
    <comment_count>13</comment_count>
      <attachid>191249</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-05 11:08:53 -0800</bug_when>
    <thetext>Comment on attachment 191249
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:4046
&gt;&gt; +    if (loader-&gt;loadType() == FrameLoadTypeStandard &amp;&amp; !m_scrollFromCompositor) {
&gt; 
&gt; You seem to be conflating scrolls from the compositor with user-initiated scrolls, but that&apos;s simply not the case.  The compositor will only handle user-initiated scrolls but in several cases we fall back to the main thread to handle the scroll itself.  How do those behave with this code?

Very good point. In that case this code doesn&apos;t work correctly.

I&apos;m thinking that FrameView::inProgrammaticScroll() may help here. 

If https://bugs.webkit.org/show_bug.cgi?id=109712 can be solved, then this code would read instead:

if (loader-&gt;loadType() == FrameLoadTypeStandard &amp;&amp; frameView-&gt;inProgrammaticScroll()) {
   ...
}

otherwise, we need to check for compositor scrolls as well:

if (loader-&gt;loadType() == FrameLoadTypeStandard &amp;&amp; frameView-&gt;inProgrammaticScroll() &amp;&amp; !m_scrollFromCompositor) {
   ...
}

Do you think that this points to https://bugs.webkit.org/show_bug.cgi?id=109712 should be addressed first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847842</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-05 11:13:46 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Do you think that this points to https://bugs.webkit.org/show_bug.cgi?id=109712 should be addressed first?

I think so</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854405</commentid>
    <comment_count>15</comment_count>
      <attachid>192948</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-13 10:54:32 -0700</bug_when>
    <thetext>Created attachment 192948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854406</commentid>
    <comment_count>16</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-13 10:57:11 -0700</bug_when>
    <thetext>This patch depends on https://bugs.webkit.org/show_bug.cgi?id=109712

In this patch I have hooked in at the ChromeClient level so that I can capture both fast and slow scrolls. 

Do you have any suggestions on where I should try to add test code? Would WebViewTest.cpp or WebFrameTest.cpp be suitable?

(In reply to comment #15)
&gt; Created an attachment (id=192948) [details]
&gt; Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855419</commentid>
    <comment_count>17</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-14 12:28:06 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I think this kind of boolean suppressing URL-bar hiding is probably the way to go given the desired behavior mentioned on the bug, but there are several other cases to cover:
&gt; 
&gt; 1. Navigation
&gt; 2. Restoring scroll offset from HistoryItem
&gt; 3. Slow-path scrolling
&gt; 
&gt; For (1), checking whether a load is in progress may work.  For (2), the load-in-progress might cover it, and if that&apos;s not enough can put an explicit guard around HistoryController restore.  For (3), you should be able to guard it in WebViewImpl::handleInputEvent.

Has this been addressed?  I don&apos;t have a great knowledge of how navigations work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855816</commentid>
    <comment_count>18</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-15 02:15:26 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #12)
&gt; &gt; I think this kind of boolean suppressing URL-bar hiding is probably the way to go given the desired behavior mentioned on the bug, but there are several other cases to cover:
&gt; &gt; 
&gt; &gt; 1. Navigation
&gt; &gt; 2. Restoring scroll offset from HistoryItem
&gt; &gt; 3. Slow-path scrolling
&gt; &gt; 
&gt; &gt; For (1), checking whether a load is in progress may work.  For (2), the load-in-progress might cover it, and if that&apos;s not enough can put an explicit guard around HistoryController restore.  For (3), you should be able to guard it in WebViewImpl::handleInputEvent.
&gt; 
&gt; Has this been addressed?  I don&apos;t have a great knowledge of how navigations work.

I&apos;m working on this at the moment, hopefully have something for you today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856194</commentid>
    <comment_count>19</comment_count>
      <attachid>193353</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-15 12:29:29 -0700</bug_when>
    <thetext>Created attachment 193353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856196</commentid>
    <comment_count>20</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-15 12:30:39 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=193353) [details]
&gt; Patch

This adds tests for the above. Comments appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856790</commentid>
    <comment_count>21</comment_count>
      <attachid>193353</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-17 19:03:07 -0700</bug_when>
    <thetext>Comment on attachment 193353
Patch

I don&apos;t get the changes to WebViewTest.cpp.  Are there supposed to be test changes there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857349</commentid>
    <comment_count>22</comment_count>
      <attachid>193615</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-18 11:32:43 -0700</bug_when>
    <thetext>Created attachment 193615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857352</commentid>
    <comment_count>23</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-18 11:33:42 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 193353 [details])
&gt; I don&apos;t get the changes to WebViewTest.cpp.  Are there supposed to be test changes there?

No, they were accidental. I&apos;ve cleaned it up now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857459</commentid>
    <comment_count>24</comment_count>
      <attachid>193615</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-18 13:14:49 -0700</bug_when>
    <thetext>Comment on attachment 193615
Patch

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

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:514
&gt; +    m_webView-&gt;hideTopControlsOnScroll();

I don&apos;t think this does what you intend, as slow scrolls are normally for sublayers.  Have you seen a case where this is needed?  If not I suggest deleting it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858438</commentid>
    <comment_count>25</comment_count>
      <attachid>193615</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-19 10:33:24 -0700</bug_when>
    <thetext>Comment on attachment 193615
Patch

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

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:514
&gt;&gt; +    m_webView-&gt;hideTopControlsOnScroll();
&gt; 
&gt; I don&apos;t think this does what you intend, as slow scrolls are normally for sublayers.  Have you seen a case where this is needed?  If not I suggest deleting it.

I do think we need to hook in here as http://bing.com and http://jquerymobile.com/test both use this API to scroll. bing.com also triggers the fast path scroll later on.

I&apos;ve attached a stack trace is below. ScrollView::scrollContents is calling FrameView::scrollContentsSlowPath because ScrollView::canBlitOnScroll() is returning false.

#0  WebKit::ChromeClientImpl::invalidateContentsForSlowScroll (this=0x71c7e9d0, updateRect=..., 
    immediate=false) at ../../third_party/WebKit/Source/WebKit/chromium/src/ChromeClientImpl.cpp:512
#1  0x752e3ee8 in WebCore::Chrome::invalidateContentsForSlowScroll (this=&lt;optimized out&gt;, 
    updateRect=&lt;optimized out&gt;, immediate=&lt;optimized out&gt;)
    at ../../third_party/WebKit/Source/WebCore/page/Chrome.cpp:94
#2  0x74949afe in WebCore::ScrollView::scrollContentsSlowPath (this=&lt;optimized out&gt;, updateRect=...)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollView.cpp:704
#3  0x753042d0 in WebCore::FrameView::scrollContentsSlowPath (this=0x727e5758, updateRect=...)
    at ../../third_party/WebKit/Source/WebCore/page/FrameView.cpp:1687
#4  0x7494a8ec in WebCore::ScrollView::scrollContents (this=0x727e5758, scrollDelta=...)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollView.cpp:683
#5  0x7494a94e in WebCore::ScrollView::scrollTo (this=0x727e5758, newOffset=&lt;optimized out&gt;)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollView.cpp:388
#6  0x75303cb8 in WebCore::FrameView::scrollTo (this=0x727e5758, newOffset=...)
    at ../../third_party/WebKit/Source/WebCore/page/FrameView.cpp:2905
#7  0x7494a0c0 in WebCore::ScrollView::setScrollOffset (this=0x727e5758, offset=&lt;optimized out&gt;)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollView.cpp:368
#8  0x7494bf34 in WebCore::ScrollableArea::scrollPositionChanged (this=0x727e5790, position=...)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollableArea.cpp:154
#9  0x74948922 in WebCore::ScrollAnimator::notifyPositionChanged (this=&lt;optimized out&gt;, 
    delta=&lt;optimized out&gt;) at ../../third_party/WebKit/Source/WebCore/platform/ScrollAnimator.cpp:147
#10 0x749488fa in WebCore::ScrollAnimator::scrollToOffsetWithoutAnimation (this=&lt;optimized out&gt;, 
    offset=&lt;optimized out&gt;) at ../../third_party/WebKit/Source/WebCore/platform/ScrollAnimator.cpp:81
#11 0x7494c098 in WebCore::ScrollableArea::scrollToOffsetWithoutAnimation (this=&lt;optimized out&gt;, offset=...)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollableArea.cpp:129
#12 0x75c73d22 in updateScrollbars (desiredOffset=..., this=0x727e5758)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollView.cpp:623
#13 WebCore::ScrollView::updateScrollbars (this=0x727e5758, desiredOffset=...)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollView.cpp:468
#14 0x7494af6e in setScrollPosition (scrollPoint=&lt;optimized out&gt;, this=0x727e5758)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollView.cpp:423
#15 WebCore::ScrollView::setScrollPosition (this=0x727e5758, scrollPoint=&lt;optimized out&gt;)
    at ../../third_party/WebKit/Source/WebCore/platform/ScrollView.cpp:401
#16 0x7530495c in WebCore::FrameView::setScrollPosition (this=0x727e5758, scrollPoint=...)
    at ../../third_party/WebKit/Source/WebCore/page/FrameView.cpp:1847
#17 0x752f0ac8 in WebCore::DOMWindow::scrollTo (this=&lt;optimized out&gt;, x=&lt;optimized out&gt;, y=1)
    at ../../third_party/WebKit/Source/WebCore/page/DOMWindow.cpp:1438
#18 0x754a8ce8 in scrollToMethod (args=&lt;optimized out&gt;) at gen/webcore/bindings/V8DOMWindow.cpp:4126
#19 WebCore::DOMWindowV8Internal::scrollToMethodCallback (args=&lt;optimized out&gt;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858513</commentid>
    <comment_count>26</comment_count>
      <attachid>193875</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-19 11:24:55 -0700</bug_when>
    <thetext>Created attachment 193875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858551</commentid>
    <comment_count>27</comment_count>
      <attachid>193884</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-19 11:48:22 -0700</bug_when>
    <thetext>Created attachment 193884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858553</commentid>
    <comment_count>28</comment_count>
      <attachid>193884</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-19 11:49:28 -0700</bug_when>
    <thetext>Comment on attachment 193884
Patch

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

&gt; Source/WebKit/chromium/tests/HideTopControlsTest.cpp:145
&gt; +    gesture.data.scrollUpdate.deltaY = 40;

I&apos;ve added this test to check the handleInputEvent for user scrolls that bounced from the compositor. Does this look good to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859053</commentid>
    <comment_count>29</comment_count>
      <attachid>193875</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-19 21:24:45 -0700</bug_when>
    <thetext>Comment on attachment 193875
Patch

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

I feel this is taking an overly indirect approach because we&apos;re afraid of making changes to WebCore.  How about adding a method hideTopControls to ChromeClient and call it from WebCore?

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:514
&gt; +    m_webView-&gt;hideTopControlsOnScroll();

I&apos;m pretty sure this will get called for subframes as well if they slow scroll.  To be more robust, we can either call ChromeClient::hideTopControls() from FrameView (checking first if it&apos;s the mainFrame), or we could ensure setCanBlitScroll is always false if compositing mode is active.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:4297
&gt; +    if (loader-&gt;loadType() != FrameLoadTypeStandard &amp;&amp; frameView-&gt;scrollPosition() != zeroOne)

Could we just call it from HistoryController instead of using this trick?  I&apos;m not sure why this works and I don&apos;t have much trust this would be robust.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860536</commentid>
    <comment_count>30</comment_count>
      <attachid>193875</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-21 12:00:30 -0700</bug_when>
    <thetext>Comment on attachment 193875
Patch

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

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:514
&gt;&gt; +    m_webView-&gt;hideTopControlsOnScroll();
&gt; 
&gt; I&apos;m pretty sure this will get called for subframes as well if they slow scroll.  To be more robust, we can either call ChromeClient::hideTopControls() from FrameView (checking first if it&apos;s the mainFrame), or we could ensure setCanBlitScroll is always false if compositing mode is active.

Yes, I think that hooking in at WebCore::FrameView::setScrollPosition would be a good place, and would avoid any details of fast and slow scrolls. In https://bugs.webkit.org/show_bug.cgi?id=107026 it was suggested that a &apos;hideTopControls&apos; method in Chrome should be avoided because such naming makes assumptions about app behaviour (i.e. not applicable to all ports). Instead a more general name such as didScrollTo could work.

This sounds like a reasonable way forward to me. Do you agree?

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:4297
&gt;&gt; +    if (loader-&gt;loadType() != FrameLoadTypeStandard &amp;&amp; frameView-&gt;scrollPosition() != zeroOne)
&gt; 
&gt; Could we just call it from HistoryController instead of using this trick?  I&apos;m not sure why this works and I don&apos;t have much trust this would be robust.

HistoryController will call this method anyway because it calls Page::setPageScaleFactor which will adjust the scroll offset. My intention was to try and guess whether the URL bar should be showing or hidden based on the scroll position, but I agree with James that we should really be storing this in the HistoryItem to do that properly. Also, I agree with you that the condition above looks rather magic, so:

What I think we should do in the medium/short term is remove this suppression from here and allow logic further down (in the browser) determine whether the URL bar should be hid. The logic in the browser should ensure that the URL bar will be showing unless the page programmatically scrolls after it has finished loading. I believe that this is consistent with our intended user experience.

In the longer term, I think that we should implement saving the state of the URLBar on the HistoryItem and restore it along with the rest of the page state. I think that this is more work than can fit into our current milestone target.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861711</commentid>
    <comment_count>31</comment_count>
      <attachid>194605</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-22 11:36:57 -0700</bug_when>
    <thetext>Created attachment 194605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861713</commentid>
    <comment_count>32</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-22 11:41:12 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=194605) [details]
&gt; Patch

This shows what I am thinking. Instead of directly hiding the top controls, the WebViewImpl now requests that the top controls be hidden. The actual decision as to whether the controls can be hidden takes place in the browser. This avoids any race conditions with the browser enabling or disabling hiding the top controls. It is also the browser&apos;s responsibility to ignore hiding the top controls during a page load, or navigation (reload / backwards / forwards).

Also hook in at FrameView::setScrollPosition as suggested by Alexandre. Should I move the WebCore changes to a separate patch, maybe https://bugs.webkit.org/show_bug.cgi?id=107026?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862055</commentid>
    <comment_count>33</comment_count>
      <attachid>194605</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-22 18:11:42 -0700</bug_when>
    <thetext>Comment on attachment 194605
Patch

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

This looks better to me.

&gt; Source/WebCore/page/ChromeClient.h:181
&gt; +    virtual void didScrollBy(Frame*, const IntSize&amp;) const { };

Do we want to call this didSetScrollPosition instead?  It would avoid the duplicative zero-delta call.  And it should have a comment saying that it should be called upon any attempt to set the scroll position, even to the same offset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862071</commentid>
    <comment_count>34</comment_count>
      <attachid>194605</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-22 18:39:36 -0700</bug_when>
    <thetext>Comment on attachment 194605
Patch

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

&gt;&gt; Source/WebCore/page/ChromeClient.h:181
&gt;&gt; +    virtual void didScrollBy(Frame*, const IntSize&amp;) const { };
&gt; 
&gt; Do we want to call this didSetScrollPosition instead?  It would avoid the duplicative zero-delta call.  And it should have a comment saying that it should be called upon any attempt to set the scroll position, even to the same offset.

No trailing ;

&gt; Source/WebCore/page/FrameView.cpp:1855
&gt; +    if (page)
&gt; +        page-&gt;chrome()-&gt;client()-&gt;didScrollBy(m_frame.get(), scrollPosition() - oldScrollPosition);

Why two calls?

&gt; Source/WebKit/chromium/tests/HideTopControlsTest.cpp:121
&gt; +    frameImpl-&gt;executeScript(WebScriptSource(&quot;window.scrollTo(0, 21);&quot;));

You should also have explicit tests somewhere for scrollBy(0, 0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862726</commentid>
    <comment_count>35</comment_count>
      <attachid>194847</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-25 07:10:17 -0700</bug_when>
    <thetext>Created attachment 194847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862727</commentid>
    <comment_count>36</comment_count>
      <attachid>194605</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-25 07:11:50 -0700</bug_when>
    <thetext>Comment on attachment 194605
Patch

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

&gt;&gt;&gt; Source/WebCore/page/ChromeClient.h:181
&gt;&gt;&gt; +    virtual void didScrollBy(Frame*, const IntSize&amp;) const { };
&gt;&gt; 
&gt;&gt; Do we want to call this didSetScrollPosition instead?  It would avoid the duplicative zero-delta call.  And it should have a comment saying that it should be called upon any attempt to set the scroll position, even to the same offset.
&gt; 
&gt; No trailing ;

Done.

&gt;&gt; Source/WebCore/page/FrameView.cpp:1855
&gt;&gt; +        page-&gt;chrome()-&gt;client()-&gt;didScrollBy(m_frame.get(), scrollPosition() - oldScrollPosition);
&gt; 
&gt; Why two calls?

I was thinking that it might be useful to have the actual scrolled delta in case we decide later that this is useful input to the top controls hiding logic. However, I think that we can get pretty much the same effect by putting a single callback at the beginning of this function, before any early return statements.

&gt;&gt; Source/WebKit/chromium/tests/HideTopControlsTest.cpp:121
&gt;&gt; +    frameImpl-&gt;executeScript(WebScriptSource(&quot;window.scrollTo(0, 21);&quot;));
&gt; 
&gt; You should also have explicit tests somewhere for scrollBy(0, 0)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862935</commentid>
    <comment_count>37</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-25 11:24:13 -0700</bug_when>
    <thetext>LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862980</commentid>
    <comment_count>38</comment_count>
      <attachid>194847</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-25 12:46:27 -0700</bug_when>
    <thetext>Comment on attachment 194847
Patch

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

&gt; Source/WebKit/chromium/tests/HideTopControlsTest.cpp:128
&gt; +    frameImpl-&gt;executeScript(WebScriptSource(&quot;window.scrollBy(0, 0);&quot;));
&gt; +    EXPECT_TRUE(client.didHideTopControls());

This seems like the opposite of the behavior we&apos;re trying to implement.  No-op scrolls should be no-ops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863137</commentid>
    <comment_count>39</comment_count>
      <attachid>194847</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-25 16:10:38 -0700</bug_when>
    <thetext>Comment on attachment 194847
Patch

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

Sorry I LGTMed too early.  I got sidetracked by the complicated argument on the email thread and forgot the underlying issue was scrollTo(0, 0).  I agree there hasn&apos;t been a compelling reason to support that.

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:578
&gt; +    ASSERT(frame-&gt;view()-&gt;inProgrammaticScroll());

OK, since you&apos;re asserting this, the function should be named ChromeClientImpl::didProgrammaticallyScroll.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:4286
&gt; +    m_client-&gt;requestShowTopControls(show);

Please rename the Chromium-side interface to didProgrammaticallyScroll as well.

&gt; Source/WebKit/chromium/src/WebViewImpl.h:543
&gt; +    void showTopControls(bool show);

Call this WebViewImpl::didProgrammaticallyScroll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863547</commentid>
    <comment_count>40</comment_count>
      <attachid>194847</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-26 04:28:56 -0700</bug_when>
    <thetext>Comment on attachment 194847
Patch

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

&gt;&gt; Source/WebKit/chromium/tests/HideTopControlsTest.cpp:128
&gt;&gt; +    EXPECT_TRUE(client.didHideTopControls());
&gt; 
&gt; This seems like the opposite of the behavior we&apos;re trying to implement.  No-op scrolls should be no-ops.

Requiring that the scroll offset change in order for hiding to be triggered, is problematic. Take, for example, a site that scrolls programmatically to (0,1). The first time it is loaded, it will hide the URL bar. If we then reload, WebKit will first restore the scroll position to (0,1) and the subsequent Javascript scroll to (0,1) will not cause the URL bar to be hidden because there is no change in scroll offset. There are two solutions to this:
  1) Try to guess whether the URL bar should be hidden during the restore scroll offset step. 
  2) Store the state of the URL bar in the HistoryItem, and restore the state of the URL bar at the same time that WebKit restores the scroll position and other history item properties.

Solution 1, we already discussed is not a very good. We shouldn&apos;t be trying to guess the state of the URL bar based on specific scroll offsets.

Solution 2 requires making WebCore even more aware of the concept of URL bar hiding: it requires plumbing the current state of the URL bar up into WebKit, making changes to HistoryItem in WebCore, and changes to the way the scroll offset is restored so that it is not viewed as a programmatic scroll. Given the amount of work and complexity this will introduce, I think it&apos;s worth avoiding if we can achieve a similar aim with a simpler solution.

By allowing scrolls to the same position to trigger hiding of the URL bar, we can have the URL bar showing until the URL bar programmatically scrolls. When WebKit restores the scroll position on reload/forward/backward, WebKit will still send the hide request, but the browser will be discard it because this occurs during page load. If the page then programmatically scrolls after the load event, the request to hide will be sent again and this time the browser will hide it. 

I think that making it work in this way is a reasonable first step to implementing this feature. Android Browser and Mobile Safari also hide the URL bar on scrollBy(0,0), so the behaviour, as such, is not unexpected. The scroll position (as observed by Javascript) doesn&apos;t change, so it still appears as a no-op to Javascript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863654</commentid>
    <comment_count>41</comment_count>
      <attachid>195085</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-26 07:28:41 -0700</bug_when>
    <thetext>Created attachment 195085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863812</commentid>
    <comment_count>42</comment_count>
      <attachid>195085</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-26 10:37:45 -0700</bug_when>
    <thetext>Comment on attachment 195085
Patch

We&apos;ve had several extensive threads about this subject and reached an across-the-board consensus on scrollBy(0, 0).  I don&apos;t think trying to revisit it in a patch review is a very productive way to proceed, respond to those threads if you think you have new data to present that would change the conclusion.

It sounds like the problem you are trying to address has to do with maintaining proper history state, which is something that needs to be addressed anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864405</commentid>
    <comment_count>43</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-27 04:37:31 -0700</bug_when>
    <thetext>Having thought about it more, I&apos;m not convinced that maintaining the state of the URL bar in history is exactly what we should be doing, as the user will have to bring up the URL bar to do a reload, so sites that hide it on initial page load would then have their URL bar state restored to showing.

Let us proceed, however, without scrollBy(0, 0), as previously discussed. If it turns out to be a problem in practice, we can revisit this decision.

I&apos;ve added the scroll offset as a parameter to didProgrammaticallyScroll. This is so that the browser can decide exactly which kinds of scroll deltas should hide the URL bar, something which is has yet to be decided.

(In reply to comment #42)
&gt; (From update of attachment 195085 [details])
&gt; We&apos;ve had several extensive threads about this subject and reached an across-the-board consensus on scrollBy(0, 0).  I don&apos;t think trying to revisit it in a patch review is a very productive way to proceed, respond to those threads if you think you have new data to present that would change the conclusion.
&gt; 
&gt; It sounds like the problem you are trying to address has to do with maintaining proper history state, which is something that needs to be addressed anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864412</commentid>
    <comment_count>44</comment_count>
      <attachid>195274</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-27 04:46:38 -0700</bug_when>
    <thetext>Created attachment 195274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865687</commentid>
    <comment_count>45</comment_count>
      <attachid>195274</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-28 12:13:49 -0700</bug_when>
    <thetext>Comment on attachment 195274
Patch

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

R=me but comment and signature need some tweaking.

&gt; Source/WebCore/page/ChromeClient.h:182
&gt; +    // didProgrammaticallyScroll should be called on any attempt to set the scroll position programmatically,
&gt; +    // even to the same offset.

This comment is wrong - we don&apos;t call (and shouldn&apos;t call) this function if the the scroll offset is the same.

&gt; Source/WebCore/page/ChromeClient.h:183
&gt; +    virtual void didProgrammaticallyScroll(Frame*, const IntPoint&amp;) const { }

The second parameter&apos;s meaning is not clear from the type, so please add a name.  This is the new scroll position, right?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182999</attachid>
            <date>2013-01-16 10:02:08 -0800</date>
            <delta_ts>2013-01-24 09:32:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130116175909.patch</filename>
            <type>text/plain</type>
            <size>6123</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmODlhMmE4YjcyNjA1
NTI5MGNkZmE3MmM0NjMzMzUxZDg5NjJhMTdjLi5lYjQ1MTU4Yjk3M2Q3YWQ1ODc2OTY2YTExYWYz
YzJhZjMyMWM5YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wMS0xNiAg
Sm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hy
b21pdW1dIFJvdXRlIHRoZSBKYXZhc2NyaXB0IHNjcm9sbCBldmVudCB0byB0aGUgbGF5ZXIgdHJl
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzAy
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9y
ZGVyIHRvIGhpZGUgdGhlIGxvY2F0aW9uIGJhciBvbiBKYXZhc2NyaXB0IHNjcm9sbCBldmVudHMs
IHdlIG5lZWQKKyAgICAgICAgdG8gcGx1bWIgdGhyb3VnaCB0aGUgSmF2YXNjcmlwdCBzY3JvbGwg
ZXZlbnQgdG8gdGhlIFRvcENvbnRyb2xzTWFuYWdlcgorICAgICAgICBpbiBDaHJvbWl1bSwgd2hp
Y2ggaXMgb3duZWQgYnkgdGhlIExheWVyVHJlZUhvc3RJbXBsLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGRlcGVuZHMgb24gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NzAyNgorCisgICAgICAgIFNlZSBhbHNvIHRoZSBDaHJvbWl1bS1zaWRlIHBhdGNoIGF0IGh0dHBz
Oi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTE5NjcwMTUKKworICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMy0wMS0xMCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyB0aGUgbmV3IGlkIGF0dHJpYnV0ZSB0byBN
ZWRpYVN0cmVhbSBhbmQgTWVkaWFTdHJlYW1UcmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCAxNzAxMmEwM2U3NDM5MzdhZmQzMjUyZDFhOTQzMDU0MmU4NGY5ZTAyLi4wOWE5YTczZThm
ZDVlNDhiNzJkZjZhOGUzY2U1OGIyMDJjYjhjYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTE2ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0
ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUm91dGUgdGhlIEphdmFzY3Jp
cHQgc2Nyb2xsIGV2ZW50IHRvIHRoZSBsYXllciB0cmVlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDI3CisKKyAgICAgICAgSW4gb3JkZXIgdG8g
aGlkZSB0aGUgbG9jYXRpb24gYmFyIG9uIEphdmFzY3JpcHQgc2Nyb2xsIGV2ZW50cywgd2UgbmVl
ZAorICAgICAgICB0byBwbHVtYiB0aHJvdWdoIHRoZSBKYXZhc2NyaXB0IHNjcm9sbCBldmVudCB0
byB0aGUgVG9wQ29udHJvbHNNYW5hZ2VyCisgICAgICAgIGluIENocm9taXVtLCB3aGljaCBpcyBv
d25lZCBieSB0aGUgTGF5ZXJUcmVlSG9zdEltcGwuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZGVw
ZW5kcyBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDI2CisK
KyAgICAgICAgU2VlIGFsc28gdGhlIENocm9taXVtLXNpZGUgcGF0Y2ggYXQgaHR0cHM6Ly9jb2Rl
cmV2aWV3LmNocm9taXVtLm9yZy8xMTk2NzAxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzY3JvbGxGcm9tSmF2YVNjcmlwdCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAg
IChDaHJvbWVDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Nyb2xsRnJvbUphdmFTY3JpcHQpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZp
ZXdJbXBsKToKKwogMjAxMy0wMS0xNiAgRG9taW5pYyBDb29uZXkgICA8ZG9taW5pY2NAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmlu
ZGV4IDNmODJiMGJkMGEyN2UyOWRkNWI4M2RlM2M2ZGRiMTdhMTYzODUxZGIuLjNkZWE0ZWZhMTcw
NGYyYThhYjNlZjViNTE3MjcwOTEyYTQyYzRlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC0xMjcsNiArMTI3LDkgQEAg
cHVibGljOgogICAgIC8vIElmIHVzZUFuY2hvciBpcyBmYWxzZSwgZGVzdGluYXRpb24gaXMgdGhl
IGZpbmFsIHRvcC1sZWZ0IHNjcm9sbCBwb3NpdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2ViUG9pbnQmIGRlc3RpbmF0aW9uLCBib29sIHVzZUFu
Y2hvciwgZmxvYXQgbmV3UGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpID0gMDsKIAorICAg
IC8vIEphdmFTY3JpcHQgaGFzIHJlcXVlc3RlZCBhIHNjcm9sbC4gVXNlZCB0byBpbXBsZW1lbnQg
dGhlIHdpbmRvdy5zY3JvbGxUbygwLDEpIEFQSSB0bworICAgIC8vIGhpZGUgdGhlIGxvY2F0aW9u
IGJhci4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRnJvbUphdmFTY3JpcHQoY29uc3QgV2ViUG9p
bnQmIHNjcm9sbFBvaW50KSA9IDA7CiAKICAgICAvLyBGbG93IGNvbnRyb2wgYW5kIHNjaGVkdWxp
bmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggMjI3ZmVlNzc1
ZTkzMzU4MjdjOWFhNjRhODExZTFhMWQwOTdmNDA2Mi4uYjdlYmM5N2FkMTk2ZTk4YzY0YzI3ZTZj
NTVlMGY1NzcwOTExNzRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAKQEAgLTU5Niw2ICs1OTYsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRJ
bXBsOjpsYXlvdXRVcGRhdGVkKEZyYW1lKiBmcmFtZSkgY29uc3QKICAgICBtX3dlYlZpZXctPmxh
eW91dFVwZGF0ZWQoV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpKTsKIH0KIAordm9pZCBD
aHJvbWVDbGllbnRJbXBsOjpzY3JvbGxGcm9tSmF2YVNjcmlwdChjb25zdCBJbnRQb2ludCYgc2Ny
b2xsUG9pbnQpIGNvbnN0Cit7CisgICAgbV93ZWJWaWV3LT5zY3JvbGxGcm9tSmF2YVNjcmlwdChz
Y3JvbGxQb2ludCk7Cit9CisKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6c2Nyb2xsYmFyc01vZGVE
aWRDaGFuZ2UoKSBjb25zdAogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5oCmluZGV4IGQyYWQxMTE3ZWNiYTYxNTQ3MDQ5MTFkMDFjNzk5M2Y2ZTI5
Zjk5YzEuLjZiN2Q0N2YzMzU0NzY2OTY2NmVlYjRiMWMwY2Y3YmE5OTJkMWM3NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTEzMSw2ICsx
MzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dFVwZGF0ZWQoV2ViQ29yZTo6
RnJhbWUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KAogICAg
ICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNjcm9sbEZyb21KYXZhU2NyaXB0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KAogICAgICAgICBjb25zdCBXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGI2YzRkOGQzMGY1Y2Y2
MDYyOWI4N2M4OWE4ZjdhMzc0ODJkZDRlNzMuLjg3OWExZGQ1YjQxOTA5ZjUxNmM2NGQxNWVmMWE3
MWU2ODc5YjJkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKQEAgLTE0NTIsNiArMTQ1MiwxNCBAQCBib29sIFdlYlZpZXdJbXBsOjpwcm9wYWdhdGVTY3Jv
bGwoU2Nyb2xsRGlyZWN0aW9uIHNjcm9sbERpcmVjdGlvbiwKICAgICByZXR1cm4gc2Nyb2xsSGFu
ZGxlZDsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsRnJvbUphdmFTY3JpcHQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHNjcm9sbFBvaW50KQoreworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICBpZiAobV9sYXllclRyZWVWaWV3KQorICAgICAgICBtX2xheWVyVHJl
ZVZpZXctPnNjcm9sbEZyb21KYXZhU2NyaXB0KHNjcm9sbFBvaW50KTsKKyNlbmRpZgorfQorCiB2
b2lkICBXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBv
cHVwQ29udGFpbmVyKQogewogICAgIGlmIChwb3B1cENvbnRhaW5lci0+cG9wdXBUeXBlKCkgPT0g
V2ViQ29yZTo6UG9wdXBDb250YWluZXI6OlNlbGVjdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNDE1NDlhOGM1ZjI2OWQ2ODFkNWE3ZDg2NzAxMWE3ZDAw
YzYwM2VlMS4uMDU0NGI0NTJiYjM4ZTJiM2ZmMGI4YzEzMjEwYzJjNzhkNmI3NzhhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC01MTUsNiArNTE1LDggQEAg
cHVibGljOgogICAgIC8vIHdhcyBzY3JvbGxlZC4KICAgICBib29sIHByb3BhZ2F0ZVNjcm9sbChX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKIAor
ICAgIHZvaWQgc2Nyb2xsRnJvbUphdmFTY3JpcHQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNj
cm9sbFBvaW50KTsKKwogICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IGEgcG9wdXAgd2FzIG9wZW5l
ZC9jbG9zZWQuCiAgICAgdm9pZCBwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciog
cG9wdXBDb250YWluZXIpOwogICAgIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250
YWluZXIqIHBvcHVwQ29udGFpbmVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184515</attachid>
            <date>2013-01-24 09:32:45 -0800</date>
            <delta_ts>2013-03-04 08:08:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130124172936.patch</filename>
            <type>text/plain</type>
            <size>6438</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDFmNmYxOTI3MjIxOGY4OTM5OGM0ODc4MmIxYmU3ODc4YzE1YmNmZTYuLjIzY2E2YmE3OTI3OWRh
N2M3Mjk4YTAxNzdmOWUyZjRmNDIyZjcyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTMtMDEtMTYgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSb3V0ZSB0aGUgcHJvZ3JhbW1hdGlj
IHNjcm9sbCBldmVudCB0byB0aGUgV2ViVmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzAyNworCisgICAgICAgIEluIG9yZGVyIHRvIGhpZGUg
dGhlIGxvY2F0aW9uIGJhciBvbiBwcm9ncmFtbWF0aWMgc2Nyb2xsIGV2ZW50cywgd2UgbmVlZAor
ICAgICAgICB0byBwbHVtYiB0aHJvdWdoIHRoZSBwcm9ncmFtbWF0aWMgc2Nyb2xsIGV2ZW50IHRv
IHRoZSBUb3BDb250cm9sc01hbmFnZXIKKyAgICAgICAgaW4gQ2hyb21pdW0uCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgZGVwZW5kcyBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3MDI2CisKKyAgICAgICAgU2VlIGFsc28gdGhlIENocm9taXVtLXNpZGUgcGF0Y2gg
YXQgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMTk2NzAxNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzY3JvbGxGcm9tSmF2
YVNjcmlwdCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJ
bXBsLmg6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Nyb2xsRnJvbUphdmFT
Y3JpcHQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoK
KyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwogMjAxMy0wMS0yMiAgQWxwaGEgTGFtICA8aGNsYW1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE0MDM5Mik6IEluamVjdElEQktl
eVRlc3QuVG9wTGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVlIGlzIGNyYXNoaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCmluZGV4IGRkYzRkOWQ5
NjhlNDZmNzU3NTBiMTEyNWMzNjE5ZWM3YjllZTFiNTUuLjY4NmVlOTBiZDBjNGY0OGZiODlkYWE2
OTlkZTljYTkwZDQ3MGU1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYldpZGdldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldpZGdldENsaWVudC5oCkBAIC0xMjQsNiArMTI0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgZW50ZXJGdWxsU2NyZWVuKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZXhpdEZ1bGxTY3JlZW4oKSB7IH0KIAorICAgIC8vIENhbGxlZCB3aGVuIFdlYktpdCBw
cm9ncmFtbWF0aWNhbGx5IHNjcm9sbHMuIEUuZy4gd2luZG93LnNjcm9sbFRvLgorICAgIC8vIFVz
ZWQgYXMgYSBzaWduYWwgdG8gaGlkZSB0aGUgVVJMIGJhciBvbiBDaHJvbWUgb24gQW5kcm9pZC4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUHJvZ3JhbW1hdGljYWxseVNjcm9sbChjb25zdCBXZWJQb2lu
dCYgcG9pbnQpIHsgfTsKKwogICAgIC8vIENhbGxlZCB0byBnZXQvc2V0IHRoZSBwb3NpdGlvbiBv
ZiB0aGUgd2lkZ2V0IGluIHNjcmVlbiBjb29yZGluYXRlcy4KICAgICB2aXJ0dWFsIFdlYlJlY3Qg
d2luZG93UmVjdCgpIHsgcmV0dXJuIFdlYlJlY3QoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRX
aW5kb3dSZWN0KGNvbnN0IFdlYlJlY3QmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggOGY3MDY5YzBmMDM0MmM4Y2YzMDg1YTQw
NGU4YTU0ZDc5YmQzY2QyNy4uNzg2OWU3ZWEwZWY5MDMyMjM5OTUzYWRjOTMyMjhkODQxYjRkNDM4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAKQEAgLTU5Nyw2ICs1OTcsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpsYXlvdXRVcGRh
dGVkKEZyYW1lKiBmcmFtZSkgY29uc3QKICAgICBtX3dlYlZpZXctPmxheW91dFVwZGF0ZWQoV2Vi
RnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRJbXBs
OjpkaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkg
Y29uc3QKK3sKKyAgICBtX3dlYlZpZXctPmRpZFByb2dyYW1tYXRpY2FsbHlTY3JvbGwoc2Nyb2xs
UG9pbnQpOworfQorCiB2b2lkIENocm9tZUNsaWVudEltcGw6OnNjcm9sbGJhcnNNb2RlRGlkQ2hh
bmdlKCkgY29uc3QKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAppbmRleCBkNWU5YWZmM2FhNDNlNzNiZmI5OTNlOTA2NTdhZmUyZWZhNmUyMWY3
Li5iYTc3NDljOGE0YmMyY2ZhY2Q5ZWRlOGEyMTU3OWZmNjU5NzM3YWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC0xMzEsNiArMTMxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRVcGRhdGVkKFdlYkNvcmU6OkZyYW1l
KikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldygKICAgICAgICAg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQ
cm9ncmFtbWF0aWNhbGx5U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KAogICAgICAgICBjb25zdCBXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGZlZDRmOGQ1MTNkZTMx
ODVhMzJkNDNiMzRhYmM5YTExODM5ZWY0N2YuLjkyZGNhOTA5NmU5YzViNThhNDgwMjY0ZDFkMTk2
ZmU0ODc0Y2JjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKQEAgLTQxNSw2ICs0MTUsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0Ns
aWVudCogY2xpZW50KQogICAgICwgbV9pc1RyYW5zcGFyZW50KGZhbHNlKQogICAgICwgbV90YWJz
VG9MaW5rcyhmYWxzZSkKICAgICAsIG1faXNDYW5jZWxpbmdGdWxsU2NyZWVuKGZhbHNlKQorICAg
ICwgbV9pc0FwcGx5aW5nU2Nyb2xsQW5kU2NhbGUoZmFsc2UpCiAgICAgLCBtX2JlbmNobWFya1N1
cHBvcnQodGhpcykKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLCBtX2xh
eWVyVHJlZVZpZXcoMCkKQEAgLTE0NzksNiArMTQ4MCwxNCBAQCBib29sIFdlYlZpZXdJbXBsOjpw
cm9wYWdhdGVTY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIHNjcm9sbERpcmVjdGlvbiwKICAgICByZXR1
cm4gc2Nyb2xsSGFuZGxlZDsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6ZGlkUHJvZ3JhbW1hdGlj
YWxseVNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCit7CisgICAg
aWYgKG1faXNBcHBseWluZ1Njcm9sbEFuZFNjYWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2NsaWVudC0+ZGlkUHJvZ3JhbW1hdGljYWxseVNjcm9sbChzY3JvbGxQb2ludCk7Cit9CisKIHZv
aWQgIFdlYlZpZXdJbXBsOjpwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9w
dXBDb250YWluZXIpCiB7CiAgICAgaWYgKHBvcHVwQ29udGFpbmVyLT5wb3B1cFR5cGUoKSA9PSBX
ZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6U2VsZWN0KSB7CkBAIC00MTMxLDYgKzQxNDAsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmIHNjcm9s
bERlbHRhLCBmbG9hdCBwYWdlU2NhbAogICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX2lzQXBw
bHlpbmdTY3JvbGxBbmRTY2FsZSA9IHRydWU7CiAgICAgaWYgKHBhZ2VTY2FsZURlbHRhID09IDEp
IHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6
YXBwbHlTY3JvbGxBbmRTY2FsZTo6c2Nyb2xsQnkiLCAieCIsIHNjcm9sbERlbHRhLndpZHRoLCAi
eSIsIHNjcm9sbERlbHRhLmhlaWdodCk7CiAgICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWVW
aWV3KCktPnNjcm9sbEJ5KHNjcm9sbERlbHRhKTsKQEAgLTQxNTMsNiArNDE2Myw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYgc2Nyb2xsRGVs
dGEsIGZsb2F0IHBhZ2VTY2FsCiAgICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvcihwYWdlU2NhbGVG
YWN0b3IoKSAqIHBhZ2VTY2FsZURlbHRhLCBzY3JvbGxQb2ludCk7CiAgICAgICAgIG1fZG91Ymxl
VGFwWm9vbUluRWZmZWN0ID0gZmFsc2U7CiAgICAgfQorICAgIG1faXNBcHBseWluZ1Njcm9sbEFu
ZFNjYWxlID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbGxDb21taXQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNDAyNzVkNzRhMGI1MmQ3
MjkwZmU4ZDAyZGNhOGRhZWU3ZDgyZDllOC4uYWNiZjA4YzRkYmFiZjQ5NGUwYjkyZjA1OWFlNThh
OThjZjNiMWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBA
IC01MTYsNiArNTE2LDggQEAgcHVibGljOgogICAgIC8vIHdhcyBzY3JvbGxlZC4KICAgICBib29s
IHByb3BhZ2F0ZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9s
bEdyYW51bGFyaXR5KTsKIAorICAgIHZvaWQgZGlkUHJvZ3JhbW1hdGljYWxseVNjcm9sbChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsUG9pbnQpOworCiAgICAgLy8gTm90aWZpY2F0aW9u
IHRoYXQgYSBwb3B1cCB3YXMgb3BlbmVkL2Nsb3NlZC4KICAgICB2b2lkIHBvcHVwT3BlbmVkKFdl
YkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CiAgICAgdm9pZCBwb3B1cENs
b3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOwpAQCAtODM2LDYg
KzgzOCw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBtX2Z1bGxTY3Jl
ZW5GcmFtZTsKICAgICBib29sIG1faXNDYW5jZWxpbmdGdWxsU2NyZWVuOwogCisgICAgLy8gSWYg
c2V0LCB0aGUgV2ViVmlldyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBhcHBseSBzY3JvbGwgYW5kIHNj
YWxlIHVwZGF0ZXMKKyAgICAvLyBmcm9tIHRoZSBjb21wb3NpdG9yLgorICAgIGJvb2wgbV9pc0Fw
cGx5aW5nU2Nyb2xsQW5kU2NhbGU7CiAgICAgV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsIG1f
YmVuY2htYXJrU3VwcG9ydDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191249</attachid>
            <date>2013-03-04 08:08:25 -0800</date>
            <delta_ts>2013-03-13 10:54:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130304160433.patch</filename>
            <type>text/plain</type>
            <size>4958</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGZiZTNlMDEyMzA5MTE4YzY2NDgxNzY4NjdjMWQwNzI0ZmM2NTIwYmMuLjRkNjE5MWY0NWExYTYy
YjJjYTljMTBiOTE2ZWU3ZDYyMDA0NWE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTMtMDMtMDQgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBIaWRlIHRoZSBsb2NhdGlvbiBiYXIg
b24gV2ViS2l0IHNjcm9sbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzAyNworCisgICAgICAgIEhpZGUgdGhlIGxvY2F0aW9uIGJhciB3aGVuIFdl
YktpdCBzY3JvbGxzLCBzbyB0aGF0IHNpdGVzCisgICAgICAgIHVzaW5nIHdpbmRvdy5zY3JvbGxU
bygwLDEpIGNhbiBwcm9ncmFtbWF0aWNhbGx5IHJlcXVlc3QKKyAgICAgICAgdGhhdCB0aGUgbG9j
YXRpb24gYmFyIGJlIGhpZGRlbi4KKworICAgICAgICBPbiBpbml0aWFsIHBhZ2UgbG9hZCwgaWYg
dGhlIHBhZ2UgcGVyZm9ybXMgYSB3aW5kb3cuc2Nyb2xsVG8oMCwwKQorICAgICAgICB0aGUgbG9j
YXRpb24gYmFyIHdpbGwgbm90IGJlIGhpZGRlbiBiZWNhdXNlIG5vIHNjcm9sbCB3aWxsIGJlCisg
ICAgICAgIGVmZmVjdGVkIChzaW5jZSB0aGUgcGFnZSBpcyBhbHJlYWR5IGF0IHRoZSBnaXZlbiBs
b2NhdGlvbikuCisKKyAgICAgICAgQWxzbywgd2UgZG8gbm90IHdhbnQgdG8gaGlkZSB0aGUgVVJM
IGJhciBvbiBwYWdlIHJlbG9hZCwgb3IKKyAgICAgICAgYmFja3dhcmRzIGZvcndhcmRzIG5hdmln
YXRpb25zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcHVibGljL1dlYldpZGdldENsaWVudC5oOgorICAgICAgICAoV2ViV2lkZ2V0Q2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50OjpoaWRlVG9wQ29udHJvbHMpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzY3JvbGxSb290
TGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5k
U2NhbGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEzLTAzLTA0ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBhZGQgQWNlIGVkaXRvciBleHBlcmltZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCmluZGV4IDQ4ZmU1ODgzNWM1MTk4NTgxM2Y4
MjZiY2M4YjE5NTU4OWYzMDQyNGQuLjVjNmJmMTJkOTI4ZDNjOTQ1ZGViNGFjZDQxMWJlZmUwMGJh
ZWE0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdl
dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENs
aWVudC5oCkBAIC0xNzYsNiArMTc2LDkgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3aGVuIGEg
Z2VzdHVyZSBldmVudCBpcyBoYW5kbGVkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVHZXN0
dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCwgYm9vbCBldmVudENhbmNlbGxl
ZCkgeyB9CiAKKyAgICAvLyBDYWxsZWQgd2hlbiBXZWJLaXQgcmVxdWVzdHMgdGhlIHRvcCBjb250
cm9scyB0byBiZSBoaWRkZW4uCisgICAgdmlydHVhbCB2b2lkIGhpZGVUb3BDb250cm9scygpIHsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYldpZGdldENsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA5Y2ZkNmI5YzcxYjU5NDNh
OGU0ZjRjMTUyY2UwNTA1ZTViYWMwOGEyLi4yOTllZTA1MzZkODk4ZTUyYmI5NjRiNDRhNzAzNTUz
ZmJjY2E0MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC00NTcsNiArNDU3LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGll
bnQqIGNsaWVudCkKICAgICAsIG1fc2hvd1BhaW50UmVjdHMoZmFsc2UpCiAgICAgLCBtX3Nob3dE
ZWJ1Z0JvcmRlcnMoZmFsc2UpCiAgICAgLCBtX2NvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQoZmFs
c2UpCisgICAgLCBtX3Njcm9sbEZyb21Db21wb3NpdG9yKGZhbHNlKQogewogICAgIC8vIFdlYktp
dC93aW4vV2ViVmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0
aGUKICAgICAvLyBLSlMgc3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5l
ZWQgdG8gaGF2ZSB0aHJlYWRpbmcKQEAgLTQwMzYsNiArNDAzNywxOCBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6
c2Nyb2xsUm9vdExheWVyUmVjdChjb25zdCBJbnRTaXplJiwgY29uc3QgSW50UmVjdCYpCiB7Cisg
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpOwor
ICAgIEZyYW1lKiBmcmFtZSA9IGZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICBGcmFtZUxvYWRlciog
bG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOworCisgICAgLy8gV2Ugd2FudCB0byBoaWRlIHRoZSBV
UkwgYmFyIG9uIG9yZGluYXJ5IGxvYWQgdHlwZXMgKG5vdCBiYWNrLWZvcndhcmQKKyAgICAvLyBu
YXZpZ2F0aW9uIC8gcGFnZSByZWxvYWQpIHRoYXQgYXJlIG5vdCBvcmlnaW5hdGluZyBmcm9tIHRo
ZSBjb21wb3NpdG9yLgorICAgIGlmIChsb2FkZXItPmxvYWRUeXBlKCkgPT0gRnJhbWVMb2FkVHlw
ZVN0YW5kYXJkICYmICFtX3Njcm9sbEZyb21Db21wb3NpdG9yKSB7CisgICAgICAgIC8vIFdlIGhh
dmUgYSBzY3JvbGwgdGhhdCBpcyBub3QgZXhwbGFpbmVkIGJ5IGFwcGx5U2Nyb2xsQW5kU2NhbGUs
IHNvIHdlIG5lZWQKKyAgICAgICAgLy8gdG8gaGlkZSB0aGUgbG9jYXRpb24gYmFyLgorICAgICAg
ICBtX2NsaWVudC0+aGlkZVRvcENvbnRyb2xzKCk7CisgICAgfQorCiAgICAgdXBkYXRlTGF5ZXJU
cmVlVmlld3BvcnQoKTsKIH0KIApAQCAtNDIyNCw2ICs0MjM3LDkgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQg
cGFnZVNjYWwKICAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gU2Nyb2xscyBmcm9tIHRoZSBj
b21wb3NpdG9yIHNob3VsZCBub3QgY2F1c2UgdGhlIFVSTCBiYXIgdG8gaGlkZS4gU2VlIFdlYlZp
ZXdJbXBsOjpzY3JvbGxSb290TGF5ZXJSZWN0LgorICAgIG1fc2Nyb2xsRnJvbUNvbXBvc2l0b3Ig
PSB0cnVlOworCiAgICAgaWYgKHBhZ2VTY2FsZURlbHRhID09IDEpIHsKICAgICAgICAgVFJBQ0Vf
RVZFTlRfSU5TVEFOVDIoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2Fs
ZTo6c2Nyb2xsQnkiLCAieCIsIHNjcm9sbERlbHRhLndpZHRoLCAieSIsIHNjcm9sbERlbHRhLmhl
aWdodCk7CiAgICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPnNjcm9sbEJ5KHNj
cm9sbERlbHRhKTsKQEAgLTQyNDYsNiArNDI2Miw5IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5
U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2Fs
CiAgICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvcihwYWdlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2Fs
ZURlbHRhLCBzY3JvbGxQb2ludCk7CiAgICAgICAgIG1fZG91YmxlVGFwWm9vbVBlbmRpbmcgPSBm
YWxzZTsKICAgICB9CisKKyAgICAvLyBSZXNldCBzbyB0aGF0IHdlIGNhbiBkZXRlY3Qgd2hldGhl
ciBmdXR1cmUgc2Nyb2xscyBoYXZlIGNvbWUgZnJvbSB0aGUgY29tcG9zaXRvci4KKyAgICBtX3Nj
cm9sbEZyb21Db21wb3NpdG9yID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZFJl
Y3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAppbmRleCBkNDZhMzc1YjM5YTc5YWVjOGZjZGIwMTc1MjE5YTYzNTBm
ZmMxNWFjLi42ZWNkY2I1MDE4MzljZTA3MGIwNGY2YjFkN2ViYzJlNjBjZGVmMDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTkwMyw2ICs5MDMsOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9zaG93UGFpbnRSZWN0czsKICAgICBib29sIG1fc2hvd0RlYnVn
Qm9yZGVyczsKICAgICBib29sIG1fY29udGludW91c1BhaW50aW5nRW5hYmxlZDsKKworICAgIGJv
b2wgbV9zY3JvbGxGcm9tQ29tcG9zaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192948</attachid>
            <date>2013-03-13 10:54:32 -0700</date>
            <delta_ts>2013-03-15 12:29:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130313175029.patch</filename>
            <type>text/plain</type>
            <size>4765</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGNjYjJkNTRhMWNhOWE1YzAzZmQzNDQ0OTBjNjNmMjEwOTM3OTM5OGMuLjEzOWQ5YWYwNTc3N2Rj
MmFhOTdiNGJlYzRiMjc0NmQ5NjFmMmIwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTMtMDMtMDQgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBIaWRlIHRoZSBsb2NhdGlvbiBiYXIg
b24gV2ViS2l0IHNjcm9sbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzAyNworCisgICAgICAgIEhpZGUgdGhlIGxvY2F0aW9uIGJhciB3aGVuIFdl
YktpdCBzY3JvbGxzLCBzbyB0aGF0IHNpdGVzCisgICAgICAgIHVzaW5nIHdpbmRvdy5zY3JvbGxU
bygwLDEpIGNhbiBwcm9ncmFtbWF0aWNhbGx5IHJlcXVlc3QKKyAgICAgICAgdGhhdCB0aGUgbG9j
YXRpb24gYmFyIGJlIGhpZGRlbi4KKworICAgICAgICBPbiBpbml0aWFsIHBhZ2UgbG9hZCwgaWYg
dGhlIHBhZ2UgcGVyZm9ybXMgYSB3aW5kb3cuc2Nyb2xsVG8oMCwwKQorICAgICAgICB0aGUgbG9j
YXRpb24gYmFyIHdpbGwgbm90IGJlIGhpZGRlbiBiZWNhdXNlIG5vIHNjcm9sbCB3aWxsIGJlCisg
ICAgICAgIGVmZmVjdGVkIChzaW5jZSB0aGUgcGFnZSBpcyBhbHJlYWR5IGF0IHRoZSBnaXZlbiBs
b2NhdGlvbikuCisKKyAgICAgICAgQWxzbywgd2UgZG8gbm90IHdhbnQgdG8gaGlkZSB0aGUgVVJM
IGJhciBvbiBwYWdlIHJlbG9hZCwgb3IKKyAgICAgICAgYmFja3dhcmRzIGZvcndhcmRzIG5hdmln
YXRpb25zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcHVibGljL1dlYldpZGdldENsaWVudC5oOgorICAgICAgICAoV2ViV2lkZ2V0Q2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50OjpoaWRlVG9wQ29udHJvbHMpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzY3JvbGxSb290
TGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5k
U2NhbGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEzLTAzLTEyICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLiAgUm9sbGVkIENocm9taXVtIERFUFMgdG8gcjE4NzY4OC4gIFJlcXVlc3RlZCBieQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaAppbmRleCBi
NjhjNWVjYzc1Y2JkNGNkYjljMmQ3MzIzOGU4NjQwZWJhMGNhMjg0Li5jZjkyZDIxNjVjNmEyOTUz
NDJjODk5ODVkNmJiMzhhZTRlOTExYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaApAQCAtMTcyLDYgKzE3Miw5IEBAIHB1YmxpYzoKICAg
ICAvLyBDYWxsZWQgd2hlbiBhIGdlc3R1cmUgZXZlbnQgaXMgaGFuZGxlZC4KICAgICB2aXJ0dWFs
IHZvaWQgZGlkSGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQs
IGJvb2wgZXZlbnRDYW5jZWxsZWQpIHsgfQogCisgICAgLy8gQ2FsbGVkIHdoZW4gV2ViS2l0IHJl
cXVlc3RzIHRoZSB0b3AgY29udHJvbHMgdG8gYmUgaGlkZGVuLgorICAgIHZpcnR1YWwgdm9pZCBo
aWRlVG9wQ29udHJvbHMoKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJXaWRnZXRDbGllbnQo
KSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwCmluZGV4IDM0OGM4NzM3ZDFlYWQzN2YxNWRkMjQ3MGI0NWZlYzBlNTgwNjkwNGMuLmI5
MWE2OTNlZTYwZDMyMWU4NGY4ZTFjNTRmZjUxYWU3NWIxMTYwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC01MTEsNiArNTExLDcg
QEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjppbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhj
b25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LAogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjppbnZhbGlk
YXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIGJvb2wg
aW1tZWRpYXRlKQogewogICAgIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHVwZGF0ZVJl
Y3QsIGltbWVkaWF0ZSk7CisgICAgbV93ZWJWaWV3LT5oaWRlVG9wQ29udHJvbHNPblNjcm9sbCgp
OwogfQogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpAQCAtNTM2LDYgKzUz
Nyw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6c2Nyb2xsKAogICAgIH0gZWxzZQogICAgICAg
ICBtX3dlYlZpZXctPnNjcm9sbFJvb3RMYXllclJlY3Qoc2Nyb2xsRGVsdGEsIGNsaXBSZWN0KTsK
ICNlbmRpZgorICAgIG1fd2ViVmlldy0+aGlkZVRvcENvbnRyb2xzT25TY3JvbGwoKTsKIH0KIAog
SW50UG9pbnQgQ2hyb21lQ2xpZW50SW1wbDo6c2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2lu
dCYgcG9pbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKaW5kZXggNDg2MWYwYTUyMGFiODIzODM1MmUwN2JkOTIxZTY0NGJlODAyNzljNy4uYWE4NGIz
MTViNGE2ZDg2NGJjNDFmNDZmNjgwYjA3NDQ1MTg2NjY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDI1MSw2ICs0MjUxLDIxIEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmRldGVjdENvbnRlbnRPblRvdWNoKGNvbnN0IFdlYlBvaW50JiBwb3NpdGlvbikK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6aGlkZVRvcENvbnRyb2xz
T25TY3JvbGwoKQoreworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lSW1wbCgp
LT5mcmFtZVZpZXcoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBmcmFtZVZpZXctPmZyYW1lKCk7Cisg
ICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKKworICAgIC8vIFdlIHdh
bnQgdG8gaGlkZSB0aGUgVVJMIGJhciBvbiBvcmRpbmFyeSBsb2FkIHR5cGVzIChub3QgYmFjay1m
b3J3YXJkCisgICAgLy8gbmF2aWdhdGlvbiAvIHBhZ2UgcmVsb2FkKSB0aGF0IGFyZSBub3Qgb3Jp
Z2luYXRpbmcgZnJvbSB0aGUgY29tcG9zaXRvci4KKyAgICBpZiAobG9hZGVyLT5sb2FkVHlwZSgp
ID09IEZyYW1lTG9hZFR5cGVTdGFuZGFyZCAmJiBmcmFtZVZpZXctPmluUHJvZ3JhbW1hdGljU2Ny
b2xsKCkpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSBhIHByb2dyYW1tYXRpYyBzY3JvbGwsIHRoYXQg
aGFzIG5vdCBvcmlnaW5hdGVkIGZyb20gdGhlIGNvbXBvc2l0b3IuCisgICAgICAgIC8vIHRvIGhp
ZGUgdGhlIGxvY2F0aW9uIGJhci4KKyAgICAgICAgbV9jbGllbnQtPmhpZGVUb3BDb250cm9scygp
OworICAgIH0KK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VmlzaWJpbGl0eVN0YXRlKFdlYlBh
Z2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNJbml0aWFsU3RhdGUpIHsKICAgICBpZiAoIXBhZ2UoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGUxNzA2ZDkyNDhj
ZjBmZDJmYzUyNTE2NDlhMzAzMzQ1MTJmNzJhM2UuLmIzZTRiNWI4NDhmMTYxZDFlY2JkNjNjMjYx
MTg4OTZiZTU3MGJhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aApAQCAtNTQwLDYgKzU0MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9u
KCk7CiAjZW5kaWYKIAorICAgIHZvaWQgaGlkZVRvcENvbnRyb2xzT25TY3JvbGwoKTsKKwogICAg
IHZpcnR1YWwgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSwg
Ym9vbCk7CiAKICAgICBXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogc2VsZWN0UG9wdXAoKSBjb25z
dCB7IHJldHVybiBtX3NlbGVjdFBvcHVwLmdldCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193353</attachid>
            <date>2013-03-15 12:29:29 -0700</date>
            <delta_ts>2013-03-18 11:32:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130315192523.patch</filename>
            <type>text/plain</type>
            <size>12520</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDQ4NWJkMjE0MjZlNjkzYzZmMWVjZDRlYTc4YjJmYzAzNjc2MGIwZTYuLmZkZjQ3ZGJmY2YxNzFh
ZWJkNmNkZDMyM2U2OWMwMzE2MDZmMzcyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTMtMDMtMDQgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBIaWRlIHRoZSBsb2NhdGlvbiBiYXIg
b24gV2ViS2l0IHNjcm9sbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzAyNworCisgICAgICAgIEhpZGUgdGhlIGxvY2F0aW9uIGJhciB3aGVuIFdl
YktpdCBzY3JvbGxzLCBzbyB0aGF0IHNpdGVzCisgICAgICAgIHVzaW5nIHdpbmRvdy5zY3JvbGxU
bygwLDEpIGNhbiBwcm9ncmFtbWF0aWNhbGx5IHJlcXVlc3QKKyAgICAgICAgdGhhdCB0aGUgbG9j
YXRpb24gYmFyIGJlIGhpZGRlbi4KKworICAgICAgICBPbiBpbml0aWFsIHBhZ2UgbG9hZCwgaWYg
dGhlIHBhZ2UgcGVyZm9ybXMgYSB3aW5kb3cuc2Nyb2xsVG8oMCwwKQorICAgICAgICB0aGUgbG9j
YXRpb24gYmFyIHdpbGwgbm90IGJlIGhpZGRlbiBiZWNhdXNlIG5vIHNjcm9sbCB3aWxsIGJlCisg
ICAgICAgIGVmZmVjdGVkIChzaW5jZSB0aGUgcGFnZSBpcyBhbHJlYWR5IGF0IHRoZSBnaXZlbiBs
b2NhdGlvbikuCisKKyAgICAgICAgQWxzbywgd2UgZG8gbm90IHdhbnQgdG8gaGlkZSB0aGUgVVJM
IGJhciBvbiBwYWdlIHJlbG9hZCwgb3IKKyAgICAgICAgYmFja3dhcmRzIGZvcndhcmRzIG5hdmln
YXRpb25zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogcHVibGljL1dlYldpZGdldENsaWVudC5oOgorICAg
ICAgICAoV2ViV2lkZ2V0Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50
OjpoaWRlVG9wQ29udHJvbHMpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9y
U2xvd1Njcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnNjcm9sbCk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmhpZGVUb3BDb250cm9sc09uU2Nyb2xsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAg
ICogdGVzdHMvSGlkZVRvcENvbnRyb2xzVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKEhpZGVUb3BDb250cm9sc1Rlc3QpOgorICAgICAgICAoV2ViS2l0OjpIaWRl
VG9wQ29udHJvbHNUZXN0OjpIaWRlVG9wQ29udHJvbHNUZXN0KToKKyAgICAgICAgKFdlYktpdDo6
SGlkZVRvcENvbnRyb2xzVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoVGVzdEhpZGVUb3BDb250
cm9sc0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQ6
OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpUZXN0SGlkZVRv
cENvbnRyb2xzQ2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RIaWRlVG9wQ29u
dHJvbHNDbGllbnQ6OmRpZEhpZGVUb3BDb250cm9scyk6CisgICAgICAgIChXZWJLaXQ6OlRFU1Rf
Rik6CisgICAgICAgICogdGVzdHMvV2ViVmlld1Rlc3QuY3BwOgorCiAyMDEzLTAzLTE1ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLiAgUm9sbGVkIENocm9taXVtIERFUFMgdG8gcjE4ODQxOC4gIFJlcXVlc3RlZCBieQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggODljODI1OTNmY2FhMTA4MDAxZjNmM2E2OTQ1
ZmQzZDM5ZGQwZjI5Mi4uNDhkODcyNTM5ZWJmMDg0OGRlZTE0ODQ1OGM1NGNjY2U1M2ZkZDdhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC03Myw2ICs3Myw3IEBACiAgICAgICAg
ICAgICAndGVzdHMvRnJhbWVUZXN0SGVscGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9HSUZJ
bWFnZURlY29kZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvR3JhcGhpY3NMYXllckNo
cm9taXVtVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0hpZGVUb3BDb250cm9sc1Rlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKaW5kZXggYjY4YzVlY2M3NWNiZDRjZGI5
YzJkNzMyMzhlODY0MGViYTBjYTI4NC4uY2Y5MmQyMTY1YzZhMjk1MzQyYzg5OTg1ZDZiYjM4YWU0
ZTkxMWFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lk
Z2V0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0
Q2xpZW50LmgKQEAgLTE3Miw2ICsxNzIsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4g
YSBnZXN0dXJlIGV2ZW50IGlzIGhhbmRsZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50LCBib29sIGV2ZW50Q2FuY2Vs
bGVkKSB7IH0KIAorICAgIC8vIENhbGxlZCB3aGVuIFdlYktpdCByZXF1ZXN0cyB0aGUgdG9wIGNv
bnRyb2xzIHRvIGJlIGhpZGRlbi4KKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVRvcENvbnRyb2xzKCkg
eyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViV2lkZ2V0Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAzNDhj
ODczN2QxZWFkMzdmMTVkZDI0NzBiNDVmZWMwZTU4MDY5MDRjLi5iOTFhNjkzZWU2MGQzMjFlODRm
OGUxYzU0ZmY1MWFlNzViMTE2MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNTExLDYgKzUxMSw3IEBAIHZvaWQgQ2hyb21lQ2xp
ZW50SW1wbDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgdXBk
YXRlUmVjdCwKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xv
d1Njcm9sbChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCBib29sIGltbWVkaWF0ZSkKIHsKICAg
ICBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh1cGRhdGVSZWN0LCBpbW1lZGlhdGUpOwor
ICAgIG1fd2ViVmlldy0+aGlkZVRvcENvbnRyb2xzT25TY3JvbGwoKTsKIH0KIAogI2lmIEVOQUJM
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTUzNiw2ICs1MzcsNyBAQCB2b2lkIENocm9t
ZUNsaWVudEltcGw6OnNjcm9sbCgKICAgICB9IGVsc2UKICAgICAgICAgbV93ZWJWaWV3LT5zY3Jv
bGxSb290TGF5ZXJSZWN0KHNjcm9sbERlbHRhLCBjbGlwUmVjdCk7CiAjZW5kaWYKKyAgICBtX3dl
YlZpZXctPmhpZGVUb3BDb250cm9sc09uU2Nyb2xsKCk7CiB9CiAKIEludFBvaW50IENocm9tZUNs
aWVudEltcGw6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDQyMTIwOTA4
ZDQ5ZjU1NTI0OTAwYTBhODU3ZTI2MjVkMzAwOThmMzEuLjIwYTQ5YjQ1OTVjNDVhMDIyZWI3MmEy
MmZmNTUyODNmZTNmZjM1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTQyNzksNiArNDI3OSwyMSBAQCBib29sIFdlYlZpZXdJbXBsOjpkZXRlY3RD
b250ZW50T25Ub3VjaChjb25zdCBXZWJQb2ludCYgcG9zaXRpb24pCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmhpZGVUb3BDb250cm9sc09uU2Nyb2xsKCkKK3sKKyAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCk7Cisg
ICAgRnJhbWUqIGZyYW1lID0gZnJhbWVWaWV3LT5mcmFtZSgpOworICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CisKKyAgICAvLyBXZSB3YW50IHRvIGhpZGUgdGhlIFVS
TCBiYXIgb24gb3JkaW5hcnkgbG9hZCB0eXBlcyAobm90IGJhY2stZm9yd2FyZAorICAgIC8vIG5h
dmlnYXRpb24gLyBwYWdlIHJlbG9hZCkgdGhhdCBhcmUgbm90IG9yaWdpbmF0aW5nIGZyb20gdGhl
IGNvbXBvc2l0b3IuCisgICAgaWYgKGxvYWRlci0+bG9hZFR5cGUoKSA9PSBGcmFtZUxvYWRUeXBl
U3RhbmRhcmQgJiYgZnJhbWVWaWV3LT5pblByb2dyYW1tYXRpY1Njcm9sbCgpKSB7CisgICAgICAg
IC8vIFdlIGhhdmUgYSBwcm9ncmFtbWF0aWMgc2Nyb2xsLCB0aGF0IGhhcyBub3Qgb3JpZ2luYXRl
ZCBmcm9tIHRoZSBjb21wb3NpdG9yLgorICAgICAgICAvLyB0byBoaWRlIHRoZSBsb2NhdGlvbiBi
YXIuCisgICAgICAgIG1fY2xpZW50LT5oaWRlVG9wQ29udHJvbHMoKTsKKyAgICB9Cit9CisKIHZv
aWQgV2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRl
IHZpc2liaWxpdHlTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzSW5pdGlhbFN0YXRlKSB7CiAgICAgaWYgKCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAyODNkNGNmOTJmYzA3Y2IzMmNkYWVlOTY0OWIx
NGEwN2Q1ZTk0ZjgwLi41M2MyODc5NzBiZDg1YTM0NWEyZTQwOGM1NGRmMjI4MmY4NjNlNmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTU0MCw2ICs1NDAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpOwogI2VuZGlmCiAKKyAg
ICB2b2lkIGhpZGVUb3BDb250cm9sc09uU2Nyb2xsKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlzaWJpbGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUsIGJvb2wpOwogCiAgICAgV2Vi
Q29yZTo6UG9wdXBDb250YWluZXIqIHNlbGVjdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3RQb3B1cC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9IaWRlVG9wQ29udHJvbHNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SGlkZVRvcENvbnRyb2xzVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI5NjQyNTY1ZDUxNWVlMDA3N2Iz
MjEyYTVkMDYxNDA5NzljOGFhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSGlkZVRvcENvbnRyb2xzVGVzdC5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiVVJM
VGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1l
Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSGlzdG9y
eUl0ZW0uaCIKKyNpbmNsdWRlICJXZWJTY3JpcHRTb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJTZXR0
aW5ncy5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlICJXZWJWaWV3Q2xpZW50Lmgi
CisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1
cHBvcnQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrV2ViRnJhbWVDbGllbnQgOiBwdWJsaWMg
V2ViRnJhbWVDbGllbnQgeworfTsKKworY2xhc3MgSGlkZVRvcENvbnRyb2xzVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBIaWRlVG9wQ29udHJvbHNUZXN0KCkKKyAg
ICAgICAgOiBtX2Jhc2VVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vIikKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIFBsYXRmb3JtOjpj
dXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorCisgICAgc3RkOjpzdHJpbmcgbV9iYXNlVVJMOworICAgIE1v
Y2tXZWJGcmFtZUNsaWVudCBtX21vY2tXZWJGcmFtZUNsaWVudDsKK307CisKK2NsYXNzIFRlc3RI
aWRlVG9wQ29udHJvbHNDbGllbnQgOiBwdWJsaWMgV2ViVmlld0NsaWVudCB7CitwdWJsaWM6Cisg
ICAgVGVzdEhpZGVUb3BDb250cm9sc0NsaWVudCgpCisgICAgeworICAgICAgICByZXNldCgpOwor
ICAgIH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIG1fZGlkSGlkZVRvcENvbnRy
b2xzID0gZmFsc2U7CisgICAgfQorICAgIGJvb2wgZGlkSGlkZVRvcENvbnRyb2xzKCkgY29uc3Qg
eyByZXR1cm4gbV9kaWRIaWRlVG9wQ29udHJvbHM7IH0KKworICAgIC8vIFdlYldpZGdldENsaWVu
dDoKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVRvcENvbnRyb2xzKCkgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgIG1fZGlkSGlkZVRvcENvbnRyb2xzID0gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgYm9vbCBtX2RpZEhpZGVUb3BDb250cm9sczsKK307CisKK1RFU1RfRihIaWRlVG9wQ29udHJv
bHNUZXN0LCBOb0hpZGVPblVzZXJTY3JvbGwpCit7CisgICAgVGVzdEhpZGVUb3BDb250cm9sc0Ns
aWVudCBjbGllbnQ7CisKKyAgICBzdGQ6OnN0cmluZyBwYWdlRGF0YSA9ICJkYXRhOnRleHQvaHRt
bCw8c3Bhbj5BIHNob3J0IHBhZ2U8L3NwYW4+IjsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJh
bWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQocGFnZURhdGEsIGZhbHNlLCAwLCAm
Y2xpZW50KTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5
UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnJlc2l6ZShX
ZWJTaXplKDEwMDAsIDEwMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKworICAgIFdlYlZp
ZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4od2ViVmlldyk7
CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAv
LyBOb24gemVybyBwYWdlIHNjYWxlIGFuZCBzY3JvbGwuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5
U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSg5LCAxMyksIDIuMGYpOworICAgIEVYUEVDVF9GQUxTRShj
bGllbnQuZGlkSGlkZVRvcENvbnRyb2xzKCkpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30K
KworVEVTVF9GKEhpZGVUb3BDb250cm9sc1Rlc3QsIEhpZGVPblByb2dyYW1tYXRpY1Njcm9sbCkK
K3sKKyAgICBUZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50IGNsaWVudDsKKworICAgIHN0ZDo6c3Ry
aW5nIHBhZ2VEYXRhID0gImRhdGE6dGV4dC9odG1sLDxkaXYgc3R5bGU9XCJoZWlnaHQ6MjAwMHB4
XCI+QSBsb25nIGRpdjwvZGl2PiI7CisgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhl
bHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKHBhZ2VEYXRhLCB0cnVlLCAwLCAmY2xpZW50KTsK
KyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxl
RmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEw
MDAsIDEwMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKworICAgIFdlYlZpZXdJbXBsKiB3
ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4od2ViVmlldyk7CisgICAgV2Vi
RnJhbWVJbXBsKiBmcmFtZUltcGwgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpOworICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWVJbXBsLT5mcmFtZVZpZXcoKTsKKworICAgIC8v
IFNsb3cgc2Nyb2xsIHBhdGguCisgICAgZnJhbWVWaWV3LT5zZXRDYW5CbGl0T25TY3JvbGwoZmFs
c2UpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlkSGlkZVRvcENvbnRyb2xzKCkpOworICAg
IGZyYW1lSW1wbC0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoIndpbmRvdy5zY3JvbGxU
bygwLCAyMCk7IikpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMo
KSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBGYXN0IHNjcm9sbCBwYXRoLgorICAg
IGZyYW1lSW1wbC0+ZnJhbWVWaWV3KCktPnNldENhbkJsaXRPblNjcm9sbCh0cnVlKTsKKyAgICBF
WFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsKKyAgICBmcmFtZUltcGwt
PmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjEpOyIp
KTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQuZGlkSGlkZVRvcENvbnRyb2xzKCkpOworICAgIGNs
aWVudC5yZXNldCgpOworfQorICAgIAorVEVTVF9GKEhpZGVUb3BDb250cm9sc1Rlc3QsIE5vSGlk
ZU9uTmF2aWdhdGlvbikKK3sKKyAgICBUZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50IGNsaWVudDsK
KworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0
cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJo
ZWxsb193b3JsZC5odG1sIikpOworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBzdGF0aWNfY2FzdDxX
ZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFz
ZVVSTCArICJoZWxsb193b3JsZC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZp
ZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1
ZSk7CisgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkp
OworICAgIHdlYlZpZXctPmxheW91dCgpOworCisgICAgLy8gTWFrZSB0aGUgcGFnZSBzY2FsZSBh
bmQgc2Nyb2xsIHdpdGggdGhlIGdpdmVuIHBhcmVtZXRlcnMuCisgICAgd2ViVmlldy0+c2V0UGFn
ZVNjYWxlRmFjdG9yKDIuMGYsIFdlYlBvaW50KDExNiwgODQpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Y2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsKKworICAgIC8vIE5hdmlnYXRlIHRvIGFub3Ro
ZXIgcGFnZS4KKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsK
KyAgICBzdGQ6OnN0cmluZyBwYWdlRGF0YSA9ICJkYXRhOnRleHQvaHRtbCw8ZGl2IHN0eWxlPVwi
aGVpZ2h0OjIwMDBweFwiPkEgbG9uZyBkaXY8L2Rpdj4iOworICAgIEZyYW1lVGVzdEhlbHBlcnM6
OmxvYWRGcmFtZSh3ZWJGcmFtZSwgcGFnZURhdGEpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCkt
PnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAvLyBD
aGFuZ2UgdGhlIHNjcm9sbCBwb3NpdGlvbiwgc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgY2hhbmdl
IGluIHNjcm9sbCBwb3NpdGlvbgorICAgIC8vIG9uIHJlc3RvcmUuCisgICAgd2ViVmlldy0+c2V0
UGFnZVNjYWxlRmFjdG9yKDEuNWYsIFdlYlBvaW50KDE2LCAyNCkpOworCisgICAgV2ViSGlzdG9y
eUl0ZW0gZmlyc3RQYWdlID0gd2ViRnJhbWUtPmN1cnJlbnRIaXN0b3J5SXRlbSgpOworCisgICAg
Ly8gTmF2aWdhdGUgYmFja3dhcmRzLgorICAgIHdlYkZyYW1lLT5sb2FkSGlzdG9yeUl0ZW0od2Vi
RnJhbWUtPnByZXZpb3VzSGlzdG9yeUl0ZW0oKSk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+
dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsKKworICAgIC8vIE5h
dmlnYXRlIGZvcndhcmRzLgorICAgIHdlYkZyYW1lLT5sb2FkSGlzdG9yeUl0ZW0oZmlyc3RQYWdl
KTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3lu
Y2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlkSGlk
ZVRvcENvbnRyb2xzKCkpOworCisgICAgLy8gUmVsb2FkLgorICAgIHdlYlZpZXctPm1haW5GcmFt
ZSgpLT5yZWxvYWQoKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQo
KS0+c2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOworICAgIEVYUEVDVF9GQUxTRShj
bGllbnQuZGlkSGlkZVRvcENvbnRyb2xzKCkpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAppbmRl
eCA2M2I4ZjEyYmJhMzZmMzdjMjViNWRhZDAzMTdmNmU3N2NmZGU5Y2U3Li44YTE5ZTEzN2I0YmU5
ODc2ZDM3OWYxMzlmYjU3Mzg3OGQyMzc5ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlZpZXdUZXN0LmNwcApAQCAtMjksNiArMjksNyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKKwogI2luY2x1ZGUgIldlYlZpZXcuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVycy5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIldlYkF1dG9m
aWxsQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGVudERldGVjdGlvblJlc3VsdC5oIgpAQCAt
NDUsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYlNj
cmlwdFNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViVmll
d0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193615</attachid>
            <date>2013-03-18 11:32:43 -0700</date>
            <delta_ts>2013-03-19 11:24:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130318182834.patch</filename>
            <type>text/plain</type>
            <size>11795</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDQ4NWJkMjE0MjZlNjkzYzZmMWVjZDRlYTc4YjJmYzAzNjc2MGIwZTYuLmZkZjQ3ZGJmY2YxNzFh
ZWJkNmNkZDMyM2U2OWMwMzE2MDZmMzcyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTMtMDMtMDQgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBIaWRlIHRoZSBsb2NhdGlvbiBiYXIg
b24gV2ViS2l0IHNjcm9sbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzAyNworCisgICAgICAgIEhpZGUgdGhlIGxvY2F0aW9uIGJhciB3aGVuIFdl
YktpdCBzY3JvbGxzLCBzbyB0aGF0IHNpdGVzCisgICAgICAgIHVzaW5nIHdpbmRvdy5zY3JvbGxU
bygwLDEpIGNhbiBwcm9ncmFtbWF0aWNhbGx5IHJlcXVlc3QKKyAgICAgICAgdGhhdCB0aGUgbG9j
YXRpb24gYmFyIGJlIGhpZGRlbi4KKworICAgICAgICBPbiBpbml0aWFsIHBhZ2UgbG9hZCwgaWYg
dGhlIHBhZ2UgcGVyZm9ybXMgYSB3aW5kb3cuc2Nyb2xsVG8oMCwwKQorICAgICAgICB0aGUgbG9j
YXRpb24gYmFyIHdpbGwgbm90IGJlIGhpZGRlbiBiZWNhdXNlIG5vIHNjcm9sbCB3aWxsIGJlCisg
ICAgICAgIGVmZmVjdGVkIChzaW5jZSB0aGUgcGFnZSBpcyBhbHJlYWR5IGF0IHRoZSBnaXZlbiBs
b2NhdGlvbikuCisKKyAgICAgICAgQWxzbywgd2UgZG8gbm90IHdhbnQgdG8gaGlkZSB0aGUgVVJM
IGJhciBvbiBwYWdlIHJlbG9hZCwgb3IKKyAgICAgICAgYmFja3dhcmRzIGZvcndhcmRzIG5hdmln
YXRpb25zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogcHVibGljL1dlYldpZGdldENsaWVudC5oOgorICAg
ICAgICAoV2ViV2lkZ2V0Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50
OjpoaWRlVG9wQ29udHJvbHMpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9y
U2xvd1Njcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnNjcm9sbCk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmhpZGVUb3BDb250cm9sc09uU2Nyb2xsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAg
ICogdGVzdHMvSGlkZVRvcENvbnRyb2xzVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKEhpZGVUb3BDb250cm9sc1Rlc3QpOgorICAgICAgICAoV2ViS2l0OjpIaWRl
VG9wQ29udHJvbHNUZXN0OjpIaWRlVG9wQ29udHJvbHNUZXN0KToKKyAgICAgICAgKFdlYktpdDo6
SGlkZVRvcENvbnRyb2xzVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoVGVzdEhpZGVUb3BDb250
cm9sc0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQ6
OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpUZXN0SGlkZVRv
cENvbnRyb2xzQ2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RIaWRlVG9wQ29u
dHJvbHNDbGllbnQ6OmRpZEhpZGVUb3BDb250cm9scyk6CisgICAgICAgIChXZWJLaXQ6OlRFU1Rf
Rik6CisgICAgICAgICogdGVzdHMvV2ViVmlld1Rlc3QuY3BwOgorCiAyMDEzLTAzLTE1ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLiAgUm9sbGVkIENocm9taXVtIERFUFMgdG8gcjE4ODQxOC4gIFJlcXVlc3RlZCBieQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggODljODI1OTNmY2FhMTA4MDAxZjNmM2E2OTQ1
ZmQzZDM5ZGQwZjI5Mi4uNDhkODcyNTM5ZWJmMDg0OGRlZTE0ODQ1OGM1NGNjY2U1M2ZkZDdhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC03Myw2ICs3Myw3IEBACiAgICAgICAg
ICAgICAndGVzdHMvRnJhbWVUZXN0SGVscGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9HSUZJ
bWFnZURlY29kZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvR3JhcGhpY3NMYXllckNo
cm9taXVtVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0hpZGVUb3BDb250cm9sc1Rlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKaW5kZXggYjY4YzVlY2M3NWNiZDRjZGI5
YzJkNzMyMzhlODY0MGViYTBjYTI4NC4uY2Y5MmQyMTY1YzZhMjk1MzQyYzg5OTg1ZDZiYjM4YWU0
ZTkxMWFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lk
Z2V0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0
Q2xpZW50LmgKQEAgLTE3Miw2ICsxNzIsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4g
YSBnZXN0dXJlIGV2ZW50IGlzIGhhbmRsZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50LCBib29sIGV2ZW50Q2FuY2Vs
bGVkKSB7IH0KIAorICAgIC8vIENhbGxlZCB3aGVuIFdlYktpdCByZXF1ZXN0cyB0aGUgdG9wIGNv
bnRyb2xzIHRvIGJlIGhpZGRlbi4KKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVRvcENvbnRyb2xzKCkg
eyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViV2lkZ2V0Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAzNDhj
ODczN2QxZWFkMzdmMTVkZDI0NzBiNDVmZWMwZTU4MDY5MDRjLi5iOTFhNjkzZWU2MGQzMjFlODRm
OGUxYzU0ZmY1MWFlNzViMTE2MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNTExLDYgKzUxMSw3IEBAIHZvaWQgQ2hyb21lQ2xp
ZW50SW1wbDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgdXBk
YXRlUmVjdCwKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xv
d1Njcm9sbChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCBib29sIGltbWVkaWF0ZSkKIHsKICAg
ICBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh1cGRhdGVSZWN0LCBpbW1lZGlhdGUpOwor
ICAgIG1fd2ViVmlldy0+aGlkZVRvcENvbnRyb2xzT25TY3JvbGwoKTsKIH0KIAogI2lmIEVOQUJM
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTUzNiw2ICs1MzcsNyBAQCB2b2lkIENocm9t
ZUNsaWVudEltcGw6OnNjcm9sbCgKICAgICB9IGVsc2UKICAgICAgICAgbV93ZWJWaWV3LT5zY3Jv
bGxSb290TGF5ZXJSZWN0KHNjcm9sbERlbHRhLCBjbGlwUmVjdCk7CiAjZW5kaWYKKyAgICBtX3dl
YlZpZXctPmhpZGVUb3BDb250cm9sc09uU2Nyb2xsKCk7CiB9CiAKIEludFBvaW50IENocm9tZUNs
aWVudEltcGw6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDQyMTIwOTA4
ZDQ5ZjU1NTI0OTAwYTBhODU3ZTI2MjVkMzAwOThmMzEuLjIwYTQ5YjQ1OTVjNDVhMDIyZWI3MmEy
MmZmNTUyODNmZTNmZjM1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTQyNzksNiArNDI3OSwyMSBAQCBib29sIFdlYlZpZXdJbXBsOjpkZXRlY3RD
b250ZW50T25Ub3VjaChjb25zdCBXZWJQb2ludCYgcG9zaXRpb24pCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmhpZGVUb3BDb250cm9sc09uU2Nyb2xsKCkKK3sKKyAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCk7Cisg
ICAgRnJhbWUqIGZyYW1lID0gZnJhbWVWaWV3LT5mcmFtZSgpOworICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CisKKyAgICAvLyBXZSB3YW50IHRvIGhpZGUgdGhlIFVS
TCBiYXIgb24gb3JkaW5hcnkgbG9hZCB0eXBlcyAobm90IGJhY2stZm9yd2FyZAorICAgIC8vIG5h
dmlnYXRpb24gLyBwYWdlIHJlbG9hZCkgdGhhdCBhcmUgbm90IG9yaWdpbmF0aW5nIGZyb20gdGhl
IGNvbXBvc2l0b3IuCisgICAgaWYgKGxvYWRlci0+bG9hZFR5cGUoKSA9PSBGcmFtZUxvYWRUeXBl
U3RhbmRhcmQgJiYgZnJhbWVWaWV3LT5pblByb2dyYW1tYXRpY1Njcm9sbCgpKSB7CisgICAgICAg
IC8vIFdlIGhhdmUgYSBwcm9ncmFtbWF0aWMgc2Nyb2xsLCB0aGF0IGhhcyBub3Qgb3JpZ2luYXRl
ZCBmcm9tIHRoZSBjb21wb3NpdG9yLgorICAgICAgICAvLyB0byBoaWRlIHRoZSBsb2NhdGlvbiBi
YXIuCisgICAgICAgIG1fY2xpZW50LT5oaWRlVG9wQ29udHJvbHMoKTsKKyAgICB9Cit9CisKIHZv
aWQgV2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRl
IHZpc2liaWxpdHlTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzSW5pdGlhbFN0YXRlKSB7CiAgICAgaWYgKCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAyODNkNGNmOTJmYzA3Y2IzMmNkYWVlOTY0OWIx
NGEwN2Q1ZTk0ZjgwLi41M2MyODc5NzBiZDg1YTM0NWEyZTQwOGM1NGRmMjI4MmY4NjNlNmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTU0MCw2ICs1NDAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpOwogI2VuZGlmCiAKKyAg
ICB2b2lkIGhpZGVUb3BDb250cm9sc09uU2Nyb2xsKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlzaWJpbGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUsIGJvb2wpOwogCiAgICAgV2Vi
Q29yZTo6UG9wdXBDb250YWluZXIqIHNlbGVjdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3RQb3B1cC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9IaWRlVG9wQ29udHJvbHNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SGlkZVRvcENvbnRyb2xzVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFlYTQ1YTIzMmI3YzAyYzdiZDU0
MWIxN2ZmZDM1NGNiMzA5YWIwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSGlkZVRvcENvbnRyb2xzVGVzdC5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiVVJM
VGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1l
Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSGlzdG9y
eUl0ZW0uaCIKKyNpbmNsdWRlICJXZWJTY3JpcHRTb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJTZXR0
aW5ncy5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlICJXZWJWaWV3Q2xpZW50Lmgi
CisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1
cHBvcnQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrV2ViRnJhbWVDbGllbnQgOiBwdWJsaWMg
V2ViRnJhbWVDbGllbnQgeworfTsKKworY2xhc3MgSGlkZVRvcENvbnRyb2xzVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBIaWRlVG9wQ29udHJvbHNUZXN0KCkKKyAg
ICAgICAgOiBtX2Jhc2VVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vIikKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIFBsYXRmb3JtOjpj
dXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorCisgICAgdm9pZCByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFtZSkKKyAgICB7CisgICAgICAgIFVSTFRlc3RIZWxw
ZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9i
YXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVOYW1lLmNfc3RyKCkpKTsK
KyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBtX2Jhc2VVUkw7CisgICAgTW9ja1dlYkZyYW1lQ2xp
ZW50IG1fbW9ja1dlYkZyYW1lQ2xpZW50OworfTsKKworY2xhc3MgVGVzdEhpZGVUb3BDb250cm9s
c0NsaWVudCA6IHB1YmxpYyBXZWJWaWV3Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBUZXN0SGlkZVRv
cENvbnRyb2xzQ2xpZW50KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgfQorICAgIHZv
aWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgbV9kaWRIaWRlVG9wQ29udHJvbHMgPSBmYWxzZTsK
KyAgICB9CisgICAgYm9vbCBkaWRIaWRlVG9wQ29udHJvbHMoKSBjb25zdCB7IHJldHVybiBtX2Rp
ZEhpZGVUb3BDb250cm9sczsgfQorCisgICAgLy8gV2ViV2lkZ2V0Q2xpZW50OgorICAgIHZpcnR1
YWwgdm9pZCBoaWRlVG9wQ29udHJvbHMoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9kaWRI
aWRlVG9wQ29udHJvbHMgPSB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fZGlk
SGlkZVRvcENvbnRyb2xzOworfTsKKworVEVTVF9GKEhpZGVUb3BDb250cm9sc1Rlc3QsIE5vSGlk
ZU9uVXNlclNjcm9sbCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJzaG9ydF9z
Y3JvbGwuaHRtbCIpOworICAgIFRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQgY2xpZW50OworCisg
ICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRM
b2FkKG1fYmFzZVVSTCArICJzaG9ydF9zY3JvbGwuaHRtbCIsIGZhbHNlLCAwLCAmY2xpZW50KTsK
KyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxl
RmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEw
MDAsIDEwMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKworICAgIFdlYlZpZXdJbXBsKiB3
ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4od2ViVmlldyk7CisgICAgRVhQ
RUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAvLyBOb24gemVy
byBwYWdlIHNjYWxlIGFuZCBzY3JvbGwuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5k
U2NhbGUoV2ViU2l6ZSg5LCAxMyksIDIuMGYpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlk
SGlkZVRvcENvbnRyb2xzKCkpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKworVEVTVF9G
KEhpZGVUb3BDb250cm9sc1Rlc3QsIEhpZGVPblByb2dyYW1tYXRpY1Njcm9sbCkKK3sKKyAgICBy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJsb25nX3Njcm9sbC5odG1sIik7CisgICAgVGVzdEhp
ZGVUb3BDb250cm9sc0NsaWVudCBjbGllbnQ7CisKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJh
bWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImxvbmdfc2Ny
b2xsLmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5z
ZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXct
PnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwor
ICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKKyAgICB3ZWJWaWV3LT5s
YXlvdXQoKTsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdl
YlZpZXdJbXBsKj4od2ViVmlldyk7CisgICAgV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwgPSB3ZWJW
aWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJh
bWVJbXBsLT5mcmFtZVZpZXcoKTsKKworICAgIC8vIFNsb3cgc2Nyb2xsIHBhdGguCisgICAgZnJh
bWVWaWV3LT5zZXRDYW5CbGl0T25TY3JvbGwoZmFsc2UpOworICAgIEVYUEVDVF9GQUxTRShjbGll
bnQuZGlkSGlkZVRvcENvbnRyb2xzKCkpOworICAgIGZyYW1lSW1wbC0+ZXhlY3V0ZVNjcmlwdChX
ZWJTY3JpcHRTb3VyY2UoIndpbmRvdy5zY3JvbGxUbygwLCAyMCk7IikpOworICAgIEVYUEVDVF9U
UlVFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisK
KyAgICAvLyBGYXN0IHNjcm9sbCBwYXRoLgorICAgIGZyYW1lSW1wbC0+ZnJhbWVWaWV3KCktPnNl
dENhbkJsaXRPblNjcm9sbCh0cnVlKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVU
b3BDb250cm9scygpKTsKKyAgICBmcmFtZUltcGwtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291
cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjEpOyIpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQu
ZGlkSGlkZVRvcENvbnRyb2xzKCkpOworICAgIGNsaWVudC5yZXNldCgpOworfQorICAgIAorVEVT
VF9GKEhpZGVUb3BDb250cm9sc1Rlc3QsIE5vSGlkZU9uTmF2aWdhdGlvbikKK3sKKyAgICByZWdp
c3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJsb25nX3Njcm9sbC5odG1sIik7CisgICAgcmVnaXN0ZXJN
b2NrZWRIdHRwVVJMTG9hZCgiaGVsbG9fd29ybGQuaHRtbCIpOworCisgICAgVGVzdEhpZGVUb3BD
b250cm9sc0NsaWVudCBjbGllbnQ7CisKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gc3RhdGljX2Nh
c3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCht
X2Jhc2VVUkwgKyAiaGVsbG9fd29ybGQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3
ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9y
KHRydWUpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEw
MDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKworICAgIC8vIE1ha2UgdGhlIHBhZ2Ugc2Nh
bGUgYW5kIHNjcm9sbCB3aXRoIHRoZSBnaXZlbiBwYXJlbWV0ZXJzLgorICAgIHdlYlZpZXctPnNl
dFBhZ2VTY2FsZUZhY3RvcigyLjBmLCBXZWJQb2ludCgxMTYsIDg0KSk7CisgICAgRVhQRUNUX0ZB
TFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAvLyBOYXZpZ2F0ZSB0byBh
bm90aGVyIHBhZ2UuCisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViVmlldy0+bWFpbkZyYW1l
KCk7CisgICAgRnJhbWVUZXN0SGVscGVyczo6bG9hZEZyYW1lKHdlYkZyYW1lLCBtX2Jhc2VVUkwg
KyAibG9uZ19zY3JvbGwuaHRtbCIpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0
U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgRVhQRUNU
X0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAvLyBDaGFuZ2UgdGhl
IHNjcm9sbCBwb3NpdGlvbiwgc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgY2hhbmdlIGluIHNjcm9s
bCBwb3NpdGlvbgorICAgIC8vIG9uIHJlc3RvcmUuCisgICAgd2ViVmlldy0+c2V0UGFnZVNjYWxl
RmFjdG9yKDEuNWYsIFdlYlBvaW50KDE2LCAyNCkpOworCisgICAgV2ViSGlzdG9yeUl0ZW0gZmly
c3RQYWdlID0gd2ViRnJhbWUtPmN1cnJlbnRIaXN0b3J5SXRlbSgpOworCisgICAgLy8gTmF2aWdh
dGUgYmFja3dhcmRzLgorICAgIHdlYkZyYW1lLT5sb2FkSGlzdG9yeUl0ZW0od2ViRnJhbWUtPnBy
ZXZpb3VzSGlzdG9yeUl0ZW0oKSk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RT
dXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoY2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsKKworICAgIC8vIE5hdmlnYXRlIGZv
cndhcmRzLgorICAgIHdlYkZyYW1lLT5sb2FkSGlzdG9yeUl0ZW0oZmlyc3RQYWdlKTsKKyAgICBQ
bGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3luY2hyb25vdXNN
b2NrZWRSZXF1ZXN0cygpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlkSGlkZVRvcENvbnRy
b2xzKCkpOworCisgICAgLy8gUmVsb2FkLgorICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5yZWxv
YWQoKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVB
c3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlk
SGlkZVRvcENvbnRyb2xzKCkpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193875</attachid>
            <date>2013-03-19 11:24:55 -0700</date>
            <delta_ts>2013-03-21 12:00:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130319182045.patch</filename>
            <type>text/plain</type>
            <size>12286</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDI3OWI4YjdiODI2MjgwZjI5OWI5NTcyYTRlZTI0NmFiZmY4NTA1ZjcuLjcyZTkwOTg4ZDI5Yjlm
YWVlZDE5Mjc3OTA5OTAyMzNiZWZmY2YzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDMtMDQgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBIaWRlIHRoZSBsb2NhdGlvbiBiYXIg
b24gV2ViS2l0IHNjcm9sbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzAyNworCisgICAgICAgIEhpZGUgdGhlIGxvY2F0aW9uIGJhciB3aGVuIFdl
YktpdCBzY3JvbGxzLCBzbyB0aGF0IHNpdGVzCisgICAgICAgIHVzaW5nIHdpbmRvdy5zY3JvbGxU
bygwLDEpIGNhbiBwcm9ncmFtbWF0aWNhbGx5IHJlcXVlc3QKKyAgICAgICAgdGhhdCB0aGUgbG9j
YXRpb24gYmFyIGJlIGhpZGRlbi4KKworICAgICAgICBPbiBpbml0aWFsIHBhZ2UgbG9hZCwgaWYg
dGhlIHBhZ2UgcGVyZm9ybXMgYSB3aW5kb3cuc2Nyb2xsVG8oMCwwKQorICAgICAgICB0aGUgbG9j
YXRpb24gYmFyIHdpbGwgbm90IGJlIGhpZGRlbiBiZWNhdXNlIG5vIHNjcm9sbCB3aWxsIGJlCisg
ICAgICAgIGVmZmVjdGVkIChzaW5jZSB0aGUgcGFnZSBpcyBhbHJlYWR5IGF0IHRoZSBnaXZlbiBs
b2NhdGlvbikuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lkZ2V0Q2xpZW50Lmg6Cisg
ICAgICAgIChXZWJXaWRnZXRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXRDbGll
bnQ6OmhpZGVUb3BDb250cm9scyk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjppbnZhbGlkYXRlQ29udGVudHNG
b3JTbG93U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6c2Nyb2xs
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6aGlkZVRvcENvbnRyb2xzT25TY3JvbGwpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAg
ICAgKiB0ZXN0cy9IaWRlVG9wQ29udHJvbHNUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoSGlkZVRvcENvbnRyb2xzVGVzdCk6CisgICAgICAgIChXZWJLaXQ6Okhp
ZGVUb3BDb250cm9sc1Rlc3Q6OkhpZGVUb3BDb250cm9sc1Rlc3QpOgorICAgICAgICAoV2ViS2l0
OjpIaWRlVG9wQ29udHJvbHNUZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OkhpZGVU
b3BDb250cm9sc1Rlc3Q6OnJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQpOgorICAgICAgICAoVGVz
dEhpZGVUb3BDb250cm9sc0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RIaWRlVG9wQ29u
dHJvbHNDbGllbnQ6OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpUZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlRl
c3RIaWRlVG9wQ29udHJvbHNDbGllbnQ6OmRpZEhpZGVUb3BDb250cm9scyk6CisgICAgICAgIChX
ZWJLaXQ6OlRFU1RfRik6CisKIDIwMTMtMDMtMTggIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xl
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIE5DQ0ggY29kZSB0
aGF0IHJlbGllcyBvbiBib3VuZHNDb250YWluc1BhZ2VTY2FsZSgpLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cGkKaW5kZXggODljODI1OTNmY2FhMTA4MDAxZjNmM2E2OTQ1ZmQzZDM5ZGQwZjI5
Mi4uNDhkODcyNTM5ZWJmMDg0OGRlZTE0ODQ1OGM1NGNjY2U1M2ZkZDdhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCkBAIC03Myw2ICs3Myw3IEBACiAgICAgICAgICAgICAndGVzdHMv
RnJhbWVUZXN0SGVscGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9HSUZJbWFnZURlY29kZXJU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5j
cHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0hpZGVUb3BDb250cm9sc1Rlc3QuY3BwJywKICAgICAg
ICAgICAgICd0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCQmlu
ZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYldpZGdldENsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViV2lkZ2V0Q2xpZW50LmgKaW5kZXggYjY4YzVlY2M3NWNiZDRjZGI5YzJkNzMyMzhlODY0
MGViYTBjYTI4NC4uY2Y5MmQyMTY1YzZhMjk1MzQyYzg5OTg1ZDZiYjM4YWU0ZTkxMWFkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKQEAg
LTE3Miw2ICsxNzIsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBnZXN0dXJlIGV2
ZW50IGlzIGhhbmRsZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50LCBib29sIGV2ZW50Q2FuY2VsbGVkKSB7IH0KIAor
ICAgIC8vIENhbGxlZCB3aGVuIFdlYktpdCByZXF1ZXN0cyB0aGUgdG9wIGNvbnRyb2xzIHRvIGJl
IGhpZGRlbi4KKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVRvcENvbnRyb2xzKCkgeyB9CisKIHByb3Rl
Y3RlZDoKICAgICB+V2ViV2lkZ2V0Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAzNDhjODczN2QxZWFkMzdm
MTVkZDI0NzBiNDVmZWMwZTU4MDY5MDRjLi5iOTFhNjkzZWU2MGQzMjFlODRmOGUxYzU0ZmY1MWFl
NzViMTE2MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcApAQCAtNTExLDYgKzUxMSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6aW52
YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwKIHZv
aWQgQ2hyb21lQ2xpZW50SW1wbDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25z
dCBJbnRSZWN0JiB1cGRhdGVSZWN0LCBib29sIGltbWVkaWF0ZSkKIHsKICAgICBpbnZhbGlkYXRl
Q29udGVudHNBbmRSb290Vmlldyh1cGRhdGVSZWN0LCBpbW1lZGlhdGUpOworICAgIG1fd2ViVmll
dy0+aGlkZVRvcENvbnRyb2xzT25TY3JvbGwoKTsKIH0KIAogI2lmIEVOQUJMRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkKQEAgLTUzNiw2ICs1MzcsNyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6
OnNjcm9sbCgKICAgICB9IGVsc2UKICAgICAgICAgbV93ZWJWaWV3LT5zY3JvbGxSb290TGF5ZXJS
ZWN0KHNjcm9sbERlbHRhLCBjbGlwUmVjdCk7CiAjZW5kaWYKKyAgICBtX3dlYlZpZXctPmhpZGVU
b3BDb250cm9sc09uU2Nyb2xsKCk7CiB9CiAKIEludFBvaW50IENocm9tZUNsaWVudEltcGw6OnNj
cmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDQyMTIwOTA4ZDQ5ZjU1NTI0OTAw
YTBhODU3ZTI2MjVkMzAwOThmMzEuLjgzMTc5Zjg2YTdkZDcwZTc4MTQzMmUyZmZjZjE4NjdjZmVh
MDRjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTQyNzksNiArNDI3OSwyNyBAQCBib29sIFdlYlZpZXdJbXBsOjpkZXRlY3RDb250ZW50T25Ub3Vj
aChjb25zdCBXZWJQb2ludCYgcG9zaXRpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
V2ViVmlld0ltcGw6OmhpZGVUb3BDb250cm9sc09uU2Nyb2xsKCkKK3sKKyAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCk7CisgICAgRnJhbWUqIGZy
YW1lID0gZnJhbWVWaWV3LT5mcmFtZSgpOworICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFt
ZS0+bG9hZGVyKCk7CisKKyAgICAvLyBIaWRlIG9ubHkgb24gcHJvZ3JhbW1hdGljIHNjcm9sbHMu
CisgICAgaWYgKCFmcmFtZVZpZXctPmluUHJvZ3JhbW1hdGljU2Nyb2xsKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIElmIHJlc3RvcmluZyB0aGUgc2Nyb2xsIG9mZnNldCAoaW5kaWNhdGVk
IGJ5IG5vbiBzdGFuZGFyZCBsb2FkIHR5cGUpLAorICAgIC8vIGhpZGUgdGhlIHRvcCBjb250cm9s
cyBpZiB0aGUgc2Nyb2xsIHBvc2l0aW9uIGlzICgwLDEpLiBJbiB0aGUgZnV0dXJlLAorICAgIC8v
IGNoYW5nZSB0aGlzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIHRvcCBjb250cm9scyBwb3NpdGlv
biBpbiB0aGUgaGlzdG9yeQorICAgIC8vIGl0ZW0uCisgICAgSW50UG9pbnQgemVyb09uZSgwLCAx
KTsKKyAgICBpZiAobG9hZGVyLT5sb2FkVHlwZSgpICE9IEZyYW1lTG9hZFR5cGVTdGFuZGFyZCAm
JiBmcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkgIT0gemVyb09uZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9jbGllbnQtPmhpZGVUb3BDb250cm9scygpOworfQorCiB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0luaXRp
YWxTdGF0ZSkgewogICAgIGlmICghcGFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKaW5kZXggMjgzZDRjZjkyZmMwN2NiMzJjZGFlZTk2NDliMTRhMDdkNWU5NGY4
MC4uNTNjMjg3OTcwYmQ4NWEzNDVhMmU0MDhjNTRkZjIyODJmODYzZTZmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC01NDAsNiArNTQwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCBoaWRl
VG9wQ29udHJvbHNPblNjcm9sbCgpOworCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2liaWxpdHlT
dGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sKTsKIAogICAgIFdlYkNvcmU6OlBvcHVw
Q29udGFpbmVyKiBzZWxlY3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSGlkZVRvcENv
bnRyb2xzVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0hpZGVUb3BDb250
cm9sc1Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmI0M2MyYzNkYTM1N2Q1Y2E3OTczNTdhYmQ3OWMz
ODUzZjA5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0hpZGVUb3BDb250cm9sc1Rlc3QuY3BwCkBAIC0wLDAgKzEsMTgxIEBACisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJz
LmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgor
I2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCisj
aW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgiCisjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKKyNp
bmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorI2luY2x1ZGUg
IldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJs
aWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVW5pdFRlc3RTdXBwb3J0Lmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFt
ZXNwYWNlIHsKKworY2xhc3MgTW9ja1dlYkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xp
ZW50IHsKK307CisKK2NsYXNzIEhpZGVUb3BDb250cm9sc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CitwdWJsaWM6CisgICAgSGlkZVRvcENvbnRyb2xzVGVzdCgpCisgICAgICAgIDogbV9i
YXNlVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tLyIpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51
bml0VGVzdFN1cHBvcnQoKS0+dW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICB9CisKK3By
b3RlY3RlZDoKKworICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZChjb25zdCBzdGQ6
OnN0cmluZyYgZmlsZU5hbWUpCisgICAgeworICAgICAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0
ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0
cigpKSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlTmFtZS5jX3N0cigpKSk7CisgICAgfQorCisg
ICAgc3RkOjpzdHJpbmcgbV9iYXNlVVJMOworICAgIE1vY2tXZWJGcmFtZUNsaWVudCBtX21vY2tX
ZWJGcmFtZUNsaWVudDsKK307CisKK2NsYXNzIFRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQgOiBw
dWJsaWMgV2ViVmlld0NsaWVudCB7CitwdWJsaWM6CisgICAgVGVzdEhpZGVUb3BDb250cm9sc0Ns
aWVudCgpCisgICAgeworICAgICAgICByZXNldCgpOworICAgIH0KKyAgICB2b2lkIHJlc2V0KCkK
KyAgICB7CisgICAgICAgIG1fZGlkSGlkZVRvcENvbnRyb2xzID0gZmFsc2U7CisgICAgfQorICAg
IGJvb2wgZGlkSGlkZVRvcENvbnRyb2xzKCkgY29uc3QgeyByZXR1cm4gbV9kaWRIaWRlVG9wQ29u
dHJvbHM7IH0KKworICAgIC8vIFdlYldpZGdldENsaWVudDoKKyAgICB2aXJ0dWFsIHZvaWQgaGlk
ZVRvcENvbnRyb2xzKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fZGlkSGlkZVRvcENvbnRy
b2xzID0gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2RpZEhpZGVUb3BDb250
cm9sczsKK307CisKK1RFU1RfRihIaWRlVG9wQ29udHJvbHNUZXN0LCBOb0hpZGVPblVzZXJTY3Jv
bGwpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgic2hvcnRfc2Nyb2xsLmh0bWwi
KTsKKyAgICBUZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50IGNsaWVudDsKKworICAgIFdlYlZpZXcq
IHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VV
UkwgKyAic2hvcnRfc2Nyb2xsLmh0bWwiLCBmYWxzZSwgMCwgJmNsaWVudCk7CisgICAgd2ViVmll
dy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVl
KTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29t
cG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgxMDAwLCAxMDAwKSk7
CisgICAgd2ViVmlldy0+bGF5b3V0KCk7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwg
PSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHdlYlZpZXcpOworICAgIEVYUEVDVF9GQUxTRShj
bGllbnQuZGlkSGlkZVRvcENvbnRyb2xzKCkpOworCisgICAgLy8gTm9uIHplcm8gcGFnZSBzY2Fs
ZSBhbmQgc2Nyb2xsLgorICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNp
emUoOSwgMTMpLCAyLjBmKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVUb3BDb250
cm9scygpKTsKKworICAgIHdlYlZpZXctPmNsb3NlKCk7Cit9CisKK1RFU1RfRihIaWRlVG9wQ29u
dHJvbHNUZXN0LCBIaWRlT25Qcm9ncmFtbWF0aWNTY3JvbGwpCit7CisgICAgcmVnaXN0ZXJNb2Nr
ZWRIdHRwVVJMTG9hZCgibG9uZ19zY3JvbGwuaHRtbCIpOworICAgIFRlc3RIaWRlVG9wQ29udHJv
bHNDbGllbnQgY2xpZW50OworCisgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBl
cnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJsb25nX3Njcm9sbC5odG1sIiwg
dHJ1ZSwgMCwgJmNsaWVudCk7CisgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygp
LT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3
LT5yZXNpemUoV2ViU2l6ZSgxMDAwLCAxMDAwKSk7CisgICAgd2ViVmlldy0+bGF5b3V0KCk7CisK
KyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+
KHdlYlZpZXcpOworICAgIFdlYkZyYW1lSW1wbCogZnJhbWVJbXBsID0gd2ViVmlld0ltcGwtPm1h
aW5GcmFtZUltcGwoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lSW1wbC0+ZnJh
bWVWaWV3KCk7CisKKyAgICAvLyBTbG93IHNjcm9sbCBwYXRoLgorICAgIGZyYW1lVmlldy0+c2V0
Q2FuQmxpdE9uU2Nyb2xsKGZhbHNlKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVU
b3BDb250cm9scygpKTsKKyAgICBmcmFtZUltcGwtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291
cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjApOyIpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQu
ZGlkSGlkZVRvcENvbnRyb2xzKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gRmFz
dCBzY3JvbGwgcGF0aC4KKyAgICBmcmFtZUltcGwtPmZyYW1lVmlldygpLT5zZXRDYW5CbGl0T25T
Y3JvbGwodHJ1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMo
KSk7CisgICAgZnJhbWVJbXBsLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgid2luZG93
LnNjcm9sbFRvKDAsIDIxKTsiKSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LmRpZEhpZGVUb3BD
b250cm9scygpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKK30KKworVEVTVF9GKEhpZGVUb3BDb250
cm9sc1Rlc3QsIE5vSGlkZU9uTmF2aWdhdGlvbikKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBV
UkxMb2FkKCJsb25nX3Njcm9sbC5odG1sIik7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9h
ZCgiaGVsbG9fd29ybGQuaHRtbCIpOworCisgICAgVGVzdEhpZGVUb3BDb250cm9sc0NsaWVudCBj
bGllbnQ7CisKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwq
PihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiaGVs
bG9fd29ybGQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5n
cygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdl
YlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRy
dWUpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKKyAgICB3ZWJW
aWV3LT5sYXlvdXQoKTsKKworICAgIC8vIE1ha2UgdGhlIHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbCB3
aXRoIHRoZSBnaXZlbiBwYXJlbWV0ZXJzLgorICAgIHdlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3Rv
cigyLjBmLCBXZWJQb2ludCgxMTYsIDg0KSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRI
aWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAvLyBOYXZpZ2F0ZSB0byBhbm90aGVyIHBhZ2UuCisg
ICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViVmlldy0+bWFpbkZyYW1lKCk7CisgICAgRnJhbWVU
ZXN0SGVscGVyczo6bG9hZEZyYW1lKHdlYkZyYW1lLCBtX2Jhc2VVUkwgKyAibG9uZ19zY3JvbGwu
aHRtbCIpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2
ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5k
aWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAvLyBDaGFuZ2UgdGhlIHNjcm9sbCBwb3NpdGlv
biwgc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgY2hhbmdlIGluIHNjcm9sbCBwb3NpdGlvbgorICAg
IC8vIG9uIHJlc3RvcmUuCisgICAgd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yKDEuNWYsIFdl
YlBvaW50KDE2LCAyNCkpOworCisgICAgV2ViSGlzdG9yeUl0ZW0gZmlyc3RQYWdlID0gd2ViRnJh
bWUtPmN1cnJlbnRIaXN0b3J5SXRlbSgpOworCisgICAgLy8gTmF2aWdhdGUgYmFja3dhcmRzLgor
ICAgIHdlYkZyYW1lLT5sb2FkSGlzdG9yeUl0ZW0od2ViRnJhbWUtPnByZXZpb3VzSGlzdG9yeUl0
ZW0oKSk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZl
QXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRp
ZEhpZGVUb3BDb250cm9scygpKTsKKworICAgIC8vIE5hdmlnYXRlIGZvcndhcmRzLgorICAgIHdl
YkZyYW1lLT5sb2FkSGlzdG9yeUl0ZW0oZmlyc3RQYWdlKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVu
dCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygp
OworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlkSGlkZVRvcENvbnRyb2xzKCkpOworCisgICAg
Ly8gUmVsb2FkLgorICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5yZWxvYWQoKTsKKyAgICBQbGF0
Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3luY2hyb25vdXNNb2Nr
ZWRSZXF1ZXN0cygpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlkSGlkZVRvcENvbnRyb2xz
KCkpOworCisgICAgLy8gU2Nyb2xsIHRvICgwLDEpLiBTaG91bGQgaGlkZSB0aGUgdG9wIGNvbnRy
b2xzLgorICAgIHdlYkZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgid2luZG93
LnNjcm9sbFRvKDAsIDEpOyIpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQuZGlkSGlkZVRvcENv
bnRyb2xzKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gUmVsb2FkLiBSZWxvYWRz
IHRvIGZvciBwYWdlcyBzY3JvbGxlZCB0byAoMCwxKSBzaG91bGQgaGlkZSB0aGUgdG9wIGNvbnRy
b2xzLgorICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5yZWxvYWQoKTsKKyAgICBQbGF0Zm9ybTo6
Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1
ZXN0cygpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisK
KyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193884</attachid>
            <date>2013-03-19 11:48:22 -0700</date>
            <delta_ts>2013-03-22 11:36:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130319184412.patch</filename>
            <type>text/plain</type>
            <size>13527</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDI3OWI4YjdiODI2MjgwZjI5OWI5NTcyYTRlZTI0NmFiZmY4NTA1ZjcuLjcyZTkwOTg4ZDI5Yjlm
YWVlZDE5Mjc3OTA5OTAyMzNiZWZmY2YzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDMtMDQgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBIaWRlIHRoZSBsb2NhdGlvbiBiYXIg
b24gV2ViS2l0IHNjcm9sbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzAyNworCisgICAgICAgIEhpZGUgdGhlIGxvY2F0aW9uIGJhciB3aGVuIFdl
YktpdCBzY3JvbGxzLCBzbyB0aGF0IHNpdGVzCisgICAgICAgIHVzaW5nIHdpbmRvdy5zY3JvbGxU
bygwLDEpIGNhbiBwcm9ncmFtbWF0aWNhbGx5IHJlcXVlc3QKKyAgICAgICAgdGhhdCB0aGUgbG9j
YXRpb24gYmFyIGJlIGhpZGRlbi4KKworICAgICAgICBPbiBpbml0aWFsIHBhZ2UgbG9hZCwgaWYg
dGhlIHBhZ2UgcGVyZm9ybXMgYSB3aW5kb3cuc2Nyb2xsVG8oMCwwKQorICAgICAgICB0aGUgbG9j
YXRpb24gYmFyIHdpbGwgbm90IGJlIGhpZGRlbiBiZWNhdXNlIG5vIHNjcm9sbCB3aWxsIGJlCisg
ICAgICAgIGVmZmVjdGVkIChzaW5jZSB0aGUgcGFnZSBpcyBhbHJlYWR5IGF0IHRoZSBnaXZlbiBs
b2NhdGlvbikuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lkZ2V0Q2xpZW50Lmg6Cisg
ICAgICAgIChXZWJXaWRnZXRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXRDbGll
bnQ6OmhpZGVUb3BDb250cm9scyk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjppbnZhbGlkYXRlQ29udGVudHNG
b3JTbG93U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6c2Nyb2xs
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6aGlkZVRvcENvbnRyb2xzT25TY3JvbGwpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAg
ICAgKiB0ZXN0cy9IaWRlVG9wQ29udHJvbHNUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoSGlkZVRvcENvbnRyb2xzVGVzdCk6CisgICAgICAgIChXZWJLaXQ6Okhp
ZGVUb3BDb250cm9sc1Rlc3Q6OkhpZGVUb3BDb250cm9sc1Rlc3QpOgorICAgICAgICAoV2ViS2l0
OjpIaWRlVG9wQ29udHJvbHNUZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OkhpZGVU
b3BDb250cm9sc1Rlc3Q6OnJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQpOgorICAgICAgICAoVGVz
dEhpZGVUb3BDb250cm9sc0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RIaWRlVG9wQ29u
dHJvbHNDbGllbnQ6OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpUZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlRl
c3RIaWRlVG9wQ29udHJvbHNDbGllbnQ6OmRpZEhpZGVUb3BDb250cm9scyk6CisgICAgICAgIChX
ZWJLaXQ6OlRFU1RfRik6CisKIDIwMTMtMDMtMTggIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xl
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIE5DQ0ggY29kZSB0
aGF0IHJlbGllcyBvbiBib3VuZHNDb250YWluc1BhZ2VTY2FsZSgpLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cGkKaW5kZXggODljODI1OTNmY2FhMTA4MDAxZjNmM2E2OTQ1ZmQzZDM5ZGQwZjI5
Mi4uNDhkODcyNTM5ZWJmMDg0OGRlZTE0ODQ1OGM1NGNjY2U1M2ZkZDdhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCkBAIC03Myw2ICs3Myw3IEBACiAgICAgICAgICAgICAndGVzdHMv
RnJhbWVUZXN0SGVscGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9HSUZJbWFnZURlY29kZXJU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5j
cHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0hpZGVUb3BDb250cm9sc1Rlc3QuY3BwJywKICAgICAg
ICAgICAgICd0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCQmlu
ZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYldpZGdldENsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViV2lkZ2V0Q2xpZW50LmgKaW5kZXggYjY4YzVlY2M3NWNiZDRjZGI5YzJkNzMyMzhlODY0
MGViYTBjYTI4NC4uY2Y5MmQyMTY1YzZhMjk1MzQyYzg5OTg1ZDZiYjM4YWU0ZTkxMWFkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKQEAg
LTE3Miw2ICsxNzIsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBnZXN0dXJlIGV2
ZW50IGlzIGhhbmRsZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50LCBib29sIGV2ZW50Q2FuY2VsbGVkKSB7IH0KIAor
ICAgIC8vIENhbGxlZCB3aGVuIFdlYktpdCByZXF1ZXN0cyB0aGUgdG9wIGNvbnRyb2xzIHRvIGJl
IGhpZGRlbi4KKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVRvcENvbnRyb2xzKCkgeyB9CisKIHByb3Rl
Y3RlZDoKICAgICB+V2ViV2lkZ2V0Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAzNDhjODczN2QxZWFkMzdm
MTVkZDI0NzBiNDVmZWMwZTU4MDY5MDRjLi5iOTFhNjkzZWU2MGQzMjFlODRmOGUxYzU0ZmY1MWFl
NzViMTE2MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcApAQCAtNTExLDYgKzUxMSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6aW52
YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwKIHZv
aWQgQ2hyb21lQ2xpZW50SW1wbDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25z
dCBJbnRSZWN0JiB1cGRhdGVSZWN0LCBib29sIGltbWVkaWF0ZSkKIHsKICAgICBpbnZhbGlkYXRl
Q29udGVudHNBbmRSb290Vmlldyh1cGRhdGVSZWN0LCBpbW1lZGlhdGUpOworICAgIG1fd2ViVmll
dy0+aGlkZVRvcENvbnRyb2xzT25TY3JvbGwoKTsKIH0KIAogI2lmIEVOQUJMRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkKQEAgLTUzNiw2ICs1MzcsNyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6
OnNjcm9sbCgKICAgICB9IGVsc2UKICAgICAgICAgbV93ZWJWaWV3LT5zY3JvbGxSb290TGF5ZXJS
ZWN0KHNjcm9sbERlbHRhLCBjbGlwUmVjdCk7CiAjZW5kaWYKKyAgICBtX3dlYlZpZXctPmhpZGVU
b3BDb250cm9sc09uU2Nyb2xsKCk7CiB9CiAKIEludFBvaW50IENocm9tZUNsaWVudEltcGw6OnNj
cmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDQyMTIwOTA4ZDQ5ZjU1NTI0OTAw
YTBhODU3ZTI2MjVkMzAwOThmMzEuLjgzMTc5Zjg2YTdkZDcwZTc4MTQzMmUyZmZjZjE4NjdjZmVh
MDRjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTQyNzksNiArNDI3OSwyNyBAQCBib29sIFdlYlZpZXdJbXBsOjpkZXRlY3RDb250ZW50T25Ub3Vj
aChjb25zdCBXZWJQb2ludCYgcG9zaXRpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
V2ViVmlld0ltcGw6OmhpZGVUb3BDb250cm9sc09uU2Nyb2xsKCkKK3sKKyAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCk7CisgICAgRnJhbWUqIGZy
YW1lID0gZnJhbWVWaWV3LT5mcmFtZSgpOworICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFt
ZS0+bG9hZGVyKCk7CisKKyAgICAvLyBIaWRlIG9ubHkgb24gcHJvZ3JhbW1hdGljIHNjcm9sbHMu
CisgICAgaWYgKCFmcmFtZVZpZXctPmluUHJvZ3JhbW1hdGljU2Nyb2xsKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIElmIHJlc3RvcmluZyB0aGUgc2Nyb2xsIG9mZnNldCAoaW5kaWNhdGVk
IGJ5IG5vbiBzdGFuZGFyZCBsb2FkIHR5cGUpLAorICAgIC8vIGhpZGUgdGhlIHRvcCBjb250cm9s
cyBpZiB0aGUgc2Nyb2xsIHBvc2l0aW9uIGlzICgwLDEpLiBJbiB0aGUgZnV0dXJlLAorICAgIC8v
IGNoYW5nZSB0aGlzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIHRvcCBjb250cm9scyBwb3NpdGlv
biBpbiB0aGUgaGlzdG9yeQorICAgIC8vIGl0ZW0uCisgICAgSW50UG9pbnQgemVyb09uZSgwLCAx
KTsKKyAgICBpZiAobG9hZGVyLT5sb2FkVHlwZSgpICE9IEZyYW1lTG9hZFR5cGVTdGFuZGFyZCAm
JiBmcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkgIT0gemVyb09uZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9jbGllbnQtPmhpZGVUb3BDb250cm9scygpOworfQorCiB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0luaXRp
YWxTdGF0ZSkgewogICAgIGlmICghcGFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKaW5kZXggMjgzZDRjZjkyZmMwN2NiMzJjZGFlZTk2NDliMTRhMDdkNWU5NGY4
MC4uNTNjMjg3OTcwYmQ4NWEzNDVhMmU0MDhjNTRkZjIyODJmODYzZTZmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC01NDAsNiArNTQwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCBoaWRl
VG9wQ29udHJvbHNPblNjcm9sbCgpOworCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2liaWxpdHlT
dGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sKTsKIAogICAgIFdlYkNvcmU6OlBvcHVw
Q29udGFpbmVyKiBzZWxlY3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSGlkZVRvcENv
bnRyb2xzVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0hpZGVUb3BDb250
cm9sc1Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MGNiMGU2MmM5OGYyYzI4N2I2ODg4ZTQ3YzgyMzBj
NzNiMTBhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0hpZGVUb3BDb250cm9sc1Rlc3QuY3BwCkBAIC0wLDAgKzEsMjE2IEBACisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJz
LmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgor
I2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCisj
aW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgor
I2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUg
IldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgorI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlVuaXRUZXN0U3VwcG9ydC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIE1vY2tXZWJGcmFt
ZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7Cit9OworCitjbGFzcyBIaWRlVG9wQ29u
dHJvbHNUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIEhpZGVUb3BD
b250cm9sc1Rlc3QoKQorICAgICAgICA6IG1fYmFzZVVSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS8i
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnVucmVnaXN0ZXJB
bGxNb2NrZWRVUkxzKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisKKyAgICB2b2lkIHJlZ2lzdGVy
TW9ja2VkSHR0cFVSTExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKQorICAgIHsKKyAg
ICAgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3Ry
aW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoZmls
ZU5hbWUuY19zdHIoKSkpOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIG1fYmFzZVVSTDsKKyAg
ICBNb2NrV2ViRnJhbWVDbGllbnQgbV9tb2NrV2ViRnJhbWVDbGllbnQ7Cit9OworCitjbGFzcyBU
ZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50IDogcHVibGljIFdlYlZpZXdDbGllbnQgeworcHVibGlj
OgorICAgIFRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQoKQorICAgIHsKKyAgICAgICAgcmVzZXQo
KTsKKyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBtX2RpZEhpZGVUb3BD
b250cm9scyA9IGZhbHNlOworICAgIH0KKyAgICBib29sIGRpZEhpZGVUb3BDb250cm9scygpIGNv
bnN0IHsgcmV0dXJuIG1fZGlkSGlkZVRvcENvbnRyb2xzOyB9CisKKyAgICAvLyBXZWJXaWRnZXRD
bGllbnQ6CisgICAgdmlydHVhbCB2b2lkIGhpZGVUb3BDb250cm9scygpIE9WRVJSSURFCisgICAg
eworICAgICAgICBtX2RpZEhpZGVUb3BDb250cm9scyA9IHRydWU7CisgICAgfQorCitwcml2YXRl
OgorICAgIGJvb2wgbV9kaWRIaWRlVG9wQ29udHJvbHM7Cit9OworCitURVNUX0YoSGlkZVRvcENv
bnRyb2xzVGVzdCwgTm9IaWRlT25Vc2VyU2Nyb2xsKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0
cFVSTExvYWQoInNob3J0X3Njcm9sbC5odG1sIik7CisgICAgVGVzdEhpZGVUb3BDb250cm9sc0Ns
aWVudCBjbGllbnQ7CisKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6
Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgInNob3J0X3Njcm9sbC5odG1sIiwgZmFs
c2UsIDAsICZjbGllbnQpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNl
U2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+
c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+
cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgpOworCisg
ICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPih3
ZWJWaWV3KTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsK
KworICAgIC8vIE5vbiB6ZXJvIHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbC4KKyAgICB3ZWJWaWV3SW1w
bC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKDksIDEzKSwgMi4wZik7CisgICAgRVhQRUNU
X0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICB3ZWJWaWV3LT5jbG9z
ZSgpOworfQorCitURVNUX0YoSGlkZVRvcENvbnRyb2xzVGVzdCwgSGlkZU9uUHJvZ3JhbW1hdGlj
U2Nyb2xsKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImxvbmdfc2Nyb2xsLmh0
bWwiKTsKKyAgICBUZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50IGNsaWVudDsKKworICAgIFdlYlZp
ZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAibG9uZ19zY3JvbGwuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpOworICAgIHdlYlZp
ZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1
ZSk7CisgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkp
OworICAgIHdlYlZpZXctPmxheW91dCgpOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBs
ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPih3ZWJWaWV3KTsKKyAgICBXZWJGcmFtZUltcGwq
IGZyYW1lSW1wbCA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCk7CisgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBmcmFtZUltcGwtPmZyYW1lVmlldygpOworCisgICAgLy8gU2xvdyBzY3Jv
bGwgcGF0aC4KKyAgICBmcmFtZVZpZXctPnNldENhbkJsaXRPblNjcm9sbChmYWxzZSk7CisgICAg
RVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisgICAgZnJhbWVJbXBs
LT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgid2luZG93LnNjcm9sbFRvKDAsIDIwKTsi
KSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsKKyAgICBj
bGllbnQucmVzZXQoKTsKKworICAgIC8vIEZhc3Qgc2Nyb2xsIHBhdGguCisgICAgZnJhbWVJbXBs
LT5mcmFtZVZpZXcoKS0+c2V0Q2FuQmxpdE9uU2Nyb2xsKHRydWUpOworICAgIEVYUEVDVF9GQUxT
RShjbGllbnQuZGlkSGlkZVRvcENvbnRyb2xzKCkpOworICAgIGZyYW1lSW1wbC0+ZXhlY3V0ZVNj
cmlwdChXZWJTY3JpcHRTb3VyY2UoIndpbmRvdy5zY3JvbGxUbygwLCAyMSk7IikpOworICAgIEVY
UEVDVF9UUlVFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisgICAgY2xpZW50LnJlc2V0
KCk7CisKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCitURVNUX0YoSGlkZVRvcENvbnRyb2xz
VGVzdCwgTm9IaWRlT25Vc2VyU2Nyb2xsT25NYWluVGhyZWFkKQoreworICAgIHJlZ2lzdGVyTW9j
a2VkSHR0cFVSTExvYWQoImxvbmdfc2Nyb2xsLmh0bWwiKTsKKyAgICBUZXN0SGlkZVRvcENvbnRy
b2xzQ2xpZW50IGNsaWVudDsKKworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxw
ZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAibG9uZ19zY3JvbGwuaHRtbCIs
IHRydWUsIDAsICZjbGllbnQpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2
aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmll
dy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgpOwor
CisgICAgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmU7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5w
dXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOworICAgIHdlYlZpZXctPmhhbmRsZUlucHV0RXZl
bnQoZ2VzdHVyZSk7CisgICAgRnJhbWVUZXN0SGVscGVyczo6cnVuUGVuZGluZ1Rhc2tzKCk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICBnZXN0
dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOworICAgIGdlc3R1
cmUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZID0gNDA7CisgICAgd2ViVmlldy0+aGFuZGxlSW5w
dXRFdmVudChnZXN0dXJlKTsKKyAgICBGcmFtZVRlc3RIZWxwZXJzOjpydW5QZW5kaW5nVGFza3Mo
KTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsKKworICAg
IGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CisgICAgZ2Vz
dHVyZS5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkgPSAwOworICAgIHdlYlZpZXctPmhhbmRsZUlu
cHV0RXZlbnQoZ2VzdHVyZSk7CisgICAgRnJhbWVUZXN0SGVscGVyczo6cnVuUGVuZGluZ1Rhc2tz
KCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAg
ICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCitURVNUX0YoSGlkZVRvcENvbnRyb2xzVGVzdCwgTm9I
aWRlT25OYXZpZ2F0aW9uKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImxvbmdf
c2Nyb2xsLmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJoZWxsb193b3Js
ZC5odG1sIik7CisKKyAgICBUZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50IGNsaWVudDsKKworICAg
IFdlYlZpZXcqIHdlYlZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhl
bHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJoZWxsb193b3JsZC5odG1s
IiwgdHJ1ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5
RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+c2V0dGlu
Z3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2Vi
Vmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgp
OworCisgICAgLy8gTWFrZSB0aGUgcGFnZSBzY2FsZSBhbmQgc2Nyb2xsIHdpdGggdGhlIGdpdmVu
IHBhcmVtZXRlcnMuCisgICAgd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yKDIuMGYsIFdlYlBv
aW50KDExNiwgODQpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVUb3BDb250cm9s
cygpKTsKKworICAgIC8vIE5hdmlnYXRlIHRvIGFub3RoZXIgcGFnZS4KKyAgICBXZWJGcmFtZSog
d2ViRnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKKyAgICBGcmFtZVRlc3RIZWxwZXJzOjps
b2FkRnJhbWUod2ViRnJhbWUsIG1fYmFzZVVSTCArICJsb25nX3Njcm9sbC5odG1sIik7CisgICAg
UGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3Vz
TW9ja2VkUmVxdWVzdHMoKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVUb3BDb250
cm9scygpKTsKKworICAgIC8vIENoYW5nZSB0aGUgc2Nyb2xsIHBvc2l0aW9uLCBzbyB0aGF0IHRo
ZXJlIHdpbGwgYmUgYSBjaGFuZ2UgaW4gc2Nyb2xsIHBvc2l0aW9uCisgICAgLy8gb24gcmVzdG9y
ZS4KKyAgICB3ZWJWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3IoMS41ZiwgV2ViUG9pbnQoMTYsIDI0
KSk7CisKKyAgICBXZWJIaXN0b3J5SXRlbSBmaXJzdFBhZ2UgPSB3ZWJGcmFtZS0+Y3VycmVudEhp
c3RvcnlJdGVtKCk7CisKKyAgICAvLyBOYXZpZ2F0ZSBiYWNrd2FyZHMuCisgICAgd2ViRnJhbWUt
PmxvYWRIaXN0b3J5SXRlbSh3ZWJGcmFtZS0+cHJldmlvdXNIaXN0b3J5SXRlbSgpKTsKKyAgICBQ
bGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3luY2hyb25vdXNN
b2NrZWRSZXF1ZXN0cygpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlkSGlkZVRvcENvbnRy
b2xzKCkpOworCisgICAgLy8gTmF2aWdhdGUgZm9yd2FyZHMuCisgICAgd2ViRnJhbWUtPmxvYWRI
aXN0b3J5SXRlbShmaXJzdFBhZ2UpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0
U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgRVhQRUNU
X0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAvLyBSZWxvYWQuCisg
ICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPnJlbG9hZCgpOworICAgIFBsYXRmb3JtOjpjdXJyZW50
KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7
CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAv
LyBTY3JvbGwgdG8gKDAsMSkuIFNob3VsZCBoaWRlIHRoZSB0b3AgY29udHJvbHMuCisgICAgd2Vi
RnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwg
MSk7IikpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7Cisg
ICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBSZWxvYWQuIFJlbG9hZHMgdG8gZm9yIHBhZ2Vz
IHNjcm9sbGVkIHRvICgwLDEpIHNob3VsZCBoaWRlIHRoZSB0b3AgY29udHJvbHMuCisgICAgd2Vi
Vmlldy0+bWFpbkZyYW1lKCktPnJlbG9hZCgpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVu
aXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAg
RVhQRUNUX1RSVUUoY2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsKKworICAgIHdlYlZpZXct
PmNsb3NlKCk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194605</attachid>
            <date>2013-03-22 11:36:57 -0700</date>
            <delta_ts>2013-03-25 07:11:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130322183243.patch</filename>
            <type>text/plain</type>
            <size>14246</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYxMzE5NTU0MDdkY2I2
NDZlNWQxOTZiZjM0NmVlMmJiZjMzN2MxMi4uMGJmZTU2YTU1YzI5ODA5YWFkN2NiYmJhNGUxNTc2
OGRiNTAyOTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAzLTIyICBKb2hu
IEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gSGlkZSB0aGUgbG9jYXRpb24gYmFyIG9uIFdlYktpdCBzY3JvbGxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwMjcKKworICAgICAgICBIaWRl
IHRoZSBsb2NhdGlvbiBiYXIgd2hlbiBXZWJLaXQgc2Nyb2xscywgc28gdGhhdCBzaXRlcworICAg
ICAgICB1c2luZyB3aW5kb3cuc2Nyb2xsVG8oMCwxKSBjYW4gcHJvZ3JhbW1hdGljYWxseSByZXF1
ZXN0CisgICAgICAgIHRoYXQgdGhlIGxvY2F0aW9uIGJhciBiZSBoaWRkZW4uCisKKyAgICAgICAg
QWRkcyBhIGRpZFNjcm9sbEJ5IHNjcm9sbGluZyBjYWxsYmFjayB0byB0aGUgQ2hyb21lQ2xpZW50
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rl
ZCB3aXRoIFdlYktpdCB1bml0IHRlc3RzOiBIaWRlVG9wQ29udHJvbHNUZXN0LgorCisgICAgICAg
ICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6
ZGlkU2Nyb2xsQnkpOgorICAgICAgICAoQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbFBvc2l0
aW9uKToKKwogMjAxMy0wMy0yMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NjUzNCBhbmQgcjE0
NjU2NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzRmYjhmMTZiYTRiYTFmYWM2Njc0
MmM1NTcxNjA1Yzc2ZDhlNzNkMi4uZmMyMDcyNmM1ZTg5MzExNTRjMjY1ZmNhZTU4OGNiMGZjMmVm
OWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMy0w
My0yMiAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbQ2hyb21pdW1dIEhpZGUgdGhlIGxvY2F0aW9uIGJhciBvbiBXZWJLaXQgc2Nyb2xscworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDI3CisKKyAg
ICAgICAgSGlkZSB0aGUgbG9jYXRpb24gYmFyIHdoZW4gV2ViS2l0IHNjcm9sbHMsIHNvIHRoYXQg
c2l0ZXMKKyAgICAgICAgdXNpbmcgd2luZG93LnNjcm9sbFRvKDAsMSkgY2FuIHByb2dyYW1tYXRp
Y2FsbHkgcmVxdWVzdAorICAgICAgICB0aGF0IHRoZSBsb2NhdGlvbiBiYXIgYmUgaGlkZGVuLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0
Lmd5cGk6CisgICAgICAgICogcHVibGljL1dlYldpZGdldENsaWVudC5oOgorICAgICAgICAoV2Vi
V2lkZ2V0Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50OjpyZXF1ZXN0
U2hvd1RvcENvbnRyb2xzKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmRpZFNjcm9sbEJ5KToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKENo
cm9tZUNsaWVudEltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzaG93VG9wQ29udHJvbHMpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToK
KyAgICAgICAgKiB0ZXN0cy9IaWRlVG9wQ29udHJvbHNUZXN0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoSGlkZVRvcENvbnRyb2xzVGVzdCk6CisgICAgICAgIChXZWJL
aXQ6OkhpZGVUb3BDb250cm9sc1Rlc3Q6OkhpZGVUb3BDb250cm9sc1Rlc3QpOgorICAgICAgICAo
V2ViS2l0OjpIaWRlVG9wQ29udHJvbHNUZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6
OkhpZGVUb3BDb250cm9sc1Rlc3Q6OnJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQpOgorICAgICAg
ICAoVGVzdEhpZGVUb3BDb250cm9sc0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RIaWRl
VG9wQ29udHJvbHNDbGllbnQ6OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpUZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJL
aXQ6OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQ6OmRpZEhpZGVUb3BDb250cm9scyk6CisgICAg
ICAgIChXZWJLaXQ6OlRFU1RfRik6CisKIDIwMTMtMDMtMjIgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNDY1MzQgYW5kIHIxNDY1NjUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAy
MzAyYmYxM2E1ZWFmOGM1YTg2NDNhOWRjMzQ3ZDMzNmM1YmNmNmE0Li5kMmIzZmY5MWU4YWFlM2Uz
MzBiMmI5ZjdlNTc5ZDk0YjMxZjE3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTE3OCw2ICsxNzgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dFVwZGF0
ZWQoRnJhbWUqKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3
KGNvbnN0IEludFJlY3QmKSBjb25zdCB7IH07IC8vIEN1cnJlbnRseSBvbmx5IE1hYyBoYXMgYSBu
b24gZW1wdHkgaW1wbGVtZW50YXRpb24uCiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2Nyb2xsQnko
RnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3QgeyB9OworCiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKEVsZW1lbnQqLCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pIGNvbnN0IHsg
fQogICAgIHZpcnR1YWwgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0
UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCmluZGV4IDE0NjA4MzFjYWUyMjkyNWNkYWYyZWFmMTMxNmUxZTZlMTJhNDA2NDguLjJi
MzAxMjE3ODYwOTMxMTc2ODkzZTFkZDVmZjMzMjI5ZDlhNDE2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTE4MzYsMTUgKzE4MzYsMjMgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKICAgICBUZW1wb3JhcnlD
aGFuZ2U8Ym9vbD4gY2hhbmdlSW5Qcm9ncmFtbWF0aWNTY3JvbGwobV9pblByb2dyYW1tYXRpY1Nj
cm9sbCwgdHJ1ZSk7CiAgICAgbV9tYWludGFpblNjcm9sbFBvc2l0aW9uQW5jaG9yID0gMDsKIAor
ICAgIEludFBvaW50IG9sZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb24oKTsKICAgICBJ
bnRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFu
Z2Uoc2Nyb2xsUG9pbnQpOwogCi0gICAgaWYgKG5ld1Njcm9sbFBvc2l0aW9uID09IHNjcm9sbFBv
c2l0aW9uKCkpCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKworICAgIGlmIChu
ZXdTY3JvbGxQb3NpdGlvbiA9PSBzY3JvbGxQb3NpdGlvbigpKSB7CisgICAgICAgIGlmIChwYWdl
KQorICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5kaWRTY3JvbGxCeShtX2Zy
YW1lLmdldCgpLCBJbnRTaXplKCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYg
KHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShuZXdTY3JvbGxQb3NpdGlvbikpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKG5ld1Njcm9sbFBv
c2l0aW9uKTsKKyAgICBpZiAocGFnZSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5kaWRTY3JvbGxCeShtX2ZyYW1lLmdldCgpLCBzY3JvbGxQb3NpdGlvbigpIC0gb2xkU2Nyb2xs
UG9zaXRpb24pOwogfQogCiB2b2lkIEZyYW1lVmlldzo6ZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hh
bmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDg5YzgyNTkzZmNhYTEwODAw
MWYzZjNhNjk0NWZkM2QzOWRkMGYyOTIuLjQ4ZDg3MjUzOWViZjA4NDhkZWUxNDg0NThjNTRjY2Nl
NTNmZGQ3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtNzMsNiArNzMsNyBA
QAogICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaCcsCiAgICAgICAgICAgICAn
dGVzdHMvR0lGSW1hZ2VEZWNvZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9IaWRlVG9wQ29u
dHJvbHNUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCQmFja2luZ1N0b3JlVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCmluZGV4IGI2OGM1ZWNj
NzVjYmQ0Y2RiOWMyZDczMjM4ZTg2NDBlYmEwY2EyODQuLjFjOGZkNjk0YzI4YTExYTk4MzgwNGYw
Mzg3MTdlNzlhZTA5OTQxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYldpZGdldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldpZGdldENsaWVudC5oCkBAIC0xNzIsNiArMTcyLDkgQEAgcHVibGljOgogICAgIC8vIENh
bGxlZCB3aGVuIGEgZ2VzdHVyZSBldmVudCBpcyBoYW5kbGVkLgogICAgIHZpcnR1YWwgdm9pZCBk
aWRIYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCwgYm9vbCBl
dmVudENhbmNlbGxlZCkgeyB9CiAKKyAgICAvLyBDYWxsZWQgd2hlbiBXZWJLaXQgcmVxdWVzdHMg
dGhlIHRvcCBjb250cm9scyB0byBiZSBkaXNwbGF5ZWQgb3IgaGlkZGVuLgorICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0U2hvd1RvcENvbnRyb2xzKGJvb2wgc2hvdykgeyB9CisKIHByb3RlY3RlZDoK
ICAgICB+V2ViV2lkZ2V0Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAzNDhjODczN2QxZWFkMzdmMTVkZDI0
NzBiNDVmZWMwZTU4MDY5MDRjLi42MTM4MDMxODNlYzdmY2ExNGIxMDQ5MzkzNDhjMjFlMjAyNDY3
MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcApAQCAtNTcyLDYgKzU3MiwxMyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmNvbnRlbnRz
U2l6ZUNoYW5nZWQoRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKSBjbwogICAgICAg
ICB3ZWJmcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUNvbnRlbnRzU2l6ZSh3ZWJmcmFtZSwgc2l6
ZSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZGlkU2Nyb2xsQnkoRnJhbWUqIGZyYW1l
LCBjb25zdCBJbnRTaXplJiBkZWx0YSkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWUtPnZpZXco
KS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgaWYgKGZyYW1lLT5wYWdlKCktPm1haW5G
cmFtZSgpID09IGZyYW1lKQorICAgICAgICBtX3dlYlZpZXctPnNob3dUb3BDb250cm9scyhmYWxz
ZSk7Cit9CisKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6bGF5b3V0VXBkYXRlZChGcmFtZSogZnJh
bWUpIGNvbnN0CiB7CiAgICAgbV93ZWJWaWV3LT5sYXlvdXRVcGRhdGVkKFdlYkZyYW1lSW1wbDo6
ZnJvbUZyYW1lKGZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmgKaW5kZXggM2UyOGU1MzVjNzAxYmEyM2NkMGUxYWM3OTA0MWFhZWIxNDZmZmU5
OC4uMjYxNzk3YTJhYjkzNmVmMDA5NTExOGRhNmFlZjQ4MDIwNTM1NzBjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMTI3LDYgKzEyNyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb1NjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybVBh
Z2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gUGxhdGZvcm1QYWdl
Q2xpZW50KHRoaXMpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoV2Vi
Q29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGRpZFNjcm9sbEJ5KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRVcGRhdGVkKFdlYkNvcmU6OkZyYW1l
KikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldygKICAgICAgICAg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGZiNDQ0NTY0M2NkOWY1Y2JjODAxM2FmYzRmNGVj
ZTQ4OWZlZWJlNzQuLjExYzljNjA2Yzc2ODFhODdjMjllNWJjNTE0ZTdhOWNkOTA0MTZjOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTQyODEsNiAr
NDI4MSwxMSBAQCBib29sIFdlYlZpZXdJbXBsOjpkZXRlY3RDb250ZW50T25Ub3VjaChjb25zdCBX
ZWJQb2ludCYgcG9zaXRpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgV2ViVmlld0lt
cGw6OnNob3dUb3BDb250cm9scyhib29sIHNob3cpCit7CisgICAgbV9jbGllbnQtPnJlcXVlc3RT
aG93VG9wQ29udHJvbHMoc2hvdyk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnNldFZpc2liaWxp
dHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzSW5pdGlhbFN0YXRlKSB7CiAgICAg
aWYgKCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRl
eCAyODNkNGNmOTJmYzA3Y2IzMmNkYWVlOTY0OWIxNGEwN2Q1ZTk0ZjgwLi40OTFmZmYxMWE3NTA3
Yzk0MTZlNDhiOWU1NTgwNzk2MTY4NWNkZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKQEAgLTU0MCw2ICs1NDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hl
ZHVsZUFuaW1hdGlvbigpOwogI2VuZGlmCiAKKyAgICB2b2lkIHNob3dUb3BDb250cm9scyhib29s
IHNob3cpOworCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlz
aWJpbGl0eVN0YXRlLCBib29sKTsKIAogICAgIFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBzZWxl
Y3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSGlkZVRvcENvbnRyb2xzVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0hpZGVUb3BDb250cm9sc1Rlc3QuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE0NzI2ZWU3MjNkZmE1MzdlZDI1OGE1MDFkZjM1MmVjN2RiZjYxMTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0hpZGVUb3BDb250cm9s
c1Rlc3QuY3BwCkBAIC0wLDAgKzEsMTYwIEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAi
V2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYkZy
YW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiV2ViSW5w
dXRFdmVudC5oIgorI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgorI2luY2x1ZGUgIldlYlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQu
aCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVuaXRUZXN0
U3VwcG9ydC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIE1vY2tXZWJGcmFtZUNsaWVudCA6IHB1Ymxp
YyBXZWJGcmFtZUNsaWVudCB7Cit9OworCitjbGFzcyBIaWRlVG9wQ29udHJvbHNUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIEhpZGVUb3BDb250cm9sc1Rlc3QoKQor
ICAgICAgICA6IG1fYmFzZVVSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS8iKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm06
OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7
CisgICAgfQorCitwcm90ZWN0ZWQ6CisKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExv
YWQoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKQorICAgIHsKKyAgICAgICAgVVJMVGVzdEhl
bHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOCht
X2Jhc2VVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZU5hbWUuY19zdHIoKSkp
OworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIG1fYmFzZVVSTDsKKyAgICBNb2NrV2ViRnJhbWVD
bGllbnQgbV9tb2NrV2ViRnJhbWVDbGllbnQ7Cit9OworCitjbGFzcyBUZXN0SGlkZVRvcENvbnRy
b2xzQ2xpZW50IDogcHVibGljIFdlYlZpZXdDbGllbnQgeworcHVibGljOgorICAgIFRlc3RIaWRl
VG9wQ29udHJvbHNDbGllbnQoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisgICAg
dm9pZCByZXNldCgpCisgICAgeworICAgICAgICBtX2RpZEhpZGVUb3BDb250cm9scyA9IGZhbHNl
OworICAgIH0KKyAgICBib29sIGRpZEhpZGVUb3BDb250cm9scygpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlkSGlkZVRvcENvbnRyb2xzOyB9CisKKyAgICAvLyBXZWJXaWRnZXRDbGllbnQ6CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RTaG93VG9wQ29udHJvbHMoYm9vbCBzaG93KSBPVkVSUklERQorICAg
IHsKKyAgICAgICAgaWYgKCFzaG93KQorICAgICAgICAgICAgbV9kaWRIaWRlVG9wQ29udHJvbHMg
PSB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fZGlkSGlkZVRvcENvbnRyb2xz
OworfTsKKworVEVTVF9GKEhpZGVUb3BDb250cm9sc1Rlc3QsIE5vSGlkZU9uVXNlclNjcm9sbCkK
K3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJzaG9ydF9zY3JvbGwuaHRtbCIpOwor
ICAgIFRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQgY2xpZW50OworCisgICAgV2ViVmlldyogd2Vi
VmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCAr
ICJzaG9ydF9zY3JvbGwuaHRtbCIsIGZhbHNlLCAwLCAmY2xpZW50KTsKKyAgICB3ZWJWaWV3LT5z
ZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwor
ICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yKHRydWUpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKKyAg
ICB3ZWJWaWV3LT5sYXlvdXQoKTsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0
YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4od2ViVmlldyk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVu
dC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICAvLyBOb24gemVybyBwYWdlIHNjYWxlIGFu
ZCBzY3JvbGwuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSg5
LCAxMyksIDIuMGYpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlkSGlkZVRvcENvbnRyb2xz
KCkpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKworVEVTVF9GKEhpZGVUb3BDb250cm9s
c1Rlc3QsIEhpZGVPblByb2dyYW1tYXRpY1Njcm9sbCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0
dHBVUkxMb2FkKCJsb25nX3Njcm9sbC5odG1sIik7CisgICAgVGVzdEhpZGVUb3BDb250cm9sc0Ns
aWVudCBjbGllbnQ7CisKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6
Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImxvbmdfc2Nyb2xsLmh0bWwiLCB0cnVl
LCAwLCAmY2xpZW50KTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNj
YWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNl
dEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnJl
c2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKworICAg
IFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4od2Vi
Vmlldyk7CisgICAgV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwgPSB3ZWJWaWV3SW1wbC0+bWFpbkZy
YW1lSW1wbCgpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWVJbXBsLT5mcmFtZVZp
ZXcoKTsKKworICAgIC8vIFNsb3cgc2Nyb2xsIHBhdGguCisgICAgZnJhbWVWaWV3LT5zZXRDYW5C
bGl0T25TY3JvbGwoZmFsc2UpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlkSGlkZVRvcENv
bnRyb2xzKCkpOworICAgIGZyYW1lSW1wbC0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2Uo
IndpbmRvdy5zY3JvbGxUbygwLCAyMCk7IikpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5kaWRI
aWRlVG9wQ29udHJvbHMoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBGYXN0IHNj
cm9sbCBwYXRoLgorICAgIGZyYW1lSW1wbC0+ZnJhbWVWaWV3KCktPnNldENhbkJsaXRPblNjcm9s
bCh0cnVlKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsK
KyAgICBmcmFtZUltcGwtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Ny
b2xsVG8oMCwgMjEpOyIpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQuZGlkSGlkZVRvcENvbnRy
b2xzKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30K
KworVEVTVF9GKEhpZGVUb3BDb250cm9sc1Rlc3QsIE5vSGlkZU9uVXNlclNjcm9sbE9uTWFpblRo
cmVhZCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJsb25nX3Njcm9sbC5odG1s
Iik7CisgICAgVGVzdEhpZGVUb3BDb250cm9sc0NsaWVudCBjbGllbnQ7CisKKyAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNl
VVJMICsgImxvbmdfc2Nyb2xsLmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsKKyAgICB3ZWJWaWV3
LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUp
OworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsK
KyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKworICAgIFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlOwor
ICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKKyAg
ICB3ZWJWaWV3LT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworICAgIEZyYW1lVGVzdEhlbHBl
cnM6OnJ1blBlbmRpbmdUYXNrcygpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlkSGlkZVRv
cENvbnRyb2xzKCkpOworCisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbFVwZGF0ZTsKKyAgICBnZXN0dXJlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IDQw
OworICAgIHdlYlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisgICAgRnJhbWVUZXN0
SGVscGVyczo6cnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRI
aWRlVG9wQ29udHJvbHMoKSk7CisKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsRW5kOworICAgIGdlc3R1cmUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZID0g
MDsKKyAgICB3ZWJWaWV3LT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworICAgIEZyYW1lVGVz
dEhlbHBlcnM6OnJ1blBlbmRpbmdUYXNrcygpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZGlk
SGlkZVRvcENvbnRyb2xzKCkpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194847</attachid>
            <date>2013-03-25 07:10:17 -0700</date>
            <delta_ts>2013-03-26 07:28:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130325140601.patch</filename>
            <type>text/plain</type>
            <size>14193</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg5MjcwYWRmNjQ0ZjA0
YzczZWI1ODNlMzg1OWRkZTVkOThlYTk3Ni4uMDdkNzU1MDFjODYwOWE0YWY4ZTgyY2JjMzY4YmVj
ZThjOTA1ZTg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAzLTI1ICBKb2hu
IEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gSGlkZSB0aGUgbG9jYXRpb24gYmFyIG9uIFdlYktpdCBzY3JvbGxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwMjcKKworICAgICAgICBIaWRl
IHRoZSBsb2NhdGlvbiBiYXIgd2hlbiBXZWJLaXQgc2Nyb2xscywgc28gdGhhdCBzaXRlcworICAg
ICAgICB1c2luZyB3aW5kb3cuc2Nyb2xsVG8oMCwxKSBjYW4gcHJvZ3JhbW1hdGljYWxseSByZXF1
ZXN0CisgICAgICAgIHRoYXQgdGhlIGxvY2F0aW9uIGJhciBiZSBoaWRkZW4uCisKKyAgICAgICAg
QWRkcyBkaWRTZXRTY3JvbGxQb3NpdGlvbiBjYWxsYmFjayB0byB0aGUgQ2hyb21lQ2xpZW50Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCB3
aXRoIFdlYktpdCB1bml0IHRlc3RzOiBIaWRlVG9wQ29udHJvbHNUZXN0LgorCisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRpZFNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9s
bFBvc2l0aW9uKToKKwogMjAxMy0wMy0yNSAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGaXggSlNEb2NzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwZGI2OTNjNDhkNDJiZjNiMzQ4N2YzZTlkNmQ2ZDM2YWI4
OGYzOTg5Li4zNmY3OGNiMjM1YzNlMzllMDg4ZTdhM2VmNWRkNjFhNDFjYTkyNmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTAzLTI1ICBKb2huIEtu
b3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
SGlkZSB0aGUgbG9jYXRpb24gYmFyIG9uIFdlYktpdCBzY3JvbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwMjcKKworICAgICAgICBIaWRlIHRo
ZSBsb2NhdGlvbiBiYXIgd2hlbiBXZWJLaXQgc2Nyb2xscywgc28gdGhhdCBzaXRlcworICAgICAg
ICB1c2luZyB3aW5kb3cuc2Nyb2xsVG8oMCwxKSBjYW4gcHJvZ3JhbW1hdGljYWxseSByZXF1ZXN0
CisgICAgICAgIHRoYXQgdGhlIGxvY2F0aW9uIGJhciBiZSBoaWRkZW4uCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAg
ICAgKiBwdWJsaWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAgIChXZWJXaWRnZXRDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXRDbGllbnQ6OnJlcXVlc3RTaG93VG9wQ29udHJv
bHMpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6Y29udGVudHNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpkaWRTZXRTY3JvbGxQb3Np
dGlvbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKENocm9t
ZUNsaWVudEltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzaG93VG9wQ29udHJvbHMpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAg
ICAgICAgKiB0ZXN0cy9IaWRlVG9wQ29udHJvbHNUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoSGlkZVRvcENvbnRyb2xzVGVzdCk6CisgICAgICAgIChXZWJLaXQ6
OkhpZGVUb3BDb250cm9sc1Rlc3Q6OkhpZGVUb3BDb250cm9sc1Rlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpIaWRlVG9wQ29udHJvbHNUZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6Okhp
ZGVUb3BDb250cm9sc1Rlc3Q6OnJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQpOgorICAgICAgICAo
VGVzdEhpZGVUb3BDb250cm9sc0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RIaWRlVG9w
Q29udHJvbHNDbGllbnQ6OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpUZXN0SGlkZVRvcENvbnRyb2xzQ2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
OlRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQ6OmRpZEhpZGVUb3BDb250cm9scyk6CisgICAgICAg
IChXZWJLaXQ6OlRFU1RfRik6CisKIDIwMTMtMDMtMjQgIERhbmEgSmFuc2VucyAgPGRhbmFrakBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSb2xsIGNocm9taXVtIGRlcHMgdG8g
MTkwMzExLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYTE0ODJjZjUzM2IzZmI0
NGI4ZTljODEwOThkMjYzMDVlNWI2YjQyZi4uN2NkNzA5MzhjMTBiMmRiOTIyYWM3M2YzMTdjMWE2
MGUyODEyYWIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0xNzgsNiArMTc4
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0VXBkYXRlZChGcmFtZSopIGNv
bnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3QgSW50UmVj
dCYpIGNvbnN0IHsgfTsgLy8gQ3VycmVudGx5IG9ubHkgTWFjIGhhcyBhIG5vbiBlbXB0eSBpbXBs
ZW1lbnRhdGlvbi4KIAorICAgIC8vIGRpZFNldFNjcm9sbFBvc2l0aW9uIHNob3VsZCBiZSBjYWxs
ZWQgb24gYW55IGF0dGVtcHQgdG8gc2V0IHRoZSBzY3JvbGwgcG9zaXRpb24sCisgICAgLy8gZXZl
biB0byB0aGUgc2FtZSBvZmZzZXQuCisgICAgdmlydHVhbCB2b2lkIGRpZFNldFNjcm9sbFBvc2l0
aW9uKEZyYW1lKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCB7IH0KKwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihSZW5kZXJFbWJlZGRlZE9i
amVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChFbGVtZW50
KiwgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSBjb25z
dCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0
VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCA0YjExYWJhYWQ2ZDgwMDU4ZjhiNTVhMzNjMjU1YTY5YTRmOGU3OTk1
Li5kNzljMjEwMTRhNjBkZTc0YTk3YjFiZDA0NWYzZDJmODhjZDkyNmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0xODM4LDYgKzE4MzgsOSBAQCB2b2lkIEZyYW1lVmlldzo6c2V0
U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogCiAgICAgSW50UG9p
bnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKHNj
cm9sbFBvaW50KTsKIAorICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQorICAg
ICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmRpZFNldFNjcm9sbFBvc2l0aW9uKG1fZnJh
bWUuZ2V0KCksIG5ld1Njcm9sbFBvc2l0aW9uKTsKKwogICAgIGlmIChuZXdTY3JvbGxQb3NpdGlv
biA9PSBzY3JvbGxQb3NpdGlvbigpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpCmluZGV4IDg5YzgyNTkzZmNhYTEwODAwMWYzZjNhNjk0NWZkM2QzOWRkMGYy
OTIuLjQ4ZDg3MjUzOWViZjA4NDhkZWUxNDg0NThjNTRjY2NlNTNmZGQ3YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtNzMsNiArNzMsNyBAQAogICAgICAgICAgICAgJ3Rlc3Rz
L0ZyYW1lVGVzdEhlbHBlcnMuaCcsCiAgICAgICAgICAgICAndGVzdHMvR0lGSW1hZ2VEZWNvZGVy
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9IaWRlVG9wQ29udHJvbHNUZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvSURCQmFja2luZ1N0b3JlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkJp
bmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYldpZGdldENsaWVudC5oCmluZGV4IGI2OGM1ZWNjNzVjYmQ0Y2RiOWMyZDczMjM4ZTg2
NDBlYmEwY2EyODQuLjFjOGZkNjk0YzI4YTExYTk4MzgwNGYwMzg3MTdlNzlhZTA5OTQxMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCkBA
IC0xNzIsNiArMTcyLDkgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3aGVuIGEgZ2VzdHVyZSBl
dmVudCBpcyBoYW5kbGVkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCwgYm9vbCBldmVudENhbmNlbGxlZCkgeyB9CiAK
KyAgICAvLyBDYWxsZWQgd2hlbiBXZWJLaXQgcmVxdWVzdHMgdGhlIHRvcCBjb250cm9scyB0byBi
ZSBkaXNwbGF5ZWQgb3IgaGlkZGVuLgorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hvd1RvcENv
bnRyb2xzKGJvb2wgc2hvdykgeyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViV2lkZ2V0Q2xpZW50
KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcAppbmRleCBhNTAyYTdlZjI0MDE5YzA5MmE5ZDAzMTQwN2U2MGMxOGFiZWZlODMxLi44
MzdlOTQ2YjYwOTMzMzA2MWZhZDNjOTg1YWM5OGJhYTljY2IxODc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNTczLDYgKzU3Mywx
MyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqIGZy
YW1lLCBjb25zdCBJbnRTaXplJiBzaXplKSBjbwogICAgICAgICB3ZWJmcmFtZS0+Y2xpZW50KCkt
PmRpZENoYW5nZUNvbnRlbnRzU2l6ZSh3ZWJmcmFtZSwgc2l6ZSk7CiB9CiAKK3ZvaWQgQ2hyb21l
Q2xpZW50SW1wbDo6ZGlkU2V0U2Nyb2xsUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQ
b2ludCYgc2Nyb2xsUG9pbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGZyYW1lLT52aWV3KCktPmlu
UHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworICAgIGlmIChmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUo
KSA9PSBmcmFtZSkKKyAgICAgICAgbV93ZWJWaWV3LT5zaG93VG9wQ29udHJvbHMoZmFsc2UpOwor
fQorCiB2b2lkIENocm9tZUNsaWVudEltcGw6OmxheW91dFVwZGF0ZWQoRnJhbWUqIGZyYW1lKSBj
b25zdAogewogICAgIG1fd2ViVmlldy0+bGF5b3V0VXBkYXRlZChXZWJGcmFtZUltcGw6OmZyb21G
cmFtZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5oCmluZGV4IDU3YjMxNjk5MGM3NjdhMjZiYmEwNDE5NmMwOTIzYWM2MjlhZjM5N2UuLjcy
MmI3MmQyYzZmOTI1MjUyNGUyM2Y5MDZlNzg4MjJiNTc1N2NiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0OwogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xp
ZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIFBsYXRmb3JtUGFnZUNsaWVu
dCh0aGlzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKFdlYkNvcmU6
OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZXRTY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dFVwZGF0ZWQoV2ViQ29yZTo6
RnJhbWUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KAogICAg
ICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZmI0NDQ1NjQzY2Q5ZjVjYmM4MDEzYWZj
NGY0ZWNlNDg5ZmVlYmU3NC4uMTFjOWM2MDZjNzY4MWE4N2MyOWU1YmM1MTRlN2E5Y2Q5MDQxNmM4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDI4
MSw2ICs0MjgxLDExIEBAIGJvb2wgV2ViVmlld0ltcGw6OmRldGVjdENvbnRlbnRPblRvdWNoKGNv
bnN0IFdlYlBvaW50JiBwb3NpdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBXZWJW
aWV3SW1wbDo6c2hvd1RvcENvbnRyb2xzKGJvb2wgc2hvdykKK3sKKyAgICBtX2NsaWVudC0+cmVx
dWVzdFNob3dUb3BDb250cm9scyhzaG93KTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Vmlz
aWJpbGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNJbml0aWFsU3RhdGUpIHsK
ICAgICBpZiAoIXBhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CmluZGV4IDI4M2Q0Y2Y5MmZjMDdjYjMyY2RhZWU5NjQ5YjE0YTA3ZDVlOTRmODAuLjQ5MWZmZjEx
YTc1MDdjOTQxNmU0OGI5ZTU1ODA3OTYxNjg1Y2RmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNTQwLDYgKzU0MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgc2hvd1RvcENvbnRyb2xz
KGJvb2wgc2hvdyk7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKFdlYlBh
Z2VWaXNpYmlsaXR5U3RhdGUsIGJvb2wpOwogCiAgICAgV2ViQ29yZTo6UG9wdXBDb250YWluZXIq
IHNlbGVjdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cC5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9IaWRlVG9wQ29udHJvbHNUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSGlkZVRvcENvbnRyb2xzVGVzdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGZmYjIyZDIzMThkZDJlNzIyODM3Yzc5N2I4NDJhNDQxNDc4Njc2Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSGlkZVRvcENv
bnRyb2xzVGVzdC5jcHAKQEAgLTAsMCArMSwxNjYgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKKyNpbmNs
dWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAi
V2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50LmgiCisjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgiCisjaW5jbHVkZSAi
V2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSAiV2ViVmlld0Ns
aWVudC5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVW5p
dFRlc3RTdXBwb3J0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgTW9ja1dlYkZyYW1lQ2xpZW50IDog
cHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK307CisKK2NsYXNzIEhpZGVUb3BDb250cm9sc1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgSGlkZVRvcENvbnRyb2xzVGVz
dCgpCisgICAgICAgIDogbV9iYXNlVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tLyIpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICBQbGF0
Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+dW5yZWdpc3RlckFsbE1vY2tlZFVS
THMoKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKworICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRIdHRw
VVJMTG9hZChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUpCisgICAgeworICAgICAgICBVUkxU
ZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21V
VEY4KG1fYmFzZVVSTC5jX3N0cigpKSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlTmFtZS5jX3N0
cigpKSk7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgbV9iYXNlVVJMOworICAgIE1vY2tXZWJG
cmFtZUNsaWVudCBtX21vY2tXZWJGcmFtZUNsaWVudDsKK307CisKK2NsYXNzIFRlc3RIaWRlVG9w
Q29udHJvbHNDbGllbnQgOiBwdWJsaWMgV2ViVmlld0NsaWVudCB7CitwdWJsaWM6CisgICAgVGVz
dEhpZGVUb3BDb250cm9sc0NsaWVudCgpCisgICAgeworICAgICAgICByZXNldCgpOworICAgIH0K
KyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIG1fZGlkSGlkZVRvcENvbnRyb2xzID0g
ZmFsc2U7CisgICAgfQorICAgIGJvb2wgZGlkSGlkZVRvcENvbnRyb2xzKCkgY29uc3QgeyByZXR1
cm4gbV9kaWRIaWRlVG9wQ29udHJvbHM7IH0KKworICAgIC8vIFdlYldpZGdldENsaWVudDoKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNob3dUb3BDb250cm9scyhib29sIHNob3cpIE9WRVJSSURF
CisgICAgeworICAgICAgICBpZiAoIXNob3cpCisgICAgICAgICAgICBtX2RpZEhpZGVUb3BDb250
cm9scyA9IHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV9kaWRIaWRlVG9wQ29u
dHJvbHM7Cit9OworCitURVNUX0YoSGlkZVRvcENvbnRyb2xzVGVzdCwgTm9IaWRlT25Vc2VyU2Ny
b2xsKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoInNob3J0X3Njcm9sbC5odG1s
Iik7CisgICAgVGVzdEhpZGVUb3BDb250cm9sc0NsaWVudCBjbGllbnQ7CisKKyAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNl
VVJMICsgInNob3J0X3Njcm9sbC5odG1sIiwgZmFsc2UsIDAsICZjbGllbnQpOworICAgIHdlYlZp
ZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1
ZSk7CisgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkp
OworICAgIHdlYlZpZXctPmxheW91dCgpOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBs
ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPih3ZWJWaWV3KTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Y2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsKKworICAgIC8vIE5vbiB6ZXJvIHBhZ2Ugc2Nh
bGUgYW5kIHNjcm9sbC4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJT
aXplKDksIDEzKSwgMi4wZik7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRlVG9wQ29u
dHJvbHMoKSk7CisKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCitURVNUX0YoSGlkZVRvcENv
bnRyb2xzVGVzdCwgSGlkZU9uUHJvZ3JhbW1hdGljU2Nyb2xsKQoreworICAgIHJlZ2lzdGVyTW9j
a2VkSHR0cFVSTExvYWQoImxvbmdfc2Nyb2xsLmh0bWwiKTsKKyAgICBUZXN0SGlkZVRvcENvbnRy
b2xzQ2xpZW50IGNsaWVudDsKKworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxw
ZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAibG9uZ19zY3JvbGwuaHRtbCIs
IHRydWUsIDAsICZjbGllbnQpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2
aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmll
dy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgpOwor
CisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwq
Pih3ZWJWaWV3KTsKKyAgICBXZWJGcmFtZUltcGwqIGZyYW1lSW1wbCA9IHdlYlZpZXdJbXBsLT5t
YWluRnJhbWVJbXBsKCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZUltcGwtPmZy
YW1lVmlldygpOworCisgICAgLy8gU2xvdyBzY3JvbGwgcGF0aC4KKyAgICBmcmFtZVZpZXctPnNl
dENhbkJsaXRPblNjcm9sbChmYWxzZSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5kaWRIaWRl
VG9wQ29udHJvbHMoKSk7CisgICAgZnJhbWVJbXBsLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNv
dXJjZSgid2luZG93LnNjcm9sbFRvKDAsIDIwKTsiKSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50
LmRpZEhpZGVUb3BDb250cm9scygpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKyAgICBmcmFtZUlt
cGwtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsQnkoMCwgMCk7
IikpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5kaWRIaWRlVG9wQ29udHJvbHMoKSk7CisgICAg
Y2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBGYXN0IHNjcm9sbCBwYXRoLgorICAgIGZyYW1lSW1w
bC0+ZnJhbWVWaWV3KCktPnNldENhbkJsaXRPblNjcm9sbCh0cnVlKTsKKyAgICBFWFBFQ1RfRkFM
U0UoY2xpZW50LmRpZEhpZGVUb3BDb250cm9scygpKTsKKyAgICBmcmFtZUltcGwtPmV4ZWN1dGVT
Y3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjEpOyIpKTsKKyAgICBF
WFBFQ1RfVFJVRShjbGllbnQuZGlkSGlkZVRvcENvbnRyb2xzKCkpOworICAgIGNsaWVudC5yZXNl
dCgpOworICAgIGZyYW1lSW1wbC0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoIndpbmRv
dy5zY3JvbGxCeSgwLCAwKTsiKSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LmRpZEhpZGVUb3BD
b250cm9scygpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIHdlYlZpZXctPmNsb3NlKCk7
Cit9CisKK1RFU1RfRihIaWRlVG9wQ29udHJvbHNUZXN0LCBOb0hpZGVPblVzZXJTY3JvbGxPbk1h
aW5UaHJlYWQpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgibG9uZ19zY3JvbGwu
aHRtbCIpOworICAgIFRlc3RIaWRlVG9wQ29udHJvbHNDbGllbnQgY2xpZW50OworCisgICAgV2Vi
Vmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1f
YmFzZVVSTCArICJsb25nX3Njcm9sbC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCk7CisgICAgd2Vi
Vmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0
cnVlKTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3Rvcklu
Q29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgxMDAwLCAxMDAw
KSk7CisgICAgd2ViVmlldy0+bGF5b3V0KCk7CisKKyAgICBXZWJHZXN0dXJlRXZlbnQgZ2VzdHVy
ZTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47
CisgICAgd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKyAgICBGcmFtZVRlc3RI
ZWxwZXJzOjpydW5QZW5kaW5nVGFza3MoKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmRpZEhp
ZGVUb3BDb250cm9scygpKTsKKworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVTY3JvbGxVcGRhdGU7CisgICAgZ2VzdHVyZS5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkg
PSA0MDsKKyAgICB3ZWJWaWV3LT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworICAgIEZyYW1l
VGVzdEhlbHBlcnM6OnJ1blBlbmRpbmdUYXNrcygpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQu
ZGlkSGlkZVRvcENvbnRyb2xzKCkpOworCisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAgICBnZXN0dXJlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRh
WSA9IDA7CisgICAgd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKyAgICBGcmFt
ZVRlc3RIZWxwZXJzOjpydW5QZW5kaW5nVGFza3MoKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50
LmRpZEhpZGVUb3BDb250cm9scygpKTsKKworICAgIHdlYlZpZXctPmNsb3NlKCk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195085</attachid>
            <date>2013-03-26 07:28:41 -0700</date>
            <delta_ts>2013-03-27 04:46:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130326142423.patch</filename>
            <type>text/plain</type>
            <size>13999</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI0MzM2NmQ3MzljN2E4
ZDBmZWQ4OGVkM2M3NWU4OWFhNmFjMGZiZS4uODIwMGQ3OTY4YTc5ODIzMjEzMTM3ZTBjNDUzYzli
MzQ5OTU5NmM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAzLTI2ICBKb2hu
IEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gTm90aWZ5IGVtYmVkZGVyIG9mIHByb2dyYW1tYXRpYyBzY3JvbGxzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDI3CisKKyAgICAgICAgTm90
aWZ5IHRoZSBlbWJlZGRlciBvZiBXZWJLaXQgc2Nyb2xscyAoZS5nLiBzY3JvbGxUbywKKyAgICAg
ICAgc2Nyb2xsQnkgZXRjKS4KKworICAgICAgICBBZGRzIGRpZFByb2dyYW1tYXRpY2FsbHlTY3Jv
bGwgY2FsbGJhY2sgdG8gdGhlIENocm9tZUNsaWVudC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgd2l0aCBXZWJLaXQgdW5pdCB0ZXN0czog
UHJvZ3JhbW1hdGljU2Nyb2xsVGVzdC4KKworICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
OjpkaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKToKKwog
MjAxMy0wMy0yMiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgTGlzdGVuaW5nIHRvdWNoIGV2ZW50cyBvbiBTaGFkb3dSb290IGNhbiBjcmFzaC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZmM1NmRhNmVjZjViNjI4OThjNjA0NjZmODBkMjIwMmI3
Y2U4ODFhZi4uYjVlMTNkN2UwZDUzNDE2ODlmM2ExZjYyZDljZGNjMDVkYzNiMWFkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMy0wMy0yNiAgSm9obiBL
bm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IE5vdGlmeSBlbWJlZGRlciBvZiBwcm9ncmFtbWF0aWMgc2Nyb2xscy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzAyNworCisgICAgICAgIE5vdGlm
eSB0aGUgZW1iZWRkZXIgb2YgV2ViS2l0IHNjcm9sbHMgKGUuZy4gc2Nyb2xsVG8sCisgICAgICAg
IHNjcm9sbEJ5IGV0YykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lkZ2V0Q2xpZW50
Lmg6CisgICAgICAgIChXZWJXaWRnZXRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRn
ZXRDbGllbnQ6OmRpZFByb2dyYW1tYXRpY2FsbHlTY3JvbGwpOgorICAgICAgICAqIHNyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y29u
dGVudHNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnRJbXBsOjpkaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKToKKyAgICAgICAgKiBz
cmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OmRpZFByb2dyYW1tYXRpY2FsbHlTY3JvbGwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0
ZXN0cy9Qcm9ncmFtbWF0aWNTY3JvbGxUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoUHJvZ3JhbW1hdGljU2Nyb2xsVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBy
b2dyYW1tYXRpY1Njcm9sbFRlc3Q6OlByb2dyYW1tYXRpY1Njcm9sbFRlc3QpOgorICAgICAgICAo
V2ViS2l0OjpQcm9ncmFtbWF0aWNTY3JvbGxUZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJL
aXQ6OlByb2dyYW1tYXRpY1Njcm9sbFRlc3Q6OnJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQpOgor
ICAgICAgICAoVGVzdFByb2dyYW1tYXRpY1Njcm9sbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OlRlc3RQcm9ncmFtbWF0aWNTY3JvbGxDbGllbnQ6OlRlc3RQcm9ncmFtbWF0aWNTY3JvbGxDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpUZXN0UHJvZ3JhbW1hdGljU2Nyb2xsQ2xpZW50OjpldmVu
dFJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6VGVzdFByb2dyYW1tYXRpY1Njcm9sbENsaWVu
dDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorCiAyMDEzLTAzLTI1ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGExNDgy
Y2Y1MzNiM2ZiNDRiOGU5YzgxMDk4ZDI2MzA1ZTViNmI0MmYuLjhlNDIzMjZiMDdjMjIyZGNmMjli
ZjA2MDZmYmEzZDVlM2M3ZTFjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAt
MTc4LDYgKzE3OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dFVwZGF0ZWQo
RnJhbWUqKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNv
bnN0IEludFJlY3QmKSBjb25zdCB7IH07IC8vIEN1cnJlbnRseSBvbmx5IE1hYyBoYXMgYSBub24g
ZW1wdHkgaW1wbGVtZW50YXRpb24uCiAKKyAgICAvLyBkaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xs
IHNob3VsZCBiZSBjYWxsZWQgb24gYW55IGF0dGVtcHQgdG8gc2V0IHRoZSBzY3JvbGwgcG9zaXRp
b24gcHJvZ3JhbW1hdGljYWxseSwKKyAgICAvLyBldmVuIHRvIHRoZSBzYW1lIG9mZnNldC4KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUHJvZ3JhbW1hdGljYWxseVNjcm9sbChGcmFtZSosIGNvbnN0IElu
dFBvaW50JikgY29uc3QgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVW5hdmFpbGFibGVQ
bHVnaW5NZXNzYWdlQmVCdXR0b24oUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlBsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCB1
bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoRWxlbWVudCosIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2
b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25l
ZCBtb2RpZmllckZsYWdzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNGIx
MWFiYWFkNmQ4MDA1OGY4YjU1YTMzYzI1NWE2OWE0ZjhlNzk5NS4uZDIxZWFmNDllNTZlNTUxMDdj
OGVkMDcxYjUwNjI5NGJjZTliZDI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAt
MTgzOCw2ICsxODM4LDkgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0
IEludFBvaW50JiBzY3JvbGxQb2ludCkKIAogICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9u
ID0gYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShzY3JvbGxQb2ludCk7CiAKKyAgICBp
ZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5kaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKG1fZnJhbWUuZ2V0KCksIG5ld1Nj
cm9sbFBvc2l0aW9uKTsKKwogICAgIGlmIChuZXdTY3JvbGxQb3NpdGlvbiA9PSBzY3JvbGxQb3Np
dGlvbigpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmlu
ZGV4IDZlNGE0ZDg2MDA3NWI1NGU0YjU0NzY3NzAxZWRhZDQ5Y2FjYjE0NjIuLjA3ZTlmMmZhZTgw
ZGY1MjU1Njk3YTUyZjhlNzE4ZDMyODhiYjU2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQpAQCAtMTAyLDYgKzEwMiw3IEBACiAgICAgICAgICAgICAndGVzdHMvUGxhdGZvcm1Db250
ZXh0U2tpYVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9Qb3B1cENvbnRhaW5lclRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QcmVyZW5kZXJpbmdUZXN0LmNwcCcsCisgICAgICAg
ICAgICAndGVzdHMvUHJvZ3JhbW1hdGljU2Nyb2xsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL1JlZ2lvblRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9SZW5kZXJUYWJsZUNlbGxU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVSb3dUZXN0LmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCmluZGV4
IGI2OGM1ZWNjNzVjYmQ0Y2RiOWMyZDczMjM4ZTg2NDBlYmEwY2EyODQuLmNlODI4YWZiNjM3NTQ0
NWYwYjUzMDlkMzVmNmYxYTVmOTY1NTQ4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCkBAIC0xNzIsNiArMTcyLDkgQEAgcHVibGljOgog
ICAgIC8vIENhbGxlZCB3aGVuIGEgZ2VzdHVyZSBldmVudCBpcyBoYW5kbGVkLgogICAgIHZpcnR1
YWwgdm9pZCBkaWRIYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVu
dCwgYm9vbCBldmVudENhbmNlbGxlZCkgeyB9CiAKKyAgICAvLyBDYWxsZWQgd2hlbiBXZWJLaXQg
cHJvZ3JhbW1hdGljYWxseSBzY3JvbGxzLgorICAgIHZpcnR1YWwgdm9pZCBkaWRQcm9ncmFtbWF0
aWNhbGx5U2Nyb2xsKCkgeyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViV2lkZ2V0Q2xpZW50KCkg
eyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcAppbmRleCBhNTAyYTdlZjI0MDE5YzA5MmE5ZDAzMTQwN2U2MGMxOGFiZWZlODMxLi4zOWEz
N2I5N2Q2MDg0NGE1YWUzMWIwZjAzN2RiMjUyOWZlNDU0YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNTczLDYgKzU3MywxMyBA
QCB2b2lkIENocm9tZUNsaWVudEltcGw6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqIGZyYW1l
LCBjb25zdCBJbnRTaXplJiBzaXplKSBjbwogICAgICAgICB3ZWJmcmFtZS0+Y2xpZW50KCktPmRp
ZENoYW5nZUNvbnRlbnRzU2l6ZSh3ZWJmcmFtZSwgc2l6ZSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xp
ZW50SW1wbDo6ZGlkUHJvZ3JhbW1hdGljYWxseVNjcm9sbChGcmFtZSogZnJhbWUsIGNvbnN0IElu
dFBvaW50JiBzY3JvbGxQb2ludCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWUtPnZpZXcoKS0+
aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgaWYgKGZyYW1lLT5wYWdlKCktPm1haW5GcmFt
ZSgpID09IGZyYW1lKQorICAgICAgICBtX3dlYlZpZXctPmRpZFByb2dyYW1tYXRpY2FsbHlTY3Jv
bGwoKTsKK30KKwogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpsYXlvdXRVcGRhdGVkKEZyYW1lKiBm
cmFtZSkgY29uc3QKIHsKICAgICBtX3dlYlZpZXctPmxheW91dFVwZGF0ZWQoV2ViRnJhbWVJbXBs
Ojpmcm9tRnJhbWUoZnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaAppbmRleCA1N2IzMTY5OTBjNzY3YTI2YmJhMDQxOTZjMDkyM2FjNjI5YWYz
OTdlLi43YzAyODFhMjdmMzlhOWZjYzJmODE3MTlmMDc0MmRmNTU5NDhlYTE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC0xMjcsNiArMTI3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2Ny
ZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdDsKICAgICB2aXJ0dWFsIFBsYXRmb3Jt
UGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCB7IHJldHVybiBQbGF0Zm9ybVBh
Z2VDbGllbnQodGhpcyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChX
ZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUHJvZ3JhbW1hdGljYWxseVNjcm9sbChXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dFVwZGF0
ZWQoV2ViQ29yZTo6RnJhbWUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdElu
dG9WaWV3KAogICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZmI0NDQ1NjQzY2Q5
ZjVjYmM4MDEzYWZjNGY0ZWNlNDg5ZmVlYmU3NC4uMGUxNTczMjJiZjE0NTEwODllM2UzMjRkYTg0
NDQ5MWRiNWFlMzQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtNDI4MSw2ICs0MjgxLDExIEBAIGJvb2wgV2ViVmlld0ltcGw6OmRldGVjdENvbnRl
bnRPblRvdWNoKGNvbnN0IFdlYlBvaW50JiBwb3NpdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBXZWJWaWV3SW1wbDo6ZGlkUHJvZ3JhbW1hdGljYWxseVNjcm9sbCgpCit7CisgICAg
bV9jbGllbnQtPmRpZFByb2dyYW1tYXRpY2FsbHlTY3JvbGwoKTsKK30KKwogdm9pZCBXZWJWaWV3
SW1wbDo6c2V0VmlzaWJpbGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0
eVN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNJbml0
aWFsU3RhdGUpIHsKICAgICBpZiAoIXBhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCmluZGV4IDI4M2Q0Y2Y5MmZjMDdjYjMyY2RhZWU5NjQ5YjE0YTA3ZDVlOTRm
ODAuLmFkNWQwZWE0NjJjODI0NjU4N2QwMmE2Y2I5NjE0MDU1NWVjZGI2MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNTQwLDYgKzU0MCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlk
UHJvZ3JhbW1hdGljYWxseVNjcm9sbCgpOworCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2liaWxp
dHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sKTsKIAogICAgIFdlYkNvcmU6OlBv
cHVwQ29udGFpbmVyKiBzZWxlY3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAu
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUHJvZ3Jh
bW1hdGljU2Nyb2xsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Byb2dy
YW1tYXRpY1Njcm9sbFRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlYjRhZTFmMjU5NGZjNGFlZjU2Y2Rl
MGQyY2NhNDViMGUyMDdjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1Byb2dyYW1tYXRpY1Njcm9sbFRlc3QuY3BwCkBAIC0wLDAgKzEsMTY1IEBACisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlVS
TFRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFt
ZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYkhpc3Rv
cnlJdGVtLmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYlNjcmlw
dFNvdXJjZS5oIgorI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVmlldy5o
IgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgor
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYlVuaXRUZXN0U3VwcG9ydC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNz
IE1vY2tXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7Cit9OworCitjbGFz
cyBQcm9ncmFtbWF0aWNTY3JvbGxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGlj
OgorICAgIFByb2dyYW1tYXRpY1Njcm9sbFRlc3QoKQorICAgICAgICA6IG1fYmFzZVVSTCgiaHR0
cDovL3d3dy50ZXN0LmNvbS8iKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBw
b3J0KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisK
KyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIGZp
bGVOYW1lKQorICAgIHsKKyAgICAgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJM
RnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIoKSksIFdlYlN0
cmluZzo6ZnJvbVVURjgoZmlsZU5hbWUuY19zdHIoKSkpOworICAgIH0KKworICAgIHN0ZDo6c3Ry
aW5nIG1fYmFzZVVSTDsKKyAgICBNb2NrV2ViRnJhbWVDbGllbnQgbV9tb2NrV2ViRnJhbWVDbGll
bnQ7Cit9OworCitjbGFzcyBUZXN0UHJvZ3JhbW1hdGljU2Nyb2xsQ2xpZW50IDogcHVibGljIFdl
YlZpZXdDbGllbnQgeworcHVibGljOgorICAgIFRlc3RQcm9ncmFtbWF0aWNTY3JvbGxDbGllbnQo
KQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAg
eworICAgICAgICBtX2V2ZW50UmVjZWl2ZWQgPSBmYWxzZTsKKyAgICB9CisgICAgYm9vbCBldmVu
dFJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFJlY2VpdmVkOyB9CisKKyAgICAvLyBX
ZWJXaWRnZXRDbGllbnQ6CisgICAgdmlydHVhbCB2b2lkIGRpZFByb2dyYW1tYXRpY2FsbHlTY3Jv
bGwoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9ldmVudFJlY2VpdmVkID0gdHJ1ZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2V2ZW50UmVjZWl2ZWQ7Cit9OworCitURVNUX0Yo
UHJvZ3JhbW1hdGljU2Nyb2xsVGVzdCwgVXNlclNjcm9sbCkKK3sKKyAgICByZWdpc3Rlck1vY2tl
ZEh0dHBVUkxMb2FkKCJzaG9ydF9zY3JvbGwuaHRtbCIpOworICAgIFRlc3RQcm9ncmFtbWF0aWNT
Y3JvbGxDbGllbnQgY2xpZW50OworCisgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhl
bHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJzaG9ydF9zY3JvbGwuaHRt
bCIsIGZhbHNlLCAwLCAmY2xpZW50KTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBs
eURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnNldHRp
bmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdl
YlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQo
KTsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJ
bXBsKj4od2ViVmlldyk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5ldmVudFJlY2VpdmVkKCkp
OworCisgICAgLy8gTm9uIHplcm8gcGFnZSBzY2FsZSBhbmQgc2Nyb2xsLgorICAgIHdlYlZpZXdJ
bXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoOSwgMTMpLCAyLjBmKTsKKyAgICBFWFBF
Q1RfRkFMU0UoY2xpZW50LmV2ZW50UmVjZWl2ZWQoKSk7CisKKyAgICB3ZWJWaWV3LT5jbG9zZSgp
OworfQorCitURVNUX0YoUHJvZ3JhbW1hdGljU2Nyb2xsVGVzdCwgUHJvZ3JhbW1hdGljU2Nyb2xs
KQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImxvbmdfc2Nyb2xsLmh0bWwiKTsK
KyAgICBUZXN0UHJvZ3JhbW1hdGljU2Nyb2xsQ2xpZW50IGNsaWVudDsKKworICAgIFdlYlZpZXcq
IHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VV
UkwgKyAibG9uZ19zY3JvbGwuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpOworICAgIHdlYlZpZXct
PnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7
CisgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBv
c2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOwor
ICAgIHdlYlZpZXctPmxheW91dCgpOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0g
c3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPih3ZWJWaWV3KTsKKyAgICBXZWJGcmFtZUltcGwqIGZy
YW1lSW1wbCA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCk7CisgICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBmcmFtZUltcGwtPmZyYW1lVmlldygpOworCisgICAgLy8gU2xvdyBzY3JvbGwg
cGF0aC4KKyAgICBmcmFtZVZpZXctPnNldENhbkJsaXRPblNjcm9sbChmYWxzZSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGNsaWVudC5ldmVudFJlY2VpdmVkKCkpOworICAgIGZyYW1lSW1wbC0+ZXhlY3V0
ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoIndpbmRvdy5zY3JvbGxUbygwLCAyMCk7IikpOworICAg
IEVYUEVDVF9UUlVFKGNsaWVudC5ldmVudFJlY2VpdmVkKCkpOworICAgIGNsaWVudC5yZXNldCgp
OworICAgIGZyYW1lSW1wbC0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoIndpbmRvdy5z
Y3JvbGxCeSgwLCAwKTsiKSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LmV2ZW50UmVjZWl2ZWQo
KSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBGYXN0IHNjcm9sbCBwYXRoLgorICAg
IGZyYW1lSW1wbC0+ZnJhbWVWaWV3KCktPnNldENhbkJsaXRPblNjcm9sbCh0cnVlKTsKKyAgICBF
WFBFQ1RfRkFMU0UoY2xpZW50LmV2ZW50UmVjZWl2ZWQoKSk7CisgICAgZnJhbWVJbXBsLT5leGVj
dXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgid2luZG93LnNjcm9sbFRvKDAsIDIxKTsiKSk7Cisg
ICAgRVhQRUNUX1RSVUUoY2xpZW50LmV2ZW50UmVjZWl2ZWQoKSk7CisgICAgY2xpZW50LnJlc2V0
KCk7CisgICAgZnJhbWVJbXBsLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgid2luZG93
LnNjcm9sbEJ5KDAsIDApOyIpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQuZXZlbnRSZWNlaXZl
ZCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIHdlYlZpZXctPmNsb3NlKCk7Cit9CisK
K1RFU1RfRihQcm9ncmFtbWF0aWNTY3JvbGxUZXN0LCBVc2VyU2Nyb2xsT25NYWluVGhyZWFkKQor
eworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImxvbmdfc2Nyb2xsLmh0bWwiKTsKKyAg
ICBUZXN0UHJvZ3JhbW1hdGljU2Nyb2xsQ2xpZW50IGNsaWVudDsKKworICAgIFdlYlZpZXcqIHdl
YlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwg
KyAibG9uZ19zY3JvbGwuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpOworICAgIHdlYlZpZXctPnNl
dHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Cisg
ICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0
b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOworICAg
IHdlYlZpZXctPmxheW91dCgpOworCisgICAgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmU7CisgICAg
Z2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOworICAgIHdl
YlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisgICAgRnJhbWVUZXN0SGVscGVyczo6
cnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5ldmVudFJlY2VpdmVk
KCkpOworCisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVw
ZGF0ZTsKKyAgICBnZXN0dXJlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IDQwOworICAgIHdl
YlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisgICAgRnJhbWVUZXN0SGVscGVyczo6
cnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5ldmVudFJlY2VpdmVk
KCkpOworCisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVu
ZDsKKyAgICBnZXN0dXJlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IDA7CisgICAgd2ViVmll
dy0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKyAgICBGcmFtZVRlc3RIZWxwZXJzOjpydW5Q
ZW5kaW5nVGFza3MoKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmV2ZW50UmVjZWl2ZWQoKSk7
CisKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195274</attachid>
            <date>2013-03-27 04:46:38 -0700</date>
            <delta_ts>2013-03-28 12:13:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107027-20130327114219.patch</filename>
            <type>text/plain</type>
            <size>14152</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2OTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzIxMmEyYjFiMWQyM2Jl
ZTFlMGM2MjdlMjE3MGUyYmI3YmRiMWVhYi4uODBlMmFmMWQwNWNkMDlkMzc5YzUwZmU0NjM0NTkz
ZjZmOGY1YmRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAzLTI3ICBKb2hu
IEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gTm90aWZ5IGVtYmVkZGVyIG9mIHByb2dyYW1tYXRpYyBzY3JvbGxzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDI3CisKKyAgICAgICAgTm90
aWZ5IHRoZSBlbWJlZGRlciBvZiBXZWJLaXQgc2Nyb2xscyAoZS5nLiBzY3JvbGxUbywKKyAgICAg
ICAgc2Nyb2xsQnkgZXRjKS4KKworICAgICAgICBBZGRzIGRpZFByb2dyYW1tYXRpY2FsbHlTY3Jv
bGwgY2FsbGJhY2sgdG8gdGhlIENocm9tZUNsaWVudC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgd2l0aCBXZWJLaXQgdW5pdCB0ZXN0czog
UHJvZ3JhbW1hdGljU2Nyb2xsVGVzdC4KKworICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
OjpkaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKToKKwog
MjAxMy0wMy0yNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmVuYW1lIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5IHRvIGlzUmVhZE9ubHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTA1YjVkMGQ1ZDEzNzg0ZTIyZDdhMjAwOTFiN2I4
MTJmMDNkYjU4MS4uYzQwNTRiODNiMzBmOWMwMzYwMWU0YTlmMWEwMTM5YmJlYzJiODA5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMy0wMy0yNyAgSm9o
biBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21p
dW1dIE5vdGlmeSBlbWJlZGRlciBvZiBwcm9ncmFtbWF0aWMgc2Nyb2xscy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzAyNworCisgICAgICAgIE5v
dGlmeSB0aGUgZW1iZWRkZXIgb2YgV2ViS2l0IHNjcm9sbHMgKGUuZy4gc2Nyb2xsVG8sCisgICAg
ICAgIHNjcm9sbEJ5IGV0YykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lkZ2V0Q2xp
ZW50Lmg6CisgICAgICAgIChXZWJXaWRnZXRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
aWRnZXRDbGllbnQ6OmRpZFByb2dyYW1tYXRpY2FsbHlTY3JvbGwpOgorICAgICAgICAqIHNyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6
Y29udGVudHNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnRJbXBsOjpkaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKToKKyAgICAgICAg
KiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6Cisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmRpZFByb2dyYW1tYXRpY2FsbHlTY3JvbGwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAg
KiB0ZXN0cy9Qcm9ncmFtbWF0aWNTY3JvbGxUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoUHJvZ3JhbW1hdGljU2Nyb2xsVGVzdCk6CisgICAgICAgIChXZWJLaXQ6
OlByb2dyYW1tYXRpY1Njcm9sbFRlc3Q6OlByb2dyYW1tYXRpY1Njcm9sbFRlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQcm9ncmFtbWF0aWNTY3JvbGxUZXN0OjpUZWFyRG93bik6CisgICAgICAgIChX
ZWJLaXQ6OlByb2dyYW1tYXRpY1Njcm9sbFRlc3Q6OnJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQp
OgorICAgICAgICAoVGVzdFByb2dyYW1tYXRpY1Njcm9sbENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OlRlc3RQcm9ncmFtbWF0aWNTY3JvbGxDbGllbnQ6OlRlc3RQcm9ncmFtbWF0aWNTY3JvbGxD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpUZXN0UHJvZ3JhbW1hdGljU2Nyb2xsQ2xpZW50Ojpl
dmVudFJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6VGVzdFByb2dyYW1tYXRpY1Njcm9sbENs
aWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorCiAyMDEzLTAzLTI3ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6cmVhZE9ubHkgdG8gaXNSZWFkT25seQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKaW5kZXggZjQ2YTI0MzM5MmViYmRjYzIzNzE4MTU0NWVmODczMzNiYTNhNmEx
MC4uNjQ3MWVkYWMwYjE1MGEzODU0N2M3ODRkOGEwNzRkOGM5YzRjMjIxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCkBAIC0xNzgsNiArMTc4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0VXBkYXRlZChGcmFtZSopIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0IHsgfTsgLy8gQ3VycmVu
dGx5IG9ubHkgTWFjIGhhcyBhIG5vbiBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KIAorICAgIC8vIGRp
ZFByb2dyYW1tYXRpY2FsbHlTY3JvbGwgc2hvdWxkIGJlIGNhbGxlZCBvbiBhbnkgYXR0ZW1wdCB0
byBzZXQgdGhlIHNjcm9sbCBwb3NpdGlvbiBwcm9ncmFtbWF0aWNhbGx5LAorICAgIC8vIGV2ZW4g
dG8gdGhlIHNhbWUgb2Zmc2V0LgorICAgIHZpcnR1YWwgdm9pZCBkaWRQcm9ncmFtbWF0aWNhbGx5
U2Nyb2xsKEZyYW1lKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCB7IH0KKwogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChFbGVt
ZW50KiwgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSBj
b25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCA0YjExYWJhYWQ2ZDgwMDU4ZjhiNTVhMzNjMjU1YTY5YTRmOGU3
OTk1Li4zNDE5N2RlNDYxY2EwYzBiZjA1NTRiYzkwMTMyM2E0MzZlYTA5MDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xODQxLDYgKzE4NDEsOSBAQCB2b2lkIEZyYW1lVmlldzo6
c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogICAgIGlmIChu
ZXdTY3JvbGxQb3NpdGlvbiA9PSBzY3JvbGxQb3NpdGlvbigpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hy
b21lKCktPmNsaWVudCgpLT5kaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKG1fZnJhbWUuZ2V0KCks
IG5ld1Njcm9sbFBvc2l0aW9uKTsKKwogICAgIGlmIChyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRh
dGUobmV3U2Nyb2xsUG9zaXRpb24pKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpCmluZGV4IDZlNGE0ZDg2MDA3NWI1NGU0YjU0NzY3NzAxZWRhZDQ5Y2FjYjE0
NjIuLjA3ZTlmMmZhZTgwZGY1MjU1Njk3YTUyZjhlNzE4ZDMyODhiYjU2YTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTAyLDYgKzEwMiw3IEBACiAgICAgICAgICAgICAndGVz
dHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9Qb3B1
cENvbnRhaW5lclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QcmVyZW5kZXJpbmdUZXN0
LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvUHJvZ3JhbW1hdGljU2Nyb2xsVGVzdC5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL1JlZ2lvblRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9S
ZW5kZXJUYWJsZUNlbGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVS
b3dUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJXaWRnZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdl
dENsaWVudC5oCmluZGV4IGI2OGM1ZWNjNzVjYmQ0Y2RiOWMyZDczMjM4ZTg2NDBlYmEwY2EyODQu
LmE5MDU5NjRiYjE2YTVjNDliZDhiZWI5N2Y1MjhlM2U3ZDVjNjg2OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCkBAIC0xNzIsNiArMTcy
LDkgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3aGVuIGEgZ2VzdHVyZSBldmVudCBpcyBoYW5k
bGVkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2Vz
dHVyZUV2ZW50JiBldmVudCwgYm9vbCBldmVudENhbmNlbGxlZCkgeyB9CiAKKyAgICAvLyBDYWxs
ZWQgd2hlbiBXZWJLaXQgcHJvZ3JhbW1hdGljYWxseSBzY3JvbGxzLgorICAgIHZpcnR1YWwgdm9p
ZCBkaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKGNvbnN0IFdlYlBvaW50JiBzY3JvbGxQb2ludCkg
eyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViV2lkZ2V0Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCBkNDVk
ZjNlNjNhY2VmYTg3NTc3NGY3OWIzZDcyODljNzcwZDZmMDc0Li4wYTE0ZGE5MWM1MWRmYmIzY2Uw
YWNjMGYzY2E4YTY0YWRlZTc5NzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNTczLDYgKzU3MywxMyBAQCB2b2lkIENocm9tZUNs
aWVudEltcGw6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRTaXpl
JiBzaXplKSBjbwogICAgICAgICB3ZWJmcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUNvbnRlbnRz
U2l6ZSh3ZWJmcmFtZSwgc2l6ZSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZGlkUHJv
Z3JhbW1hdGljYWxseVNjcm9sbChGcmFtZSogZnJhbWUsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQ
b2ludCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWUtPnZpZXcoKS0+aW5Qcm9ncmFtbWF0aWNT
Y3JvbGwoKSk7CisgICAgaWYgKGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpID09IGZyYW1lKQor
ICAgICAgICBtX3dlYlZpZXctPmRpZFByb2dyYW1tYXRpY2FsbHlTY3JvbGwoc2Nyb2xsUG9pbnQp
OworfQorCiB2b2lkIENocm9tZUNsaWVudEltcGw6OmxheW91dFVwZGF0ZWQoRnJhbWUqIGZyYW1l
KSBjb25zdAogewogICAgIG1fd2ViVmlldy0+bGF5b3V0VXBkYXRlZChXZWJGcmFtZUltcGw6OmZy
b21GcmFtZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oCmluZGV4IGRiY2NkNGI2YzA3YzM0NTI4NzIyZTZkOGE2ZWQ5Njk5M2E5NGRmZjEu
LjQ4N2MzNzJjODcyYjhhYTA3OTNhM2IyYTI3MGU4Yzc3NTcxMzkyNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTEyNyw2ICsxMjcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4o
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0OwogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdl
Q2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIFBsYXRmb3JtUGFnZUNs
aWVudCh0aGlzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKFdlYkNv
cmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBkaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0VXBkYXRlZChX
ZWJDb3JlOjpGcmFtZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1Zp
ZXcoCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA2NmU3MWEwNDg4YzE5ZDU5
Nzk5M2EyNGFhMDE2ZjBlZThiNDVkY2ZkLi45YTc2YjQ4MTEzMWRiYzQyN2UxM2FiODNmY2E1Nzk2
NjQ5NjJlMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC00MjgxLDYgKzQyODEsMTEgQEAgYm9vbCBXZWJWaWV3SW1wbDo6ZGV0ZWN0Q29udGVudE9u
VG91Y2goY29uc3QgV2ViUG9pbnQmIHBvc2l0aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIFdlYlZpZXdJbXBsOjpkaWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBzY3JvbGxQb2ludCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkUHJvZ3JhbW1hdGlj
YWxseVNjcm9sbChzY3JvbGxQb2ludCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnNldFZpc2li
aWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzSW5pdGlhbFN0YXRlKSB7CiAg
ICAgaWYgKCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApp
bmRleCAyODNkNGNmOTJmYzA3Y2IzMmNkYWVlOTY0OWIxNGEwN2Q1ZTk0ZjgwLi4xMzRjNDVkOTdl
MDA0YWM2MzA4MTMwMmUyNTE5Y2ZlNzFhZmQzM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKQEAgLTU0MCw2ICs1NDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
Y2hlZHVsZUFuaW1hdGlvbigpOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZFByb2dyYW1tYXRpY2Fs
bHlTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcm9sbFBvaW50KTsKKwogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9v
bCk7CiAKICAgICBXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogc2VsZWN0UG9wdXAoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdFBvcHVwLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1Byb2dyYW1tYXRpY1Njcm9sbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9Qcm9ncmFtbWF0aWNTY3JvbGxUZXN0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NzZmMzdjZjNmYTBlMTJmMDY5ZGNkZDE4MzkyNzM2ZWIwOWQ2MzAwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qcm9ncmFtbWF0aWNTY3JvbGxUZXN0LmNw
cApAQCAtMCwwICsxLDE2NSBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRnJh
bWVUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIldlYkZyYW1l
LmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUltcGwu
aCIKKyNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQu
aCIKKyNpbmNsdWRlICJXZWJTY3JpcHRTb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJTZXR0aW5ncy5o
IgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUg
PHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1cHBvcnQu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrV2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJh
bWVDbGllbnQgeworfTsKKworY2xhc3MgUHJvZ3JhbW1hdGljU2Nyb2xsVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBQcm9ncmFtbWF0aWNTY3JvbGxUZXN0KCkKKyAg
ICAgICAgOiBtX2Jhc2VVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vIikKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIFBsYXRmb3JtOjpj
dXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorCisgICAgdm9pZCByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFtZSkKKyAgICB7CisgICAgICAgIFVSTFRlc3RIZWxw
ZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9i
YXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVOYW1lLmNfc3RyKCkpKTsK
KyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBtX2Jhc2VVUkw7CisgICAgTW9ja1dlYkZyYW1lQ2xp
ZW50IG1fbW9ja1dlYkZyYW1lQ2xpZW50OworfTsKKworY2xhc3MgVGVzdFByb2dyYW1tYXRpY1Nj
cm9sbENsaWVudCA6IHB1YmxpYyBXZWJWaWV3Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBUZXN0UHJv
Z3JhbW1hdGljU2Nyb2xsQ2xpZW50KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgfQor
ICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgbV9ldmVudFJlY2VpdmVkID0gZmFsc2U7
CisgICAgfQorICAgIGJvb2wgZXZlbnRSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRS
ZWNlaXZlZDsgfQorCisgICAgLy8gV2ViV2lkZ2V0Q2xpZW50OgorICAgIHZpcnR1YWwgdm9pZCBk
aWRQcm9ncmFtbWF0aWNhbGx5U2Nyb2xsKGNvbnN0IFdlYlBvaW50JikgT1ZFUlJJREUKKyAgICB7
CisgICAgICAgIG1fZXZlbnRSZWNlaXZlZCA9IHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAg
IGJvb2wgbV9ldmVudFJlY2VpdmVkOworfTsKKworVEVTVF9GKFByb2dyYW1tYXRpY1Njcm9sbFRl
c3QsIFVzZXJTY3JvbGwpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgic2hvcnRf
c2Nyb2xsLmh0bWwiKTsKKyAgICBUZXN0UHJvZ3JhbW1hdGljU2Nyb2xsQ2xpZW50IGNsaWVudDsK
KworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3
QW5kTG9hZChtX2Jhc2VVUkwgKyAic2hvcnRfc2Nyb2xsLmh0bWwiLCBmYWxzZSwgMCwgJmNsaWVu
dCk7CisgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcklu
Q29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VT
Y2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6
ZSgxMDAwLCAxMDAwKSk7CisgICAgd2ViVmlldy0+bGF5b3V0KCk7CisKKyAgICBXZWJWaWV3SW1w
bCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHdlYlZpZXcpOworICAg
IEVYUEVDVF9GQUxTRShjbGllbnQuZXZlbnRSZWNlaXZlZCgpKTsKKworICAgIC8vIE5vbiB6ZXJv
IHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbC4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRT
Y2FsZShXZWJTaXplKDksIDEzKSwgMi4wZik7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5ldmVu
dFJlY2VpdmVkKCkpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKworVEVTVF9GKFByb2dy
YW1tYXRpY1Njcm9sbFRlc3QsIFByb2dyYW1tYXRpY1Njcm9sbCkKK3sKKyAgICByZWdpc3Rlck1v
Y2tlZEh0dHBVUkxMb2FkKCJsb25nX3Njcm9sbC5odG1sIik7CisgICAgVGVzdFByb2dyYW1tYXRp
Y1Njcm9sbENsaWVudCBjbGllbnQ7CisKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0
SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImxvbmdfc2Nyb2xsLmh0
bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBs
eURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXctPnNldHRp
bmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdl
YlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQo
KTsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJ
bXBsKj4od2ViVmlldyk7CisgICAgV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwgPSB3ZWJWaWV3SW1w
bC0+bWFpbkZyYW1lSW1wbCgpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWVJbXBs
LT5mcmFtZVZpZXcoKTsKKworICAgIC8vIFNsb3cgc2Nyb2xsIHBhdGguCisgICAgZnJhbWVWaWV3
LT5zZXRDYW5CbGl0T25TY3JvbGwoZmFsc2UpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZXZl
bnRSZWNlaXZlZCgpKTsKKyAgICBmcmFtZUltcGwtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291
cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjApOyIpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQu
ZXZlbnRSZWNlaXZlZCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKyAgICBmcmFtZUltcGwtPmV4
ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsQnkoMCwgMCk7IikpOwor
ICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZXZlbnRSZWNlaXZlZCgpKTsKKyAgICBjbGllbnQucmVz
ZXQoKTsKKworICAgIC8vIEZhc3Qgc2Nyb2xsIHBhdGguCisgICAgZnJhbWVJbXBsLT5mcmFtZVZp
ZXcoKS0+c2V0Q2FuQmxpdE9uU2Nyb2xsKHRydWUpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQu
ZXZlbnRSZWNlaXZlZCgpKTsKKyAgICBmcmFtZUltcGwtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0
U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjEpOyIpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGll
bnQuZXZlbnRSZWNlaXZlZCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKyAgICBmcmFtZUltcGwt
PmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsQnkoMCwgMCk7Iikp
OworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZXZlbnRSZWNlaXZlZCgpKTsKKyAgICBjbGllbnQu
cmVzZXQoKTsKKworICAgIHdlYlZpZXctPmNsb3NlKCk7Cit9CisKK1RFU1RfRihQcm9ncmFtbWF0
aWNTY3JvbGxUZXN0LCBVc2VyU2Nyb2xsT25NYWluVGhyZWFkKQoreworICAgIHJlZ2lzdGVyTW9j
a2VkSHR0cFVSTExvYWQoImxvbmdfc2Nyb2xsLmh0bWwiKTsKKyAgICBUZXN0UHJvZ3JhbW1hdGlj
U2Nyb2xsQ2xpZW50IGNsaWVudDsKKworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RI
ZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAibG9uZ19zY3JvbGwuaHRt
bCIsIHRydWUsIDAsICZjbGllbnQpOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5
RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlldy0+c2V0dGlu
Z3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2Vi
Vmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgp
OworCisgICAgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmU7CisgICAgZ2VzdHVyZS50eXBlID0gV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOworICAgIHdlYlZpZXctPmhhbmRsZUlucHV0
RXZlbnQoZ2VzdHVyZSk7CisgICAgRnJhbWVUZXN0SGVscGVyczo6cnVuUGVuZGluZ1Rhc2tzKCk7
CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5ldmVudFJlY2VpdmVkKCkpOworCisgICAgZ2VzdHVy
ZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTsKKyAgICBnZXN0dXJl
LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IDQwOworICAgIHdlYlZpZXctPmhhbmRsZUlucHV0
RXZlbnQoZ2VzdHVyZSk7CisgICAgRnJhbWVUZXN0SGVscGVyczo6cnVuUGVuZGluZ1Rhc2tzKCk7
CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5ldmVudFJlY2VpdmVkKCkpOworCisgICAgZ2VzdHVy
ZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAgICBnZXN0dXJlLmRh
dGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IDA7CisgICAgd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVu
dChnZXN0dXJlKTsKKyAgICBGcmFtZVRlc3RIZWxwZXJzOjpydW5QZW5kaW5nVGFza3MoKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoY2xpZW50LmV2ZW50UmVjZWl2ZWQoKSk7CisKKyAgICB3ZWJWaWV3LT5j
bG9zZSgpOworfQorCit9Cg==
</data>
<flag name="review"
          id="217134"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="217528"
          type_id="3"
          status="-"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>