<?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>30974</bug_id>
          
          <creation_ts>2009-10-31 06:18:09 -0700</creation_ts>
          <short_desc>Web Inspector: Pretty print array-like objects</short_desc>
          <delta_ts>2010-08-12 16:08:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>john.david.dalton</cc>
    
    <cc>kangax</cc>
    
    <cc>keishi</cc>
    
    <cc>oliver</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>159554</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-31 06:18:09 -0700</bug_when>
    <thetext>I think jQuery users would like to have things like jQuery(document) logged as an array. I don&apos;t want to treat jQuery special so why not log all objects with &quot;length&quot; property as an array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159555</commentid>
    <comment_count>1</comment_count>
      <attachid>42255</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-31 06:20:12 -0700</bug_when>
    <thetext>Created attachment 42255
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159562</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-31 08:25:58 -0700</bug_when>
    <thetext>This seems fine to me. What does everyone else think? Joe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159567</commentid>
    <comment_count>3</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-10-31 10:06:34 -0700</bug_when>
    <thetext>I guess the question is, what kind of output do you get if you print an object which happens to have a length property but is not actually an array?  Won&apos;t it skip over all keys that aren&apos;t in the range 0..length?  Which is probably all the keys?  Here&apos;s an example session, which shows the (potential) problem:

   &gt; x = [1,2,3]
   [1, 2, 3] 
   &gt; x.a = 4
   4
   &gt; x
   [1, 2, 3]

woops, where&apos;s x.a printed???

Personally, it seems like it&apos;d be more consistent to alway print arrays and objects the same way; both are indexed collections, but one has a constrained set of index values.  

Maybe instead we need to have different ways to print different representations - different functions, or a &quot;mode&quot; switch, or something.

But I don&apos;t have much skin in the game here - I rarely print array-like things in the console.  Objects, all the time, but for some reason, almost never arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159570</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-10-31 10:16:25 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; This seems fine to me. What does everyone else think? Joe?

This seems like a good, future-proof way to handle things.

&gt; Personally, it seems like it&apos;d be more consistent to alway print arrays and
&gt; objects the same way; both are indexed collections, but one has a constrained
&gt; set of index values.  

I believe that is what &quot;console.dir&quot; is for (poorly named from the Firebug API):

  &gt; var x = [1,2,3];
  &gt; x.a = 4;
  &gt; console.dir(x)
  Array
  0: 1
  1: 2
  2: 3
  a: 4


&gt; But I don&apos;t have much skin in the game here - I rarely print array-like things
&gt; in the console.  Objects, all the time, but for some reason, almost never
&gt; arrays.

Sometimes printing objects requires a lot of scrolling for property/values pairs that are really short (multiple could fit on a line). I like the compactness of the Array printing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159571</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-31 10:22:20 -0700</bug_when>
    <thetext>To force object output for DOM nodes, arrays and anything else, use the dir() function. A poorly named API that matches Firebug.

So this will do what you want:

  &gt; dir(x)

  Array
       0: 1
       1: 2
       2: 3
       a: 4

But I tend to agree, we should only do array formatting when we are positive about it.

Maybe we should look for any non-numeric enumerable properties. If there are any, we just use object formatting. (This might be too slow for large arrays though…)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159578</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-31 14:18:35 -0700</bug_when>
    <thetext>I would not be doing it actually. Even now, dumping document.body.childNodes on a large page might lead to unpleasant overhead. console.dir is what users do and the heavy result is predictable there.

Btw, I experience difficulties parsing document.body.childNodes output. Show we print cell-per-row with array index instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159608</commentid>
    <comment_count>7</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-31 19:15:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I would not be doing it actually. Even now, dumping document.body.childNodes on
&gt; a large page might lead to unpleasant overhead. console.dir is what users do
&gt; and the heavy result is predictable there.
&gt; 
&gt; Btw, I experience difficulties parsing document.body.childNodes output. Show we
&gt; print cell-per-row with array index instead?

I think both are valid concerns but should be a separate bug. The problem this addresses is when using jQuery, like 90% of the objects you deal with is this Array-like object. Having to click to check what&apos;s inside every time will big stress to the user.

My worry is that the isArrayLike Object() logic too forgiving. This patch uses 
  typeof o.length === &quot;number&quot;
but I think there is a good chance that the user will have an object like this.
  var video = {title:&quot;foo&quot;, length: 20, url: &quot;http://foo/ba.mp4&quot;}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164588</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-18 09:08:41 -0800</bug_when>
    <thetext>What do we do to this one? Do we have an agreement here? (Are you expecting feedback?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164607</commentid>
    <comment_count>9</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-18 09:48:19 -0800</bug_when>
    <thetext>I still think we should try this:

&gt; Maybe we should look for any non-numeric enumerable properties. If there are
&gt; any, we just use object formatting. (This might be too slow for large arrays
&gt; though…)

If there are tons of properties, just use the object display?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165204</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-19 22:01:43 -0800</bug_when>
    <thetext>Just for reference ES5 defines (and we support) Array.isArray(obj) which returns true for real arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167327</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:22:10 -0800</bug_when>
    <thetext>Attachment 42255 passed the style-queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176295</commentid>
    <comment_count>12</comment_count>
      <attachid>42255</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-01 17:57:52 -0800</bug_when>
    <thetext>Comment on attachment 42255
proposed patch

This patch has been sitting around for a long time and is clearly wrong as explained in Comment #7.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254515</commentid>
    <comment_count>13</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-07-21 14:12:42 -0700</bug_when>
    <thetext>This feature has been addressed for jQuery via Bug 42758.

Here&apos;s another thought.  Have library implementors tell us when they create objects which should be displayed in the debugger as arrays.  For instance, such objects could have a property like __debugDisplayAsArray.  In the jQuery case, this could just be added to the jQuery prototype.  Or it could be a property of the constructor function, in which case you could test with obj.constructor.__whatever ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264026</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-12 15:21:26 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; A more robust (though certainly not foolproof) check might be `(obj.length ===
&gt; obj.length &gt;&gt;&gt; 0) &amp;&amp; &quot;0&quot; in obj`, or even iterating over the object&apos;s properties
&gt; until a numeric one is encountered.

I think this check is pretty sufficient.


&gt; I also like kangax&apos;s proposal for a separate representation for array-like
&gt; objects, maybe something akin to `&lt;List: [...]&gt;`. I would, however, also like
&gt; to propose using that representation for NodeLists and HTMLCollections as well,
&gt; reserving `[...]` for arrays only.

I also like this idea. Currently we treat NodeLists and Collections as arrays,
and I think they deserve some differentiation.

http://trac.webkit.org/browser/trunk/WebCore/inspector/front-end/InjectedScript.js

&gt;    if (obj instanceof inspectedWindow.Array)
&gt;        return &quot;array&quot;;
&gt;    if (obj instanceof inspectedWindow.NodeList)
&gt;        return &quot;array&quot;;
&gt;    if (obj instanceof inspectedWindow.HTMLCollection)
&gt;        return &quot;array&quot;;

------

It seems the major issue is:

  JavaScript libraries have &quot;array like&quot; collections which would be useful to
  display like arrays in the console! But, sometimes this could go wrong, or
  sometimes this could hide information.

For those &quot;sometimes&quot; cases, like was mentioned above, I think it would be
good enough to indicate that this is in fact not an array, but an &quot;array like&quot;
object. As a user, if I saw this indicator it be helpful, and I might want
to display this as an object instead. So, if that indicator was clickable,
and could toggle between the array-like quick view and the complete object
view that sounds best to me.

Does that sound good? Is there a use case I&apos;m missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264034</commentid>
    <comment_count>15</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-12 15:34:45 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; You just made &quot;window&quot; render as  [undefined] in the console :P

Yah, I guess more have a &quot;length&quot; than I thought. Functions do too, but they
have good instanceof and typeof semantics.


&gt; But since webkit already sets arguments&apos;s [[Class]] to &quot;Arguments&quot;, the other
&gt; — more complex — versions could probably be avoided.

&quot;Arguments&quot; is one of my major use-cases. I would like to see that arraylike.
And you&apos;re right, this can be special cased differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264035</commentid>
    <comment_count>16</comment_count>
    <who name="John-David Dalton">john.david.dalton</who>
    <bug_when>2010-08-12 15:35:21 -0700</bug_when>
    <thetext>For reference this is how Firebug detects array-like:
http://code.google.com/p/fbug/source/browse/branches/firebug1.6/content/firebug/reps.js#560

This allows jQuery results, MooTools 1.3 results and anything with a 
length property and splice method to be displayed as an array. It covers the arguments object too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264052</commentid>
    <comment_count>17</comment_count>
      <attachid>64278</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-12 15:53:22 -0700</bug_when>
    <thetext>Created attachment 64278
[PATCH] Change suggested by John-David Dalton.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264059</commentid>
    <comment_count>18</comment_count>
      <attachid>64278</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-12 15:59:26 -0700</bug_when>
    <thetext>Comment on attachment 64278
[PATCH] Change suggested by John-David Dalton.

&gt; +++ b/WebCore/inspector/front-end/InjectedScript.js
&gt; +    if (isFinite(obj.length) &amp;&amp; typeof obj.callee === &quot;function&quot;)  // arguments.

One space before the comment. ;)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264064</commentid>
    <comment_count>19</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-12 16:08:21 -0700</bug_when>
    <thetext>Fix suggested in Comment #16 is landed.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/InjectedScript.js
Committed r65278</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42255</attachid>
            <date>2009-10-31 06:20:12 -0700</date>
            <delta_ts>2010-08-12 15:53:22 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>arraylike.diff</filename>
            <type>text/plain</type>
            <size>1564</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDM4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMTAtMzEgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHJldHR5IHByaW50IGFycmF5LWxpa2Ugb2JqZWN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA5NzQKKworICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanM6CisgICAgICAgIChP
YmplY3QudHlwZSk6CisKIDIwMDktMTAtMzAgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCShyZXZpc2lvbiA1MDMy
MSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgT2JqZWN0LnR5cGUgPSBmdW5jdGlvbihv
YmopCiAgICAgICAgIHJldHVybiAob2JqLm5vZGVUeXBlID09PSB1bmRlZmluZWQgPyB0eXBlIDog
Im5vZGUiKTsKICAgICBpZiAob2JqIGluc3RhbmNlb2Ygd2luLlN0cmluZykKICAgICAgICAgcmV0
dXJuICJzdHJpbmciOwotICAgIGlmIChvYmogaW5zdGFuY2VvZiB3aW4uQXJyYXkpCisgICAgaWYg
KHR5cGVvZiBvYmoubGVuZ3RoID09PSAibnVtYmVyIikgLy8gQXJyYXkgJiBBcnJheS1saWtlIG9i
amVjdAogICAgICAgICByZXR1cm4gImFycmF5IjsKICAgICBpZiAob2JqIGluc3RhbmNlb2Ygd2lu
LkJvb2xlYW4pCiAgICAgICAgIHJldHVybiAiYm9vbGVhbiI7CkBAIC0xMTU2LDEwICsxMTU2LDYg
QEAgT2JqZWN0LnR5cGUgPSBmdW5jdGlvbihvYmopCiAgICAgICAgIHJldHVybiAiZGF0ZSI7CiAg
ICAgaWYgKG9iaiBpbnN0YW5jZW9mIHdpbi5SZWdFeHApCiAgICAgICAgIHJldHVybiAicmVnZXhw
IjsKLSAgICBpZiAob2JqIGluc3RhbmNlb2Ygd2luLk5vZGVMaXN0KQotICAgICAgICByZXR1cm4g
ImFycmF5IjsKLSAgICBpZiAob2JqIGluc3RhbmNlb2Ygd2luLkhUTUxDb2xsZWN0aW9uIHx8IG9i
aiBpbnN0YW5jZW9mIHdpbi5IVE1MQWxsQ29sbGVjdGlvbikKLSAgICAgICAgcmV0dXJuICJhcnJh
eSI7CiAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIHdpbi5FcnJvcikKICAgICAgICAgcmV0dXJuICJl
cnJvciI7CiAgICAgcmV0dXJuIHR5cGU7Cg==
</data>
<flag name="review"
          id="23765"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64278</attachid>
            <date>2010-08-12 15:53:22 -0700</date>
            <delta_ts>2010-08-12 15:59:25 -0700</delta_ts>
            <desc>[PATCH] Change suggested by John-David Dalton.</desc>
            <filename>array_detection</filename>
            <type>text/plain</type>
            <size>1537</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDczYThlZS4uNzdkMDM3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wOC0xMiAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBtaW1pYyBGaXJlQnVnJ3MgYXJyYXkg
ZGV0ZWN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA5NzQKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQu
anM6CisgICAgICAgIChpbmplY3RlZFNjcmlwdENvbnN0cnVjdG9yKToKKwogMjAxMC0wOC0xMiAg
RGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgc29y
dCBvZiBYQ29kZSBwcm9qZWN0IGZpbGUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SW5qZWN0ZWRTY3JpcHQuanMKaW5kZXggZjNlM2FlOS4uZTA4OTE5YSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcwpAQCAtNTE5LDEyICs1MTksMTUg
QEAgSW5qZWN0ZWRTY3JpcHQuX3R5cGUgPSBmdW5jdGlvbihvYmopCiAgICAgICAgIHJldHVybiAi
ZGF0ZSI7CiAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5SZWdFeHApCiAg
ICAgICAgIHJldHVybiAicmVnZXhwIjsKKyAgICAvLyBGaXJlQnVnJ3MgYXJyYXkgZGV0ZWN0aW9u
LgorICAgIGlmIChpc0Zpbml0ZShvYmoubGVuZ3RoKSAmJiB0eXBlb2Ygb2JqLnNwbGljZSA9PT0g
ImZ1bmN0aW9uIikKKyAgICAgICAgcmV0dXJuICJhcnJheSI7CisgICAgaWYgKGlzRmluaXRlKG9i
ai5sZW5ndGgpICYmIHR5cGVvZiBvYmouY2FsbGVlID09PSAiZnVuY3Rpb24iKSAgLy8gYXJndW1l
bnRzLgorICAgICAgICByZXR1cm4gImFycmF5IjsKICAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5z
cGVjdGVkV2luZG93Lk5vZGVMaXN0KQogICAgICAgICByZXR1cm4gImFycmF5IjsKICAgICBpZiAo
b2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93LkhUTUxDb2xsZWN0aW9uKQogICAgICAgICBy
ZXR1cm4gImFycmF5IjsKLSAgICBpZiAodHlwZW9mIGluc3BlY3RlZFdpbmRvdy5qUXVlcnkgPT09
ICJmdW5jdGlvbiIgJiYgb2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93LmpRdWVyeSkKLSAg
ICAgICAgcmV0dXJuICJhcnJheSI7CiAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdp
bmRvdy5FcnJvcikKICAgICAgICAgcmV0dXJuICJlcnJvciI7CiAgICAgcmV0dXJuIHR5cGU7Cg==
</data>
<flag name="review"
          id="52814"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>