<?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>150740</bug_id>
          
          <creation_ts>2015-10-30 16:45:40 -0700</creation_ts>
          <short_desc>Link preview doesn&apos;t work on XHTML pages with Content-Type header as `application/xhtml+xml`</short_desc>
          <delta_ts>2015-11-04 14:36:43 -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>WebKit2</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138038</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-10-30 16:45:40 -0700</bug_when>
    <thetext>Link preview doesn&apos;t work on XHTML pages with Content-Type header as `application/xhtml+xml`

rdar://problem/23063585</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138042</commentid>
    <comment_count>1</comment_count>
      <attachid>264441</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-10-30 16:48:01 -0700</bug_when>
    <thetext>Created attachment 264441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138045</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-30 16:50:32 -0700</bug_when>
    <thetext>Attachment 264441 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1051:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1053:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3434:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 3 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138046</commentid>
    <comment_count>3</comment_count>
      <attachid>264442</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-10-30 16:52:03 -0700</bug_when>
    <thetext>Created attachment 264442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138047</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-30 16:53:27 -0700</bug_when>
    <thetext>Attachment 264442 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1051:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138049</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-10-30 17:00:40 -0700</bug_when>
    <thetext>Thanks Tim! http://trac.webkit.org/changeset/191830</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138064</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-10-30 17:44:54 -0700</bug_when>
    <thetext>Is it really correct to just check the tag name, or is this one of those cases where XML namespaces should be taken into account?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138222</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-31 15:40:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Is it really correct to just check the tag name, or is this one of those
&gt; cases where XML namespaces should be taken into account?

I was planning to comment on that but had lost track of this bug. Thanks for drawing my attention back here! As Dan implies, this new code is incorrect in the presence of non-HTML elements that happen to have the same local name as HTML elements.

This clickableElementName field is apparently a copy of the DOM nodeName attribute, shipped across processes. We can’t use nodeName alone to check if something is a particular HTML element.

If our intent is to use this attribute to check if something is a particular HTML element, then I suggest we replace this code:

    info.clickableElementName = hitNode-&gt;nodeName();

With something more like this:

    if (is&lt;HTMLElement&gt;(*hitNode))
        info.clickableElementName = downcast&lt;HTMLElement&gt;(*hitNode).localName();

This will always be lowercase, and so there will be no need to fold case on the UI process side.

If it happens that we want to use this for SVG elements as well, and there is also no practical concern about collision between HTML and SVG local names (I think there are very few such collisions), then it could instead be this:

    if (is&lt;HTMLElement&gt;(*hitNode) || is&lt;SVGElement&gt;(*hitNode))
        info.clickableElementName = downcast&lt;Element&gt;(*hitNode).localName();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138336</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-11-01 11:44:34 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Is it really correct to just check the tag name, or is this one of those
&gt; &gt; cases where XML namespaces should be taken into account?
&gt; 
&gt; I was planning to comment on that but had lost track of this bug. Thanks for
&gt; drawing my attention back here! As Dan implies, this new code is incorrect
&gt; in the presence of non-HTML elements that happen to have the same local name
&gt; as HTML elements.
&gt; 
&gt; This clickableElementName field is apparently a copy of the DOM nodeName
&gt; attribute, shipped across processes. We can’t use nodeName alone to check if
&gt; something is a particular HTML element.
&gt; 
&gt; If our intent is to use this attribute to check if something is a particular
&gt; HTML element, then I suggest we replace this code:
&gt; 
&gt;     info.clickableElementName = hitNode-&gt;nodeName();
&gt; 
&gt; With something more like this:
&gt; 
&gt;     if (is&lt;HTMLElement&gt;(*hitNode))
&gt;         info.clickableElementName =
&gt; downcast&lt;HTMLElement&gt;(*hitNode).localName();
&gt; 
&gt; This will always be lowercase, and so there will be no need to fold case on
&gt; the UI process side.
&gt; 
&gt; If it happens that we want to use this for SVG elements as well, and there
&gt; is also no practical concern about collision between HTML and SVG local
&gt; names (I think there are very few such collisions), then it could instead be
&gt; this:
&gt; 
&gt;     if (is&lt;HTMLElement&gt;(*hitNode) || is&lt;SVGElement&gt;(*hitNode))
&gt;         info.clickableElementName = downcast&lt;Element&gt;(*hitNode).localName();

Thanks Darin and Dan! I will fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138337</commentid>
    <comment_count>9</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-11-01 11:45:13 -0800</bug_when>
    <thetext>Marking as &quot;reopened&quot; based on the information Darin and Dan provided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138342</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-01 12:24:40 -0800</bug_when>
    <thetext>One other thought. Since the check in the UI process is for two specific types of elements, we might want to come up with a more precise way of doing that rather than using element local names at all. Instead of a string, we could pass over the exact computed values that the UI process needs.

My first cut might be an &quot;is link&quot; boolean and an &quot;is image&quot; boolean. Then you have to decide exactly what definition of &quot;link&quot; and what definition of &quot;image&quot; you want, but that might actually make things work better, rather than worse, helping distinguish &lt;a&gt; elements that are not actually links, and make it easier to make SVG links and images work as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138575</commentid>
    <comment_count>11</comment_count>
      <attachid>264594</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-11-02 08:55:35 -0800</bug_when>
    <thetext>Created attachment 264594
Follow-up fix for non-ascii URLs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138579</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-11-02 09:19:17 -0800</bug_when>
    <thetext>Wrong bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138591</commentid>
    <comment_count>13</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-11-02 10:03:46 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Wrong bug?

😁 yes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139030</commentid>
    <comment_count>14</comment_count>
      <attachid>264713</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-11-03 12:42:25 -0800</bug_when>
    <thetext>Created attachment 264713
Patch to fix remaining bug, clean things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139105</commentid>
    <comment_count>15</comment_count>
      <attachid>264713</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-03 14:54:24 -0800</bug_when>
    <thetext>Comment on attachment 264713
Patch to fix remaining bug, clean things

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

&gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:2182
&gt; +            info.clickableElementName = element-&gt;localName();

Can we remove clickableElementName entirely? If not, what code is using it? Is the localName usable without knowing that it’s in the HTML namespace, SVG namespace, or another? I’d expect it would not be sufficient on its own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139193</commentid>
    <comment_count>16</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-11-03 16:55:20 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 264713 [details]
&gt; Patch to fix remaining bug, clean things
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264713&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:2182
&gt; &gt; +            info.clickableElementName = element-&gt;localName();
&gt; 
&gt; Can we remove clickableElementName entirely? If not, what code is using it?

Good question. I did consider this, and it is used in two places still. It is not necessarily perfect for either of those places, but isLink() and isImage() are not sufficient substitutes either.

First, it is used very when the _highlightLongPressGestureRecognizer begins to recognize. So long as the clickableElementName is not null, the gesture is allowed. 

Second it is used when the _highlightLongPressGestureRecognizer ends before a normal long press recognizes. At that time, if clickableElementName is not empty, then we will attempt a click at the location. So it is a minor optimization to prevent attempting a click 

&gt; Is the localName usable without knowing that it’s in the HTML namespace, SVG
&gt; namespace, or another? I’d expect it would not be sufficient on its own.

Since it is only used at this time as a way to determine if an element was hit, I believe that the lack of a namespace is not a problem. However, it does bug me that this might not be right if it was used for another purpose, and it bugs me that we store a string to decide whether or not something is an element. Is there ever a time that you could HitTest an Element but it&apos;s localName would be null or empty? I don&apos;t think there is. Maybe clickableElement should be a bool too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139338</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-04 08:41:09 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Maybe clickableElement should be a bool too.

Yes, I think that’s the answer. We should change it from a string to a bool.

Everything you are saying makes sense. As far as I can tell from what you say, there’s no incorrect behavior in the code as it stands. But it’s not valuable to send over a name to simply convey the boolean “is a clickable element” state. I don’t think there’s anything correct we could do with the name alone other than check it for null/empty. Just temptation to use it incorrectly for future programmers!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139339</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-04 08:44:57 -0800</bug_when>
    <thetext>Another thought:

I don’t really know in what practical case I would not be over any element. Maybe it’s true past the bottom of the document? I think we’d almost always be over the body element if nothing else.

Given that, I’m not sure it’s valuable for us to prevent the gesture when not over an element. And I’m not sure it’s valuable for us to prevent clicks when not over an element.

To word it another way: How did we test the “not over an element” case?

If I’m right, we can probably just remove this entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139399</commentid>
    <comment_count>19</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-11-04 12:03:22 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Another thought:
&gt; 
&gt; I don’t really know in what practical case I would not be over any element.
&gt; Maybe it’s true past the bottom of the document? I think we’d almost always
&gt; be over the body element if nothing else.
&gt; 
&gt; Given that, I’m not sure it’s valuable for us to prevent the gesture when
&gt; not over an element. And I’m not sure it’s valuable for us to prevent clicks
&gt; when not over an element.
&gt; 
&gt; To word it another way: How did we test the “not over an element” case?
&gt; 
&gt; If I’m right, we can probably just remove this entirely.

Very interesting thoughts. So, it turns out that it is very possible to not be over an element. I think that in normal hit testing, you will always be over an element (I think). But! The hit-testing code path that this code uses is unique to iOS and does all kinds of filtering to look for something clickable/tappable -- see Frame::nodeRespondingToClickEvents(). Now, I don&apos;t understand the historical reasons for that instead of normal hit testing, and I don&apos;t know if those reasons are still valid. But changing that seems like a big enough change that it should be done separately and with more thought.

So for now, I think I will change clickableElementName to isClickableElement just for clarity.

It seems like a small enough change that I can just make it and check it, but I would be happy to post a new patch if you prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139446</commentid>
    <comment_count>20</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-11-04 14:36:43 -0800</bug_when>
    <thetext>I committed the change with the clickableElementName-&gt;isClickableElement change. Thanks  for the help! And let me know if you see some follow-up issues.

http://trac.webkit.org/changeset/192037</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264441</attachid>
            <date>2015-10-30 16:48:01 -0700</date>
            <delta_ts>2015-10-30 16:52:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>3619</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTgyNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTEwLTMwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBMaW5rIHByZXZpZXcgZG9lc24ndCB3
b3JrIG9uIFhIVE1MIHBhZ2VzIHdpdGggQ29udGVudC1UeXBlIGhlYWRlciBhcyAKKyAgICAgICAg
4oCYYXBwbGljYXRpb24veGh0bWwreG1s4oCZCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NDAKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQor
ICAgICAgICByZGFyOi8vcHJvYmxlbS8yMzA2MzU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciBYSFRNTCBwYWdlcywgdGhlIGVsZW1lbnQgbmFt
ZXMgYXJlIGxvd2VyY2FzZS4gVGhpcyBwYXRjaCB1c2VzIAorICAgICAgICBlcXVhbElnbm9yaW5n
Q2FzZSB0byBmaXggdGhlIGJ1Zy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWN0aW9uRm9yTG9u
Z1ByZXNzXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2ludGVyYWN0aW9uU2hvdWxkQmVn
aW5Gcm9tUHJldmlld0l0ZW1Db250cm9sbGVyOmZvclBvc2l0aW9uOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9kYXRhRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOmF0UG9zaXRpb246dHlw
ZTpdKToKKwogMjAxNS0xMC0zMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBXS1ZpZXcgYmVpbmcgaW5zaWRlIFdLV2ViVmlldyBsZWFkcyB0byB3ZWly
ZCBBUEkgaXNzdWVzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMTkxODA3KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEwNDgsOSArMTA0OCw5IEBAIC0gKFNFTClfYWN0aW9uRm9yTG9u
Z1ByZXNzCiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi50b3VjaENhbGxvdXRFbmFibGVk
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLmNs
aWNrYWJsZUVsZW1lbnROYW1lID09ICJJTUciKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShf
cG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVFbGVtZW50TmFtZSwgIklNRyIpKQogICAgICAg
ICByZXR1cm4gQHNlbGVjdG9yKF9zaG93SW1hZ2VTaGVldCk7Ci0gICAgZWxzZSBpZiAoX3Bvc2l0
aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxlbWVudE5hbWUgPT0gIkEiKSB7CisgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxlbWVu
dE5hbWUsIkEiKSkgewogICAgICAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6X3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsXTsKICAgICAgICAgaWYgKFtbZ2V0REREZXRl
Y3Rpb25Db250cm9sbGVyQ2xhc3MoKSB0YXBBbmRIb2xkU2NoZW1lc10gY29udGFpbnNPYmplY3Q6
W3RhcmdldFVSTCBzY2hlbWVdXSkKICAgICAgICAgICAgIHJldHVybiBAc2VsZWN0b3IoX3Nob3dE
YXRhRGV0ZWN0b3JzU2hlZXQpOwpAQCAtMzQzMSwxMSArMzQzMSwxMSBAQCAtIChCT09MKV9pbnRl
cmFjdGlvblNob3VsZEJlZ2luRnJvbVByZXZpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIFtz
ZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnBvc2l0aW9uXTsKLSAgICBp
ZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxlbWVudE5hbWUgIT0gIkEiICYmIF9w
b3NpdGlvbkluZm9ybWF0aW9uLmNsaWNrYWJsZUVsZW1lbnROYW1lICE9ICJJTUciKQorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShfcG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVFbGVtZW50
TmFtZSwgIkEiKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShfcG9zaXRpb25JbmZvcm1hdGlvbi5jbGlj
a2FibGVFbGVtZW50TmFtZSwiSU1HIikpCiAgICAgICAgIHJldHVybiBOTzsKICAgICAKICAgICBT
dHJpbmcgYWJzb2x1dGVMaW5rVVJMID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsOwotICAgIGlm
IChfcG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVFbGVtZW50TmFtZSA9PSAiQSIpIHsKKyAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxl
bWVudE5hbWUsICJBIikpIHsKICAgICAgICAgaWYgKGFic29sdXRlTGlua1VSTC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gTk87CiAgICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElz
SW5IVFRQRmFtaWx5KGFic29sdXRlTGlua1VSTCkpCkBAIC0zNDU0LDggKzM0NTQsOCBAQCAtIChO
U0RpY3Rpb25hcnkgKilfZGF0YUZvclByZXZpZXdJdGVtQ29uCiAKICAgICBpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPj4oW193ZWJWaWV3IFVJRGVsZWdhdGVdKTsKICAgICBCT09MIHN1cHBvcnRzSW1hZ2VQcmV2
aWV3ID0gW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpj
b21taXRQcmV2aWV3ZWRJbWFnZVdpdGhVUkw6KV07Ci0gICAgQk9PTCBjYW5TaG93SW1hZ2VQcmV2
aWV3ID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxlbWVudE5hbWUgPT0gIklNRyIg
JiYgc3VwcG9ydHNJbWFnZVByZXZpZXc7Ci0gICAgQk9PTCBjYW5TaG93TGlua1ByZXZpZXcgPSBf
cG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVFbGVtZW50TmFtZSA9PSAiQSIgfHwgY2FuU2hv
d0ltYWdlUHJldmlldzsKKyAgICBCT09MIGNhblNob3dJbWFnZVByZXZpZXcgPSBlcXVhbElnbm9y
aW5nQ2FzZShfcG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVFbGVtZW50TmFtZSwgIklNRyIp
ICYmIHN1cHBvcnRzSW1hZ2VQcmV2aWV3OworICAgIEJPT0wgY2FuU2hvd0xpbmtQcmV2aWV3ID0g
ZXF1YWxJZ25vcmluZ0Nhc2UoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxlbWVudE5h
bWUsICJBIikgfHwgY2FuU2hvd0ltYWdlUHJldmlldzsKICAgICBCT09MIHVzZUltYWdlVVJMRm9y
TGluayA9IE5POwogCiAgICAgaWYgKGNhblNob3dJbWFnZVByZXZpZXcgJiYgX3Bvc2l0aW9uSW5m
b3JtYXRpb24uaXNBbmltYXRlZEltYWdlKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264442</attachid>
            <date>2015-10-30 16:52:03 -0700</date>
            <delta_ts>2015-10-30 16:52:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>3621</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTgyNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTEwLTMwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBMaW5rIHByZXZpZXcgZG9lc24ndCB3
b3JrIG9uIFhIVE1MIHBhZ2VzIHdpdGggQ29udGVudC1UeXBlIGhlYWRlciBhcyAKKyAgICAgICAg
4oCYYXBwbGljYXRpb24veGh0bWwreG1s4oCZCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NDAKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQor
ICAgICAgICByZGFyOi8vcHJvYmxlbS8yMzA2MzU4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciBYSFRNTCBwYWdlcywgdGhlIGVsZW1lbnQgbmFt
ZXMgYXJlIGxvd2VyY2FzZS4gVGhpcyBwYXRjaCB1c2VzIAorICAgICAgICBlcXVhbElnbm9yaW5n
Q2FzZSB0byBmaXggdGhlIGJ1Zy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWN0aW9uRm9yTG9u
Z1ByZXNzXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2ludGVyYWN0aW9uU2hvdWxkQmVn
aW5Gcm9tUHJldmlld0l0ZW1Db250cm9sbGVyOmZvclBvc2l0aW9uOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9kYXRhRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOmF0UG9zaXRpb246dHlw
ZTpdKToKKwogMjAxNS0xMC0zMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBXS1ZpZXcgYmVpbmcgaW5zaWRlIFdLV2ViVmlldyBsZWFkcyB0byB3ZWly
ZCBBUEkgaXNzdWVzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMTkxODA3KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEwNDgsOSArMTA0OCw5IEBAIC0gKFNFTClfYWN0aW9uRm9yTG9u
Z1ByZXNzCiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi50b3VjaENhbGxvdXRFbmFibGVk
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLmNs
aWNrYWJsZUVsZW1lbnROYW1lID09ICJJTUciKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShf
cG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVFbGVtZW50TmFtZSwgIklNRyIpKQogICAgICAg
ICByZXR1cm4gQHNlbGVjdG9yKF9zaG93SW1hZ2VTaGVldCk7Ci0gICAgZWxzZSBpZiAoX3Bvc2l0
aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxlbWVudE5hbWUgPT0gIkEiKSB7CisgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxlbWVu
dE5hbWUsICJBIikpIHsKICAgICAgICAgTlNVUkwgKnRhcmdldFVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOl9wb3NpdGlvbkluZm9ybWF0aW9uLnVybF07CiAgICAgICAgIGlmIChbW2dldERERGV0
ZWN0aW9uQ29udHJvbGxlckNsYXNzKCkgdGFwQW5kSG9sZFNjaGVtZXNdIGNvbnRhaW5zT2JqZWN0
Olt0YXJnZXRVUkwgc2NoZW1lXV0pCiAgICAgICAgICAgICByZXR1cm4gQHNlbGVjdG9yKF9zaG93
RGF0YURldGVjdG9yc1NoZWV0KTsKQEAgLTM0MzEsMTEgKzM0MzEsMTEgQEAgLSAoQk9PTClfaW50
ZXJhY3Rpb25TaG91bGRCZWdpbkZyb21QcmV2aQogICAgICAgICByZXR1cm4gTk87CiAKICAgICBb
c2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpwb3NpdGlvbl07Ci0gICAg
aWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLmNsaWNrYWJsZUVsZW1lbnROYW1lICE9ICJBIiAmJiBf
cG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVFbGVtZW50TmFtZSAhPSAiSU1HIikKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxlbWVu
dE5hbWUsICJBIikgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2xp
Y2thYmxlRWxlbWVudE5hbWUsICJJTUciKSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIAogICAg
IFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi51cmw7Ci0gICAg
aWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLmNsaWNrYWJsZUVsZW1lbnROYW1lID09ICJBIikgewor
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShfcG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVF
bGVtZW50TmFtZSwgIkEiKSkgewogICAgICAgICBpZiAoYWJzb2x1dGVMaW5rVVJMLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoYWJzb2x1dGVMaW5rVVJMKSkKQEAgLTM0NTQsOCArMzQ1NCw4IEBAIC0g
KE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1Db24KIAogICAgIGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+PihbX3dlYlZpZXcgVUlEZWxlZ2F0ZV0pOwogICAgIEJPT0wgc3VwcG9ydHNJbWFnZVBy
ZXZpZXcgPSBbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OmNvbW1pdFByZXZpZXdlZEltYWdlV2l0aFVSTDopXTsKLSAgICBCT09MIGNhblNob3dJbWFnZVBy
ZXZpZXcgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVFbGVtZW50TmFtZSA9PSAiSU1H
IiAmJiBzdXBwb3J0c0ltYWdlUHJldmlldzsKLSAgICBCT09MIGNhblNob3dMaW5rUHJldmlldyA9
IF9wb3NpdGlvbkluZm9ybWF0aW9uLmNsaWNrYWJsZUVsZW1lbnROYW1lID09ICJBIiB8fCBjYW5T
aG93SW1hZ2VQcmV2aWV3OworICAgIEJPT0wgY2FuU2hvd0ltYWdlUHJldmlldyA9IGVxdWFsSWdu
b3JpbmdDYXNlKF9wb3NpdGlvbkluZm9ybWF0aW9uLmNsaWNrYWJsZUVsZW1lbnROYW1lLCAiSU1H
IikgJiYgc3VwcG9ydHNJbWFnZVByZXZpZXc7CisgICAgQk9PTCBjYW5TaG93TGlua1ByZXZpZXcg
PSBlcXVhbElnbm9yaW5nQ2FzZShfcG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2FibGVFbGVtZW50
TmFtZSwgIkEiKSB8fCBjYW5TaG93SW1hZ2VQcmV2aWV3OwogICAgIEJPT0wgdXNlSW1hZ2VVUkxG
b3JMaW5rID0gTk87CiAKICAgICBpZiAoY2FuU2hvd0ltYWdlUHJldmlldyAmJiBfcG9zaXRpb25J
bmZvcm1hdGlvbi5pc0FuaW1hdGVkSW1hZ2UpIHsK
</data>
<flag name="review"
          id="289571"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264594</attachid>
            <date>2015-11-02 08:55:35 -0800</date>
            <delta_ts>2015-11-02 10:04:07 -0800</delta_ts>
            <desc>Follow-up fix for non-ascii URLs</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>3186</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTg4OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTExLTAyICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBUYXBwaW5nIGFuZCBob2xkaW5nIGEg
bGluayBzaG91bGQgaGF2ZSBhIHNoYXJlIG9wdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIGZvbGxvdy11cCB0byB0aGUgb3JpZ2lu
YWwgY2hhbmdlLiBUaGlzIGNoYW5nZSBmaXhlcyBub24tYXNjaWkgVVJMcy4gCisgICAgICAgIFRo
ZXkgc2hvdWxkIG1haW50YWluIHRoZWlyIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHdoZW4gdGhleSBh
cmUgc2hhcmVkLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6
c2hhcmVFbGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQ
REZWaWV3Lm1tOgorICAgICAgICAoLVtXS1BERlZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hh
cmVFbGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorCiAyMDE1LTExLTAyICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgUmVuYW1lIEpTRE9NV3JhcHBl
ci5pbXBsIHRvIEpTRE9NV3JhcHBlci53cmFwcGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2
aXNpb24gMTkxODMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5j
bHVkZSBXZWJLaXQgaGVhZGVycyEKICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZUlPUy5o
PgpAQCAtMzM3NCw5ICszMzc1LDkgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tB
Y3Rpb25TaAogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lz
dGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihD
R1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KQot
ICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXJsLmFi
c29sdXRlU3RyaW5nIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CisgICAgICAgIFtfdGV4dFNlbGVj
dGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZy
b21SZWN0OmJvdW5kaW5nUmVjdF07CiAgICAgZWxzZSBpZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCkKLSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXJs
LmFic29sdXRlU3RyaW5nIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CisgICAgICAgIFtfd2ViU2Vs
ZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOnVzZXJWaXNpYmxlU3RyaW5nKHVybCkg
ZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHJldmlzaW9uIDE5MTgw
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvVVRD
b3JlVHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0
cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTcyMyw3ICs3MjQsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0Fj
dGlvblNoCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhVUkw6KE5TVVJMICopdXJsIHJlY3Q6KENH
UmVjdClib3VuZGluZ1JlY3QKIHsKICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gYWRvcHRO
UyhbW1VJV0tTZWxlY3Rpb25Bc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7Ci0g
ICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXJsLmFic29sdXRl
U3RyaW5nIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CisgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3Rh
bnQgc2hvd1NoYXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3Vu
ZGluZ1JlY3RdOwogICAgIF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgPSBuaWw7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264713</attachid>
            <date>2015-11-03 12:42:25 -0800</date>
            <delta_ts>2015-11-03 14:54:24 -0800</delta_ts>
            <desc>Patch to fix remaining bug, clean things</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>7719</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTk2NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE1LTExLTAzICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBMaW5rIHByZXZpZXcgZG9lc24ndCB3
b3JrIG9uIFhIVE1MIHBhZ2VzIHdpdGggQ29udGVudC1UeXBlIGhlYWRlciBhcyAKKyAgICAgICAg
YGFwcGxpY2F0aW9uL3hodG1sK3htbGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDc0MAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzIzMDYzNTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTXkgb3JpZ2luYWwgZml4IGZvciB0aGlzIGJ1ZyB3YXMgaW5j
b3JyZWN0IGluIHRoZSBwcmVzZW5jZSBvZiBub24tSFRNTCAKKyAgICAgICAgZWxlbWVudHMgdGhh
dCBoYXBwZW4gdG8gaGF2ZSB0aGUgc2FtZSBsb2NhbCBuYW1lIGFzIEhUTUwgZWxlbWVudHMuIFRo
ZSByZWFsIAorICAgICAgICBzb2x1dGlvbiB0byB0aGlzIGlzIHRvIHVzZSBsb2NhbE5hbWUoKSBp
bnN0ZWFkIG9mIG5vZGVOYW1lKCksIGJ1dCBpdCBhbHNvIAorICAgICAgICBzZWVtcyBzaWxseSB0
byBoYXZlIGFsbCBvZiB0aGlzIGxvZ2ljIGluIHRoZSBVSSBwcm9jZXNzIHRvIGRldGVybWluZSB3
aGV0aGVyIAorICAgICAgICB0byB0cmVhdCBzb21ldGhpbmcgYXMgYSBsaW5rIG9yIGFuIGltYWdl
LiBTbyB0aGlzIHBhdGNoIGFsc28gYWRkcyBpc0xpbmsgYW5kIAorICAgICAgICBpc0ltYWdlIHRv
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluIG9yZGVyIHRvIHNpbXBsaWZ5IGV2
ZXJ5dGhpbmcuCisKKyAgICAgICAgQWRkIGlzTGluayBhbmQgaXNJbWFnZS4KKyAgICAgICAgKiBT
aGFyZWQvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmg6CisKKyAgICAg
ICAgVXNlIHRoZSBuZXcgaXNMaW5rIGFuZCBpc0ltYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9hY3Rpb25Gb3JMb25nUHJlc3NdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW50ZXJh
Y3Rpb25TaG91bGRCZWdpbkZyb21QcmV2aWV3SXRlbUNvbnRyb2xsZXI6Zm9yUG9zaXRpb246XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RhdGFGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6
YXRQb3NpdGlvbjp0eXBlOl0pOgorCisgICAgICAgIFRoaXMgaXMgd2hhdCBzaG91bGQgYWN0dWFs
bHkgZml4IHRoZSBidWcuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9u
KToKKwogMjAxNS0xMS0wMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFNpbXBsaWZ5IC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2ludm9rZU1ldGhv
ZDpdCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5jcHAJKHJldmlzaW9uIDE5MTgwNCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAgdm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbjo6ZQogICAgIGVuY29kZXIgPDwgaXNTZWxlY3RhYmxlOwogICAgIGVuY29kZXIg
PDwgaXNOZWFyTWFya2VkVGV4dDsKICAgICBlbmNvZGVyIDw8IHRvdWNoQ2FsbG91dEVuYWJsZWQ7
CisgICAgZW5jb2RlciA8PCBpc0xpbms7CisgICAgZW5jb2RlciA8PCBpc0ltYWdlOwogICAgIGVu
Y29kZXIgPDwgaXNBbmltYXRlZEltYWdlOwogICAgIGVuY29kZXIgPDwgY2xpY2thYmxlRWxlbWVu
dE5hbWU7CiAgICAgZW5jb2RlciA8PCB1cmw7CkBAIC03MCw2ICs3MiwxMiBAQCBib29sIEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQudG91Y2hDYWxsb3V0RW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTGluaykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzSW1hZ2UpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc0FuaW1hdGVk
SW1hZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24u
aAkocmV2aXNpb24gMTkxODA0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDggQEAg
c3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIAogICAgIGJvb2wgaXNTZWxl
Y3RhYmxlIHsgZmFsc2UgfTsKICAgICBib29sIGlzTmVhck1hcmtlZFRleHQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgdG91Y2hDYWxsb3V0RW5hYmxlZCB7IHRydWUgfTsKKyAgICBib29sIGlzTGluayB7
IGZhbHNlIH07CisgICAgYm9vbCBpc0ltYWdlIHsgZmFsc2UgfTsKICAgICBib29sIGlzQW5pbWF0
ZWRJbWFnZSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIGNsaWNrYWJsZUVsZW1lbnROYW1lOwogICAg
IFN0cmluZyB1cmw7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMTkxODk0KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEwNDksMTAgKzEwNDksMTAgQEAgLSAoU0VMKV9hY3Rpb25Gb3JM
b25nUHJlc3MKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLnRvdWNoQ2FsbG91dEVuYWJs
ZWQpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoX3Bv
c2l0aW9uSW5mb3JtYXRpb24uY2xpY2thYmxlRWxlbWVudE5hbWUsICJJTUciKSkKKyAgICBpZiAo
X3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNJbWFnZSkKICAgICAgICAgcmV0dXJuIEBzZWxlY3Rvcihf
c2hvd0ltYWdlU2hlZXQpOwogCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKF9wb3NpdGlvbklu
Zm9ybWF0aW9uLmNsaWNrYWJsZUVsZW1lbnROYW1lLCAiQSIpKSB7CisgICAgaWYgKF9wb3NpdGlv
bkluZm9ybWF0aW9uLmlzTGluaykgewogICAgICAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJM
IFVSTFdpdGhTdHJpbmc6X3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsXTsKICAgICAgICAgaWYgKFtb
Z2V0REREZXRlY3Rpb25Db250cm9sbGVyQ2xhc3MoKSB0YXBBbmRIb2xkU2NoZW1lc10gY29udGFp
bnNPYmplY3Q6W3RhcmdldFVSTCBzY2hlbWVdXSkKICAgICAgICAgICAgIHJldHVybiBAc2VsZWN0
b3IoX3Nob3dEYXRhRGV0ZWN0b3JzU2hlZXQpOwpAQCAtMzQzNCwxMSArMzQzNCwxMSBAQCAtIChC
T09MKV9pbnRlcmFjdGlvblNob3VsZEJlZ2luRnJvbVByZXZpCiAgICAgICAgIHJldHVybiBOTzsK
IAogICAgIFtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnBvc2l0aW9u
XTsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY2xpY2th
YmxlRWxlbWVudE5hbWUsICJBIikgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoX3Bvc2l0aW9uSW5mb3Jt
YXRpb24uY2xpY2thYmxlRWxlbWVudE5hbWUsICJJTUciKSkKKyAgICBpZiAoIV9wb3NpdGlvbklu
Zm9ybWF0aW9uLmlzTGluayAmJiAhX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNJbWFnZSkKICAgICAg
ICAgcmV0dXJuIE5POwogICAgIAogICAgIFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBfcG9zaXRp
b25JbmZvcm1hdGlvbi51cmw7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKF9wb3NpdGlvbklu
Zm9ybWF0aW9uLmNsaWNrYWJsZUVsZW1lbnROYW1lLCAiQSIpKSB7CisgICAgaWYgKF9wb3NpdGlv
bkluZm9ybWF0aW9uLmlzTGluaykgewogICAgICAgICBpZiAoYWJzb2x1dGVMaW5rVVJMLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgaWYgKFdlYkNvcmU6OnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoYWJzb2x1dGVMaW5rVVJMKSkKQEAgLTM0NTcsOCArMzQ1Nyw4IEBA
IC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1Db24KIAogICAgIGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+PihbX3dlYlZpZXcgVUlEZWxlZ2F0ZV0pOwogICAgIEJPT0wgc3VwcG9ydHNJbWFn
ZVByZXZpZXcgPSBbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmNvbW1pdFByZXZpZXdlZEltYWdlV2l0aFVSTDopXTsKLSAgICBCT09MIGNhblNob3dJbWFn
ZVByZXZpZXcgPSBlcXVhbElnbm9yaW5nQ2FzZShfcG9zaXRpb25JbmZvcm1hdGlvbi5jbGlja2Fi
bGVFbGVtZW50TmFtZSwgIklNRyIpICYmIHN1cHBvcnRzSW1hZ2VQcmV2aWV3OwotICAgIEJPT0wg
Y2FuU2hvd0xpbmtQcmV2aWV3ID0gZXF1YWxJZ25vcmluZ0Nhc2UoX3Bvc2l0aW9uSW5mb3JtYXRp
b24uY2xpY2thYmxlRWxlbWVudE5hbWUsICJBIikgfHwgY2FuU2hvd0ltYWdlUHJldmlldzsKKyAg
ICBCT09MIGNhblNob3dJbWFnZVByZXZpZXcgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0ltYWdl
ICYmIHN1cHBvcnRzSW1hZ2VQcmV2aWV3OworICAgIEJPT0wgY2FuU2hvd0xpbmtQcmV2aWV3ID0g
X3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNMaW5rIHx8IGNhblNob3dJbWFnZVByZXZpZXc7CiAgICAg
Qk9PTCB1c2VJbWFnZVVSTEZvckxpbmsgPSBOTzsKIAogICAgIGlmIChjYW5TaG93SW1hZ2VQcmV2
aWV3ICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzQW5pbWF0ZWRJbWFnZSkgewpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQkocmV2aXNpb24gMTkxODA0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTc3LDEwICsyMTc3LDkgQEAg
dm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbgogICAgIH0KICAgICBib29s
IGVsZW1lbnRJc0xpbmtPckltYWdlID0gZmFsc2U7CiAgICAgaWYgKGhpdE5vZGUpIHsKLSAgICAg
ICAgaW5mby5jbGlja2FibGVFbGVtZW50TmFtZSA9IGhpdE5vZGUtPm5vZGVOYW1lKCk7Ci0KICAg
ICAgICAgRWxlbWVudCogZWxlbWVudCA9IGlzPEVsZW1lbnQ+KCpoaXROb2RlKSA/IGRvd25jYXN0
PEVsZW1lbnQ+KGhpdE5vZGUpIDogbnVsbHB0cjsKICAgICAgICAgaWYgKGVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIGluZm8uY2xpY2thYmxlRWxlbWVudE5hbWUgPSBlbGVtZW50LT5sb2NhbE5hbWUo
KTsKICAgICAgICAgICAgIEVsZW1lbnQqIGxpbmtFbGVtZW50ID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCktPmlzUmVu
ZGVySW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGVsZW1lbnRJc0xpbmtPckltYWdlID0gdHJ1
ZTsKQEAgLTIxOTIsNiArMjE5MSw4IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1h
dGlvbihjb24KIAogICAgICAgICAgICAgaWYgKGVsZW1lbnRJc0xpbmtPckltYWdlKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGxpbmtFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGluZm8u
aXNMaW5rID0gdHJ1ZTsKKwogICAgICAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUg
aW1hZ2UgY29udGFpbnMgYXQgbW9zdCA2MDBLIHBpeGVscywgc28gdGhhdCBpdCBpcyBub3QgdG9v
IGJpZy4KICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3Qg
PSBzbmFwc2hvdE5vZGUoKmVsZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICog
MTAyNCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc25hcHNob3QtPmJp
dG1hcCgpOwpAQCAtMjIwNyw2ICsyMjA4LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbklu
Zm9ybWF0aW9uKGNvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8ubGlua0luZGlj
YXRvciA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5y
ZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5p
c0ltYWdlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgcmVuZGVySW1hZ2UgPSBk
b3duY2FzdDxSZW5kZXJJbWFnZT4oKihlbGVtZW50LT5yZW5kZXJlcigpKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChyZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpICYmICFyZW5kZXJJbWFnZS5j
YWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChJbWFnZSogaW1hZ2UgPSByZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpLT5pbWFnZUZvclJl
bmRlcmVyKCZyZW5kZXJJbWFnZSkpIHsK
</data>
<flag name="review"
          id="289808"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>