<?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>46296</bug_id>
          
          <creation_ts>2010-09-22 12:55:25 -0700</creation_ts>
          <short_desc>Add more functionality in WebView interface for currently focused elements</short_desc>
          <delta_ts>2010-10-09 14:30:45 -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>WebKit API</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="Varun Jain">varunjain</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bryeung</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>rjkroege</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>283179</commentid>
    <comment_count>0</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2010-09-22 12:55:25 -0700</bug_when>
    <thetext>Adding two methods to the WebView interface:
1. method to check if currently focused node is a textfield or
other types of input element. This is required by the renderer
to take appropriate action. For example, on touch devices, if the
focused node is a textfield, we may want to invoke an on-screen
keyboard.
2. method to inform the renderer to scroll the currently focused
element into view, for instance, when it is hidden due to window
resizing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283187</commentid>
    <comment_count>1</comment_count>
      <attachid>68425</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2010-09-22 13:02:32 -0700</bug_when>
    <thetext>Created attachment 68425
Added required functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287936</commentid>
    <comment_count>2</comment_count>
      <attachid>69397</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2010-09-30 16:57:29 -0700</bug_when>
    <thetext>Created attachment 69397
Addressed reviewer&apos;s comments

As pointed out by the reviewer in an offline conversation, the method isInputElement that I had included in the WebView interface in my previous patch is redundant since the same information is available from the WebNode object. In this patch, I have removed that method and added the necessary methods to WebNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287939</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-30 16:59:41 -0700</bug_when>
    <thetext>Attachment 69397 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebNode.cpp:156:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 6 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>288049</commentid>
    <comment_count>4</comment_count>
      <attachid>69420</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2010-09-30 21:50:27 -0700</bug_when>
    <thetext>Created attachment 69420
Fixed style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288320</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-01 10:14:13 -0700</bug_when>
    <thetext>First off, WebKit API reviews should go through Darin Fisher.  I noticed he wasn&apos;t even on the CC list which is probably why this hasn&apos;t been reviewed yet.

Second, what is this for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288502</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-01 14:52:46 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Adding two methods to the WebView interface:
&gt; 1. method to check if currently focused node is a textfield or
&gt; other types of input element. This is required by the renderer
&gt; to take appropriate action. For example, on touch devices, if the
&gt; focused node is a textfield, we may want to invoke an on-screen
&gt; keyboard.

It sounds like this should be accomplished by observing a client notification from WebKit.  WebViewClient already has a textFieldDidBeginEditing notification.  Is that not sufficient?


&gt; 2. method to inform the renderer to scroll the currently focused
&gt; element into view, for instance, when it is hidden due to window
&gt; resizing.

This seems like a reasonable addition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288964</commentid>
    <comment_count>7</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2010-10-04 09:07:01 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #0)
&gt; &gt; Adding two methods to the WebView interface:
&gt; &gt; 1. method to check if currently focused node is a textfield or
&gt; &gt; other types of input element. This is required by the renderer
&gt; &gt; to take appropriate action. For example, on touch devices, if the
&gt; &gt; focused node is a textfield, we may want to invoke an on-screen
&gt; &gt; keyboard.
&gt; 
&gt; It sounds like this should be accomplished by observing a client notification from WebKit.  WebViewClient already has a textFieldDidBeginEditing notification.  Is that not sufficient?

In my latest patch, I am accomplishing this by observing client notification in RenderView::focusedNodeChanged. This change is in the related Chromium CL that you can see here: http://codereview.chromium.org/3474007

However, to take into account all text-input elements, I need the API extention to WebNode to determine if the newly focused node is a textfield, textarea or content editable div.

the notification that you have suggested (textFieldDidBeginEditing) seems to be textfield specific as it is defined to work with HTMLInputElement. It will require significant API changes to both WebInputElement and WebViewImpl to make it work for textareas and content editable divs. In contrast, my change adds a couple of methods to WebNode which expose a little more information about the underlying WebCore::Node (which should have been exposed anyways). Is there a specific reason why you would not want those two methods in WebNode?



&gt; 
&gt; 
&gt; &gt; 2. method to inform the renderer to scroll the currently focused
&gt; &gt; element into view, for instance, when it is hidden due to window
&gt; &gt; resizing.
&gt; 
&gt; This seems like a reasonable addition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290504</commentid>
    <comment_count>8</comment_count>
      <attachid>69420</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-06 12:02:47 -0700</bug_when>
    <thetext>Comment on attachment 69420
Fixed style error

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

&gt; WebKit/chromium/src/WebNode.cpp:157
&gt; +        return element &amp;&amp; element-&gt;isTextFormControl();

i think you should move this method to WebElement.  then the code to
determine if a WebNode is a WebElement would move to the embedder.
see also WebElement::isFormControlElement.

i think this new method should be named isTextFormControlElement.

actually, we already have WebInputElement::isTextField.  can you
use that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290816</commentid>
    <comment_count>9</comment_count>
      <attachid>70037</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2010-10-06 22:53:31 -0700</bug_when>
    <thetext>Created attachment 70037
Addressed reviewer&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290819</commentid>
    <comment_count>10</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2010-10-06 22:58:36 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 69420 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69420&amp;action=review
&gt; 
&gt; &gt; WebKit/chromium/src/WebNode.cpp:157
&gt; &gt; +        return element &amp;&amp; element-&gt;isTextFormControl();
&gt; 
&gt; i think you should move this method to WebElement.  then the code to
&gt; determine if a WebNode is a WebElement would move to the embedder.
&gt; see also WebElement::isFormControlElement.

agreed. moved the method to WebElement and changed the chrome CL to incorporate the check for WebNode vs. WebElement.
Also, I checked and looks like WebElement::isFormControlElement is too generic for my cause. I only need textfields and textareas which is served by isTextFormControl()

&gt; 
&gt; i think this new method should be named isTextFormControlElement.

The method in the underlying WebCore::Element is called isTextFormControl(). I think it would be better to keep the naming consistent in the wrapper.

&gt; 
&gt; actually, we already have WebInputElement::isTextField.  can you
&gt; use that?

As I mentioned earlier, WebInputElement is textfield specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291852</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-08 14:13:17 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 69420 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69420&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; WebKit/chromium/src/WebNode.cpp:157
&gt; &gt; &gt; +        return element &amp;&amp; element-&gt;isTextFormControl();
&gt; &gt; 
&gt; &gt; i think you should move this method to WebElement.  then the code to
&gt; &gt; determine if a WebNode is a WebElement would move to the embedder.
&gt; &gt; see also WebElement::isFormControlElement.
&gt; 
&gt; agreed. moved the method to WebElement and changed the chrome CL to incorporate the check for WebNode vs. WebElement.
&gt; Also, I checked and looks like WebElement::isFormControlElement is too generic for my cause. I only need textfields and textareas which is served by isTextFormControl()

OK

&gt; 
&gt; &gt; 
&gt; &gt; i think this new method should be named isTextFormControlElement.
&gt; 
&gt; The method in the underlying WebCore::Element is called isTextFormControl(). I think it would be better to keep the naming consistent in the wrapper.

Sorry to bikeshed on this point, but I think it is more important for the public facing API to be consistent.  That&apos;s why I said to use the Element suffix.


&gt; 
&gt; &gt; 
&gt; &gt; actually, we already have WebInputElement::isTextField.  can you
&gt; &gt; use that?
&gt; 
&gt; As I mentioned earlier, WebInputElement is textfield specific.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291918</commentid>
    <comment_count>12</comment_count>
      <attachid>70306</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2010-10-08 15:49:24 -0700</bug_when>
    <thetext>Created attachment 70306
Minor changes to address reviewer&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291919</commentid>
    <comment_count>13</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2010-10-08 15:49:58 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (From update of attachment 69420 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69420&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; WebKit/chromium/src/WebNode.cpp:157
&gt; &gt; &gt; &gt; +        return element &amp;&amp; element-&gt;isTextFormControl();
&gt; &gt; &gt; 
&gt; &gt; &gt; i think you should move this method to WebElement.  then the code to
&gt; &gt; &gt; determine if a WebNode is a WebElement would move to the embedder.
&gt; &gt; &gt; see also WebElement::isFormControlElement.
&gt; &gt; 
&gt; &gt; agreed. moved the method to WebElement and changed the chrome CL to incorporate the check for WebNode vs. WebElement.
&gt; &gt; Also, I checked and looks like WebElement::isFormControlElement is too generic for my cause. I only need textfields and textareas which is served by isTextFormControl()
&gt; 
&gt; OK
&gt; 
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; i think this new method should be named isTextFormControlElement.
&gt; &gt; 
&gt; &gt; The method in the underlying WebCore::Element is called isTextFormControl(). I think it would be better to keep the naming consistent in the wrapper.
&gt; 
&gt; Sorry to bikeshed on this point, but I think it is more important for the public facing API to be consistent.  That&apos;s why I said to use the Element suffix.

Done.

&gt; 
&gt; 
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; actually, we already have WebInputElement::isTextField.  can you
&gt; &gt; &gt; use that?
&gt; &gt; 
&gt; &gt; As I mentioned earlier, WebInputElement is textfield specific.
&gt; 
&gt; OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292199</commentid>
    <comment_count>14</comment_count>
      <attachid>70306</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-09 14:30:38 -0700</bug_when>
    <thetext>Comment on attachment 70306
Minor changes to address reviewer&apos;s comments

Clearing flags on attachment: 70306

Committed r69459: &lt;http://trac.webkit.org/changeset/69459&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292200</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-09 14:30:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68425</attachid>
            <date>2010-09-22 13:02:32 -0700</date>
            <delta_ts>2010-09-30 16:57:29 -0700</delta_ts>
            <desc>Added required functions.</desc>
            <filename>keyboard.patch</filename>
            <type>text/plain</type>
            <size>5521</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDQxYWIwOGQuLjA4MmYzY2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI5IEBACisyMDEwLTA5LTIyICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcg
dHdvIG1ldGhvZHMgdG8gdGhlIFdlYlZpZXcgaW50ZXJmYWNlOgorICAgICAgICAxLiBtZXRob2Qg
dG8gY2hlY2sgaWYgY3VycmVudGx5IGZvY3VzZWQgbm9kZSBpcyBhIHRleHRmaWVsZCBvcgorICAg
ICAgICBvdGhlciB0eXBlcyBvZiBpbnB1dCBlbGVtZW50LiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRo
ZSByZW5kZXJlcgorICAgICAgICB0byB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbi4gRm9yIGV4YW1w
bGUsIG9uIHRvdWNoIGRldmljZXMsIGlmIHRoZQorICAgICAgICBmb2N1c2VkIG5vZGUgaXMgYSB0
ZXh0ZmllbGQsIHdlIG1heSB3YW50IHRvIGludm9rZSBhbiBvbi1zY3JlZW4KKyAgICAgICAga2V5
Ym9hcmQuCisgICAgICAgIDIuIG1ldGhvZCB0byBpbmZvcm0gdGhlIHJlbmRlcmVyIHRvIHNjcm9s
bCB0aGUgY3VycmVudGx5IGZvY3VzZWQKKyAgICAgICAgZWxlbWVudCBpbnRvIHZpZXcsIGZvciBp
bnN0YW5jZSwgd2hlbiBpdCBpcyBoaWRkZW4gZHVlIHRvIHdpbmRvdworICAgICAgICByZXNpemlu
Zy4KKworICAgICAgICBBZGQgbW9yZSBmdW5jdGlvbmFsaXR5IGluIFdlYlZpZXcgaW50ZXJmYWNl
IGZvciBjdXJyZW50bHkgZm9jdXNlZCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyOTYKKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgICogc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
S2l0Ojp0b0hUTUxUZXh0QXJlYUVsZW1lbnQpOgorICAgICAgICAqIHNyYy9ET01VdGlsaXRpZXNQ
cml2YXRlLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnNjcm9sbEZvY3VzZWROb2RlSW50b1ZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6aXNJbnB1dEVsZW1lbnRGb2N1c2VkKToKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuaDoKKwogMjAxMC0wOS0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgQ2hyb21pdW0gYnVpbGQgZml4LiBGaXggYnVp
bGQgd2hlbiBhY2NlbGVyYXRlZApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAppbmRleCBiMGQwODY0
Li4xNjFjYWJjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAor
KysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtMTUwLDYgKzE1MCwxNCBA
QCBwdWJsaWM6CiAgICAgLy8gc2VuZCBpdC4KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb2N1c2Vk
Tm9kZSgpID0gMDsKIAorICAgIC8vIFNjcm9sbHMgdGhlIG5vZGUgY3VycmVudGx5IGluIGZvY3Vz
IGludG8gdmlldy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRm9jdXNlZE5vZGVJbnRvVmlldygp
ID0gMDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBjdXJyZW50bHkgZm9jdXNlZCBlbGVtZW50
IGlzIGEgdGV4dGZpZWxkLCB0ZXh0IGFyZWEgb3IKKyAgICAvLyBhIGNvbnRlbnQgZWRpdGFibGUg
ZGl2IChlbGVtZW50cyB0aGF0IG1heSByZXF1aXJlIGFuIGlucHV0IGRldmljZSBzdWNoCisgICAg
Ly8gYXMgYSBzb2Z0IGtleWJvYXJkKS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dEVsZW1lbnRG
b2N1c2VkKCkgPSAwOworCiAKICAgICAvLyBab29tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAKaW5kZXggNmY5NTJmNy4uNjJiZWExOSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiSFRNTE1ldGFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEFy
ZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVt
ZW50LmgiCkBAIC01OSw2ICs2MCwxMSBAQCBIVE1MTm9kZVR5cGUqIHRvSFRNTEVsZW1lbnQoTm9k
ZSogbm9kZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK0hUTUxUZXh0QXJlYUVsZW1lbnQqIHRvSFRNTFRleHRBcmVhRWxlbWVudChOb2RlKiBub2Rl
KQoreworICAgIHJldHVybiB0b0hUTUxFbGVtZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG5vZGUs
IEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpOworfQorCiBIVE1MSW5wdXRFbGVtZW50KiB0b0hUTUxJ
bnB1dEVsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gdG9IVE1MRWxlbWVudDxIVE1M
SW5wdXRFbGVtZW50Pihub2RlLCBIVE1MTmFtZXM6OmlucHV0VGFnKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5oIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmgKaW5kZXggZjVkMDNhNS4uZmZiMGRmYyAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmgKQEAgLTM5LDYgKzM5LDcgQEAg
Y2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNzIEhUTUxMaW5rRWxlbWVudDsKIGNsYXNzIEhU
TUxNZXRhRWxlbWVudDsKIGNsYXNzIEhUTUxPcHRpb25FbGVtZW50OworY2xhc3MgSFRNTFRleHRB
cmVhRWxlbWVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwogfQpAQCAtNDgs
NiArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gSWYgbm9kZSBpcyBhbiBIVE1MIG5v
ZGUgd2l0aCBhIHRhZyBuYW1lIG9mIG5hbWUgaXQgaXMgY2FzdGVkIGFuZCByZXR1cm5lZC4KIC8v
IElmIG5vZGUgaXMgbm90IGFuIEhUTUwgbm9kZSBvciB0aGUgdGFnIG5hbWUgaXMgbm90IG5hbWUs
IDAgaXMgcmV0dXJuZWQuCitXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiB0b0hUTUxUZXh0
QXJlYUVsZW1lbnQoV2ViQ29yZTo6Tm9kZSopOwogV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCog
dG9IVE1MSW5wdXRFbGVtZW50KFdlYkNvcmU6Ok5vZGUqKTsKIFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudCogdG9IVE1MTGlua0VsZW1lbnQoV2ViQ29yZTo6Tm9kZSopOwogV2ViQ29yZTo6SFRNTE1l
dGFFbGVtZW50KiB0b0hUTUxNZXRhRWxlbWVudChXZWJDb3JlOjpOb2RlKik7CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDc2ODVhZmUuLjA5MGYyYzIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNTIwLDYgKzE1MjAsMzAgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6Y2xlYXJGb2N1c2VkTm9kZSgpCiAgICAgfQogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpzY3Jv
bGxGb2N1c2VkTm9kZUludG9WaWV3KCkKK3sKKyAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IGZvY3Vz
ZWRXZWJDb3JlTm9kZSgpOworICAgIGlmIChmb2N1c2VkTm9kZSAmJiBmb2N1c2VkTm9kZS0+aXNF
bGVtZW50Tm9kZSgpKSB7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnROb2RlID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KGZvY3VzZWROb2RlKTsKKyAgICAgICAgZWxlbWVudE5vZGUtPnNjcm9sbElu
dG9WaWV3SWZOZWVkZWQodHJ1ZSk7CisgICAgfQorfQorCitib29sIFdlYlZpZXdJbXBsOjppc0lu
cHV0RWxlbWVudEZvY3VzZWQoKQoreworICAgIE5vZGUqIGZvY3VzZWROb2RlID0gZm9jdXNlZFdl
YkNvcmVOb2RlKCk7CisKKyAgICAvLyBJZiBhIHRleHQgYm94IG9yIGFyZWEgb3IgY29udGVudCBl
ZGl0YWJsZSBlbGVtZW50IGlzIGZvY3VzZWQsIHdlIHJldHVybiB0cnVlLgorICAgIGJvb2wgaW5w
dXRFbGVtZW50Rm9jdXNlZCA9IGZhbHNlOworICAgIGlmIChmb2N1c2VkTm9kZSkgeworICAgICAg
ICBIVE1MSW5wdXRFbGVtZW50KiBodG1sSW5wdXRFbGVtZW50ID0gdG9IVE1MSW5wdXRFbGVtZW50
KGZvY3VzZWROb2RlKTsKKyAgICAgICAgaWYgKChodG1sSW5wdXRFbGVtZW50ICYmIGh0bWxJbnB1
dEVsZW1lbnQtPmlzVGV4dEZpZWxkKCkpCisgICAgICAgICAgICAgICAgfHwgdG9IVE1MVGV4dEFy
ZWFFbGVtZW50KGZvY3VzZWROb2RlKSB8fCBmb2N1c2VkTm9kZS0+aXNDb250ZW50RWRpdGFibGUo
KSkgCisgICAgICAgICAgICBpbnB1dEVsZW1lbnRGb2N1c2VkID0gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGlucHV0RWxlbWVudEZvY3VzZWQ7Cit9CisKIGludCBXZWJWaWV3SW1wbDo6em9vbUxl
dmVsKCkKIHsKICAgICByZXR1cm4gbV96b29tTGV2ZWw7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKaW5kZXggOGNlZmZkMy4uMzg1YmMzNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApA
QCAtMTMyLDYgKzEzMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNlZEZy
YW1lKFdlYkZyYW1lKiBmcmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEluaXRpYWxGb2N1cyhi
b29sIHJldmVyc2UpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZvY3VzZWROb2RlKCk7CisgICAg
dmlydHVhbCB2b2lkIHNjcm9sbEZvY3VzZWROb2RlSW50b1ZpZXcoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNJbnB1dEVsZW1lbnRGb2N1c2VkKCk7CiAgICAgdmlydHVhbCBpbnQgem9vbUxldmVsKCk7
CiAgICAgdmlydHVhbCBpbnQgc2V0Wm9vbUxldmVsKGJvb2wgdGV4dE9ubHksIGludCB6b29tTGV2
ZWwpOwogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtTWVkaWFQbGF5ZXJBY3Rpb24oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69397</attachid>
            <date>2010-09-30 16:57:29 -0700</date>
            <delta_ts>2010-09-30 21:50:27 -0700</delta_ts>
            <desc>Addressed reviewer&apos;s comments</desc>
            <filename>gitdiff.txt</filename>
            <type>text/plain</type>
            <size>4392</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDQxYWIwOGQuLjc1NGNiZWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI2IEBACisyMDEwLTA5LTMwICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcg
b25lIG1ldGhvZCB0byB0aGUgV2ViVmlldyBpbnRlcmZhY2U6IG1ldGhvZCB0byBpbmZvcm0gdGhl
CisgICAgICAgIHJlbmRlcmVyIHRvIHNjcm9sbCB0aGUgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVu
dCBpbnRvIHZpZXcsIGZvcgorICAgICAgICBpbnN0YW5jZSwgd2hlbiBpdCBpcyBoaWRkZW4gZHVl
IHRvIHdpbmRvdyByZXNpemluZy4KKyAgICAgICAgQWxzbyBhZGRpbmcgbWV0aG9kcyB0byBXZWJO
b2RlIHRvIGV4cG9zZSBtb3JlIGZlYXR1cmVzIG9mIHRoZQorICAgICAgICB1bmRlcmx5aW5nIFdl
YkNvcmU6Ok5vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NjI5NgorCisgICAgICAgICogcHVibGljL1dlYk5vZGUuaDoKKyAgICAgICAgKiBwdWJs
aWMvV2ViVmlldy5oOgorICAgICAgICAqIHNyYy9ET01VdGlsaXRpZXNQcml2YXRlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6dG9IVE1MVGV4dEFyZWFFbGVtZW50KToKKyAgICAgICAgKiBzcmMvRE9N
VXRpbGl0aWVzUHJpdmF0ZS5oOgorICAgICAgICAqIHNyYy9XZWJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTm9kZTo6aXNDb250ZW50RWRpdGFibGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb2RlOjppc1RleHRGb3JtQ29udHJvbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjcm9sbEZvY3VzZWROb2RlSW50b1Zp
ZXcpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTA5LTIyICBLZW5uZXRo
IFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBDaHJvbWl1
bSBidWlsZCBmaXguIEZpeCBidWlsZCB3aGVuIGFjY2VsZXJhdGVkCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Tm9kZS5oCmluZGV4IGY1NGZmMDQuLmExNTkwNmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTm9kZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5o
CkBAIC05Niw2ICs5Niw4IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIFdlYk5vZGVMaXN0IGNo
aWxkTm9kZXMoKTsKICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBjcmVhdGVNYXJrdXAoKSBjb25z
dDsKICAgICBXRUJLSVRfQVBJIGJvb2wgaXNUZXh0Tm9kZSgpIGNvbnN0OworICAgIFdFQktJVF9B
UEkgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgYm9vbCBp
c1RleHRGb3JtQ29udHJvbCgpIGNvbnN0OwogICAgIFdFQktJVF9BUEkgYm9vbCBpc0VsZW1lbnRO
b2RlKCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
V2ViU3RyaW5nJiBldmVudFR5cGUsIFdlYkRPTUV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpOwogICAgIFdFQktJVF9BUEkgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IFdlYlN0cmluZyYgZXZlbnRUeXBlLCBXZWJET01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlldy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggYjBkMDg2NC4u
NTg4YWNkZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBw
dWJsaWM6CiAgICAgLy8gc2VuZCBpdC4KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb2N1c2VkTm9k
ZSgpID0gMDsKIAorICAgIC8vIFNjcm9sbHMgdGhlIG5vZGUgY3VycmVudGx5IGluIGZvY3VzIGlu
dG8gdmlldy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRm9jdXNlZE5vZGVJbnRvVmlldygpID0g
MDsKKwogCiAgICAgLy8gWm9vbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTm9kZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUuY3BwCmluZGV4
IGNhZWE1ODkuLjYzNzkwYTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9k
ZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIldlYk5vZGUuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMTQ0LDYgKzE0NSwyMSBAQCBi
b29sIFdlYk5vZGU6OmlzVGV4dE5vZGUoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPmlz
VGV4dE5vZGUoKTsKIH0KIAorYm9vbCBXZWJOb2RlOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNDb250ZW50RWRpdGFibGUoKTsKK30KKworYm9v
bCBXZWJOb2RlOjppc1RleHRGb3JtQ29udHJvbCgpIGNvbnN0Cit7CisgICAgaWYgKGlzRWxlbWVu
dE5vZGUoKSkKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpFbGVtZW50Kj4obV9wcml2YXRlLmdldCgpKTsKKyAgICAgICAgcmV0
dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+aXNUZXh0Rm9ybUNvbnRyb2woKTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBib29sIFdlYk5vZGU6OmlzRWxlbWVudE5vZGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3ByaXZhdGUtPmlzRWxlbWVudE5vZGUoKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggNzY4NWFmZS4uZWQxYTU4MiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTE1MjAsNiArMTUyMCwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpj
bGVhckZvY3VzZWROb2RlKCkKICAgICB9CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEZv
Y3VzZWROb2RlSW50b1ZpZXcoKQoreworICAgIE5vZGUqIGZvY3VzZWROb2RlID0gZm9jdXNlZFdl
YkNvcmVOb2RlKCk7CisgICAgaWYgKGZvY3VzZWROb2RlICYmIGZvY3VzZWROb2RlLT5pc0VsZW1l
bnROb2RlKCkpIHsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudE5vZGUgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4oZm9jdXNlZE5vZGUpOworICAgICAgICBlbGVtZW50Tm9kZS0+c2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZCh0cnVlKTsKKyAgICB9Cit9CisKIGludCBXZWJWaWV3SW1wbDo6em9vbUxldmVs
KCkKIHsKICAgICByZXR1cm4gbV96b29tTGV2ZWw7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
aW5kZXggOGNlZmZkMy4uN2FmOWI0MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAt
MTMyLDYgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNlZEZyYW1l
KFdlYkZyYW1lKiBmcmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEluaXRpYWxGb2N1cyhib29s
IHJldmVyc2UpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZvY3VzZWROb2RlKCk7CisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbEZvY3VzZWROb2RlSW50b1ZpZXcoKTsKICAgICB2aXJ0dWFsIGludCB6
b29tTGV2ZWwoKTsKICAgICB2aXJ0dWFsIGludCBzZXRab29tTGV2ZWwoYm9vbCB0ZXh0T25seSwg
aW50IHpvb21MZXZlbCk7CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1NZWRpYVBsYXllckFjdGlv
bigK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69420</attachid>
            <date>2010-09-30 21:50:27 -0700</date>
            <delta_ts>2010-10-06 22:53:31 -0700</delta_ts>
            <desc>Fixed style error</desc>
            <filename>gitdiff.txt</filename>
            <type>text/plain</type>
            <size>4267</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDQxYWIwOGQuLjE2ZTJmZTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDEwLTA5LTMwICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcg
b25lIG1ldGhvZCB0byB0aGUgV2ViVmlldyBpbnRlcmZhY2U6IG1ldGhvZCB0byBpbmZvcm0gdGhl
CisgICAgICAgIHJlbmRlcmVyIHRvIHNjcm9sbCB0aGUgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVu
dCBpbnRvIHZpZXcsIGZvcgorICAgICAgICBpbnN0YW5jZSwgd2hlbiBpdCBpcyBoaWRkZW4gZHVl
IHRvIHdpbmRvdyByZXNpemluZy4KKyAgICAgICAgQWxzbyBhZGRpbmcgbWV0aG9kcyB0byBXZWJO
b2RlIHRvIGV4cG9zZSBtb3JlIGZlYXR1cmVzIG9mIHRoZQorICAgICAgICB1bmRlcmx5aW5nIFdl
YkNvcmU6Ok5vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NjI5NgorCisgICAgICAgICogcHVibGljL1dlYk5vZGUuaDoKKyAgICAgICAgKiBwdWJs
aWMvV2ViVmlldy5oOgorICAgICAgICAqIHNyYy9XZWJOb2RlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTm9kZTo6aXNDb250ZW50RWRpdGFibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2Rl
Ojppc1RleHRGb3JtQ29udHJvbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjcm9sbEZvY3VzZWROb2RlSW50b1ZpZXcpOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTA5LTIyICBLZW5uZXRoIFJ1c3Nl
bGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBDaHJvbWl1bSBidWls
ZCBmaXguIEZpeCBidWlsZCB3aGVuIGFjY2VsZXJhdGVkCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk5vZGUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5o
CmluZGV4IGY1NGZmMDQuLmExNTkwNmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTm9kZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCkBAIC05
Niw2ICs5Niw4IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIFdlYk5vZGVMaXN0IGNoaWxkTm9k
ZXMoKTsKICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBjcmVhdGVNYXJrdXAoKSBjb25zdDsKICAg
ICBXRUJLSVRfQVBJIGJvb2wgaXNUZXh0Tm9kZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgYm9v
bCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgYm9vbCBpc1RleHRG
b3JtQ29udHJvbCgpIGNvbnN0OwogICAgIFdFQktJVF9BUEkgYm9vbCBpc0VsZW1lbnROb2RlKCkg
Y29uc3Q7CiAgICAgV0VCS0lUX0FQSSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgV2ViU3Ry
aW5nJiBldmVudFR5cGUsIFdlYkRPTUV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpOwogICAgIFdFQktJVF9BUEkgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IFdl
YlN0cmluZyYgZXZlbnRUeXBlLCBXZWJET01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggYjBkMDg2NC4uNTg4YWNk
ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6
CiAgICAgLy8gc2VuZCBpdC4KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb2N1c2VkTm9kZSgpID0g
MDsKIAorICAgIC8vIFNjcm9sbHMgdGhlIG5vZGUgY3VycmVudGx5IGluIGZvY3VzIGludG8gdmll
dy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRm9jdXNlZE5vZGVJbnRvVmlldygpID0gMDsKKwog
CiAgICAgLy8gWm9vbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTm9kZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUuY3BwCmluZGV4IGNhZWE1
ODkuLjY5NjJmZTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIldlYk5vZGUuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMTQ0LDYgKzE0NSwyMCBAQCBib29sIFdl
Yk5vZGU6OmlzVGV4dE5vZGUoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPmlzVGV4dE5v
ZGUoKTsKIH0KIAorYm9vbCBXZWJOb2RlOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNDb250ZW50RWRpdGFibGUoKTsKK30KKworYm9vbCBXZWJO
b2RlOjppc1RleHRGb3JtQ29udHJvbCgpIGNvbnN0Cit7CisgICAgaWYgKGlzRWxlbWVudE5vZGUo
KSkgeworICAgICAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RWxlbWVudCo+KG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBlbGVtZW50
ICYmIGVsZW1lbnQtPmlzVGV4dEZvcm1Db250cm9sKCk7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwogYm9vbCBXZWJOb2RlOjppc0VsZW1lbnROb2RlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wcml2YXRlLT5pc0VsZW1lbnROb2RlKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDc2ODVhZmUuLmVkMWE1ODIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCkBAIC0xNTIwLDYgKzE1MjAsMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y2xlYXJGb2N1c2Vk
Tm9kZSgpCiAgICAgfQogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpzY3JvbGxGb2N1c2VkTm9kZUlu
dG9WaWV3KCkKK3sKKyAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IGZvY3VzZWRXZWJDb3JlTm9kZSgp
OworICAgIGlmIChmb2N1c2VkTm9kZSAmJiBmb2N1c2VkTm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7
CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnROb2RlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGZv
Y3VzZWROb2RlKTsKKyAgICAgICAgZWxlbWVudE5vZGUtPnNjcm9sbEludG9WaWV3SWZOZWVkZWQo
dHJ1ZSk7CisgICAgfQorfQorCiBpbnQgV2ViVmlld0ltcGw6Onpvb21MZXZlbCgpCiB7CiAgICAg
cmV0dXJuIG1fem9vbUxldmVsOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDhjZWZm
ZDMuLjdhZjliNDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTEzMiw2ICsxMzIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWRGcmFtZShXZWJGcmFtZSog
ZnJhbWUpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCByZXZlcnNlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb2N1c2VkTm9kZSgpOworICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxGb2N1c2VkTm9kZUludG9WaWV3KCk7CiAgICAgdmlydHVhbCBpbnQgem9vbUxldmVsKCk7
CiAgICAgdmlydHVhbCBpbnQgc2V0Wm9vbUxldmVsKGJvb2wgdGV4dE9ubHksIGludCB6b29tTGV2
ZWwpOwogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtTWVkaWFQbGF5ZXJBY3Rpb24oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70037</attachid>
            <date>2010-10-06 22:53:31 -0700</date>
            <delta_ts>2010-10-08 15:49:24 -0700</delta_ts>
            <desc>Addressed reviewer&apos;s comments</desc>
            <filename>gitdiff.txt</filename>
            <type>text/plain</type>
            <size>5173</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDcwMWE4ZmUuLjhlMDhmNjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDEwLTA5LTMwICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcg
b25lIG1ldGhvZCB0byB0aGUgV2ViVmlldyBpbnRlcmZhY2U6IG1ldGhvZCB0byBpbmZvcm0gdGhl
CisgICAgICAgIHJlbmRlcmVyIHRvIHNjcm9sbCB0aGUgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVu
dCBpbnRvIHZpZXcsIGZvcgorICAgICAgICBpbnN0YW5jZSwgd2hlbiBpdCBpcyBoaWRkZW4gZHVl
IHRvIHdpbmRvdyByZXNpemluZy4KKyAgICAgICAgQWxzbyBhZGRpbmcgbWV0aG9kcyB0byBXZWJO
b2RlIGFuZCBXZWJFbGVtZW50IHRvIGV4cG9zZSBtb3JlCisgICAgICAgIGZlYXR1cmVzIG9mIHRo
ZSB1bmRlcmx5aW5nIFdlYkNvcmU6Ok5vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjI5NgorCisgICAgICAgICogcHVibGljL1dlYkVsZW1lbnQu
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTm9kZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgICogc3JjL1dlYkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWxl
bWVudDo6aXNUZXh0Rm9ybUNvbnRyb2wpOgorICAgICAgICAqIHNyYy9XZWJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTm9kZTo6aXNDb250ZW50RWRpdGFibGUpOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzY3JvbGxG
b2N1c2VkTm9kZUludG9WaWV3KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAx
MC0xMC0wNiAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVs
ZW1lbnQuaAppbmRleCA1YjZmZDZhLi4yMDdiYzZjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkVsZW1lbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVs
ZW1lbnQuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBXZWJOYW1lZE5vZGVNYXA7CiAgICAgICAg
IHZvaWQgYXNzaWduKGNvbnN0IFdlYkVsZW1lbnQmIGUpIHsgV2ViTm9kZTo6YXNzaWduKGUpOyB9
CiAKICAgICAgICAgV0VCS0lUX0FQSSBib29sIGlzRm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3Q7
CisgICAgICAgIFdFQktJVF9BUEkgYm9vbCBpc1RleHRGb3JtQ29udHJvbCgpIGNvbnN0OwogICAg
ICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0YWdOYW1lKCkgY29uc3Q7CiAgICAgICAgIFdFQktJ
VF9BUEkgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwogICAgICAgICBX
RUJLSVRfQVBJIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYk5vZGUuaAppbmRleCBmNTRmZjA0Li43MTE2ZGZhIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk5vZGUuaApAQCAtOTYsNiArOTYsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBX
ZWJOb2RlTGlzdCBjaGlsZE5vZGVzKCk7CiAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgY3JlYXRl
TWFya3VwKCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSBib29sIGlzVGV4dE5vZGUoKSBjb25zdDsK
KyAgICBXRUJLSVRfQVBJIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdDsKICAgICBXRUJL
SVRfQVBJIGJvb2wgaXNFbGVtZW50Tm9kZSgpIGNvbnN0OwogICAgIFdFQktJVF9BUEkgdm9pZCBh
ZGRFdmVudExpc3RlbmVyKGNvbnN0IFdlYlN0cmluZyYgZXZlbnRUeXBlLCBXZWJET01FdmVudExp
c3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICBXRUJLSVRfQVBJIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBXZWJTdHJpbmcmIGV2ZW50VHlwZSwgV2ViRE9NRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSk7CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlldy5oCmluZGV4IGZkZDQ3MjkuLjc0MWIxZDEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5o
CkBAIC0xNjEsNiArMTYxLDkgQEAgcHVibGljOgogICAgIC8vIHNlbmQgaXQuCiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyRm9jdXNlZE5vZGUoKSA9IDA7CiAKKyAgICAvLyBTY3JvbGxzIHRoZSBub2Rl
IGN1cnJlbnRseSBpbiBmb2N1cyBpbnRvIHZpZXcuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEZv
Y3VzZWROb2RlSW50b1ZpZXcoKSA9IDA7CisKIAogICAgIC8vIFpvb20gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJFbGVtZW50LmNwcAppbmRleCA5MWYzMTBkLi5lNTllZjcyIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRWxlbWVudC5jcHAKQEAgLTQ3LDYgKzQ3LDExIEBAIGJvb2wgV2ViRWxlbWVudDo6
aXNGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBjb25zdFVud3JhcDxFbGVt
ZW50PigpLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpOwogfQogCitib29sIFdlYkVsZW1lbnQ6Omlz
VGV4dEZvcm1Db250cm9sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RVbndyYXA8RWxlbWVu
dD4oKS0+aXNUZXh0Rm9ybUNvbnRyb2woKTsKK30KKwogV2ViU3RyaW5nIFdlYkVsZW1lbnQ6OnRh
Z05hbWUoKSBjb25zdAogewogICAgIHJldHVybiBjb25zdFVud3JhcDxFbGVtZW50PigpLT50YWdO
YW1lKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAppbmRleCBjYWVhNTg5Li5lOTFkMWVlIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUuY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTm9kZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJOb2Rl
LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIgogI2luY2x1
ZGUgIk5vZGUuaCIKQEAgLTE0NCw2ICsxNDUsMTEgQEAgYm9vbCBXZWJOb2RlOjppc1RleHROb2Rl
KCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLT5pc1RleHROb2RlKCk7CiB9CiAKK2Jvb2wg
V2ViTm9kZTo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPmlzQ29udGVudEVkaXRhYmxlKCk7Cit9CisKIGJvb2wgV2ViTm9kZTo6aXNFbGVtZW50Tm9k
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNFbGVtZW50Tm9kZSgpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA1OTljNjVlLi43NjI1YTQ0IDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTUyNSw2ICsxNTI1LDE1IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OmNsZWFyRm9jdXNlZE5vZGUoKQogICAgIH0KIH0KIAordm9pZCBXZWJWaWV3SW1w
bDo6c2Nyb2xsRm9jdXNlZE5vZGVJbnRvVmlldygpCit7CisgICAgTm9kZSogZm9jdXNlZE5vZGUg
PSBmb2N1c2VkV2ViQ29yZU5vZGUoKTsKKyAgICBpZiAoZm9jdXNlZE5vZGUgJiYgZm9jdXNlZE5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICBFbGVtZW50KiBlbGVtZW50Tm9kZSA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihmb2N1c2VkTm9kZSk7CisgICAgICAgIGVsZW1lbnROb2RlLT5z
Y3JvbGxJbnRvVmlld0lmTmVlZGVkKHRydWUpOworICAgIH0KK30KKwogZG91YmxlIFdlYlZpZXdJ
bXBsOjp6b29tTGV2ZWwoKQogewogICAgIHJldHVybiBtX3pvb21MZXZlbDsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAppbmRleCBlNTFkZjRkLi4zMGQwMzE0IDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCkBAIC0xMzIsNiArMTMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGb2N1c2VkRnJhbWUoV2ViRnJhbWUqIGZyYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5p
dGlhbEZvY3VzKGJvb2wgcmV2ZXJzZSk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRm9jdXNlZE5v
ZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRm9jdXNlZE5vZGVJbnRvVmlldygpOwogICAg
IHZpcnR1YWwgZG91YmxlIHpvb21MZXZlbCgpOwogICAgIHZpcnR1YWwgZG91YmxlIHNldFpvb21M
ZXZlbChib29sIHRleHRPbmx5LCBkb3VibGUgem9vbUxldmVsKTsKICAgICB2aXJ0dWFsIHZvaWQg
em9vbUxpbWl0c0NoYW5nZWQoZG91YmxlIG1pbmltdW1ab29tTGV2ZWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70306</attachid>
            <date>2010-10-08 15:49:24 -0700</date>
            <delta_ts>2010-10-09 14:30:38 -0700</delta_ts>
            <desc>Minor changes to address reviewer&apos;s comments</desc>
            <filename>gitdiff.txt</filename>
            <type>text/plain</type>
            <size>5185</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDg1Y2IzMTMuLjg1YmU2ZjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDEwLTA5LTMwICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcg
b25lIG1ldGhvZCB0byB0aGUgV2ViVmlldyBpbnRlcmZhY2U6IG1ldGhvZCB0byBpbmZvcm0gdGhl
CisgICAgICAgIHJlbmRlcmVyIHRvIHNjcm9sbCB0aGUgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVu
dCBpbnRvIHZpZXcsIGZvcgorICAgICAgICBpbnN0YW5jZSwgd2hlbiBpdCBpcyBoaWRkZW4gZHVl
IHRvIHdpbmRvdyByZXNpemluZy4KKyAgICAgICAgQWxzbyBhZGRpbmcgbWV0aG9kcyB0byBXZWJO
b2RlIGFuZCBXZWJFbGVtZW50IHRvIGV4cG9zZSBtb3JlCisgICAgICAgIGZlYXR1cmVzIG9mIHRo
ZSB1bmRlcmx5aW5nIFdlYkNvcmU6Ok5vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjI5NgorCisgICAgICAgICogcHVibGljL1dlYkVsZW1lbnQu
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTm9kZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgICogc3JjL1dlYkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWxl
bWVudDo6aXNUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KToKKyAgICAgICAgKiBzcmMvV2ViTm9kZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vZGU6OmlzQ29udGVudEVkaXRhYmxlKToKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2Nyb2xsRm9jdXNlZE5vZGVJbnRvVmlldyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisKIDIwMTAtMTAtMDggIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVt
ZW50LmgKaW5kZXggNWI2ZmQ2YS4uOGQ1MWU5OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJFbGVtZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVt
ZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgV2ViTmFtZWROb2RlTWFwOwogICAgICAgICB2
b2lkIGFzc2lnbihjb25zdCBXZWJFbGVtZW50JiBlKSB7IFdlYk5vZGU6OmFzc2lnbihlKTsgfQog
CiAgICAgICAgIFdFQktJVF9BUEkgYm9vbCBpc0Zvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0Owor
ICAgICAgICBXRUJLSVRfQVBJIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3Q7
CiAgICAgICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHRhZ05hbWUoKSBjb25zdDsKICAgICAgICAg
V0VCS0lUX0FQSSBib29sIGhhc1RhZ05hbWUoY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7CiAgICAg
ICAgIFdFQktJVF9BUEkgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCmluZGV4IGY1NGZmMDQuLjcxMTZkZmEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTm9kZS5oCkBAIC05Niw2ICs5Niw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRf
QVBJIFdlYk5vZGVMaXN0IGNoaWxkTm9kZXMoKTsKICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBj
cmVhdGVNYXJrdXAoKSBjb25zdDsKICAgICBXRUJLSVRfQVBJIGJvb2wgaXNUZXh0Tm9kZSgpIGNv
bnN0OworICAgIFdFQktJVF9BUEkgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OwogICAg
IFdFQktJVF9BUEkgYm9vbCBpc0VsZW1lbnROb2RlKCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSB2
b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgV2ViU3RyaW5nJiBldmVudFR5cGUsIFdlYkRPTUV2
ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpOwogICAgIFdFQktJVF9BUEkg
dm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IFdlYlN0cmluZyYgZXZlbnRUeXBlLCBXZWJE
T01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3LmgKaW5kZXggZmRkNDcyOS4uNzQxYjFkMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmgKQEAgLTE2MSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgLy8gc2VuZCBpdC4KICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJGb2N1c2VkTm9kZSgpID0gMDsKIAorICAgIC8vIFNjcm9sbHMgdGhl
IG5vZGUgY3VycmVudGx5IGluIGZvY3VzIGludG8gdmlldy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsRm9jdXNlZE5vZGVJbnRvVmlldygpID0gMDsKKwogCiAgICAgLy8gWm9vbSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwCmluZGV4IDkxZjMxMGQuLjM0ZGFhMzQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcApAQCAtNDcsNiArNDcsMTEgQEAgYm9vbCBXZWJFbGVt
ZW50Ojppc0Zvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0VW53cmFw
PEVsZW1lbnQ+KCktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7CiB9CiAKK2Jvb2wgV2ViRWxlbWVu
dDo6aXNUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RV
bndyYXA8RWxlbWVudD4oKS0+aXNUZXh0Rm9ybUNvbnRyb2woKTsKK30KKwogV2ViU3RyaW5nIFdl
YkVsZW1lbnQ6OnRhZ05hbWUoKSBjb25zdAogewogICAgIHJldHVybiBjb25zdFVud3JhcDxFbGVt
ZW50PigpLT50YWdOYW1lKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5v
ZGUuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAppbmRleCBjYWVhNTg5Li5l
OTFkMWVlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJXZWJOb2RlLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTE0NCw2ICsxNDUsMTEgQEAgYm9vbCBXZWJOb2Rl
Ojppc1RleHROb2RlKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLT5pc1RleHROb2RlKCk7
CiB9CiAKK2Jvb2wgV2ViTm9kZTo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmlzQ29udGVudEVkaXRhYmxlKCk7Cit9CisKIGJvb2wgV2ViTm9kZTo6
aXNFbGVtZW50Tm9kZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNFbGVtZW50
Tm9kZSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA1OTljNjVlLi43NjI1
YTQ0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTUyNSw2ICsxNTI1LDE1
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmNsZWFyRm9jdXNlZE5vZGUoKQogICAgIH0KIH0KIAordm9p
ZCBXZWJWaWV3SW1wbDo6c2Nyb2xsRm9jdXNlZE5vZGVJbnRvVmlldygpCit7CisgICAgTm9kZSog
Zm9jdXNlZE5vZGUgPSBmb2N1c2VkV2ViQ29yZU5vZGUoKTsKKyAgICBpZiAoZm9jdXNlZE5vZGUg
JiYgZm9jdXNlZE5vZGUtPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICBFbGVtZW50KiBlbGVt
ZW50Tm9kZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihmb2N1c2VkTm9kZSk7CisgICAgICAgIGVs
ZW1lbnROb2RlLT5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKHRydWUpOworICAgIH0KK30KKwogZG91
YmxlIFdlYlZpZXdJbXBsOjp6b29tTGV2ZWwoKQogewogICAgIHJldHVybiBtX3pvb21MZXZlbDsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBlNTFkZjRkLi4zMGQwMzE0IDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xMzIsNiArMTMyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRGb2N1c2VkRnJhbWUoV2ViRnJhbWUqIGZyYW1lKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgcmV2ZXJzZSk7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRm9jdXNlZE5vZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRm9jdXNlZE5vZGVJbnRv
VmlldygpOwogICAgIHZpcnR1YWwgZG91YmxlIHpvb21MZXZlbCgpOwogICAgIHZpcnR1YWwgZG91
YmxlIHNldFpvb21MZXZlbChib29sIHRleHRPbmx5LCBkb3VibGUgem9vbUxldmVsKTsKICAgICB2
aXJ0dWFsIHZvaWQgem9vbUxpbWl0c0NoYW5nZWQoZG91YmxlIG1pbmltdW1ab29tTGV2ZWwsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>