<?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>6831</bug_id>
          
          <creation_ts>2006-01-26 01:23:46 -0800</creation_ts>
          <short_desc>contentEditable outline darkens as caret moves</short_desc>
          <delta_ts>2006-02-20 23:26:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>1</everconfirmed>
          <reporter name="Graham Dennis">Graham.Dennis</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>darin</cc>
    
    <cc>dwood</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>29998</commentid>
    <comment_count>0</comment_count>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-01-26 01:23:46 -0800</bug_when>
    <thetext>Summary: As the cursor is moved through a contentEditable div (tested using the arrow keys), some of the outline is redrawn on top of the already-existing outline as the text entry cursor moves. The area which is redrawn appears to be one pixel high, and is the length that the cursor moves.

I will attach a (manual) testcase and images demonstrating what I mean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29999</commentid>
    <comment_count>1</comment_count>
      <attachid>5978</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-01-26 01:24:39 -0800</bug_when>
    <thetext>Created attachment 5978
Manual testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30000</commentid>
    <comment_count>2</comment_count>
      <attachid>5979</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-01-26 01:26:45 -0800</bug_when>
    <thetext>Created attachment 5979
Before the cursor moves</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30001</commentid>
    <comment_count>3</comment_count>
      <attachid>5980</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-01-26 01:28:16 -0800</bug_when>
    <thetext>Created attachment 5980
Redrawn outline

This image shows what happens after the cursor is moved (with the arrow keys) back and forth throughout the entire div numerous times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31940</commentid>
    <comment_count>4</comment_count>
      <attachid>6366</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-02-09 05:19:13 -0800</bug_when>
    <thetext>Created attachment 6366
workaround patch

The problem appears to be caused by a limitation in WebClipView restricting the focus ring clip to be a single rectangle (and not a graphical union of rectangles).
With focus ring redraws, what normally happens seems to be that the complete focus ring is drawn by the WebHTMLView, but the WebClipView restricts this to the repaint rectangle. However, in cases where the repaint region is a number of non-nested rectangles (e.g. when a caret needs to be cleared at one location and redrawn at another location), the WebClipView restricts focus ring redrawing to the minimum rectangle enclosing all rectangles that are to be redrawn. This will include some space where we do not want the focus ring redrawn as it hasn&apos;t been cleared there.
For the specific case of the caret, the repaint rectangle has been extended 1px in all directions around the caret (apparently to avoid ensure no artifacts are left behind), which now extends 1px into the focus ring (both above and below). When the caret needs to be cleared and redrawn elsewhere at the same time (when the caret is moved while it is still visible) this causes the clip rectangle used by WebClipView to be the minimum enclosing rectangle which now includes 1px of the focus ring above and below the text, thus causing it to be redrawn.

The perfect fix for this would be to make WebClipView support multiple clip rectangles (getting these clip rectangles from the repaint rectangles of the WebHTMLView), but that would require the - (NSRect) _focusRingVisibleRect method to support multiple rectangles, but this is called by WKSetFocusRingStyle which is a private function in libWebKitSystemInterface.a

As a workaround to the main source of the problem, I have attached a patch which removes the 1px of slop around the caret. I haven&apos;t seen any artefacts caused by this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32008</commentid>
    <comment_count>5</comment_count>
      <attachid>6366</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-02-09 22:29:39 -0800</bug_when>
    <thetext>Comment on attachment 6366
workaround patch

Graham and I talked about this on IRC.  I&apos;m not certain that removing the 1 px slop from the caret repaint rect is safe, and I won&apos;t know until I talk with the engineer here at Apple that added it.  Removing the slop doesn&apos;t completely fix the problem anyway (it&apos;s still reproducible with a non-rectangular contenteditable element, like the one here: http://bugzilla.opendarwin.org/attachment.cgi?id=5976).  r-&apos;ing this for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32026</commentid>
    <comment_count>6</comment_count>
      <attachid>6386</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-02-10 05:54:48 -0800</bug_when>
    <thetext>Created attachment 6386
better patch

The correct way to fix this bug is to fix WebClipView and WKSetFocusRingStyle. WKSetFocusRingStyle is a private function in libWebKitSystemInterface.a, but I think I&apos;ve managed to figure out how it works. The problem appears to be that when the focus ring is drawn, WKSetFocusRingStyle sets the clip for the focus ring to be the minimum enclosing rectangle for all the dirty rects. So the fix is to set the focus ring clip for each of the dirty rects and draw the focus ring for each dirty rect. To do this, I had to modify WKSetFocusRingStyle to actually draw the focus ring, a function I have now called WKDrawFocusRing. At the moment, the function is sitting in WebClipView.m, but as it calls private AppKit and CoreGraphics code, it should probably be put into the libWebKitSystemInterface.a file.

Some of the code in WKDrawFocusRing will need to be fixed as I didn&apos;t have some of the function definitions or structure definitions needed. The patch does work in its present state. I will attach my functionally equivalent source for WKSetFocusRingStyle for comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32027</commentid>
    <comment_count>7</comment_count>
      <attachid>6387</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-02-10 05:57:09 -0800</bug_when>
    <thetext>Created attachment 6387
WKSetFocusRingStyle

functionally-equivalent source for WKSetFocusRingStyle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32438</commentid>
    <comment_count>8</comment_count>
      <attachid>6386</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-02-13 21:58:24 -0800</bug_when>
    <thetext>Comment on attachment 6386
better patch

hyatt should review this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33133</commentid>
    <comment_count>9</comment_count>
      <attachid>6386</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-17 09:23:25 -0800</bug_when>
    <thetext>Comment on attachment 6386
better patch

Hyatt&apos;s not an expert on the clip view handling of focus rings. This is code I wrote and understand, so I&apos;ll review.

There&apos;s a conceptual mistake here. The reason WebClipView exists is to clip focus rings that are drawn by AppKit. As the comment says, AppKit looks for the enclosing clip view and calls _focusRingVisibleRect on it. That&apos;s what WebClipView is for.

For our own focus rings, we can handle clip however we&apos;d like. There&apos;s no special reason we need to use an NSClipView subclass. That WebClipView class is just to control the code inside AppKit.

So, for AppKit-drawn focus rings, we can&apos;t easily fix this issue since it&apos;s API takes a single rect.

For our own focus rings, we can get this clip information directly from NSView -- we don&apos;t have to store the rectangles in the WebClipView.

You should rework the patch with this in mind.

Also, I don&apos;t understand why we have to do fills in a loop. Can&apos;t we just set the clip of the CG context to the list of rects instead? It seems to me that the best way to fix this is to change the code in -[WebHTMLView drawRect:]. Specifically, this line:

    NSRectClip(rect);

That should be changed to instead clip to the list of rects. I think we can use the function CGContextClipToRects. Then I don&apos;t think we&apos;ll need to make any changes to the focus ring drawing at all!

More detailed comments on the current code (which may have to go away anyway):

disableFocusRingClip sets _haveFocusRingClip to YES, which seems clearly wrong. I assume that means this patch hasn&apos;t been tested?

I don&apos;t like the name of _tempFocusRingClip. I&apos;d want it to be named something more like _returnedFocusRingVisibleRects that makes it more clear how it relates to the _getFocusRingVisibleRects method that uses it.

_tempFocusRingClipRectCount is never used and probably can be removed.

We need to factor the WKDrawFocusRing function differently. Currently it&apos;s a function that both knows the SPI for drawing focus (so it needs to be in WebKitSystemInterface) and the WebClipView class&apos;s API for getting at rectangles (so it can&apos;t be in WebKitSystemInterface). A better way to to this would be to pass the clip rects in to WKDrawFocusRing as parameters.

This patch has tabs in it, it should not.

There&apos;s no change log, we need one.

+	if (count == 0 || focusRingClip == NULL) return;

The return goes on a separate line.

+    	_tempFocusRingClip = (NSRect *)malloc(_focusRingClipRectCount*sizeof(NSRect));

We put spaces around operators like *.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33218</commentid>
    <comment_count>10</comment_count>
      <attachid>6583</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-02-17 20:15:59 -0800</bug_when>
    <thetext>Created attachment 6583
patch 3

A new patch addressing Darin&apos;s comments.

Darin: I didn&apos;t understand exactly why WebClipView was there, but thanks for explaining it. But _focusRingVisibleRect is not just called by AppKit, it&apos;s also called by WKSetFocusRingStyle (in WebKitSystemInterface). When drawing the focus ring, the clip rects aren&apos;t respected as the focus ring typically goes outside the element that is being drawn, and so it doesn&apos;t obey it&apos;s clip rects. As a result, the nice simple solution of NSRectClipList doesn&apos;t work (I had tried this previously). I also tried your suggestion of CGContextClipToRects, but that didn&apos;t work either. I&apos;ll attach a patch that adds in the code to call this, just so that you can check that I didn&apos;t make a mistake when I tried it, and that it does in fact not work. The way to clip the focus ring when it is being drawn is through the style that is set in WKSetFocusRingStyle (or alternatively in WKDrawFocusRing).

So, in this version of the patch, I have removed all reference to the clip view from WKDrawFocusRing so that it can in fact go into WebKitSystemInterface. The rects being drawn are found directly from the focussed NSView. The reason we need to iterate over [focusRingPath fill] is that the rectangles that we want to draw in will not necessarily be contiguous.

Also, in the line &apos;focusRingDescriptor.radius = ...&apos; in WKDrawFocusRing, I think the (float)2.0 may in fact be a global variable, but I can&apos;t know its name without the actual source to WKSetFocusRingStyle. Likewise, all of the structure member names will be wrong, and will need to be corrected.

I&apos;ll also attach an automatic testcase (it can only be tested by looking at the pixels).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33219</commentid>
    <comment_count>11</comment_count>
      <attachid>6584</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-02-17 20:17:58 -0800</bug_when>
    <thetext>Created attachment 6584
automatic testcase

In this testcase (it depends on editing.js), the cursor is automatically moved by character from the start of the contentEditable div to the end, and back again. In current ToT, this leaves artefacts along the top and bottom of the focus ring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33220</commentid>
    <comment_count>12</comment_count>
      <attachid>6585</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-02-17 20:19:35 -0800</bug_when>
    <thetext>Created attachment 6585
patch that modifies the clip (doesn&apos;t work)

This is the patch that sets the clip to be just the rectangles being drawn. It doesn&apos;t work (I believe) because of what I said above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33221</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-17 20:42:20 -0800</bug_when>
    <thetext>OK. Too bad the focus ring drawing doesn&apos;t respect the clip. I still think the NSRectClipList change is a nice refinement to clip more for everything but focus rings, but that&apos;s no longer relevant for this bug.

I&apos;ll add a WKDrawFocusRing function to WebKitSystemInterface. I&apos;m still considering what the parameters should be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33222</commentid>
    <comment_count>14</comment_count>
      <attachid>6583</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-17 22:49:05 -0800</bug_when>
    <thetext>Comment on attachment 6583
patch 3

I&apos;ll mark this review- even though I&apos;m going to land something very similar to this. No need to make a new patch for the time being.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33311</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-18 16:48:40 -0800</bug_when>
    <thetext>I&apos;ve got a WKDrawFocusRing function for WebKitSystemInterface queued for review internally -- I&apos;ll try to get it in soon so we can do the open source part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33501</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-20 09:57:40 -0800</bug_when>
    <thetext>I screwed something up. When I tried to do this with the WKDrawFocusRing function I checked in, it didn&apos;t work well at all. I&apos;ll look into it again soon, but feel free to experiment too. Sorry about the fact that the SPI-using part of this is not open source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33534</commentid>
    <comment_count>17</comment_count>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-02-20 15:54:00 -0800</bug_when>
    <thetext>Could you post the open-source part of the patch that you used to call you WKDrawFocusRing? It would be even better if I could have a look the source for your WKDrawFocusRing too, but I doubt that&apos;s possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33537</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-20 16:29:16 -0800</bug_when>
    <thetext>Sure, I can attach the non-working patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33538</commentid>
    <comment_count>19</comment_count>
      <attachid>6631</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-20 16:30:35 -0800</bug_when>
    <thetext>Created attachment 6631
a cut at a patch, not working yet, for Graham to look at</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33546</commentid>
    <comment_count>20</comment_count>
      <attachid>6632</attachid>
    <who name="Graham Dennis">Graham.Dennis</who>
    <bug_when>2006-02-20 17:29:20 -0800</bug_when>
    <thetext>Created attachment 6632
fixed patch

Darin, in the drawFocusRingWithPath: function in WebGraphicsBridge, you&apos;re missing a [view convertRect: toView:nil] line to convert the rect to the window coordinates. I fixed that in your patch, and it works fine here. I&apos;ve attached a patch that includes this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33562</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-20 22:36:24 -0800</bug_when>
    <thetext>Excellent. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5978</attachid>
            <date>2006-01-26 01:24:39 -0800</date>
            <delta_ts>2006-01-26 01:24:39 -0800</delta_ts>
            <desc>Manual testcase</desc>
            <filename>OutlineTest.html</filename>
            <type>text/html</type>
            <size>117</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8L2hlYWQ+Cgk8Ym9keT4KCQk8ZGl2IGNvbnRlbnRFZGl0YWJsZT0idHJ1
ZSI+CgkJCUhlcmUgaXMgc29tZSBlZGl0YWJsZSB0ZXh0CgkJPC9kaXY+Cgk8L2JvZHk+CjwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5979</attachid>
            <date>2006-01-26 01:26:45 -0800</date>
            <delta_ts>2006-01-26 01:26:45 -0800</delta_ts>
            <desc>Before the cursor moves</desc>
            <filename>BeforeCursorMoves.png</filename>
            <type>image/png</type>
            <size>16358</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5980</attachid>
            <date>2006-01-26 01:28:16 -0800</date>
            <delta_ts>2006-01-26 01:28:16 -0800</delta_ts>
            <desc>Redrawn outline</desc>
            <filename>RedrawnOutline.png</filename>
            <type>image/png</type>
            <size>16383</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">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
wGf5f19L9iceanFMAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6366</attachid>
            <date>2006-02-09 05:19:13 -0800</date>
            <delta_ts>2006-02-10 05:54:48 -0800</delta_ts>
            <desc>workaround patch</desc>
            <filename>RedrawnFocusRingWorkaround.diff</filename>
            <type>text/plain</type>
            <size>576</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDEyNzExKQorKysgV2ViQ29yZS9raHRtbC9lZGl0aW5nL1NlbGVjdGlvbkNvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzksNyArNzc5LDcgQEAgSW50UmVjdCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpjYXJldFJlcGFpbgogICAgIEludFJlY3QgciA9IGNhcmV0UmVjdCgp
OwogICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAgICBy
ZXR1cm4gSW50UmVjdChyLngoKSAtIDEsIHIueSgpIC0gMSwgci53aWR0aCgpICsgMiwgci5oZWln
aHQoKSArIDIpOworICAgIHJldHVybiBJbnRSZWN0KHIueCgpLCByLnkoKSwgci53aWR0aCgpLCBy
LmhlaWdodCgpKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpuZWVkc0NhcmV0UmVw
YWludCgp
</data>
<flag name="review"
          id="1566"
          type_id="1"
          status="-"
          setter="justin.garcia"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6386</attachid>
            <date>2006-02-10 05:54:48 -0800</date>
            <delta_ts>2006-02-17 20:15:59 -0800</delta_ts>
            <desc>better patch</desc>
            <filename>RedrawnFocusRing.diff</filename>
            <type>text/plain</type>
            <size>12220</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdExpYnJhcmllcy9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDEy
NzExKQorKysgV2ViS2l0TGlicmFyaWVzL1dlYktpdFN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIENGUmVhZFN0cmVhbVJlZiBXS0NyZWF0ZUN1c3RvbUNG
UmVhZFN0cmUKICAgICB2b2lkICgqZm9ybVVuc2NoZWR1bGUpKENGUmVhZFN0cmVhbVJlZiwgQ0ZS
dW5Mb29wUmVmLCBDRlN0cmluZ1JlZiwgdm9pZCAqKSwKICAgICB2b2lkICpjb250ZXh0KTsKIAot
dm9pZCBXS1NldEZvY3VzUmluZ1N0eWxlKE5TRm9jdXNSaW5nUGxhY2VtZW50IHBsYWNlbWVudCwg
aW50IHJhZGl1cywgTlNDb2xvciAqY29sb3IpOwordm9pZCBXS0RyYXdGb2N1c1JpbmcoTlNCZXpp
ZXJQYXRoICpmb2N1c1JpbmdQYXRoLCBOU0ZvY3VzUmluZ1BsYWNlbWVudCBwbGFjZW1lbnQsIGlu
dCByYWRpdXMsIE5TQ29sb3IgKmNvbG9yKTsKIHZvaWQgV0tTZXREcmFnSW1hZ2UoTlNJbWFnZSAq
aW1hZ2UsIE5TUG9pbnQgb2Zmc2V0KTsKIAogdm9pZCBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0
aW9ucyh2b2lkKTsKSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRn
ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRn
ZS5tCShyZXZpc2lvbiAxMjcxMSkKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGlj
c0JyaWRnZS5tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBACiAgICAgcmV0dXJuIChX
ZWJHcmFwaGljc0JyaWRnZSAqKVtzdXBlciBzaGFyZWRCcmlkZ2VdOwogfQogCi0tICh2b2lkKXNl
dEZvY3VzUmluZ1N0eWxlOihOU0ZvY3VzUmluZ1BsYWNlbWVudClwbGFjZW1lbnQgcmFkaXVzOihp
bnQpcmFkaXVzIGNvbG9yOihOU0NvbG9yICopY29sb3IKKy0gKHZvaWQpZHJhd0ZvY3VzUmluZzoo
TlNCZXppZXJQYXRoICopZm9jdXNSaW5nUGF0aCBzdHlsZTooTlNGb2N1c1JpbmdQbGFjZW1lbnQp
cGxhY2VtZW50IHJhZGl1czooaW50KXJhZGl1cyBjb2xvcjooTlNDb2xvciAqKWNvbG9yOwogewot
ICAgIFdLU2V0Rm9jdXNSaW5nU3R5bGUocGxhY2VtZW50LCByYWRpdXMsIGNvbG9yKTsKKyAgICBX
S0RyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUGF0aCwgcGxhY2VtZW50LCByYWRpdXMsIGNvbG9yKTsK
IH0KIAogLy8gRGFzaGJvYXJkIHdhbnRzIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcgZHJh
Z2dpbmcsIGJ1dCBDb2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlzLgpJbmRleDogV2ViS2l0L1dlYlZp
ZXcvV2ViQ2xpcFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJDbGlwVmll
dy5oCShyZXZpc2lvbiAxMjcxMSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYkNsaXBWaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwxNyBAQAogCiBAaW50ZXJmYWNlIFdlYkNsaXBWaWV3
IDogTlNDbGlwVmlldwogewotICAgIEJPT0wgX2hhdmVBZGRpdGlvbmFsQ2xpcDsKLSAgICBOU1Jl
Y3QgX2FkZGl0aW9uYWxDbGlwOworICAgIEJPT0wgX2hhdmVGb2N1c1JpbmdDbGlwOworICAgIE5T
UmVjdCAqX2ZvY3VzUmluZ0NsaXA7CisgICAgaW50IF9mb2N1c1JpbmdDbGlwUmVjdENvdW50Owor
ICAgIAorICAgIE5TUmVjdCAqX3RlbXBGb2N1c1JpbmdDbGlwOworICAgIGludCBfdGVtcEZvY3Vz
UmluZ0NsaXBSZWN0Q291bnQ7CiB9CiAKLS0gKHZvaWQpc2V0QWRkaXRpb25hbENsaXA6KE5TUmVj
dClhZGRpdGlvbmFsQ2xpcDsKLS0gKHZvaWQpcmVzZXRBZGRpdGlvbmFsQ2xpcDsKLS0gKEJPT0wp
aGFzQWRkaXRpb25hbENsaXA7Ci0tIChOU1JlY3QpYWRkaXRpb25hbENsaXA7Ci0KKy0gKHZvaWQp
c2V0Rm9jdXNSaW5nQ2xpcFJlY3RzOihjb25zdCBOU1JlY3QgKilmb2N1c1JpbmdDbGlwIGNvdW50
OihpbnQpY291bnQ7CistICh2b2lkKXJlc2V0Rm9jdXNSaW5nQ2xpcDsKKy0gKEJPT0wpaGFzRm9j
dXNSaW5nQ2xpcDsKKy0gKHZvaWQpZGlzYWJsZUZvY3VzUmluZ0NsaXA7CistICh2b2lkKWVuYWJs
ZUZvY3VzUmluZ0NsaXA7CiBAZW5kCkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJDbGlwVmlldy5t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkNsaXBWaWV3Lm0JKHJldmlzaW9uIDEy
NzExKQorKysgV2ViS2l0L1dlYlZpZXcvV2ViQ2xpcFZpZXcubQkod29ya2luZyBjb3B5KQpAQCAt
MzcsOSArMzcsNiBAQAogLy8gVGhlcmUncyBubyBlYXN5IHdheSB0byBwcmV2ZW50IHRoZSBmb2N1
cyByaW5nIGZyb20gZHJhd2luZyBvdXRzaWRlIHRoZSBwYXNzZWQtaW4gY2xpcCByZWN0YW5nbGUK
IC8vIGJlY2F1c2UgaXQgZXhwZWN0cyB0byBoYXZlIHRvIGRyYXcgb3V0c2lkZSB0aGUgYm91bmRz
IG9mIHRoZSB2aWV3IGl0J3MgYmVpbmcgZHJhd24gZm9yLgogLy8gQnV0IGl0IGxvb2tzIGZvciB0
aGUgZW5jbG9zaW5nIGNsaXAgdmlldywgd2hpY2ggZ2l2ZXMgdXMgYSBob29rIHdlIGNhbiB1c2Ug
dG8gY29udHJvbCBpdC4KLS8vIFRoZSAiYWRkaXRpb25hbCBjbGlwIiBpcyBhIGNsaXAgZm9yIGZv
Y3VzIHJpbmcgcmVkcmF3aW5nLgotCi0vLyBGSVhNRTogQ2hhbmdlIHRlcm1pbm9sb2d5IGZyb20g
ImFkZGl0aW9uYWwgY2xpcCIgdG8gImZvY3VzIHJpbmcgY2xpcCIuCiAKIEBpbXBsZW1lbnRhdGlv
biBXZWJDbGlwVmlldwogCkBAIC02MywzNyArNjAsNzIgQEAKICAgICByZXR1cm4gc2VsZjsKIH0K
IAotLSAodm9pZClyZXNldEFkZGl0aW9uYWxDbGlwCistICh2b2lkKXJlc2V0Rm9jdXNSaW5nQ2xp
cAogewotICAgIEFTU0VSVChfaGF2ZUFkZGl0aW9uYWxDbGlwKTsKLSAgICBfaGF2ZUFkZGl0aW9u
YWxDbGlwID0gTk87CisgICAgX2hhdmVGb2N1c1JpbmdDbGlwID0gTk87CisgICAgaWYgKF9mb2N1
c1JpbmdDbGlwKSB7CisgICAgCWZyZWUoX2ZvY3VzUmluZ0NsaXApOworICAgIAlfZm9jdXNSaW5n
Q2xpcCA9IE5VTEw7CisgICAgCV9mb2N1c1JpbmdDbGlwUmVjdENvdW50ID0gMDsKKyAgICAJZnJl
ZShfdGVtcEZvY3VzUmluZ0NsaXApOworICAgIAlfdGVtcEZvY3VzUmluZ0NsaXAgPSBOVUxMOwor
ICAgIAlfdGVtcEZvY3VzUmluZ0NsaXBSZWN0Q291bnQgPSAwOworICAgIH0KIH0KIAotLSAodm9p
ZClzZXRBZGRpdGlvbmFsQ2xpcDooTlNSZWN0KWFkZGl0aW9uYWxDbGlwCistICh2b2lkKXNldEZv
Y3VzUmluZ0NsaXBSZWN0czooY29uc3QgTlNSZWN0ICopZm9jdXNSaW5nQ2xpcCBjb3VudDooaW50
KSBjb3VudAogewotICAgIEFTU0VSVCghX2hhdmVBZGRpdGlvbmFsQ2xpcCk7Ci0gICAgX2hhdmVB
ZGRpdGlvbmFsQ2xpcCA9IFlFUzsKLSAgICBfYWRkaXRpb25hbENsaXAgPSBhZGRpdGlvbmFsQ2xp
cDsKKwlbc2VsZiByZXNldEZvY3VzUmluZ0NsaXBdOworCWlmIChjb3VudCA9PSAwIHx8IGZvY3Vz
UmluZ0NsaXAgPT0gTlVMTCkgcmV0dXJuOworCV9oYXZlRm9jdXNSaW5nQ2xpcCA9IFlFUzsKKwlf
Zm9jdXNSaW5nQ2xpcCA9IChOU1JlY3QgKiltYWxsb2MoY291bnQqc2l6ZW9mKE5TUmVjdCkpOwor
CV9mb2N1c1JpbmdDbGlwUmVjdENvdW50ID0gY291bnQ7CisJbWVtY3B5KF9mb2N1c1JpbmdDbGlw
LCBmb2N1c1JpbmdDbGlwLCBjb3VudCpzaXplb2YoTlNSZWN0KSk7CiB9CiAKLS0gKEJPT0wpaGFz
QWRkaXRpb25hbENsaXAKKy0gKEJPT0wpaGFzRm9jdXNSaW5nQ2xpcAogewotICAgIHJldHVybiBf
aGF2ZUFkZGl0aW9uYWxDbGlwOworICAgIHJldHVybiBfaGF2ZUZvY3VzUmluZ0NsaXA7CiB9CiAK
LS0gKE5TUmVjdClhZGRpdGlvbmFsQ2xpcAorLSAodm9pZClkaXNhYmxlRm9jdXNSaW5nQ2xpcAog
ewotICAgIEFTU0VSVChfaGF2ZUFkZGl0aW9uYWxDbGlwKTsKLSAgICByZXR1cm4gX2FkZGl0aW9u
YWxDbGlwOworCV9oYXZlRm9jdXNSaW5nQ2xpcCA9IFlFUzsKIH0KIAotLSAoTlNSZWN0KV9mb2N1
c1JpbmdWaXNpYmxlUmVjdAorLSAodm9pZCllbmFibGVGb2N1c1JpbmdDbGlwCiB7Ci0gICAgTlNS
ZWN0IHJlY3QgPSBbc2VsZiB2aXNpYmxlUmVjdF07Ci0gICAgaWYgKF9oYXZlQWRkaXRpb25hbENs
aXApIHsKLSAgICAgICAgcmVjdCA9IE5TSW50ZXJzZWN0aW9uUmVjdChyZWN0LCBfYWRkaXRpb25h
bENsaXApOworCUFTU0VSVChfZm9jdXNSaW5nQ2xpcCAmJiBfZm9jdXNSaW5nQ2xpcFJlY3RDb3Vu
dCk7CisJX2hhdmVGb2N1c1JpbmdDbGlwID0gWUVTOworfQorCistICh2b2lkKV9nZXRGb2N1c1Jp
bmdWaXNpYmxlUmVjdHM6KE5TUmVjdCAqKilyZWN0cyBjb3VudDooaW50ICopY291bnQKK3sKKyAg
ICBOU1JlY3QgdmlzaWJsZVJlY3QgPSBbc2VsZiB2aXNpYmxlUmVjdF07CisJaWYgKF90ZW1wRm9j
dXNSaW5nQ2xpcCkgeworCQlmcmVlKF90ZW1wRm9jdXNSaW5nQ2xpcCk7CisJCV90ZW1wRm9jdXNS
aW5nQ2xpcCA9IE5VTEw7CisJCV90ZW1wRm9jdXNSaW5nQ2xpcFJlY3RDb3VudCA9IDA7CisJfQor
ICAgIGlmIChfaGF2ZUZvY3VzUmluZ0NsaXApIHsKKyAgICAJX3RlbXBGb2N1c1JpbmdDbGlwID0g
KE5TUmVjdCAqKW1hbGxvYyhfZm9jdXNSaW5nQ2xpcFJlY3RDb3VudCpzaXplb2YoTlNSZWN0KSk7
CisgICAgCU5TUmVjdCB0ZW1wUmVjdDsKKyAgICAJZm9yIChpbnQgaT0wOyBpPF9mb2N1c1JpbmdD
bGlwUmVjdENvdW50OyBpKyspIHsKKyAgICAJCXRlbXBSZWN0ID0gTlNJbnRlcnNlY3Rpb25SZWN0
KF9mb2N1c1JpbmdDbGlwW2ldLCB2aXNpYmxlUmVjdCk7CisgICAgCQlpZiAoIU5TSXNFbXB0eVJl
Y3QodGVtcFJlY3QpKQorICAgIAkJCV90ZW1wRm9jdXNSaW5nQ2xpcFtfdGVtcEZvY3VzUmluZ0Ns
aXBSZWN0Q291bnQrK10gPSB0ZW1wUmVjdDsKKyAgICAJfQorICAgIAkqY291bnQgPSBfdGVtcEZv
Y3VzUmluZ0NsaXBSZWN0Q291bnQ7CisgICAgCSpyZWN0cyA9IF90ZW1wRm9jdXNSaW5nQ2xpcDsK
KyAgICB9IGVsc2UgeworICAgIAlfdGVtcEZvY3VzUmluZ0NsaXAgPSAoTlNSZWN0ICopbWFsbG9j
KHNpemVvZihOU1JlY3QpKTsKKyAgICAJX3RlbXBGb2N1c1JpbmdDbGlwUmVjdENvdW50ID0gMTsK
KyAgICAJKmNvdW50ID0gMTsKKyAgICAJKl90ZW1wRm9jdXNSaW5nQ2xpcCA9IHZpc2libGVSZWN0
OworICAgIAkqcmVjdHMgPSBfdGVtcEZvY3VzUmluZ0NsaXA7CiAgICAgfQotICAgIHJldHVybiBy
ZWN0OworICAgIAorICAgIHJldHVybjsKIH0KIAogLSAodm9pZClzY3JvbGxXaGVlbDooTlNFdmVu
dCAqKWV2ZW50CkBAIC0xMTAsMyArMTQyLDc3IEBACiB9CiAKIEBlbmQKKwordHlwZWRlZiBzdHJ1
Y3QgeworCVVJbnQzMiB6ZXJvOworCVVJbnQzMiBpc05vdEJsdWVUaW50OworCU5TRm9jdXNSaW5n
UGxhY2VtZW50IHBsYWNlbWVudDsKKwlmbG9hdCBoYWxmOworCWZsb2F0IHJhZGl1czsKKwlmbG9h
dCBvbmVNaW51c0hhbGY7CisJTlNSZWN0IHZpc2libGVSZWN0OworCVVJbnQzMiB6ZXJvU3F1YXJl
ZDsKK30gRm9jdXNSaW5nRGVzY3JpcHRvcjsKKwordHlwZWRlZiB2b2lkKiBDR1N0eWxlUmVmOwor
CitleHRlcm4gTlNDb250cm9sVGludCBfTlNEZWZhdWx0Q29udHJvbFRpbnQoKTsKKworZXh0ZXJu
IENHQ29sb3JTcGFjZVJlZiBDR0NvbG9yU3BhY2VDcmVhdGVEaXNwbGF5UkdCKCk7CitleHRlcm4g
Q0dTdHlsZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKEZvY3VzUmluZ0Rlc2Ny
aXB0b3IgKmZyZCwgQ0dDb2xvclJlZiBjb2xvcik7CitleHRlcm4gQ0dTdHlsZVJlZiBDR1N0eWxl
Q3JlYXRlRm9jdXNSaW5nKEZvY3VzUmluZ0Rlc2NyaXB0b3IgKmZyZCk7CitleHRlcm4gdm9pZCBD
R0NvbnRleHRTZXRTdHlsZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dTdHlsZVJlZiBzdHlsZSk7
CitleHRlcm4gdm9pZCBDR1N0eWxlUmVsZWFzZShDR1N0eWxlUmVmIHN0eWxlKTsKKworQGludGVy
ZmFjZSBOU1ZpZXcgKEFwcEtpdEludGVybmFsKQorLSAoTlNDbGlwVmlldyAqKV9jbGlwVmlld0Fu
Y2VzdG9yOworQGVuZAorCit2b2lkIFdLRHJhd0ZvY3VzUmluZyhOU0JlemllclBhdGggKmZvY3Vz
UmluZ1BhdGgsIE5TRm9jdXNSaW5nUGxhY2VtZW50IHBsYWNlbWVudCwgaW50IHJhZGl1cywgTlND
b2xvciAqY29sb3IpOworCit2b2lkIFdLRHJhd0ZvY3VzUmluZyhOU0JlemllclBhdGggKmZvY3Vz
UmluZ1BhdGgsIE5TRm9jdXNSaW5nUGxhY2VtZW50IHBsYWNlbWVudCwgaW50IHJhZGl1cywgTlND
b2xvciAqY29sb3IpCit7CisJRm9jdXNSaW5nRGVzY3JpcHRvciBmb2N1c1JpbmdEZXNjcmlwdG9y
OworCWZvY3VzUmluZ0Rlc2NyaXB0b3IuemVybyA9IDA7CisJZm9jdXNSaW5nRGVzY3JpcHRvci5p
c05vdEJsdWVUaW50ID0gKF9OU0RlZmF1bHRDb250cm9sVGludCgpICE9IE5TQmx1ZUNvbnRyb2xU
aW50KTsKKwlmb2N1c1JpbmdEZXNjcmlwdG9yLnBsYWNlbWVudCA9IHBsYWNlbWVudDsKKwlmb2N1
c1JpbmdEZXNjcmlwdG9yLmhhbGYgPSAwLjU7CisJZm9jdXNSaW5nRGVzY3JpcHRvci5yYWRpdXMg
PSAocmFkaXVzID09IDAuMCkgPyAyLjAgOiByYWRpdXM7CisJZm9jdXNSaW5nRGVzY3JpcHRvci5v
bmVNaW51c0hhbGYgPSAwLjU7CisJV2ViQ2xpcFZpZXcgKndlYkNsaXBWaWV3ID0gKFdlYkNsaXBW
aWV3KilbKFdlYkhUTUxWaWV3ICopW05TVmlldyBmb2N1c1ZpZXddIF9jbGlwVmlld0FuY2VzdG9y
XTsKKwlmb2N1c1JpbmdEZXNjcmlwdG9yLnplcm9TcXVhcmVkID0gMDsKKwkKKwlOU0NvbG9yICpj
YWxpYnJhdGVkQ29sb3IgPSBbY29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TQ2FsaWJy
YXRlZFJHQkNvbG9yU3BhY2VdOworCQorCUNHU3R5bGVSZWYgc3R5bGU7CisJTlNSZWN0ICpmb2N1
c1JpbmdDbGlwOworCWludCBmb2N1c1JpbmdDbGlwUmVjdENvdW50OworCVt3ZWJDbGlwVmlldyBf
Z2V0Rm9jdXNSaW5nVmlzaWJsZVJlY3RzOiZmb2N1c1JpbmdDbGlwIGNvdW50OiZmb2N1c1JpbmdD
bGlwUmVjdENvdW50XTsKKwlpZiAoZm9jdXNSaW5nQ2xpcFJlY3RDb3VudCA9PSAwKQorCQlyZXR1
cm47CisJCisJaWYgKGNhbGlicmF0ZWRDb2xvcikgeworCQlmbG9hdCBjb2xvckNvbXBvbmVudHNb
NF07CisJCVtjYWxpYnJhdGVkQ29sb3IgZ2V0UmVkOiZjb2xvckNvbXBvbmVudHNbMF0gZ3JlZW46
JmNvbG9yQ29tcG9uZW50c1sxXSBibHVlOiZjb2xvckNvbXBvbmVudHNbMl0gYWxwaGE6JmNvbG9y
Q29tcG9uZW50c1szXV07CisJCUNHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNw
YWNlQ3JlYXRlRGlzcGxheVJHQigpOworCQlDR0NvbG9yUmVmIGNvbG9yUmVmID0gQ0dDb2xvckNy
ZWF0ZShjb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMpOworCQlDR0NvbG9yU3BhY2VSZWxlYXNl
KGNvbG9yU3BhY2UpOworCQlmb3IgKGludCBpPTA7IGk8Zm9jdXNSaW5nQ2xpcFJlY3RDb3VudDsg
aSsrKSB7CisJCQlmb2N1c1JpbmdEZXNjcmlwdG9yLnZpc2libGVSZWN0ID0gW3dlYkNsaXBWaWV3
IGNvbnZlcnRSZWN0OmZvY3VzUmluZ0NsaXBbaV0gdG9WaWV3Om5pbF07CisJCQlzdHlsZSA9IENH
U3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ0Rlc2NyaXB0b3IsIGNvbG9y
UmVmKTsKKwkJCUNHQ29udGV4dFNldFN0eWxlKFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENv
bnRleHRdIGdyYXBoaWNzUG9ydF0sIHN0eWxlKTsKKwkJCUNHU3R5bGVSZWxlYXNlKHN0eWxlKTsK
KwkJCVtmb2N1c1JpbmdQYXRoIGZpbGxdOworCQl9CisJCUNHQ29sb3JSZWxlYXNlKGNvbG9yUmVm
KTsKKwl9IGVsc2UgeworCQlmb3IgKGludCBpPTA7IGk8Zm9jdXNSaW5nQ2xpcFJlY3RDb3VudDsg
aSsrKSB7CisJCQlmb2N1c1JpbmdEZXNjcmlwdG9yLnZpc2libGVSZWN0ID0gW3dlYkNsaXBWaWV3
IGNvbnZlcnRSZWN0OmZvY3VzUmluZ0NsaXBbaV0gdG9WaWV3Om5pbF07CisJCQlzdHlsZSA9IENH
U3R5bGVDcmVhdGVGb2N1c1JpbmcoJmZvY3VzUmluZ0Rlc2NyaXB0b3IpOworCQkJQ0dDb250ZXh0
U2V0U3R5bGUoW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0
XSwgc3R5bGUpOworCQkJQ0dTdHlsZVJlbGVhc2Uoc3R5bGUpOworCQkJW2ZvY3VzUmluZ1BhdGgg
ZmlsbF07CisJCX0KKwl9CisJCit9CkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm0JKHJldmlzaW9uIDEy
NzExKQorKysgV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQkod29ya2luZyBjb3B5KQpAQCAt
MjQ4MSw3ICsyNDgxLDEwIEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqbGFzdEhpdFZpZXcgPSBuaWw7
CiAgICAgICAgIAogICAgIEFTU0VSVChbW3NlbGYgc3VwZXJ2aWV3XSBpc0tpbmRPZkNsYXNzOltX
ZWJDbGlwVmlldyBjbGFzc11dKTsKIAotICAgIFsoV2ViQ2xpcFZpZXcgKilbc2VsZiBzdXBlcnZp
ZXddIHNldEFkZGl0aW9uYWxDbGlwOnJlY3RdOworCWlmIChjb3VudCA+IDApCisgICAgCVsoV2Vi
Q2xpcFZpZXcgKilbc2VsZiBzdXBlcnZpZXddIHNldEZvY3VzUmluZ0NsaXBSZWN0czpyZWN0cyBj
b3VudDpjb3VudF07CisgICAgZWxzZQorICAgIAlbKFdlYkNsaXBWaWV3ICopW3NlbGYgc3VwZXJ2
aWV3XSBzZXRGb2N1c1JpbmdDbGlwUmVjdHM6JnJlY3QgY291bnQ6MV07CiAKICAgICBOU19EVVJJ
TkcgewogICAgICAgICBpZiAoW3NlbGYgX3RyYW5zcGFyZW50QmFja2dyb3VuZF0pIHsKQEAgLTI0
OTEsMTEgKzI0OTQsMTEgQEAgc3RhdGljIFdlYkhUTUxWaWV3ICpsYXN0SGl0VmlldyA9IG5pbDsK
ICAgICAgICAgCiAgICAgICAgIFtbc2VsZiBfYnJpZGdlXSBkcmF3UmVjdDpyZWN0XTsKIAotICAg
ICAgICBbKFdlYkNsaXBWaWV3ICopW3NlbGYgc3VwZXJ2aWV3XSByZXNldEFkZGl0aW9uYWxDbGlw
XTsKKyAgICAgICAgWyhXZWJDbGlwVmlldyAqKVtzZWxmIHN1cGVydmlld10gcmVzZXRGb2N1c1Jp
bmdDbGlwXTsKIAogICAgICAgICBbTlNHcmFwaGljc0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3Rh
dGVdOwogICAgIH0gTlNfSEFORExFUiB7Ci0gICAgICAgIFsoV2ViQ2xpcFZpZXcgKilbc2VsZiBz
dXBlcnZpZXddIHJlc2V0QWRkaXRpb25hbENsaXBdOworICAgICAgICBbKFdlYkNsaXBWaWV3ICop
W3NlbGYgc3VwZXJ2aWV3XSByZXNldEZvY3VzUmluZ0NsaXBdOwogICAgICAgICBbTlNHcmFwaGlj
c0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVdOwogICAgICAgICBFUlJPUigiRXhjZXB0aW9u
IGNhdWdodCB3aGlsZSBkcmF3aW5nOiAlQCIsIGxvY2FsRXhjZXB0aW9uKTsKICAgICAgICAgW2xv
Y2FsRXhjZXB0aW9uIHJhaXNlXTsKQEAgLTI1MzcsMTUgKzI1NDAsMTQgQEAgc3RhdGljIFdlYkhU
TUxWaWV3ICpsYXN0SGl0VmlldyA9IG5pbDsKICAgICAgICAgCiAgICAgV2ViQ2xpcFZpZXcgKmNs
aXBWaWV3ID0gKFdlYkNsaXBWaWV3ICopW3NlbGYgc3VwZXJ2aWV3XTsKIAotICAgIEJPT0wgaGFz
QWRkaXRpb25hbENsaXAgPSBbY2xpcFZpZXcgaGFzQWRkaXRpb25hbENsaXBdOwotICAgIGlmICgh
aGFzQWRkaXRpb25hbENsaXApIHsKKyAgICBCT09MIGhhc0ZvY3VzUmluZ0NsaXAgPSBbY2xpcFZp
ZXcgaGFzRm9jdXNSaW5nQ2xpcF07CisgICAgaWYgKCFoYXNGb2N1c1JpbmdDbGlwKSB7CiAgICAg
ICAgIHJldHVybiBbc3VwZXIgdmlzaWJsZVJlY3RdOwogICAgIH0KICAgICAKLSAgICBOU1JlY3Qg
YWRkaXRpb25hbENsaXAgPSBbY2xpcFZpZXcgYWRkaXRpb25hbENsaXBdOwotICAgIFtjbGlwVmll
dyByZXNldEFkZGl0aW9uYWxDbGlwXTsKKyAgICBbY2xpcFZpZXcgZGlzYWJsZUZvY3VzUmluZ0Ns
aXBdOwogICAgIE5TUmVjdCB2aXNpYmxlUmVjdCA9IFtzdXBlciB2aXNpYmxlUmVjdF07Ci0gICAg
W2NsaXBWaWV3IHNldEFkZGl0aW9uYWxDbGlwOmFkZGl0aW9uYWxDbGlwXTsKKyAgICBbY2xpcFZp
ZXcgZW5hYmxlRm9jdXNSaW5nQ2xpcF07CiAgICAgcmV0dXJuIHZpc2libGVSZWN0OwogfQogCklu
ZGV4OiBXZWJDb3JlL2t3cS9LV1FQYWludGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3dx
L0tXUVBhaW50ZXIubW0JKHJldmlzaW9uIDEyNzExKQorKysgV2ViQ29yZS9rd3EvS1dRUGFpbnRl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgUVBhaW50ZXI6OmRy
YXdGb2N1c1JpbmcoKQogICAgICAgICBpbnQgcmFkaXVzID0gKGRhdGEtPmZvY3VzUmluZ1dpZHRo
LTEpLzI7CiAgICAgICAgIE5TQ29sb3IgKmNvbG9yID0gZGF0YS0+aGFzRm9jdXNSaW5nQ29sb3Ig
PyBuc0NvbG9yKGRhdGEtPmZvY3VzUmluZ0NvbG9yKSA6IG5pbDsKICAgICAgICAgW05TR3JhcGhp
Y3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKLSAgICAgICAgW1tXZWJDb3JlR3JhcGhpY3NC
cmlkZ2Ugc2hhcmVkQnJpZGdlXSBzZXRGb2N1c1JpbmdTdHlsZTpOU0ZvY3VzUmluZ09ubHkgcmFk
aXVzOnJhZGl1cyBjb2xvcjpjb2xvcl07Ci0gICAgICAgIFtkYXRhLT5mb2N1c1JpbmdQYXRoIGZp
bGxdOworICAgICAgICBbW1dlYkNvcmVHcmFwaGljc0JyaWRnZSBzaGFyZWRCcmlkZ2VdIGRyYXdG
b2N1c1Jpbmc6ZGF0YS0+Zm9jdXNSaW5nUGF0aCBzdHlsZTpOU0ZvY3VzUmluZ09ubHkgcmFkaXVz
OnJhZGl1cyBjb2xvcjpjb2xvcl07CiAgICAgICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3Jl
R3JhcGhpY3NTdGF0ZV07ICAgCiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9rd3EvV2ViQ29yZUdy
YXBoaWNzQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rd3EvV2ViQ29yZUdyYXBoaWNz
QnJpZGdlLmgJKHJldmlzaW9uIDEyNzExKQorKysgV2ViQ29yZS9rd3EvV2ViQ29yZUdyYXBoaWNz
QnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIEBpbnRlcmZhY2UgV2Vi
Q29yZUdyYXBoaWNzQnJpZGdlIDogTlNPYmplY3QKIAogKyAoV2ViQ29yZUdyYXBoaWNzQnJpZGdl
ICopc2hhcmVkQnJpZGdlOwotLSAodm9pZClzZXRGb2N1c1JpbmdTdHlsZTooTlNGb2N1c1JpbmdQ
bGFjZW1lbnQpcGxhY2VtZW50IHJhZGl1czooaW50KXJhZGl1cyBjb2xvcjooTlNDb2xvciAqKWNv
bG9yOworLSAodm9pZClkcmF3Rm9jdXNSaW5nOihOU0JlemllclBhdGggKilmb2N1c1JpbmdQYXRo
IHN0eWxlOihOU0ZvY3VzUmluZ1BsYWNlbWVudClwbGFjZW1lbnQgcmFkaXVzOihpbnQpcmFkaXVz
IGNvbG9yOihOU0NvbG9yICopY29sb3I7CiAtICh2b2lkKXNldERyYWdnaW5nSW1hZ2U6KE5TSW1h
Z2UgKilkcmFnSW1hZ2UgYXQ6KE5TUG9pbnQpZHJhZ0xvYzsKIAogQGVuZApJbmRleDogV2ViQ29y
ZS9rd3EvV2ViQ29yZUdyYXBoaWNzQnJpZGdlLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rd3Ev
V2ViQ29yZUdyYXBoaWNzQnJpZGdlLm0JKHJldmlzaW9uIDEyNzExKQorKysgV2ViQ29yZS9rd3Ev
V2ViQ29yZUdyYXBoaWNzQnJpZGdlLm0JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAg
c3RhdGljIFdlYkNvcmVHcmFwaGljc0JyaWRnZSAqc2hhcmVkQnJpZAogICAgIHJldHVybiBzZWxm
OwogfQogCi0tICh2b2lkKXNldEZvY3VzUmluZ1N0eWxlOihOU0ZvY3VzUmluZ1BsYWNlbWVudClw
bGFjZW1lbnQgcmFkaXVzOihpbnQpcmFkaXVzIGNvbG9yOihOU0NvbG9yICopY29sb3IKKy0gKHZv
aWQpZHJhd0ZvY3VzUmluZzooTlNCZXppZXJQYXRoICopZm9jdXNSaW5nUGF0aCBzdHlsZTooTlNG
b2N1c1JpbmdQbGFjZW1lbnQpcGxhY2VtZW50IHJhZGl1czooaW50KXJhZGl1cyBjb2xvcjooTlND
b2xvciAqKWNvbG9yOwogewogfQogCg==
</data>
<flag name="review"
          id="1577"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6387</attachid>
            <date>2006-02-10 05:57:09 -0800</date>
            <delta_ts>2006-02-10 05:57:09 -0800</delta_ts>
            <desc>WKSetFocusRingStyle</desc>
            <filename>WKSetFocusRingStyleOriginal.m</filename>
            <type>text/plain</type>
            <size>1609</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">dHlwZWRlZiBzdHJ1Y3QgewoJVUludDMyIHplcm87CglVSW50MzIgaXNOb3RCbHVlVGludDsKCU5T
Rm9jdXNSaW5nUGxhY2VtZW50IHBsYWNlbWVudDsKCWZsb2F0IGhhbGY7CglmbG9hdCByYWRpdXM7
CglmbG9hdCBvbmVNaW51c0hhbGY7CglOU1JlY3QgdmlzaWJsZVJlY3Q7CglVSW50MzIgemVyb1Nx
dWFyZWQ7Cn0gRm9jdXNSaW5nRGVzY3JpcHRvcjsKCnZvaWQgV0tTZXRGb2N1c1JpbmdTdHlsZVBh
dGNoZWQoTlNGb2N1c1JpbmdQbGFjZW1lbnQgcGxhY2VtZW50LCBpbnQgcmFkaXVzLCBOU0NvbG9y
ICpjb2xvcikKewoJRm9jdXNSaW5nRGVzY3JpcHRvciBmb2N1c1JpbmdEZXNjcmlwdG9yOwoJZm9j
dXNSaW5nRGVzY3JpcHRvci56ZXJvID0gMDsKCWZvY3VzUmluZ0Rlc2NyaXB0b3IuaXNOb3RCbHVl
VGludCA9IChfTlNEZWZhdWx0Q29udHJvbFRpbnQoKSAhPSBOU0JsdWVDb250cm9sVGludCk7Cglm
b2N1c1JpbmdEZXNjcmlwdG9yLnBsYWNlbWVudCA9IHBsYWNlbWVudDsKCWZvY3VzUmluZ0Rlc2Ny
aXB0b3IuaGFsZiA9IDAuNTsKCWZvY3VzUmluZ0Rlc2NyaXB0b3IucmFkaXVzID0gKHJhZGl1cyA9
PSAwLjApID8gMi4wIDogcmFkaXVzOwoJZm9jdXNSaW5nRGVzY3JpcHRvci5vbmVNaW51c0hhbGYg
PSAwLjU7CglXZWJDbGlwVmlldyAqd2ViQ2xpcFZpZXcgPSAoV2ViQ2xpcFZpZXcqKVsoV2ViSFRN
TFZpZXcgKilbTlNWaWV3IGZvY3VzVmlld10gX2NsaXBWaWV3QW5jZXN0b3JdOwoJZm9jdXNSaW5n
RGVzY3JpcHRvci52aXNpYmxlUmVjdCA9IFt3ZWJDbGlwVmlldyBjb252ZXJ0UmVjdDpbd2ViQ2xp
cFZpZXcgX2ZvY3VzUmluZ1Zpc2libGVSZWN0XSB0b1ZpZXc6bmlsXTsKCWZvY3VzUmluZ0Rlc2Ny
aXB0b3IuemVyb1NxdWFyZWQgPSAwOwoJCglOU0NvbG9yICpjYWxpYnJhdGVkQ29sb3IgPSBbY29s
b3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TQ2FsaWJyYXRlZFJHQkNvbG9yU3BhY2VdOwoJ
CglDR1N0eWxlUmVmIHN0eWxlOwoJCglpZiAoY2FsaWJyYXRlZENvbG9yKSB7CgkJZmxvYXQgY29s
b3JDb21wb25lbnRzWzRdOwoJCVtjYWxpYnJhdGVkQ29sb3IgZ2V0UmVkOiZjb2xvckNvbXBvbmVu
dHNbMF0gZ3JlZW46JmNvbG9yQ29tcG9uZW50c1sxXSBibHVlOiZjb2xvckNvbXBvbmVudHNbMl0g
YWxwaGE6JmNvbG9yQ29tcG9uZW50c1szXV07CgkJQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Ug
PSBDR0NvbG9yU3BhY2VDcmVhdGVEaXNwbGF5UkdCKCk7CgkJQ0dDb2xvclJlZiBjb2xvclJlZiA9
IENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzKTsKCQlDR0NvbG9yU3Bh
Y2VSZWxlYXNlKGNvbG9yU3BhY2UpOwoJCXN0eWxlID0gQ0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dp
dGhDb2xvcigmZm9jdXNSaW5nRGVzY3JpcHRvciwgY29sb3JSZWYpOwoJCUNHQ29sb3JSZWxlYXNl
KGNvbG9yUmVmKTsKCX0gZWxzZQoJCXN0eWxlID0gQ0dTdHlsZUNyZWF0ZUZvY3VzUmluZygmZm9j
dXNSaW5nRGVzY3JpcHRvcik7CgkKCUNHQ29udGV4dFNldFN0eWxlKFtbTlNHcmFwaGljc0NvbnRl
eHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF0sIHN0eWxlKTsKCUNHU3R5bGVSZWxlYXNl
KHN0eWxlKTsKCQp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6583</attachid>
            <date>2006-02-17 20:15:59 -0800</date>
            <delta_ts>2006-02-17 22:49:05 -0800</delta_ts>
            <desc>patch 3</desc>
            <filename>RedrawnFocusRingV3.diff</filename>
            <type>text/plain</type>
            <size>6650</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdExpYnJhcmllcy9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDEy
ODY1KQorKysgV2ViS2l0TGlicmFyaWVzL1dlYktpdFN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIENGUmVhZFN0cmVhbVJlZiBXS0NyZWF0ZUN1c3RvbUNG
UmVhZFN0cmUKICAgICB2b2lkICgqZm9ybVVuc2NoZWR1bGUpKENGUmVhZFN0cmVhbVJlZiwgQ0ZS
dW5Mb29wUmVmLCBDRlN0cmluZ1JlZiwgdm9pZCAqKSwKICAgICB2b2lkICpjb250ZXh0KTsKIAot
dm9pZCBXS1NldEZvY3VzUmluZ1N0eWxlKE5TRm9jdXNSaW5nUGxhY2VtZW50IHBsYWNlbWVudCwg
aW50IHJhZGl1cywgTlNDb2xvciAqY29sb3IpOwordm9pZCBXS0RyYXdGb2N1c1JpbmcoTlNCZXpp
ZXJQYXRoICpmb2N1c1JpbmdQYXRoLCBOU0ZvY3VzUmluZ1BsYWNlbWVudCBwbGFjZW1lbnQsIGlu
dCByYWRpdXMsIE5TQ29sb3IgKmNvbG9yKTsKIHZvaWQgV0tTZXREcmFnSW1hZ2UoTlNJbWFnZSAq
aW1hZ2UsIE5TUG9pbnQgb2Zmc2V0KTsKIAogdm9pZCBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0
aW9ucyh2b2lkKTsKSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRn
ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRn
ZS5tCShyZXZpc2lvbiAxMjg2NSkKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGlj
c0JyaWRnZS5tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBACiAgICAgcmV0dXJuIChX
ZWJHcmFwaGljc0JyaWRnZSAqKVtzdXBlciBzaGFyZWRCcmlkZ2VdOwogfQogCi0tICh2b2lkKXNl
dEZvY3VzUmluZ1N0eWxlOihOU0ZvY3VzUmluZ1BsYWNlbWVudClwbGFjZW1lbnQgcmFkaXVzOihp
bnQpcmFkaXVzIGNvbG9yOihOU0NvbG9yICopY29sb3IKKy0gKHZvaWQpZHJhd0ZvY3VzUmluZzoo
TlNCZXppZXJQYXRoICopZm9jdXNSaW5nUGF0aCBwbGFjZW1lbnQ6KE5TRm9jdXNSaW5nUGxhY2Vt
ZW50KXBsYWNlbWVudCByYWRpdXM6KGludClyYWRpdXMgY29sb3I6KE5TQ29sb3IgKiljb2xvcgog
ewotICAgIFdLU2V0Rm9jdXNSaW5nU3R5bGUocGxhY2VtZW50LCByYWRpdXMsIGNvbG9yKTsKKyAg
ICBXS0RyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUGF0aCwgcGxhY2VtZW50LCByYWRpdXMsIGNvbG9y
KTsKIH0KIAogLy8gRGFzaGJvYXJkIHdhbnRzIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcg
ZHJhZ2dpbmcsIGJ1dCBDb2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlzLgpJbmRleDogV2ViS2l0L1dl
YlZpZXcvV2ViSFRNTFZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJIVE1M
Vmlldy5tCShyZXZpc2lvbiAxMjg2NSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm0J
KHdvcmtpbmcgY29weSkKQEAgLTU1MjgsMyArNTUyOCw3NSBAQCBzdGF0aWMgTlNBcnJheSAqdmFs
aWRBdHRyaWJ1dGVzID0gbmlsOwogfQogCiBAZW5kCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAg
VUludDMyIHplcm87CisgICBVSW50MzIgaXNOb3RCbHVlVGludDsKKyAgIE5TRm9jdXNSaW5nUGxh
Y2VtZW50IHBsYWNlbWVudDsKKyAgIGZsb2F0IGhhbGY7CisgICBmbG9hdCByYWRpdXM7CisgICBm
bG9hdCBvbmVNaW51c0hhbGY7CisgICBOU1JlY3QgdmlzaWJsZVJlY3Q7CisgICBVSW50MzIgemVy
b1NxdWFyZWQ7Cit9IEZvY3VzUmluZ0Rlc2NyaXB0b3I7CisKK3R5cGVkZWYgdm9pZCogQ0dTdHls
ZVJlZjsKKworZXh0ZXJuIE5TQ29udHJvbFRpbnQgX05TRGVmYXVsdENvbnRyb2xUaW50KCk7CisK
K2V4dGVybiBDR0NvbG9yU3BhY2VSZWYgQ0dDb2xvclNwYWNlQ3JlYXRlRGlzcGxheVJHQigpOwor
ZXh0ZXJuIENHU3R5bGVSZWYgQ0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcihGb2N1c1Jp
bmdEZXNjcmlwdG9yICpmcmQsIENHQ29sb3JSZWYgY29sb3IpOworZXh0ZXJuIENHU3R5bGVSZWYg
Q0dTdHlsZUNyZWF0ZUZvY3VzUmluZyhGb2N1c1JpbmdEZXNjcmlwdG9yICpmcmQpOworZXh0ZXJu
IHZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHU3R5bGVSZWYg
c3R5bGUpOworZXh0ZXJuIHZvaWQgQ0dTdHlsZVJlbGVhc2UoQ0dTdHlsZVJlZiBzdHlsZSk7CisK
K3ZvaWQgV0tEcmF3Rm9jdXNSaW5nKE5TQmV6aWVyUGF0aCAqZm9jdXNSaW5nUGF0aCwgTlNGb2N1
c1JpbmdQbGFjZW1lbnQgcGxhY2VtZW50LCBpbnQgcmFkaXVzLCBOU0NvbG9yICpjb2xvcik7CisK
K3ZvaWQgV0tEcmF3Rm9jdXNSaW5nKE5TQmV6aWVyUGF0aCAqZm9jdXNSaW5nUGF0aCwgTlNGb2N1
c1JpbmdQbGFjZW1lbnQgcGxhY2VtZW50LCBpbnQgcmFkaXVzLCBOU0NvbG9yICpjb2xvcikKK3sK
KyAgICBGb2N1c1JpbmdEZXNjcmlwdG9yIGZvY3VzUmluZ0Rlc2NyaXB0b3I7CisgICAgZm9jdXNS
aW5nRGVzY3JpcHRvci56ZXJvID0gMDsKKyAgICBmb2N1c1JpbmdEZXNjcmlwdG9yLmlzTm90Qmx1
ZVRpbnQgPSAoX05TRGVmYXVsdENvbnRyb2xUaW50KCkgIT0gTlNCbHVlQ29udHJvbFRpbnQpOwor
ICAgIGZvY3VzUmluZ0Rlc2NyaXB0b3IucGxhY2VtZW50ID0gcGxhY2VtZW50OworICAgIGZvY3Vz
UmluZ0Rlc2NyaXB0b3IuaGFsZiA9IDAuNTsKKyAgICBmb2N1c1JpbmdEZXNjcmlwdG9yLnJhZGl1
cyA9IChyYWRpdXMgPT0gMC4wKSA/IDIuMCA6IHJhZGl1czsKKyAgICBmb2N1c1JpbmdEZXNjcmlw
dG9yLm9uZU1pbnVzSGFsZiA9IDAuNTsKKyAgICBmb2N1c1JpbmdEZXNjcmlwdG9yLnplcm9TcXVh
cmVkID0gMDsKKyAgICAKKyAgICBOU0NvbG9yICpjYWxpYnJhdGVkQ29sb3IgPSBbY29sb3IgY29s
b3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TQ2FsaWJyYXRlZFJHQkNvbG9yU3BhY2VdOworICAgIAor
ICAgIENHU3R5bGVSZWYgc3R5bGU7CisgICAgY29uc3QgTlNSZWN0ICpmb2N1c1JpbmdDbGlwOwor
ICAgIGludCBmb2N1c1JpbmdDbGlwUmVjdENvdW50OworICAgIE5TVmlldyAqZm9jdXNWaWV3ID0g
W05TVmlldyBmb2N1c1ZpZXddOworICAgIAorICAgIFtmb2N1c1ZpZXcgZ2V0UmVjdHNCZWluZ0Ry
YXduOiZmb2N1c1JpbmdDbGlwIGNvdW50OiZmb2N1c1JpbmdDbGlwUmVjdENvdW50XTsKKyAgICBp
ZiAoZm9jdXNSaW5nQ2xpcFJlY3RDb3VudCA9PSAwKQorICAgICAgICByZXR1cm47CisgICAgICAg
CisgICAgaWYgKGNhbGlicmF0ZWRDb2xvcikgeworICAgICAgICBmbG9hdCBjb2xvckNvbXBvbmVu
dHNbNF07CisgICAgICAgIFtjYWxpYnJhdGVkQ29sb3IgZ2V0UmVkOiZjb2xvckNvbXBvbmVudHNb
MF0gZ3JlZW46JmNvbG9yQ29tcG9uZW50c1sxXSBibHVlOiZjb2xvckNvbXBvbmVudHNbMl0gYWxw
aGE6JmNvbG9yQ29tcG9uZW50c1szXV07CisgICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGlzcGxheVJHQigpOworICAgICAgICBDR0NvbG9yUmVm
IGNvbG9yUmVmID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMpOwor
ICAgICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOworICAgICAgICBmb3IgKGlu
dCBpPTA7IGk8Zm9jdXNSaW5nQ2xpcFJlY3RDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBmb2N1
c1JpbmdEZXNjcmlwdG9yLnZpc2libGVSZWN0ID0gW2ZvY3VzVmlldyBjb252ZXJ0UmVjdDpmb2N1
c1JpbmdDbGlwW2ldIHRvVmlldzpuaWxdOworICAgICAgICAgICAgc3R5bGUgPSBDR1N0eWxlQ3Jl
YXRlRm9jdXNSaW5nV2l0aENvbG9yKCZmb2N1c1JpbmdEZXNjcmlwdG9yLCBjb2xvclJlZik7Cisg
ICAgICAgICAgICBDR0NvbnRleHRTZXRTdHlsZShbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XSBncmFwaGljc1BvcnRdLCBzdHlsZSk7CisgICAgICAgICAgICBbZm9jdXNSaW5nUGF0
aCBmaWxsXTsKKyAgICAgICAgICAgIENHU3R5bGVSZWxlYXNlKHN0eWxlKTsKKyAgICAgICAgfQor
ICAgICAgICBDR0NvbG9yUmVsZWFzZShjb2xvclJlZik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Zm9yIChpbnQgaT0wOyBpPGZvY3VzUmluZ0NsaXBSZWN0Q291bnQ7IGkrKykgeworICAgICAgICAg
ICAgZm9jdXNSaW5nRGVzY3JpcHRvci52aXNpYmxlUmVjdCA9IFtmb2N1c1ZpZXcgY29udmVydFJl
Y3Q6Zm9jdXNSaW5nQ2xpcFtpXSB0b1ZpZXc6bmlsXTsKKyAgICAgICAgICAgIHN0eWxlID0gQ0dT
dHlsZUNyZWF0ZUZvY3VzUmluZygmZm9jdXNSaW5nRGVzY3JpcHRvcik7CisgICAgICAgICAgICBD
R0NvbnRleHRTZXRTdHlsZShbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFw
aGljc1BvcnRdLCBzdHlsZSk7CisgICAgICAgICAgICBbZm9jdXNSaW5nUGF0aCBmaWxsXTsKKyAg
ICAgICAgICAgIENHU3R5bGVSZWxlYXNlKHN0eWxlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
K30KSW5kZXg6IFdlYkNvcmUva3dxL0tXUVBhaW50ZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rd3EvS1dRUGFpbnRlci5tbQkocmV2aXNpb24gMTI4NjUpCisrKyBXZWJDb3JlL2t3cS9LV1FQ
YWludGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MjcsOCArOTI3LDcgQEAgdm9pZCBRUGFpbnRl
cjo6ZHJhd0ZvY3VzUmluZygpCiAgICAgICAgIGludCByYWRpdXMgPSAoZGF0YS0+Zm9jdXNSaW5n
V2lkdGgtMSkvMjsKICAgICAgICAgTlNDb2xvciAqY29sb3IgPSBkYXRhLT5oYXNGb2N1c1JpbmdD
b2xvciA/IG5zQ29sb3IoZGF0YS0+Zm9jdXNSaW5nQ29sb3IpIDogbmlsOwogICAgICAgICBbTlNH
cmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOwotICAgICAgICBbW1dlYkNvcmVHcmFw
aGljc0JyaWRnZSBzaGFyZWRCcmlkZ2VdIHNldEZvY3VzUmluZ1N0eWxlOk5TRm9jdXNSaW5nT25s
eSByYWRpdXM6cmFkaXVzIGNvbG9yOmNvbG9yXTsKLSAgICAgICAgW2RhdGEtPmZvY3VzUmluZ1Bh
dGggZmlsbF07CisgICAgICAgIFtbV2ViQ29yZUdyYXBoaWNzQnJpZGdlIHNoYXJlZEJyaWRnZV0g
ZHJhd0ZvY3VzUmluZzpkYXRhLT5mb2N1c1JpbmdQYXRoIHBsYWNlbWVudDpOU0ZvY3VzUmluZ09u
bHkgcmFkaXVzOnJhZGl1cyBjb2xvcjpjb2xvcl07CiAgICAgICAgIFtOU0dyYXBoaWNzQ29udGV4
dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07ICAgCiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9rd3Ev
V2ViQ29yZUdyYXBoaWNzQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rd3EvV2ViQ29y
ZUdyYXBoaWNzQnJpZGdlLmgJKHJldmlzaW9uIDEyODY1KQorKysgV2ViQ29yZS9rd3EvV2ViQ29y
ZUdyYXBoaWNzQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIEBpbnRl
cmZhY2UgV2ViQ29yZUdyYXBoaWNzQnJpZGdlIDogTlNPYmplY3QKIAogKyAoV2ViQ29yZUdyYXBo
aWNzQnJpZGdlICopc2hhcmVkQnJpZGdlOwotLSAodm9pZClzZXRGb2N1c1JpbmdTdHlsZTooTlNG
b2N1c1JpbmdQbGFjZW1lbnQpcGxhY2VtZW50IHJhZGl1czooaW50KXJhZGl1cyBjb2xvcjooTlND
b2xvciAqKWNvbG9yOworLSAodm9pZClkcmF3Rm9jdXNSaW5nOihOU0JlemllclBhdGggKilmb2N1
c1JpbmdQYXRoIHBsYWNlbWVudDooTlNGb2N1c1JpbmdQbGFjZW1lbnQpcGxhY2VtZW50IHJhZGl1
czooaW50KXJhZGl1cyBjb2xvcjooTlNDb2xvciAqKWNvbG9yOwogLSAodm9pZClzZXREcmFnZ2lu
Z0ltYWdlOihOU0ltYWdlICopZHJhZ0ltYWdlIGF0OihOU1BvaW50KWRyYWdMb2M7CiAKIEBlbmQK
SW5kZXg6IFdlYkNvcmUva3dxL1dlYkNvcmVHcmFwaGljc0JyaWRnZS5tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3dxL1dlYkNvcmVHcmFwaGljc0JyaWRnZS5tCShyZXZpc2lvbiAxMjg2NSkKKysr
IFdlYkNvcmUva3dxL1dlYkNvcmVHcmFwaGljc0JyaWRnZS5tCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw3IEBAIHN0YXRpYyBXZWJDb3JlR3JhcGhpY3NCcmlkZ2UgKnNoYXJlZEJyaWQKICAg
ICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClzZXRGb2N1c1JpbmdTdHlsZTooTlNGb2N1c1Jp
bmdQbGFjZW1lbnQpcGxhY2VtZW50IHJhZGl1czooaW50KXJhZGl1cyBjb2xvcjooTlNDb2xvciAq
KWNvbG9yCistICh2b2lkKWRyYXdGb2N1c1Jpbmc6KE5TQmV6aWVyUGF0aCAqKWZvY3VzUmluZ1Bh
dGggcGxhY2VtZW50OihOU0ZvY3VzUmluZ1BsYWNlbWVudClwbGFjZW1lbnQgcmFkaXVzOihpbnQp
cmFkaXVzIGNvbG9yOihOU0NvbG9yICopY29sb3IKIHsKIH0KIAo=
</data>
<flag name="review"
          id="1641"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6584</attachid>
            <date>2006-02-17 20:17:58 -0800</date>
            <delta_ts>2006-02-17 20:17:58 -0800</delta_ts>
            <desc>automatic testcase</desc>
            <filename>move-by-character-test.html</filename>
            <type>text/html</type>
            <size>590</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">PGh0bWw+IAo8aGVhZD4KCjxzdHlsZT4KLmVkaXRpbmcgeyAKICAgIGZvbnQtc2l6ZTogMjRweDsg
Cn0KPC9zdHlsZT4KPHNjcmlwdCBzcmM9Li4vZWRpdGluZy5qcyBsYW5ndWFnZT0iSmF2YVNjcmlw
dCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0IiA+PC9zY3JpcHQ+Cgo8c2NyaXB0PgoKZnVuY3Rpb24g
ZWRpdGluZ1Rlc3QoKSB7CiAgICBmb3IgKGkgPSAwOyBpIDwgMTE7IGkrKykgewogICAgICAgIG1v
dmVTZWxlY3Rpb25Gb3J3YXJkQnlDaGFyYWN0ZXJDb21tYW5kKCk7CiAgICB9CiAgICBmb3IgKGkg
PSAwOyBpIDwgMTE7IGkrKykgewogICAgICAgIG1vdmVTZWxlY3Rpb25CYWNrd2FyZEJ5Q2hhcmFj
dGVyQ29tbWFuZCgpOwogICAgfQp9CmNvbW1hbmREZWxheSA9IDEwMDsKPC9zY3JpcHQ+Cgo8dGl0
bGU+RWRpdGluZyBUZXN0PC90aXRsZT4gCjwvaGVhZD4gCjxib2R5Pgo8ZGl2IGNvbnRlbnRlZGl0
YWJsZSBpZD0icm9vdCIgY2xhc3M9ImVkaXRpbmciPgo8c3BhbiBpZD0idGVzdCI+Zm9vICAgYmFy
ICAgIGJhejwvc3Bhbj4KPC9kaXY+Cgo8c2NyaXB0PgpydW5FZGl0aW5nVGVzdCgpOwo8L3Njcmlw
dD4KCjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6585</attachid>
            <date>2006-02-17 20:19:35 -0800</date>
            <delta_ts>2006-02-17 20:19:35 -0800</delta_ts>
            <desc>patch that modifies the clip (doesn&apos;t work)</desc>
            <filename>RedrawnFocusRing.NSRectClipList.diff</filename>
            <type>text/plain</type>
            <size>789</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L1dlYlZpZXcvV2ViSFRNTFZpZXcubQkocmV2aXNpb24gMTI4NjUpCisrKyBXZWJLaXQvV2ViVmll
dy9XZWJIVE1MVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQ1LDYgKzI0NDUsMTQgQEAgc3Rh
dGljIFdlYkhUTUxWaWV3ICpsYXN0SGl0VmlldyA9IG5pbDsKIAogICAgIFtOU0dyYXBoaWNzQ29u
dGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CiAgICAgTlNSZWN0Q2xpcChyZWN0KTsKKyAgICBpZiAo
Y291bnQgPiAwKSB7CisgICAgCUNHUmVjdCAqY2dSZWN0cyA9IG1hbGxvYyhjb3VudCpzaXplb2Yo
Q0dSZWN0KSk7CisgICAgCWZvciAoaW50IGk9MDtpPGNvdW50O2krKykKKyAgICAJCWNnUmVjdHNb
aV0gPSBDR1JlY3RNYWtlKHJlY3RzW2ldLm9yaWdpbi54LCByZWN0c1tpXS5vcmlnaW4ueSwKKyAg
ICAJCQkJCQkJCXJlY3RzW2ldLnNpemUud2lkdGgsIHJlY3RzW2ldLnNpemUuaGVpZ2h0KTsKKyAg
ICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdHMoW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29u
dGV4dF0gZ3JhcGhpY3NQb3J0XSwgY2dSZWN0cywgY291bnQpOworLy8gICAgCU5TUmVjdENsaXBM
aXN0KHJlY3RzLCBjb3VudCk7CisgICAgfQogICAgICAgICAKICAgICBBU1NFUlQoW1tzZWxmIHN1
cGVydmlld10gaXNLaW5kT2ZDbGFzczpbV2ViQ2xpcFZpZXcgY2xhc3NdXSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6631</attachid>
            <date>2006-02-20 16:30:35 -0800</date>
            <delta_ts>2006-02-20 17:29:20 -0800</delta_ts>
            <desc>a cut at a patch, not working yet, for Graham to look at</desc>
            <filename>FocusPatch.txt</filename>
            <type>text/plain</type>
            <size>8164</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9mbG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfZmxvdy5jcHAJKHJldmlzaW9uIDEyODk5KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvcmVuZGVyX2Zsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODIsOSAr
NjgyLDkgQEAKICAgICBpZiAoIW9jLmlzVmFsaWQoKSkKICAgICAgICAgb2MgPSBzdHlsZSgpLT5j
b2xvcigpOwogICAgIAotICAgIHAtPmluaXRGb2N1c1Jpbmcob3csICBzdHlsZSgpLT5vdXRsaW5l
T2Zmc2V0KCksIG9jKTsKKyAgICBwLT5pbml0Rm9jdXNSaW5nKG93LCAgc3R5bGUoKS0+b3V0bGlu
ZU9mZnNldCgpKTsKICAgICBhZGRGb2N1c1JpbmdSZWN0cyhwLCB0eCwgdHkpOwotICAgIHAtPmRy
YXdGb2N1c1JpbmcoKTsKKyAgICBwLT5kcmF3Rm9jdXNSaW5nKG9jKTsKICAgICBwLT5jbGVhckZv
Y3VzUmluZygpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAkocmV2
aXNpb24gMTI4OTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM1Myw5ICsxMzUzLDkgQEAKICAgICBpZiAoc3R5bGUtPm91dGxpbmVT
dHlsZUlzQXV0bygpKSB7CiAgICAgICAgIGlmICghdGhlbWUoKS0+c3VwcG9ydHNGb2N1c1Jpbmco
c3R5bGUpKSB7CiAgICAgICAgICAgICAvLyBPbmx5IHBhaW50IHRoZSBmb2N1cyByaW5nIGJ5IGhh
bmQgaWYgdGhlIHRoZW1lIGlzbid0IGFibGUgdG8gZHJhdyB0aGUgZm9jdXMgcmluZy4KLSAgICAg
ICAgICAgIHAtPmluaXRGb2N1c1Jpbmcob3csIG9mZnNldCwgb2MpOworICAgICAgICAgICAgcC0+
aW5pdEZvY3VzUmluZyhvdywgb2Zmc2V0KTsKICAgICAgICAgICAgIGFkZEZvY3VzUmluZ1JlY3Rz
KHAsIF90eCwgX3R5KTsKLSAgICAgICAgICAgIHAtPmRyYXdGb2N1c1JpbmcoKTsKKyAgICAgICAg
ICAgIHAtPmRyYXdGb2N1c1Jpbmcob2MpOwogICAgICAgICAgICAgcC0+Y2xlYXJGb2N1c1Jpbmco
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL2t3cS9LV1FQYWlu
dGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3dxL0tXUVBhaW50ZXIubW0JKHJldmlzaW9u
IDEyODk5KQorKysgV2ViQ29yZS9rd3EvS1dRUGFpbnRlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
NzEsMjYgKzcxLDIzIEBACiAgICAgVmVjdG9yPFFQU3RhdGU+IHN0YWNrOwogICAgIGlkIDxXZWJD
b3JlVGV4dFJlbmRlcmVyPiB0ZXh0UmVuZGVyZXI7CiAgICAgUUZvbnQgdGV4dFJlbmRlcmVyRm9u
dDsKLSAgICBOU0JlemllclBhdGggKmZvY3VzUmluZ1BhdGg7CisgICAgQ0dNdXRhYmxlUGF0aFJl
ZiBmb2N1c1JpbmdQYXRoOwogICAgIGludCBmb2N1c1JpbmdXaWR0aDsKICAgICBpbnQgZm9jdXNS
aW5nT2Zmc2V0OwotICAgIGJvb2wgaGFzRm9jdXNSaW5nQ29sb3I7Ci0gICAgQ29sb3IgZm9jdXNS
aW5nQ29sb3I7CiAjaWYgU1ZHX1NVUFBPUlQKICAgICBLUmVuZGVyaW5nRGV2aWNlICpyZW5kZXJp
bmdEZXZpY2U7CiAjZW5kaWYKIH07CiAKLVFQYWludGVyUHJpdmF0ZTo6UVBhaW50ZXJQcml2YXRl
KCkgOiB0ZXh0UmVuZGVyZXIoMCksIGZvY3VzUmluZ1BhdGgoMCksIGZvY3VzUmluZ1dpZHRoKDAp
LCBmb2N1c1JpbmdPZmZzZXQoMCksCi0gICAgICAgICAgICAgICAgICAgICAgICBoYXNGb2N1c1Jp
bmdDb2xvcihmYWxzZSkKK1FQYWludGVyUHJpdmF0ZTo6UVBhaW50ZXJQcml2YXRlKCkKKyAgICA6
IHRleHRSZW5kZXJlcigwKSwgZm9jdXNSaW5nUGF0aCgwKSwgZm9jdXNSaW5nV2lkdGgoMCksIGZv
Y3VzUmluZ09mZnNldCgwKQogewotCiB9CiAKIFFQYWludGVyUHJpdmF0ZTo6flFQYWludGVyUHJp
dmF0ZSgpCiB7CiAgICAgS1dRUmVsZWFzZSh0ZXh0UmVuZGVyZXIpOwotICAgIEtXUVJlbGVhc2Uo
Zm9jdXNSaW5nUGF0aCk7CisgICAgQ0dQYXRoUmVsZWFzZShmb2N1c1JpbmdQYXRoKTsKIH0KIAog
c3RhdGljIGlubGluZSB2b2lkIF9maWxsUmVjdFhYKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHcs
IGZsb2F0IGgsIGNvbnN0IENvbG9yJiBjb2wpOwpAQCAtODgzLDYyICs4ODAsMzUgQEAKICAgICBp
ZiAoZGF0YS0+c3RhdGUucGFpbnRpbmdEaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIGNs
ZWFyRm9jdXNSaW5nKCk7CisgICAgZGF0YS0+Zm9jdXNSaW5nUGF0aCA9IENHUGF0aENyZWF0ZU11
dGFibGUoKTsKICAgICBkYXRhLT5mb2N1c1JpbmdXaWR0aCA9IHdpZHRoOwotICAgIGRhdGEtPmhh
c0ZvY3VzUmluZ0NvbG9yID0gZmFsc2U7CiAgICAgZGF0YS0+Zm9jdXNSaW5nT2Zmc2V0ID0gb2Zm
c2V0OwotICAgIGRhdGEtPmZvY3VzUmluZ1BhdGggPSBLV1FSZXRhaW5OU1JlbGVhc2UoW1tOU0Jl
emllclBhdGggYWxsb2NdIGluaXRdKTsKLSAgICBbZGF0YS0+Zm9jdXNSaW5nUGF0aCBzZXRXaW5k
aW5nUnVsZTpOU05vblplcm9XaW5kaW5nUnVsZV07CiB9CiAKLXZvaWQgUVBhaW50ZXI6OmluaXRG
b2N1c1JpbmcoaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciAmY29sb3IpCi17Ci0g
ICAgaWYgKGRhdGEtPnN0YXRlLnBhaW50aW5nRGlzYWJsZWQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpbml0Rm9jdXNSaW5nKHdpZHRoLCBvZmZzZXQpOwotICAgIGRhdGEtPmhhc0ZvY3VzUmluZ0Nv
bG9yID0gdHJ1ZTsKLSAgICBkYXRhLT5mb2N1c1JpbmdDb2xvciA9IGNvbG9yOwotfQotCiB2b2lk
IFFQYWludGVyOjphZGRGb2N1c1JpbmdSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogewogICAgIGlmIChkYXRhLT5zdGF0ZS5wYWludGluZ0Rpc2FibGVkKQogICAgICAg
ICByZXR1cm47Ci0gICAgQVNTRVJUKGRhdGEtPmZvY3VzUmluZ1BhdGgpOwotICAgIE5TUmVjdCBy
ZWN0ID0gTlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBpbnQgb2Zmc2V0ID0g
KGRhdGEtPmZvY3VzUmluZ1dpZHRoLTEpLzIgKyBkYXRhLT5mb2N1c1JpbmdPZmZzZXQ7Ci0gICAg
cmVjdCA9IE5TSW5zZXRSZWN0KHJlY3QsIC1vZmZzZXQsIC1vZmZzZXQpOwotICAgIFtkYXRhLT5m
b2N1c1JpbmdQYXRoIGFwcGVuZEJlemllclBhdGhXaXRoUmVjdDpyZWN0XTsKKyAgICBpbnQgcmFk
aXVzID0gKGRhdGEtPmZvY3VzUmluZ1dpZHRoIC0gMSkgLyAyOworICAgIGludCBvZmZzZXQgPSBy
YWRpdXMgKyBkYXRhLT5mb2N1c1JpbmdPZmZzZXQ7CisgICAgQ0dQYXRoQWRkUmVjdChkYXRhLT5m
b2N1c1JpbmdQYXRoLCAwLCBDR1JlY3RJbnNldChDR1JlY3RNYWtlKHgsIHksIHdpZHRoLCBoZWln
aHQpLCAtb2Zmc2V0LCAtb2Zmc2V0KSk7CiB9CiAKLXZvaWQgUVBhaW50ZXI6OmRyYXdGb2N1c1Jp
bmcoKQordm9pZCBRUGFpbnRlcjo6ZHJhd0ZvY3VzUmluZyhjb25zdCBDb2xvciYgY29sb3IpCiB7
CiAgICAgaWYgKGRhdGEtPnN0YXRlLnBhaW50aW5nRGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsK
LQogICAgIEFTU0VSVChkYXRhLT5mb2N1c1JpbmdQYXRoKTsKLQotICAgIGlmIChbZGF0YS0+Zm9j
dXNSaW5nUGF0aCBlbGVtZW50Q291bnRdID09IDApIHsKLSAgICAgICAgTE9HX0VSUk9SKCJSZXF1
ZXN0IHRvIGRyYXcgZm9jdXMgcmluZyB3aXRoIG5vIGNvbnRyb2wgcG9pbnRzIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgTlNSZWN0IGJvdW5kcyA9IFtkYXRhLT5mb2N1c1Jp
bmdQYXRoIGJvdW5kc107Ci0gICAgaWYgKCFOU0lzRW1wdHlSZWN0KGJvdW5kcykpIHsKLSAgICAg
ICAgaW50IHJhZGl1cyA9IChkYXRhLT5mb2N1c1JpbmdXaWR0aC0xKS8yOwotICAgICAgICBOU0Nv
bG9yICpjb2xvciA9IGRhdGEtPmhhc0ZvY3VzUmluZ0NvbG9yID8gbnNDb2xvcihkYXRhLT5mb2N1
c1JpbmdDb2xvcikgOiBuaWw7Ci0gICAgICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzYXZlR3JhcGhp
Y3NTdGF0ZV07Ci0gICAgICAgIFtbV2ViQ29yZUdyYXBoaWNzQnJpZGdlIHNoYXJlZEJyaWRnZV0g
c2V0Rm9jdXNSaW5nU3R5bGU6TlNGb2N1c1JpbmdPbmx5IHJhZGl1czpyYWRpdXMgY29sb3I6Y29s
b3JdOwotICAgICAgICBbZGF0YS0+Zm9jdXNSaW5nUGF0aCBmaWxsXTsKLSAgICAgICAgW05TR3Jh
cGhpY3NDb250ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRlXTsgICAKLSAgICB9CisgICAgaW50IHJh
ZGl1cyA9IChkYXRhLT5mb2N1c1JpbmdXaWR0aCAtIDEpIC8gMjsKKyAgICBDR0NvbG9yUmVmIGNv
bG9yUmVmID0gY29sb3IuaXNWYWxpZCgpID8gY2dDb2xvcihjb2xvcikgOiAwOworICAgIFtbV2Vi
Q29yZUdyYXBoaWNzQnJpZGdlIHNoYXJlZEJyaWRnZV0gZHJhd0ZvY3VzUmluZ1dpdGhQYXRoOmRh
dGEtPmZvY3VzUmluZ1BhdGggcmFkaXVzOnJhZGl1cyBjb2xvcjpjb2xvclJlZl07CisgICAgQ0dD
b2xvclJlbGVhc2UoY29sb3JSZWYpOwogfQogCiB2b2lkIFFQYWludGVyOjpjbGVhckZvY3VzUmlu
ZygpCiB7Ci0gICAgaWYgKGRhdGEtPmZvY3VzUmluZ1BhdGgpIHsKLSAgICAgICAgS1dRUmVsZWFz
ZShkYXRhLT5mb2N1c1JpbmdQYXRoKTsKLSAgICAgICAgZGF0YS0+Zm9jdXNSaW5nUGF0aCA9IG5p
bDsKLSAgICB9CisgICAgQ0dQYXRoUmVsZWFzZShkYXRhLT5mb2N1c1JpbmdQYXRoKTsKKyAgICBk
YXRhLT5mb2N1c1JpbmdQYXRoID0gMDsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9rd3EvV2ViQ29y
ZUdyYXBoaWNzQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rd3EvV2ViQ29yZUdyYXBo
aWNzQnJpZGdlLmgJKHJldmlzaW9uIDEyODk5KQorKysgV2ViQ29yZS9rd3EvV2ViQ29yZUdyYXBo
aWNzQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsy
OCw3IEBACiBAaW50ZXJmYWNlIFdlYkNvcmVHcmFwaGljc0JyaWRnZSA6IE5TT2JqZWN0CiAKICsg
KFdlYkNvcmVHcmFwaGljc0JyaWRnZSAqKXNoYXJlZEJyaWRnZTsKLS0gKHZvaWQpc2V0Rm9jdXNS
aW5nU3R5bGU6KE5TRm9jdXNSaW5nUGxhY2VtZW50KXBsYWNlbWVudCByYWRpdXM6KGludClyYWRp
dXMgY29sb3I6KE5TQ29sb3IgKiljb2xvcjsKKy0gKHZvaWQpZHJhd0ZvY3VzUmluZ1dpdGhQYXRo
OihDR1BhdGhSZWYpcGF0aCByYWRpdXM6KGZsb2F0KXJhZGl1cyBjb2xvcjooQ0dDb2xvclJlZilj
b2xvcjsKIC0gKHZvaWQpc2V0RHJhZ2dpbmdJbWFnZTooTlNJbWFnZSAqKWRyYWdJbWFnZSBhdDoo
TlNQb2ludClkcmFnTG9jOwogCiBAZW5kCkluZGV4OiBXZWJDb3JlL2t3cS9XZWJDb3JlR3JhcGhp
Y3NCcmlkZ2UubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2t3cS9XZWJDb3JlR3JhcGhpY3NCcmlk
Z2UubQkocmV2aXNpb24gMTI4OTkpCisrKyBXZWJDb3JlL2t3cS9XZWJDb3JlR3JhcGhpY3NCcmlk
Z2UubQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogICAgIHJldHVybiBzZWxmOwog
fQogCi0tICh2b2lkKXNldEZvY3VzUmluZ1N0eWxlOihOU0ZvY3VzUmluZ1BsYWNlbWVudClwbGFj
ZW1lbnQgcmFkaXVzOihpbnQpcmFkaXVzIGNvbG9yOihOU0NvbG9yICopY29sb3IKKy0gKHZvaWQp
ZHJhd0ZvY3VzUmluZ1dpdGhQYXRoOihDR1BhdGhSZWYpcGF0aCByYWRpdXM6KGZsb2F0KXJhZGl1
cyBjb2xvcjooQ0dDb2xvclJlZiljb2xvcgogewogfQogCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FQ
YWludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rd3EvS1dRUGFpbnRlci5oCShyZXZpc2lv
biAxMjg5OSkKKysrIFdlYkNvcmUva3dxL0tXUVBhaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQwLDkgKzE0MCw4IEBACiAgICAgdm9pZCBjbGVhclNoYWRvdygpOwogCiAgICAgdm9pZCBpbml0
Rm9jdXNSaW5nKGludCB3aWR0aCwgaW50IG9mZnNldCk7Ci0gICAgdm9pZCBpbml0Rm9jdXNSaW5n
KGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIGFkZEZvY3Vz
UmluZ1JlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIHZvaWQg
ZHJhd0ZvY3VzUmluZygpOworICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBDb2xvciYpOwog
ICAgIHZvaWQgY2xlYXJGb2N1c1JpbmcoKTsKICAgICAKICNpZiBfX0FQUExFX18KSW5kZXg6IFdl
YktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRnZS5tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRnZS5tCShyZXZpc2lvbiAxMjg5OSkK
KysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRnZS5tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsOSArNDYsMjEgQEAKICAgICByZXR1cm4gKFdl
YkdyYXBoaWNzQnJpZGdlICopW3N1cGVyIHNoYXJlZEJyaWRnZV07CiB9CiAKLS0gKHZvaWQpc2V0
Rm9jdXNSaW5nU3R5bGU6KE5TRm9jdXNSaW5nUGxhY2VtZW50KXBsYWNlbWVudCByYWRpdXM6KGlu
dClyYWRpdXMgY29sb3I6KE5TQ29sb3IgKiljb2xvcgorLSAodm9pZClkcmF3Rm9jdXNSaW5nV2l0
aFBhdGg6KENHUGF0aFJlZilwYXRoIHJhZGl1czooZmxvYXQpcmFkaXVzIGNvbG9yOihDR0NvbG9y
UmVmKWNvbG9yCiB7Ci0gICAgV0tTZXRGb2N1c1JpbmdTdHlsZShwbGFjZW1lbnQsIHJhZGl1cywg
Y29sb3IpOworICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gW1tOU0dyYXBoaWNzQ29udGV4dCBj
dXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XTsKKworICAgIE5TVmlldyAqdmlldyA9IFtOU1Zp
ZXcgZm9jdXNWaWV3XTsKKyAgICBjb25zdCBOU1JlY3QgKnJlY3RzOworICAgIGludCBjb3VudDsK
KyAgICBbdmlldyBnZXRSZWN0c0JlaW5nRHJhd246JnJlY3RzIGNvdW50OiZjb3VudF07CisKKyAg
ICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY29udGV4dCk7CisgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4
dCwgcGF0aCk7CisgICAgICAgIFdLRHJhd0ZvY3VzUmluZyhjb250ZXh0LCAqKENHUmVjdCAqKSZy
ZWN0c1tpXSwgY29sb3IsIHJhZGl1cyk7CisgICAgfQogfQogCiAvLyBEYXNoYm9hcmQgd2FudHMg
dG8gc2V0IHRoZSBkcmFnIGltYWdlIGR1cmluZyBkcmFnZ2luZywgYnV0IENvY29hIGRvZXMgbm90
IGFsbG93IHRoaXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6632</attachid>
            <date>2006-02-20 17:29:20 -0800</date>
            <delta_ts>2006-02-20 17:29:20 -0800</delta_ts>
            <desc>fixed patch</desc>
            <filename>FocusPatch2.txt</filename>
            <type>text/plain</type>
            <size>8442</size>
            <attacher name="Graham Dennis">Graham.Dennis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRnZS5tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRnZS5tCShyZXZpc2lv
biAxMjkwMykKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0JyaWRnZS5tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsOSArNDYsMjIgQEAKICAgICBy
ZXR1cm4gKFdlYkdyYXBoaWNzQnJpZGdlICopW3N1cGVyIHNoYXJlZEJyaWRnZV07CiB9CiAKLS0g
KHZvaWQpc2V0Rm9jdXNSaW5nU3R5bGU6KE5TRm9jdXNSaW5nUGxhY2VtZW50KXBsYWNlbWVudCBy
YWRpdXM6KGludClyYWRpdXMgY29sb3I6KE5TQ29sb3IgKiljb2xvcgorLSAodm9pZClkcmF3Rm9j
dXNSaW5nV2l0aFBhdGg6KENHUGF0aFJlZilwYXRoIHJhZGl1czooZmxvYXQpcmFkaXVzIGNvbG9y
OihDR0NvbG9yUmVmKWNvbG9yCiB7Ci0gICAgV0tTZXRGb2N1c1JpbmdTdHlsZShwbGFjZW1lbnQs
IHJhZGl1cywgY29sb3IpOworICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gW1tOU0dyYXBoaWNz
Q29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XTsKKworICAgIE5TVmlldyAqdmll
dyA9IFtOU1ZpZXcgZm9jdXNWaWV3XTsKKyAgICBjb25zdCBOU1JlY3QgKnJlY3RzOworICAgIGlu
dCBjb3VudDsKKyAgICBbdmlldyBnZXRSZWN0c0JlaW5nRHJhd246JnJlY3RzIGNvdW50OiZjb3Vu
dF07CisKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAg
ICAgICBOU1JlY3QgdHJhbnNmb3JtZWRSZWN0ID0gW3ZpZXcgY29udmVydFJlY3Q6cmVjdHNbaV0g
dG9WaWV3Om5pbF07CisgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKKyAgICAg
ICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBwYXRoKTsKKyAgICAgICAgV0tEcmF3Rm9jdXNS
aW5nKGNvbnRleHQsICooQ0dSZWN0ICopJnRyYW5zZm9ybWVkUmVjdCwgY29sb3IsIHJhZGl1cyk7
CisgICAgfQogfQogCiAvLyBEYXNoYm9hcmQgd2FudHMgdG8gc2V0IHRoZSBkcmFnIGltYWdlIGR1
cmluZyBkcmFnZ2luZywgYnV0IENvY29hIGRvZXMgbm90IGFsbG93IHRoaXMuCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9yZW5kZXJfZmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvcmVuZGVyX2Zsb3cuY3BwCShyZXZpc2lvbiAxMjkwMykKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL3JlbmRlcl9mbG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgyLDkgKzY4Miw5IEBAIHZv
aWQgUmVuZGVyRmxvdzo6cGFpbnRGb2N1c1JpbmcoUVBhaW50ZXIKICAgICBpZiAoIW9jLmlzVmFs
aWQoKSkKICAgICAgICAgb2MgPSBzdHlsZSgpLT5jb2xvcigpOwogICAgIAotICAgIHAtPmluaXRG
b2N1c1Jpbmcob3csICBzdHlsZSgpLT5vdXRsaW5lT2Zmc2V0KCksIG9jKTsKKyAgICBwLT5pbml0
Rm9jdXNSaW5nKG93LCAgc3R5bGUoKS0+b3V0bGluZU9mZnNldCgpKTsKICAgICBhZGRGb2N1c1Jp
bmdSZWN0cyhwLCB0eCwgdHkpOwotICAgIHAtPmRyYXdGb2N1c1JpbmcoKTsKKyAgICBwLT5kcmF3
Rm9jdXNSaW5nKG9jKTsKICAgICBwLT5jbGVhckZvY3VzUmluZygpOwogfQogCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAkocmV2aXNpb24gMTI5MDMpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1Myw5ICsxMzUz
LDkgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShRUGFpbnRlcgogICAgIGlmIChz
dHlsZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkpIHsKICAgICAgICAgaWYgKCF0aGVtZSgpLT5zdXBw
b3J0c0ZvY3VzUmluZyhzdHlsZSkpIHsKICAgICAgICAgICAgIC8vIE9ubHkgcGFpbnQgdGhlIGZv
Y3VzIHJpbmcgYnkgaGFuZCBpZiB0aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IHRoZSBmb2N1
cyByaW5nLgotICAgICAgICAgICAgcC0+aW5pdEZvY3VzUmluZyhvdywgb2Zmc2V0LCBvYyk7Cisg
ICAgICAgICAgICBwLT5pbml0Rm9jdXNSaW5nKG93LCBvZmZzZXQpOwogICAgICAgICAgICAgYWRk
Rm9jdXNSaW5nUmVjdHMocCwgX3R4LCBfdHkpOwotICAgICAgICAgICAgcC0+ZHJhd0ZvY3VzUmlu
ZygpOworICAgICAgICAgICAgcC0+ZHJhd0ZvY3VzUmluZyhvYyk7CiAgICAgICAgICAgICBwLT5j
bGVhckZvY3VzUmluZygpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNv
cmUva3dxL0tXUVBhaW50ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rd3EvS1dRUGFpbnRl
ci5tbQkocmV2aXNpb24gMTI5MDMpCisrKyBXZWJDb3JlL2t3cS9LV1FQYWludGVyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSwyNiArNzEsMjMgQEAgc3RydWN0IFFQYWludGVyUHJpdmF0ZSB7CiAg
ICAgVmVjdG9yPFFQU3RhdGU+IHN0YWNrOwogICAgIGlkIDxXZWJDb3JlVGV4dFJlbmRlcmVyPiB0
ZXh0UmVuZGVyZXI7CiAgICAgUUZvbnQgdGV4dFJlbmRlcmVyRm9udDsKLSAgICBOU0JlemllclBh
dGggKmZvY3VzUmluZ1BhdGg7CisgICAgQ0dNdXRhYmxlUGF0aFJlZiBmb2N1c1JpbmdQYXRoOwog
ICAgIGludCBmb2N1c1JpbmdXaWR0aDsKICAgICBpbnQgZm9jdXNSaW5nT2Zmc2V0OwotICAgIGJv
b2wgaGFzRm9jdXNSaW5nQ29sb3I7Ci0gICAgQ29sb3IgZm9jdXNSaW5nQ29sb3I7CiAjaWYgU1ZH
X1NVUFBPUlQKICAgICBLUmVuZGVyaW5nRGV2aWNlICpyZW5kZXJpbmdEZXZpY2U7CiAjZW5kaWYK
IH07CiAKLVFQYWludGVyUHJpdmF0ZTo6UVBhaW50ZXJQcml2YXRlKCkgOiB0ZXh0UmVuZGVyZXIo
MCksIGZvY3VzUmluZ1BhdGgoMCksIGZvY3VzUmluZ1dpZHRoKDApLCBmb2N1c1JpbmdPZmZzZXQo
MCksCi0gICAgICAgICAgICAgICAgICAgICAgICBoYXNGb2N1c1JpbmdDb2xvcihmYWxzZSkKK1FQ
YWludGVyUHJpdmF0ZTo6UVBhaW50ZXJQcml2YXRlKCkKKyAgICA6IHRleHRSZW5kZXJlcigwKSwg
Zm9jdXNSaW5nUGF0aCgwKSwgZm9jdXNSaW5nV2lkdGgoMCksIGZvY3VzUmluZ09mZnNldCgwKQog
ewotCiB9CiAKIFFQYWludGVyUHJpdmF0ZTo6flFQYWludGVyUHJpdmF0ZSgpCiB7CiAgICAgS1dR
UmVsZWFzZSh0ZXh0UmVuZGVyZXIpOwotICAgIEtXUVJlbGVhc2UoZm9jdXNSaW5nUGF0aCk7Cisg
ICAgQ0dQYXRoUmVsZWFzZShmb2N1c1JpbmdQYXRoKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lk
IF9maWxsUmVjdFhYKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHcsIGZsb2F0IGgsIGNvbnN0IENv
bG9yJiBjb2wpOwpAQCAtODgzLDYyICs4ODAsMzUgQEAgdm9pZCBRUGFpbnRlcjo6aW5pdEZvY3Vz
UmluZyhpbnQgd2lkdGgsIAogICAgIGlmIChkYXRhLT5zdGF0ZS5wYWludGluZ0Rpc2FibGVkKQog
ICAgICAgICByZXR1cm47CiAgICAgY2xlYXJGb2N1c1JpbmcoKTsKKyAgICBkYXRhLT5mb2N1c1Jp
bmdQYXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwogICAgIGRhdGEtPmZvY3VzUmluZ1dpZHRo
ID0gd2lkdGg7Ci0gICAgZGF0YS0+aGFzRm9jdXNSaW5nQ29sb3IgPSBmYWxzZTsKICAgICBkYXRh
LT5mb2N1c1JpbmdPZmZzZXQgPSBvZmZzZXQ7Ci0gICAgZGF0YS0+Zm9jdXNSaW5nUGF0aCA9IEtX
UVJldGFpbk5TUmVsZWFzZShbW05TQmV6aWVyUGF0aCBhbGxvY10gaW5pdF0pOwotICAgIFtkYXRh
LT5mb2N1c1JpbmdQYXRoIHNldFdpbmRpbmdSdWxlOk5TTm9uWmVyb1dpbmRpbmdSdWxlXTsKLX0K
LQotdm9pZCBRUGFpbnRlcjo6aW5pdEZvY3VzUmluZyhpbnQgd2lkdGgsIGludCBvZmZzZXQsIGNv
bnN0IENvbG9yICZjb2xvcikKLXsKLSAgICBpZiAoZGF0YS0+c3RhdGUucGFpbnRpbmdEaXNhYmxl
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGluaXRGb2N1c1Jpbmcod2lkdGgsIG9mZnNldCk7Ci0g
ICAgZGF0YS0+aGFzRm9jdXNSaW5nQ29sb3IgPSB0cnVlOwotICAgIGRhdGEtPmZvY3VzUmluZ0Nv
bG9yID0gY29sb3I7CiB9CiAKIHZvaWQgUVBhaW50ZXI6OmFkZEZvY3VzUmluZ1JlY3QoaW50IHgs
IGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaWYgKGRhdGEtPnN0YXRlLnBh
aW50aW5nRGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoZGF0YS0+Zm9jdXNS
aW5nUGF0aCk7Ci0gICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KHgsIHksIHdpZHRoLCBoZWln
aHQpOwotICAgIGludCBvZmZzZXQgPSAoZGF0YS0+Zm9jdXNSaW5nV2lkdGgtMSkvMiArIGRhdGEt
PmZvY3VzUmluZ09mZnNldDsKLSAgICByZWN0ID0gTlNJbnNldFJlY3QocmVjdCwgLW9mZnNldCwg
LW9mZnNldCk7Ci0gICAgW2RhdGEtPmZvY3VzUmluZ1BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhS
ZWN0OnJlY3RdOworICAgIGludCByYWRpdXMgPSAoZGF0YS0+Zm9jdXNSaW5nV2lkdGggLSAxKSAv
IDI7CisgICAgaW50IG9mZnNldCA9IHJhZGl1cyArIGRhdGEtPmZvY3VzUmluZ09mZnNldDsKKyAg
ICBDR1BhdGhBZGRSZWN0KGRhdGEtPmZvY3VzUmluZ1BhdGgsIDAsIENHUmVjdEluc2V0KENHUmVj
dE1ha2UoeCwgeSwgd2lkdGgsIGhlaWdodCksIC1vZmZzZXQsIC1vZmZzZXQpKTsKIH0KIAotdm9p
ZCBRUGFpbnRlcjo6ZHJhd0ZvY3VzUmluZygpCit2b2lkIFFQYWludGVyOjpkcmF3Rm9jdXNSaW5n
KGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoZGF0YS0+c3RhdGUucGFpbnRpbmdEaXNh
YmxlZCkKICAgICAgICAgcmV0dXJuOwotCiAgICAgQVNTRVJUKGRhdGEtPmZvY3VzUmluZ1BhdGgp
OwotCi0gICAgaWYgKFtkYXRhLT5mb2N1c1JpbmdQYXRoIGVsZW1lbnRDb3VudF0gPT0gMCkgewot
ICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZHJhdyBmb2N1cyByaW5nIHdpdGggbm8gY29u
dHJvbCBwb2ludHMiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBOU1JlY3Qg
Ym91bmRzID0gW2RhdGEtPmZvY3VzUmluZ1BhdGggYm91bmRzXTsKLSAgICBpZiAoIU5TSXNFbXB0
eVJlY3QoYm91bmRzKSkgewotICAgICAgICBpbnQgcmFkaXVzID0gKGRhdGEtPmZvY3VzUmluZ1dp
ZHRoLTEpLzI7Ci0gICAgICAgIE5TQ29sb3IgKmNvbG9yID0gZGF0YS0+aGFzRm9jdXNSaW5nQ29s
b3IgPyBuc0NvbG9yKGRhdGEtPmZvY3VzUmluZ0NvbG9yKSA6IG5pbDsKLSAgICAgICAgW05TR3Jh
cGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKLSAgICAgICAgW1tXZWJDb3JlR3JhcGhp
Y3NCcmlkZ2Ugc2hhcmVkQnJpZGdlXSBzZXRGb2N1c1JpbmdTdHlsZTpOU0ZvY3VzUmluZ09ubHkg
cmFkaXVzOnJhZGl1cyBjb2xvcjpjb2xvcl07Ci0gICAgICAgIFtkYXRhLT5mb2N1c1JpbmdQYXRo
IGZpbGxdOwotICAgICAgICBbTlNHcmFwaGljc0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVd
OyAgIAotICAgIH0KKyAgICBpbnQgcmFkaXVzID0gKGRhdGEtPmZvY3VzUmluZ1dpZHRoIC0gMSkg
LyAyOworICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xvci5pc1ZhbGlkKCkgPyBjZ0NvbG9y
KGNvbG9yKSA6IDA7CisgICAgW1tXZWJDb3JlR3JhcGhpY3NCcmlkZ2Ugc2hhcmVkQnJpZGdlXSBk
cmF3Rm9jdXNSaW5nV2l0aFBhdGg6ZGF0YS0+Zm9jdXNSaW5nUGF0aCByYWRpdXM6cmFkaXVzIGNv
bG9yOmNvbG9yUmVmXTsKKyAgICBDR0NvbG9yUmVsZWFzZShjb2xvclJlZik7CiB9CiAKIHZvaWQg
UVBhaW50ZXI6OmNsZWFyRm9jdXNSaW5nKCkKIHsKLSAgICBpZiAoZGF0YS0+Zm9jdXNSaW5nUGF0
aCkgewotICAgICAgICBLV1FSZWxlYXNlKGRhdGEtPmZvY3VzUmluZ1BhdGgpOwotICAgICAgICBk
YXRhLT5mb2N1c1JpbmdQYXRoID0gbmlsOwotICAgIH0KKyAgICBDR1BhdGhSZWxlYXNlKGRhdGEt
PmZvY3VzUmluZ1BhdGgpOworICAgIGRhdGEtPmZvY3VzUmluZ1BhdGggPSAwOwogfQogCiB9Cklu
ZGV4OiBXZWJDb3JlL2t3cS9XZWJDb3JlR3JhcGhpY3NCcmlkZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2t3cS9XZWJDb3JlR3JhcGhpY3NCcmlkZ2UuaAkocmV2aXNpb24gMTI5MDMpCisrKyBX
ZWJDb3JlL2t3cS9XZWJDb3JlR3JhcGhpY3NCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDcgQEAKIEBpbnRlcmZhY2UgV2ViQ29yZUdyYXBoaWNz
QnJpZGdlIDogTlNPYmplY3QKIAogKyAoV2ViQ29yZUdyYXBoaWNzQnJpZGdlICopc2hhcmVkQnJp
ZGdlOwotLSAodm9pZClzZXRGb2N1c1JpbmdTdHlsZTooTlNGb2N1c1JpbmdQbGFjZW1lbnQpcGxh
Y2VtZW50IHJhZGl1czooaW50KXJhZGl1cyBjb2xvcjooTlNDb2xvciAqKWNvbG9yOworLSAodm9p
ZClkcmF3Rm9jdXNSaW5nV2l0aFBhdGg6KENHUGF0aFJlZilwYXRoIHJhZGl1czooZmxvYXQpcmFk
aXVzIGNvbG9yOihDR0NvbG9yUmVmKWNvbG9yOwogLSAodm9pZClzZXREcmFnZ2luZ0ltYWdlOihO
U0ltYWdlICopZHJhZ0ltYWdlIGF0OihOU1BvaW50KWRyYWdMb2M7CiAKIEBlbmQKSW5kZXg6IFdl
YkNvcmUva3dxL1dlYkNvcmVHcmFwaGljc0JyaWRnZS5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3dxL1dlYkNvcmVHcmFwaGljc0JyaWRnZS5tCShyZXZpc2lvbiAxMjkwMykKKysrIFdlYkNvcmUv
a3dxL1dlYkNvcmVHcmFwaGljc0JyaWRnZS5tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3
IEBAIHN0YXRpYyBXZWJDb3JlR3JhcGhpY3NCcmlkZ2UgKnNoYXJlZEJyaWQKICAgICByZXR1cm4g
c2VsZjsKIH0KIAotLSAodm9pZClzZXRGb2N1c1JpbmdTdHlsZTooTlNGb2N1c1JpbmdQbGFjZW1l
bnQpcGxhY2VtZW50IHJhZGl1czooaW50KXJhZGl1cyBjb2xvcjooTlNDb2xvciAqKWNvbG9yCist
ICh2b2lkKWRyYXdGb2N1c1JpbmdXaXRoUGF0aDooQ0dQYXRoUmVmKXBhdGggcmFkaXVzOihmbG9h
dClyYWRpdXMgY29sb3I6KENHQ29sb3JSZWYpY29sb3IKIHsKIH0KIApJbmRleDogV2ViQ29yZS9r
d3EvS1dRUGFpbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3dxL0tXUVBhaW50ZXIuaAko
cmV2aXNpb24gMTI5MDMpCisrKyBXZWJDb3JlL2t3cS9LV1FQYWludGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MCw5ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclNoYWRvdygpOwog
CiAgICAgdm9pZCBpbml0Rm9jdXNSaW5nKGludCB3aWR0aCwgaW50IG9mZnNldCk7Ci0gICAgdm9p
ZCBpbml0Rm9jdXNSaW5nKGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgQ29sb3ImKTsKICAg
ICB2b2lkIGFkZEZvY3VzUmluZ1JlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWln
aHQpOwotICAgIHZvaWQgZHJhd0ZvY3VzUmluZygpOworICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhj
b25zdCBDb2xvciYpOwogICAgIHZvaWQgY2xlYXJGb2N1c1JpbmcoKTsKICAgICAKICNpZiBfX0FQ
UExFX18K
</data>

          </attachment>
      

    </bug>

</bugzilla>