<?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>43449</bug_id>
          
          <creation_ts>2010-08-03 17:04:20 -0700</creation_ts>
          <short_desc>[chromium] Generate drag images for HTML elements and selections.</short_desc>
          <delta_ts>2010-08-24 09:07:18 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>259754</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-03 17:04:20 -0700</bug_when>
    <thetext>http://code.google.com/p/chromium/issues/detail?id=16142 for test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259758</commentid>
    <comment_count>1</comment_count>
      <attachid>63393</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-03 17:10:58 -0700</bug_when>
    <thetext>Created attachment 63393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259760</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-03 17:16:00 -0700</bug_when>
    <thetext>There&apos;s a few issues with this patch.

1) On GTK (and possibly other platforms, since I haven&apos;t tested yet), selection text gets rendered with a white text color, so the drag image looks terrible. I fixed this by passing PaintBehaviorForceBlackText, but this is suboptimal as well, since this forces all text to be black.

2) When setting an element as the drag image, the background is also drawn. If you try the test case attached to the Chromium bug, we end up dragging around a long white block around. We don&apos;t want (always) want the background. I&apos;m not sure how I can force the renderer to skip painting the background though... the Mac port seems to get around this by scraping pixels directly from the NSView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259789</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-03 18:30:45 -0700</bug_when>
    <thetext>It also renders different on Windows and GTK+ though I don&apos;t understand why...
The code in the patch isn&apos;t really platform-specific...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260221</commentid>
    <comment_count>4</comment_count>
      <attachid>63493</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-04 14:46:12 -0700</bug_when>
    <thetext>Created attachment 63493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260324</commentid>
    <comment_count>5</comment_count>
      <attachid>63493</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-04 18:56:09 -0700</bug_when>
    <thetext>Comment on attachment 63493
Patch

WebCore/page/Frame.h:225
 +          DragImageRef dragImageForElement(Node* node);
Generally we don&apos;t give arguments names when the names don&apos;t add clarity.

WebCore/page/chromium/FrameChromium.cpp:47
 +      renderer-&gt;updateDragState(true);
I probably would have created saveState/restoreState functions for these.

WebCore/page/chromium/FrameChromium.cpp:67
 +      // Restore original state.
Functional devisions ad more clarity than comment blocks.  Even if the functions are only called once.

I would actually probably have used a RAII instead of two functions even.WebCore/page/chromium/FrameChromium.cpp:82
 +          return result;
Eh, just return 0 here.

WebCore/page/chromium/FrameChromium.cpp:102
 +      result = createDragImageFromImage(buffer-&gt;image());
And just return directly here.  no need for result.

WebCore/page/chromium/FrameChromium.cpp:84
 +      IntRect paintingRect = enclosingIntRect(selectionBounds());
Are we intentionally rounding here...

WebCore/page/chromium/FrameChromium.cpp:89
 +      buffer-&gt;context()-&gt;clip(FloatRect(0, 0, paintingRect.right(), paintingRect.bottom()));
Only then to convert back to floats here?

I wish we had some way to test this stuff.  DRT ideally should have a way to dump the drag image.  Or expose it to javascript so it could be drawn to a canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260325</commentid>
    <comment_count>6</comment_count>
      <attachid>63493</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-04 18:56:53 -0700</bug_when>
    <thetext>Comment on attachment 63493
Patch

I&apos;d like to see one more round.  Perhaps one of the other CC&apos;d folks would have ideas about testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260885</commentid>
    <comment_count>7</comment_count>
      <attachid>63640</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-05 14:55:42 -0700</bug_when>
    <thetext>Created attachment 63640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260887</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-05 14:58:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 63493 [details])
&gt; WebCore/page/Frame.h:225
&gt;  +          DragImageRef dragImageForElement(Node* node);
&gt; Generally we don&apos;t give arguments names when the names don&apos;t add clarity.
&gt; 

Done.

&gt; WebCore/page/chromium/FrameChromium.cpp:47
&gt;  +      renderer-&gt;updateDragState(true);
&gt; I probably would have created saveState/restoreState functions for these.
&gt; 
&gt; WebCore/page/chromium/FrameChromium.cpp:67
&gt;  +      // Restore original state.
&gt; Functional devisions ad more clarity than comment blocks.  Even if the functions are only called once.
&gt; 

Done.

&gt; I would actually probably have used a RAII instead of two functions even.
&gt;
&gt; WebCore/page/chromium/FrameChromium.cpp:82
&gt;  +          return result;
&gt; Eh, just return 0 here.
&gt; 

Done.

&gt; WebCore/page/chromium/FrameChromium.cpp:102
&gt;  +      result = createDragImageFromImage(buffer-&gt;image());
&gt; And just return directly here.  no need for result.
&gt; 

Done.

&gt; WebCore/page/chromium/FrameChromium.cpp:84
&gt;  +      IntRect paintingRect = enclosingIntRect(selectionBounds());
&gt; Are we intentionally rounding here...
&gt; 
&gt; WebCore/page/chromium/FrameChromium.cpp:89
&gt;  +      buffer-&gt;context()-&gt;clip(FloatRect(0, 0, paintingRect.right(), paintingRect.bottom()));
&gt; Only then to convert back to floats here?
&gt; 

Yes. FrameView::paint() and GraphicsContext::translate() take integer arguments.

&gt; I wish we had some way to test this stuff.  DRT ideally should have a way to dump the drag image.  Or expose it to javascript so it could be drawn to a canvas.

Several questions:
1) Is there a better way to do dragImageForSelection()? PaintBehaviorForceBlackText seems like an ugly hack, and it&apos;s unnecessary on the Mac. Is there some way to tell the renderer to paint the selection, but without the selection highlight?

2) dragImageForElement and dragImageForSelection are (to the best of my understanding) platform independent. Would it make sense to move this into Frame so all the other ports can use it? It&apos;s worth pointing out that some ports already have their own implementations of these functions (with different names) as well...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262863</commentid>
    <comment_count>9</comment_count>
      <attachid>64045</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-10 14:45:28 -0700</bug_when>
    <thetext>Created attachment 64045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262864</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-10 14:46:38 -0700</bug_when>
    <thetext>I made a minor update to the patch so I don&apos;t need to force foreground text color to be black anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262894</commentid>
    <comment_count>11</comment_count>
      <attachid>64053</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-10 15:52:13 -0700</bug_when>
    <thetext>Created attachment 64053
Patch

Forgot to update the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263519</commentid>
    <comment_count>12</comment_count>
      <attachid>64053</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-11 16:51:32 -0700</bug_when>
    <thetext>Comment on attachment 64053
Patch

How do other platforms do this?  Why is dragImageForElement chromium-only?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263521</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-11 17:03:52 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 64053 [details])
&gt; How do other platforms do this?  Why is dragImageForElement chromium-only?

This is unimplemented on almost all platforms except Mac/Win Safari. They have their own implementation (see Frame::snapshotDragImage and Frame::selectionImage).

The only 2 reasons the two methods are Chromium-only is because I&apos;m not sure how to handle the platforms that already have their own implementation. I&apos;m also not certain of the correctness--on Windows and GTK, I have no problems, but on OS X, I&apos;m seeing occasional crashes in gfx::CGImageToSkBitmap when dragging selections (I haven&apos;t reproed it when DOM nodes are set as the drag image yet) and I don&apos;t understand why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263946</commentid>
    <comment_count>14</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-12 13:35:20 -0700</bug_when>
    <thetext>It looks like Safari uses Frame::nodeImage(Node*).  Can we do the same for chromium?  Bonus points if you make the return type a DragImageRef and pull the function out from behind the platform #ifs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263948</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-12 13:39:40 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; It looks like Safari uses Frame::nodeImage(Node*).  Can we do the same for chromium?  Bonus points if you make the return type a DragImageRef and pull the function out from behind the platform #ifs.

That is, safari win uses Frame::nodeImage(Node*) and safari mac uses Frame::snapshotDragImage(Node*, NSRect* imageRect, NSRect* elementRect).  However both have a nodeImage(Node*) method and that&apos;s the signature we want for chromium, so it seems worthwhile to pull that out and use it in Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263979</commentid>
    <comment_count>16</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-12 14:30:08 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; It looks like Safari uses Frame::nodeImage(Node*).  Can we do the same for chromium?  Bonus points if you make the return type a DragImageRef and pull the function out from behind the platform #ifs.
&gt; 
&gt; That is, safari win uses Frame::nodeImage(Node*) and safari mac uses Frame::snapshotDragImage(Node*, NSRect* imageRect, NSRect* elementRect).  However both have a nodeImage(Node*) method and that&apos;s the signature we want for chromium, so it seems worthwhile to pull that out and use it in Chromium.

I&apos;ll rename the existing nodeImage methods, but before I do that, I&apos;m also wondering--is it worth replacing the current Safari implementations with the new dragImage* methods? Since they&apos;re platform neutral, it&apos;d seem to make sense but maybe I&apos;m missing something...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264516</commentid>
    <comment_count>17</comment_count>
      <attachid>64379</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-13 15:18:35 -0700</bug_when>
    <thetext>Created attachment 64379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264653</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-14 00:55:54 -0700</bug_when>
    <thetext>Attachment 64379 did not build on win:
Build output: http://queues.webkit.org/results/3774154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265175</commentid>
    <comment_count>19</comment_count>
      <attachid>64379</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-16 11:21:43 -0700</bug_when>
    <thetext>Comment on attachment 64379
Patch

The changes to Frame* look right to me.  I don&apos;t know enough about the RenderObject.cpp to say whether that change is correct or not.  Can a reviewer more familiar with that code comment?

&gt; diff --git a/WebCore/page/chromium/FrameChromium.cpp b/WebCore/page/chromium/FrameChromium.cpp
&gt; +    // When generating the drag image for an element, ignore the document background.
&gt; +    m_view-&gt;setBaseBackgroundColor(Color(255, 255, 255, 0));
Can you use Color::white here?  Maybe you can use colorWithOverrideAlpha?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265801</commentid>
    <comment_count>20</comment_count>
      <attachid>64646</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-17 15:29:28 -0700</bug_when>
    <thetext>Created attachment 64646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265809</commentid>
    <comment_count>21</comment_count>
      <attachid>64649</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-17 15:45:46 -0700</bug_when>
    <thetext>Created attachment 64649
Patch

Use colorWithOverrideAlpha instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265875</commentid>
    <comment_count>22</comment_count>
      <attachid>64657</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-17 17:38:57 -0700</bug_when>
    <thetext>Created attachment 64657
Patch

Speculative compile fix for Qt/Wince.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266175</commentid>
    <comment_count>23</comment_count>
      <attachid>64657</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 09:52:25 -0700</bug_when>
    <thetext>Comment on attachment 64657
Patch

Looks good.  I still think a RIIA is a more fail-safe way of doing save/restore. :)

I don&apos;t understand the RenderObject change, and it&apos;s not documented in the ChangeLog

     if (style()-&gt;userSelect() == SELECT_NONE
 1595         || (frame()-&gt;view()-&gt;paintBehavior() &amp; PaintBehaviorSelectionOnly))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266359</commentid>
    <comment_count>24</comment_count>
      <attachid>64768</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-18 13:56:10 -0700</bug_when>
    <thetext>Created attachment 64768
Patch

Added a comment for the RenderObject change.\n\nEric, I&apos;d be happy to use RAII but I&apos;m not sure how...? Maybe there&apos;s some obvious RenderState RAII object in WebKit I&apos;m overlooking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266361</commentid>
    <comment_count>25</comment_count>
      <attachid>64768</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 14:02:44 -0700</bug_when>
    <thetext>Comment on attachment 64768
Patch

I don&apos;t feel like I&apos;m a very good reviewer for this, but this generally looks sane to me.  Folks who should have more knowledge of this are CC&apos;d, so if I&apos;m doing something wrong here, they should feel encouraged to yell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266362</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 14:03:55 -0700</bug_when>
    <thetext>There is no &quot;view state&quot; RAII, you&apos;d have to create one.  I&apos;m not really sure why the rendering state/view state needs to be saved for these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266365</commentid>
    <comment_count>27</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-18 14:07:17 -0700</bug_when>
    <thetext>I&apos;d really like to see some tests and checks for very large node bounds.  Just doing something simple (like clamping the drag image to 512x512 or something small) would be sufficient, so long as it&apos;s tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266366</commentid>
    <comment_count>28</comment_count>
      <attachid>64768</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-18 14:08:23 -0700</bug_when>
    <thetext>Comment on attachment 64768
Patch

Per jamesr comments, I need to add a check for ImageBuffer::create failure.

For what it&apos;s worth, I&apos;m saving the various bits that I twiddle in the view, because that&apos;s what other ports have done in their nodeImage implementations. I tried leaving it out once, which resulted in rather interesting painting results, so I think it&apos;s required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266378</commentid>
    <comment_count>29</comment_count>
      <attachid>64773</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-18 14:31:45 -0700</bug_when>
    <thetext>Created attachment 64773
Patch

Add RAII and ImageBuffer creation check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266383</commentid>
    <comment_count>30</comment_count>
      <attachid>64773</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 14:36:59 -0700</bug_when>
    <thetext>Comment on attachment 64773
Patch

WebCore/page/chromium/FrameChromium.cpp:88
 +      m_doc-&gt;updateLayout();
Why do we need to call updateLayout a second time?

WebCore/page/chromium/FrameChromium.cpp:86
 +      // Restore original state.
Why wouldn&apos;t this save/restore just be part of your RAII?
(The answer is because you use your RAII in two places, I guess.)

WebCore/page/chromium/FrameChromium.cpp:66
 +      const ScopedViewState state(m_view);
This will end up restoring after the return statement (which is fine).  Just pointing out that its at a slightly different time than your previous patch.

WebCore/page/chromium/FrameChromium.cpp:120
 +      m_doc-&gt;updateLayout();
manual layout updates are rarely needed.  Why is this needed here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266387</commentid>
    <comment_count>31</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-18 14:45:24 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 64773 [details])
&gt; WebCore/page/chromium/FrameChromium.cpp:88
&gt;  +      m_doc-&gt;updateLayout();
&gt; Why do we need to call updateLayout a second time?

I don&apos;t honestly know, but this is what FrameMac.mm does in selectionImage and snapshotDragImage.

&gt; 
&gt; WebCore/page/chromium/FrameChromium.cpp:86
&gt;  +      // Restore original state.
&gt; Why wouldn&apos;t this save/restore just be part of your RAII?
&gt; (The answer is because you use your RAII in two places, I guess.)
&gt; 

It could. I guess it&apos;s easier to just make it capture the superset of state that both functions care about.

&gt; WebCore/page/chromium/FrameChromium.cpp:66
&gt;  +      const ScopedViewState state(m_view);
&gt; This will end up restoring after the return statement (which is fine).  Just pointing out that its at a slightly different time than your previous patch.

Oops. That is probably a mistake...

&gt; 
&gt; WebCore/page/chromium/FrameChromium.cpp:120
&gt;  +      m_doc-&gt;updateLayout();
&gt; manual layout updates are rarely needed.  Why is this needed here?

See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266397</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 14:55:32 -0700</bug_when>
    <thetext>We have ASSERTs to make sure layout is up to date.  So I would remove the latter two updateLayout() calls, as I don&apos;t think they&apos;re necessary (ASSERTs will tell us if they are).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266399</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 14:56:06 -0700</bug_when>
    <thetext>Again, thank you for your persistance with this bug.  I think you&apos;re making a significant improvement in the code quality here by sharing this method across platforms!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266402</commentid>
    <comment_count>34</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-18 14:58:38 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; We have ASSERTs to make sure layout is up to date.  So I would remove the latter two updateLayout() calls, as I don&apos;t think they&apos;re necessary (ASSERTs will tell us if they are).

Does this mean the calls to updateLayout() on line 72 and 108 are possibly redundant as well?

(In reply to comment #33)
&gt; Again, thank you for your persistance with this bug.  I think you&apos;re making a significant improvement in the code quality here by sharing this method across platforms!

It&apos;s not shared yet, but I&apos;d like to share it in a later patch if there are no objections as this should simplify things for all the other ports as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266414</commentid>
    <comment_count>35</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 15:10:48 -0700</bug_when>
    <thetext>Well, so layout is required before painting or before grabbing rects from the rendering tree.  Because layout is how the RenderObjects figure out where they are.  So it makes sense that you&apos;d need to call updateLayoutIfNeeded (I think that&apos;s the name?) or updateLayout right before grabbing a rect off the rendering tree (or you might ASSERT), and certainly before painting.  But you wouldn&apos;t after you&apos;re done since nothing you&apos;re doing in this patch should invalidate layout as far as I can tell?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266969</commentid>
    <comment_count>36</comment_count>
      <attachid>64900</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-19 14:35:48 -0700</bug_when>
    <thetext>Created attachment 64900
Patch

Fix RAII and remove unnecessary updateLayout calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267006</commentid>
    <comment_count>37</comment_count>
      <attachid>64900</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-19 15:37:30 -0700</bug_when>
    <thetext>Comment on attachment 64900
Patch

Still LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267081</commentid>
    <comment_count>38</comment_count>
      <attachid>64900</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-19 17:20:48 -0700</bug_when>
    <thetext>Comment on attachment 64900
Patch

Rejecting patch 64900 from commit-queue.

Unexpected failure when processing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 64900, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
date_status
    return NetworkTransaction().run(lambda: self._post_status_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 56, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 63, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.common.net.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267083</commentid>
    <comment_count>39</comment_count>
      <attachid>64900</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-19 17:23:23 -0700</bug_when>
    <thetext>Comment on attachment 64900
Patch

Status server down?  That&apos;s unpossible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267096</commentid>
    <comment_count>40</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-19 18:01:53 -0700</bug_when>
    <thetext>Equally likely is that this patch breaks mac, and that it is failing to upload the failure log because it&apos;s too large.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267107</commentid>
    <comment_count>41</comment_count>
      <attachid>64900</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-19 18:55:57 -0700</bug_when>
    <thetext>Comment on attachment 64900
Patch

Rejecting patch 64900 from commit-queue.

Unexpected failure when processing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 64900, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
date_status
    return NetworkTransaction().run(lambda: self._post_status_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 56, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 63, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.common.net.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267121</commentid>
    <comment_count>42</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-19 20:06:38 -0700</bug_when>
    <thetext>Yup.  This is an unfortunate bug in the commit-queue.  But I expect this is failing to build on mac, which is why it&apos;s timing out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267459</commentid>
    <comment_count>43</comment_count>
      <attachid>65004</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-20 16:03:06 -0700</bug_when>
    <thetext>Created attachment 65004
Patch

Fix the Mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267462</commentid>
    <comment_count>44</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-08-20 16:05:27 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; Created an attachment (id=65004) [details]
&gt; Patch
&gt; 
&gt; Fix the Mac build.

Also, it is weird/bad form to save an autoreleased pointer into RetainPtr&lt;T&gt;? It seems a little wasteful at the very least, because of refcount churn, but I&apos;m not sure what&apos;s a better approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268177</commentid>
    <comment_count>45</comment_count>
      <attachid>65004</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-23 16:42:32 -0700</bug_when>
    <thetext>Comment on attachment 65004
Patch

I think the bug here is that DragImageRef shouldn&apos;t be a RetainPtr on some platforms and a raw ptr on others.  You might use the getPtr() template, which is how we get pointers out of raw or smart pointers when the code doesn&apos;t necessarily know the type.

I think this is OK.  But we should file a bug about fixing DragImageRef on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268256</commentid>
    <comment_count>46</comment_count>
      <attachid>65004</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-23 18:49:48 -0700</bug_when>
    <thetext>Comment on attachment 65004
Patch

Rejecting patch 65004 from commit-queue.

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

Exiting early after 1 failures. 100 tests run.
42.20s total testing time

99 test cases (99%) succeeded
1 test case (1%) had incorrect layout

Full output: http://queues.webkit.org/results/3786488</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268547</commentid>
    <comment_count>47</comment_count>
      <attachid>65004</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 07:33:06 -0700</bug_when>
    <thetext>Comment on attachment 65004
Patch

That might be a flaky test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268585</commentid>
    <comment_count>48</comment_count>
      <attachid>65004</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-24 09:07:10 -0700</bug_when>
    <thetext>Comment on attachment 65004
Patch

Clearing flags on attachment: 65004

Committed r65904: &lt;http://trac.webkit.org/changeset/65904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268586</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-24 09:07:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63393</attachid>
            <date>2010-08-03 17:10:58 -0700</date>
            <delta_ts>2010-08-04 14:46:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100803171057.patch</filename>
            <type>text/plain</type>
            <size>5204</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDQ1NjIwOWZkZDJkODExNGM4MDQyOTUxZGFmYjFjNGI4N2JjNmQwMC4uOWI3MzUyYjRkYmMzMWJm
MzlmZWYwNTYxNDFkOWMwM2I5MGUxMjdmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0wMyAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0ltYWdlKToKKwogMjAxMC0wOC0wMiAgRGlyayBT
Y2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgc29ydCBvZiBY
Q29kZSBwcm9qZWN0IGZpbGUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDRlNTIyYzRjMmRlZGUwMTMxYTQxMzZjNTVhZDA1MDE0
NmE0OGQyOWYuLjAwZGM5YmNlODNhNDFmNzY0ZjM0NDM2YWI5NjJkYjNlZTQwZTFmN2IgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBA
IC0yMjEsNiArMjIxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRleHRX
aWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCogaW5wdXQpOwogICAgICAgICB2b2lkIHRl
eHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKTsKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQorICAgICAgICBEcmFnSW1hZ2VSZWYgZHJhZ0ltYWdlRm9yRWxlbWVudChOb2RlKiBub2RlKTsK
KyNlbmRpZgogICAgICAgICBEcmFnSW1hZ2VSZWYgZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCk7CiAK
ICAgICAvLyA9PT0gdG8gYmUgbW92ZWQgaW50byBTZWxlY3Rpb25Db250cm9sbGVyCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3Bh
Z2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAKaW5kZXggNTQ4ZTBmYTYzODIyZTBhM2ViZTVi
MzdlYTEwYzgzZDMzNDkzYzVmMS4uYjk5OWQxM2I5NTdhZjIxM2VmY2RlYmQwZDNhYjRmZTM2NWQ3
MDdjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogCkBAIC0zNSwxMiArMzYsNjUgQEAgdXNpbmcgc3RkOjptaW47CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JF
bGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgRHJhZ0ltYWdlUmVmIHJlc3VsdCA9IDA7CisKKyAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJl
bmRlcmVyKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgcmVuZGVyZXItPnVwZGF0ZURy
YWdTdGF0ZSh0cnVlKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV92aWV3LT5z
ZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1v
ZGUuCisKKyAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVj
dCA9IHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCk7CisKKyAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5z
aXplKCkpKTsKKworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXBhaW50aW5nUmVj
dC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xpcChG
bG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0LnJpZ2h0KCksIHBhaW50aW5nUmVjdC5ib3R0b20o
KSkpOworCisgICAgbV92aWV3LT5wYWludChidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0
KTsKKyAgICByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoYnVmZmVyLT5pbWFnZSgp
KTsKKworICAgIC8vIFJlc3RvcmUgb3JpZ2luYWwgc3RhdGUuCisgICAgcmVuZGVyZXItPnVwZGF0
ZURyYWdTdGF0ZShmYWxzZSk7CisgICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOworICAgIG1fdmll
dy0+c2V0Tm9kZVRvRHJhdygwKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIERyYWdJbWFn
ZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsgICAgCi0gICAgaWYgKHNlbGVj
dGlvbigpLT5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiAwOyAgLy8gRklYTUU6IGltcGxlbWVu
dCBtZSEKK3sKKyAgICBEcmFnSW1hZ2VSZWYgcmVzdWx0ID0gMDsKKworICAgIGlmICghc2VsZWN0
aW9uKCktPmlzUmFuZ2UoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIEludFJlY3Qg
cGFpbnRpbmdSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChzZWxlY3Rpb25Cb3VuZHMoKSk7CisKKyAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5n
UmVjdC5zaXplKCkpKTsKKworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXBhaW50
aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+
Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0LnJpZ2h0KCksIHBhaW50aW5nUmVjdC5i
b3R0b20oKSkpOworCisgICAgUGFpbnRCZWhhdmlvciBvbGRQYWludEJlaGF2aW9yID0gbV92aWV3
LT5wYWludEJlaGF2aW9yKCk7CisgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSB3YW50IHRvIGZv
cmNlIGJsYWNrIHRleHQ/IElmIHdlIGRvbid0LCBzZWxlY3RlZCB0ZXh0CisgICAgLy8gaXMgd2hp
dGUgb24gR1RLIGFuZCBsb29rcyByZWFsbHkgYmFkIHdoZW4gaXQncyBiZWluZyBkcmFnZ2VkLiBP
biB0aGUKKyAgICAvLyBvdGhlciBoYW5kLCBGaXJlZm94IG1hbmFnZXMgdG8gZGVhbCB3aXRoIGl0
IGNvcnJlY3RseS4uLgorICAgIC8vIE1heWJlIHRoZSByaWdodCBmaXggaXMgdG8gY2hhbmdlIHRo
ZSByZW5kZXJlciBzbyB0aGF0IHdoZW4geW91IGFzayBmb3IKKyAgICAvLyBqdXN0IHRoZSBzZWxl
Y3Rpb24sIHlvdSBwYWludCBvbmx5IHRoZSBzZWxlY3Rpb24sIGJ1dCB3aXRob3V0IHRoZQorICAg
IC8vIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcuCisgICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9y
KFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0
KTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV92aWV3LT5wYWludChidWZmZXIt
PmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsKKyAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3Io
b2xkUGFpbnRCZWhhdmlvcik7CisgICAgcmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KGJ1ZmZlci0+aW1hZ2UoKSk7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDA2MjQ0YTJkMDQzNGJjNTg0ZGM0MmU0NGQ3
NTFkZjc5OTU5Yjc2ZGIuLjhhZWJmODAwY2IzMWI3NTU3N2VjNTEwYmE0YTU1NGE2OTMzMWRhYzIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0u
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3Bw
CkBAIC00MDAsNyArNDAwLDEyIEBAIHZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERyYWdJbWFn
ZUVsZW1lbnQoTm9kZSogbm9kZSwgY29uc3QgSW50UG9pbnQmIGxvYykKIERyYWdJbWFnZVJlZiBD
bGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2MpIGNvbnN0CiB7
CiAgICAgRHJhZ0ltYWdlUmVmIHJlc3VsdCA9IDA7Ci0gICAgaWYgKG1fZHJhZ0ltYWdlKSB7Cisg
ICAgaWYgKG1fZHJhZ0ltYWdlRWxlbWVudCkgeworICAgICAgICBpZiAobV9mcmFtZSkgeworICAg
ICAgICAgICAgcmVzdWx0ID0gbV9mcmFtZS0+ZHJhZ0ltYWdlRm9yRWxlbWVudChtX2RyYWdJbWFn
ZUVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgbG9jID0gbV9kcmFnTG9jOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICByZXN1bHQgPSBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UobV9kcmFnSW1hZ2UtPmltYWdlKCkpOwogICAgICAgICBsb2MgPSBt
X2RyYWdMb2M7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63493</attachid>
            <date>2010-08-04 14:46:12 -0700</date>
            <delta_ts>2010-08-05 14:55:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100804144610.patch</filename>
            <type>text/plain</type>
            <size>5695</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmZmNjMyYTNjNDUxMDZlM2YxMTMwMWU0YjQ2MDhmNmNjNGI4MTg4My4uZTE5OTFmOTQxYzE4ZDI2
YTc2NjdlYjUxMzllY2UwYzc4MWVhNDcxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0wNCAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0ltYWdlKToKKwogMjAxMC0wOC0wMiAgSmVyZW15
IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGVjdWxhdGl2ZSByZXZl
cnQgb2YgNjQ0MjUgZHVlIHRvIENocm9taXVtIGluc3RhYmlsaXR5CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDRlNTIyYzRjMmRl
ZGUwMTMxYTQxMzZjNTVhZDA1MDE0NmE0OGQyOWYuLjAwZGM5YmNlODNhNDFmNzY0ZjM0NDM2YWI5
NjJkYjNlZTQwZTFmN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yMjEsNiArMjIxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCogaW5w
dXQpOwogICAgICAgICB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKTsKIAor
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgICAgICBEcmFnSW1hZ2VSZWYgZHJhZ0ltYWdlRm9y
RWxlbWVudChOb2RlKiBub2RlKTsKKyNlbmRpZgogICAgICAgICBEcmFnSW1hZ2VSZWYgZHJhZ0lt
YWdlRm9yU2VsZWN0aW9uKCk7CiAKICAgICAvLyA9PT0gdG8gYmUgbW92ZWQgaW50byBTZWxlY3Rp
b25Db250cm9sbGVyCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJv
bWl1bS5jcHAgYi9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAKaW5kZXgg
NTQ4ZTBmYTYzODIyZTBhM2ViZTViMzdlYTEwYzgzZDMzNDkzYzVmMS4uOTZiZDcyMzg2MDVhZTAy
OGYxYTIwMDJkMDIzN2E0ZDE3MzY1NjNlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2Nocm9t
aXVtL0ZyYW1lQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNo
cm9taXVtLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCkBAIC0zNSwxMiArMzYsNzIg
QEAgdXNpbmcgc3RkOjptaW47CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRHJhZ0ltYWdlUmVm
IEZyYW1lOjpkcmFnSW1hZ2VGb3JFbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgRHJhZ0ltYWdl
UmVmIHJlc3VsdCA9IDA7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisg
ICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsKKyAgICBQYWludEJlaGF2aW9yIG9s
ZFBhaW50QmVoYXZpb3IgPSBtX3ZpZXctPnBhaW50QmVoYXZpb3IoKTsKKyAgICBtX3ZpZXctPnNl
dFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29t
cG9zaXRpbmdMYXllcnMpOworICAgIC8vIFdoZW4gZ2VuZXJhdGluZyB0aGUgZHJhZyBpbWFnZSBm
b3IgYW4gZWxlbWVudCwgaWdub3JlIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5kLgorICAgIENvbG9y
IG9sZEJhY2tncm91bmRDb2xvciA9IG1fdmlldy0+YmFzZUJhY2tncm91bmRDb2xvcigpOworICAg
IG1fdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1LCAwKSk7
CisgICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOworICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhu
b2RlKTsgLy8gRW5hYmxlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlLgorCisgICAgSW50
UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSByZW5kZXJlci0+
cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOworCisgICAgT3duUHRyPEltYWdlQnVmZmVy
PiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpKSk7CisKKyAg
ICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRp
bmdSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAs
IHBhaW50aW5nUmVjdC5yaWdodCgpLCBwYWludGluZ1JlY3QuYm90dG9tKCkpKTsKKworICAgIG1f
dmlldy0+cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7CisgICAgcmVzdWx0
ID0gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGJ1ZmZlci0+aW1hZ2UoKSk7CisKKyAgICAvLyBS
ZXN0b3JlIG9yaWdpbmFsIHN0YXRlLgorICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUoZmFs
c2UpOworICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKKyAg
ICBtX3ZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3Iob2xkQmFja2dyb3VuZENvbG9yKTsKKyAg
ICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KDApOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VG
b3JTZWxlY3Rpb24oKQoteyAgICAKLSAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKLSAg
ICAgICAgcmV0dXJuIDA7ICAvLyBGSVhNRTogaW1wbGVtZW50IG1lIQoreworICAgIERyYWdJbWFn
ZVJlZiByZXN1bHQgPSAwOworCisgICAgaWYgKCFzZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQorICAg
ICAgICByZXR1cm4gcmVzdWx0OworCisgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KHNlbGVjdGlvbkJvdW5kcygpKTsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
YnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSkpOworCisgICAg
YnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5n
UmVjdC55KCkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBw
YWludGluZ1JlY3QucmlnaHQoKSwgcGFpbnRpbmdSZWN0LmJvdHRvbSgpKSk7CisKKyAgICBQYWlu
dEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBtX3ZpZXctPnBhaW50QmVoYXZpb3IoKTsKKyAg
ICAvLyBGSVhNRTogRG8gd2UgcmVhbGx5IHdhbnQgdG8gZm9yY2UgYmxhY2sgdGV4dD8gSWYgd2Ug
ZG9uJ3QsIHNlbGVjdGVkIHRleHQKKyAgICAvLyBpcyB3aGl0ZSBvbiBHVEsgYW5kIGxvb2tzIHJl
YWxseSBiYWQgd2hlbiBpdCdzIGJlaW5nIGRyYWdnZWQuIE9uIHRoZQorICAgIC8vIG90aGVyIGhh
bmQsIEZpcmVmb3ggbWFuYWdlcyB0byBkZWFsIHdpdGggaXQgY29ycmVjdGx5Li4uCisgICAgLy8g
TWF5YmUgdGhlIHJpZ2h0IGZpeCBpcyB0byBjaGFuZ2UgdGhlIHJlbmRlcmVyIHNvIHRoYXQgd2hl
biB5b3UgYXNrIGZvcgorICAgIC8vIGp1c3QgdGhlIHNlbGVjdGlvbiwgeW91IHBhaW50IG9ubHkg
dGhlIHNlbGVjdGlvbiwgYnV0IHdpdGhvdXQgdGhlCisgICAgLy8gc2VsZWN0aW9uIGhpZ2hsaWdo
dGluZy4KKyAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlv
bk9ubHkgfCBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQpOworICAgIG1fZG9jLT51cGRhdGVM
YXlvdXQoKTsKKyAgICBtX3ZpZXctPnBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1Jl
Y3QpOworICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKKyAg
ICByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoYnVmZmVyLT5pbWFnZSgpKTsKIAot
ICAgIHJldHVybiAwOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hy
b21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHAKaW5kZXggMDYyNDRhMmQwNDM0YmM1ODRkYzQyZTQ0ZDc1MWRmNzk5NTliNzZkYi4uOGFlYmY4
MDBjYjMxYjc1NTc3ZWM1MTBiYTRhNTU0YTY5MzMxZGFjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTQwMCw3ICs0MDAsMTIgQEAg
dm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6c2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiBub2RlLCBj
b25zdCBJbnRQb2ludCYgbG9jKQogRHJhZ0ltYWdlUmVmIENsaXBib2FyZENocm9taXVtOjpjcmVh
dGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxvYykgY29uc3QKIHsKICAgICBEcmFnSW1hZ2VSZWYgcmVz
dWx0ID0gMDsKLSAgICBpZiAobV9kcmFnSW1hZ2UpIHsKKyAgICBpZiAobV9kcmFnSW1hZ2VFbGVt
ZW50KSB7CisgICAgICAgIGlmIChtX2ZyYW1lKSB7CisgICAgICAgICAgICByZXN1bHQgPSBtX2Zy
YW1lLT5kcmFnSW1hZ2VGb3JFbGVtZW50KG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSk7CisgICAg
ICAgICAgICBsb2MgPSBtX2RyYWdMb2M7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fZHJh
Z0ltYWdlKSB7CiAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShtX2Ry
YWdJbWFnZS0+aW1hZ2UoKSk7CiAgICAgICAgIGxvYyA9IG1fZHJhZ0xvYzsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63640</attachid>
            <date>2010-08-05 14:55:42 -0700</date>
            <delta_ts>2010-08-10 14:45:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100805145541.patch</filename>
            <type>text/plain</type>
            <size>6040</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTkyMmQyNDQzODFiZjY4M2I5MjUxZjM1MGIyNmI2MzdkM2YzYzk0MC4uZTE1MTRhNmExMTUwMzNh
ZjY3ZGZjYzRkMWY3MmNhNjc3MDMzM2ZiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wOC0wNSAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Vmlld1N0YXRlOjpzYXZl
Vmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdTdGF0ZTo6cmVzdG9yZVZpZXdTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0ltYWdlKToKKwogMjAxMC0wOC0wNCAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaAppbmRleCA0ZTUyMmM0YzJkZWRlMDEzMWE0MTM2YzU1YWQwNTAxNDZhNDhk
MjlmLi4yYTFiNDJlOTFkMWE0ZjQ3MzdiM2Q0YWExZTY2YTVjYmJjZDdmZmUyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjIx
LDYgKzIyMSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0ZXh0V2lsbEJl
RGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqIGlucHV0KTsKICAgICAgICAgdm9pZCB0ZXh0RGlk
Q2hhbmdlSW5UZXh0QXJlYShFbGVtZW50Kik7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAg
ICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZvckVsZW1lbnQoTm9kZSopOworI2VuZGlmCiAg
ICAgICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKIAogICAgIC8vID09
PSB0byBiZSBtb3ZlZCBpbnRvIFNlbGVjdGlvbkNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1
bS9GcmFtZUNocm9taXVtLmNwcAppbmRleCA1NDhlMGZhNjM4MjJlMGEzZWJlNWIzN2VhMTBjODNk
MzM0OTNjNWYxLi45Mzk2NDcyODEzMjUzY2IyZjhkOTQwODIxYmVlZGI3N2Y0MTdkODEyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3BwCkBAIC0yOCwxOSArMjgsOTQgQEAK
IAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFt
ZXNwYWNlIHsKKworc3RydWN0IFZpZXdTdGF0ZSB7CisgICAgUGFpbnRCZWhhdmlvciBwYWludEJl
aGF2aW9yOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKK307CisKK1ZpZXdTdGF0ZSBzYXZl
Vmlld1N0YXRlKGNvbnN0IEZyYW1lVmlldyogdmlldykKK3sKKyAgICBWaWV3U3RhdGUgc3RhdGU7
CisgICAgc3RhdGUucGFpbnRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZpb3IoKTsKKyAgICBz
dGF0ZS5iYWNrZ3JvdW5kQ29sb3IgPSB2aWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CisgICAg
cmV0dXJuIHN0YXRlOworfQorCit2b2lkIHJlc3RvcmVWaWV3U3RhdGUoRnJhbWVWaWV3KiB2aWV3
LCBjb25zdCBWaWV3U3RhdGUmIHN0YXRlKQoreworICAgIHZpZXctPnNldFBhaW50QmVoYXZpb3Io
c3RhdGUucGFpbnRCZWhhdmlvcik7CisgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihz
dGF0ZS5iYWNrZ3JvdW5kQ29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZQorCitEcmFnSW1hZ2VS
ZWYgRnJhbWU6OmRyYWdJbWFnZUZvckVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnN0IFZpZXdTdGF0ZSBzdGF0ZSA9IHNhdmVWaWV3
U3RhdGUobV92aWV3LmdldCgpKTsKKyAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUp
OworICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5wYWludEJlaGF2aW9yIHwgUGFp
bnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CisgICAgLy8gV2hlbiBnZW5lcmF0
aW5nIHRoZSBkcmFnIGltYWdlIGZvciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRvY3VtZW50IGJh
Y2tncm91bmQuCisgICAgbV92aWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yKDI1NSwg
MjU1LCAyNTUsIDApKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV92aWV3LT5z
ZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1v
ZGUuCisKKyAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVj
dCA9IHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCk7CisKKyAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5z
aXplKCkpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3Qu
eCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxv
YXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5yaWdodCgpLCBwYWludGluZ1JlY3QuYm90dG9tKCkp
KTsKKworICAgIG1fdmlldy0+cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7
CisKKyAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHN0YXRlLgorICAgIHJlc3RvcmVWaWV3U3RhdGUo
bV92aWV3LmdldCgpLCBzdGF0ZSk7CisgICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0ZShmYWxz
ZSk7CisgICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOworICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJh
dygwKTsKKworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoYnVmZmVyLT5pbWFn
ZSgpKTsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQot
eyAgICAKLSAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7
ICAvLyBGSVhNRTogaW1wbGVtZW50IG1lIQoreworICAgIGlmICghc2VsZWN0aW9uKCktPmlzUmFu
Z2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBWaWV3U3RhdGUgc3RhdGUgPSBz
YXZlVmlld1N0YXRlKG1fdmlldy5nZXQoKSk7CisgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSB3
YW50IHRvIGZvcmNlIGJsYWNrIHRleHQ/IElmIHdlIGRvbid0LCBzZWxlY3RlZCB0ZXh0CisgICAg
Ly8gaXMgd2hpdGUgb24gR1RLIGFuZCBsb29rcyByZWFsbHkgYmFkIHdoZW4gaXQncyBiZWluZyBk
cmFnZ2VkLiBPbiB0aGUKKyAgICAvLyBvdGhlciBoYW5kLCBGaXJlZm94IG1hbmFnZXMgdG8gZGVh
bCB3aXRoIGl0IGNvcnJlY3RseS4uLgorICAgIC8vIE1heWJlIHRoZSByaWdodCBmaXggaXMgdG8g
Y2hhbmdlIHRoZSByZW5kZXJlciBzbyB0aGF0IHdoZW4geW91IGFzayBmb3IKKyAgICAvLyBqdXN0
IHRoZSBzZWxlY3Rpb24sIHlvdSBwYWludCBvbmx5IHRoZSBzZWxlY3Rpb24sIGJ1dCB3aXRob3V0
IHRoZQorICAgIC8vIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcuCisgICAgbV92aWV3LT5zZXRQYWlu
dEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZvcmNl
QmxhY2tUZXh0KTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBJbnRSZWN0IHBh
aW50aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uQm91bmRzKCkpOworCisgICAg
T3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1Jl
Y3Quc2l6ZSgpKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdS
ZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlw
KEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QucmlnaHQoKSwgcGFpbnRpbmdSZWN0LmJvdHRv
bSgpKSk7CisKKyAgICBtX3ZpZXctPnBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1Jl
Y3QpOworCisgICAgcmVzdG9yZVZpZXdTdGF0ZShtX3ZpZXcuZ2V0KCksIHN0YXRlKTsKKyAgICBt
X2RvYy0+dXBkYXRlTGF5b3V0KCk7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKGJ1ZmZlci0+aW1hZ2UoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHAKaW5kZXggMDYyNDRhMmQwNDM0YmM1ODRkYzQyZTQ0ZDc1MWRmNzk5NTliNzZkYi4uOGFl
YmY4MDBjYjMxYjc1NTc3ZWM1MTBiYTRhNTU0YTY5MzMxZGFjMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTQwMCw3ICs0MDAsMTIg
QEAgdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6c2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiBub2Rl
LCBjb25zdCBJbnRQb2ludCYgbG9jKQogRHJhZ0ltYWdlUmVmIENsaXBib2FyZENocm9taXVtOjpj
cmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxvYykgY29uc3QKIHsKICAgICBEcmFnSW1hZ2VSZWYg
cmVzdWx0ID0gMDsKLSAgICBpZiAobV9kcmFnSW1hZ2UpIHsKKyAgICBpZiAobV9kcmFnSW1hZ2VF
bGVtZW50KSB7CisgICAgICAgIGlmIChtX2ZyYW1lKSB7CisgICAgICAgICAgICByZXN1bHQgPSBt
X2ZyYW1lLT5kcmFnSW1hZ2VGb3JFbGVtZW50KG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSk7Cisg
ICAgICAgICAgICBsb2MgPSBtX2RyYWdMb2M7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1f
ZHJhZ0ltYWdlKSB7CiAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSht
X2RyYWdJbWFnZS0+aW1hZ2UoKSk7CiAgICAgICAgIGxvYyA9IG1fZHJhZ0xvYzsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64045</attachid>
            <date>2010-08-10 14:45:28 -0700</date>
            <delta_ts>2010-08-10 15:52:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100810144527.patch</filename>
            <type>text/plain</type>
            <size>6704</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODVlNmFhODYzZGJjYjk3ZTQwOWI2Mzg3ZDk5MDYzNGM2YjgxNWVkMS4uMjg2MzM3Y2I0NmZmOTA4
YzczMGUzYjE2OTU5NGZhYjQzNjQxNGMwNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wOC0xMCAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Vmlld1N0YXRlOjpzYXZl
Vmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdTdGF0ZTo6cmVzdG9yZVZpZXdTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0ltYWdlKToKKwogMjAxMC0wOC0xMCAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9X
ZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA0ZTUyMmM0YzJkZWRlMDEzMWE0MTM2YzU1YWQwNTAx
NDZhNDhkMjlmLi4yYTFiNDJlOTFkMWE0ZjQ3MzdiM2Q0YWExZTY2YTVjYmJjZDdmZmUyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApA
QCAtMjIxLDYgKzIyMSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0ZXh0
V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqIGlucHV0KTsKICAgICAgICAgdm9pZCB0
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50Kik7CiAKKyNpZiBQTEFURk9STShDSFJPTUlV
TSkKKyAgICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZvckVsZW1lbnQoTm9kZSopOworI2Vu
ZGlmCiAgICAgICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKIAogICAg
IC8vID09PSB0byBiZSBtb3ZlZCBpbnRvIFNlbGVjdGlvbkNvbnRyb2xsZXIKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGFnZS9j
aHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcAppbmRleCA1NDhlMGZhNjM4MjJlMGEzZWJlNWIzN2Vh
MTBjODNkMzM0OTNjNWYxLi5kNjcwNDAzZTc5M2VhOGQ0M2YwYmIxZWU3MWJiNDNkMGM2MDE4Mzlk
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAKKysr
IGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3BwCkBAIC0yOCwxOSArMjgs
OTQgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorbmFtZXNwYWNlIHsKKworc3RydWN0IFZpZXdTdGF0ZSB7CisgICAgUGFpbnRCZWhhdmlvciBw
YWludEJlaGF2aW9yOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKK307CisKK1ZpZXdTdGF0
ZSBzYXZlVmlld1N0YXRlKGNvbnN0IEZyYW1lVmlldyogdmlldykKK3sKKyAgICBWaWV3U3RhdGUg
c3RhdGU7CisgICAgc3RhdGUucGFpbnRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZpb3IoKTsK
KyAgICBzdGF0ZS5iYWNrZ3JvdW5kQ29sb3IgPSB2aWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7
CisgICAgcmV0dXJuIHN0YXRlOworfQorCit2b2lkIHJlc3RvcmVWaWV3U3RhdGUoRnJhbWVWaWV3
KiB2aWV3LCBjb25zdCBWaWV3U3RhdGUmIHN0YXRlKQoreworICAgIHZpZXctPnNldFBhaW50QmVo
YXZpb3Ioc3RhdGUucGFpbnRCZWhhdmlvcik7CisgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRD
b2xvcihzdGF0ZS5iYWNrZ3JvdW5kQ29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZQorCitEcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvckVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRl
cmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnN0IFZpZXdTdGF0ZSBzdGF0ZSA9IHNh
dmVWaWV3U3RhdGUobV92aWV3LmdldCgpKTsKKyAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRl
KHRydWUpOworICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5wYWludEJlaGF2aW9y
IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CisgICAgLy8gV2hlbiBn
ZW5lcmF0aW5nIHRoZSBkcmFnIGltYWdlIGZvciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRvY3Vt
ZW50IGJhY2tncm91bmQuCisgICAgbV92aWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9y
KDI1NSwgMjU1LCAyNTUsIDApKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV92
aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWItdHJlZSBkcmF3
aW5nIG1vZGUuCisKKyAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICBJbnRSZWN0IHBhaW50
aW5nUmVjdCA9IHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCk7CisKKyAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5n
UmVjdC5zaXplKCkpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGlu
Z1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNs
aXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5yaWdodCgpLCBwYWludGluZ1JlY3QuYm90
dG9tKCkpKTsKKworICAgIG1fdmlldy0+cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5n
UmVjdCk7CisKKyAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHN0YXRlLgorICAgIHJlc3RvcmVWaWV3
U3RhdGUobV92aWV3LmdldCgpLCBzdGF0ZSk7CisgICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0
ZShmYWxzZSk7CisgICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOworICAgIG1fdmlldy0+c2V0Tm9k
ZVRvRHJhdygwKTsKKworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoYnVmZmVy
LT5pbWFnZSgpKTsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oKQoteyAgICAKLSAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0
dXJuIDA7ICAvLyBGSVhNRTogaW1wbGVtZW50IG1lIQoreworICAgIGlmICghc2VsZWN0aW9uKCkt
PmlzUmFuZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBWaWV3U3RhdGUgc3Rh
dGUgPSBzYXZlVmlld1N0YXRlKG1fdmlldy5nZXQoKSk7CisgICAgLy8gRklYTUU6IERvIHdlIHJl
YWxseSB3YW50IHRvIGZvcmNlIGJsYWNrIHRleHQ/IElmIHdlIGRvbid0LCBzZWxlY3RlZCB0ZXh0
CisgICAgLy8gaXMgd2hpdGUgb24gR1RLIGFuZCBsb29rcyByZWFsbHkgYmFkIHdoZW4gaXQncyBi
ZWluZyBkcmFnZ2VkLiBPbiB0aGUKKyAgICAvLyBvdGhlciBoYW5kLCBGaXJlZm94IG1hbmFnZXMg
dG8gZGVhbCB3aXRoIGl0IGNvcnJlY3RseS4uLgorICAgIC8vIE1heWJlIHRoZSByaWdodCBmaXgg
aXMgdG8gY2hhbmdlIHRoZSByZW5kZXJlciBzbyB0aGF0IHdoZW4geW91IGFzayBmb3IKKyAgICAv
LyBqdXN0IHRoZSBzZWxlY3Rpb24sIHlvdSBwYWludCBvbmx5IHRoZSBzZWxlY3Rpb24sIGJ1dCB3
aXRob3V0IHRoZQorICAgIC8vIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcuCisgICAgbV92aWV3LT5z
ZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsKKyAgICBtX2RvYy0+
dXBkYXRlTGF5b3V0KCk7CisKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IGVuY2xvc2luZ0lu
dFJlY3Qoc2VsZWN0aW9uQm91bmRzKCkpOworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpKSk7CisgICAgYnVmZmVy
LT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55
KCkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGlu
Z1JlY3QucmlnaHQoKSwgcGFpbnRpbmdSZWN0LmJvdHRvbSgpKSk7CisKKyAgICBtX3ZpZXctPnBh
aW50KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOworCisgICAgcmVzdG9yZVZpZXdT
dGF0ZShtX3ZpZXcuZ2V0KCksIHN0YXRlKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CiAK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGJ1ZmZl
ci0+aW1hZ2UoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggMDYyNDRhMmQwNDM0
YmM1ODRkYzQyZTQ0ZDc1MWRmNzk5NTliNzZkYi4uOGFlYmY4MDBjYjMxYjc1NTc3ZWM1MTBiYTRh
NTU0YTY5MzMxZGFjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRDaHJvbWl1bS5jcHAKQEAgLTQwMCw3ICs0MDAsMTIgQEAgdm9pZCBDbGlwYm9hcmRDaHJvbWl1
bTo6c2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiBub2RlLCBjb25zdCBJbnRQb2ludCYgbG9jKQog
RHJhZ0ltYWdlUmVmIENsaXBib2FyZENocm9taXVtOjpjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQm
IGxvYykgY29uc3QKIHsKICAgICBEcmFnSW1hZ2VSZWYgcmVzdWx0ID0gMDsKLSAgICBpZiAobV9k
cmFnSW1hZ2UpIHsKKyAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CisgICAgICAgIGlmICht
X2ZyYW1lKSB7CisgICAgICAgICAgICByZXN1bHQgPSBtX2ZyYW1lLT5kcmFnSW1hZ2VGb3JFbGVt
ZW50KG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICBsb2MgPSBtX2RyYWdM
b2M7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIHJl
c3VsdCA9IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShtX2RyYWdJbWFnZS0+aW1hZ2UoKSk7CiAg
ICAgICAgIGxvYyA9IG1fZHJhZ0xvYzsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCAyN2VhYmNkZjBkNTVmZGE4NTgzMjMyMTJiNzVlZTRkMWEyNjQ0OWFjLi5mNzMzNWQ1
Y2M5ZTVlYjU2M2ZjMTllNjUxYzM5YTVmNmIyMWIxNjczIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKQEAgLTE1OTEsNyArMTU5MSw4IEBAIENvbG9yIFJlbmRlck9iamVjdDo6c2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIENvbG9yIFJlbmRlck9iamVjdDo6c2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBDb2xvciBjb2xvcjsKLSAgICBpZiAoc3R5
bGUoKS0+dXNlclNlbGVjdCgpID09IFNFTEVDVF9OT05FKQorICAgIGlmIChzdHlsZSgpLT51c2Vy
U2VsZWN0KCkgPT0gU0VMRUNUX05PTkUKKyAgICAgICAgfHwgKGZyYW1lKCktPnZpZXcoKS0+cGFp
bnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpKQogICAgICAgICByZXR1
cm4gY29sb3I7CiAKICAgICBpZiAoUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZSA9IGdl
dFVuY2FjaGVkUHNldWRvU3R5bGUoU0VMRUNUSU9OKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64053</attachid>
            <date>2010-08-10 15:52:13 -0700</date>
            <delta_ts>2010-08-13 15:18:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100810155212.patch</filename>
            <type>text/plain</type>
            <size>6803</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODVlNmFhODYzZGJjYjk3ZTQwOWI2Mzg3ZDk5MDYzNGM2YjgxNWVkMS4uMWVhYjc2ZGE5Nzk5ZWJl
OTBmZWFmMTFhMjIwYTdhZWZjMGJmOTY3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wOC0xMCAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Vmlld1N0YXRlOjpzYXZl
Vmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdTdGF0ZTo6cmVzdG9yZVZpZXdTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKwogMjAxMC0wOC0xMCAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0
c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAppbmRleCA0ZTUyMmM0YzJkZWRlMDEzMWE0MTM2YzU1YWQwNTAxNDZhNDhkMjlmLi4yYTFi
NDJlOTFkMWE0ZjQ3MzdiM2Q0YWExZTY2YTVjYmJjZDdmZmUyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjIxLDYgKzIyMSw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZElu
VGV4dEZpZWxkKEVsZW1lbnQqIGlucHV0KTsKICAgICAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5U
ZXh0QXJlYShFbGVtZW50Kik7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAgICAgRHJh
Z0ltYWdlUmVmIGRyYWdJbWFnZUZvckVsZW1lbnQoTm9kZSopOworI2VuZGlmCiAgICAgICAgIERy
YWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKIAogICAgIC8vID09PSB0byBiZSBt
b3ZlZCBpbnRvIFNlbGVjdGlvbkNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9j
aHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNo
cm9taXVtLmNwcAppbmRleCA1NDhlMGZhNjM4MjJlMGEzZWJlNWIzN2VhMTBjODNkMzM0OTNjNWYx
Li5kNjcwNDAzZTc5M2VhOGQ0M2YwYmIxZWU3MWJiNDNkMGM2MDE4MzlkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3BwCkBAIC0yOCwxOSArMjgsOTQgQEAKIAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
IAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsK
Kworc3RydWN0IFZpZXdTdGF0ZSB7CisgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwor
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKK307CisKK1ZpZXdTdGF0ZSBzYXZlVmlld1N0YXRl
KGNvbnN0IEZyYW1lVmlldyogdmlldykKK3sKKyAgICBWaWV3U3RhdGUgc3RhdGU7CisgICAgc3Rh
dGUucGFpbnRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZpb3IoKTsKKyAgICBzdGF0ZS5iYWNr
Z3JvdW5kQ29sb3IgPSB2aWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CisgICAgcmV0dXJuIHN0
YXRlOworfQorCit2b2lkIHJlc3RvcmVWaWV3U3RhdGUoRnJhbWVWaWV3KiB2aWV3LCBjb25zdCBW
aWV3U3RhdGUmIHN0YXRlKQoreworICAgIHZpZXctPnNldFBhaW50QmVoYXZpb3Ioc3RhdGUucGFp
bnRCZWhhdmlvcik7CisgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihzdGF0ZS5iYWNr
Z3JvdW5kQ29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZQorCitEcmFnSW1hZ2VSZWYgRnJhbWU6
OmRyYWdJbWFnZUZvckVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGNvbnN0IFZpZXdTdGF0ZSBzdGF0ZSA9IHNhdmVWaWV3U3RhdGUobV92
aWV3LmdldCgpKTsKKyAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOworICAgIG1f
dmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5wYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CisgICAgLy8gV2hlbiBnZW5lcmF0aW5nIHRoZSBk
cmFnIGltYWdlIGZvciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRvY3VtZW50IGJhY2tncm91bmQu
CisgICAgbV92aWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUs
IDApKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV92aWV3LT5zZXROb2RlVG9E
cmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUuCisKKyAg
ICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHJlbmRl
cmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCk7CisKKyAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCkpKTsK
KyAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFp
bnRpbmdSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAs
IDAsIHBhaW50aW5nUmVjdC5yaWdodCgpLCBwYWludGluZ1JlY3QuYm90dG9tKCkpKTsKKworICAg
IG1fdmlldy0+cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7CisKKyAgICAv
LyBSZXN0b3JlIG9yaWdpbmFsIHN0YXRlLgorICAgIHJlc3RvcmVWaWV3U3RhdGUobV92aWV3Lmdl
dCgpLCBzdGF0ZSk7CisgICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7CisgICAg
bV9kb2MtPnVwZGF0ZUxheW91dCgpOworICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKKwor
ICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoYnVmZmVyLT5pbWFnZSgpKTsKK30K
KwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQoteyAgICAKLSAg
ICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7ICAvLyBGSVhN
RTogaW1wbGVtZW50IG1lIQoreworICAgIGlmICghc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBWaWV3U3RhdGUgc3RhdGUgPSBzYXZlVmlld1N0
YXRlKG1fdmlldy5nZXQoKSk7CisgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSB3YW50IHRvIGZv
cmNlIGJsYWNrIHRleHQ/IElmIHdlIGRvbid0LCBzZWxlY3RlZCB0ZXh0CisgICAgLy8gaXMgd2hp
dGUgb24gR1RLIGFuZCBsb29rcyByZWFsbHkgYmFkIHdoZW4gaXQncyBiZWluZyBkcmFnZ2VkLiBP
biB0aGUKKyAgICAvLyBvdGhlciBoYW5kLCBGaXJlZm94IG1hbmFnZXMgdG8gZGVhbCB3aXRoIGl0
IGNvcnJlY3RseS4uLgorICAgIC8vIE1heWJlIHRoZSByaWdodCBmaXggaXMgdG8gY2hhbmdlIHRo
ZSByZW5kZXJlciBzbyB0aGF0IHdoZW4geW91IGFzayBmb3IKKyAgICAvLyBqdXN0IHRoZSBzZWxl
Y3Rpb24sIHlvdSBwYWludCBvbmx5IHRoZSBzZWxlY3Rpb24sIGJ1dCB3aXRob3V0IHRoZQorICAg
IC8vIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcuCisgICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9y
KFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7
CisKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9u
Qm91bmRzKCkpOworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6
OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRy
YW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOworICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QucmlnaHQoKSwg
cGFpbnRpbmdSZWN0LmJvdHRvbSgpKSk7CisKKyAgICBtX3ZpZXctPnBhaW50KGJ1ZmZlci0+Y29u
dGV4dCgpLCBwYWludGluZ1JlY3QpOworCisgICAgcmVzdG9yZVZpZXdTdGF0ZShtX3ZpZXcuZ2V0
KCksIHN0YXRlKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CiAKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGJ1ZmZlci0+aW1hZ2UoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggMDYyNDRhMmQwNDM0YmM1ODRkYzQyZTQ0ZDc1
MWRmNzk5NTliNzZkYi4uOGFlYmY4MDBjYjMxYjc1NTc3ZWM1MTBiYTRhNTU0YTY5MzMxZGFjMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAK
QEAgLTQwMCw3ICs0MDAsMTIgQEAgdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6c2V0RHJhZ0ltYWdl
RWxlbWVudChOb2RlKiBub2RlLCBjb25zdCBJbnRQb2ludCYgbG9jKQogRHJhZ0ltYWdlUmVmIENs
aXBib2FyZENocm9taXVtOjpjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxvYykgY29uc3QKIHsK
ICAgICBEcmFnSW1hZ2VSZWYgcmVzdWx0ID0gMDsKLSAgICBpZiAobV9kcmFnSW1hZ2UpIHsKKyAg
ICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CisgICAgICAgIGlmIChtX2ZyYW1lKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSBtX2ZyYW1lLT5kcmFnSW1hZ2VGb3JFbGVtZW50KG1fZHJhZ0ltYWdl
RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICBsb2MgPSBtX2RyYWdMb2M7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZURy
YWdJbWFnZUZyb21JbWFnZShtX2RyYWdJbWFnZS0+aW1hZ2UoKSk7CiAgICAgICAgIGxvYyA9IG1f
ZHJhZ0xvYzsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAyN2VhYmNk
ZjBkNTVmZGE4NTgzMjMyMTJiNzVlZTRkMWEyNjQ0OWFjLi5mNzMzNWQ1Y2M5ZTVlYjU2M2ZjMTll
NjUxYzM5YTVmNmIyMWIxNjczIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE1
OTEsNyArMTU5MSw4IEBAIENvbG9yIFJlbmRlck9iamVjdDo6c2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3QKIENvbG9yIFJlbmRlck9iamVjdDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCkgY29uc3QKIHsKICAgICBDb2xvciBjb2xvcjsKLSAgICBpZiAoc3R5bGUoKS0+dXNlclNlbGVj
dCgpID09IFNFTEVDVF9OT05FKQorICAgIGlmIChzdHlsZSgpLT51c2VyU2VsZWN0KCkgPT0gU0VM
RUNUX05PTkUKKyAgICAgICAgfHwgKGZyYW1lKCktPnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpKQogICAgICAgICByZXR1cm4gY29sb3I7CiAKICAg
ICBpZiAoUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZSA9IGdldFVuY2FjaGVkUHNldWRv
U3R5bGUoU0VMRUNUSU9OKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64379</attachid>
            <date>2010-08-13 15:18:35 -0700</date>
            <delta_ts>2010-08-17 15:29:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100813151834.patch</filename>
            <type>text/plain</type>
            <size>13353</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWQ0ZTBhNmVhNTRiYzY1ODBlZGFkYjNiZDUyNmZkOTNlZDIyMmM2MS4uZjdlNjMxMWM1NWYwZTJm
NDE3NDFjZDliMDNmZjM5ZDljYTAxZTdiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMC0wOC0xMyAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvYnJldy9GcmFtZUJyZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL2Nocm9taXVtL0ZyYW1lQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdT
dGF0ZTo6c2F2ZVZpZXdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3U3RhdGU6OnJlc3Rv
cmVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBw
YWdlL2VmbC9GcmFtZUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24pOgorICAg
ICAgICAqIHBhZ2UvZ3RrL0ZyYW1lR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpu
b2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlv
bik6CisgICAgICAgICogcGFnZS9oYWlrdS9GcmFtZUhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJbWFn
ZUZvclNlbGVjdGlvbik6CisgICAgICAgICogcGFnZS9tYWMvRnJhbWVNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdl
L3F0L0ZyYW1lUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAg
KiBwYWdlL3dpbi9GcmFtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0lt
YWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL3dpbmNlL0ZyYW1lV2luY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL3d4L0ZyYW1lV3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKToKKwogMjAxMC0wOC0xMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY1MjA0
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAppbmRleCA0ZTUyMmM0YzJkZWRlMDEzMWE0MTM2YzU1YWQwNTAxNDZhNDhkMjlmLi41OTU2ZjY1
YzBjNjBlODYxYWM4YTllNDM2NTU3Nzg4N2M5ZGZhZmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjIxLDcgKzIyMSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4
dEZpZWxkKEVsZW1lbnQqIGlucHV0KTsKICAgICAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0
QXJlYShFbGVtZW50Kik7CiAKLSAgICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZvclNlbGVj
dGlvbigpOworICAgICAgICBEcmFnSW1hZ2VSZWYgbm9kZUltYWdlKE5vZGUqKSBjb25zdDsKKyAg
ICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZvclNlbGVjdGlvbigpIGNvbnN0OwogCiAgICAg
Ly8gPT09IHRvIGJlIG1vdmVkIGludG8gU2VsZWN0aW9uQ29udHJvbGxlcgogCkBAIC0yODUsNyAr
Mjg2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE5TSW1hZ2UqIHNlbGVjdGlv
bkltYWdlKGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSkgY29uc3Q7CiAgICAgICAgIE5TSW1h
Z2UqIHNuYXBzaG90RHJhZ0ltYWdlKE5vZGUqLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0KiBl
bGVtZW50UmVjdCkgY29uc3Q7Ci0gICAgICAgIE5TSW1hZ2UqIG5vZGVJbWFnZShOb2RlKikgY29u
c3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBOU0ltYWdlKiBpbWFnZUZyb21SZWN0KE5TUmVj
dCkgY29uc3Q7CkBAIC0yOTgsMTQgKzI5OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShXSU4pCi0KLSAgICBwdWJsaWM6Ci0gICAgICAgIC8vIEZJWE1F
IC0gV2Ugc2hvdWxkIGhhdmUgYSBzaW5nbGUgdmVyc2lvbiBvZiBub2RlSW1hZ2UgaW5zdGVhZCBv
ZiB1c2luZyBwbGF0Zm9ybSB0eXBlcy4KLSAgICAgICAgSEJJVE1BUCBub2RlSW1hZ2UoTm9kZSop
IGNvbnN0OwotCi0jZW5kaWYKLQogICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsK
ICAgICAgICAgbXV0YWJsZSBGcmFtZVRyZWUgbV90cmVlTm9kZTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9icmV3L0ZyYW1lQnJldy5jcHAgYi9XZWJDb3JlL3BhZ2UvYnJldy9GcmFtZUJyZXcu
Y3BwCmluZGV4IGE1OTA1NDQxYzg4MWQ5YjUyMjAyZTE2YTJhY2EzYzQ1YzgzMTNhZDkuLmY2Nzgw
NTBlNzcwMGQwNTgxMzE4N2Y3NzZhODA0ZTVhOGRjOWNlZjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9icmV3L0ZyYW1lQnJldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2JyZXcvRnJhbWVCcmV3
LmNwcApAQCAtMjksNyArMjksMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmFnSW1h
Z2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCitEcmFnSW1hZ2VSZWYgRnJhbWU6
Om5vZGVJbWFnZShOb2RlKikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiAwOworfQorCitEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigp
IGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGFn
ZS9jaHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcAppbmRleCA1NDhlMGZhNjM4MjJlMGEzZWJlNWIz
N2VhMTBjODNkMzM0OTNjNWYxLi5iYzgyNzYwNTZkODc5ZmFlYTM5MWY1NGY3MjZhYjdmMmVmZDM3
OGE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3BwCkBAIC0yOCwxOSAr
MjgsOTQgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQoteyAgICAK
LSAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7ICAvLyBG
SVhNRTogaW1wbGVtZW50IG1lIQorbmFtZXNwYWNlIHsKKworc3RydWN0IFZpZXdTdGF0ZSB7Cisg
ICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOworICAgIENvbG9yIGJhY2tncm91bmRDb2xv
cjsKK307CisKK1ZpZXdTdGF0ZSBzYXZlVmlld1N0YXRlKGNvbnN0IEZyYW1lVmlldyogdmlldykK
K3sKKyAgICBWaWV3U3RhdGUgc3RhdGU7CisgICAgc3RhdGUucGFpbnRCZWhhdmlvciA9IHZpZXct
PnBhaW50QmVoYXZpb3IoKTsKKyAgICBzdGF0ZS5iYWNrZ3JvdW5kQ29sb3IgPSB2aWV3LT5iYXNl
QmFja2dyb3VuZENvbG9yKCk7CisgICAgcmV0dXJuIHN0YXRlOworfQorCit2b2lkIHJlc3RvcmVW
aWV3U3RhdGUoRnJhbWVWaWV3KiB2aWV3LCBjb25zdCBWaWV3U3RhdGUmIHN0YXRlKQoreworICAg
IHZpZXctPnNldFBhaW50QmVoYXZpb3Ioc3RhdGUucGFpbnRCZWhhdmlvcik7CisgICAgdmlldy0+
c2V0QmFzZUJhY2tncm91bmRDb2xvcihzdGF0ZS5iYWNrZ3JvdW5kQ29sb3IpOworfQorCit9IC8v
IG5hbWVzcGFjZQorCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKSBj
b25zdAoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29uc3QgVmlld1N0
YXRlIHN0YXRlID0gc2F2ZVZpZXdTdGF0ZShtX3ZpZXcuZ2V0KCkpOworICAgIHJlbmRlcmVyLT51
cGRhdGVEcmFnU3RhdGUodHJ1ZSk7CisgICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKHN0YXRl
LnBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsK
KyAgICAvLyBXaGVuIGdlbmVyYXRpbmcgdGhlIGRyYWcgaW1hZ2UgZm9yIGFuIGVsZW1lbnQsIGln
bm9yZSB0aGUgZG9jdW1lbnQgYmFja2dyb3VuZC4KKyAgICBtX3ZpZXctPnNldEJhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSwgMCkpOworICAgIG1fZG9jLT51cGRhdGVMYXlv
dXQoKTsKKyAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIEVuYWJsZSBzcGVjaWFs
IHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KKworICAgIEludFJlY3QgdG9wTGV2ZWxSZWN0OworICAg
IEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2
ZWxSZWN0KTsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpj
cmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFu
c2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKKyAgICBidWZmZXIt
PmNvbnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0LnJpZ2h0KCksIHBh
aW50aW5nUmVjdC5ib3R0b20oKSkpOworCisgICAgbV92aWV3LT5wYWludChidWZmZXItPmNvbnRl
eHQoKSwgcGFpbnRpbmdSZWN0KTsKKworICAgIC8vIFJlc3RvcmUgb3JpZ2luYWwgc3RhdGUuCisg
ICAgcmVzdG9yZVZpZXdTdGF0ZShtX3ZpZXcuZ2V0KCksIHN0YXRlKTsKKyAgICByZW5kZXJlci0+
dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisgICAg
bV92aWV3LT5zZXROb2RlVG9EcmF3KDApOworCisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShidWZmZXItPmltYWdlKCkpOworfQorCitEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJ
bWFnZUZvclNlbGVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFzZWxlY3Rpb24oKS0+aXNSYW5n
ZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnN0IFZpZXdTdGF0ZSBzdGF0ZSA9IHNh
dmVWaWV3U3RhdGUobV92aWV3LmdldCgpKTsKKyAgICAvLyBGSVhNRTogRG8gd2UgcmVhbGx5IHdh
bnQgdG8gZm9yY2UgYmxhY2sgdGV4dD8gSWYgd2UgZG9uJ3QsIHNlbGVjdGVkIHRleHQKKyAgICAv
LyBpcyB3aGl0ZSBvbiBHVEsgYW5kIGxvb2tzIHJlYWxseSBiYWQgd2hlbiBpdCdzIGJlaW5nIGRy
YWdnZWQuIE9uIHRoZQorICAgIC8vIG90aGVyIGhhbmQsIEZpcmVmb3ggbWFuYWdlcyB0byBkZWFs
IHdpdGggaXQgY29ycmVjdGx5Li4uCisgICAgLy8gTWF5YmUgdGhlIHJpZ2h0IGZpeCBpcyB0byBj
aGFuZ2UgdGhlIHJlbmRlcmVyIHNvIHRoYXQgd2hlbiB5b3UgYXNrIGZvcgorICAgIC8vIGp1c3Qg
dGhlIHNlbGVjdGlvbiwgeW91IHBhaW50IG9ubHkgdGhlIHNlbGVjdGlvbiwgYnV0IHdpdGhvdXQg
dGhlCisgICAgLy8gc2VsZWN0aW9uIGhpZ2hsaWdodGluZy4KKyAgICBtX3ZpZXctPnNldFBhaW50
QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOworICAgIG1fZG9jLT51cGRhdGVM
YXlvdXQoKTsKKworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChz
ZWxlY3Rpb25Cb3VuZHMoKSk7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCkpKTsKKyAgICBidWZmZXItPmNvbnRl
eHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5y
aWdodCgpLCBwYWludGluZ1JlY3QuYm90dG9tKCkpKTsKKworICAgIG1fdmlldy0+cGFpbnQoYnVm
ZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7CisKKyAgICByZXN0b3JlVmlld1N0YXRlKG1f
dmlldy5nZXQoKSwgc3RhdGUpOworICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKIAotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoYnVmZmVyLT5pbWFn
ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL2VmbC9GcmFtZUVmbC5jcHAgYi9XZWJDb3JlL3BhZ2UvZWZsL0ZyYW1lRWZsLmNwcAppbmRl
eCA3ODNkZjdlOTRjZTk2YTdiMjJlNTQ2YjQ5MWQ2NTg0MjUzMDFkNWY3Li5iNDQwMzRhNDZmZDFk
Y2NiODZiOTg0Zjg1NWFkNGQxY2IzNmY4NTI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZWZs
L0ZyYW1lRWZsLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvZWZsL0ZyYW1lRWZsLmNwcApAQCAtMzIs
NyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmFnSW1hZ2VSZWYgRnJhbWU6
OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShO
b2RlKiBub2RlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkgY29uc3QK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL2d0ay9GcmFtZUd0ay5jcHAgYi9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1lR3RrLmNw
cAppbmRleCAzY2FiNWEwNjZjOTg5OWNjNmQ5NjMxZGVjZmEwNGYzNGQ1MTMwZTVlLi5mYzdmMzk1
ZDRkN2Y3ODNmMDA2MzVhNzRjNGEwY2E4YWY3ZjI0MmIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvZ3RrL0ZyYW1lR3RrLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1lR3RrLmNwcApA
QCAtMjgsNyArMjgsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmFnSW1hZ2VSZWYg
RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJ
bWFnZShOb2RlKikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAw
OworfQorCitEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpIGNvbnN0
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9oYWlrdS9GcmFtZUhhaWt1LmNwcCBiL1dlYkNvcmUvcGFnZS9oYWlrdS9GcmFt
ZUhhaWt1LmNwcAppbmRleCA1MDE2OGRkZDMwYTVkNDE0ZmQwNTlhMGU3OTgwZjM3YWU3YWRhZTM3
Li45Yzk4ZWY1ZjBkMjcxMDA5OGFlYjYwNmMxNjFjMDFhOWE0MmU1ZTJjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvaGFpa3UvRnJhbWVIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2hhaWt1
L0ZyYW1lSGFpa3UuY3BwCkBAIC0zMywxMSArMzMsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCitEcmFnSW1h
Z2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKikgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiAwOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCitEcmFnSW1h
Z2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbSBiL1dlYkNvcmUvcGFnZS9t
YWMvRnJhbWVNYWMubW0KaW5kZXggYmIxMWFjOTBhZTI4ZjYyODI1ZjJiZWNlMGVlNTQ4Mzc2YTFi
OTA2ZS4uNWQ1N2I1YjU4YmRhODc4ZTkwZWEyODQ4ZDU1ZTBiYjRkNzA4MjU3OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQorKysgYi9XZWJDb3JlL3BhZ2UvbWFjL0Zy
YW1lTWFjLm1tCkBAIC01MzUsNyArNTM1LDcgQEAgTlNNdXRhYmxlRGljdGlvbmFyeSogRnJhbWU6
OmRhc2hib2FyZFJlZ2lvbnNEaWN0aW9uYXJ5KCkKIH0KICNlbmRpZgogCi1EcmFnSW1hZ2VSZWYg
RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpIAorRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFn
SW1hZ2VGb3JTZWxlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghc2VsZWN0aW9uKCktPmlzUmFu
Z2UoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9xdC9G
cmFtZVF0LmNwcCBiL1dlYkNvcmUvcGFnZS9xdC9GcmFtZVF0LmNwcAppbmRleCA0OTNlNjBkMDkw
NjI4NmY5ZGQ2YzRiMTQ4MGIyY2JhMDQxMWZjOGZjLi40YjAwMzAyZWQ2MDg4YWVhMGQ1ZTQ1OTZh
MTRhODA4NTI5YTZhNjkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvcXQvRnJhbWVRdC5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL3F0L0ZyYW1lUXQuY3BwCkBAIC0yNiw4ICsyNiwxNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2Vs
ZWN0aW9uKCkgCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKikgY29uc3QKIHsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitEcmFnSW1hZ2VSZWYg
RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3dpbi9G
cmFtZVdpbi5jcHAgYi9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAppbmRleCAyYjU0MzVk
ZGYyNzM1ZWI4YzU1MjcyMTE0NTM4Y2NmYTY4YzI2NjE1Li44YTE4MzE1NzkwYmM0ZjZkODFjZDFm
MGU1ZGNjNGU3MWZmNzhmMzUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2lu
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcApAQCAtNDUsNyArNDUsNyBA
QCB2b2lkIGNvbXB1dGVQYWdlUmVjdHNGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IEludFJl
Y3QmIHByaW50UmVjdCwgZmxvYXQgaGVhZAogICAgIG91dFBhZ2VzID0gcHJpbnRDb250ZXh0LnBh
Z2VSZWN0cygpOwogfQogCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlv
bigpCitEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpIGNvbnN0CiB7
ICAgIAogICAgIGlmIChzZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICByZXR1cm4gaW1h
Z2VGcm9tU2VsZWN0aW9uKHRoaXMsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS93
aW5jZS9GcmFtZVdpbmNlLmNwcCBiL1dlYkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNwcApp
bmRleCBjODA2Yjk4MzdlNDBjZGVmOWUzZjIzMDVlMjY0ZjJhNjQyYjZjZmY1Li40Y2QxOTEyNGQx
MzVkMjIxYTYxOTBiZDI4ZGU3OGU0MDdmZmY1NjEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
d2luY2UvRnJhbWVXaW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3dpbmNlL0ZyYW1lV2luY2Uu
Y3BwCkBAIC0xNDcsNyArMTQ3LDEzIEBAIEhCSVRNQVAgaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKICAgICByZXR1cm4gaEJtcDsKIH0KIAotRHJh
Z0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQorRHJhZ0ltYWdlUmVmIEZy
YW1lOjpub2RlSW1hZ2UoTm9kZSopIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKworRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oKSBjb25zdAogewogICAgIGlmIChzZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICBy
ZXR1cm4gaW1hZ2VGcm9tU2VsZWN0aW9uKHRoaXMsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS93eC9GcmFtZVd4LmNwcCBiL1dlYkNvcmUvcGFnZS93eC9GcmFtZVd4LmNwcAppbmRl
eCBiMjIwNjk0NzQwM2ZkZTRmYjEzNGFjNjljY2Y4YzBhOTUwZjdlMTA2Li40Mjc2NWQ0ZTQ0YmRj
NDFlMmQ3ZDI4NTgxNzJjOWE2MWM1ZDI5ODdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd3gv
RnJhbWVXeC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3d4L0ZyYW1lV3guY3BwCkBAIC0yOSw3ICsy
OSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJh
Z0ltYWdlRm9yU2VsZWN0aW9uKCkKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUq
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0Ry
YWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkgY29uc3QKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCAwNjI0NGEyZDA0MzRiYzU4NGRjNDJl
NDRkNzUxZGY3OTk1OWI3NmRiLi4yMzUwOGE2OTc4Nzg2ZWNkMzkzZjI0OWEwMGQ4MjEzY2QzNjE5
MDMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVt
LmNwcApAQCAtNDAwLDcgKzQwMCwxMiBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjpzZXREcmFn
SW1hZ2VFbGVtZW50KE5vZGUqIG5vZGUsIGNvbnN0IEludFBvaW50JiBsb2MpCiBEcmFnSW1hZ2VS
ZWYgQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jKSBjb25z
dAogewogICAgIERyYWdJbWFnZVJlZiByZXN1bHQgPSAwOwotICAgIGlmIChtX2RyYWdJbWFnZSkg
eworICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUpIHsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1fZnJhbWUtPm5vZGVJbWFnZShtX2RyYWdJbWFnZUVsZW1l
bnQuZ2V0KCkpOworICAgICAgICAgICAgbG9jID0gbV9kcmFnTG9jOworICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICByZXN1bHQgPSBjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UobV9kcmFnSW1hZ2UtPmltYWdlKCkpOwogICAgICAgICBsb2MgPSBtX2RyYWdM
b2M7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMjdlYWJjZGYwZDU1
ZmRhODU4MzIzMjEyYjc1ZWU0ZDFhMjY0NDlhYy4uZjczMzVkNWNjOWU1ZWI1NjNmYzE5ZTY1MWMz
OWE1ZjZiMjFiMTY3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNTkxLDcg
KzE1OTEsOCBAQCBDb2xvciBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0CiBDb2xvciBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0CiB7CiAgICAgQ29sb3IgY29sb3I7Ci0gICAgaWYgKHN0eWxlKCktPnVzZXJTZWxlY3QoKSA9
PSBTRUxFQ1RfTk9ORSkKKyAgICBpZiAoc3R5bGUoKS0+dXNlclNlbGVjdCgpID09IFNFTEVDVF9O
T05FCisgICAgICAgIHx8IChmcmFtZSgpLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50
QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KSkKICAgICAgICAgcmV0dXJuIGNvbG9yOwogCiAgICAgaWYg
KFJlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGUgPSBnZXRVbmNhY2hlZFBzZXVkb1N0eWxl
KFNFTEVDVElPTikpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64646</attachid>
            <date>2010-08-17 15:29:28 -0700</date>
            <delta_ts>2010-08-17 15:45:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100817152927.patch</filename>
            <type>text/plain</type>
            <size>13374</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODMxMjZiMTEwYWVkYjMzYWQ3MDg5ZDAzODYyMzU1MjVjY2M0N2Q3Ni4uMjgxYWEwN2M2Y2VhYzNj
NWRiM2EyN2E0YWE2ZGI5MTY2MGZiYThhNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wOC0xNyAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvYnJldy9GcmFtZUJyZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9G
cmFtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3Jl
OjpWaWV3U3RhdGU6OnNhdmVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld1N0YXRl
OjpyZXN0b3JlVmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbik6CisgICAg
ICAgICogcGFnZS9lZmwvRnJhbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5v
ZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9ndGsvRnJhbWVHdGsuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9oYWlrdS9GcmFtZUhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBh
Z2UvbWFjL0ZyYW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwYWdlL3F0L0ZyYW1lUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToK
KyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ2Fpcm9XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS93aW5j
ZS9GcmFtZVdpbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgor
ICAgICAgICAqIHBhZ2Uvd3gvRnJhbWVXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
bm9kZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0lt
YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKwogMjAxMC0w
OC0xNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY1NTI4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0ZyYW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA0ZTUyMmM0YzJkZWRlMDEz
MWE0MTM2YzU1YWQwNTAxNDZhNDhkMjlmLi4zNjgwM2Y4MTIzMjU3OGU0ZmE0ZDIwYzVmZmEyZmYy
NDE0NmRkZmVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaApAQCAtMjIxLDYgKzIyMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqIGlucHV0KTsK
ICAgICAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50Kik7CiAKKyAgICAg
ICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFnZShOb2RlKik7CiAgICAgICAgIERyYWdJbWFnZVJlZiBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKIAogICAgIC8vID09PSB0byBiZSBtb3ZlZCBpbnRvIFNl
bGVjdGlvbkNvbnRyb2xsZXIKQEAgLTI4NSw3ICsyODYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoYm9vbCBmb3JjZUJsYWNrVGV4dCA9
IGZhbHNlKSBjb25zdDsKICAgICAgICAgTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoTm9kZSos
IE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KSBjb25zdDsKLSAgICAgICAg
TlNJbWFnZSogbm9kZUltYWdlKE5vZGUqKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IE5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoTlNSZWN0KSBjb25zdDsKQEAgLTI5OCwxNCArMjk4LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikKLQot
ICAgIHB1YmxpYzoKLSAgICAgICAgLy8gRklYTUUgLSBXZSBzaG91bGQgaGF2ZSBhIHNpbmdsZSB2
ZXJzaW9uIG9mIG5vZGVJbWFnZSBpbnN0ZWFkIG9mIHVzaW5nIHBsYXRmb3JtIHR5cGVzLgotICAg
ICAgICBIQklUTUFQIG5vZGVJbWFnZShOb2RlKikgY29uc3Q7Ci0KLSNlbmRpZgotCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBtdXRhYmxlIEZyYW1lVHJlZSBt
X3RyZWVOb2RlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2JyZXcvRnJhbWVCcmV3LmNwcCBi
L1dlYkNvcmUvcGFnZS9icmV3L0ZyYW1lQnJldy5jcHAKaW5kZXggYTU5MDU0NDFjODgxZDliNTIy
MDJlMTZhMmFjYTNjNDVjODMxM2FkOS4uNzgyNWRiZDVhM2QzNGUyOTkyODZlMDhjMjk1YjNmMmM0
NGJmNGFmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2JyZXcvRnJhbWVCcmV3LmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvYnJldy9GcmFtZUJyZXcuY3BwCkBAIC0yOSw2ICsyOSwxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJbWFn
ZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3Bw
IGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3BwCmluZGV4IDU0OGUwZmE2
MzgyMmUwYTNlYmU1YjM3ZWExMGM4M2QzMzQ5M2M1ZjEuLjk0ZTI1ZjEwZWE1MjJhNWU2YTcxYzI5
MWEyZGY5MmU1MzdjYmIyNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFt
ZUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5j
cHAKQEAgLTI4LDE5ICsyOCw5NiBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCi11c2luZyBzdGQ6Om1pbjsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitzdHJ1Y3QgVmlld1N0YXRlIHsKKyAg
ICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
OworfTsKKworVmlld1N0YXRlIHNhdmVWaWV3U3RhdGUoY29uc3QgRnJhbWVWaWV3KiB2aWV3KQor
eworICAgIFZpZXdTdGF0ZSBzdGF0ZTsKKyAgICBzdGF0ZS5wYWludEJlaGF2aW9yID0gdmlldy0+
cGFpbnRCZWhhdmlvcigpOworICAgIHN0YXRlLmJhY2tncm91bmRDb2xvciA9IHZpZXctPmJhc2VC
YWNrZ3JvdW5kQ29sb3IoKTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK3ZvaWQgcmVzdG9yZVZp
ZXdTdGF0ZShGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IFZpZXdTdGF0ZSYgc3RhdGUpCit7CisgICAg
dmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5wYWludEJlaGF2aW9yKTsKKyAgICB2aWV3LT5z
ZXRCYXNlQmFja2dyb3VuZENvbG9yKHN0YXRlLmJhY2tncm91bmRDb2xvcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlCisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCit7
CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBWaWV3U3RhdGUgc3Rh
dGUgPSBzYXZlVmlld1N0YXRlKG1fdmlldy5nZXQoKSk7CisgICAgcmVuZGVyZXItPnVwZGF0ZURy
YWdTdGF0ZSh0cnVlKTsKKyAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3Ioc3RhdGUucGFpbnRC
ZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworICAgIC8v
IFdoZW4gZ2VuZXJhdGluZyB0aGUgZHJhZyBpbWFnZSBmb3IgYW4gZWxlbWVudCwgaWdub3JlIHRo
ZSBkb2N1bWVudCBiYWNrZ3JvdW5kLgorICAgIG1fdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xv
cihDb2xvcigyNTUsIDI1NSwgMjU1LCAwKSk7CisgICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOwor
ICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gRW5hYmxlIHNwZWNpYWwgc3ViLXRy
ZWUgZHJhd2luZyBtb2RlLgorCisgICAgSW50UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgSW50UmVj
dCBwYWludGluZ1JlY3QgPSByZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3Qp
OworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShw
YWludGluZ1JlY3Quc2l6ZSgpKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgt
cGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOworICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QucmlnaHQoKSwgcGFpbnRpbmdS
ZWN0LmJvdHRvbSgpKSk7CisKKyAgICBtX3ZpZXctPnBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBw
YWludGluZ1JlY3QpOworCisgICAgLy8gUmVzdG9yZSBvcmlnaW5hbCBzdGF0ZS4KKyAgICByZXN0
b3JlVmlld1N0YXRlKG1fdmlldy5nZXQoKSwgc3RhdGUpOworICAgIHJlbmRlcmVyLT51cGRhdGVE
cmFnU3RhdGUoZmFsc2UpOworICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKKyAgICBtX3ZpZXct
PnNldE5vZGVUb0RyYXcoMCk7CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5j
b3B5SW1hZ2UoKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdl
dCgpKTsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQot
eyAgICAKLSAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7
ICAvLyBGSVhNRTogaW1wbGVtZW50IG1lIQoreworICAgIGlmICghc2VsZWN0aW9uKCktPmlzUmFu
Z2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBWaWV3U3RhdGUgc3RhdGUgPSBz
YXZlVmlld1N0YXRlKG1fdmlldy5nZXQoKSk7CisgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSB3
YW50IHRvIGZvcmNlIGJsYWNrIHRleHQ/IElmIHdlIGRvbid0LCBzZWxlY3RlZCB0ZXh0CisgICAg
Ly8gaXMgd2hpdGUgb24gR1RLIGFuZCBsb29rcyByZWFsbHkgYmFkIHdoZW4gaXQncyBiZWluZyBk
cmFnZ2VkLiBPbiB0aGUKKyAgICAvLyBvdGhlciBoYW5kLCBGaXJlZm94IG1hbmFnZXMgdG8gZGVh
bCB3aXRoIGl0IGNvcnJlY3RseS4uLgorICAgIC8vIE1heWJlIHRoZSByaWdodCBmaXggaXMgdG8g
Y2hhbmdlIHRoZSByZW5kZXJlciBzbyB0aGF0IHdoZW4geW91IGFzayBmb3IKKyAgICAvLyBqdXN0
IHRoZSBzZWxlY3Rpb24sIHlvdSBwYWludCBvbmx5IHRoZSBzZWxlY3Rpb24sIGJ1dCB3aXRob3V0
IHRoZQorICAgIC8vIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcuCisgICAgbV92aWV3LT5zZXRQYWlu
dEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsKKyAgICBtX2RvYy0+dXBkYXRl
TGF5b3V0KCk7CisKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
c2VsZWN0aW9uQm91bmRzKCkpOworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1h
Z2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpKSk7CisgICAgYnVmZmVyLT5jb250
ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwor
ICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3Qu
cmlnaHQoKSwgcGFpbnRpbmdSZWN0LmJvdHRvbSgpKSk7CisKKyAgICBtX3ZpZXctPnBhaW50KGJ1
ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOworCisgICAgcmVzdG9yZVZpZXdTdGF0ZSht
X3ZpZXcuZ2V0KCksIHN0YXRlKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CiAKLSAgICBy
ZXR1cm4gMDsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsK
KyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2VmbC9GcmFt
ZUVmbC5jcHAgYi9XZWJDb3JlL3BhZ2UvZWZsL0ZyYW1lRWZsLmNwcAppbmRleCA3ODNkZjdlOTRj
ZTk2YTdiMjJlNTQ2YjQ5MWQ2NTg0MjUzMDFkNWY3Li5iMWJlOWNhYTkyNmE4MDIxODRmMDc0NTNh
MDZiODdiMzJhZDExZmY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZWZsL0ZyYW1lRWZsLmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvZWZsL0ZyYW1lRWZsLmNwcApAQCAtMzIsNiArMzIsMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShO
b2RlKiBub2RlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
IERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2d0ay9GcmFtZUd0ay5jcHAg
Yi9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1lR3RrLmNwcAppbmRleCAzY2FiNWEwNjZjOTg5OWNjNmQ5
NjMxZGVjZmEwNGYzNGQ1MTMwZTVlLi4xNGEwZjhiYjgwYjliMzIyMGE5MTA4ZGRhY2VlMzE4MTVh
ZjJlZTgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1lR3RrLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1lR3RrLmNwcApAQCAtMjgsNiArMjgsMTIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBEcmFnSW1hZ2VSZWYg
RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9oYWlrdS9GcmFtZUhhaWt1LmNwcCBiL1dlYkNvcmUv
cGFnZS9oYWlrdS9GcmFtZUhhaWt1LmNwcAppbmRleCA1MDE2OGRkZDMwYTVkNDE0ZmQwNTlhMGU3
OTgwZjM3YWU3YWRhZTM3Li41ZmY2OTUwOWIxNDY3NTc2NGE5MGY3Mjc1NmE2MDg4YzFlN2IwMWUx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaGFpa3UvRnJhbWVIYWlrdS5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL2hhaWt1L0ZyYW1lSGFpa3UuY3BwCkBAIC0zMyw2ICszMywxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJbWFnZVJl
ZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpAQCAtNDAsNCArNDYsMyBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVj
dGlvbigpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL21hYy9GcmFtZU1hYy5tbSBiL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KaW5k
ZXggYmIxMWFjOTBhZTI4ZjYyODI1ZjJiZWNlMGVlNTQ4Mzc2YTFiOTA2ZS4uZDY0ZjVmZWNmZWI1
OWZmY2M5MzViMDc1MjZlZmUyNzZhZGFlNGI3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL21h
Yy9GcmFtZU1hYy5tbQorKysgYi9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCkBAIC0zODAs
NyArMzgwLDcgQEAgTlNJbWFnZSogRnJhbWU6OnNuYXBzaG90RHJhZ0ltYWdlKE5vZGUqIG5vZGUs
IE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnQKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1OU0ltYWdlKiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpIGNvbnN0CitOU0ltYWdl
KiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKQEAgLTUzNSw3ICs1
MzUsNyBAQCBOU011dGFibGVEaWN0aW9uYXJ5KiBGcmFtZTo6ZGFzaGJvYXJkUmVnaW9uc0RpY3Rp
b25hcnkoKQogfQogI2VuZGlmCiAKLURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2Vs
ZWN0aW9uKCkgCitEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7
CiAgICAgaWYgKCFzZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICByZXR1cm4gbmlsOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3F0L0ZyYW1lUXQuY3BwIGIvV2ViQ29yZS9wYWdlL3F0
L0ZyYW1lUXQuY3BwCmluZGV4IDQ5M2U2MGQwOTA2Mjg2ZjlkZDZjNGIxNDgwYjJjYmEwNDExZmM4
ZmMuLjZiZGFhOGFkODhkZmU0NzFjNzljZjM5NGE2NjE4YTg4ODkxMThlYWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9xdC9GcmFtZVF0LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvcXQvRnJhbWVR
dC5jcHAKQEAgLTI2LDggKzI2LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRHJhZ0lt
YWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKSAKK0RyYWdJbWFnZVJlZiBGcmFt
ZTo6bm9kZUltYWdlKE5vZGUqKQogeworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwIGIvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNH
V2luLmNwcAppbmRleCBjY2U1MDA0ODdiYTZmZTFjZWU5NjIwNzY5MTQ0ZWVkNTM4MDViMzdmLi5j
ZTZkNmNiZGExZjE2MmQxMWM0NzU3NTZjODcyNmMxZGQ3ZWU0MDc2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVD
R1dpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgSEJJVE1BUCBpbWFnZUZyb21TZWxlY3Rpb24oRnJh
bWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIHJldHVybiBpbWFnZTsKIH0KIAot
SEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpIGNvbnN0CitIQklUTUFQIEZyYW1l
Ojpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
bm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcCBiL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDYWly
b1dpbi5jcHAKaW5kZXggM2UxZmUyODc0M2MwM2NiNzhlY2IzOGZmMmMwM2MwZDZiYjZiZjAxNS4u
NGU0YTcwODNhMzQ4MmIxOGI0NzNjNmE4OWYwOTk5YjBlM2Q4MmI1ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uvd2luL0Zy
YW1lQ2Fpcm9XaW4uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEhCSVRNQVAgaW1hZ2VGcm9tU2VsZWN0
aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKICAgICByZXR1cm4gMDsKIH0K
IAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKSBjb25zdAorSEJJVE1BUCBGcmFtZTo6
bm9kZUltYWdlKE5vZGUqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luY2UvRnJhbWVXaW5jZS5jcHAgYi9XZWJDb3Jl
L3BhZ2Uvd2luY2UvRnJhbWVXaW5jZS5jcHAKaW5kZXggYzgwNmI5ODM3ZTQwY2RlZjllM2YyMzA1
ZTI2NGYyYTY0MmI2Y2ZmNS4uNjhiYTM4NWRiMjAwYjQzNjRlMmMyZDlmOTYyYzRmMGEzMmFjZWRj
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbmNlL0ZyYW1lV2luY2UuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNwcApAQCAtMTQ3LDYgKzE0NywxMiBAQCBIQklU
TUFQIGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQp
CiAgICAgcmV0dXJuIGhCbXA7CiB9CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5v
ZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJ
bWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBpZiAoc2VsZWN0
aW9uKCktPmlzUmFuZ2UoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS93eC9GcmFtZVd4LmNw
cCBiL1dlYkNvcmUvcGFnZS93eC9GcmFtZVd4LmNwcAppbmRleCBiMjIwNjk0NzQwM2ZkZTRmYjEz
NGFjNjljY2Y4YzBhOTUwZjdlMTA2Li42YzE2YWRjYTc1MjgwNTdjYTY4MTZhN2FhNWRhNTE2MzFl
ZGI3MTZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd3gvRnJhbWVXeC5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL3d4L0ZyYW1lV3guY3BwCkBAIC0yOSw2ICsyOSwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJbWFnZVJlZiBGcmFt
ZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCAw
NjI0NGEyZDA0MzRiYzU4NGRjNDJlNDRkNzUxZGY3OTk1OWI3NmRiLi4yMzUwOGE2OTc4Nzg2ZWNk
MzkzZjI0OWEwMGQ4MjEzY2QzNjE5MDMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmNwcApAQCAtNDAwLDcgKzQwMCwxMiBAQCB2b2lkIENsaXBi
b2FyZENocm9taXVtOjpzZXREcmFnSW1hZ2VFbGVtZW50KE5vZGUqIG5vZGUsIGNvbnN0IEludFBv
aW50JiBsb2MpCiBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZURyYWdJbWFn
ZShJbnRQb2ludCYgbG9jKSBjb25zdAogewogICAgIERyYWdJbWFnZVJlZiByZXN1bHQgPSAwOwot
ICAgIGlmIChtX2RyYWdJbWFnZSkgeworICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKKyAg
ICAgICAgaWYgKG1fZnJhbWUpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fZnJhbWUtPm5vZGVJ
bWFnZShtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgbG9jID0gbV9kcmFn
TG9jOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICBy
ZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UobV9kcmFnSW1hZ2UtPmltYWdlKCkpOwog
ICAgICAgICBsb2MgPSBtX2RyYWdMb2M7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKaW5kZXggMjdlYWJjZGYwZDU1ZmRhODU4MzIzMjEyYjc1ZWU0ZDFhMjY0NDlhYy4uZjczMzVk
NWNjOWU1ZWI1NjNmYzE5ZTY1MWMzOWE1ZjZiMjFiMTY3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCkBAIC0xNTkxLDcgKzE1OTEsOCBAQCBDb2xvciBSZW5kZXJPYmplY3Q6OnNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiBDb2xvciBSZW5kZXJPYmplY3Q6OnNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgQ29sb3IgY29sb3I7Ci0gICAgaWYgKHN0
eWxlKCktPnVzZXJTZWxlY3QoKSA9PSBTRUxFQ1RfTk9ORSkKKyAgICBpZiAoc3R5bGUoKS0+dXNl
clNlbGVjdCgpID09IFNFTEVDVF9OT05FCisgICAgICAgIHx8IChmcmFtZSgpLT52aWV3KCktPnBh
aW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KSkKICAgICAgICAgcmV0
dXJuIGNvbG9yOwogCiAgICAgaWYgKFJlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGUgPSBn
ZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFNFTEVDVElPTikpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64649</attachid>
            <date>2010-08-17 15:45:46 -0700</date>
            <delta_ts>2010-08-17 17:38:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100817154545.patch</filename>
            <type>text/plain</type>
            <size>13392</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODMxMjZiMTEwYWVkYjMzYWQ3MDg5ZDAzODYyMzU1MjVjY2M0N2Q3Ni4uMjgxYWEwN2M2Y2VhYzNj
NWRiM2EyN2E0YWE2ZGI5MTY2MGZiYThhNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wOC0xNyAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvYnJldy9GcmFtZUJyZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9G
cmFtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3Jl
OjpWaWV3U3RhdGU6OnNhdmVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld1N0YXRl
OjpyZXN0b3JlVmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbik6CisgICAg
ICAgICogcGFnZS9lZmwvRnJhbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5v
ZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9ndGsvRnJhbWVHdGsuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9oYWlrdS9GcmFtZUhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBh
Z2UvbWFjL0ZyYW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwYWdlL3F0L0ZyYW1lUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToK
KyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ2Fpcm9XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS93aW5j
ZS9GcmFtZVdpbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgor
ICAgICAgICAqIHBhZ2Uvd3gvRnJhbWVXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
bm9kZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0lt
YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKwogMjAxMC0w
OC0xNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY1NTI4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0ZyYW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA0ZTUyMmM0YzJkZWRlMDEz
MWE0MTM2YzU1YWQwNTAxNDZhNDhkMjlmLi4zNjgwM2Y4MTIzMjU3OGU0ZmE0ZDIwYzVmZmEyZmYy
NDE0NmRkZmVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaApAQCAtMjIxLDYgKzIyMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqIGlucHV0KTsK
ICAgICAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50Kik7CiAKKyAgICAg
ICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFnZShOb2RlKik7CiAgICAgICAgIERyYWdJbWFnZVJlZiBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKIAogICAgIC8vID09PSB0byBiZSBtb3ZlZCBpbnRvIFNl
bGVjdGlvbkNvbnRyb2xsZXIKQEAgLTI4NSw3ICsyODYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoYm9vbCBmb3JjZUJsYWNrVGV4dCA9
IGZhbHNlKSBjb25zdDsKICAgICAgICAgTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoTm9kZSos
IE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KSBjb25zdDsKLSAgICAgICAg
TlNJbWFnZSogbm9kZUltYWdlKE5vZGUqKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IE5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoTlNSZWN0KSBjb25zdDsKQEAgLTI5OCwxNCArMjk4LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikKLQot
ICAgIHB1YmxpYzoKLSAgICAgICAgLy8gRklYTUUgLSBXZSBzaG91bGQgaGF2ZSBhIHNpbmdsZSB2
ZXJzaW9uIG9mIG5vZGVJbWFnZSBpbnN0ZWFkIG9mIHVzaW5nIHBsYXRmb3JtIHR5cGVzLgotICAg
ICAgICBIQklUTUFQIG5vZGVJbWFnZShOb2RlKikgY29uc3Q7Ci0KLSNlbmRpZgotCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBtdXRhYmxlIEZyYW1lVHJlZSBt
X3RyZWVOb2RlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2JyZXcvRnJhbWVCcmV3LmNwcCBi
L1dlYkNvcmUvcGFnZS9icmV3L0ZyYW1lQnJldy5jcHAKaW5kZXggYTU5MDU0NDFjODgxZDliNTIy
MDJlMTZhMmFjYTNjNDVjODMxM2FkOS4uNzgyNWRiZDVhM2QzNGUyOTkyODZlMDhjMjk1YjNmMmM0
NGJmNGFmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2JyZXcvRnJhbWVCcmV3LmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvYnJldy9GcmFtZUJyZXcuY3BwCkBAIC0yOSw2ICsyOSwxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJbWFn
ZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3Bw
IGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3BwCmluZGV4IDU0OGUwZmE2
MzgyMmUwYTNlYmU1YjM3ZWExMGM4M2QzMzQ5M2M1ZjEuLjg5NGQ5Nzg1ZTNhZGQwMWZiYjNmZDYx
YzFkOTVmNzU1MWVkOGFlNDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFt
ZUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5j
cHAKQEAgLTI4LDE5ICsyOCw5NiBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCi11c2luZyBzdGQ6Om1pbjsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitzdHJ1Y3QgVmlld1N0YXRlIHsKKyAg
ICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
OworfTsKKworVmlld1N0YXRlIHNhdmVWaWV3U3RhdGUoY29uc3QgRnJhbWVWaWV3KiB2aWV3KQor
eworICAgIFZpZXdTdGF0ZSBzdGF0ZTsKKyAgICBzdGF0ZS5wYWludEJlaGF2aW9yID0gdmlldy0+
cGFpbnRCZWhhdmlvcigpOworICAgIHN0YXRlLmJhY2tncm91bmRDb2xvciA9IHZpZXctPmJhc2VC
YWNrZ3JvdW5kQ29sb3IoKTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK3ZvaWQgcmVzdG9yZVZp
ZXdTdGF0ZShGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IFZpZXdTdGF0ZSYgc3RhdGUpCit7CisgICAg
dmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5wYWludEJlaGF2aW9yKTsKKyAgICB2aWV3LT5z
ZXRCYXNlQmFja2dyb3VuZENvbG9yKHN0YXRlLmJhY2tncm91bmRDb2xvcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlCisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCit7
CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBWaWV3U3RhdGUgc3Rh
dGUgPSBzYXZlVmlld1N0YXRlKG1fdmlldy5nZXQoKSk7CisgICAgcmVuZGVyZXItPnVwZGF0ZURy
YWdTdGF0ZSh0cnVlKTsKKyAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3Ioc3RhdGUucGFpbnRC
ZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworICAgIC8v
IFdoZW4gZ2VuZXJhdGluZyB0aGUgZHJhZyBpbWFnZSBmb3IgYW4gZWxlbWVudCwgaWdub3JlIHRo
ZSBkb2N1bWVudCBiYWNrZ3JvdW5kLgorICAgIG1fdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xv
cihjb2xvcldpdGhPdmVycmlkZUFscGhhKENvbG9yOjp3aGl0ZSwgMS4wKSk7CisgICAgbV9kb2Mt
PnVwZGF0ZUxheW91dCgpOworICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gRW5h
YmxlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlLgorCisgICAgSW50UmVjdCB0b3BMZXZl
bFJlY3Q7CisgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSByZW5kZXJlci0+cGFpbnRpbmdSb290
UmVjdCh0b3BMZXZlbFJlY3QpOworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1h
Z2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpKSk7CisgICAgYnVmZmVyLT5jb250
ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwor
ICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3Qu
cmlnaHQoKSwgcGFpbnRpbmdSZWN0LmJvdHRvbSgpKSk7CisKKyAgICBtX3ZpZXctPnBhaW50KGJ1
ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOworCisgICAgLy8gUmVzdG9yZSBvcmlnaW5h
bCBzdGF0ZS4KKyAgICByZXN0b3JlVmlld1N0YXRlKG1fdmlldy5nZXQoKSwgc3RhdGUpOworICAg
IHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAgIG1fZG9jLT51cGRhdGVMYXlv
dXQoKTsKKyAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcoMCk7CisKKyAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKGltYWdlLmdldCgpKTsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1h
Z2VGb3JTZWxlY3Rpb24oKQoteyAgICAKLSAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkK
LSAgICAgICAgcmV0dXJuIDA7ICAvLyBGSVhNRTogaW1wbGVtZW50IG1lIQoreworICAgIGlmICgh
c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBW
aWV3U3RhdGUgc3RhdGUgPSBzYXZlVmlld1N0YXRlKG1fdmlldy5nZXQoKSk7CisgICAgLy8gRklY
TUU6IERvIHdlIHJlYWxseSB3YW50IHRvIGZvcmNlIGJsYWNrIHRleHQ/IElmIHdlIGRvbid0LCBz
ZWxlY3RlZCB0ZXh0CisgICAgLy8gaXMgd2hpdGUgb24gR1RLIGFuZCBsb29rcyByZWFsbHkgYmFk
IHdoZW4gaXQncyBiZWluZyBkcmFnZ2VkLiBPbiB0aGUKKyAgICAvLyBvdGhlciBoYW5kLCBGaXJl
Zm94IG1hbmFnZXMgdG8gZGVhbCB3aXRoIGl0IGNvcnJlY3RseS4uLgorICAgIC8vIE1heWJlIHRo
ZSByaWdodCBmaXggaXMgdG8gY2hhbmdlIHRoZSByZW5kZXJlciBzbyB0aGF0IHdoZW4geW91IGFz
ayBmb3IKKyAgICAvLyBqdXN0IHRoZSBzZWxlY3Rpb24sIHlvdSBwYWludCBvbmx5IHRoZSBzZWxl
Y3Rpb24sIGJ1dCB3aXRob3V0IHRoZQorICAgIC8vIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcuCisg
ICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsK
KyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9
IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uQm91bmRzKCkpOworCisgICAgT3duUHRyPEltYWdl
QnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpKSk7
CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBh
aW50aW5nUmVjdC55KCkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgw
LCAwLCBwYWludGluZ1JlY3QucmlnaHQoKSwgcGFpbnRpbmdSZWN0LmJvdHRvbSgpKSk7CisKKyAg
ICBtX3ZpZXctPnBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOworCisgICAg
cmVzdG9yZVZpZXdTdGF0ZShtX3ZpZXcuZ2V0KCksIHN0YXRlKTsKKyAgICBtX2RvYy0+dXBkYXRl
TGF5b3V0KCk7CiAKLSAgICByZXR1cm4gMDsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVm
ZmVyLT5jb3B5SW1hZ2UoKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGlt
YWdlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL2VmbC9GcmFtZUVmbC5jcHAgYi9XZWJDb3JlL3BhZ2UvZWZsL0ZyYW1lRWZsLmNw
cAppbmRleCA3ODNkZjdlOTRjZTk2YTdiMjJlNTQ2YjQ5MWQ2NTg0MjUzMDFkNWY3Li5iMWJlOWNh
YTkyNmE4MDIxODRmMDc0NTNhMDZiODdiMzJhZDExZmY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvZWZsL0ZyYW1lRWZsLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvZWZsL0ZyYW1lRWZsLmNwcApA
QCAtMzIsNiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitEcmFnSW1hZ2VSZWYg
RnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L2d0ay9GcmFtZUd0ay5jcHAgYi9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1lR3RrLmNwcAppbmRleCAz
Y2FiNWEwNjZjOTg5OWNjNmQ5NjMxZGVjZmEwNGYzNGQ1MTMwZTVlLi4xNGEwZjhiYjgwYjliMzIy
MGE5MTA4ZGRhY2VlMzE4MTVhZjJlZTgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZ3RrL0Zy
YW1lR3RrLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1lR3RrLmNwcApAQCAtMjgsNiAr
MjgsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5v
ZGVJbWFnZShOb2RlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCiBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9oYWlrdS9GcmFtZUhh
aWt1LmNwcCBiL1dlYkNvcmUvcGFnZS9oYWlrdS9GcmFtZUhhaWt1LmNwcAppbmRleCA1MDE2OGRk
ZDMwYTVkNDE0ZmQwNTlhMGU3OTgwZjM3YWU3YWRhZTM3Li41ZmY2OTUwOWIxNDY3NTc2NGE5MGY3
Mjc1NmE2MDg4YzFlN2IwMWUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaGFpa3UvRnJhbWVI
YWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2hhaWt1L0ZyYW1lSGFpa3UuY3BwCkBAIC0zMyw2
ICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6
bm9kZUltYWdlKE5vZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNDAsNCArNDYsMyBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6
OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbSBiL1dlYkNvcmUvcGFnZS9t
YWMvRnJhbWVNYWMubW0KaW5kZXggYmIxMWFjOTBhZTI4ZjYyODI1ZjJiZWNlMGVlNTQ4Mzc2YTFi
OTA2ZS4uZDY0ZjVmZWNmZWI1OWZmY2M5MzViMDc1MjZlZmUyNzZhZGFlNGI3NCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQorKysgYi9XZWJDb3JlL3BhZ2UvbWFjL0Zy
YW1lTWFjLm1tCkBAIC0zODAsNyArMzgwLDcgQEAgTlNJbWFnZSogRnJhbWU6OnNuYXBzaG90RHJh
Z0ltYWdlKE5vZGUqIG5vZGUsIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnQKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1OU0ltYWdlKiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5v
ZGUpIGNvbnN0CitOU0ltYWdlKiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCiB7CiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5k
ZXJlcikKQEAgLTUzNSw3ICs1MzUsNyBAQCBOU011dGFibGVEaWN0aW9uYXJ5KiBGcmFtZTo6ZGFz
aGJvYXJkUmVnaW9uc0RpY3Rpb25hcnkoKQogfQogI2VuZGlmCiAKLURyYWdJbWFnZVJlZiBGcmFt
ZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkgCitEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFn
ZUZvclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKCFzZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAg
ICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3F0L0ZyYW1lUXQuY3Bw
IGIvV2ViQ29yZS9wYWdlL3F0L0ZyYW1lUXQuY3BwCmluZGV4IDQ5M2U2MGQwOTA2Mjg2ZjlkZDZj
NGIxNDgwYjJjYmEwNDExZmM4ZmMuLjZiZGFhOGFkODhkZmU0NzFjNzljZjM5NGE2NjE4YTg4ODkx
MThlYWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9xdC9GcmFtZVF0LmNwcAorKysgYi9XZWJD
b3JlL3BhZ2UvcXQvRnJhbWVRdC5jcHAKQEAgLTI2LDggKzI2LDE1IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKSAK
K0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQogeworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdl
Rm9yU2VsZWN0aW9uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwog
fQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwIGIvV2ViQ29y
ZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcAppbmRleCBjY2U1MDA0ODdiYTZmZTFjZWU5NjIwNzY5
MTQ0ZWVkNTM4MDViMzdmLi5jZTZkNmNiZGExZjE2MmQxMWM0NzU3NTZjODcyNmMxZGQ3ZWU0MDc2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgSEJJVE1BUCBpbWFn
ZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIHJl
dHVybiBpbWFnZTsKIH0KIAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpIGNv
bnN0CitIQklUTUFQIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcCBiL1dlYkNvcmUv
cGFnZS93aW4vRnJhbWVDYWlyb1dpbi5jcHAKaW5kZXggM2UxZmUyODc0M2MwM2NiNzhlY2IzOGZm
MmMwM2MwZDZiYjZiZjAxNS4uNGU0YTcwODNhMzQ4MmIxOGI0NzNjNmE4OWYwOTk5YjBlM2Q4MmI1
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEhCSVRN
QVAgaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkK
ICAgICByZXR1cm4gMDsKIH0KIAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKSBjb25z
dAorSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luY2UvRnJhbWVX
aW5jZS5jcHAgYi9XZWJDb3JlL3BhZ2Uvd2luY2UvRnJhbWVXaW5jZS5jcHAKaW5kZXggYzgwNmI5
ODM3ZTQwY2RlZjllM2YyMzA1ZTI2NGYyYTY0MmI2Y2ZmNS4uNjhiYTM4NWRiMjAwYjQzNjRlMmMy
ZDlmOTYyYzRmMGEzMmFjZWRjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbmNlL0ZyYW1l
V2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNwcApAQCAtMTQ3
LDYgKzE0NywxMiBAQCBIQklUTUFQIGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGJv
b2wgZm9yY2VCbGFja1RleHQpCiAgICAgcmV0dXJuIGhCbXA7CiB9CiAKK0RyYWdJbWFnZVJlZiBG
cmFtZTo6bm9kZUltYWdlKE5vZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkK
IHsKICAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS93eC9GcmFtZVd4LmNwcCBiL1dlYkNvcmUvcGFnZS93eC9GcmFtZVd4LmNwcAppbmRleCBi
MjIwNjk0NzQwM2ZkZTRmYjEzNGFjNjljY2Y4YzBhOTUwZjdlMTA2Li42YzE2YWRjYTc1MjgwNTdj
YTY4MTZhN2FhNWRhNTE2MzFlZGI3MTZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd3gvRnJh
bWVXeC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3d4L0ZyYW1lV3guY3BwCkBAIC0yOSw2ICsyOSwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUlt
YWdlKE5vZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
IERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmNwcAppbmRleCAwNjI0NGEyZDA0MzRiYzU4NGRjNDJlNDRkNzUxZGY3OTk1OWI3NmRi
Li4yMzUwOGE2OTc4Nzg2ZWNkMzkzZjI0OWEwMGQ4MjEzY2QzNjE5MDMyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcApAQCAtNDAwLDcgKzQw
MCwxMiBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjpzZXREcmFnSW1hZ2VFbGVtZW50KE5vZGUq
IG5vZGUsIGNvbnN0IEludFBvaW50JiBsb2MpCiBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJkQ2hyb21p
dW06OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jKSBjb25zdAogewogICAgIERyYWdJbWFn
ZVJlZiByZXN1bHQgPSAwOwotICAgIGlmIChtX2RyYWdJbWFnZSkgeworICAgIGlmIChtX2RyYWdJ
bWFnZUVsZW1lbnQpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUpIHsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1fZnJhbWUtPm5vZGVJbWFnZShtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCkpOworICAgICAg
ICAgICAgbG9jID0gbV9kcmFnTG9jOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2RyYWdJ
bWFnZSkgewogICAgICAgICByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UobV9kcmFn
SW1hZ2UtPmltYWdlKCkpOwogICAgICAgICBsb2MgPSBtX2RyYWdMb2M7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMjdlYWJjZGYwZDU1ZmRhODU4MzIzMjEyYjc1ZWU0
ZDFhMjY0NDlhYy4uZjczMzVkNWNjOWU1ZWI1NjNmYzE5ZTY1MWMzOWE1ZjZiMjFiMTY3MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNTkxLDcgKzE1OTEsOCBAQCBDb2xvciBS
ZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiBDb2xvciBSZW5k
ZXJPYmplY3Q6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgQ29sb3Ig
Y29sb3I7Ci0gICAgaWYgKHN0eWxlKCktPnVzZXJTZWxlY3QoKSA9PSBTRUxFQ1RfTk9ORSkKKyAg
ICBpZiAoc3R5bGUoKS0+dXNlclNlbGVjdCgpID09IFNFTEVDVF9OT05FCisgICAgICAgIHx8IChm
cmFtZSgpLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JTZWxlY3Rpb25P
bmx5KSkKICAgICAgICAgcmV0dXJuIGNvbG9yOwogCiAgICAgaWYgKFJlZlB0cjxSZW5kZXJTdHls
ZT4gcHNldWRvU3R5bGUgPSBnZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFNFTEVDVElPTikpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64657</attachid>
            <date>2010-08-17 17:38:57 -0700</date>
            <delta_ts>2010-08-18 13:56:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100817173855.patch</filename>
            <type>text/plain</type>
            <size>13660</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTI5NDFkZWEyODdkODhmODYxNGRjMDE4NTBmZTQ1ZTkyOGM0OTFiYS4uYzgwYzRmNmE0NGQzMTBk
YzVhZGQ3N2ZlMzJlNzE2YmE1NThmYTMxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wOC0xNyAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvYnJldy9GcmFtZUJyZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9G
cmFtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3Jl
OjpWaWV3U3RhdGU6OnNhdmVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld1N0YXRl
OjpyZXN0b3JlVmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbik6CisgICAg
ICAgICogcGFnZS9lZmwvRnJhbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5v
ZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9ndGsvRnJhbWVHdGsuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9oYWlrdS9GcmFtZUhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBh
Z2UvbWFjL0ZyYW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwYWdlL3F0L0ZyYW1lUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToK
KyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ2Fpcm9XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS93aW5j
ZS9GcmFtZVdpbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgor
ICAgICAgICAqIHBhZ2Uvd3gvRnJhbWVXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
bm9kZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0lt
YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKwogMjAxMC0w
OC0xNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDRlNTIyYzRjMmRlZGUwMTMxYTQxMzZjNTVh
ZDA1MDE0NmE0OGQyOWYuLjM2ODAzZjgxMjMyNTc4ZTRmYTRkMjBjNWZmYTJmZjI0MTQ2ZGRmZWUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCkBAIC0yMjEsNiArMjIxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IHRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCogaW5wdXQpOwogICAgICAgICB2
b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKTsKIAorICAgICAgICBEcmFnSW1h
Z2VSZWYgbm9kZUltYWdlKE5vZGUqKTsKICAgICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZv
clNlbGVjdGlvbigpOwogCiAgICAgLy8gPT09IHRvIGJlIG1vdmVkIGludG8gU2VsZWN0aW9uQ29u
dHJvbGxlcgpAQCAtMjg1LDcgKzI4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBOU0ltYWdlKiBzZWxlY3Rpb25JbWFnZShib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpIGNv
bnN0OwogICAgICAgICBOU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFnZShOb2RlKiwgTlNSZWN0KiBp
bWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpIGNvbnN0OwotICAgICAgICBOU0ltYWdlKiBu
b2RlSW1hZ2UoTm9kZSopIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTlNJbWFnZSog
aW1hZ2VGcm9tUmVjdChOU1JlY3QpIGNvbnN0OwpAQCAtMjk4LDE0ICsyOTgsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKQotCi0gICAgcHVibGlj
OgotICAgICAgICAvLyBGSVhNRSAtIFdlIHNob3VsZCBoYXZlIGEgc2luZ2xlIHZlcnNpb24gb2Yg
bm9kZUltYWdlIGluc3RlYWQgb2YgdXNpbmcgcGxhdGZvcm0gdHlwZXMuCi0gICAgICAgIEhCSVRN
QVAgbm9kZUltYWdlKE5vZGUqKSBjb25zdDsKLQotI2VuZGlmCi0KICAgICBwcml2YXRlOgogICAg
ICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIG11dGFibGUgRnJhbWVUcmVlIG1fdHJlZU5vZGU7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYnJldy9GcmFtZUJyZXcuY3BwIGIvV2ViQ29yZS9w
YWdlL2JyZXcvRnJhbWVCcmV3LmNwcAppbmRleCBhNTkwNTQ0MWM4ODFkOWI1MjIwMmUxNmEyYWNh
M2M0NWM4MzEzYWQ5Li43ODI1ZGJkNWEzZDM0ZTI5OTI4NmUwOGMyOTViM2YyYzQ0YmY0YWYyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvYnJldy9GcmFtZUJyZXcuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9icmV3L0ZyYW1lQnJldy5jcHAKQEAgLTI5LDYgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSopCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1l
OjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAgYi9XZWJDb3Jl
L3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAKaW5kZXggNTQ4ZTBmYTYzODIyZTBhM2Vi
ZTViMzdlYTEwYzgzZDMzNDkzYzVmMS4uODk0ZDk3ODVlM2FkZDAxZmJiM2ZkNjFjMWQ5NWY3NTUx
ZWQ4YWU0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0u
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcApAQCAtMjgs
MTkgKzI4LDk2IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK25hbWVzcGFjZSB7CisKK3N0cnVjdCBWaWV3U3RhdGUgeworICAgIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvcjsKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Cit9OworCitW
aWV3U3RhdGUgc2F2ZVZpZXdTdGF0ZShjb25zdCBGcmFtZVZpZXcqIHZpZXcpCit7CisgICAgVmll
d1N0YXRlIHN0YXRlOworICAgIHN0YXRlLnBhaW50QmVoYXZpb3IgPSB2aWV3LT5wYWludEJlaGF2
aW9yKCk7CisgICAgc3RhdGUuYmFja2dyb3VuZENvbG9yID0gdmlldy0+YmFzZUJhY2tncm91bmRD
b2xvcigpOworICAgIHJldHVybiBzdGF0ZTsKK30KKwordm9pZCByZXN0b3JlVmlld1N0YXRlKEZy
YW1lVmlldyogdmlldywgY29uc3QgVmlld1N0YXRlJiBzdGF0ZSkKK3sKKyAgICB2aWV3LT5zZXRQ
YWludEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IpOworICAgIHZpZXctPnNldEJhc2VCYWNr
Z3JvdW5kQ29sb3Ioc3RhdGUuYmFja2dyb3VuZENvbG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UK
KworRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKK3sKKyAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVy
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnN0IFZpZXdTdGF0ZSBzdGF0ZSA9IHNhdmVW
aWV3U3RhdGUobV92aWV3LmdldCgpKTsKKyAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRy
dWUpOworICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5wYWludEJlaGF2aW9yIHwg
UGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CisgICAgLy8gV2hlbiBnZW5l
cmF0aW5nIHRoZSBkcmFnIGltYWdlIGZvciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRvY3VtZW50
IGJhY2tncm91bmQuCisgICAgbV92aWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbG9yV2l0
aE92ZXJyaWRlQWxwaGEoQ29sb3I6OndoaXRlLCAxLjApKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5
b3V0KCk7CisgICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lh
bCBzdWItdHJlZSBkcmF3aW5nIG1vZGUuCisKKyAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAg
ICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExl
dmVsUmVjdCk7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCkpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+dHJh
bnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7CisgICAgYnVmZmVy
LT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5yaWdodCgpLCBw
YWludGluZ1JlY3QuYm90dG9tKCkpKTsKKworICAgIG1fdmlldy0+cGFpbnQoYnVmZmVyLT5jb250
ZXh0KCksIHBhaW50aW5nUmVjdCk7CisKKyAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHN0YXRlLgor
ICAgIHJlc3RvcmVWaWV3U3RhdGUobV92aWV3LmdldCgpLCBzdGF0ZSk7CisgICAgcmVuZGVyZXIt
PnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7CisgICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOworICAg
IG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKKworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBi
dWZmZXItPmNvcHlJbWFnZSgpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
aW1hZ2UuZ2V0KCkpOworfQorCiBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVj
dGlvbigpCi17ICAgIAotICAgIGlmIChzZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQotICAgICAgICBy
ZXR1cm4gMDsgIC8vIEZJWE1FOiBpbXBsZW1lbnQgbWUhCit7CisgICAgaWYgKCFzZWxlY3Rpb24o
KS0+aXNSYW5nZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnN0IFZpZXdTdGF0ZSBz
dGF0ZSA9IHNhdmVWaWV3U3RhdGUobV92aWV3LmdldCgpKTsKKyAgICAvLyBGSVhNRTogRG8gd2Ug
cmVhbGx5IHdhbnQgdG8gZm9yY2UgYmxhY2sgdGV4dD8gSWYgd2UgZG9uJ3QsIHNlbGVjdGVkIHRl
eHQKKyAgICAvLyBpcyB3aGl0ZSBvbiBHVEsgYW5kIGxvb2tzIHJlYWxseSBiYWQgd2hlbiBpdCdz
IGJlaW5nIGRyYWdnZWQuIE9uIHRoZQorICAgIC8vIG90aGVyIGhhbmQsIEZpcmVmb3ggbWFuYWdl
cyB0byBkZWFsIHdpdGggaXQgY29ycmVjdGx5Li4uCisgICAgLy8gTWF5YmUgdGhlIHJpZ2h0IGZp
eCBpcyB0byBjaGFuZ2UgdGhlIHJlbmRlcmVyIHNvIHRoYXQgd2hlbiB5b3UgYXNrIGZvcgorICAg
IC8vIGp1c3QgdGhlIHNlbGVjdGlvbiwgeW91IHBhaW50IG9ubHkgdGhlIHNlbGVjdGlvbiwgYnV0
IHdpdGhvdXQgdGhlCisgICAgLy8gc2VsZWN0aW9uIGhpZ2hsaWdodGluZy4KKyAgICBtX3ZpZXct
PnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOworICAgIG1fZG9j
LT51cGRhdGVMYXlvdXQoKTsKKworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChzZWxlY3Rpb25Cb3VuZHMoKSk7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1
ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCkpKTsKKyAgICBidWZm
ZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0
LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50
aW5nUmVjdC5yaWdodCgpLCBwYWludGluZ1JlY3QuYm90dG9tKCkpKTsKKworICAgIG1fdmlldy0+
cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7CisKKyAgICByZXN0b3JlVmll
d1N0YXRlKG1fdmlldy5nZXQoKSwgc3RhdGUpOworICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsK
IAotICAgIHJldHVybiAwOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJ
bWFnZSgpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
ZWZsL0ZyYW1lRWZsLmNwcCBiL1dlYkNvcmUvcGFnZS9lZmwvRnJhbWVFZmwuY3BwCmluZGV4IDc4
M2RmN2U5NGNlOTZhN2IyMmU1NDZiNDkxZDY1ODQyNTMwMWQ1ZjcuLmIxYmU5Y2FhOTI2YTgwMjE4
NGYwNzQ1M2EwNmI4N2IzMmFkMTFmZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9lZmwvRnJh
bWVFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9lZmwvRnJhbWVFZmwuY3BwCkBAIC0zMiw2ICsz
MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9k
ZUltYWdlKE5vZGUqIG5vZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1l
R3RrLmNwcCBiL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3BwCmluZGV4IDNjYWI1YTA2NmM5
ODk5Y2M2ZDk2MzFkZWNmYTA0ZjM0ZDUxMzBlNWUuLjE0YTBmOGJiODBiOWIzMjIwYTkxMDhkZGFj
ZWUzMTgxNWFmMmVlODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3BwCkBAIC0yOCw2ICsyOCwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5v
ZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJ
bWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2hhaWt1L0ZyYW1lSGFpa3UuY3BwIGIv
V2ViQ29yZS9wYWdlL2hhaWt1L0ZyYW1lSGFpa3UuY3BwCmluZGV4IDUwMTY4ZGRkMzBhNWQ0MTRm
ZDA1OWEwZTc5ODBmMzdhZTdhZGFlMzcuLjVmZjY5NTA5YjE0Njc1NzY0YTkwZjcyNzU2YTYwODhj
MWU3YjAxZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9oYWlrdS9GcmFtZUhhaWt1LmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvaGFpa3UvRnJhbWVIYWlrdS5jcHAKQEAgLTMzLDYgKzMzLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2Uo
Tm9kZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogRHJh
Z0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CkBAIC00MCw0ICs0NiwzIEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdl
Rm9yU2VsZWN0aW9uKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tIGIvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1h
Yy5tbQppbmRleCBiYjExYWM5MGFlMjhmNjI4MjVmMmJlY2UwZWU1NDgzNzZhMWI5MDZlLi5kNjRm
NWZlY2ZlYjU5ZmZjYzkzNWIwNzUyNmVmZTI3NmFkYWU0Yjc0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCisrKyBiL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0K
QEAgLTM4MCw3ICszODAsNyBAQCBOU0ltYWdlKiBGcmFtZTo6c25hcHNob3REcmFnSW1hZ2UoTm9k
ZSogbm9kZSwgTlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLU5TSW1hZ2UqIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkgY29uc3QK
K05TSW1hZ2UqIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAt
NTM1LDcgKzUzNSw3IEBAIE5TTXV0YWJsZURpY3Rpb25hcnkqIEZyYW1lOjpkYXNoYm9hcmRSZWdp
b25zRGljdGlvbmFyeSgpCiB9CiAjZW5kaWYKIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1h
Z2VGb3JTZWxlY3Rpb24oKSAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCkKIHsKICAgICBpZiAoIXNlbGVjdGlvbigpLT5pc1JhbmdlKCkpCiAgICAgICAgIHJldHVy
biBuaWw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvcXQvRnJhbWVRdC5jcHAgYi9XZWJDb3Jl
L3BhZ2UvcXQvRnJhbWVRdC5jcHAKaW5kZXggNDkzZTYwZDA5MDYyODZmOWRkNmM0YjE0ODBiMmNi
YTA0MTFmYzhmYy4uZWQ3NWViODIwZmVjNTFjNDg5ZmZiZWQwNjU5N2E3MDdlM2I1M2RmMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3F0L0ZyYW1lUXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9x
dC9GcmFtZVF0LmNwcApAQCAtMjQsMTAgKzI0LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKIAorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oKSAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6ZHJh
Z0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biAwOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwIGIv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcAppbmRleCBjY2U1MDA0ODdiYTZmZTFjZWU5
NjIwNzY5MTQ0ZWVkNTM4MDViMzdmLi5jZTZkNmNiZGExZjE2MmQxMWM0NzU3NTZjODcyNmMxZGQ3
ZWU0MDc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgSEJJVE1B
UCBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQog
ICAgIHJldHVybiBpbWFnZTsKIH0KIAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5v
ZGUpIGNvbnN0CitIQklUTUFQIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRl
cmVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcCBiL1dl
YkNvcmUvcGFnZS93aW4vRnJhbWVDYWlyb1dpbi5jcHAKaW5kZXggM2UxZmUyODc0M2MwM2NiNzhl
Y2IzOGZmMmMwM2MwZDZiYjZiZjAxNS4uNGU0YTcwODNhMzQ4MmIxOGI0NzNjNmE4OWYwOTk5YjBl
M2Q4MmI1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCkBAIC00MCw3ICs0MCw3IEBA
IEhCSVRNQVAgaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNr
VGV4dCkKICAgICByZXR1cm4gMDsKIH0KIAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUq
KSBjb25zdAorSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luY2Uv
RnJhbWVXaW5jZS5jcHAgYi9XZWJDb3JlL3BhZ2Uvd2luY2UvRnJhbWVXaW5jZS5jcHAKaW5kZXgg
YzgwNmI5ODM3ZTQwY2RlZjllM2YyMzA1ZTI2NGYyYTY0MmI2Y2ZmNS4uN2NmYmFlMGIwMzBjZWIz
MTQxMjFkZjYzN2M1MzgzODQzZTMwZDE0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbmNl
L0ZyYW1lV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxU
YWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckZy
YW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTE0Nyw2ICsxNDgsMTIgQEAgSEJJ
VE1BUCBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0
KQogICAgIHJldHVybiBoQm1wOwogfQogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShO
b2RlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBEcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKHNlbGVj
dGlvbigpLT5pc1JhbmdlKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd3gvRnJhbWVXeC5j
cHAgYi9XZWJDb3JlL3BhZ2Uvd3gvRnJhbWVXeC5jcHAKaW5kZXggYjIyMDY5NDc0MDNmZGU0ZmIx
MzRhYzY5Y2NmOGMwYTk1MGY3ZTEwNi4uNmMxNmFkY2E3NTI4MDU3Y2E2ODE2YTdhYTVkYTUxNjMx
ZWRiNzE2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3d4L0ZyYW1lV3guY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS93eC9GcmFtZVd4LmNwcApAQCAtMjksNiArMjksMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBEcmFnSW1hZ2VSZWYgRnJh
bWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXgg
MDYyNDRhMmQwNDM0YmM1ODRkYzQyZTQ0ZDc1MWRmNzk5NTliNzZkYi4uMjM1MDhhNjk3ODc4NmVj
ZDM5M2YyNDlhMDBkODIxM2NkMzYxOTAzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTQwMCw3ICs0MDAsMTIgQEAgdm9pZCBDbGlw
Ym9hcmRDaHJvbWl1bTo6c2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiBub2RlLCBjb25zdCBJbnRQ
b2ludCYgbG9jKQogRHJhZ0ltYWdlUmVmIENsaXBib2FyZENocm9taXVtOjpjcmVhdGVEcmFnSW1h
Z2UoSW50UG9pbnQmIGxvYykgY29uc3QKIHsKICAgICBEcmFnSW1hZ2VSZWYgcmVzdWx0ID0gMDsK
LSAgICBpZiAobV9kcmFnSW1hZ2UpIHsKKyAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7Cisg
ICAgICAgIGlmIChtX2ZyYW1lKSB7CisgICAgICAgICAgICByZXN1bHQgPSBtX2ZyYW1lLT5ub2Rl
SW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIGxvYyA9IG1fZHJh
Z0xvYzsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAgICAg
cmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKG1fZHJhZ0ltYWdlLT5pbWFnZSgpKTsK
ICAgICAgICAgbG9jID0gbV9kcmFnTG9jOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDI3ZWFiY2RmMGQ1NWZkYTg1ODMyMzIxMmI3NWVlNGQxYTI2NDQ5YWMuLmY3MzM1
ZDVjYzllNWViNTYzZmMxOWU2NTFjMzlhNWY2YjIxYjE2NzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcApAQCAtMTU5MSw3ICsxNTkxLDggQEAgQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIENvbG9yIGNvbG9yOwotICAgIGlmIChz
dHlsZSgpLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05PTkUpCisgICAgaWYgKHN0eWxlKCktPnVz
ZXJTZWxlY3QoKSA9PSBTRUxFQ1RfTk9ORQorICAgICAgICB8fCAoZnJhbWUoKS0+dmlldygpLT5w
YWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSkpCiAgICAgICAgIHJl
dHVybiBjb2xvcjsKIAogICAgIGlmIChSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlID0g
Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShTRUxFQ1RJT04pKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64768</attachid>
            <date>2010-08-18 13:56:10 -0700</date>
            <delta_ts>2010-08-18 14:31:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100818135609.patch</filename>
            <type>text/plain</type>
            <size>13821</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTI5NDFkZWEyODdkODhmODYxNGRjMDE4NTBmZTQ1ZTkyOGM0OTFiYS4uYzgwYzRmNmE0NGQzMTBk
YzVhZGQ3N2ZlMzJlNzE2YmE1NThmYTMxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wOC0xNyAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvYnJldy9GcmFtZUJyZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9G
cmFtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3Jl
OjpWaWV3U3RhdGU6OnNhdmVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld1N0YXRl
OjpyZXN0b3JlVmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbik6CisgICAg
ICAgICogcGFnZS9lZmwvRnJhbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5v
ZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9ndGsvRnJhbWVHdGsuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9oYWlrdS9GcmFtZUhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBh
Z2UvbWFjL0ZyYW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwYWdlL3F0L0ZyYW1lUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToK
KyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ2Fpcm9XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS93aW5j
ZS9GcmFtZVdpbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgor
ICAgICAgICAqIHBhZ2Uvd3gvRnJhbWVXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
bm9kZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlRHJhZ0lt
YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKwogMjAxMC0w
OC0xNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDRlNTIyYzRjMmRlZGUwMTMxYTQxMzZjNTVh
ZDA1MDE0NmE0OGQyOWYuLjM2ODAzZjgxMjMyNTc4ZTRmYTRkMjBjNWZmYTJmZjI0MTQ2ZGRmZWUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCkBAIC0yMjEsNiArMjIxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IHRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCogaW5wdXQpOwogICAgICAgICB2
b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKTsKIAorICAgICAgICBEcmFnSW1h
Z2VSZWYgbm9kZUltYWdlKE5vZGUqKTsKICAgICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZv
clNlbGVjdGlvbigpOwogCiAgICAgLy8gPT09IHRvIGJlIG1vdmVkIGludG8gU2VsZWN0aW9uQ29u
dHJvbGxlcgpAQCAtMjg1LDcgKzI4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBOU0ltYWdlKiBzZWxlY3Rpb25JbWFnZShib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpIGNv
bnN0OwogICAgICAgICBOU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFnZShOb2RlKiwgTlNSZWN0KiBp
bWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpIGNvbnN0OwotICAgICAgICBOU0ltYWdlKiBu
b2RlSW1hZ2UoTm9kZSopIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTlNJbWFnZSog
aW1hZ2VGcm9tUmVjdChOU1JlY3QpIGNvbnN0OwpAQCAtMjk4LDE0ICsyOTgsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKQotCi0gICAgcHVibGlj
OgotICAgICAgICAvLyBGSVhNRSAtIFdlIHNob3VsZCBoYXZlIGEgc2luZ2xlIHZlcnNpb24gb2Yg
bm9kZUltYWdlIGluc3RlYWQgb2YgdXNpbmcgcGxhdGZvcm0gdHlwZXMuCi0gICAgICAgIEhCSVRN
QVAgbm9kZUltYWdlKE5vZGUqKSBjb25zdDsKLQotI2VuZGlmCi0KICAgICBwcml2YXRlOgogICAg
ICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIG11dGFibGUgRnJhbWVUcmVlIG1fdHJlZU5vZGU7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYnJldy9GcmFtZUJyZXcuY3BwIGIvV2ViQ29yZS9w
YWdlL2JyZXcvRnJhbWVCcmV3LmNwcAppbmRleCBhNTkwNTQ0MWM4ODFkOWI1MjIwMmUxNmEyYWNh
M2M0NWM4MzEzYWQ5Li43ODI1ZGJkNWEzZDM0ZTI5OTI4NmUwOGMyOTViM2YyYzQ0YmY0YWYyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvYnJldy9GcmFtZUJyZXcuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9icmV3L0ZyYW1lQnJldy5jcHAKQEAgLTI5LDYgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSopCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1l
OjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAgYi9XZWJDb3Jl
L3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAKaW5kZXggNTQ4ZTBmYTYzODIyZTBhM2Vi
ZTViMzdlYTEwYzgzZDMzNDkzYzVmMS4uODk0ZDk3ODVlM2FkZDAxZmJiM2ZkNjFjMWQ5NWY3NTUx
ZWQ4YWU0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0u
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcApAQCAtMjgs
MTkgKzI4LDk2IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK25hbWVzcGFjZSB7CisKK3N0cnVjdCBWaWV3U3RhdGUgeworICAgIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvcjsKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Cit9OworCitW
aWV3U3RhdGUgc2F2ZVZpZXdTdGF0ZShjb25zdCBGcmFtZVZpZXcqIHZpZXcpCit7CisgICAgVmll
d1N0YXRlIHN0YXRlOworICAgIHN0YXRlLnBhaW50QmVoYXZpb3IgPSB2aWV3LT5wYWludEJlaGF2
aW9yKCk7CisgICAgc3RhdGUuYmFja2dyb3VuZENvbG9yID0gdmlldy0+YmFzZUJhY2tncm91bmRD
b2xvcigpOworICAgIHJldHVybiBzdGF0ZTsKK30KKwordm9pZCByZXN0b3JlVmlld1N0YXRlKEZy
YW1lVmlldyogdmlldywgY29uc3QgVmlld1N0YXRlJiBzdGF0ZSkKK3sKKyAgICB2aWV3LT5zZXRQ
YWludEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IpOworICAgIHZpZXctPnNldEJhc2VCYWNr
Z3JvdW5kQ29sb3Ioc3RhdGUuYmFja2dyb3VuZENvbG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UK
KworRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKK3sKKyAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVy
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnN0IFZpZXdTdGF0ZSBzdGF0ZSA9IHNhdmVW
aWV3U3RhdGUobV92aWV3LmdldCgpKTsKKyAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRy
dWUpOworICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5wYWludEJlaGF2aW9yIHwg
UGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CisgICAgLy8gV2hlbiBnZW5l
cmF0aW5nIHRoZSBkcmFnIGltYWdlIGZvciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRvY3VtZW50
IGJhY2tncm91bmQuCisgICAgbV92aWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbG9yV2l0
aE92ZXJyaWRlQWxwaGEoQ29sb3I6OndoaXRlLCAxLjApKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5
b3V0KCk7CisgICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lh
bCBzdWItdHJlZSBkcmF3aW5nIG1vZGUuCisKKyAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAg
ICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExl
dmVsUmVjdCk7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCkpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+dHJh
bnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7CisgICAgYnVmZmVy
LT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5yaWdodCgpLCBw
YWludGluZ1JlY3QuYm90dG9tKCkpKTsKKworICAgIG1fdmlldy0+cGFpbnQoYnVmZmVyLT5jb250
ZXh0KCksIHBhaW50aW5nUmVjdCk7CisKKyAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHN0YXRlLgor
ICAgIHJlc3RvcmVWaWV3U3RhdGUobV92aWV3LmdldCgpLCBzdGF0ZSk7CisgICAgcmVuZGVyZXIt
PnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7CisgICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOworICAg
IG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKKworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBi
dWZmZXItPmNvcHlJbWFnZSgpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
aW1hZ2UuZ2V0KCkpOworfQorCiBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVj
dGlvbigpCi17ICAgIAotICAgIGlmIChzZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQotICAgICAgICBy
ZXR1cm4gMDsgIC8vIEZJWE1FOiBpbXBsZW1lbnQgbWUhCit7CisgICAgaWYgKCFzZWxlY3Rpb24o
KS0+aXNSYW5nZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnN0IFZpZXdTdGF0ZSBz
dGF0ZSA9IHNhdmVWaWV3U3RhdGUobV92aWV3LmdldCgpKTsKKyAgICAvLyBGSVhNRTogRG8gd2Ug
cmVhbGx5IHdhbnQgdG8gZm9yY2UgYmxhY2sgdGV4dD8gSWYgd2UgZG9uJ3QsIHNlbGVjdGVkIHRl
eHQKKyAgICAvLyBpcyB3aGl0ZSBvbiBHVEsgYW5kIGxvb2tzIHJlYWxseSBiYWQgd2hlbiBpdCdz
IGJlaW5nIGRyYWdnZWQuIE9uIHRoZQorICAgIC8vIG90aGVyIGhhbmQsIEZpcmVmb3ggbWFuYWdl
cyB0byBkZWFsIHdpdGggaXQgY29ycmVjdGx5Li4uCisgICAgLy8gTWF5YmUgdGhlIHJpZ2h0IGZp
eCBpcyB0byBjaGFuZ2UgdGhlIHJlbmRlcmVyIHNvIHRoYXQgd2hlbiB5b3UgYXNrIGZvcgorICAg
IC8vIGp1c3QgdGhlIHNlbGVjdGlvbiwgeW91IHBhaW50IG9ubHkgdGhlIHNlbGVjdGlvbiwgYnV0
IHdpdGhvdXQgdGhlCisgICAgLy8gc2VsZWN0aW9uIGhpZ2hsaWdodGluZy4KKyAgICBtX3ZpZXct
PnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOworICAgIG1fZG9j
LT51cGRhdGVMYXlvdXQoKTsKKworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChzZWxlY3Rpb25Cb3VuZHMoKSk7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1
ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCkpKTsKKyAgICBidWZm
ZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0
LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50
aW5nUmVjdC5yaWdodCgpLCBwYWludGluZ1JlY3QuYm90dG9tKCkpKTsKKworICAgIG1fdmlldy0+
cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7CisKKyAgICByZXN0b3JlVmll
d1N0YXRlKG1fdmlldy5nZXQoKSwgc3RhdGUpOworICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsK
IAotICAgIHJldHVybiAwOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJ
bWFnZSgpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
ZWZsL0ZyYW1lRWZsLmNwcCBiL1dlYkNvcmUvcGFnZS9lZmwvRnJhbWVFZmwuY3BwCmluZGV4IDc4
M2RmN2U5NGNlOTZhN2IyMmU1NDZiNDkxZDY1ODQyNTMwMWQ1ZjcuLmIxYmU5Y2FhOTI2YTgwMjE4
NGYwNzQ1M2EwNmI4N2IzMmFkMTFmZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9lZmwvRnJh
bWVFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9lZmwvRnJhbWVFZmwuY3BwCkBAIC0zMiw2ICsz
MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9k
ZUltYWdlKE5vZGUqIG5vZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1l
R3RrLmNwcCBiL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3BwCmluZGV4IDNjYWI1YTA2NmM5
ODk5Y2M2ZDk2MzFkZWNmYTA0ZjM0ZDUxMzBlNWUuLjE0YTBmOGJiODBiOWIzMjIwYTkxMDhkZGFj
ZWUzMTgxNWFmMmVlODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3BwCkBAIC0yOCw2ICsyOCwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5v
ZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJ
bWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2hhaWt1L0ZyYW1lSGFpa3UuY3BwIGIv
V2ViQ29yZS9wYWdlL2hhaWt1L0ZyYW1lSGFpa3UuY3BwCmluZGV4IDUwMTY4ZGRkMzBhNWQ0MTRm
ZDA1OWEwZTc5ODBmMzdhZTdhZGFlMzcuLjVmZjY5NTA5YjE0Njc1NzY0YTkwZjcyNzU2YTYwODhj
MWU3YjAxZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9oYWlrdS9GcmFtZUhhaWt1LmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvaGFpa3UvRnJhbWVIYWlrdS5jcHAKQEAgLTMzLDYgKzMzLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2Uo
Tm9kZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogRHJh
Z0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CkBAIC00MCw0ICs0NiwzIEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdl
Rm9yU2VsZWN0aW9uKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tIGIvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1h
Yy5tbQppbmRleCBiYjExYWM5MGFlMjhmNjI4MjVmMmJlY2UwZWU1NDgzNzZhMWI5MDZlLi5kNjRm
NWZlY2ZlYjU5ZmZjYzkzNWIwNzUyNmVmZTI3NmFkYWU0Yjc0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCisrKyBiL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0K
QEAgLTM4MCw3ICszODAsNyBAQCBOU0ltYWdlKiBGcmFtZTo6c25hcHNob3REcmFnSW1hZ2UoTm9k
ZSogbm9kZSwgTlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLU5TSW1hZ2UqIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkgY29uc3QK
K05TSW1hZ2UqIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAt
NTM1LDcgKzUzNSw3IEBAIE5TTXV0YWJsZURpY3Rpb25hcnkqIEZyYW1lOjpkYXNoYm9hcmRSZWdp
b25zRGljdGlvbmFyeSgpCiB9CiAjZW5kaWYKIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1h
Z2VGb3JTZWxlY3Rpb24oKSAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCkKIHsKICAgICBpZiAoIXNlbGVjdGlvbigpLT5pc1JhbmdlKCkpCiAgICAgICAgIHJldHVy
biBuaWw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvcXQvRnJhbWVRdC5jcHAgYi9XZWJDb3Jl
L3BhZ2UvcXQvRnJhbWVRdC5jcHAKaW5kZXggNDkzZTYwZDA5MDYyODZmOWRkNmM0YjE0ODBiMmNi
YTA0MTFmYzhmYy4uZWQ3NWViODIwZmVjNTFjNDg5ZmZiZWQwNjU5N2E3MDdlM2I1M2RmMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3F0L0ZyYW1lUXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9x
dC9GcmFtZVF0LmNwcApAQCAtMjQsMTAgKzI0LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKIAorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oKSAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6ZHJh
Z0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biAwOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwIGIv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcAppbmRleCBjY2U1MDA0ODdiYTZmZTFjZWU5
NjIwNzY5MTQ0ZWVkNTM4MDViMzdmLi5jZTZkNmNiZGExZjE2MmQxMWM0NzU3NTZjODcyNmMxZGQ3
ZWU0MDc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgSEJJVE1B
UCBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQog
ICAgIHJldHVybiBpbWFnZTsKIH0KIAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5v
ZGUpIGNvbnN0CitIQklUTUFQIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRl
cmVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcCBiL1dl
YkNvcmUvcGFnZS93aW4vRnJhbWVDYWlyb1dpbi5jcHAKaW5kZXggM2UxZmUyODc0M2MwM2NiNzhl
Y2IzOGZmMmMwM2MwZDZiYjZiZjAxNS4uNGU0YTcwODNhMzQ4MmIxOGI0NzNjNmE4OWYwOTk5YjBl
M2Q4MmI1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCkBAIC00MCw3ICs0MCw3IEBA
IEhCSVRNQVAgaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNr
VGV4dCkKICAgICByZXR1cm4gMDsKIH0KIAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUq
KSBjb25zdAorSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luY2Uv
RnJhbWVXaW5jZS5jcHAgYi9XZWJDb3JlL3BhZ2Uvd2luY2UvRnJhbWVXaW5jZS5jcHAKaW5kZXgg
YzgwNmI5ODM3ZTQwY2RlZjllM2YyMzA1ZTI2NGYyYTY0MmI2Y2ZmNS4uN2NmYmFlMGIwMzBjZWIz
MTQxMjFkZjYzN2M1MzgzODQzZTMwZDE0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbmNl
L0ZyYW1lV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxU
YWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckZy
YW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTE0Nyw2ICsxNDgsMTIgQEAgSEJJ
VE1BUCBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0
KQogICAgIHJldHVybiBoQm1wOwogfQogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShO
b2RlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBEcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKHNlbGVj
dGlvbigpLT5pc1JhbmdlKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd3gvRnJhbWVXeC5j
cHAgYi9XZWJDb3JlL3BhZ2Uvd3gvRnJhbWVXeC5jcHAKaW5kZXggYjIyMDY5NDc0MDNmZGU0ZmIx
MzRhYzY5Y2NmOGMwYTk1MGY3ZTEwNi4uNmMxNmFkY2E3NTI4MDU3Y2E2ODE2YTdhYTVkYTUxNjMx
ZWRiNzE2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3d4L0ZyYW1lV3guY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS93eC9GcmFtZVd4LmNwcApAQCAtMjksNiArMjksMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBEcmFnSW1hZ2VSZWYgRnJh
bWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXgg
MDYyNDRhMmQwNDM0YmM1ODRkYzQyZTQ0ZDc1MWRmNzk5NTliNzZkYi4uMjM1MDhhNjk3ODc4NmVj
ZDM5M2YyNDlhMDBkODIxM2NkMzYxOTAzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTQwMCw3ICs0MDAsMTIgQEAgdm9pZCBDbGlw
Ym9hcmRDaHJvbWl1bTo6c2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiBub2RlLCBjb25zdCBJbnRQ
b2ludCYgbG9jKQogRHJhZ0ltYWdlUmVmIENsaXBib2FyZENocm9taXVtOjpjcmVhdGVEcmFnSW1h
Z2UoSW50UG9pbnQmIGxvYykgY29uc3QKIHsKICAgICBEcmFnSW1hZ2VSZWYgcmVzdWx0ID0gMDsK
LSAgICBpZiAobV9kcmFnSW1hZ2UpIHsKKyAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7Cisg
ICAgICAgIGlmIChtX2ZyYW1lKSB7CisgICAgICAgICAgICByZXN1bHQgPSBtX2ZyYW1lLT5ub2Rl
SW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIGxvYyA9IG1fZHJh
Z0xvYzsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAgICAg
cmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKG1fZHJhZ0ltYWdlLT5pbWFnZSgpKTsK
ICAgICAgICAgbG9jID0gbV9kcmFnTG9jOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDI3ZWFiY2RmMGQ1NWZkYTg1ODMyMzIxMmI3NWVlNGQxYTI2NDQ5YWMuLjExYjQz
NzRmZDA2ZGUwYTllZTRiNjk4NjQyYWFjODUwMDBlYjI4YjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcApAQCAtMTU5MSw3ICsxNTkxLDEwIEBAIENvbG9yIFJlbmRlck9iamVjdDo6c2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIENvbG9yIFJlbmRlck9iamVjdDo6c2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBDb2xvciBjb2xvcjsKLSAgICBpZiAo
c3R5bGUoKS0+dXNlclNlbGVjdCgpID09IFNFTEVDVF9OT05FKQorICAgIC8vIElmIHRoZSBlbGVt
ZW50IGlzIHVuc2VsZWN0YWJsZSwgb3Igd2UgYXJlIG9ubHkgcGFpbnRpbmcgdGhlIHNlbGVjdGlv
biwKKyAgICAvLyBkb24ndCBvdmVycmlkZSB0aGUgZm9yZWdyb3VuZCBjb2xvciB3aXRoIHRoZSBz
ZWxlY3Rpb24gZm9yZWdyb3VuZCBjb2xvci4KKyAgICBpZiAoc3R5bGUoKS0+dXNlclNlbGVjdCgp
ID09IFNFTEVDVF9OT05FCisgICAgICAgIHx8IChmcmFtZSgpLT52aWV3KCktPnBhaW50QmVoYXZp
b3IoKSAmIFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KSkKICAgICAgICAgcmV0dXJuIGNvbG9y
OwogCiAgICAgaWYgKFJlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGUgPSBnZXRVbmNhY2hl
ZFBzZXVkb1N0eWxlKFNFTEVDVElPTikpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64773</attachid>
            <date>2010-08-18 14:31:45 -0700</date>
            <delta_ts>2010-08-19 14:35:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100818143144.patch</filename>
            <type>text/plain</type>
            <size>13673</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTI5NDFkZWEyODdkODhmODYxNGRjMDE4NTBmZTQ1ZTkyOGM0OTFiYS4uYjViZGRiMjczYmI0MmIx
OGNhMDJiMmNiN2FiZDJhNWM5NTJmNzM4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wOC0xOCAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvYnJldy9GcmFtZUJyZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9G
cmFtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpkcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAqIHBhZ2UvZWZsL0ZyYW1lRWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBhZ2UvZ3RrL0ZyYW1lR3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBh
Z2UvaGFpa3UvRnJhbWVIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUlt
YWdlKToKKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJbWFnZUZv
clNlbGVjdGlvbik6CisgICAgICAgICogcGFnZS9xdC9GcmFtZVF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJ
bWFnZUZvclNlbGVjdGlvbik6CisgICAgICAgICogcGFnZS93aW4vRnJhbWVDR1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAgKiBwYWdlL3dpbi9G
cmFtZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgor
ICAgICAgICAqIHBhZ2Uvd2luY2UvRnJhbWVXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAgKiBwYWdlL3d4L0ZyYW1lV3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hy
b21pdW06OmNyZWF0ZURyYWdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcik6CisKIDIwMTAtMDgtMTcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA0ZTUyMmM0
YzJkZWRlMDEzMWE0MTM2YzU1YWQwNTAxNDZhNDhkMjlmLi4zNjgwM2Y4MTIzMjU3OGU0ZmE0ZDIw
YzVmZmEyZmYyNDE0NmRkZmVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysg
Yi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjIxLDYgKzIyMSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQq
IGlucHV0KTsKICAgICAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50Kik7
CiAKKyAgICAgICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFnZShOb2RlKik7CiAgICAgICAgIERyYWdJ
bWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKIAogICAgIC8vID09PSB0byBiZSBtb3Zl
ZCBpbnRvIFNlbGVjdGlvbkNvbnRyb2xsZXIKQEAgLTI4NSw3ICsyODYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoYm9vbCBmb3JjZUJs
YWNrVGV4dCA9IGZhbHNlKSBjb25zdDsKICAgICAgICAgTlNJbWFnZSogc25hcHNob3REcmFnSW1h
Z2UoTm9kZSosIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KSBjb25zdDsK
LSAgICAgICAgTlNJbWFnZSogbm9kZUltYWdlKE5vZGUqKSBjb25zdDsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIE5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoTlNSZWN0KSBjb25zdDsKQEAgLTI5OCwx
NCArMjk4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KFdJTikKLQotICAgIHB1YmxpYzoKLSAgICAgICAgLy8gRklYTUUgLSBXZSBzaG91bGQgaGF2ZSBh
IHNpbmdsZSB2ZXJzaW9uIG9mIG5vZGVJbWFnZSBpbnN0ZWFkIG9mIHVzaW5nIHBsYXRmb3JtIHR5
cGVzLgotICAgICAgICBIQklUTUFQIG5vZGVJbWFnZShOb2RlKikgY29uc3Q7Ci0KLSNlbmRpZgot
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBtdXRhYmxlIEZy
YW1lVHJlZSBtX3RyZWVOb2RlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2JyZXcvRnJhbWVC
cmV3LmNwcCBiL1dlYkNvcmUvcGFnZS9icmV3L0ZyYW1lQnJldy5jcHAKaW5kZXggYTU5MDU0NDFj
ODgxZDliNTIyMDJlMTZhMmFjYTNjNDVjODMxM2FkOS4uNzgyNWRiZDVhM2QzNGUyOTkyODZlMDhj
Mjk1YjNmMmM0NGJmNGFmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2JyZXcvRnJhbWVCcmV3
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvYnJldy9GcmFtZUJyZXcuY3BwCkBAIC0yOSw2ICsyOSwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUlt
YWdlKE5vZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
IERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hy
b21pdW0uY3BwIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3BwCmluZGV4
IDU0OGUwZmE2MzgyMmUwYTNlYmU1YjM3ZWExMGM4M2QzMzQ5M2M1ZjEuLmI0NjNjOGFhMzBmYzU0
MTUwMWU5MzM4MDBmZjk2NmM5OWQ3OTE3MDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9jaHJv
bWl1bS9GcmFtZUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVD
aHJvbWl1bS5jcHAKQEAgLTI4LDE5ICsyOCw5OSBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCi11c2luZyBzdGQ6Om1p
bjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitzdHJ1Y3QgU2NvcGVk
Vmlld1N0YXRlIHsKKyAgICBTY29wZWRWaWV3U3RhdGUoUGFzc1JlZlB0cjxGcmFtZVZpZXc+IHRo
ZVZpZXcpCisgICAgICAgIDogdmlldyh0aGVWaWV3KQorICAgICAgICAsIHBhaW50QmVoYXZpb3Io
dmlldy0+cGFpbnRCZWhhdmlvcigpKQorICAgICAgICAsIGJhY2tncm91bmRDb2xvcih2aWV3LT5i
YXNlQmFja2dyb3VuZENvbG9yKCkpCisgICAgeworICAgIH0KKworICAgIH5TY29wZWRWaWV3U3Rh
dGUoKQorICAgIHsKKyAgICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9y
KTsKKyAgICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3Ip
OworICAgIH0KKworICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXc7CisgICAgUGFpbnRCZWhhdmlv
ciBwYWludEJlaGF2aW9yOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKK307CisKK30gLy8g
bmFtZXNwYWNlCisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCit7
CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBTY29wZWRWaWV3U3Rh
dGUgc3RhdGUobV92aWV3KTsKKworICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7
CisgICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IgfCBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKKyAgICAvLyBXaGVuIGdlbmVyYXRp
bmcgdGhlIGRyYWcgaW1hZ2UgZm9yIGFuIGVsZW1lbnQsIGlnbm9yZSB0aGUgZG9jdW1lbnQgYmFj
a2dyb3VuZC4KKyAgICBtX3ZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29sb3JXaXRoT3Zl
cnJpZGVBbHBoYShDb2xvcjo6d2hpdGUsIDEuMCkpOworICAgIG1fZG9jLT51cGRhdGVMYXlvdXQo
KTsKKyAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIEVuYWJsZSBzcGVjaWFsIHN1
Yi10cmVlIGRyYXdpbmcgbW9kZS4KKworICAgIEludFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIElu
dFJlY3QgcGFpbnRpbmdSZWN0ID0gcmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxS
ZWN0KTsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVh
dGUocGFpbnRpbmdSZWN0LnNpemUoKSkpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1
cm4gMDsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgp
LCAtcGFpbnRpbmdSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRS
ZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5yaWdodCgpLCBwYWludGluZ1JlY3QuYm90dG9tKCkpKTsK
KworICAgIG1fdmlldy0+cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7CisK
KyAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHN0YXRlLgorICAgIHJlbmRlcmVyLT51cGRhdGVEcmFn
U3RhdGUoZmFsc2UpOworICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKKyAgICBtX3ZpZXctPnNl
dE5vZGVUb0RyYXcoMCk7CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5
SW1hZ2UoKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgp
KTsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQoteyAg
ICAKLSAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7ICAv
LyBGSVhNRTogaW1wbGVtZW50IG1lIQoreworICAgIGlmICghc2VsZWN0aW9uKCktPmlzUmFuZ2Uo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBTY29wZWRWaWV3U3RhdGUgc3RhdGUo
bV92aWV3KTsKKyAgICAvLyBGSVhNRTogRG8gd2UgcmVhbGx5IHdhbnQgdG8gZm9yY2UgYmxhY2sg
dGV4dD8gSWYgd2UgZG9uJ3QsIHNlbGVjdGVkIHRleHQKKyAgICAvLyBpcyB3aGl0ZSBvbiBHVEsg
YW5kIGxvb2tzIHJlYWxseSBiYWQgd2hlbiBpdCdzIGJlaW5nIGRyYWdnZWQuIE9uIHRoZQorICAg
IC8vIG90aGVyIGhhbmQsIEZpcmVmb3ggbWFuYWdlcyB0byBkZWFsIHdpdGggaXQgY29ycmVjdGx5
Li4uCisgICAgLy8gTWF5YmUgdGhlIHJpZ2h0IGZpeCBpcyB0byBjaGFuZ2UgdGhlIHJlbmRlcmVy
IHNvIHRoYXQgd2hlbiB5b3UgYXNrIGZvcgorICAgIC8vIGp1c3QgdGhlIHNlbGVjdGlvbiwgeW91
IHBhaW50IG9ubHkgdGhlIHNlbGVjdGlvbiwgYnV0IHdpdGhvdXQgdGhlCisgICAgLy8gc2VsZWN0
aW9uIGhpZ2hsaWdodGluZy4KKyAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhh
dmlvclNlbGVjdGlvbk9ubHkpOworICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKKworICAgIElu
dFJlY3QgcGFpbnRpbmdSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChzZWxlY3Rpb25Cb3VuZHMoKSk7
CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBh
aW50aW5nUmVjdC5zaXplKCkpKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBh
aW50aW5nUmVjdC55KCkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgw
LCAwLCBwYWludGluZ1JlY3QucmlnaHQoKSwgcGFpbnRpbmdSZWN0LmJvdHRvbSgpKSk7CisKKyAg
ICBtX3ZpZXctPnBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOworCisgICAg
bV9kb2MtPnVwZGF0ZUxheW91dCgpOwogCi0gICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKCk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShpbWFnZS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9lZmwvRnJhbWVFZmwuY3BwIGIvV2ViQ29yZS9wYWdlL2Vm
bC9GcmFtZUVmbC5jcHAKaW5kZXggNzgzZGY3ZTk0Y2U5NmE3YjIyZTU0NmI0OTFkNjU4NDI1MzAx
ZDVmNy4uYjFiZTljYWE5MjZhODAyMTg0ZjA3NDUzYTA2Yjg3YjMyYWQxMWZmNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL2VmbC9GcmFtZUVmbC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2VmbC9G
cmFtZUVmbC5jcHAKQEAgLTMyLDYgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
RHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJ
bWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3BwIGIvV2ViQ29yZS9wYWdlL2d0ay9GcmFtZUd0
ay5jcHAKaW5kZXggM2NhYjVhMDY2Yzk4OTljYzZkOTYzMWRlY2ZhMDRmMzRkNTEzMGU1ZS4uMTRh
MGY4YmI4MGI5YjMyMjBhOTEwOGRkYWNlZTMxODE1YWYyZWU4MSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL2d0ay9GcmFtZUd0ay5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2d0ay9GcmFtZUd0ay5j
cHAKQEAgLTI4LDYgKzI4LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRHJhZ0ltYWdl
UmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
aGFpa3UvRnJhbWVIYWlrdS5jcHAgYi9XZWJDb3JlL3BhZ2UvaGFpa3UvRnJhbWVIYWlrdS5jcHAK
aW5kZXggNTAxNjhkZGQzMGE1ZDQxNGZkMDU5YTBlNzk4MGYzN2FlN2FkYWUzNy4uNWZmNjk1MDli
MTQ2NzU3NjRhOTBmNzI3NTZhNjA4OGMxZTdiMDFlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L2hhaWt1L0ZyYW1lSGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9oYWlrdS9GcmFtZUhhaWt1
LmNwcApAQCAtMzMsNiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitEcmFnSW1h
Z2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCiBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVj
dGlvbigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTQwLDQgKzQ2LDMgQEAgRHJhZ0lt
YWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0gYi9X
ZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCmluZGV4IGJiMTFhYzkwYWUyOGY2MjgyNWYyYmVj
ZTBlZTU0ODM3NmExYjkwNmUuLmQ2NGY1ZmVjZmViNTlmZmNjOTM1YjA3NTI2ZWZlMjc2YWRhZTRi
NzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KKysrIGIvV2ViQ29y
ZS9wYWdlL21hYy9GcmFtZU1hYy5tbQpAQCAtMzgwLDcgKzM4MCw3IEBAIE5TSW1hZ2UqIEZyYW1l
OjpzbmFwc2hvdERyYWdJbWFnZShOb2RlKiBub2RlLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0
KiBlbGVtZW50CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotTlNJbWFnZSogRnJhbWU6Om5vZGVJ
bWFnZShOb2RlKiBub2RlKSBjb25zdAorTlNJbWFnZSogRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBu
b2RlKQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwog
ICAgIGlmICghcmVuZGVyZXIpCkBAIC01MzUsNyArNTM1LDcgQEAgTlNNdXRhYmxlRGljdGlvbmFy
eSogRnJhbWU6OmRhc2hib2FyZFJlZ2lvbnNEaWN0aW9uYXJ5KCkKIH0KICNlbmRpZgogCi1EcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpIAorRHJhZ0ltYWdlUmVmIEZy
YW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewogICAgIGlmICghc2VsZWN0aW9uKCktPmlz
UmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9x
dC9GcmFtZVF0LmNwcCBiL1dlYkNvcmUvcGFnZS9xdC9GcmFtZVF0LmNwcAppbmRleCA0OTNlNjBk
MDkwNjI4NmY5ZGQ2YzRiMTQ4MGIyY2JhMDQxMWZjOGZjLi5lZDc1ZWI4MjBmZWM1MWM0ODlmZmJl
ZDA2NTk3YTcwN2UzYjUzZGYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvcXQvRnJhbWVRdC5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL3F0L0ZyYW1lUXQuY3BwCkBAIC0yNCwxMCArMjQsMTkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogCisjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmFnSW1hZ2VSZWYgRnJh
bWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpIAorRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1h
Z2UoTm9kZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
RHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogeworICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS93aW4vRnJhbWVDR1dpbi5jcHAgYi9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCmlu
ZGV4IGNjZTUwMDQ4N2JhNmZlMWNlZTk2MjA3NjkxNDRlZWQ1MzgwNWIzN2YuLmNlNmQ2Y2JkYTFm
MTYyZDExYzQ3NTc1NmM4NzI2YzFkZDdlZTQwNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS93
aW4vRnJhbWVDR1dpbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcApA
QCAtOTUsNyArOTUsNyBAQCBIQklUTUFQIGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUs
IGJvb2wgZm9yY2VCbGFja1RleHQpCiAgICAgcmV0dXJuIGltYWdlOwogfQogCi1IQklUTUFQIEZy
YW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkgY29uc3QKK0hCSVRNQVAgRnJhbWU6Om5vZGVJbWFn
ZShOb2RlKiBub2RlKQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2lu
L0ZyYW1lQ2Fpcm9XaW4uY3BwIGIvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcApp
bmRleCAzZTFmZTI4NzQzYzAzY2I3OGVjYjM4ZmYyYzAzYzBkNmJiNmJmMDE1Li40ZTRhNzA4M2Ez
NDgyYjE4YjQ3M2M2YTg5ZjA5OTliMGUzZDgyYjVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDYWlyb1dp
bi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSEJJVE1BUCBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUq
IGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIHJldHVybiAwOwogfQogCi1IQklUTUFQ
IEZyYW1lOjpub2RlSW1hZ2UoTm9kZSopIGNvbnN0CitIQklUTUFQIEZyYW1lOjpub2RlSW1hZ2Uo
Tm9kZSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNwcCBiL1dlYkNvcmUvcGFnZS93aW5j
ZS9GcmFtZVdpbmNlLmNwcAppbmRleCBjODA2Yjk4MzdlNDBjZGVmOWUzZjIzMDVlMjY0ZjJhNjQy
YjZjZmY1Li43Y2ZiYWUwYjAzMGNlYjMxNDEyMWRmNjM3YzUzODM4NDNlMzBkMTRjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2Uvd2luY2UvRnJhbWVXaW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L3dpbmNlL0ZyYW1lV2luY2UuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbmNsdWRlICJLZXli
b2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhbWUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgpA
QCAtMTQ3LDYgKzE0OCwxMiBAQCBIQklUTUFQIGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJh
bWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCiAgICAgcmV0dXJuIGhCbXA7CiB9CiAKK0RyYWdJbWFn
ZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCkKIHsKICAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS93eC9GcmFtZVd4LmNwcCBiL1dlYkNvcmUvcGFnZS93eC9GcmFtZVd4LmNwcApp
bmRleCBiMjIwNjk0NzQwM2ZkZTRmYjEzNGFjNjljY2Y4YzBhOTUwZjdlMTA2Li42YzE2YWRjYTc1
MjgwNTdjYTY4MTZhN2FhNWRhNTE2MzFlZGI3MTZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
d3gvRnJhbWVXeC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3d4L0ZyYW1lV3guY3BwCkBAIC0yOSw2
ICsyOSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6
bm9kZUltYWdlKE5vZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmNwcAppbmRleCAwNjI0NGEyZDA0MzRiYzU4NGRjNDJlNDRkNzUxZGY3OTk1
OWI3NmRiLi4yMzUwOGE2OTc4Nzg2ZWNkMzkzZjI0OWEwMGQ4MjEzY2QzNjE5MDMyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcApAQCAtNDAw
LDcgKzQwMCwxMiBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjpzZXREcmFnSW1hZ2VFbGVtZW50
KE5vZGUqIG5vZGUsIGNvbnN0IEludFBvaW50JiBsb2MpCiBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJk
Q2hyb21pdW06OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jKSBjb25zdAogewogICAgIERy
YWdJbWFnZVJlZiByZXN1bHQgPSAwOwotICAgIGlmIChtX2RyYWdJbWFnZSkgeworICAgIGlmICht
X2RyYWdJbWFnZUVsZW1lbnQpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUpIHsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1fZnJhbWUtPm5vZGVJbWFnZShtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCkpOwor
ICAgICAgICAgICAgbG9jID0gbV9kcmFnTG9jOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICht
X2RyYWdJbWFnZSkgewogICAgICAgICByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
bV9kcmFnSW1hZ2UtPmltYWdlKCkpOwogICAgICAgICBsb2MgPSBtX2RyYWdMb2M7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMjdlYWJjZGYwZDU1ZmRhODU4MzIzMjEy
Yjc1ZWU0ZDFhMjY0NDlhYy4uMTFiNDM3NGZkMDZkZTBhOWVlNGI2OTg2NDJhYWM4NTAwMGViMjhi
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNTkxLDcgKzE1OTEsMTAgQEAg
Q29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogQ29s
b3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAg
IENvbG9yIGNvbG9yOwotICAgIGlmIChzdHlsZSgpLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05P
TkUpCisgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgdW5zZWxlY3RhYmxlLCBvciB3ZSBhcmUgb25s
eSBwYWludGluZyB0aGUgc2VsZWN0aW9uLAorICAgIC8vIGRvbid0IG92ZXJyaWRlIHRoZSBmb3Jl
Z3JvdW5kIGNvbG9yIHdpdGggdGhlIHNlbGVjdGlvbiBmb3JlZ3JvdW5kIGNvbG9yLgorICAgIGlm
IChzdHlsZSgpLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05PTkUKKyAgICAgICAgfHwgKGZyYW1l
KCktPnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkp
KQogICAgICAgICByZXR1cm4gY29sb3I7CiAKICAgICBpZiAoUmVmUHRyPFJlbmRlclN0eWxlPiBw
c2V1ZG9TdHlsZSA9IGdldFVuY2FjaGVkUHNldWRvU3R5bGUoU0VMRUNUSU9OKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64900</attachid>
            <date>2010-08-19 14:35:48 -0700</date>
            <delta_ts>2010-08-20 16:03:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100819143546.patch</filename>
            <type>text/plain</type>
            <size>13308</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTEwN2MxMDllMWJhNGEyY2I5NDFmZTZkYWJiNzMwMDJmNGJlZGQwMC4uM2QyNWU0MzM1ZjY5NmQ1
NjM2NmU5OTVmNzk1MzRlYjFmNWY2OWQ3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wOC0xOCAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
cGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvYnJldy9GcmFtZUJyZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9G
cmFtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpkcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAqIHBhZ2UvZWZsL0ZyYW1lRWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBhZ2UvZ3RrL0ZyYW1lR3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBh
Z2UvaGFpa3UvRnJhbWVIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUlt
YWdlKToKKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJbWFnZUZv
clNlbGVjdGlvbik6CisgICAgICAgICogcGFnZS9xdC9GcmFtZVF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRyYWdJ
bWFnZUZvclNlbGVjdGlvbik6CisgICAgICAgICogcGFnZS93aW4vRnJhbWVDR1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAgKiBwYWdlL3dpbi9G
cmFtZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgor
ICAgICAgICAqIHBhZ2Uvd2luY2UvRnJhbWVXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAgKiBwYWdlL3d4L0ZyYW1lV3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hy
b21pdW06OmNyZWF0ZURyYWdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcik6CisKIDIwMTAtMDgtMTggIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNGU1MjJj
NGMyZGVkZTAxMzFhNDEzNmM1NWFkMDUwMTQ2YTQ4ZDI5Zi4uMzY4MDNmODEyMzI1NzhlNGZhNGQy
MGM1ZmZhMmZmMjQxNDZkZGZlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysr
IGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTIyMSw2ICsyMjEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVtZW50
KiBpbnB1dCk7CiAgICAgICAgIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCop
OwogCisgICAgICAgIERyYWdJbWFnZVJlZiBub2RlSW1hZ2UoTm9kZSopOwogICAgICAgICBEcmFn
SW1hZ2VSZWYgZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCk7CiAKICAgICAvLyA9PT0gdG8gYmUgbW92
ZWQgaW50byBTZWxlY3Rpb25Db250cm9sbGVyCkBAIC0yODUsNyArMjg2LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIE5TSW1hZ2UqIHNlbGVjdGlvbkltYWdlKGJvb2wgZm9yY2VC
bGFja1RleHQgPSBmYWxzZSkgY29uc3Q7CiAgICAgICAgIE5TSW1hZ2UqIHNuYXBzaG90RHJhZ0lt
YWdlKE5vZGUqLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCkgY29uc3Q7
Ci0gICAgICAgIE5TSW1hZ2UqIG5vZGVJbWFnZShOb2RlKikgY29uc3Q7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBOU0ltYWdlKiBpbWFnZUZyb21SZWN0KE5TUmVjdCkgY29uc3Q7CkBAIC0yOTgs
MTQgKzI5OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShXSU4pCi0KLSAgICBwdWJsaWM6Ci0gICAgICAgIC8vIEZJWE1FIC0gV2Ugc2hvdWxkIGhhdmUg
YSBzaW5nbGUgdmVyc2lvbiBvZiBub2RlSW1hZ2UgaW5zdGVhZCBvZiB1c2luZyBwbGF0Zm9ybSB0
eXBlcy4KLSAgICAgICAgSEJJVE1BUCBub2RlSW1hZ2UoTm9kZSopIGNvbnN0OwotCi0jZW5kaWYK
LQogICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgbXV0YWJsZSBG
cmFtZVRyZWUgbV90cmVlTm9kZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9icmV3L0ZyYW1l
QnJldy5jcHAgYi9XZWJDb3JlL3BhZ2UvYnJldy9GcmFtZUJyZXcuY3BwCmluZGV4IGE1OTA1NDQx
Yzg4MWQ5YjUyMjAyZTE2YTJhY2EzYzQ1YzgzMTNhZDkuLjc4MjVkYmQ1YTNkMzRlMjk5Mjg2ZTA4
YzI5NWIzZjJjNDRiZjRhZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9icmV3L0ZyYW1lQnJl
dy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2JyZXcvRnJhbWVCcmV3LmNwcApAQCAtMjksNiArMjks
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJ
bWFnZShOb2RlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQor
CiBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNo
cm9taXVtLmNwcCBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcAppbmRl
eCA1NDhlMGZhNjM4MjJlMGEzZWJlNWIzN2VhMTBjODNkMzM0OTNjNWYxLi40MTQ2YjM5YTdiY2Ji
NWQ2NTA3ODc4MWQ3NGM3OTE5ZmZlMTg5MzY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hy
b21pdW0vRnJhbWVDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1l
Q2hyb21pdW0uY3BwCkBAIC0yOCwxOSArMjgsOTEgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAotdXNpbmcgc3RkOjpt
aW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworc3RydWN0IFNjb3Bl
ZFN0YXRlIHsKKyAgICBTY29wZWRTdGF0ZShGcmFtZSogdGhlRnJhbWUsIFJlbmRlck9iamVjdCog
dGhlUmVuZGVyZXIpCisgICAgICAgIDogZnJhbWUodGhlRnJhbWUpCisgICAgICAgICwgcmVuZGVy
ZXIodGhlUmVuZGVyZXIpCisgICAgICAgICwgcGFpbnRCZWhhdmlvcihmcmFtZS0+dmlldygpLT5w
YWludEJlaGF2aW9yKCkpCisgICAgICAgICwgYmFja2dyb3VuZENvbG9yKGZyYW1lLT52aWV3KCkt
PmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSkKKyAgICB7CisgICAgfQorCisgICAgflNjb3BlZFN0YXRl
KCkKKyAgICB7CisgICAgICAgIGlmIChyZW5kZXJlcikKKyAgICAgICAgICAgIHJlbmRlcmVyLT51
cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAgICAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJl
aGF2aW9yKHBhaW50QmVoYXZpb3IpOworICAgICAgICBmcmFtZS0+dmlldygpLT5zZXRCYXNlQmFj
a2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGZyYW1lLT52aWV3KCktPnNl
dE5vZGVUb0RyYXcoMCk7CisgICAgfQorCisgICAgRnJhbWUqIGZyYW1lOworICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXI7CisgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOworICAgIENv
bG9yIGJhY2tncm91bmRDb2xvcjsKK307CisKK30gLy8gbmFtZXNwYWNlCisKK0RyYWdJbWFnZVJl
ZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBjb25zdCBTY29wZWRTdGF0ZSBzdGF0ZSh0aGlzLCByZW5kZXJlcik7CisK
KyAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOworICAgIG1fdmlldy0+c2V0UGFp
bnRCZWhhdmlvcihzdGF0ZS5wYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVycyk7CisgICAgLy8gV2hlbiBnZW5lcmF0aW5nIHRoZSBkcmFnIGltYWdlIGZv
ciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRvY3VtZW50IGJhY2tncm91bmQuCisgICAgbV92aWV3
LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoQ29sb3I6Ondo
aXRlLCAxLjApKTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV92aWV3LT5zZXRO
b2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUu
CisKKyAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9
IHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCk7CisKKyAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXpl
KCkpKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYnVmZmVyLT5j
b250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkp
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1Jl
Y3QucmlnaHQoKSwgcGFpbnRpbmdSZWN0LmJvdHRvbSgpKSk7CisKKyAgICBtX3ZpZXctPnBhaW50
KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOworCisgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKCk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShpbWFnZS5nZXQoKSk7Cit9CisKIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdl
Rm9yU2VsZWN0aW9uKCkKLXsgICAgCi0gICAgaWYgKHNlbGVjdGlvbigpLT5pc1JhbmdlKCkpCi0g
ICAgICAgIHJldHVybiAwOyAgLy8gRklYTUU6IGltcGxlbWVudCBtZSEKK3sKKyAgICBpZiAoIXNl
bGVjdGlvbigpLT5pc1JhbmdlKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29uc3QgU2Nv
cGVkU3RhdGUgc3RhdGUodGhpcywgMCk7CisgICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBh
aW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsKKyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisK
KyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uQm91
bmRzKCkpOworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpKSk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJl
dHVybiAwOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC54
KCksIC1wYWludGluZ1JlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xpcChGbG9h
dFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0LnJpZ2h0KCksIHBhaW50aW5nUmVjdC5ib3R0b20oKSkp
OworCisgICAgbV92aWV3LT5wYWludChidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsK
IAotICAgIHJldHVybiAwOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJ
bWFnZSgpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
ZWZsL0ZyYW1lRWZsLmNwcCBiL1dlYkNvcmUvcGFnZS9lZmwvRnJhbWVFZmwuY3BwCmluZGV4IDc4
M2RmN2U5NGNlOTZhN2IyMmU1NDZiNDkxZDY1ODQyNTMwMWQ1ZjcuLmIxYmU5Y2FhOTI2YTgwMjE4
NGYwNzQ1M2EwNmI4N2IzMmFkMTFmZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9lZmwvRnJh
bWVFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9lZmwvRnJhbWVFZmwuY3BwCkBAIC0zMiw2ICsz
MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9k
ZUltYWdlKE5vZGUqIG5vZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1l
R3RrLmNwcCBiL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3BwCmluZGV4IDNjYWI1YTA2NmM5
ODk5Y2M2ZDk2MzFkZWNmYTA0ZjM0ZDUxMzBlNWUuLjE0YTBmOGJiODBiOWIzMjIwYTkxMDhkZGFj
ZWUzMTgxNWFmMmVlODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3BwCkBAIC0yOCw2ICsyOCwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5v
ZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJ
bWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2hhaWt1L0ZyYW1lSGFpa3UuY3BwIGIv
V2ViQ29yZS9wYWdlL2hhaWt1L0ZyYW1lSGFpa3UuY3BwCmluZGV4IDUwMTY4ZGRkMzBhNWQ0MTRm
ZDA1OWEwZTc5ODBmMzdhZTdhZGFlMzcuLjVmZjY5NTA5YjE0Njc1NzY0YTkwZjcyNzU2YTYwODhj
MWU3YjAxZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9oYWlrdS9GcmFtZUhhaWt1LmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvaGFpa3UvRnJhbWVIYWlrdS5jcHAKQEAgLTMzLDYgKzMzLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2Uo
Tm9kZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogRHJh
Z0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CkBAIC00MCw0ICs0NiwzIEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdl
Rm9yU2VsZWN0aW9uKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tIGIvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1h
Yy5tbQppbmRleCBiYjExYWM5MGFlMjhmNjI4MjVmMmJlY2UwZWU1NDgzNzZhMWI5MDZlLi5kNjRm
NWZlY2ZlYjU5ZmZjYzkzNWIwNzUyNmVmZTI3NmFkYWU0Yjc0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCisrKyBiL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0K
QEAgLTM4MCw3ICszODAsNyBAQCBOU0ltYWdlKiBGcmFtZTo6c25hcHNob3REcmFnSW1hZ2UoTm9k
ZSogbm9kZSwgTlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLU5TSW1hZ2UqIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkgY29uc3QK
K05TSW1hZ2UqIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAt
NTM1LDcgKzUzNSw3IEBAIE5TTXV0YWJsZURpY3Rpb25hcnkqIEZyYW1lOjpkYXNoYm9hcmRSZWdp
b25zRGljdGlvbmFyeSgpCiB9CiAjZW5kaWYKIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1h
Z2VGb3JTZWxlY3Rpb24oKSAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCkKIHsKICAgICBpZiAoIXNlbGVjdGlvbigpLT5pc1JhbmdlKCkpCiAgICAgICAgIHJldHVy
biBuaWw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvcXQvRnJhbWVRdC5jcHAgYi9XZWJDb3Jl
L3BhZ2UvcXQvRnJhbWVRdC5jcHAKaW5kZXggNDkzZTYwZDA5MDYyODZmOWRkNmM0YjE0ODBiMmNi
YTA0MTFmYzhmYy4uZWQ3NWViODIwZmVjNTFjNDg5ZmZiZWQwNjU5N2E3MDdlM2I1M2RmMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3F0L0ZyYW1lUXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9x
dC9GcmFtZVF0LmNwcApAQCAtMjQsMTAgKzI0LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKIAorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oKSAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6ZHJh
Z0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biAwOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwIGIv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcAppbmRleCBjY2U1MDA0ODdiYTZmZTFjZWU5
NjIwNzY5MTQ0ZWVkNTM4MDViMzdmLi5jZTZkNmNiZGExZjE2MmQxMWM0NzU3NTZjODcyNmMxZGQ3
ZWU0MDc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgSEJJVE1B
UCBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQog
ICAgIHJldHVybiBpbWFnZTsKIH0KIAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5v
ZGUpIGNvbnN0CitIQklUTUFQIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRl
cmVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcCBiL1dl
YkNvcmUvcGFnZS93aW4vRnJhbWVDYWlyb1dpbi5jcHAKaW5kZXggM2UxZmUyODc0M2MwM2NiNzhl
Y2IzOGZmMmMwM2MwZDZiYjZiZjAxNS4uNGU0YTcwODNhMzQ4MmIxOGI0NzNjNmE4OWYwOTk5YjBl
M2Q4MmI1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCkBAIC00MCw3ICs0MCw3IEBA
IEhCSVRNQVAgaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNr
VGV4dCkKICAgICByZXR1cm4gMDsKIH0KIAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUq
KSBjb25zdAorSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luY2Uv
RnJhbWVXaW5jZS5jcHAgYi9XZWJDb3JlL3BhZ2Uvd2luY2UvRnJhbWVXaW5jZS5jcHAKaW5kZXgg
YzgwNmI5ODM3ZTQwY2RlZjllM2YyMzA1ZTI2NGYyYTY0MmI2Y2ZmNS4uN2NmYmFlMGIwMzBjZWIz
MTQxMjFkZjYzN2M1MzgzODQzZTMwZDE0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbmNl
L0ZyYW1lV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxU
YWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckZy
YW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTE0Nyw2ICsxNDgsMTIgQEAgSEJJ
VE1BUCBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0
KQogICAgIHJldHVybiBoQm1wOwogfQogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShO
b2RlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBEcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKHNlbGVj
dGlvbigpLT5pc1JhbmdlKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd3gvRnJhbWVXeC5j
cHAgYi9XZWJDb3JlL3BhZ2Uvd3gvRnJhbWVXeC5jcHAKaW5kZXggYjIyMDY5NDc0MDNmZGU0ZmIx
MzRhYzY5Y2NmOGMwYTk1MGY3ZTEwNi4uNmMxNmFkY2E3NTI4MDU3Y2E2ODE2YTdhYTVkYTUxNjMx
ZWRiNzE2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3d4L0ZyYW1lV3guY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS93eC9GcmFtZVd4LmNwcApAQCAtMjksNiArMjksMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBEcmFnSW1hZ2VSZWYgRnJh
bWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXgg
MDYyNDRhMmQwNDM0YmM1ODRkYzQyZTQ0ZDc1MWRmNzk5NTliNzZkYi4uMjM1MDhhNjk3ODc4NmVj
ZDM5M2YyNDlhMDBkODIxM2NkMzYxOTAzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTQwMCw3ICs0MDAsMTIgQEAgdm9pZCBDbGlw
Ym9hcmRDaHJvbWl1bTo6c2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiBub2RlLCBjb25zdCBJbnRQ
b2ludCYgbG9jKQogRHJhZ0ltYWdlUmVmIENsaXBib2FyZENocm9taXVtOjpjcmVhdGVEcmFnSW1h
Z2UoSW50UG9pbnQmIGxvYykgY29uc3QKIHsKICAgICBEcmFnSW1hZ2VSZWYgcmVzdWx0ID0gMDsK
LSAgICBpZiAobV9kcmFnSW1hZ2UpIHsKKyAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7Cisg
ICAgICAgIGlmIChtX2ZyYW1lKSB7CisgICAgICAgICAgICByZXN1bHQgPSBtX2ZyYW1lLT5ub2Rl
SW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIGxvYyA9IG1fZHJh
Z0xvYzsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAgICAg
cmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKG1fZHJhZ0ltYWdlLT5pbWFnZSgpKTsK
ICAgICAgICAgbG9jID0gbV9kcmFnTG9jOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDI3ZWFiY2RmMGQ1NWZkYTg1ODMyMzIxMmI3NWVlNGQxYTI2NDQ5YWMuLjExYjQz
NzRmZDA2ZGUwYTllZTRiNjk4NjQyYWFjODUwMDBlYjI4YjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcApAQCAtMTU5MSw3ICsxNTkxLDEwIEBAIENvbG9yIFJlbmRlck9iamVjdDo6c2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIENvbG9yIFJlbmRlck9iamVjdDo6c2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBDb2xvciBjb2xvcjsKLSAgICBpZiAo
c3R5bGUoKS0+dXNlclNlbGVjdCgpID09IFNFTEVDVF9OT05FKQorICAgIC8vIElmIHRoZSBlbGVt
ZW50IGlzIHVuc2VsZWN0YWJsZSwgb3Igd2UgYXJlIG9ubHkgcGFpbnRpbmcgdGhlIHNlbGVjdGlv
biwKKyAgICAvLyBkb24ndCBvdmVycmlkZSB0aGUgZm9yZWdyb3VuZCBjb2xvciB3aXRoIHRoZSBz
ZWxlY3Rpb24gZm9yZWdyb3VuZCBjb2xvci4KKyAgICBpZiAoc3R5bGUoKS0+dXNlclNlbGVjdCgp
ID09IFNFTEVDVF9OT05FCisgICAgICAgIHx8IChmcmFtZSgpLT52aWV3KCktPnBhaW50QmVoYXZp
b3IoKSAmIFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KSkKICAgICAgICAgcmV0dXJuIGNvbG9y
OwogCiAgICAgaWYgKFJlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGUgPSBnZXRVbmNhY2hl
ZFBzZXVkb1N0eWxlKFNFTEVDVElPTikpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65004</attachid>
            <date>2010-08-20 16:03:06 -0700</date>
            <delta_ts>2010-08-24 09:07:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43449-20100820160305.patch</filename>
            <type>text/plain</type>
            <size>16986</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmQ2N2RiN2RjNmVhZWIzNDRlZGZhNDY4OGNiM2FjZjQ4MTlkZDAyNi4uMzY4MDAwYWQzYWEyNzc0
YTIzODE4Yjg5YmNhOWNkZWE5YTBmZGZhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMC0wOC0yMCAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEdlbmVyYXRlIGRyYWcgaW1hZ2Vz
IGZvciBIVE1MIGVsZW1lbnRzIGFuZCBzZWxlY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NDkKKworICAgICAgICBXZSB3ZXJlbid0IHBy
b3Blcmx5IGdlbmVyYXRpbmcgZHJhZyBpbWFnZXMgaWYgYW4gSFRNTCBlbGVtZW50IHdhcyBzZXQK
KyAgICAgICAgYXMgdGhlIGRyYWcgZmVlZGJhY2sgaW1hZ2UuIEkgYWxzbyBpbXBsZW1lbnRlZCBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24KKyAgICAgICAgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAg
ICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFnZV0pOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKiBwYWdlL2JyZXcvRnJhbWVCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Ojpub2RlSW1hZ2UpOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBwYWdlL2VmbC9GcmFtZUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
bm9kZUltYWdlKToKKyAgICAgICAgKiBwYWdlL2d0ay9GcmFtZUd0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAgKiBwYWdlL2hhaWt1L0ZyYW1lSGFp
a3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICog
cGFnZS9tYWMvRnJhbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24pOgorICAg
ICAgICAqIHBhZ2UvcXQvRnJhbWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9k
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24p
OgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6Om5vZGVJbWFnZSk6CisgICAgICAgICogcGFnZS93aW4vRnJhbWVDYWlyb1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAgKiBwYWdlL3dp
bmNlL0ZyYW1lV2luY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6
CisgICAgICAgICogcGFnZS93eC9GcmFtZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Ojpub2RlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpjcmVhdGVEcmFn
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgorCiAyMDEw
LTA4LTIwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCBzcGVjdWxhdGl2ZSBDaHJvbWl1bSBidWlsZCBmaXguIEZvcndhcmQgZGVjbGFyZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggMDdjOWVkMTc0MjJkNGYzNDUzMmEzOWEzNGIyNzRjNDhhNzRmYmFkYi4uMjg5Mjkz
NzQ0NjNlODJiNjhlNDVkNmZkYmVmNTVjZTkxNzc1NzliZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC01ODgsNiArNTg4
LDcgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjhzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50RVA3
TlNBcnJheVBOU183RWxlbWVudEVQbVBiCiBfX1pON1dlYkNvcmU1RnJhbWUzNHNldE1hcmtlZFRl
eHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWRFYgogX19aTjdXZWJDb3JlNUZyYW1lNmNyZWF0ZUVQTlNf
NFBhZ2VFUE5TXzIxSFRNTEZyYW1lT3duZXJFbGVtZW50RVBOU18xN0ZyYW1lTG9hZGVyQ2xpZW50
RQogX19aTjdXZWJDb3JlNUZyYW1lN3NldFZpZXdFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOUZyYW1l
Vmlld0VFRQorX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pON1dl
YkNvcmU1RnJhbWVEMUV2CiBfX1pON1dlYkNvcmU1SW1hZ2UxMnN1cHBvcnRzVHlwZUVSS04zV1RG
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTVJbWFnZTIwbG9hZFBsYXRmb3JtUmVzb3VyY2VFUEtjCkBA
IC05OTUsNyArOTk2LDYgQEAgX19aTks3V2ViQ29yZTVGcmFtZTMxZm9udEF0dHJpYnV0ZXNGb3JT
ZWxlY3Rpb25TdGFydEV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMzdiYXNlV3JpdGluZ0RpcmVjdGlv
bkZvclNlbGVjdGlvblN0YXJ0RXYKIF9fWk5LN1dlYkNvcmU1RnJhbWU4c2V0dGluZ3NFdgogX19a
Tks3V2ViQ29yZTVGcmFtZTlkb21XaW5kb3dFdgotX19aTks3V2ViQ29yZTVGcmFtZTlub2RlSW1h
Z2VFUE5TXzROb2RlRQogX19aTks3V2ViQ29yZTVSYW5nZTExc3RhcnRPZmZzZXRFUmkKIF9fWk5L
N1dlYkNvcmU1UmFuZ2UxMmVuZENvbnRhaW5lckVSaQogX19aTks3V2ViQ29yZTVSYW5nZTEycGFz
dExhc3ROb2RlRXYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCmluZGV4IDAwOGFjZWNlMWM5YzgzODQxZjBhMzFl
ZTk5OGMwMjhjNjc5NzlmYjcuLmM1MjYxMjNiNzIzN2EyMmY1NWNmN2Q4ZDBhZWIyN2UzZDQxMjc4
YjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtMzc3LDcgKzM3Nyw3IEBAIGlkIDxET01FdmVudFRh
cmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2Uobm9k
ZSk7CisgICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2Uobm9kZSkuZ2V0KCk7CiB9CiAKIC0gKE5T
QXJyYXkgKil0ZXh0UmVjdHMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNGU1MjJjNGMyZGVkZTAxMzFhNDEzNmM1NWFkMDUwMTQ2
YTQ4ZDI5Zi4uMzY4MDNmODEyMzI1NzhlNGZhNGQyMGM1ZmZhMmZmMjQxNDZkZGZlZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAg
LTIyMSw2ICsyMjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdGV4dFdp
bGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVtZW50KiBpbnB1dCk7CiAgICAgICAgIHZvaWQgdGV4
dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopOwogCisgICAgICAgIERyYWdJbWFnZVJlZiBu
b2RlSW1hZ2UoTm9kZSopOwogICAgICAgICBEcmFnSW1hZ2VSZWYgZHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCk7CiAKICAgICAvLyA9PT0gdG8gYmUgbW92ZWQgaW50byBTZWxlY3Rpb25Db250cm9sbGVy
CkBAIC0yODUsNyArMjg2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE5TSW1h
Z2UqIHNlbGVjdGlvbkltYWdlKGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSkgY29uc3Q7CiAg
ICAgICAgIE5TSW1hZ2UqIHNuYXBzaG90RHJhZ0ltYWdlKE5vZGUqLCBOU1JlY3QqIGltYWdlUmVj
dCwgTlNSZWN0KiBlbGVtZW50UmVjdCkgY29uc3Q7Ci0gICAgICAgIE5TSW1hZ2UqIG5vZGVJbWFn
ZShOb2RlKikgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBOU0ltYWdlKiBpbWFnZUZy
b21SZWN0KE5TUmVjdCkgY29uc3Q7CkBAIC0yOTgsMTQgKzI5OCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pCi0KLSAgICBwdWJsaWM6Ci0gICAg
ICAgIC8vIEZJWE1FIC0gV2Ugc2hvdWxkIGhhdmUgYSBzaW5nbGUgdmVyc2lvbiBvZiBub2RlSW1h
Z2UgaW5zdGVhZCBvZiB1c2luZyBwbGF0Zm9ybSB0eXBlcy4KLSAgICAgICAgSEJJVE1BUCBub2Rl
SW1hZ2UoTm9kZSopIGNvbnN0OwotCi0jZW5kaWYKLQogICAgIHByaXZhdGU6CiAgICAgICAgIFBh
Z2UqIG1fcGFnZTsKICAgICAgICAgbXV0YWJsZSBGcmFtZVRyZWUgbV90cmVlTm9kZTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9icmV3L0ZyYW1lQnJldy5jcHAgYi9XZWJDb3JlL3BhZ2UvYnJl
dy9GcmFtZUJyZXcuY3BwCmluZGV4IGE1OTA1NDQxYzg4MWQ5YjUyMjAyZTE2YTJhY2EzYzQ1Yzgz
MTNhZDkuLjc4MjVkYmQ1YTNkMzRlMjk5Mjg2ZTA4YzI5NWIzZjJjNDRiZjRhZjIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9icmV3L0ZyYW1lQnJldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2Jy
ZXcvRnJhbWVCcmV3LmNwcApAQCAtMjksNiArMjksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJ
bWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGFnZS9j
aHJvbWl1bS9GcmFtZUNocm9taXVtLmNwcAppbmRleCA1NDhlMGZhNjM4MjJlMGEzZWJlNWIzN2Vh
MTBjODNkMzM0OTNjNWYxLi40MTQ2YjM5YTdiY2JiNWQ2NTA3ODc4MWQ3NGM3OTE5ZmZlMTg5MzY3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRnJhbWVDaHJvbWl1bS5jcHAKKysr
IGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0ZyYW1lQ2hyb21pdW0uY3BwCkBAIC0yOCwxOSArMjgs
OTEgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorbmFtZXNwYWNlIHsKKworc3RydWN0IFNjb3BlZFN0YXRlIHsKKyAgICBTY29wZWRTdGF0ZShG
cmFtZSogdGhlRnJhbWUsIFJlbmRlck9iamVjdCogdGhlUmVuZGVyZXIpCisgICAgICAgIDogZnJh
bWUodGhlRnJhbWUpCisgICAgICAgICwgcmVuZGVyZXIodGhlUmVuZGVyZXIpCisgICAgICAgICwg
cGFpbnRCZWhhdmlvcihmcmFtZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCkpCisgICAgICAgICwg
YmFja2dyb3VuZENvbG9yKGZyYW1lLT52aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSkKKyAg
ICB7CisgICAgfQorCisgICAgflNjb3BlZFN0YXRlKCkKKyAgICB7CisgICAgICAgIGlmIChyZW5k
ZXJlcikKKyAgICAgICAgICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAg
ICAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOworICAg
ICAgICBmcmFtZS0+dmlldygpLT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xv
cik7CisgICAgICAgIGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7CisgICAgfQorCisg
ICAgRnJhbWUqIGZyYW1lOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXI7CisgICAgUGFpbnRC
ZWhhdmlvciBwYWludEJlaGF2aW9yOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKK307CisK
K30gLy8gbmFtZXNwYWNlCisKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5v
ZGUpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Cisg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBTY29wZWRT
dGF0ZSBzdGF0ZSh0aGlzLCByZW5kZXJlcik7CisKKyAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0
YXRlKHRydWUpOworICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5wYWludEJlaGF2
aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CisgICAgLy8gV2hl
biBnZW5lcmF0aW5nIHRoZSBkcmFnIGltYWdlIGZvciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRv
Y3VtZW50IGJhY2tncm91bmQuCisgICAgbV92aWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGNv
bG9yV2l0aE92ZXJyaWRlQWxwaGEoQ29sb3I6OndoaXRlLCAxLjApKTsKKyAgICBtX2RvYy0+dXBk
YXRlTGF5b3V0KCk7CisgICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUg
c3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUuCisKKyAgICBJbnRSZWN0IHRvcExldmVsUmVj
dDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0
KHRvcExldmVsUmVjdCk7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCkpKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRp
bmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5j
bGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QucmlnaHQoKSwgcGFpbnRpbmdSZWN0LmJv
dHRvbSgpKSk7CisKKyAgICBtX3ZpZXctPnBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGlu
Z1JlY3QpOworCisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKCk7
CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQoKSk7Cit9CisK
IERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsgICAgCi0gICAg
aWYgKHNlbGVjdGlvbigpLT5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiAwOyAgLy8gRklYTUU6
IGltcGxlbWVudCBtZSEKK3sKKyAgICBpZiAoIXNlbGVjdGlvbigpLT5pc1JhbmdlKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgY29uc3QgU2NvcGVkU3RhdGUgc3RhdGUodGhpcywgMCk7Cisg
ICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsK
KyAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9
IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uQm91bmRzKCkpOworCisgICAgT3duUHRyPEltYWdl
QnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpKSk7
CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiAwOworICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKKyAg
ICBidWZmZXItPmNvbnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0LnJp
Z2h0KCksIHBhaW50aW5nUmVjdC5ib3R0b20oKSkpOworCisgICAgbV92aWV3LT5wYWludChidWZm
ZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsKIAotICAgIHJldHVybiAwOworICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZSgpOworICAgIHJldHVybiBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvZWZsL0ZyYW1lRWZsLmNwcCBiL1dlYkNvcmUv
cGFnZS9lZmwvRnJhbWVFZmwuY3BwCmluZGV4IDc4M2RmN2U5NGNlOTZhN2IyMmU1NDZiNDkxZDY1
ODQyNTMwMWQ1ZjcuLmIxYmU5Y2FhOTI2YTgwMjE4NGYwNzQ1M2EwNmI4N2IzMmFkMTFmZjcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9lZmwvRnJhbWVFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9lZmwvRnJhbWVFZmwuY3BwCkBAIC0zMiw2ICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1l
OjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvZ3RrL0ZyYW1lR3RrLmNwcCBiL1dlYkNvcmUvcGFnZS9ndGsv
RnJhbWVHdGsuY3BwCmluZGV4IDNjYWI1YTA2NmM5ODk5Y2M2ZDk2MzFkZWNmYTA0ZjM0ZDUxMzBl
NWUuLjE0YTBmOGJiODBiOWIzMjIwYTkxMDhkZGFjZWUzMTgxNWFmMmVlODEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9ndGsvRnJh
bWVHdGsuY3BwCkBAIC0yOCw2ICsyOCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0Ry
YWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9y
U2VsZWN0aW9uKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL2hhaWt1L0ZyYW1lSGFpa3UuY3BwIGIvV2ViQ29yZS9wYWdlL2hhaWt1L0ZyYW1lSGFp
a3UuY3BwCmluZGV4IDUwMTY4ZGRkMzBhNWQ0MTRmZDA1OWEwZTc5ODBmMzdhZTdhZGFlMzcuLjVm
ZjY5NTA5YjE0Njc1NzY0YTkwZjcyNzU2YTYwODhjMWU3YjAxZTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9oYWlrdS9GcmFtZUhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvaGFpa3UvRnJh
bWVIYWlrdS5jcHAKQEAgLTMzLDYgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
RHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VG
b3JTZWxlY3Rpb24oKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC00MCw0ICs0NiwzIEBA
IERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFj
Lm1tIGIvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQppbmRleCBiYjExYWM5MGFlMjhmNjI4
MjVmMmJlY2UwZWU1NDgzNzZhMWI5MDZlLi4wMzY1Nzg0OWY1NzIxZTNkZWQ0YmQ4ZDM5NjVhODMw
N2RiOTg2OGQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCisrKyBi
L1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KQEAgLTM4MCw3ICszODAsNyBAQCBOU0ltYWdl
KiBGcmFtZTo6c25hcHNob3REcmFnSW1hZ2UoTm9kZSogbm9kZSwgTlNSZWN0KiBpbWFnZVJlY3Qs
IE5TUmVjdCogZWxlbWVudAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU5TSW1hZ2UqIEZyYW1l
Ojpub2RlSW1hZ2UoTm9kZSogbm9kZSkgY29uc3QKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUlt
YWdlKE5vZGUqIG5vZGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKQEAgLTUzNSw3ICs1MzUsNyBAQCBOU011dGFi
bGVEaWN0aW9uYXJ5KiBGcmFtZTo6ZGFzaGJvYXJkUmVnaW9uc0RpY3Rpb25hcnkoKQogfQogI2Vu
ZGlmCiAKLURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkgCitEcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKCFzZWxl
Y3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL3F0L0ZyYW1lUXQuY3BwIGIvV2ViQ29yZS9wYWdlL3F0L0ZyYW1lUXQuY3BwCmlu
ZGV4IDQ5M2U2MGQwOTA2Mjg2ZjlkZDZjNGIxNDgwYjJjYmEwNDExZmM4ZmMuLmVkNzVlYjgyMGZl
YzUxYzQ4OWZmYmVkMDY1OTdhNzA3ZTNiNTNkZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9x
dC9GcmFtZVF0LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvcXQvRnJhbWVRdC5jcHAKQEAgLTI0LDEw
ICsyNCwxOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAKKyNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURyYWdJ
bWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkgCitEcmFnSW1hZ2VSZWYgRnJh
bWU6Om5vZGVJbWFnZShOb2RlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biAwOworfQorCitEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCiB7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcCBiL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVD
R1dpbi5jcHAKaW5kZXggY2NlNTAwNDg3YmE2ZmUxY2VlOTYyMDc2OTE0NGVlZDUzODA1YjM3Zi4u
YjYxZGVlZmI0MDZhNGMzY2ZkNTRjYjlmMzQ0ODBiODljNTA2OGJhZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1l
Q0dXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEhCSVRNQVAgaW1hZ2VGcm9tU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAK
LUhCSVRNQVAgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKSBjb25zdAorRHJhZ0ltYWdlUmVm
IEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcCBiL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDYWlyb1dpbi5jcHAKaW5kZXggM2UxZmUyODc0M2MwM2NiNzhlY2IzOGZmMmMwM2MwZDZiYjZi
ZjAxNS4uZjg0M2JhMWU0NmU4MzFiZjA1YzhmZWRkY2ExNDI3MzdhMzhhNmNkNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEhCSVRNQVAgaW1hZ2VGcm9t
U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKICAgICByZXR1cm4g
MDsKIH0KIAotSEJJVE1BUCBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKSBjb25zdAorRHJhZ0ltYWdl
UmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNw
cCBiL1dlYkNvcmUvcGFnZS93aW5jZS9GcmFtZVdpbmNlLmNwcAppbmRleCBjODA2Yjk4MzdlNDBj
ZGVmOWUzZjIzMDVlMjY0ZjJhNjQyYjZjZmY1Li43Y2ZiYWUwYjAzMGNlYjMxNDEyMWRmNjM3YzUz
ODM4NDNlMzBkMTRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd2luY2UvRnJhbWVXaW5jZS5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL3dpbmNlL0ZyYW1lV2luY2UuY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgpAQCAtMTQ3LDYgKzE0OCwxMiBAQCBIQklUTUFQIGltYWdlRnJv
bVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCiAgICAgcmV0dXJu
IGhCbXA7CiB9CiAKK0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJbWFnZVJlZiBGcmFt
ZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKIHsKICAgICBpZiAoc2VsZWN0aW9uKCktPmlzUmFu
Z2UoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS93eC9GcmFtZVd4LmNwcCBiL1dlYkNvcmUv
cGFnZS93eC9GcmFtZVd4LmNwcAppbmRleCBiMjIwNjk0NzQwM2ZkZTRmYjEzNGFjNjljY2Y4YzBh
OTUwZjdlMTA2Li42YzE2YWRjYTc1MjgwNTdjYTY4MTZhN2FhNWRhNTE2MzFlZGI3MTZhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd3gvRnJhbWVXeC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3d4
L0ZyYW1lV3guY3BwCkBAIC0yOSw2ICsyOSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K0RyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdl
Rm9yU2VsZWN0aW9uKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCAwNjI0NGEyZDA0MzRi
YzU4NGRjNDJlNDRkNzUxZGY3OTk1OWI3NmRiLi4yMzUwOGE2OTc4Nzg2ZWNkMzkzZjI0OWEwMGQ4
MjEzY2QzNjE5MDMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2Fy
ZENocm9taXVtLmNwcApAQCAtNDAwLDcgKzQwMCwxMiBAQCB2b2lkIENsaXBib2FyZENocm9taXVt
OjpzZXREcmFnSW1hZ2VFbGVtZW50KE5vZGUqIG5vZGUsIGNvbnN0IEludFBvaW50JiBsb2MpCiBE
cmFnSW1hZ2VSZWYgQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYg
bG9jKSBjb25zdAogewogICAgIERyYWdJbWFnZVJlZiByZXN1bHQgPSAwOwotICAgIGlmIChtX2Ry
YWdJbWFnZSkgeworICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKKyAgICAgICAgaWYgKG1f
ZnJhbWUpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fZnJhbWUtPm5vZGVJbWFnZShtX2RyYWdJ
bWFnZUVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgbG9jID0gbV9kcmFnTG9jOworICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICByZXN1bHQgPSBjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UobV9kcmFnSW1hZ2UtPmltYWdlKCkpOwogICAgICAgICBsb2Mg
PSBtX2RyYWdMb2M7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMjdl
YWJjZGYwZDU1ZmRhODU4MzIzMjEyYjc1ZWU0ZDFhMjY0NDlhYy4uMTFiNDM3NGZkMDZkZTBhOWVl
NGI2OTg2NDJhYWM4NTAwMGViMjhiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBA
IC0xNTkxLDcgKzE1OTEsMTAgQEAgQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAogQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKSBjb25zdAogewogICAgIENvbG9yIGNvbG9yOwotICAgIGlmIChzdHlsZSgpLT51c2Vy
U2VsZWN0KCkgPT0gU0VMRUNUX05PTkUpCisgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgdW5zZWxl
Y3RhYmxlLCBvciB3ZSBhcmUgb25seSBwYWludGluZyB0aGUgc2VsZWN0aW9uLAorICAgIC8vIGRv
bid0IG92ZXJyaWRlIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHdpdGggdGhlIHNlbGVjdGlvbiBmb3Jl
Z3JvdW5kIGNvbG9yLgorICAgIGlmIChzdHlsZSgpLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05P
TkUKKyAgICAgICAgfHwgKGZyYW1lKCktPnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpICYgUGFpbnRC
ZWhhdmlvclNlbGVjdGlvbk9ubHkpKQogICAgICAgICByZXR1cm4gY29sb3I7CiAKICAgICBpZiAo
UmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZSA9IGdldFVuY2FjaGVkUHNldWRvU3R5bGUo
U0VMRUNUSU9OKSkgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCA2MDNkMDBmOTVhZDlhYjQ4ZmMzNTFhOWUwOGVjODkzNzc5NGZh
MmQwLi43YjM2MzlmNDlkNjgzMmE2MDYxZTJlZGUzN2M0OTJlMTU0ODA1ZmUyIDEwMDY0NAotLS0g
YS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEwLTA4LTIwICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJv
bWl1bV0gR2VuZXJhdGUgZHJhZyBpbWFnZXMgZm9yIEhUTUwgZWxlbWVudHMgYW5kIHNlbGVjdGlv
bnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ0
OQorCisgICAgICAgIEZpeCB1cCBjYWxscyB0byBGcmFtZTo6bm9kZUltYWdlLCB3aGljaCBoYXMg
YSBuZXcgc2lnbmF0dXJlLgorCisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IGhhbHRdKToK
KwogMjAxMC0wOC0xOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQ0Mjg1PiBGaXggY29tcGlsYXRpb24gd2l0aCBORVRT
Q0FQRV9QTFVHSU5fQVBJIGRpc2FibGVkCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNl
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDZhZTczMzRhNDY5ZGM3ZTQ0YmM2YTBjZWY4OGYy
ZTYwNmIzYzA1NTYuLjQ5NjY3MTYwYzRmZDg2MTUwYjYzZWQxYzMwYTIxYmExN2MwZWEyNjggMTAw
NjQ0Ci0tLSBhL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CisrKyBiL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBA
IC01MTAsOSArNTEwLDkgQEAgU3RyaW5nIFdlYkhhbHRhYmxlUGx1Z2luOjpwbHVnaW5OYW1lKCkg
Y29uc3QKICAgICBBU1NFUlQoX2lzU3RhcnRlZCk7CiAgICAgRWxlbWVudCAqZWxlbWVudCA9IFtz
ZWxmIGVsZW1lbnRdOwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IENHSW1hZ2VS
ZXRhaW4oW2NvcmUoW3NlbGYgd2ViRnJhbWVdKS0+bm9kZUltYWdlKGVsZW1lbnQpIENHSW1hZ2VG
b3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pOworICAgIENHSW1hZ2VS
ZWYgY2dJbWFnZSA9IENHSW1hZ2VSZXRhaW4oW2NvcmUoW3NlbGYgd2ViRnJhbWVdKS0+bm9kZUlt
YWdlKGVsZW1lbnQpLmdldCgpIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmls
IGhpbnRzOm5pbF0pOwogI2Vsc2UKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZVJlZj4gaW1h
Z2VSZWYoQWRvcHRDRiwgQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpW2Nv
cmUoW3NlbGYgd2ViRnJhbWVdKS0+bm9kZUltYWdlKGVsZW1lbnQpIFRJRkZSZXByZXNlbnRhdGlv
bl0sIDApKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZVJlZj4gaW1hZ2VSZWYoQWRvcHRD
RiwgQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpW2NvcmUoW3NlbGYgd2Vi
RnJhbWVdKS0+bm9kZUltYWdlKGVsZW1lbnQpLmdldCgpIFRJRkZSZXByZXNlbnRhdGlvbl0sIDAp
KTsKICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdElu
ZGV4KGltYWdlUmVmLmdldCgpLCAwLCAwKTsKICNlbmRpZgogICAgIEFTU0VSVChjZ0ltYWdlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>