<?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>38100</bug_id>
          
          <creation_ts>2010-04-25 22:50:47 -0700</creation_ts>
          <short_desc>[chromium] Implement TextInputController::firstRectForCharacterRange</short_desc>
          <delta_ts>2010-09-24 16:22:18 -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>Tools / Tests</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>1</everconfirmed>
          <reporter name="Yuzo Fujishima">yuzo</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jorlow</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>216893</commentid>
    <comment_count>0</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-04-25 22:50:47 -0700</bug_when>
    <thetext>The method is unimplemented as of r 58231.

As a result,
editing/inserting/caret-position.html
fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216894</commentid>
    <comment_count>1</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-04-25 22:51:44 -0700</bug_when>
    <thetext>The test failure above started at r58191.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216895</commentid>
    <comment_count>2</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-04-25 22:57:06 -0700</bug_when>
    <thetext>Committed r58232: &lt;http://trac.webkit.org/changeset/58232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216896</commentid>
    <comment_count>3</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-04-25 22:57:46 -0700</bug_when>
    <thetext>Just changed the test expectation.
The issue remains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218278</commentid>
    <comment_count>4</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-04-28 02:10:27 -0700</bug_when>
    <thetext>Kent-san, can you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281456</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-20 02:18:46 -0700</bug_when>
    <thetext>I&apos;ve been able to implement the feature but I haven&apos;t been able to figure out how to create an array of ints in DRT / test shell to pass it back to V8.  Does anyone know how to create an array of ints to CppVariant?

Index: src/WebFrameImpl.cpp
===================================================================
--- src/WebFrameImpl.cpp        (revision 67748)
+++ src/WebFrameImpl.cpp        (working copy)
@@ -1071,6 +1071,20 @@
     return frame()-&gt;editor()-&gt;compositionRange();
 }

+WebRect WebFrameImpl::firstRectForCharacterRange(unsigned location, unsigned length) const
+{
+    if ((location + length &lt; location) &amp;&amp; (location + length))
+        length = 0;
+
+    Element* selectionRoot = frame()-&gt;selection()-&gt;rootEditableElement();
+    Element* scope = selectionRoot ? selectionRoot : frame()-&gt;document()-&gt;documentElement();
+    RefPtr&lt;Range&gt; range = TextIterator::rangeFromLocationAndLength(scope, location, length);
+    if (!range)
+        return WebRect();
+    IntRect rect = frame()-&gt;editor()-&gt;firstRectForRange(range.get());
+    return WebRect(rect.x(), rect.y(), rect.width(), rect.height());
+}
+
 bool WebFrameImpl::executeCommand(const WebString&amp; name)
 {
     ASSERT(frame());
Index: src/WebFrameImpl.h
===================================================================
--- src/WebFrameImpl.h  (revision 67748)
+++ src/WebFrameImpl.h  (working copy)
@@ -135,6 +135,7 @@
     virtual void unmarkText();
     virtual bool hasMarkedText() const;
     virtual WebRange markedRange() const;
+    virtual WebRect firstRectForCharacterRange(unsigned location, unsigned length) const;
     virtual bool executeCommand(const WebString&amp;);
     virtual bool executeCommand(const WebString&amp;, const WebString&amp; value);
     virtual bool isCommandEnabled(const WebString&amp;) const;
Index: public/WebFrame.h
===================================================================
--- public/WebFrame.h   (revision 67748)
+++ public/WebFrame.h   (working copy)
@@ -352,6 +352,8 @@

     virtual WebRange markedRange() const = 0;

+    virtual WebRect firstRectForCharacterRange(unsigned location, unsigned length) const = 0;
+
     // Supports commands like Undo, Redo, Cut, Copy, Paste, SelectAll,
     // Unselect, etc. See EditorCommand.cpp for the full list of supported
     // commands.


Index: chromium/TextInputController.cpp
===================================================================
--- chromium/TextInputController.cpp    (revision 67748)
+++ chromium/TextInputController.cpp    (working copy)
@@ -186,10 +186,21 @@
     result-&gt;set(string(buffer));
 }

-void TextInputController::firstRectForCharacterRange(const CppArgumentList&amp;, CppVariant* result)
+void TextInputController::firstRectForCharacterRange(const CppArgumentList&amp; arguments, CppVariant* result)
 {
-    // FIXME: Implement this.
     result-&gt;setNull();
+
+    if (arguments.size() &lt; 2 || !arguments[0].isNumber() || !arguments[1].isNumber())
+        return;
+
+    WebFrame* mainFrame = getMainFrame();
+    WebRect rect = mainFrame-&gt;firstRectForCharacterRange(arguments[0].toInt32(), arguments[1].toInt32());
+    if (rect.x == 0 &amp;&amp; rect.y == 0 &amp;&amp; rect.width ==0 &amp;&amp; rect.height == 0)
+        return;
+
+    std::string rect_str;
+    SStringPrintf(&amp;rect_str, &quot;%d,%d,%d,%d&quot;, rect.x, rect.y, rect.width, rect.height);
+    result-&gt;Set(rect_str);
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282057</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-20 20:44:53 -0700</bug_when>
    <thetext>(In reply to comment #5)

Niwa-san, thank you for taking look at this.

We need to construct an object via NPAPI.  WebKitTools/DumpRenderTree/chromium/CppVariant.{cpp,h} and WebKit/chromium/src/WebBindings.cpp are helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282555</commentid>
    <comment_count>7</comment_count>
      <attachid>68291</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-21 14:17:25 -0700</bug_when>
    <thetext>Created attachment 68291
work in progress

Here&apos;s my work in progress.  I ended up adding makeIntArray to WebBindings where I instantiate v8::array and create a NP object for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283996</commentid>
    <comment_count>8</comment_count>
      <attachid>68600</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-23 15:06:31 -0700</bug_when>
    <thetext>Created attachment 68600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283998</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-23 15:07:25 -0700</bug_when>
    <thetext>Hi Kent, I&apos;m taking this bug from you.   I hope you don&apos;t mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284006</commentid>
    <comment_count>10</comment_count>
      <attachid>68600</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-23 15:12:19 -0700</bug_when>
    <thetext>Comment on attachment 68600
Patch

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

&gt; WebKit/chromium/ChangeLog:11
&gt; +        Because the function needs to return an array of integers, added makeIntArray to WebBindings.
&gt; +        makeIntArray does not take Vector because WebBindings.h is included in plugin glue code
&gt; +        where it cannot find wtf/Vector.h.

Can you use WebVector.h instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284040</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-23 15:33:11 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 68600 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68600&amp;action=review
&gt; 
&gt; &gt; WebKit/chromium/ChangeLog:11
&gt; &gt; +        Because the function needs to return an array of integers, added makeIntArray to WebBindings.
&gt; &gt; +        makeIntArray does not take Vector because WebBindings.h is included in plugin glue code
&gt; &gt; +        where it cannot find wtf/Vector.h.
&gt; 
&gt; Can you use WebVector.h instead?

Ah! I wasn&apos;t aware of this class. Yes, I can make use of this class.  Thanks for the info.  I&apos;m uploading a new patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284041</commentid>
    <comment_count>12</comment_count>
      <attachid>68607</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-23 15:34:42 -0700</bug_when>
    <thetext>Created attachment 68607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284047</commentid>
    <comment_count>13</comment_count>
      <attachid>68607</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-23 15:45:42 -0700</bug_when>
    <thetext>Comment on attachment 68607
Patch

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

&gt; WebKit/chromium/src/WebBindings.cpp:319
&gt; +    for (size_t i = data.size(); i &gt; 0; i--)
&gt; +        result-&gt;Set(v8::Number::New(i-1), v8::Number::New(data[i-1]));

Nit: Spaces around the minus sign (e.g., New(i - 1)).  Why not just have the loop go from 0 to &lt; size() so you don&apos;t have to do the minus 1?

&gt; LayoutTests/platform/chromium/test_expectations.txt:968
&gt; +BUGWK38100 WIN LINUX MAC : editing/inserting/caret-position.html = TEXT PASS

Nit: Just remove the platform names here.  No platforms means it applies to all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284266</commentid>
    <comment_count>14</comment_count>
      <attachid>68607</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-09-24 00:09:13 -0700</bug_when>
    <thetext>Comment on attachment 68607
Patch

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

Drive by notes

&gt; WebKit/chromium/src/WebBindings.cpp:316
&gt; +{

As you keep a handle to v8 object, it might be a good idea to create a handle scope here.  Do you really need it or not depends on if callers create those scopes themselves.

&gt;&gt; WebKit/chromium/src/WebBindings.cpp:319
&gt;&gt; +        result-&gt;Set(v8::Number::New(i-1), v8::Number::New(data[i-1]));
&gt; 
&gt; Nit: Spaces around the minus sign (e.g., New(i - 1)).  Why not just have the loop go from 0 to &lt; size() so you don&apos;t have to do the minus 1?

You might prefer Object::Set(uint32_t, Handle&lt;Value&gt;) overload which would allow you to write it shorter

&gt; WebKit/chromium/src/WebBindings.cpp:322
&gt; +    return npCreateV8ScriptObject(0, v8::Handle&lt;v8::Object&gt;::Cast(result), window);

Do you really need to cast result which is already v8::Handle&lt;v8::Array&gt; to v8::Handle&lt;v8::Object&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284503</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-24 10:29:22 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 68607 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68607&amp;action=review
&gt; 
&gt; Drive by notes
&gt; 
&gt; &gt; WebKit/chromium/src/WebBindings.cpp:316
&gt; &gt; +{
&gt; 
&gt; As you keep a handle to v8 object, it might be a good idea to create a handle scope here.  Do you really need it or not depends on if callers create those scopes themselves.

But I&apos;m returning this object as a return value to TextInputController::firstRectForCharacterRange.  Do I still want to set the scope then?

&gt; &gt;&gt; WebKit/chromium/src/WebBindings.cpp:319
&gt; &gt;&gt; +        result-&gt;Set(v8::Number::New(i-1), v8::Number::New(data[i-1]));
&gt; &gt; 
&gt; &gt; Nit: Spaces around the minus sign (e.g., New(i - 1)).  Why not just have the loop go from 0 to &lt; size() so you don&apos;t have to do the minus 1?
&gt; 
&gt; You might prefer Object::Set(uint32_t, Handle&lt;Value&gt;) overload which would allow you to write it shorter

Will do.

&gt; &gt; WebKit/chromium/src/WebBindings.cpp:322
&gt; &gt; +    return npCreateV8ScriptObject(0, v8::Handle&lt;v8::Object&gt;::Cast(result), window);
&gt; 
&gt; Do you really need to cast result which is already v8::Handle&lt;v8::Array&gt; to v8::Handle&lt;v8::Object&gt;?

Huh, I guess that&apos;s not needed.  I think I copy&amp;pasted the code and forgot to remove that.  Thanks for pointing that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284699</commentid>
    <comment_count>16</comment_count>
      <attachid>68748</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-24 14:25:24 -0700</bug_when>
    <thetext>Created attachment 68748
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284827</commentid>
    <comment_count>17</comment_count>
      <attachid>68748</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-24 16:22:12 -0700</bug_when>
    <thetext>Comment on attachment 68748
Patch for landing

Clearing flags on attachment: 68748

Committed r68312: &lt;http://trac.webkit.org/changeset/68312&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284828</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-24 16:22:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68291</attachid>
            <date>2010-09-21 14:17:25 -0700</date>
            <delta_ts>2010-09-23 15:06:27 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip38100</filename>
            <type>text/plain</type>
            <size>5443</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwIChyZXZpc2lvbiA2Nzg0MSkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwICh3b3JraW5nIGNvcHkpCkBAIC0z
MTIsNiArMzEyLDE2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9Cgorc3RhdGljIE5QT2JqZWN0KiBt
YWtlSW50QXJyYXlJbXBsKGludCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICB2ODo6SGFu
ZGxlPHY4OjpBcnJheT4gcmVzdWx0ID0gdjg6OkFycmF5OjpOZXcobGVuZ3RoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICByZXN1bHQtPlNldCh2ODo6
TnVtYmVyOjpOZXcoaSksIHY4OjpOdW1iZXI6Ok5ldyhkYXRhW2ldKSk7CisKKyAgICBXZWJDb3Jl
OjpET01XaW5kb3cqIHdpbmRvdyA9IFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlV2luZG93KFdl
YkNvcmU6OlY4UHJveHk6OmN1cnJlbnRDb250ZXh0KCkpOworICAgIHJldHVybiBucENyZWF0ZVY4
U2NyaXB0T2JqZWN0KDAsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QocmVzdWx0KSwgd2lu
ZG93KTsKK30KKwogI2VuZGlmCgogYm9vbCBXZWJCaW5kaW5nczo6Z2V0RHJhZ0RhdGEoTlBPYmpl
Y3QqIGV2ZW50LCBpbnQqIGV2ZW50SWQsIFdlYkRyYWdEYXRhKiBkYXRhKQpAQCAtMzUwLDYgKzM2
MCwxNiBAQAogI2VuZGlmCiB9CgorTlBPYmplY3QqIFdlYkJpbmRpbmdzOjptYWtlSW50QXJyYXko
aW50KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworI2lmIFVTRShWOCkKKyAgICByZXR1cm4gbWFr
ZUludEFycmF5SW1wbChkYXRhLCBsZW5ndGgpOworI2Vsc2UKKyAgICAvLyBOb3Qgc3VwcG9ydGVk
IG9uIG90aGVyIHBvcnRzIChKU0MsIGV0Yy4pLgorICAgIHJldHVybiAwOworI2VuZGlmCit9CisK
IHZvaWQgV2ViQmluZGluZ3M6OnB1c2hFeGNlcHRpb25IYW5kbGVyKEV4Y2VwdGlvbkhhbmRsZXIg
aGFuZGxlciwgdm9pZCogZGF0YSkKIHsKICAgICBXZWJDb3JlOjpwdXNoRXhjZXB0aW9uSGFuZGxl
cihoYW5kbGVyLCBkYXRhKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAg
ICAgICAgIChyZXZpc2lvbiA2Nzg0MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcCAgICAgICAgKHdvcmtpbmcgY29weSkKQEAgLTEwNzEsNiArMTA3MSwyMCBAQAogICAg
IHJldHVybiBmcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpOwogfQoKK1dlYlJl
Y3QgV2ViRnJhbWVJbXBsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1bnNpZ25lZCBsb2Nh
dGlvbiwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAoreworICAgIGlmICgobG9jYXRpb24gKyBsZW5n
dGggPCBsb2NhdGlvbikgJiYgKGxvY2F0aW9uICsgbGVuZ3RoKSkKKyAgICAgICAgbGVuZ3RoID0g
MDsKKworICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+
cm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9v
dCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChzY29wZSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgaWYgKCFyYW5nZSkK
KyAgICAgICAgcmV0dXJuIFdlYlJlY3QoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBmcmFtZSgpLT5l
ZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgIHJldHVybiBXZWJS
ZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKK30K
KwogYm9vbCBXZWJGcmFtZUltcGw6OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSkKIHsKICAgICBBU1NFUlQoZnJhbWUoKSk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmggIChyZXZpc2lvbiA2Nzg0MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmggICh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDcgQEAKICAgICB2aXJ0dWFsIHZv
aWQgdW5tYXJrVGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNNYXJrZWRUZXh0KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBXZWJSYW5nZSBtYXJrZWRSYW5nZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
V2ViUmVjdCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZXhlY3V0ZUNvbW1hbmQoY29u
c3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVDb21tYW5kKGNvbnN0IFdl
YlN0cmluZyYsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bW1hbmRFbmFibGVkKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJCaW5kaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQmluZGluZ3MuaCAgICAgICAgKHJldmlzaW9uIDY3ODQxKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJCaW5kaW5ncy5oICAgICAgICAod29ya2luZyBjb3B5KQpAQCAtMTQ0
LDYgKzE0NCw4IEBACiAgICAgLy8gSWYgc28sIHJldHVybiB0aGF0IGVsZW1lbnQgYXMgYSBXZWJF
bGVtZW50IG9iamVjdC4KICAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29sIGdldEVsZW1lbnQoTlBP
YmplY3QqIGVsZW1lbnQsIFdlYkVsZW1lbnQqKTsKCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgTlBP
YmplY3QqIG1ha2VJbnRBcnJheShpbnQqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworCiAgICAgLy8g
RXhjZXB0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCgogICAgIHR5cGVkZWYgdm9pZCAoRXhjZXB0aW9uSGFuZGxlcikodm9p
ZCogZGF0YSwgY29uc3QgTlBVVEY4KiBtZXNzYWdlKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lLmggICAocmV2aXNpb24gNjc4NDEpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lLmggICAod29ya2luZyBjb3B5KQpAQCAtMzUyLDYgKzM1Miw4IEBACgogICAgIHZpcnR1
YWwgV2ViUmFuZ2UgbWFya2VkUmFuZ2UoKSBjb25zdCA9IDA7CgorICAgIHZpcnR1YWwgV2ViUmVj
dCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdCA9IDA7CisKICAgICAvLyBTdXBwb3J0cyBjb21tYW5kcyBsaWtlIFVuZG8s
IFJlZG8sIEN1dCwgQ29weSwgUGFzdGUsIFNlbGVjdEFsbCwKICAgICAvLyBVbnNlbGVjdCwgZXRj
LiBTZWUgRWRpdG9yQ29tbWFuZC5jcHAgZm9yIHRoZSBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkCiAg
ICAgLy8gY29tbWFuZHMuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCAocmV2aXNpb24gNjc4
NDEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXh0SW5wdXRDb250
cm9sbGVyLmNwcCAod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlRl
eHRJbnB1dENvbnRyb2xsZXIuaCIKCiAjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCisjaW5jbHVkZSAi
cHVibGljL1dlYkJpbmRpbmdzLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYkZyYW1lLmgiCiAjaW5j
bHVkZSAicHVibGljL1dlYlJhbmdlLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlN0cmluZy5oIgpA
QCAtMTg2LDEwICsxODcsMjMgQEAKICAgICByZXN1bHQtPnNldChzdHJpbmcoYnVmZmVyKSk7CiB9
Cgotdm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit2b2lkIFRleHRJbnB1
dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzLgogICAgIHJlc3VsdC0+c2V0TnVsbCgpOworCisgICAgV2ViRnJhbWUqIG1h
aW5fZnJhbWUgPSBnZXRNYWluRnJhbWUoKTsKKyAgICBpZiAoIW1haW5fZnJhbWUpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBd
LmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpKQorICAgICAgICByZXR1cm47
CisKKyAgICBXZWJSZWN0IHJlY3QgPSBtYWluX2ZyYW1lLT5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZShhcmd1bWVudHNbMF0udG9JbnQzMigpLCBhcmd1bWVudHNbMV0udG9JbnQzMigpKTsKKyAg
ICBpZiAocmVjdC54ID09IDAgJiYgcmVjdC55ID09IDAgJiYgcmVjdC53aWR0aCA9PTAgJiYgcmVj
dC5oZWlnaHQgPT0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGludEFycmF5WzRdID0g
e3JlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodH07CisgICAgcmVzdWx0LT5z
ZXQoV2ViQmluZGluZ3M6Om1ha2VJbnRBcnJheShpbnRBcnJheSwgNCkpOwogfQoKIHZvaWQgVGV4
dElucHV0Q29udHJvbGxlcjo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludChjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68600</attachid>
            <date>2010-09-23 15:06:31 -0700</date>
            <delta_ts>2010-09-23 15:34:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38100-20100923150630.patch</filename>
            <type>text/plain</type>
            <size>9175</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjgxOTkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDktMjMgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgVGV4dElucHV0Q29udHJv
bGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MTAwCisKKyAgICAgICAgSW1wbGVtZW50ZWQgVGV4
dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UgZm9yIGNocm9taXVt
IHBsYXRmb3JtLgorICAgICAgICBCZWNhdXNlIHRoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4g
YW4gYXJyYXkgb2YgaW50ZWdlcnMsIGFkZGVkIG1ha2VJbnRBcnJheSB0byBXZWJCaW5kaW5ncy4K
KyAgICAgICAgbWFrZUludEFycmF5IGRvZXMgbm90IHRha2UgVmVjdG9yIGJlY2F1c2UgV2ViQmlu
ZGluZ3MuaCBpcyBpbmNsdWRlZCBpbiBwbHVnaW4gZ2x1ZSBjb2RlCisgICAgICAgIHdoZXJlIGl0
IGNhbm5vdCBmaW5kIHd0Zi9WZWN0b3IuaC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIGFk
ZGVkIHNpbmNlIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoZSBzYW1lIGZlYXR1cmUgaW4gY2hyb21p
dW0gc2lkZQorICAgICAgICBpbiBvcmRlciB0byBlbmFibGUgYW55IHRlc3RzIHRoYXQgdXNlcyB0
aGlzIGZ1bmN0aW9uLgorCisgICAgICAgICogcHVibGljL1dlYkJpbmRpbmdzLmg6CisgICAgICAg
ICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAgICogc3JjL1dlYkJpbmRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bWFrZUludEFycmF5SW1wbCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJCaW5kaW5nczo6bWFrZUludEFycmF5KTogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisK
IDIwMTAtMDktMjMgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QmluZGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJpbmRp
bmdzLmgJKHJldmlzaW9uIDY4MTkyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCaW5k
aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDggQEAgcHVibGljOgogICAgIC8v
IElmIHNvLCByZXR1cm4gdGhhdCBlbGVtZW50IGFzIGEgV2ViRWxlbWVudCBvYmplY3QuCiAgICAg
V0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBnZXRFbGVtZW50KE5QT2JqZWN0KiBlbGVtZW50LCBXZWJF
bGVtZW50Kik7CiAKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBOUE9iamVjdCogbWFrZUludEFycmF5
KGludCogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisKICAgICAvLyBFeGNlcHRpb25zIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
ICAgIHR5cGVkZWYgdm9pZCAoRXhjZXB0aW9uSGFuZGxlcikodm9pZCogZGF0YSwgY29uc3QgTlBV
VEY4KiBtZXNzYWdlKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHJldmlzaW9u
IDY4MTkyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTUsNiArMzU1LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJSYW5nZSBt
YXJrZWRSYW5nZSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBmaXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBXZWJSZWN0
JikgY29uc3QgPSAwOworCiAgICAgLy8gU3VwcG9ydHMgY29tbWFuZHMgbGlrZSBVbmRvLCBSZWRv
LCBDdXQsIENvcHksIFBhc3RlLCBTZWxlY3RBbGwsCiAgICAgLy8gVW5zZWxlY3QsIGV0Yy4gU2Vl
IEVkaXRvckNvbW1hbmQuY3BwIGZvciB0aGUgZnVsbCBsaXN0IG9mIHN1cHBvcnRlZAogICAgIC8v
IGNvbW1hbmRzLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAJKHJldmlzaW9u
IDY4MTkyKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMiw2ICszMTIsMTYgQEAgc3RhdGljIGJvb2wgZ2V0RWxlbWVudEltcGwoTlBP
YmplY3QqIG5wTwogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgTlBPYmplY3QqIG1ha2VJ
bnRBcnJheUltcGwoaW50KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIHY4OjpIYW5kbGU8
djg6OkFycmF5PiByZXN1bHQgPSB2ODo6QXJyYXk6Ok5ldyhsZW5ndGgpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAgIHJlc3VsdC0+U2V0KHY4OjpOdW1i
ZXI6Ok5ldyhpKSwgdjg6Ok51bWJlcjo6TmV3KGRhdGFbaV0pKTsKKworICAgIFdlYkNvcmU6OkRP
TVdpbmRvdyogd2luZG93ID0gV2ViQ29yZTo6VjhQcm94eTo6cmV0cmlldmVXaW5kb3coV2ViQ29y
ZTo6VjhQcm94eTo6Y3VycmVudENvbnRleHQoKSk7CisgICAgcmV0dXJuIG5wQ3JlYXRlVjhTY3Jp
cHRPYmplY3QoMCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChyZXN1bHQpLCB3aW5kb3cp
OworfQorCiAjZW5kaWYKIAogYm9vbCBXZWJCaW5kaW5nczo6Z2V0RHJhZ0RhdGEoTlBPYmplY3Qq
IGV2ZW50LCBpbnQqIGV2ZW50SWQsIFdlYkRyYWdEYXRhKiBkYXRhKQpAQCAtMzUwLDYgKzM2MCwx
NiBAQCBib29sIFdlYkJpbmRpbmdzOjpnZXRFbGVtZW50KE5QT2JqZWN0KiBlCiAjZW5kaWYKIH0K
IAorTlBPYmplY3QqIFdlYkJpbmRpbmdzOjptYWtlSW50QXJyYXkoaW50KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQoreworI2lmIFVTRShWOCkKKyAgICByZXR1cm4gbWFrZUludEFycmF5SW1wbChkYXRh
LCBsZW5ndGgpOworI2Vsc2UKKyAgICAvLyBOb3Qgc3VwcG9ydGVkIG9uIG90aGVyIHBvcnRzIChK
U0MsIGV0Yy4pLgorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKIHZvaWQgV2ViQmluZGluZ3M6
OnB1c2hFeGNlcHRpb25IYW5kbGVyKEV4Y2VwdGlvbkhhbmRsZXIgaGFuZGxlciwgdm9pZCogZGF0
YSkKIHsKICAgICBXZWJDb3JlOjpwdXNoRXhjZXB0aW9uSGFuZGxlcihoYW5kbGVyLCBkYXRhKTsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDY4MTkyKQor
KysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDgxLDYgKzEwODEsMjIgQEAgV2ViUmFuZ2UgV2ViRnJhbWVJbXBsOjptYXJrZWRSYW5nZSgp
IGNvbgogICAgIHJldHVybiBmcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpOwog
fQogCitib29sIFdlYkZyYW1lSW1wbDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UodW5zaWdu
ZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgV2ViUmVjdCYgcmVjdCkgY29uc3QKK3sKKyAg
ICBpZiAoKGxvY2F0aW9uICsgbGVuZ3RoIDwgbG9jYXRpb24pICYmIChsb2NhdGlvbiArIGxlbmd0
aCkpCisgICAgICAgIGxlbmd0aCA9IDA7CisKKyAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0g
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBFbGVtZW50
KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGxvY2F0aW9uLCBsZW5n
dGgpOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBJbnRSZWN0
IGludFJlY3QgPSBmcmFtZSgpLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0
KCkpOworICAgIHJlY3QgPSBXZWJSZWN0KGludFJlY3QueCgpLCBpbnRSZWN0LnkoKSwgaW50UmVj
dC53aWR0aCgpLCBpbnRSZWN0LmhlaWdodCgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBi
b29sIFdlYkZyYW1lSW1wbDo6ZXhlY3V0ZUNvbW1hbmQoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQog
ewogICAgIEFTU0VSVChmcmFtZSgpKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAkocmV2aXNpb24gNjgxOTIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdmlydHVhbCBib29sIGhhc01hcmtlZFRleHQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFdlYlJhbmdlIG1hcmtlZFJhbmdlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNp
Z25lZCBsZW5ndGgsIFdlYlJlY3QmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZXhlY3V0ZUNv
bW1hbmQoY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVDb21tYW5k
KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwg
Ym9vbCBpc0NvbW1hbmRFbmFibGVkKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwpJbmRleDogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gNjgxOTkpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAxMC0wOS0yMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
Y2hyb21pdW1dIEltcGxlbWVudCBUZXh0SW5wdXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzgxMDAKKworICAgICAgICBJbXBsZW1lbnRlZCBUZXh0SW5wdXRDb250cm9sbGVyOjpmaXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSBmb3IgY2hyb21pdW0gcGxhdGZvcm0uCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBhcmUgYWRkZWQgc2luY2Ugd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhlIHNhbWUg
ZmVhdHVyZSBpbiBjaHJvbWl1bSBzaWRlCisgICAgICAgIGluIG9yZGVyIHRvIGVuYWJsZSBhbnkg
dGVzdHMgdGhhdCB1c2VzIHRoaXMgZnVuY3Rpb24uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRleHRJbnB1dENv
bnRyb2xsZXI6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKTogQWRkZWQuCisKIDIwMTAtMDkt
MjMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGV4dElucHV0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGV4dElucHV0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDY4MTkyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGV4dElu
cHV0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJUZXh0SW5wdXRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJUZXN0U2hlbGwuaCIKKyNp
bmNsdWRlICJwdWJsaWMvV2ViQmluZGluZ3MuaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViRnJhbWUu
aCIKICNpbmNsdWRlICJwdWJsaWMvV2ViUmFuZ2UuaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViU3Ry
aW5nLmgiCkBAIC0xODYsMTAgKzE4NywyMyBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6OnNl
bGVjdGVkUmFuZ2UoCiAgICAgcmVzdWx0LT5zZXQoc3RyaW5nKGJ1ZmZlcikpOwogfQogCi12b2lk
IFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3ZvaWQgVGV4dElucHV0Q29udHJv
bGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CisKKyAgICBXZWJGcmFtZSogbWFpbkZyYW1l
ID0gZ2V0TWFpbkZyYW1lKCk7CisgICAgaWYgKCFtYWluRnJhbWUpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVy
KCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBX
ZWJSZWN0IHJlY3Q7CisgICAgaWYgKCFtYWluRnJhbWUtPmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCksIHJlY3Qp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgaW50QXJyYXlbNF0gPSB7cmVjdC54LCByZWN0
LnksIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0fTsKKyAgICByZXN1bHQtPnNldChXZWJCaW5kaW5n
czo6bWFrZUludEFycmF5KGludEFycmF5LCA0KSk7CiB9CiAKIHZvaWQgVGV4dElucHV0Q29udHJv
bGxlcjo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50KiByZXN1bHQpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2ODE5OSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA5LTIzICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IFRleHRJbnB1dENv
bnRyb2xsZXI6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODEwMAorCisgICAgICAgIGVkaXRpbmcvaW5z
ZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwgcGFzc2VzIG9uIGNocm9taXVtIERSVCBib3RzLgor
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAy
MDEwLTA5LTIzICBKZWZmIFNjaGlsbGVyICA8amVmZnNjaGlsbGVyQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA2ODE5
MikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMjQyNyw3ICsyNDI3LDcgQEAgQlVHODcyOSBNQUMgOiBodHRw
L3Rlc3RzL211bHRpcGFydC9pbnZhbAogQlVHV0szODAzOCBXSU4gTElOVVggTUFDIDogZmFzdC91
cmwvZmlsZS1odHRwLWJhc2UuaHRtbCA9IFRFWFQKIAogLy8gU3RhcnRlZCBmYWlsaW5nIGF0IHI1
ODE5MQotQlVHV0szODEwMCBXSU4gTElOVVggTUFDIDogZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQt
cG9zaXRpb24uaHRtbCA9IFRFWFQKK0JVR1dLMzgxMDAgV0lOIExJTlVYIE1BQyA6IGVkaXRpbmcv
aW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwgPSBURVhUIFBBU1MKIAogLy8gTmV3IHRlc3Qs
IG1heSBiZSBzYWZlIHRvIGp1c3QgcmViYXNlbGluZS4KIEJVR1dLMzgwOTkgV0lOIExJTlVYIDog
c3ZnL2N1c3RvbS9icm9rZW4taW50ZXJuYWwtcmVmZXJlbmNlcy5zdmcgPSBJTUFHRStURVhUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68607</attachid>
            <date>2010-09-23 15:34:42 -0700</date>
            <delta_ts>2010-09-24 14:25:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38100-20100923153440.patch</filename>
            <type>text/plain</type>
            <size>10493</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjgxOTkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDktMjMgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgVGV4dElucHV0Q29udHJv
bGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MTAwCisKKyAgICAgICAgSW1wbGVtZW50ZWQgVGV4
dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UgZm9yIGNocm9taXVt
IHBsYXRmb3JtLgorICAgICAgICBCZWNhdXNlIHRoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4g
YW4gYXJyYXkgb2YgaW50ZWdlcnMsIGFkZGVkIG1ha2VJbnRBcnJheSB0byBXZWJCaW5kaW5ncy4K
KyAgICAgICAgbWFrZUludEFycmF5IGRvZXMgbm90IHRha2UgVmVjdG9yIGJlY2F1c2UgV2ViQmlu
ZGluZ3MuaCBpcyBpbmNsdWRlZCBpbiBwbHVnaW4gZ2x1ZSBjb2RlCisgICAgICAgIHdoZXJlIGl0
IGNhbm5vdCBmaW5kIHd0Zi9WZWN0b3IuaC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIGFk
ZGVkIHNpbmNlIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoZSBzYW1lIGZlYXR1cmUgaW4gY2hyb21p
dW0gc2lkZQorICAgICAgICBpbiBvcmRlciB0byBlbmFibGUgYW55IHRlc3RzIHRoYXQgdXNlcyB0
aGlzIGZ1bmN0aW9uLgorCisgICAgICAgICogcHVibGljL1dlYkJpbmRpbmdzLmg6CisgICAgICAg
ICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAgICogc3JjL1dlYkJpbmRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bWFrZUludEFycmF5SW1wbCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJCaW5kaW5nczo6bWFrZUludEFycmF5KTogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisK
IDIwMTAtMDktMjMgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QmluZGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJpbmRp
bmdzLmgJKHJldmlzaW9uIDY4MTkyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCaW5k
aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFdlYkJpbmRp
bmdzX2gKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgog
I2luY2x1ZGUgPGJpbmRpbmdzL25wcnVudGltZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTE0NCw2ICsxNDUsOCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgc28sIHJldHVybiB0aGF0IGVsZW1l
bnQgYXMgYSBXZWJFbGVtZW50IG9iamVjdC4KICAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29sIGdl
dEVsZW1lbnQoTlBPYmplY3QqIGVsZW1lbnQsIFdlYkVsZW1lbnQqKTsKIAorICAgIFdFQktJVF9B
UEkgc3RhdGljIE5QT2JqZWN0KiBtYWtlSW50QXJyYXkoY29uc3QgV2ViVmVjdG9yPGludD4mKTsK
KwogICAgIC8vIEV4Y2VwdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgdHlwZWRlZiB2b2lkIChFeGNlcHRpb25I
YW5kbGVyKSh2b2lkKiBkYXRhLCBjb25zdCBOUFVURjgqIG1lc3NhZ2UpOwpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gNjgxOTIpCisrKyBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw2ICszNTUsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIFdlYlJhbmdlIG1hcmtlZFJhbmdlKCkgY29uc3QgPSAwOwogCisg
ICAgdmlydHVhbCBib29sIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVuc2lnbmVkIGxvY2F0
aW9uLCB1bnNpZ25lZCBsZW5ndGgsIFdlYlJlY3QmKSBjb25zdCA9IDA7CisKICAgICAvLyBTdXBw
b3J0cyBjb21tYW5kcyBsaWtlIFVuZG8sIFJlZG8sIEN1dCwgQ29weSwgUGFzdGUsIFNlbGVjdEFs
bCwKICAgICAvLyBVbnNlbGVjdCwgZXRjLiBTZWUgRWRpdG9yQ29tbWFuZC5jcHAgZm9yIHRoZSBm
dWxsIGxpc3Qgb2Ygc3VwcG9ydGVkCiAgICAgLy8gY29tbWFuZHMuCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkJpbmRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkJpbmRpbmdzLmNwcAkocmV2aXNpb24gNjgxOTIpCisrKyBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkJpbmRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMxMiwxNiBAQCBz
dGF0aWMgYm9vbCBnZXRFbGVtZW50SW1wbChOUE9iamVjdCogbnBPCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3N0YXRpYyBOUE9iamVjdCogbWFrZUludEFycmF5SW1wbChjb25zdCBXZWJWZWN0b3I8
aW50PiYgZGF0YSkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpBcnJheT4gcmVzdWx0ID0gdjg6OkFy
cmF5OjpOZXcoZGF0YS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSBkYXRhLnNpemUoKTsg
aSA+IDA7IGktLSkKKyAgICAgICAgcmVzdWx0LT5TZXQodjg6Ok51bWJlcjo6TmV3KGktMSksIHY4
OjpOdW1iZXI6Ok5ldyhkYXRhW2ktMV0pKTsKKworICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogd2lu
ZG93ID0gV2ViQ29yZTo6VjhQcm94eTo6cmV0cmlldmVXaW5kb3coV2ViQ29yZTo6VjhQcm94eTo6
Y3VycmVudENvbnRleHQoKSk7CisgICAgcmV0dXJuIG5wQ3JlYXRlVjhTY3JpcHRPYmplY3QoMCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChyZXN1bHQpLCB3aW5kb3cpOworfQorCiAjZW5k
aWYKIAogYm9vbCBXZWJCaW5kaW5nczo6Z2V0RHJhZ0RhdGEoTlBPYmplY3QqIGV2ZW50LCBpbnQq
IGV2ZW50SWQsIFdlYkRyYWdEYXRhKiBkYXRhKQpAQCAtMzUwLDYgKzM2MCwxNiBAQCBib29sIFdl
YkJpbmRpbmdzOjpnZXRFbGVtZW50KE5QT2JqZWN0KiBlCiAjZW5kaWYKIH0KIAorTlBPYmplY3Qq
IFdlYkJpbmRpbmdzOjptYWtlSW50QXJyYXkoY29uc3QgV2ViVmVjdG9yPGludD4gJiBkYXRhKQor
eworI2lmIFVTRShWOCkKKyAgICByZXR1cm4gbWFrZUludEFycmF5SW1wbChkYXRhKTsKKyNlbHNl
CisgICAgLy8gTm90IHN1cHBvcnRlZCBvbiBvdGhlciBwb3J0cyAoSlNDLCBldGMuKS4KKyAgICBy
ZXR1cm4gMDsKKyNlbmRpZgorfQorCiB2b2lkIFdlYkJpbmRpbmdzOjpwdXNoRXhjZXB0aW9uSGFu
ZGxlcihFeGNlcHRpb25IYW5kbGVyIGhhbmRsZXIsIHZvaWQqIGRhdGEpCiB7CiAgICAgV2ViQ29y
ZTo6cHVzaEV4Y2VwdGlvbkhhbmRsZXIoaGFuZGxlciwgZGF0YSk7CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA2ODE5MikKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4MSw2ICsxMDgxLDIy
IEBAIFdlYlJhbmdlIFdlYkZyYW1lSW1wbDo6bWFya2VkUmFuZ2UoKSBjb24KICAgICByZXR1cm4g
ZnJhbWUoKS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKTsKIH0KIAorYm9vbCBXZWJGcmFt
ZUltcGw6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNp
Z25lZCBsZW5ndGgsIFdlYlJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgaWYgKChsb2NhdGlvbiAr
IGxlbmd0aCA8IGxvY2F0aW9uKSAmJiAobG9jYXRpb24gKyBsZW5ndGgpKQorICAgICAgICBsZW5n
dGggPSAwOworCisgICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lKCktPnNlbGVjdGlv
bigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rp
b25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGZyYW1lKCktPmRvY3VtZW50KCktPmRvY3VtZW50RWxl
bWVudCgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBpZiAoIXJh
bmdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSW50UmVjdCBpbnRSZWN0ID0gZnJhbWUo
KS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICByZWN0ID0g
V2ViUmVjdChpbnRSZWN0LngoKSwgaW50UmVjdC55KCksIGludFJlY3Qud2lkdGgoKSwgaW50UmVj
dC5oZWlnaHQoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBXZWJGcmFtZUltcGw6
OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoZnJh
bWUoKSk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDY4MTky
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXJrVGV4dCgp
OwogICAgIHZpcnR1YWwgYm9vbCBoYXNNYXJrZWRUZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBX
ZWJSYW5nZSBtYXJrZWRSYW5nZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBmaXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBXZWJS
ZWN0JikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0
cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBleGVjdXRlQ29tbWFuZChjb25zdCBXZWJTdHJpbmcm
LCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYW5kRW5h
YmxlZChjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY4MTk5KQor
KysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDktMjMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1l
bnQgVGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MTAwCisKKyAgICAg
ICAgSW1wbGVtZW50ZWQgVGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UgZm9yIGNocm9taXVtIHBsYXRmb3JtLgorICAgICAgICBObyBuZXcgdGVzdHMgYXJlIGFk
ZGVkIHNpbmNlIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoZSBzYW1lIGZlYXR1cmUgaW4gY2hyb21p
dW0gc2lkZQorICAgICAgICBpbiBvcmRlciB0byBlbmFibGUgYW55IHRlc3RzIHRoYXQgdXNlcyB0
aGlzIGZ1bmN0aW9uLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGV4dElu
cHV0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjpmaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSk6IEFkZGVkLgorCiAyMDEwLTA5LTIzICBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENo
YXBpbi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1RleHRJbnB1
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2ODE5MikKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1RleHRJbnB1dENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVGV4dElucHV0Q29u
dHJvbGxlci5oIgogCiAjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCisjaW5jbHVkZSAicHVibGljL1dl
YkJpbmRpbmdzLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYkZyYW1lLmgiCiAjaW5jbHVkZSAicHVi
bGljL1dlYlJhbmdlLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlN0cmluZy5oIgpAQCAtMTg2LDEw
ICsxODcsMjcgQEAgdm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxlY3RlZFJhbmdlKAogICAg
IHJlc3VsdC0+c2V0KHN0cmluZyhidWZmZXIpKTsKIH0KIAotdm9pZCBUZXh0SW5wdXRDb250cm9s
bGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50KiByZXN1bHQpCit2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgogICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworCisgICAgV2ViRnJhbWUqIG1haW5GcmFtZSA9IGdldE1haW5GcmFtZSgp
OworICAgIGlmICghbWFpbkZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNb
MV0uaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViUmVjdCByZWN0OworICAg
IGlmICghbWFpbkZyYW1lLT5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShhcmd1bWVudHNbMF0u
dG9JbnQzMigpLCBhcmd1bWVudHNbMV0udG9JbnQzMigpLCByZWN0KSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVmVjdG9yPGludD4gaW50QXJyYXkoNCk7CisgICAgaW50QXJyYXlbMF0gPSByZWN0
Lng7CisgICAgaW50QXJyYXlbMV0gPSByZWN0Lnk7CisgICAgaW50QXJyYXlbMl0gPSByZWN0Lndp
ZHRoOworICAgIGludEFycmF5WzNdID0gcmVjdC5oZWlnaHQ7CisgICAgcmVzdWx0LT5zZXQoV2Vi
QmluZGluZ3M6Om1ha2VJbnRBcnJheShpbnRBcnJheSkpOwogfQogCiB2b2lkIFRleHRJbnB1dENv
bnRyb2xsZXI6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCogcmVzdWx0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjgxOTkpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wOS0y
MyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBUZXh0SW5w
dXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxMDAKKworICAgICAgICBUaGUgZm9s
bG93aW5nIHRlc3Qgbm93IHBhc3NlcyBvbiBjaHJvbWl1bSBEdW1wUmVuZGVyVHJlZToKKyAgICAg
ICAgcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvY2FyZXQtcHJpbWFyeS1iaWRpLmh0bWwKKyAg
ICAgICAgcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFu
Z2UtcGxhaW4uaHRtbAorICAgICAgICBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9yYW5nZS1m
b3ItZW1wdHktZG9jdW1lbnQuaHRtbAorICAgICAgICBlZGl0aW5nL2luc2VydGluZy9jYXJldC1w
b3NpdGlvbi5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQ6CisKIDIwMTAtMDktMjMgIEplZmYgU2NoaWxsZXIgIDxqZWZmc2NoaWxsZXJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJ
KHJldmlzaW9uIDY4MTkyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NjIsOSArOTYyLDExIEBAIEJVRzEw
MzE4IFdJTiBMSU5VWCA6IGZhc3QvY2FudmFzL3RvRGF0YVUKIAogLy8gSXNzdWUgMzI3MzogVGV4
dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Ugbm90IGltcGxlbWVu
dGVkLgogQlVHMzI3MyA6IGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtbGVmdC1yaWdodC5odG1sID0g
RkFJTAotQlVHMzI3MyBNQUMgOiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9jYXJldC1wcmlt
YXJ5LWJpZGkuaHRtbCA9IEZBSUwKLUJVRzMyNzMgTUFDIDogcGxhdGZvcm0vbWFjL2VkaXRpbmcv
aW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbCA9IEZBSUwKLUJVRzMy
NzMgTUFDIDogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvcmFuZ2UtZm9yLWVtcHR5LWRvY3Vt
ZW50Lmh0bWwgPSBGQUlMCitCVUczMjczIE1BQyA6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0
L2NhcmV0LXByaW1hcnktYmlkaS5odG1sID0gRkFJTCBQQVNTCitCVUczMjczIE1BQyA6IHBsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0
bWwgPSBGQUlMIFBBU1MKK0JVRzMyNzMgTUFDIDogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQv
cmFuZ2UtZm9yLWVtcHR5LWRvY3VtZW50Lmh0bWwgPSBGQUlMIFBBU1MKK0JVR1dLMzgxMDAgV0lO
IExJTlVYIE1BQyA6IGVkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwgPSBURVhU
IFBBU1MKKwogLy8gV2ViS2l0IDUwMzU4OjUwMzk1CiBCVUczMjczIDogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbCA9IFRFWFQKIC8vIFdlYktpdCByb2xs
IDUxNTEyOjUxNTI0CkBAIC0yNDI2LDkgKzI0MjgsNiBAQCBCVUc4NzI5IE1BQyA6IGh0dHAvdGVz
dHMvbXVsdGlwYXJ0L2ludmFsCiAvLyBTdGFydGVkIGZhaWxpbmcgYXQgcjU4MTUyCiBCVUdXSzM4
MDM4IFdJTiBMSU5VWCBNQUMgOiBmYXN0L3VybC9maWxlLWh0dHAtYmFzZS5odG1sID0gVEVYVAog
Ci0vLyBTdGFydGVkIGZhaWxpbmcgYXQgcjU4MTkxCi1CVUdXSzM4MTAwIFdJTiBMSU5VWCBNQUMg
OiBlZGl0aW5nL2luc2VydGluZy9jYXJldC1wb3NpdGlvbi5odG1sID0gVEVYVAotCiAvLyBOZXcg
dGVzdCwgbWF5IGJlIHNhZmUgdG8ganVzdCByZWJhc2VsaW5lLgogQlVHV0szODA5OSBXSU4gTElO
VVggOiBzdmcvY3VzdG9tL2Jyb2tlbi1pbnRlcm5hbC1yZWZlcmVuY2VzLnN2ZyA9IElNQUdFK1RF
WFQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68748</attachid>
            <date>2010-09-24 14:25:24 -0700</date>
            <delta_ts>2010-09-24 16:22:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-38100-20100924142523.patch</filename>
            <type>text/plain</type>
            <size>10450</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjgxOTkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDktMjMgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBD
aGFuZy4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBUZXh0SW5wdXRDb250cm9sbGVy
OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxMDAKKworICAgICAgICBJbXBsZW1lbnRlZCBUZXh0SW5w
dXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSBmb3IgY2hyb21pdW0gcGxh
dGZvcm0uCisgICAgICAgIEJlY2F1c2UgdGhlIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhbiBh
cnJheSBvZiBpbnRlZ2VycywgYWRkZWQgbWFrZUludEFycmF5IHRvIFdlYkJpbmRpbmdzLgorICAg
ICAgICBtYWtlSW50QXJyYXkgZG9lcyBub3QgdGFrZSBWZWN0b3IgYmVjYXVzZSBXZWJCaW5kaW5n
cy5oIGlzIGluY2x1ZGVkIGluIHBsdWdpbiBnbHVlIGNvZGUKKyAgICAgICAgd2hlcmUgaXQgY2Fu
bm90IGZpbmQgd3RmL1ZlY3Rvci5oLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcmUgYWRkZWQg
c2luY2Ugd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhlIHNhbWUgZmVhdHVyZSBpbiBjaHJvbWl1bSBz
aWRlCisgICAgICAgIGluIG9yZGVyIHRvIGVuYWJsZSBhbnkgdGVzdHMgdGhhdCB1c2VzIHRoaXMg
ZnVuY3Rpb24uCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQmluZGluZ3MuaDoKKyAgICAgICAgKiBw
dWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBzcmMvV2ViQmluZGluZ3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjptYWtlSW50QXJyYXlJbXBsKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkJpbmRpbmdzOjptYWtlSW50QXJyYXkpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSk6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKwogMjAx
MC0wOS0yMyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhdmlkIExldmluLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCaW5k
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmluZGluZ3Mu
aAkocmV2aXNpb24gNjgxOTIpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJpbmRpbmdz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgV2ViQmluZGluZ3Nf
aAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAjaW5j
bHVkZSA8YmluZGluZ3MvbnBydW50aW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTQ0
LDYgKzE0NSw4IEBAIHB1YmxpYzoKICAgICAvLyBJZiBzbywgcmV0dXJuIHRoYXQgZWxlbWVudCBh
cyBhIFdlYkVsZW1lbnQgb2JqZWN0LgogICAgIFdFQktJVF9BUEkgc3RhdGljIGJvb2wgZ2V0RWxl
bWVudChOUE9iamVjdCogZWxlbWVudCwgV2ViRWxlbWVudCopOwogCisgICAgV0VCS0lUX0FQSSBz
dGF0aWMgTlBPYmplY3QqIG1ha2VJbnRBcnJheShjb25zdCBXZWJWZWN0b3I8aW50PiYpOworCiAg
ICAgLy8gRXhjZXB0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICB0eXBlZGVmIHZvaWQgKEV4Y2VwdGlvbkhhbmRs
ZXIpKHZvaWQqIGRhdGEsIGNvbnN0IE5QVVRGOCogbWVzc2FnZSk7CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA2ODE5MikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDYgKzM1NSw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgV2ViUmFuZ2UgbWFya2VkUmFuZ2UoKSBjb25zdCA9IDA7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UodW5zaWduZWQgbG9jYXRpb24s
IHVuc2lnbmVkIGxlbmd0aCwgV2ViUmVjdCYpIGNvbnN0ID0gMDsKKwogICAgIC8vIFN1cHBvcnRz
IGNvbW1hbmRzIGxpa2UgVW5kbywgUmVkbywgQ3V0LCBDb3B5LCBQYXN0ZSwgU2VsZWN0QWxsLAog
ICAgIC8vIFVuc2VsZWN0LCBldGMuIFNlZSBFZGl0b3JDb21tYW5kLmNwcCBmb3IgdGhlIGZ1bGwg
bGlzdCBvZiBzdXBwb3J0ZWQKICAgICAvLyBjb21tYW5kcy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQmluZGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQmluZGluZ3MuY3BwCShyZXZpc2lvbiA2ODE5MikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQmluZGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDE3IEBAIHN0YXRp
YyBib29sIGdldEVsZW1lbnRJbXBsKE5QT2JqZWN0KiBucE8KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorc3RhdGljIE5QT2JqZWN0KiBtYWtlSW50QXJyYXlJbXBsKGNvbnN0IFdlYlZlY3RvcjxpbnQ+
JiBkYXRhKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpBcnJheT4gcmVzdWx0ID0gdjg6OkFycmF5OjpOZXcoZGF0YS5zaXplKCkpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5zaXplKCk7IGkrKykKKyAgICAgICAgcmVzdWx0
LT5TZXQoaSwgdjg6Ok51bWJlcjo6TmV3KGRhdGFbaV0pKTsKKworICAgIFdlYkNvcmU6OkRPTVdp
bmRvdyogd2luZG93ID0gV2ViQ29yZTo6VjhQcm94eTo6cmV0cmlldmVXaW5kb3coV2ViQ29yZTo6
VjhQcm94eTo6Y3VycmVudENvbnRleHQoKSk7CisgICAgcmV0dXJuIG5wQ3JlYXRlVjhTY3JpcHRP
YmplY3QoMCwgcmVzdWx0LCB3aW5kb3cpOworfQorCiAjZW5kaWYKIAogYm9vbCBXZWJCaW5kaW5n
czo6Z2V0RHJhZ0RhdGEoTlBPYmplY3QqIGV2ZW50LCBpbnQqIGV2ZW50SWQsIFdlYkRyYWdEYXRh
KiBkYXRhKQpAQCAtMzUwLDYgKzM2MSwxNiBAQCBib29sIFdlYkJpbmRpbmdzOjpnZXRFbGVtZW50
KE5QT2JqZWN0KiBlCiAjZW5kaWYKIH0KIAorTlBPYmplY3QqIFdlYkJpbmRpbmdzOjptYWtlSW50
QXJyYXkoY29uc3QgV2ViVmVjdG9yPGludD4gJiBkYXRhKQoreworI2lmIFVTRShWOCkKKyAgICBy
ZXR1cm4gbWFrZUludEFycmF5SW1wbChkYXRhKTsKKyNlbHNlCisgICAgLy8gTm90IHN1cHBvcnRl
ZCBvbiBvdGhlciBwb3J0cyAoSlNDLCBldGMuKS4KKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQor
CiB2b2lkIFdlYkJpbmRpbmdzOjpwdXNoRXhjZXB0aW9uSGFuZGxlcihFeGNlcHRpb25IYW5kbGVy
IGhhbmRsZXIsIHZvaWQqIGRhdGEpCiB7CiAgICAgV2ViQ29yZTo6cHVzaEV4Y2VwdGlvbkhhbmRs
ZXIoaGFuZGxlciwgZGF0YSk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
CShyZXZpc2lvbiA2ODE5MikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA4MSw2ICsxMDgxLDIyIEBAIFdlYlJhbmdlIFdlYkZyYW1l
SW1wbDo6bWFya2VkUmFuZ2UoKSBjb24KICAgICByZXR1cm4gZnJhbWUoKS0+ZWRpdG9yKCktPmNv
bXBvc2l0aW9uUmFuZ2UoKTsKIH0KIAorYm9vbCBXZWJGcmFtZUltcGw6OmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgsIFdlYlJlY3Qm
IHJlY3QpIGNvbnN0Cit7CisgICAgaWYgKChsb2NhdGlvbiArIGxlbmd0aCA8IGxvY2F0aW9uKSAm
JiAobG9jYXRpb24gKyBsZW5ndGgpKQorICAgICAgICBsZW5ndGggPSAwOworCisgICAgRWxlbWVu
dCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVt
ZW50KCk7CisgICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9v
dCA6IGZyYW1lKCktPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNj
b3BlLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgSW50UmVjdCBpbnRSZWN0ID0gZnJhbWUoKS0+ZWRpdG9yKCktPmZpcnN0UmVj
dEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICByZWN0ID0gV2ViUmVjdChpbnRSZWN0LngoKSwg
aW50UmVjdC55KCksIGludFJlY3Qud2lkdGgoKSwgaW50UmVjdC5oZWlnaHQoKSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBXZWJGcmFtZUltcGw6OmV4ZWN1dGVDb21tYW5kKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoZnJhbWUoKSk7CkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDY4MTkyKQorKysgV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXJrVGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBo
YXNNYXJrZWRUZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJSYW5nZSBtYXJrZWRSYW5nZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1bnNp
Z25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBXZWJSZWN0JikgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0cmluZyYpOwogICAgIHZpcnR1YWwg
Ym9vbCBleGVjdXRlQ29tbWFuZChjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJTdHJpbmcmIHZh
bHVlKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYW5kRW5hYmxlZChjb25zdCBXZWJTdHJpbmcm
KSBjb25zdDsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY4MTk5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDktMjMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFu
Zy4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBUZXh0SW5wdXRDb250cm9sbGVyOjpm
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzgxMDAKKworICAgICAgICBJbXBsZW1lbnRlZCBUZXh0SW5wdXRD
b250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSBmb3IgY2hyb21pdW0gcGxhdGZv
cm0uCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcmUgYWRkZWQgc2luY2Ugd2UgbmVlZCB0byBpbXBs
ZW1lbnQgdGhlIHNhbWUgZmVhdHVyZSBpbiBjaHJvbWl1bSBzaWRlCisgICAgICAgIGluIG9yZGVy
IHRvIGVuYWJsZSBhbnkgdGVzdHMgdGhhdCB1c2VzIHRoaXMgZnVuY3Rpb24uCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKTogQWRk
ZWQuCisKIDIwMTAtMDktMjMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpJbmRleDogV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGV4dElucHV0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGV4dElucHV0Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDY4MTkyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGV4dElucHV0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJUZXh0SW5wdXRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJU
ZXN0U2hlbGwuaCIKKyNpbmNsdWRlICJwdWJsaWMvV2ViQmluZGluZ3MuaCIKICNpbmNsdWRlICJw
dWJsaWMvV2ViRnJhbWUuaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViUmFuZ2UuaCIKICNpbmNsdWRl
ICJwdWJsaWMvV2ViU3RyaW5nLmgiCkBAIC0xODYsMTAgKzE4NywyNyBAQCB2b2lkIFRleHRJbnB1
dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UoCiAgICAgcmVzdWx0LT5zZXQoc3RyaW5nKGJ1ZmZl
cikpOwogfQogCi12b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3ZvaWQg
VGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CisKKyAgICBXZWJG
cmFtZSogbWFpbkZyYW1lID0gZ2V0TWFpbkZyYW1lKCk7CisgICAgaWYgKCFtYWluRnJhbWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1l
bnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXZWJSZWN0IHJlY3Q7CisgICAgaWYgKCFtYWluRnJhbWUtPmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50
b0ludDMyKCksIHJlY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8aW50PiBpbnRB
cnJheSg0KTsKKyAgICBpbnRBcnJheVswXSA9IHJlY3QueDsKKyAgICBpbnRBcnJheVsxXSA9IHJl
Y3QueTsKKyAgICBpbnRBcnJheVsyXSA9IHJlY3Qud2lkdGg7CisgICAgaW50QXJyYXlbM10gPSBy
ZWN0LmhlaWdodDsKKyAgICByZXN1bHQtPnNldChXZWJCaW5kaW5nczo6bWFrZUludEFycmF5KGlu
dEFycmF5KSk7CiB9CiAKIHZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6Y2hhcmFjdGVySW5kZXhG
b3JQb2ludChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA2ODE5OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA5LTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAg
W2Nocm9taXVtXSBJbXBsZW1lbnQgVGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4MTAwCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyB0ZXN0IG5vdyBwYXNzZXMgb24gY2hy
b21pdW0gRHVtcFJlbmRlclRyZWU6CisgICAgICAgIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0
L2NhcmV0LXByaW1hcnktYmlkaS5odG1sCisgICAgICAgIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lu
cHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwKKyAgICAgICAgcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5wdXQvcmFuZ2UtZm9yLWVtcHR5LWRvY3VtZW50Lmh0bWwKKyAgICAg
ICAgZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcG9zaXRpb24uaHRtbAorCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDEwLTA5LTIzICBKZWZm
IFNjaGlsbGVyICA8amVmZnNjaGlsbGVyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2aWQgSHlhdHQuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA2ODE5MikKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtOTYyLDkgKzk2MiwxMSBAQCBCVUcxMDMxOCBXSU4gTElOVVggOiBmYXN0L2NhbnZhcy90
b0RhdGFVCiAKIC8vIElzc3VlIDMyNzM6IFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlIG5vdCBpbXBsZW1lbnRlZC4KIEJVRzMyNzMgOiBlZGl0aW5nL3NlbGVj
dGlvbi9tb3ZlLWxlZnQtcmlnaHQuaHRtbCA9IEZBSUwKLUJVRzMyNzMgTUFDIDogcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5wdXQvY2FyZXQtcHJpbWFyeS1iaWRpLmh0bWwgPSBGQUlMCi1CVUczMjcz
IE1BQyA6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJh
bmdlLXBsYWluLmh0bWwgPSBGQUlMCi1CVUczMjczIE1BQyA6IHBsYXRmb3JtL21hYy9lZGl0aW5n
L2lucHV0L3JhbmdlLWZvci1lbXB0eS1kb2N1bWVudC5odG1sID0gRkFJTAorQlVHMzI3MyBNQUMg
OiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9jYXJldC1wcmltYXJ5LWJpZGkuaHRtbCA9IEZB
SUwgUEFTUworQlVHMzI3MyBNQUMgOiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9maXJzdHJl
Y3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sID0gRkFJTCBQQVNTCitCVUczMjczIE1BQyA6
IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L3JhbmdlLWZvci1lbXB0eS1kb2N1bWVudC5odG1s
ID0gRkFJTCBQQVNTCitCVUdXSzM4MTAwIDogZWRpdGluZy9pbnNlcnRpbmcvY2FyZXQtcG9zaXRp
b24uaHRtbCA9IFRFWFQgUEFTUworCiAvLyBXZWJLaXQgNTAzNTg6NTAzOTUKIEJVRzMyNzMgOiBm
YXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sID0gVEVYVAog
Ly8gV2ViS2l0IHJvbGwgNTE1MTI6NTE1MjQKQEAgLTI0MjYsOSArMjQyOCw2IEBAIEJVRzg3Mjkg
TUFDIDogaHR0cC90ZXN0cy9tdWx0aXBhcnQvaW52YWwKIC8vIFN0YXJ0ZWQgZmFpbGluZyBhdCBy
NTgxNTIKIEJVR1dLMzgwMzggV0lOIExJTlVYIE1BQyA6IGZhc3QvdXJsL2ZpbGUtaHR0cC1iYXNl
Lmh0bWwgPSBURVhUCiAKLS8vIFN0YXJ0ZWQgZmFpbGluZyBhdCByNTgxOTEKLUJVR1dLMzgxMDAg
V0lOIExJTlVYIE1BQyA6IGVkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwgPSBU
RVhUCi0KIC8vIE5ldyB0ZXN0LCBtYXkgYmUgc2FmZSB0byBqdXN0IHJlYmFzZWxpbmUuCiBCVUdX
SzM4MDk5IFdJTiBMSU5VWCA6IHN2Zy9jdXN0b20vYnJva2VuLWludGVybmFsLXJlZmVyZW5jZXMu
c3ZnID0gSU1BR0UrVEVYVAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>