<?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>18961</bug_id>
          
          <creation_ts>2008-05-09 02:11:37 -0700</creation_ts>
          <short_desc>SQUIRRELFISH: Gmail doesn&apos;t load</short_desc>
          <delta_ts>2008-05-11 04:42:56 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.gmail.com/</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="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>79963</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-09 02:11:37 -0700</bug_when>
    <thetext>Loading Gmail fails with some undefined value exceptions. I&apos;m going to try to debug this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79965</commentid>
    <comment_count>1</comment_count>
      <attachid>21033</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-09 02:58:52 -0700</bug_when>
    <thetext>Created attachment 21033
Stack trace

Here&apos;s a stack trace from the first undefined value exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79966</commentid>
    <comment_count>2</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-09 03:02:50 -0700</bug_when>
    <thetext>I asked gdb to print the bytecode that threw the exception. Here it is:

6 instructions; 84 bytes at 0x1344e460; 1 locals (1 parameters); 15 temporaries

[   0] resolve		 tr0, a(@id0)
[   3] get_by_id	 tr1, tr0, apply(@id1)
[   7] resolve		 tr13, f(@id2)
[  10] resolve		 tr14, arguments(@id3)
[  13] call		 tr0, tr1, tr0, 12, 3
[  19] ret		 tr0

Identifiers:
  id0 = a
  id1 = apply
  id2 = f
  id3 = arguments

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79967</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-09 03:12:52 -0700</bug_when>
    <thetext>The value returned by the first resolve is bogus, causing the exception to be thrown when calling toObject() on the base in get_by_id. I&apos;ll try to see what is up with that resolve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80114</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-11 03:01:07 -0700</bug_when>
    <thetext>Google Reader had the least amount of JS out of all of the affected Google products, so I hacked up enough of a local copy to reproduce the error. Using a decent amount of alert debugging, I managed to find the problem. Consider this code:

var o = { };
o = o.Nothere || o;
print(o == undefined);

Trunk prints false, SquirrelFish prints true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80115</commentid>
    <comment_count>5</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-11 03:04:35 -0700</bug_when>
    <thetext>Here is the bytecode for my example:

[   0] load		 lr2, undefined(@k0)		
[   3] load		 tr0, undefined(@k0)		
[   6] new_object	 lr2
[   8] get_by_id	 lr2, lr2, Nothere(@id0)
[  12] jtrue		 lr2, 1(-&gt;15)
[  15] mov		 tr0, lr2
[  18] resolve_func	 tr0, tr1, print(@id1)
[  22] resolve		 tr14, undefined(@id2)
[  25] eq		 tr13, lr2, tr14
[  29] call		 tr0, tr1, tr0, 12, 2
[  35] end		 tr0

The problem is that LogicalAndNode is using the final destination as a temporary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80116</commentid>
    <comment_count>6</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-11 03:05:33 -0700</bug_when>
    <thetext>&gt; The problem is that LogicalAndNode is using the final destination as a
temporary.

Oops, I meant LogicalOrNode, but the problem is in both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80122</commentid>
    <comment_count>7</comment_count>
      <attachid>21067</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-11 03:37:49 -0700</bug_when>
    <thetext>Created attachment 21067
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80123</commentid>
    <comment_count>8</comment_count>
      <attachid>21067</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-11 03:39:57 -0700</bug_when>
    <thetext>Comment on attachment 21067
Proposed patch

r=me

woo!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80126</commentid>
    <comment_count>9</comment_count>
      <attachid>21068</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-11 04:04:47 -0700</bug_when>
    <thetext>Created attachment 21068
Proposed patch with test

I accidentally didn&apos;t add the test to the last patch, and the description was bad. Here&apos;s a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80127</commentid>
    <comment_count>10</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-11 04:42:56 -0700</bug_when>
    <thetext>Landed in r33031.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21033</attachid>
            <date>2008-05-09 02:58:52 -0700</date>
            <delta_ts>2008-05-09 02:58:52 -0700</delta_ts>
            <desc>Stack trace</desc>
            <filename>stacktrace.txt</filename>
            <type>text/plain</type>
            <size>10289</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">IzAgIEtKUzo6SlNJbW1lZGlhdGU6OnRvT2JqZWN0ICh2PTB4NSwgZXhlYz0weGJmZmZjOGFjKSBh
dCBKU0ltbWVkaWF0ZS5jcHA6MzgKIzEgIDB4MDA0YmUyM2IgaW4gS0pTOjpKU1ZhbHVlOjp0b09i
amVjdCAodGhpcz0weDUsIGV4ZWM9MHhiZmZmYzhhYykgYXQgdmFsdWUuaDo1MjYKIzIgIDB4MDA0
ZDZhZDcgaW4gS0pTOjpNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZSAodGhpcz0weDUxOTc2MCwgZmxh
Zz1LSlM6Ok1hY2hpbmU6Ok5vcm1hbCwgZXhlYz0weGJmZmZjOGFjLCByZWdpc3RlckZpbGU9MHgx
MzE3ODk0MCwgcj0weDQ2MWJiNGMsIHNjb3BlQ2hhaW49MHgxNGI3MjE3MCwgY29kZUJsb2NrPTB4
MTM0NGU0NjAsIGV4Y2VwdGlvbj0weGJmZmZjOTY4KSBhdCAvVXNlcnMvQ2FtZXJvbi9zZi9KYXZh
U2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcDoxMzM2CiMzICAweDAwNGQ5NmI1IGluIEtKUzo6TWFj
aGluZTo6ZXhlY3V0ZSAodGhpcz0weDUxOTc2MCwgZnVuY3Rpb25Cb2R5Tm9kZT0weDEzMTQ2N2Qw
LCBleGVjPTB4MTMyYzE0NmMsIGZ1bmN0aW9uPTB4MTQ0NDE5YTAsIHRoaXNPYmo9MHgxNDQ0MWMw
MCwgYXJncz1AMHhiZmZmYzlmOCwgcmVnaXN0ZXJGaWxlU3RhY2s9MHgxMzJjMTQ0OCwgc2NvcGVD
aGFpbj0weDE0YjcyMTcwLCBleGNlcHRpb249MHhiZmZmYzk2OCkgYXQgL1VzZXJzL0NhbWVyb24v
c2YvSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHA6NjI1CiM0ICAweDAwNDJhYmY0IGluIEtK
Uzo6RnVuY3Rpb25JbXA6OmNhbGxBc0Z1bmN0aW9uICh0aGlzPTB4MTQ0NDE5YTAsIGV4ZWM9MHgx
MzJjMTQ2YywgdGhpc09iaj0weDE0NDQxYzAwLCBhcmdzPUAweGJmZmZjOWY4KSBhdCBmdW5jdGlv
bi5jcHA6ODYKIzUgIDB4MDA0NGU3NjcgaW4gS0pTOjpKU09iamVjdDo6Y2FsbCAodGhpcz0weDE0
NDQxOWEwLCBleGVjPTB4MTMyYzE0NmMsIHRoaXNPYmo9MHgxNDQ0MWMwMCwgYXJncz1AMHhiZmZm
YzlmOCkgYXQgb2JqZWN0LmNwcDoxMDEKIzYgIDB4MDI0MWQyMjcgaW4gV2ViQ29yZTo6SlNBYnN0
cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50ICh0aGlzPTB4MTRiNmZjZjAsIGVsZT0weDE0
Yjc5ZmYwLCBpc1dpbmRvd0V2ZW50PWZhbHNlKSBhdCAvVXNlcnMvQ2FtZXJvbi9zZi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19ldmVudHMuY3BwOjk5CiM3ICAweDAyM2RlYTIwIGluIFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpjYWxsUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyICh0aGlzPTB4MTJl
MDhhNzApIGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoyODMKIzggIDB4MDIzZGVjNjUgaW4gV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNoYW5nZVN0
YXRlICh0aGlzPTB4MTJlMDhhNzAsIG5ld1N0YXRlPVdlYkNvcmU6Ok9wZW4pIGF0IC9Vc2Vycy9D
YW1lcm9uL3NmL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoyNzAKIzkgIDB4MDIzZTE1
NmMgaW4gV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6Om9wZW4gKHRoaXM9MHgxMmUwOGE3MCwgbWV0
aG9kPUAweGJmZmZjYzE4LCB1cmw9QDB4YmZmZmNjMjAsIGFzeW5jPXRydWUsIGVjPUAweGJmZmZj
YzFjKSBhdCAvVXNlcnMvQ2FtZXJvbi9zZi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHA6
MzczCiMxMCAweDAyNGJmZmE1IGluIFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4gKHRo
aXM9MHgxNDQ0MWMwMCwgZXhlYz0weGJmZmZkYWE0LCBhcmdzPUAweGJmZmZjZDg0KSBhdCAvVXNl
cnMvQ2FtZXJvbi9zZi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwOjEzNgojMTEgMHgwMjRjMDVlYyBpbiBXZWJDb3JlOjpqc1hNTEh0dHBSZXF1ZXN0UHJvdG90
eXBlRnVuY3Rpb25PcGVuIChleGVjPTB4YmZmZmRhYTQsIHRoaXNPYmo9MHgxNDQ0MWMwMCwgYXJn
cz1AMHhiZmZmY2Q4NCkgYXQgL1VzZXJzL0NhbWVyb24vc2YvV2ViS2l0QnVpbGQvRGVidWcvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTEh0dHBSZXF1ZXN0LmNwcDoxNzcKIzEyIDB4MDA0MmFm
ZDIgaW4gS0pTOjpQcm90b3R5cGVGdW5jdGlvbjo6Y2FsbEFzRnVuY3Rpb24gKHRoaXM9MHgxNDQ0
MTk0MCwgZXhlYz0weGJmZmZkYWE0LCB0aGlzT2JqPTB4MTQ0NDFjMDAsIGFyZ3M9QDB4YmZmZmNk
ODQpIGF0IGZ1bmN0aW9uLmNwcDo3MzgKIzEzIDB4MDA0ZDdkNzcgaW4gS0pTOjpNYWNoaW5lOjpw
cml2YXRlRXhlY3V0ZSAodGhpcz0weDUxOTc2MCwgZmxhZz1LSlM6Ok1hY2hpbmU6Ok5vcm1hbCwg
ZXhlYz0weGJmZmZkYWE0LCByZWdpc3RlckZpbGU9MHgxMzE3ODk0MCwgcj0weDQ1Zjc3ZGMsIHNj
b3BlQ2hhaW49MHgxMzFjMzJlMCwgY29kZUJsb2NrPTB4MTM0NTUxOTAsIGV4Y2VwdGlvbj0weGJm
ZmZkYjNjKSBhdCAvVXNlcnMvQ2FtZXJvbi9zZi9KYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNw
cDoxNjYxCiMxNCAweDAwNGQ5ODI1IGluIEtKUzo6TWFjaGluZTo6ZXhlY3V0ZSAodGhpcz0weDUx
OTc2MCwgcHJvZ3JhbU5vZGU9MHgxMzE1ZjE1MCwgZXhlYz0weDEzMmMxNDZjLCBzY29wZUNoYWlu
PTB4MTRiYzUxYjAsIHRoaXNPYmo9MHgxNDQ0ZTA2MCwgcmVnaXN0ZXJGaWxlU3RhY2s9MHgxMzJj
MTQ0OCwgZXhjZXB0aW9uPTB4YmZmZmRiM2MpIGF0IC9Vc2Vycy9DYW1lcm9uL3NmL0phdmFTY3Jp
cHRDb3JlL1ZNL01hY2hpbmUuY3BwOjU3MgojMTUgMHgwMDQ3YTNkZiBpbiBLSlM6OkludGVycHJl
dGVyOjpldmFsdWF0ZSAoZXhlYz0weDEzMmMxNDZjLCBzY29wZUNoYWluPUAweDEzMmMxNDY4LCBz
b3VyY2VVUkw9QDB4YmZmZmRiYzQsIHN0YXJ0aW5nTGluZU51bWJlcj0yMDgsIGNvZGU9MHg0NWMz
ODAwLCBjb2RlTGVuZ3RoPTUwOTAsIHRoaXNWYWx1ZT0weDE0NDRlMDYwKSBhdCBpbnRlcnByZXRl
ci5jcHA6ODQKIzE2IDB4MDI0MWY2ZmIgaW4gV2ViQ29yZTo6S0pTUHJveHk6OmV2YWx1YXRlICh0
aGlzPTB4MTRiYjJhNzAsIGZpbGVuYW1lPUAweGJmZmZkZGY4LCBiYXNlTGluZT0yMDgsIHN0cj1A
MHhiZmZmZGU3OCkgYXQgL1VzZXJzL0NhbWVyb24vc2YvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
cHJveHkuY3BwOjg3CiMxNyAweDAxZmUxODc3IGluIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpleGVj
dXRlU2NyaXB0ICh0aGlzPTB4NDVhNmMwMCwgdXJsPUAweGJmZmZkZGY4LCBiYXNlTGluZT0yMDgs
IHNjcmlwdD1AMHhiZmZmZGU3OCkgYXQgL1VzZXJzL0NhbWVyb24vc2YvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwOjc3MQojMTggMHgwMjA2NTk3ZSBpbiBXZWJDb3JlOjpIVE1MVG9rZW5p
emVyOjpzY3JpcHRFeGVjdXRpb24gKHRoaXM9MHg0NWNjNjAwLCBzdHI9QDB4YmZmZmRlNzgsIHN0
YXRlPXtzdGF0aWMgRW50aXR5U2hpZnQgPSA0LCBtX2JpdHMgPSAwfSwgc2NyaXB0VVJMPUAweGJm
ZmZkZjE4LCBiYXNlTGluZT0yMDgpIGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYkNvcmUvaHRtbC9I
VE1MVG9rZW5pemVyLmNwcDo1NDAKIzE5IDB4MDIwNjcwOGQgaW4gV2ViQ29yZTo6SFRNTFRva2Vu
aXplcjo6c2NyaXB0SGFuZGxlciAodGhpcz0weDQ1Y2M2MDAsIHN0YXRlPXtzdGF0aWMgRW50aXR5
U2hpZnQgPSA0LCBtX2JpdHMgPSAwfSkgYXQgL1VzZXJzL0NhbWVyb24vc2YvV2ViQ29yZS9odG1s
L0hUTUxUb2tlbml6ZXIuY3BwOjQ4MAojMjAgMHgwMjA2NzZkNSBpbiBXZWJDb3JlOjpIVE1MVG9r
ZW5pemVyOjpwYXJzZVNwZWNpYWwgKHRoaXM9MHg0NWNjNjAwLCBzcmM9QDB4NDVjY2Y1MCwgc3Rh
dGU9e3N0YXRpYyBFbnRpdHlTaGlmdCA9IDQsIG1fYml0cyA9IDEyOH0pIGF0IC9Vc2Vycy9DYW1l
cm9uL3NmL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcDozMzAKIzIxIDB4MDIwNjk2YjEg
aW4gV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6cGFyc2VUYWcgKHRoaXM9MHg0NWNjNjAwLCBzcmM9
QDB4NDVjY2Y1MCwgc3RhdGU9e3N0YXRpYyBFbnRpdHlTaGlmdCA9IDQsIG1fYml0cyA9IDEyOH0p
IGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoxNDky
CiMyMiAweDAyMDZhMDVkIGluIFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OndyaXRlICh0aGlzPTB4
NDVjYzYwMCwgc3RyPUAweGJmZmZlMjEwLCBhcHBlbmREYXRhPXRydWUpIGF0IC9Vc2Vycy9DYW1l
cm9uL3NmL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoxNzI3CiMyMyAweDAxZmRhOTBm
IGluIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3cml0ZSAodGhpcz0weDQ1YTZjMDAsIHN0cj0weDE0
N2RmMDAwICJfUCR3ZiQoKXtyZXR1cm4gdGhpcy5obX07Q21bX1BdLnBiPWZ1bmN0aW9uICRDbSRf
UCRwYiQoYSl7aWYoYT09dGhpcy5obSlyZXR1cm47aWYoYTx0aGlzLmhtKXRocm93IGkoY2ZhKTtp
ZihhPjQpdGhyb3cgaShkZmEpO2Zvcih2YXIgYj10aGlzLmhtKzE7Yjw9YTtiKyspe3RoaXMuaG09
Yjt0aGlzLkFjKCl9fTtDbVtfUF0uQWM9ZnVuY3Rpb24gJENtJCIuLi4sIGxlbj0yMDQ4ODksIGZs
dXNoPWZhbHNlKSBhdCAvVXNlcnMvQ2FtZXJvbi9zZi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHA6MTAxNwojMjQgMHgwMWZkYWE0NCBpbiBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YWRkRGF0
YSAodGhpcz0weDQ1YTZjMDAsIGJ5dGVzPTB4MTQ3ZGYwMDAgIl9QJHdmJCgpe3JldHVybiB0aGlz
LmhtfTtDbVtfUF0ucGI9ZnVuY3Rpb24gJENtJF9QJHBiJChhKXtpZihhPT10aGlzLmhtKXJldHVy
bjtpZihhPHRoaXMuaG0pdGhyb3cgaShjZmEpO2lmKGE+NCl0aHJvdyBpKGRmYSk7Zm9yKHZhciBi
PXRoaXMuaG0rMTtiPD1hO2IrKyl7dGhpcy5obT1iO3RoaXMuQWMoKX19O0NtW19QXS5BYz1mdW5j
dGlvbiAkQ20kIi4uLiwgbGVuZ3RoPTIwNDg4OSkgYXQgL1VzZXJzL0NhbWVyb24vc2YvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwOjE4MzIKIzI1IDB4MDAxYjA0YTEgaW4gLVtXZWJGcmFt
ZShXZWJJbnRlcm5hbCkgX2FkZERhdGE6XSAoc2VsZj0weDEzMDJlYTUwLCBfY21kPTB4MjUyMTAw
LCBkYXRhPTB4MTMyMjg3YzApIGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbTo0ODUKIzI2IDB4MDAxYjQwNzUgaW4gLVtXZWJGcmFtZShXZWJJbnRlcm5h
bCkgX3JlY2VpdmVkRGF0YTp0ZXh0RW5jb2RpbmdOYW1lOl0gKHNlbGY9MHgxMzAyZWE1MCwgX2Nt
ZD0weDI1MjUzYywgZGF0YT0weDEzMjI4N2MwLCB0ZXh0RW5jb2RpbmdOYW1lPTB4MTRiYzNlNTAp
IGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbTo5OTAK
IzI3IDB4MDAxYzNmYjAgaW4gLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gcmVjZWl2ZWREYXRhOndp
dGhEYXRhU291cmNlOl0gKHNlbGY9MHgxNGJiZTg1MCwgX2NtZD0weDI1N2E0ZSwgZGF0YT0weDEz
MjI4N2MwLCBkYXRhU291cmNlPTB4MTRiYjMzNDApIGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06MTYzCiMyOCAweDAwMWEyMWE0
IGluIC1bV2ViRGF0YVNvdXJjZShXZWJJbnRlcm5hbCkgX3JlY2VpdmVkRGF0YTpdIChzZWxmPTB4
MTRiYjMzNDAsIF9jbWQ9MHgyNDQyM2QsIGRhdGE9MHgxMzIyODdjMCkgYXQgL1VzZXJzL0NhbWVy
b24vc2YvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06MTk4Cndhcm5pbmc6IGlu
dGVybmFsIGVycm9yOiBubyBDL0MrKyBmdW5kYW1lbnRhbCB0eXBlIDEKIzI5IDB4MDAxYjg2YWEg
aW4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQgKHRoaXM9MHgxMzIxMTY3MCwg
bG9hZGVyPTB4NDVhNWMwMCwgZGF0YT0weDE0N2RmMDAwICJfUCR3ZiQoKXtyZXR1cm4gdGhpcy5o
bX07Q21bX1BdLnBiPWZ1bmN0aW9uICRDbSRfUCRwYiQoYSl7aWYoYT09dGhpcy5obSlyZXR1cm47
aWYoYTx0aGlzLmhtKXRocm93IGkoY2ZhKTtpZihhPjQpdGhyb3cgaShkZmEpO2Zvcih2YXIgYj10
aGlzLmhtKzE7Yjw9YTtiKyspe3RoaXMuaG09Yjt0aGlzLkFjKCl9fTtDbVtfUF0uQWM9ZnVuY3Rp
b24gJENtJCIuLi4sIGxlbmd0aD0yMDQ4ODkpIGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06NzA3CiMzMCAweDAxZmQ1
YmE2IGluIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXR0ZWRMb2FkICh0aGlzPTB4NDVhNmMw
MCwgbG9hZGVyPTB4NDVhNWMwMCwgZGF0YT0weDE0N2RmMDAwICJfUCR3ZiQoKXtyZXR1cm4gdGhp
cy5obX07Q21bX1BdLnBiPWZ1bmN0aW9uICRDbSRfUCRwYiQoYSl7aWYoYT09dGhpcy5obSlyZXR1
cm47aWYoYTx0aGlzLmhtKXRocm93IGkoY2ZhKTtpZihhPjQpdGhyb3cgaShkZmEpO2Zvcih2YXIg
Yj10aGlzLmhtKzE7Yjw9YTtiKyspe3RoaXMuaG09Yjt0aGlzLkFjKCl9fTtDbVtfUF0uQWM9ZnVu
Y3Rpb24gJENtJCIuLi4sIGxlbmd0aD0yMDQ4ODkpIGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDozMzIyCiMzMSAweDAxZjczNzNmIGluIFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkICh0aGlzPTB4NDVhNWMwMCwgZGF0YT0weDE0N2Rm
MDAwICJfUCR3ZiQoKXtyZXR1cm4gdGhpcy5obX07Q21bX1BdLnBiPWZ1bmN0aW9uICRDbSRfUCRw
YiQoYSl7aWYoYT09dGhpcy5obSlyZXR1cm47aWYoYTx0aGlzLmhtKXRocm93IGkoY2ZhKTtpZihh
PjQpdGhyb3cgaShkZmEpO2Zvcih2YXIgYj10aGlzLmhtKzE7Yjw9YTtiKyspe3RoaXMuaG09Yjt0
aGlzLkFjKCl9fTtDbVtfUF0uQWM9ZnVuY3Rpb24gJENtJCIuLi4sIGxlbmd0aD0yMDQ4ODkpIGF0
IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDozNDQK
IzMyIDB4MDFmNzM5NGMgaW4gV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlY2VpdmVkRGF0YSAo
dGhpcz0weDQ1YTVjMDAsIGRhdGE9MHgxNDdkZjAwMCAiX1Akd2YkKCl7cmV0dXJuIHRoaXMuaG19
O0NtW19QXS5wYj1mdW5jdGlvbiAkQ20kX1AkcGIkKGEpe2lmKGE9PXRoaXMuaG0pcmV0dXJuO2lm
KGE8dGhpcy5obSl0aHJvdyBpKGNmYSk7aWYoYT40KXRocm93IGkoZGZhKTtmb3IodmFyIGI9dGhp
cy5obSsxO2I8PWE7YisrKXt0aGlzLmhtPWI7dGhpcy5BYygpfX07Q21bX1BdLkFjPWZ1bmN0aW9u
ICRDbSQiLi4uLCBsZW5ndGg9MjA0ODg5KSBhdCAvVXNlcnMvQ2FtZXJvbi9zZi9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6MzU2CiMzMyAweDAxZmQ1NDY1IGluIFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWNlaXZlZERhdGEgKHRoaXM9MHg0NWE2YzAwLCBkYXRhPTB4MTQ3ZGYwMDAg
Il9QJHdmJCgpe3JldHVybiB0aGlzLmhtfTtDbVtfUF0ucGI9ZnVuY3Rpb24gJENtJF9QJHBiJChh
KXtpZihhPT10aGlzLmhtKXJldHVybjtpZihhPHRoaXMuaG0pdGhyb3cgaShjZmEpO2lmKGE+NCl0
aHJvdyBpKGRmYSk7Zm9yKHZhciBiPXRoaXMuaG0rMTtiPD1hO2IrKyl7dGhpcy5obT1iO3RoaXMu
QWMoKX19O0NtW19QXS5BYz1mdW5jdGlvbiAkQ20kIi4uLiwgbGVuZ3RoPTIwNDg4OSkgYXQgL1Vz
ZXJzL0NhbWVyb24vc2YvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwOjIyNzYKIzM0IDB4
MDIxYjljOGEgaW4gV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjphZGREYXRhICh0aGlzPTB4
NDM5ZmMwMCwgZGF0YT0weDE0N2RmMDAwICJfUCR3ZiQoKXtyZXR1cm4gdGhpcy5obX07Q21bX1Bd
LnBiPWZ1bmN0aW9uICRDbSRfUCRwYiQoYSl7aWYoYT09dGhpcy5obSlyZXR1cm47aWYoYTx0aGlz
LmhtKXRocm93IGkoY2ZhKTtpZihhPjQpdGhyb3cgaShkZmEpO2Zvcih2YXIgYj10aGlzLmhtKzE7
Yjw9YTtiKyspe3RoaXMuaG09Yjt0aGlzLkFjKCl9fTtDbVtfUF0uQWM9ZnVuY3Rpb24gJENtJCIu
Li4sIGxlbmd0aD0yMDQ4ODksIGFsbEF0T25jZT1mYWxzZSkgYXQgL1VzZXJzL0NhbWVyb24vc2Yv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoxMzgKIzM1IDB4MDIyYjZkOWYg
aW4gV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhICh0aGlzPTB4NDM5ZmMw
MCwgZGF0YT0weDE0N2RmMDAwICJfUCR3ZiQoKXtyZXR1cm4gdGhpcy5obX07Q21bX1BdLnBiPWZ1
bmN0aW9uICRDbSRfUCRwYiQoYSl7aWYoYT09dGhpcy5obSlyZXR1cm47aWYoYTx0aGlzLmhtKXRo
cm93IGkoY2ZhKTtpZihhPjQpdGhyb3cgaShkZmEpO2Zvcih2YXIgYj10aGlzLmhtKzE7Yjw9YTti
Kyspe3RoaXMuaG09Yjt0aGlzLkFjKCl9fTtDbVtfUF0uQWM9ZnVuY3Rpb24gJENtJCIuLi4sIGxl
bmd0aD0yMDQ4ODksIGxlbmd0aFJlY2VpdmVkPTIwNDg4OSwgYWxsQXRPbmNlPWZhbHNlKSBhdCAv
VXNlcnMvQ2FtZXJvbi9zZi9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6MjM0CiMz
NiAweDAyMWI5Zjk4IGluIFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEgKHRoaXM9MHg0MzlmYzAwLCBkYXRhPTB4MTQ3ZGYwMDAgIl9QJHdmJCgpe3JldHVybiB0aGlz
LmhtfTtDbVtfUF0ucGI9ZnVuY3Rpb24gJENtJF9QJHBiJChhKXtpZihhPT10aGlzLmhtKXJldHVy
bjtpZihhPHRoaXMuaG0pdGhyb3cgaShjZmEpO2lmKGE+NCl0aHJvdyBpKGRmYSk7Zm9yKHZhciBi
PXRoaXMuaG0rMTtiPD1hO2IrKyl7dGhpcy5obT1iO3RoaXMuQWMoKX19O0NtW19QXS5BYz1mdW5j
dGlvbiAkQ20kIi4uLiwgbGVuZ3RoPTIwNDg4OSwgbGVuZ3RoUmVjZWl2ZWQ9MjA0ODg5LCBhbGxB
dE9uY2U9ZmFsc2UpIGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYkNvcmUvbG9hZGVyL01haW5SZXNv
dXJjZUxvYWRlci5jcHA6Mjk2CiMzNyAweDAyMmI2OTRjIGluIFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSAodGhpcz0weDQzOWZjMDAsIGRhdGE9MHgxNDdkZjAwMCAiX1Ak
d2YkKCl7cmV0dXJuIHRoaXMuaG19O0NtW19QXS5wYj1mdW5jdGlvbiAkQ20kX1AkcGIkKGEpe2lm
KGE9PXRoaXMuaG0pcmV0dXJuO2lmKGE8dGhpcy5obSl0aHJvdyBpKGNmYSk7aWYoYT40KXRocm93
IGkoZGZhKTtmb3IodmFyIGI9dGhpcy5obSsxO2I8PWE7YisrKXt0aGlzLmhtPWI7dGhpcy5BYygp
fX07Q21bX1BdLkFjPWZ1bmN0aW9uICRDbSQiLi4uLCBsZW5ndGg9MjA0ODg5LCBsZW5ndGhSZWNl
aXZlZD0yMDQ4ODkpIGF0IC9Vc2Vycy9DYW1lcm9uL3NmL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDozNjUKIzM4IDB4MDIyYjNmNmYgaW4gLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSAoc2Vs
Zj0weDE0YmJjZTEwLCBfY21kPTB4OTQzZDIzMmMsIGNvbj0weDE0YmJjNzQwLCBkYXRhPTB4MTMx
MTFiZDAsIGxlbmd0aFJlY2VpdmVkPTIwNDg4OSkgYXQgL1VzZXJzL0NhbWVyb24vc2YvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbTo1MDIKIzM5IDB4OTQx
MDczYjcgaW4gLVtOU1VSTENvbm5lY3Rpb24oTlNVUkxDb25uZWN0aW9uUmVhbGx5SW50ZXJuYWwp
IHNlbmREaWRSZWNlaXZlRGF0YTpvcmlnaW5hbExlbmd0aDpdICgpCiM0MCAweDk0MTA3MzFlIGlu
IF9OU1VSTENvbm5lY3Rpb25EaWRSZWNlaXZlRGF0YSAoKQojNDEgMHg5NDViMzBhZiBpbiBzZW5k
RGlkUmVjZWl2ZURhdGFDYWxsYmFjayAoKQojNDIgMHg5NDViMDc2ZCBpbiBfQ0ZVUkxDb25uZWN0
aW9uU2VuZENhbGxiYWNrcyAoKQojNDMgMHg5NDViMDBkOSBpbiBtdXhlclNvdXJjZVBlcmZvcm0g
KCkKIzQ0IDB4OTI3Nzc2MmUgaW4gQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKCkKIzQ1IDB4OTI3Nzdk
MTggaW4gQ0ZSdW5Mb29wUnVuSW5Nb2RlICgpCiM0NiAweDkyOGQ3NmEwIGluIFJ1bkN1cnJlbnRF
dmVudExvb3BJbk1vZGUgKCkKIzQ3IDB4OTI4ZDc0YjkgaW4gUmVjZWl2ZU5leHRFdmVudENvbW1v
biAoKQojNDggMHg5MjhkNzMyZCBpbiBCbG9ja1VudGlsTmV4dEV2ZW50TWF0Y2hpbmdMaXN0SW5N
b2RlICgpCiM0OSAweDk1OTk5N2Q5IGluIF9EUFNOZXh0RXZlbnQgKCkKIzUwIDB4OTU5OTkwOGUg
aW4gLVtOU0FwcGxpY2F0aW9uIG5leHRFdmVudE1hdGNoaW5nTWFzazp1bnRpbERhdGU6aW5Nb2Rl
OmRlcXVldWU6XSAoKQojNTEgMHgwMDAwN2YyZSBpbiA/PyAoKQojNTIgMHg5NTk5MjBjNSBpbiAt
W05TQXBwbGljYXRpb24gcnVuXSAoKQojNTMgMHg5NTk1ZjMwYSBpbiBOU0FwcGxpY2F0aW9uTWFp
biAoKQojNTQgMHgwMDBiOTkwNiBpbiA/PyAoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21067</attachid>
            <date>2008-05-11 03:37:49 -0700</date>
            <delta_ts>2008-05-11 04:04:47 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>gmail.diff</filename>
            <type>text/plain</type>
            <size>4584</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMzMDMwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDgtMDUtMTEgIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDE4OTYxOiBTUVVJUlJFTEZJU0g6IEdtYWls
IGRvZXNuJ3QgbG9hZAorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4OTYxPgorCisgICAgICAgIEZpeCBjb2RlZ2VuIGZvciBsb2dpY2FsIG5vZGVzIHNv
IHRoYXQgdGhleSBkb24ndCB1c2UgdGhlaXIgZGVzdGluYXRpb24KKyAgICAgICAgYXMgYSB0ZW1w
b3JhcnkuCisKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoS0pTOjpMb2dpY2Fs
QW5kTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpMb2dpY2FsT3JOb2RlOjplbWl0Q29k
ZSk6CisKIDIwMDgtMDUtMTAgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9k
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHJldmlz
aW9uIDMzMDMwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzkxMywxNSArMzkxMywxNSBAQCB1aW50MzJfdCBCaXRPck5vZGU6OmV2YWx1YXRlVG9V
SW50MzIoT2xkCiAKIFJlZ2lzdGVySUQqIExvZ2ljYWxBbmROb2RlOjplbWl0Q29kZShDb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gbmV3RHN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGVtcCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAg
ICBSZWZQdHI8TGFiZWxJRD4gdGFyZ2V0ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgCi0g
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5nZXQoKSwgbV9leHByMS5nZXQoKSk7Ci0gICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxzZShuZXdEc3QuZ2V0KCksIHRhcmdldC5nZXQoKSk7Ci0g
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5nZXQoKSwgbV9leHByMi5nZXQoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKHRlbXAuZ2V0KCksIG1fZXhwcjEuZ2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmRmFsc2UodGVtcC5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKKyAgICBnZW5l
cmF0b3IuZW1pdE5vZGUodGVtcC5nZXQoKSwgbV9leHByMi5nZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbCh0YXJnZXQuZ2V0KCkpOwogCi0gICAgcmV0dXJuIG5ld0RzdC5nZXQoKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB0ZW1wLmdl
dCgpKTsKIH0KIAogdm9pZCBMb2dpY2FsQW5kTm9kZTo6b3B0aW1pemVWYXJpYWJsZUFjY2VzcyhP
bGRJbnRlcnByZXRlckV4ZWNTdGF0ZSosIGNvbnN0IFN5bWJvbFRhYmxlJiwgY29uc3QgTG9jYWxT
dG9yYWdlJiwgTm9kZVN0YWNrJiBub2RlU3RhY2spCkBAIC0zOTUzLDE1ICszOTUzLDE1IEBAIGJv
b2wgTG9naWNhbEFuZE5vZGU6OmV2YWx1YXRlVG9Cb29sZWFuKE8KIAogUmVnaXN0ZXJJRCogTG9n
aWNhbE9yTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5ld0RzdCA9IGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgUmVmUHRyPExhYmVsSUQ+IHRhcmdldCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwogICAgIAotICAgIGdlbmVyYXRvci5lbWl0Tm9kZShuZXdEc3Qu
Z2V0KCksIG1fZXhwcjEuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShuZXdE
c3QuZ2V0KCksIHRhcmdldC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5n
ZXQoKSwgbV9leHByMi5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRlbXAuZ2V0KCks
IG1fZXhwcjEuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZSh0ZW1wLmdldCgp
LCB0YXJnZXQuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wLmdldCgpLCBtX2V4
cHIyLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRhcmdldC5nZXQoKSk7CiAKLSAg
ICByZXR1cm4gbmV3RHN0LmdldCgpOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGlu
YXRpb25JZk5lZWRlZChkc3QsIHRlbXAuZ2V0KCkpOwogfQogCiB2b2lkIExvZ2ljYWxPck5vZGU6
Om9wdGltaXplVmFyaWFibGVBY2Nlc3MoT2xkSW50ZXJwcmV0ZXJFeGVjU3RhdGUqLCBjb25zdCBT
eW1ib2xUYWJsZSYsIGNvbnN0IExvY2FsU3RvcmFnZSYsIE5vZGVTdGFjayYgbm9kZVN0YWNrKQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMzMwMzApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwOC0wNS0xMSAgQ2FtZXJvbiBad2FyaWNoICA8
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yOgorCisgICAgICAgIEJ1ZyAxODk2MTogU1FV
SVJSRUxGSVNIOiBHbWFpbCBkb2Vzbid0IGxvYWQKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk2MT4KKworICAgICAgICAqIGZhc3QvanMvY29kZWdl
bi10ZW1wb3Jhcmllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvY29k
ZWdlbi10ZW1wb3Jhcmllcy5odG1sOiBBZGRlZC4KKwogMjAwOC0wNS0xMCAgTWFjaWVqIFN0YWNo
b3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlci4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvY29kZWdlbi10ZW1wb3Jhcmllcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9jb2RlZ2VuLXRlbXBvcmFyaWVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvY29kZWdlbi10
ZW1wb3Jhcmllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1Rl
c3RzIHdoZXRoZXIgZXZhbCgpIHdvcmtzIGluc2lkZSBzdGF0ZW1lbnRzIHRoYXQgcmVhZCBhbmQg
bW9kaWZ5IGEgdmFsdWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGEg
aXMgdHJ1ZQorUEFTUyBiIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9jb2RlZ2VuLXRl
bXBvcmFyaWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9jb2RlZ2Vu
LXRlbXBvcmFyaWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2Nv
ZGVnZW4tdGVtcG9yYXJpZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb2RlZ2VuLXRlbXBvcmFyaWVzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="9211"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21068</attachid>
            <date>2008-05-11 04:04:47 -0700</date>
            <delta_ts>2008-05-11 04:09:48 -0700</delta_ts>
            <desc>Proposed patch with test</desc>
            <filename>gmail.diff</filename>
            <type>text/plain</type>
            <size>5136</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMzMDMwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDgtMDUtMTEgIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDE4OTYxOiBTUVVJUlJFTEZJU0g6IEdtYWls
IGRvZXNuJ3QgbG9hZAorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4OTYxPgorCisgICAgICAgIEZpeCBjb2RlZ2VuIGZvciBsb2dpY2FsIG5vZGVzIHNv
IHRoYXQgdGhleSBkb24ndCB1c2UgdGhlaXIgZGVzdGluYXRpb24KKyAgICAgICAgYXMgYSB0ZW1w
b3JhcnkuCisKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoS0pTOjpMb2dpY2Fs
QW5kTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpMb2dpY2FsT3JOb2RlOjplbWl0Q29k
ZSk6CisKIDIwMDgtMDUtMTAgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9k
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHJldmlz
aW9uIDMzMDMwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzkxMywxNSArMzkxMywxNSBAQCB1aW50MzJfdCBCaXRPck5vZGU6OmV2YWx1YXRlVG9V
SW50MzIoT2xkCiAKIFJlZ2lzdGVySUQqIExvZ2ljYWxBbmROb2RlOjplbWl0Q29kZShDb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gbmV3RHN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGVtcCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAg
ICBSZWZQdHI8TGFiZWxJRD4gdGFyZ2V0ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgCi0g
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5nZXQoKSwgbV9leHByMS5nZXQoKSk7Ci0gICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxzZShuZXdEc3QuZ2V0KCksIHRhcmdldC5nZXQoKSk7Ci0g
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5nZXQoKSwgbV9leHByMi5nZXQoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKHRlbXAuZ2V0KCksIG1fZXhwcjEuZ2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmRmFsc2UodGVtcC5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKKyAgICBnZW5l
cmF0b3IuZW1pdE5vZGUodGVtcC5nZXQoKSwgbV9leHByMi5nZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbCh0YXJnZXQuZ2V0KCkpOwogCi0gICAgcmV0dXJuIG5ld0RzdC5nZXQoKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB0ZW1wLmdl
dCgpKTsKIH0KIAogdm9pZCBMb2dpY2FsQW5kTm9kZTo6b3B0aW1pemVWYXJpYWJsZUFjY2VzcyhP
bGRJbnRlcnByZXRlckV4ZWNTdGF0ZSosIGNvbnN0IFN5bWJvbFRhYmxlJiwgY29uc3QgTG9jYWxT
dG9yYWdlJiwgTm9kZVN0YWNrJiBub2RlU3RhY2spCkBAIC0zOTUzLDE1ICszOTUzLDE1IEBAIGJv
b2wgTG9naWNhbEFuZE5vZGU6OmV2YWx1YXRlVG9Cb29sZWFuKE8KIAogUmVnaXN0ZXJJRCogTG9n
aWNhbE9yTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5ld0RzdCA9IGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgUmVmUHRyPExhYmVsSUQ+IHRhcmdldCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwogICAgIAotICAgIGdlbmVyYXRvci5lbWl0Tm9kZShuZXdEc3Qu
Z2V0KCksIG1fZXhwcjEuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShuZXdE
c3QuZ2V0KCksIHRhcmdldC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5n
ZXQoKSwgbV9leHByMi5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRlbXAuZ2V0KCks
IG1fZXhwcjEuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZSh0ZW1wLmdldCgp
LCB0YXJnZXQuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wLmdldCgpLCBtX2V4
cHIyLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRhcmdldC5nZXQoKSk7CiAKLSAg
ICByZXR1cm4gbmV3RHN0LmdldCgpOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGlu
YXRpb25JZk5lZWRlZChkc3QsIHRlbXAuZ2V0KCkpOwogfQogCiB2b2lkIExvZ2ljYWxPck5vZGU6
Om9wdGltaXplVmFyaWFibGVBY2Nlc3MoT2xkSW50ZXJwcmV0ZXJFeGVjU3RhdGUqLCBjb25zdCBT
eW1ib2xUYWJsZSYsIGNvbnN0IExvY2FsU3RvcmFnZSYsIE5vZGVTdGFjayYgbm9kZVN0YWNrKQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMzMwMzApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOC0wNS0xMSAgQ2FtZXJvbiBad2FyaWNoICA8
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yOgorCisgICAgICAgIEJ1ZyAxODk2MTogU1FV
SVJSRUxGSVNIOiBHbWFpbCBkb2Vzbid0IGxvYWQKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk2MT4KKworICAgICAgICAqIGZhc3QvanMvY29kZWdl
bi10ZW1wb3Jhcmllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvY29k
ZWdlbi10ZW1wb3Jhcmllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNl
cy9jb2RlZ2VuLXRlbXBvcmFyaWVzLmpzOiBBZGRlZC4KKwogMjAwOC0wNS0xMCAgTWFjaWVqIFN0
YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlci4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvY29kZWdlbi10ZW1wb3Jhcmllcy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9jb2RlZ2VuLXRlbXBvcmFyaWVz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvY29kZWdl
bi10ZW1wb3Jhcmllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAK
K1Rlc3RzIHdoZXRoZXIgYnl0ZWNvZGUgY29kZWdlbiBwcm9wZXJseSBoYW5kbGVzIHRlbXBvcmFy
aWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBhIGlzIHRydWUKK1BB
U1MgYiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvY29kZWdlbi10ZW1wb3Jhcmllcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvY29kZWdlbi10ZW1wb3Jhcmll
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9jb2RlZ2VuLXRlbXBv
cmFyaWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29kZWdlbi10ZW1wb3Jhcmllcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9jb2RlZ2Vu
LXRlbXBvcmFyaWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3Vy
Y2VzL2NvZGVnZW4tdGVtcG9yYXJpZXMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3Jlc291cmNlcy9jb2RlZ2VuLXRlbXBvcmFyaWVzLmpzCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEzIEBACitkZXNjcmlwdGlvbigKKydUZXN0cyB3aGV0aGVyIGJ5dGVjb2RlIGNvZGVn
ZW4gcHJvcGVybHkgaGFuZGxlcyB0ZW1wb3Jhcmllcy4nCispOworCit2YXIgYSA9IHRydWU7Cith
ID0gZmFsc2UgfHwgYTsKK3Nob3VsZEJlVHJ1ZSgiYSIpOworCit2YXIgYiA9IGZhbHNlOworYiA9
IHRydWUgJiYgYjsKK3Nob3VsZEJlRmFsc2UoImIiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsK
</data>
<flag name="review"
          id="9212"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>