<?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>12850</bug_id>
          
          <creation_ts>2007-02-21 21:53:06 -0800</creation_ts>
          <short_desc>Event listener leaks seen @ gmail.com</short_desc>
          <delta_ts>2007-02-26 06:42:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://gmail.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Feng Qian">ian.eng.webkit</reporter>
          <assigned_to name="Feng Qian">ian.eng.webkit</assigned_to>
          <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>22307</commentid>
    <comment_count>0</comment_count>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-21 21:53:06 -0800</bug_when>
    <thetext>You need a gmail account. In KJS::Collector::collect(), before exiting the function, log heap.numLiveObjects. After visiting GMail, close the window, open a new one, there are still &gt;10k live objects.

I looked further, there are protected objects (FunctionImp) that cannot be reclaimed. These protected FunctionImp also causes other objects to leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22316</commentid>
    <comment_count>1</comment_count>
      <attachid>13311</attachid>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 00:32:48 -0800</bug_when>
    <thetext>Created attachment 13311
fix RemoveEventListener

I think the problem is in kjs_window.cpp, Window::getJSEventListener, which creates a JSEventListener object if it does not exist. The constructor of JSEventListener makes JSValue GC-protected.

In Window::RemoveEventListener and DOMEventTargetNode::RemoveEventListener, both calls getJSEventListener to check if a listener exists. This leaks both JSEventListener and the JavaScript event listener object.

I added a new function Window::hasJSEventListener for checking if a JSEventListener exists for a JS event listener object without creating a new one.

Before the change, run-safari and visit Gmail, then exist. Safari reports:
LEAK: 2102 Node
LEAK: 158688 KJS::Node

After applying the patch, no message reported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22298</commentid>
    <comment_count>2</comment_count>
      <attachid>13311</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-22 01:04:26 -0800</bug_when>
    <thetext>Comment on attachment 13311
fix RemoveEventListener

The change itself looks good. Thanks, this will is a really valuable fix! Technicalities:

- Needs a ChangeLog entry
- Needs a test case
- Per the coding style guidelines, the * should go next to the type name, although it is hard to tell from the current surrounding code.

r- for now for the technicalities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22297</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-22 01:24:29 -0800</bug_when>
    <thetext>May also fix http://bugs.webkit.org/show_bug.cgi?id=12659</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22253</commentid>
    <comment_count>4</comment_count>
      <attachid>13324</attachid>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 12:04:53 -0800</bug_when>
    <thetext>Created attachment 13324
test case

It leaks several objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22240</commentid>
    <comment_count>5</comment_count>
      <attachid>13325</attachid>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 13:02:51 -0800</bug_when>
    <thetext>Created attachment 13325
revised patch

Renamed hasJSEventListener to findJSEventListener.
Fixed some style issues and added an entry in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22241</commentid>
    <comment_count>6</comment_count>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 13:10:02 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; May also fix http://bugs.webkit.org/show_bug.cgi?id=12659
&gt; 

I cannot find significant number of leaked JS object when visiting both sites even without fixing this bug. It might be fixed by an early patch that clearing helper object properties of window object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22242</commentid>
    <comment_count>7</comment_count>
      <attachid>13326</attachid>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 13:11:35 -0800</bug_when>
    <thetext>Created attachment 13326
fixed wrong path names in ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22176</commentid>
    <comment_count>8</comment_count>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 14:01:27 -0800</bug_when>
    <thetext>*** Bug 12853 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22169</commentid>
    <comment_count>9</comment_count>
      <attachid>13327</attachid>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 14:06:12 -0800</bug_when>
    <thetext>Created attachment 13327
revised patch again

added findJSUnprotectedEventListener and fixed use in JSXMLHttpRequest.cpp;
added a leak counter for EventListeners.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22172</commentid>
    <comment_count>10</comment_count>
      <attachid>13327</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-02-22 14:16:47 -0800</bug_when>
    <thetext>Comment on attachment 13327
revised patch again

Great fix!

Is there no way to add a test for this? We really want a test for each bug fix if at all possible.

+            if (listener) {
                 node-&gt;removeEventListener(args[0]-&gt;toString(exec), listener,args[2]-&gt;toBoolean(exec));
+            }

Please don&apos;t add braces. Our coding style guidelines call for no braces on a single-line if statement. Also, adding those braces makes the patch longer for no good reason.

+JSEventListener *Window::findJSEventListener(JSValue* val, bool html) {

Braces that open a function call go on a separate line per our guidelines. The * goes next to the type name as per our style guidelines.

+  JSObject *object = static_cast&lt;JSObject *&gt;(val);

The * goes next to the type name as per our style guidelines.

-  case Window::RemoveEventListener:
+  case Window::RemoveEventListener: {
         if (!window-&gt;isSafeScript(exec))
             return jsUndefined();
-        if (JSEventListener *listener = Window::retrieveActive(exec)-&gt;getJSEventListener(args[1]))
+        JSEventListener *listener = Window::retrieveActive(exec)-&gt;findJSEventListener(args[1]);
+        if (listener) {
             if (Document *doc = frame-&gt;document())
                 doc-&gt;removeWindowEventListener(AtomicString(args[0]-&gt;toString(exec)), listener, args[2]-&gt;toBoolean(exec));
+        }
         return jsUndefined();
+  }

Why the gratuitous style change here? By putting the variable inside the if we avoid the need for braces around the entire case statement. There&apos;s no need to tweak the style while fixing this bug; I think it just makes the patch bigger and obscures the point of what you&apos;re fixing.

+    JSEventListener *findJSEventListener(JSValue*, bool html = false);

* goes next to the type name.

+    // JS Object.
+    JSUnprotectedEventListener *findJSUnprotectedEventListener(JSValue*, bool html = false);

Please put a blank lines between the comment and the declaration here as with the other functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22174</commentid>
    <comment_count>11</comment_count>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 14:29:21 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 13327 [edit])
&gt; Great fix!
&gt;

Thanks for your quick review. Here are some of my arguments:
 
&gt; Is there no way to add a test for this? We really want a test for each bug fix
&gt; if at all possible.

I attached a test case to in the bug report.
http://bugs.webkit.org/attachment.cgi?id=13324&amp;action=view


&gt; 
&gt; +            if (listener) {
&gt;                  node-&gt;removeEventListener(args[0]-&gt;toString(exec),
&gt; listener,args[2]-&gt;toBoolean(exec));
&gt; +            }
&gt; 
&gt; Please don&apos;t add braces. Our coding style guidelines call for no braces on a
&gt; single-line if statement. Also, adding those braces makes the patch longer for
&gt; no good reason.
&gt; 
&gt; +JSEventListener *Window::findJSEventListener(JSValue* val, bool html) {
&gt; 
&gt; Braces that open a function call go on a separate line per our guidelines. The
&gt; * goes next to the type name as per our style guidelines.

I followed local style in the file. The local style also uses 2 spaces for indention.

&gt; 
&gt; +  JSObject *object = static_cast&lt;JSObject *&gt;(val);
&gt; 
&gt; The * goes next to the type name as per our style guidelines.
&gt; 
&gt; -  case Window::RemoveEventListener:
&gt; +  case Window::RemoveEventListener: {
&gt;          if (!window-&gt;isSafeScript(exec))
&gt;              return jsUndefined();
&gt; -        if (JSEventListener *listener =
&gt; Window::retrieveActive(exec)-&gt;getJSEventListener(args[1]))
&gt; +        JSEventListener *listener =
&gt; Window::retrieveActive(exec)-&gt;findJSEventListener(args[1]);
&gt; +        if (listener) {
&gt;              if (Document *doc = frame-&gt;document())
&gt;                 
&gt; doc-&gt;removeWindowEventListener(AtomicString(args[0]-&gt;toString(exec)), listener,
&gt; args[2]-&gt;toBoolean(exec));
&gt; +        }
&gt;          return jsUndefined();
&gt; +  }
&gt; 
&gt; Why the gratuitous style change here? By putting the variable inside the if we
&gt; avoid the need for braces around the entire case statement. There&apos;s no need to
&gt; tweak the style while fixing this bug; I think it just makes the patch bigger
&gt; and obscures the point of what you&apos;re fixing.
&gt; 
&gt; +    JSEventListener *findJSEventListener(JSValue*, bool html = false);
&gt; 
&gt; * goes next to the type name.
&gt; 
&gt; +    // JS Object.
&gt; +    JSUnprotectedEventListener *findJSUnprotectedEventListener(JSValue*, bool
&gt; html = false);
&gt; 
&gt; Please put a blank lines between the comment and the declaration here as with
&gt; the other functions.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22121</commentid>
    <comment_count>12</comment_count>
      <attachid>13328</attachid>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 14:44:03 -0800</bug_when>
    <thetext>Created attachment 13328
revised patch again again

In new functions I added, I follow style guide: 4-space indention and * following type name. 

In existing functions, I follow the local rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22075</commentid>
    <comment_count>13</comment_count>
      <attachid>13328</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-22 18:34:38 -0800</bug_when>
    <thetext>Comment on attachment 13328
revised patch again again

The right way to add a test case is to included it in the patch, in the LayoutTests directory. In this case, LayoutTests/fast/events would be the appropriate directory. This is so the person committing doesn&apos;t have to do extra work applying the patch.

Also: I think the comments on the findJSEventListener and related methods are excessive. Can we get these down to one or two lines instead of having whole paragraphs in the header?

Better yet, how about renaming the methods to make behavior more clear from the name? getJSEventListener could be renamed to findOrCreateJSEventListener for instance.

r- for lack of test case. 

Please also consider my feedback about the large comments. We tend to avoid those in WebKit because they can make it harder to read the code. Code-wise though, the patch is fine to land once a test case is added to the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22048</commentid>
    <comment_count>14</comment_count>
      <attachid>13336</attachid>
    <who name="Feng Qian">ian.eng.webkit</who>
    <bug_when>2007-02-22 19:08:51 -0800</bug_when>
    <thetext>Created attachment 13336
patch again again again

Your comments are well taken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22034</commentid>
    <comment_count>15</comment_count>
      <attachid>13336</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-22 19:17:05 -0800</bug_when>
    <thetext>Comment on attachment 13336
patch again again again

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22030</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-02-22 20:01:11 -0800</bug_when>
    <thetext>Landed in r19820.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13311</attachid>
            <date>2007-02-22 00:32:48 -0800</date>
            <delta_ts>2007-02-22 13:02:51 -0800</delta_ts>
            <desc>fix RemoveEventListener</desc>
            <filename>bug12850.patch</filename>
            <type>text/plain</type>
            <size>4031</size>
            <attacher name="Feng Qian">ian.eng.webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ranNfZG9tLmNwcAkocmV2aXNpb24gMTk3ODgpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19kb20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjcsOSArNjY3LDEx
IEBAIEpTVmFsdWUqIERPTUV2ZW50VGFyZ2V0Tm9kZVByb3RvdHlwZUZ1bmMKICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRE9NRXZlbnRU
YXJnZXROb2RlOjpSZW1vdmVFdmVudExpc3RlbmVyOiB7Ci0gICAgICAgICAgICBKU0V2ZW50TGlz
dGVuZXIgKmxpc3RlbmVyID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+Z2V0SlNFdmVu
dExpc3RlbmVyKGFyZ3NbMV0pOwotICAgICAgICAgICAgaWYgKGxpc3RlbmVyKQorICAgICAgICAg
ICAgV2luZG93KiB3aW5kb3cgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpOworICAgICAg
ICAgICAgaWYgKHdpbmRvdy0+aGFzSlNFdmVudExpc3RlbmVyKGFyZ3NbMV0pKSB7CisgICAgICAg
ICAgICAgICAgSlNFdmVudExpc3RlbmVyICpsaXN0ZW5lciA9IHdpbmRvdy0+Z2V0SlNFdmVudExp
c3RlbmVyKGFyZ3NbMV0pOwogICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZUV2ZW50TGlzdGVu
ZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLGFyZ3NbMl0tPnRvQm9vbGVhbihl
eGVjKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERPTUV2ZW50VGFyZ2V0Tm9kZTo6RGlzcGF0Y2hFdmVu
dDoKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAkocmV2aXNpb24gMTk3ODgpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
Mjk4LDYgKzEyOTgsMTYgQEAgSlNWYWx1ZSAqV2luZG93OjpnZXRMaXN0ZW5lcihFeGVjU3RhdGUg
KgogICAgIHJldHVybiBqc051bGwoKTsKIH0KIAorYm9vbCBXaW5kb3c6Omhhc0pTRXZlbnRMaXN0
ZW5lcihKU1ZhbHVlICp2YWwsIGJvb2wgaHRtbCkgeworICBpZiAoIXZhbC0+aXNPYmplY3QoKSkK
KyAgICByZXR1cm4gZmFsc2U7CisgIEpTT2JqZWN0ICpvYmplY3QgPSBzdGF0aWNfY2FzdDxKU09i
amVjdCAqPih2YWwpOworCisgIExpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0gaHRtbCA/IGpzSFRN
TEV2ZW50TGlzdGVuZXJzIDoganNFdmVudExpc3RlbmVyczsKKyAgCisgIHJldHVybiBsaXN0ZW5l
cnMuZ2V0KG9iamVjdCkgIT0gMDsKK30KKwogSlNFdmVudExpc3RlbmVyICpXaW5kb3c6OmdldEpT
RXZlbnRMaXN0ZW5lcihKU1ZhbHVlICp2YWwsIGJvb2wgaHRtbCkKIHsKICAgaWYgKCF2YWwtPmlz
T2JqZWN0KCkpCkBAIC0xMzIxLDcgKzEzMzEsNyBAQCBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
ciAqV2luZG93OjpnZXRKCiAgIFVucHJvdGVjdGVkTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMgPSBo
dG1sID8ganNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVycyA6IGpzVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyczsKICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9
IGxpc3RlbmVycy5nZXQob2JqZWN0KSkKICAgICByZXR1cm4gbGlzdGVuZXI7Ci0KKwkKICAgLy8g
VGhlIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyIGNvbnN0cnVjdG9yIGFkZHMgaXQgdG8gb3Vy
IGpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVycyBtYXAuCiAgIHJldHVybiBuZXcgSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIob2JqZWN0LCB0aGlzLCBodG1sKTsKIH0KQEAgLTE3OTEsMTMgKzE4
MDEsMTYgQEAgSlNWYWx1ZSAqV2luZG93RnVuYzo6Y2FsbEFzRnVuY3Rpb24oRXhlYwogICAgICAg
ICAgICAgaWYgKERvY3VtZW50ICpkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAg
ICAgICBkb2MtPmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRv
U3RyaW5nKGV4ZWMpKSwgbGlzdGVuZXIsIGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICBjYXNlIFdpbmRvdzo6UmVtb3ZlRXZlbnRMaXN0
ZW5lcjoKKyAgY2FzZSBXaW5kb3c6OlJlbW92ZUV2ZW50TGlzdGVuZXI6IHsKICAgICAgICAgaWYg
KCF3aW5kb3ctPmlzU2FmZVNjcmlwdChleGVjKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotICAgICAgICBpZiAoSlNFdmVudExpc3RlbmVyICpsaXN0ZW5lciA9IFdpbmRvdzo6
cmV0cmlldmVBY3RpdmUoZXhlYyktPmdldEpTRXZlbnRMaXN0ZW5lcihhcmdzWzFdKSkKKyAgICAg
ICAgaWYgKFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmhhc0pTRXZlbnRMaXN0ZW5lcihh
cmdzWzFdKSkgeworICAgICAgICAgICAgSlNFdmVudExpc3RlbmVyICpsaXN0ZW5lciA9IFdpbmRv
dzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmdldEpTRXZlbnRMaXN0ZW5lcihhcmdzWzFdKTsKICAg
ICAgICAgICAgIGlmIChEb2N1bWVudCAqZG9jID0gZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAg
ICAgICAgICAgZG9jLT5yZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKEF0b21pY1N0cmluZyhhcmdz
WzBdLT50b1N0cmluZyhleGVjKSksIGxpc3RlbmVyLCBhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYykp
OworICAgICAgICB9CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICB9CiAgIGNhc2Ug
V2luZG93OjpTaG93TW9kYWxEaWFsb2c6IHsKICAgICBKU1ZhbHVlKiByZXN1bHQgPSBzaG93TW9k
YWxEaWFsb2coZXhlYywgd2luZG93LCBhcmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9ranNfd2luZG93LmgJKHJldmlzaW9uIDE5Nzg4KQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9ranNfd2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw4ICsxMzUsMTYgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgICAgQmFySW5mbyAqc2Nyb2xsYmFycyhFeGVjU3RhdGUqKSBjb25z
dDsKICAgICBCYXJJbmZvICpzdGF0dXNiYXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgQmFySW5m
byAqdG9vbGJhcihFeGVjU3RhdGUqKSBjb25zdDsKKwkKKyAgICAvLyBDaGVja3Mgd2hldGhlciBh
IEpTIEV2ZW50TGlzdGVuZXIgaGFzIGEgd3JhcHBlci4KKyAgICBib29sIGhhc0pTRXZlbnRMaXN0
ZW5lcihKU1ZhbHVlKiwgYm9vbCBodG1sID0gZmFsc2UpOworCQorICAgIC8vIFJldHVybnMgYSB3
cmFwcGVyIG9mIGEgSlMgRXZlbnRMaXN0ZW5lci4gV3JhcHBlcnMgYXJlIGNhY2hlZC4gQ3JlYXRl
cworICAgIC8vIGEgbmV3IG9uZSBpZiBubyB3cmFwcGVyIGV4aXN0cy4gVGhlIEpTIEV2ZW50TGlz
dGVuZXIgaXMgR0MgcHJvdGVjdGVkLgorICAgIC8vIFJldHVybnMgMCBpZiB0aGUgZmlyc3QgcGFy
YW1ldGVyIGlzIG5vdCBhIEpTT2JqZWN0IHR5cGUuCiAgICAgSlNFdmVudExpc3RlbmVyICpnZXRK
U0V2ZW50TGlzdGVuZXIoSlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKICAgICBKU1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lciAqZ2V0SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoSlNWYWx1
ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKKwkKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdmlydHVh
bCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSAqKSBjb25zdDsKIAo=
</data>
<flag name="review"
          id="5209"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13324</attachid>
            <date>2007-02-22 12:04:53 -0800</date>
            <delta_ts>2007-02-22 12:04:53 -0800</delta_ts>
            <desc>test case</desc>
            <filename>remove_event_listener.html</filename>
            <type>text/html</type>
            <size>216</size>
            <attacher name="Feng Qian">ian.eng.webkit</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8c2NyaXB0PgovLyBmb2xsb3dpbmcgY29kZSBzaG91bGQgbGVhayB0aGUg
ZnVuY3Rpb24gYW5kIHdpbmRvdy9kb2N1bWVudCBvYmplY3RzLgpmdW5jdGlvbiBsZWFrZWQoZSkg
e3ZhciBhID0gd2luZG93OyB9CmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92
ZSIsIGxlYWtlZCwgdHJ1ZSk7Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13325</attachid>
            <date>2007-02-22 13:02:51 -0800</date>
            <delta_ts>2007-02-22 13:11:35 -0800</delta_ts>
            <desc>revised patch</desc>
            <filename>bug12850.patch</filename>
            <type>text/plain</type>
            <size>5486</size>
            <attacher name="Feng Qian">ian.eng.webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDctMDItMjIgIElhbiBFbmcgPGlhbi5lbmcud2Via2l0QGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCisKKyAgICAgICAgLSBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg1MAorICAgICAgICBQcm9ibGVtOiBS
ZW1vdmVFdmVudExpc3RlbmVyIGxlYWtzIG1lbW9yeSBpZiB0aGUgbGlzdGVuZXIgaXMgbm90Cisg
ICAgICAgIHJlZ2lzdGVyZWQuCisgICAgICAgIEZpeDogQWRkZWQgV2luZG93OjpmaW5kSlNFdmVu
dExpc3RlbmVyIGZ1bmN0aW9uIHcvbyBjcmVhdGluZyBhIAorICAgICAgICBKU0V2ZW50TGlzdGVu
ZXIuCisJCisJKiBiaW5kaW5nL2pzL2tqc19kb20uY3BwOgorCSogYmluZGluZy9qcy9ranNfd2lu
ZG93Lmg6ICAgICAgICAKKwkqIGJpbmRpbmcvanMva2pzX3dpbmRvdy5jcHA6CisKIDIwMDctMDIt
MjEgIEtyenlzenRvZiBLb3dhbGN6eWsgIDxra293YWxjenlrQGdtYWlsLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
ZG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19kb20uY3BwCShy
ZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY2Nyw5ICs2NjcsMTAgQEAgSlNWYWx1ZSogRE9NRXZlbnRUYXJnZXROb2Rl
UHJvdG90eXBlRnVuYwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBET01FdmVudFRhcmdldE5vZGU6OlJlbW92ZUV2ZW50TGlzdGVuZXI6
IHsKLSAgICAgICAgICAgIEpTRXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJp
ZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU0V2ZW50TGlzdGVuZXIoYXJnc1sxXSk7Ci0gICAgICAgICAg
ICBpZiAobGlzdGVuZXIpCisgICAgICAgICAgICBKU0V2ZW50TGlzdGVuZXIgKmxpc3RlbmVyID0g
V2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+ZmluZEpTRXZlbnRMaXN0ZW5lcihhcmdzWzFd
KTsKKyAgICAgICAgICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICAgICAgICAgIG5vZGUtPnJl
bW92ZUV2ZW50TGlzdGVuZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLGFyZ3Nb
Ml0tPnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIERPTUV2ZW50VGFyZ2V0Tm9k
ZTo6RGlzcGF0Y2hFdmVudDoKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAkocmV2
aXNpb24gMTk3ODgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjk4LDE2ICsxMjk4LDI0IEBAIEpTVmFsdWUgKldpbmRvdzo6Z2V0TGlz
dGVuZXIoRXhlY1N0YXRlICoKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CiAKK0pTRXZlbnRMaXN0
ZW5lciAqV2luZG93OjpmaW5kSlNFdmVudExpc3RlbmVyKEpTVmFsdWUqIHZhbCwgYm9vbCBodG1s
KSB7CisgIGlmICghdmFsLT5pc09iamVjdCgpKQorICAgICByZXR1cm4gMDsKKyAgSlNPYmplY3Qg
Km9iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0ICo+KHZhbCk7CisgIExpc3RlbmVyc01hcCYg
bGlzdGVuZXJzID0gaHRtbCA/IGpzSFRNTEV2ZW50TGlzdGVuZXJzIDoganNFdmVudExpc3RlbmVy
czsKKyAgcmV0dXJuIGxpc3RlbmVycy5nZXQob2JqZWN0KTsKK30KKwogSlNFdmVudExpc3RlbmVy
ICpXaW5kb3c6OmdldEpTRXZlbnRMaXN0ZW5lcihKU1ZhbHVlICp2YWwsIGJvb2wgaHRtbCkKIHsK
KyAgSlNFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGZpbmRKU0V2ZW50TGlzdGVuZXIodmFsLCBo
dG1sKTsKKyAgaWYgKGxpc3RlbmVyKQorICAgIHJldHVybiBsaXN0ZW5lcjsKKwogICBpZiAoIXZh
bC0+aXNPYmplY3QoKSkKICAgICByZXR1cm4gMDsKICAgSlNPYmplY3QgKm9iamVjdCA9IHN0YXRp
Y19jYXN0PEpTT2JqZWN0ICo+KHZhbCk7CiAKLSAgTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMgPSBo
dG1sID8ganNIVE1MRXZlbnRMaXN0ZW5lcnMgOiBqc0V2ZW50TGlzdGVuZXJzOwotICBpZiAoSlNF
dmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGxpc3RlbmVycy5nZXQob2JqZWN0KSkKLSAgICByZXR1
cm4gbGlzdGVuZXI7Ci0KICAgLy8gTm90ZSB0aGF0IHRoZSBKU0V2ZW50TGlzdGVuZXIgY29uc3Ry
dWN0b3IgYWRkcyBpdCB0byBvdXIganNFdmVudExpc3RlbmVycyBsaXN0CiAgIHJldHVybiBuZXcg
SlNFdmVudExpc3RlbmVyKG9iamVjdCwgdGhpcywgaHRtbCk7CiB9CkBAIC0xMzE5LDkgKzEzMjcs
MTAgQEAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIgKldpbmRvdzo6Z2V0SgogICBKU09iamVj
dCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QgKj4odmFsKTsKIAogICBVbnByb3RlY3Rl
ZExpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0gaHRtbCA/IGpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRM
aXN0ZW5lcnMgOiBqc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnM7CisKICAgaWYgKEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGxpc3RlbmVycy5nZXQob2JqZWN0KSkKICAg
ICByZXR1cm4gbGlzdGVuZXI7Ci0KKwkKICAgLy8gVGhlIEpTVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyIGNvbnN0cnVjdG9yIGFkZHMgaXQgdG8gb3VyIGpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
cyBtYXAuCiAgIHJldHVybiBuZXcgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIob2JqZWN0LCB0
aGlzLCBodG1sKTsKIH0KQEAgLTE3OTEsMTMgKzE4MDAsMTYgQEAgSlNWYWx1ZSAqV2luZG93RnVu
Yzo6Y2FsbEFzRnVuY3Rpb24oRXhlYwogICAgICAgICAgICAgaWYgKERvY3VtZW50ICpkb2MgPSBm
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBkb2MtPmFkZFdpbmRvd0V2ZW50TGlz
dGVuZXIoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSwgbGlzdGVuZXIsIGFy
Z3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICBjYXNlIFdpbmRvdzo6UmVtb3ZlRXZlbnRMaXN0ZW5lcjoKKyAgY2FzZSBXaW5kb3c6OlJlbW92
ZUV2ZW50TGlzdGVuZXI6IHsKICAgICAgICAgaWYgKCF3aW5kb3ctPmlzU2FmZVNjcmlwdChleGVj
KSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICBpZiAoSlNFdmVu
dExpc3RlbmVyICpsaXN0ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmdldEpT
RXZlbnRMaXN0ZW5lcihhcmdzWzFdKSkKKyAgICAgICAgSlNFdmVudExpc3RlbmVyICpsaXN0ZW5l
ciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRKU0V2ZW50TGlzdGVuZXIoYXJn
c1sxXSk7CisgICAgICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICAgICAgaWYgKERvY3VtZW50
ICpkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBkb2MtPnJlbW92ZVdp
bmRvd0V2ZW50TGlzdGVuZXIoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSwg
bGlzdGVuZXIsIGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgIH0KICAgY2FzZSBXaW5kb3c6OlNob3dNb2RhbERpYWxv
ZzogewogICAgIEpTVmFsdWUqIHJlc3VsdCA9IHNob3dNb2RhbERpYWxvZyhleGVjLCB3aW5kb3cs
IGFyZ3MpOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tq
c193aW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cu
aAkocmV2aXNpb24gMTk3ODgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuaAko
d29ya2luZyBjb3B5KQpAQCAtMTM1LDggKzEzNSwyMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBC
YXJJbmZvICpzY3JvbGxiYXJzKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEJhckluZm8gKnN0YXR1
c2JhcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICBCYXJJbmZvICp0b29sYmFyKEV4ZWNTdGF0ZSop
IGNvbnN0OworCisgICAgLy8gUmV0dXJucyBhIHdyYXBwZXIgb2YgYSBKUyBFdmVudExpc3RlbmVy
IGlmIHRoZXJlIGlzIGFuIGV4aXN0aW5nIG9uZS4KKyAgICAvLyBSZXR1cm5zIDAgaWYgbm8gZXhp
c3Rpbmcgd3JhcHBlciBvciB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG5vdCBhIAorICAgIC8vIEpT
IE9iamVjdC4KKyAgICBKU0V2ZW50TGlzdGVuZXIgKmZpbmRKU0V2ZW50TGlzdGVuZXIoSlNWYWx1
ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKKworICAgIC8vIFJldHVybnMgYSB3cmFwcGVyIG9mIGEg
SlMgRXZlbnRMaXN0ZW5lci4gQ3JlYXRlcyBhIG5ldyBvbmUgaWYgdGhlcmUKKyAgICAvLyBpcyBu
byBleGlzdGluZyBvbmUuIFJldHVybnMgMCBpZiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG5vdCBh
IEpTIE9iamVjdC4KKyAgICAvLyBOb3RlIHRoYXQgaWYgdGhlIHJldHVybmVkIHdyYXBwZXIgaXMg
bmV3bHkgY3JlYXRlZCwgSlMgRXZlbnRMaXN0ZW5lcgorICAgIC8vIG9iamVjdCBpcyBHQy1wcm90
ZWN0ZWQgdW50aWwgdGhlIHdyYXBwZXIgaXMgZGVsZXRlZC4KKyAgICAvLyBJZiB0aGUgY2FsbGVy
IG9ubHkgbmVlZHMgdG8gY2hlY2sgd2hldGhlciBhIHdyYXBwZXIgZXhpc3RzIGZvcgorICAgIC8v
IGEgSlMgRXZlbnRMaXN0ZW5lciBvYmplY3QsIHVzZSBmaW5kSlNFdmVudExpc3RlbmVyIGluc3Rl
YWQuCiAgICAgSlNFdmVudExpc3RlbmVyICpnZXRKU0V2ZW50TGlzdGVuZXIoSlNWYWx1ZSosIGJv
b2wgaHRtbCA9IGZhbHNlKTsKICAgICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciAqZ2V0SlNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoSlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKKwkK
ICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0
ZSAqKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13326</attachid>
            <date>2007-02-22 13:11:35 -0800</date>
            <delta_ts>2007-02-22 14:06:12 -0800</delta_ts>
            <desc>fixed wrong path names in ChangeLog</desc>
            <filename>bug12850.patch</filename>
            <type>text/plain</type>
            <size>5489</size>
            <attacher name="Feng Qian">ian.eng.webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDctMDItMjIgIElhbiBFbmcgPGlhbi5lbmcud2Via2l0QGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCisKKyAgICAgICAgLSBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg1MAorICAgICAgICBQcm9ibGVtOiBS
ZW1vdmVFdmVudExpc3RlbmVyIGxlYWtzIG1lbW9yeSBpZiB0aGUgbGlzdGVuZXIgaXMgbm90Cisg
ICAgICAgIHJlZ2lzdGVyZWQuCisgICAgICAgIEZpeDogQWRkZWQgV2luZG93OjpmaW5kSlNFdmVu
dExpc3RlbmVyIGZ1bmN0aW9uIHcvbyBjcmVhdGluZyBhIAorICAgICAgICBKU0V2ZW50TGlzdGVu
ZXIuCisJCisJKiBiaW5kaW5ncy9qcy9ranNfZG9tLmNwcDoKKwkqIGJpbmRpbmdzL2pzL2tqc193
aW5kb3cuaDogICAgICAgIAorCSogYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHA6CisKIDIwMDct
MDItMjEgIEtyenlzenRvZiBLb3dhbGN6eWsgIDxra293YWxjenlrQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfZG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19kb20uY3Bw
CShyZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2Nyw5ICs2NjcsMTAgQEAgSlNWYWx1ZSogRE9NRXZlbnRUYXJnZXRO
b2RlUHJvdG90eXBlRnVuYwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBET01FdmVudFRhcmdldE5vZGU6OlJlbW92ZUV2ZW50TGlzdGVu
ZXI6IHsKLSAgICAgICAgICAgIEpTRXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBXaW5kb3c6OnJl
dHJpZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU0V2ZW50TGlzdGVuZXIoYXJnc1sxXSk7Ci0gICAgICAg
ICAgICBpZiAobGlzdGVuZXIpCisgICAgICAgICAgICBKU0V2ZW50TGlzdGVuZXIgKmxpc3RlbmVy
ID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+ZmluZEpTRXZlbnRMaXN0ZW5lcihhcmdz
WzFdKTsKKyAgICAgICAgICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICAgICAgICAgIG5vZGUt
PnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLGFy
Z3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIERPTUV2ZW50VGFyZ2V0
Tm9kZTo6RGlzcGF0Y2hFdmVudDoKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRv
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAko
cmV2aXNpb24gMTk3ODgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjk4LDE2ICsxMjk4LDI0IEBAIEpTVmFsdWUgKldpbmRvdzo6Z2V0
TGlzdGVuZXIoRXhlY1N0YXRlICoKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CiAKK0pTRXZlbnRM
aXN0ZW5lciAqV2luZG93OjpmaW5kSlNFdmVudExpc3RlbmVyKEpTVmFsdWUqIHZhbCwgYm9vbCBo
dG1sKSB7CisgIGlmICghdmFsLT5pc09iamVjdCgpKQorICAgICByZXR1cm4gMDsKKyAgSlNPYmpl
Y3QgKm9iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0ICo+KHZhbCk7CisgIExpc3RlbmVyc01h
cCYgbGlzdGVuZXJzID0gaHRtbCA/IGpzSFRNTEV2ZW50TGlzdGVuZXJzIDoganNFdmVudExpc3Rl
bmVyczsKKyAgcmV0dXJuIGxpc3RlbmVycy5nZXQob2JqZWN0KTsKK30KKwogSlNFdmVudExpc3Rl
bmVyICpXaW5kb3c6OmdldEpTRXZlbnRMaXN0ZW5lcihKU1ZhbHVlICp2YWwsIGJvb2wgaHRtbCkK
IHsKKyAgSlNFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGZpbmRKU0V2ZW50TGlzdGVuZXIodmFs
LCBodG1sKTsKKyAgaWYgKGxpc3RlbmVyKQorICAgIHJldHVybiBsaXN0ZW5lcjsKKwogICBpZiAo
IXZhbC0+aXNPYmplY3QoKSkKICAgICByZXR1cm4gMDsKICAgSlNPYmplY3QgKm9iamVjdCA9IHN0
YXRpY19jYXN0PEpTT2JqZWN0ICo+KHZhbCk7CiAKLSAgTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMg
PSBodG1sID8ganNIVE1MRXZlbnRMaXN0ZW5lcnMgOiBqc0V2ZW50TGlzdGVuZXJzOwotICBpZiAo
SlNFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGxpc3RlbmVycy5nZXQob2JqZWN0KSkKLSAgICBy
ZXR1cm4gbGlzdGVuZXI7Ci0KICAgLy8gTm90ZSB0aGF0IHRoZSBKU0V2ZW50TGlzdGVuZXIgY29u
c3RydWN0b3IgYWRkcyBpdCB0byBvdXIganNFdmVudExpc3RlbmVycyBsaXN0CiAgIHJldHVybiBu
ZXcgSlNFdmVudExpc3RlbmVyKG9iamVjdCwgdGhpcywgaHRtbCk7CiB9CkBAIC0xMzE5LDkgKzEz
MjcsMTAgQEAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIgKldpbmRvdzo6Z2V0SgogICBKU09i
amVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QgKj4odmFsKTsKIAogICBVbnByb3Rl
Y3RlZExpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0gaHRtbCA/IGpzVW5wcm90ZWN0ZWRIVE1MRXZl
bnRMaXN0ZW5lcnMgOiBqc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnM7CisKICAgaWYgKEpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGxpc3RlbmVycy5nZXQob2JqZWN0KSkK
ICAgICByZXR1cm4gbGlzdGVuZXI7Ci0KKwkKICAgLy8gVGhlIEpTVW5wcm90ZWN0ZWRFdmVudExp
c3RlbmVyIGNvbnN0cnVjdG9yIGFkZHMgaXQgdG8gb3VyIGpzVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVycyBtYXAuCiAgIHJldHVybiBuZXcgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIob2JqZWN0
LCB0aGlzLCBodG1sKTsKIH0KQEAgLTE3OTEsMTMgKzE4MDAsMTYgQEAgSlNWYWx1ZSAqV2luZG93
RnVuYzo6Y2FsbEFzRnVuY3Rpb24oRXhlYwogICAgICAgICAgICAgaWYgKERvY3VtZW50ICpkb2Mg
PSBmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBkb2MtPmFkZFdpbmRvd0V2ZW50
TGlzdGVuZXIoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSwgbGlzdGVuZXIs
IGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICBjYXNlIFdpbmRvdzo6UmVtb3ZlRXZlbnRMaXN0ZW5lcjoKKyAgY2FzZSBXaW5kb3c6OlJl
bW92ZUV2ZW50TGlzdGVuZXI6IHsKICAgICAgICAgaWYgKCF3aW5kb3ctPmlzU2FmZVNjcmlwdChl
eGVjKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICBpZiAoSlNF
dmVudExpc3RlbmVyICpsaXN0ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmdl
dEpTRXZlbnRMaXN0ZW5lcihhcmdzWzFdKSkKKyAgICAgICAgSlNFdmVudExpc3RlbmVyICpsaXN0
ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRKU0V2ZW50TGlzdGVuZXIo
YXJnc1sxXSk7CisgICAgICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICAgICAgaWYgKERvY3Vt
ZW50ICpkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBkb2MtPnJlbW92
ZVdpbmRvd0V2ZW50TGlzdGVuZXIoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMp
KSwgbGlzdGVuZXIsIGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgIH0KICAgY2FzZSBXaW5kb3c6OlNob3dNb2RhbERp
YWxvZzogewogICAgIEpTVmFsdWUqIHJlc3VsdCA9IHNob3dNb2RhbERpYWxvZyhleGVjLCB3aW5k
b3csIGFyZ3MpOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L2tqc193aW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5k
b3cuaAkocmV2aXNpb24gMTk3ODgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cu
aAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDggKzEzNSwyMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBCYXJJbmZvICpzY3JvbGxiYXJzKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEJhckluZm8gKnN0
YXR1c2JhcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICBCYXJJbmZvICp0b29sYmFyKEV4ZWNTdGF0
ZSopIGNvbnN0OworCisgICAgLy8gUmV0dXJucyBhIHdyYXBwZXIgb2YgYSBKUyBFdmVudExpc3Rl
bmVyIGlmIHRoZXJlIGlzIGFuIGV4aXN0aW5nIG9uZS4KKyAgICAvLyBSZXR1cm5zIDAgaWYgbm8g
ZXhpc3Rpbmcgd3JhcHBlciBvciB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG5vdCBhIAorICAgIC8v
IEpTIE9iamVjdC4KKyAgICBKU0V2ZW50TGlzdGVuZXIgKmZpbmRKU0V2ZW50TGlzdGVuZXIoSlNW
YWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKKworICAgIC8vIFJldHVybnMgYSB3cmFwcGVyIG9m
IGEgSlMgRXZlbnRMaXN0ZW5lci4gQ3JlYXRlcyBhIG5ldyBvbmUgaWYgdGhlcmUKKyAgICAvLyBp
cyBubyBleGlzdGluZyBvbmUuIFJldHVybnMgMCBpZiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG5v
dCBhIEpTIE9iamVjdC4KKyAgICAvLyBOb3RlIHRoYXQgaWYgdGhlIHJldHVybmVkIHdyYXBwZXIg
aXMgbmV3bHkgY3JlYXRlZCwgSlMgRXZlbnRMaXN0ZW5lcgorICAgIC8vIG9iamVjdCBpcyBHQy1w
cm90ZWN0ZWQgdW50aWwgdGhlIHdyYXBwZXIgaXMgZGVsZXRlZC4KKyAgICAvLyBJZiB0aGUgY2Fs
bGVyIG9ubHkgbmVlZHMgdG8gY2hlY2sgd2hldGhlciBhIHdyYXBwZXIgZXhpc3RzIGZvcgorICAg
IC8vIGEgSlMgRXZlbnRMaXN0ZW5lciBvYmplY3QsIHVzZSBmaW5kSlNFdmVudExpc3RlbmVyIGlu
c3RlYWQuCiAgICAgSlNFdmVudExpc3RlbmVyICpnZXRKU0V2ZW50TGlzdGVuZXIoSlNWYWx1ZSos
IGJvb2wgaHRtbCA9IGZhbHNlKTsKICAgICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciAqZ2V0
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoSlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsK
KwkKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNT
dGF0ZSAqKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13327</attachid>
            <date>2007-02-22 14:06:12 -0800</date>
            <delta_ts>2007-02-22 14:44:03 -0800</delta_ts>
            <desc>revised patch again</desc>
            <filename>bug12850.patch</filename>
            <type>text/plain</type>
            <size>9273</size>
            <attacher name="Feng Qian">ian.eng.webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDctMDItMjIgIElhbiBFbmcgPGlhbi5lbmcud2Via2l0QGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCisKKyAgICAgICAgLSBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg1MAorICAgICAgICBQcm9ibGVtOiBS
ZW1vdmVFdmVudExpc3RlbmVyIGxlYWtzIG1lbW9yeSBpZiB0aGUgbGlzdGVuZXIgaXMgbm90Cisg
ICAgICAgIHJlZ2lzdGVyZWQuCisgICAgICAgIEZpeDogQWRkZWQgV2luZG93OjpmaW5kSlNFdmVu
dExpc3RlbmVyIGZ1bmN0aW9uIHcvbyBjcmVhdGluZyBhIAorICAgICAgICBKU0V2ZW50TGlzdGVu
ZXIuCisgICAgICAgIEFkZGVkIFdpbmRvdzo6ZmluZEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
LgorICAgICAgICAtIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODUz
CisJQXMgYW4gZW5oYW5jZW1lbnQsIGFkZGVkIGEgbGVhayBjb3VudGVyIGZvciBFdmVudExpc3Rl
bmVycy4KKwkKKwkqIGJpbmRpbmdzL2pzL2tqc19kb20uY3BwOgorCSogYmluZGluZ3MvanMva2pz
X3dpbmRvdy5oOiAgICAgICAgCisJKiBiaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcDoKKwkqIGJp
bmRpbmdzL2pzL2tqc19ldmVudC5jcHA6IEFkZCBhIGxlYWsgY291bnRlci4KKwkqIGJpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3QuY3BwOgorCiAyMDA3LTAyLTIxICBLcnp5c3p0b2YgS293YWxj
enlrICA8a2tvd2FsY3p5a0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBS
b2Jlbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2
aXNpb24gMTk3ODgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsNyArMjc4LDcgQEAgSlNWYWx1ZSogSlNYTUxIdHRwUmVx
dWVzdFByb3RvdHlwZUZ1bmN0aQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpSZW1vdmVFdmVudExpc3Rl
bmVyOiB7Ci0gICAgICAgICAgICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcihhcmdzWzFdLCB0cnVlKTsKKyAgICAgICAgICAgIEpTVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyKiBsaXN0ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRKU1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lcihhcmdzWzFdLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChsaXN0
ZW5lcikKICAgICAgICAgICAgICAgICByZXF1ZXN0LT5tX2ltcGwtPnJlbW92ZUV2ZW50TGlzdGVu
ZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLCBhcmdzWzJdLT50b0Jvb2xlYW4o
ZXhlYykpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19kb20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMva2pzX2RvbS5jcHAJKHJldmlzaW9uIDE5Nzg4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfZG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY3LDkgKzY2NywxMCBAQCBKU1ZhbHVlKiBE
T01FdmVudFRhcmdldE5vZGVQcm90b3R5cGVGdW5jCiAgICAgICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIERPTUV2ZW50VGFyZ2V0Tm9kZTo6UmVt
b3ZlRXZlbnRMaXN0ZW5lcjogewotICAgICAgICAgICAgSlNFdmVudExpc3RlbmVyICpsaXN0ZW5l
ciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmdldEpTRXZlbnRMaXN0ZW5lcihhcmdz
WzFdKTsKLSAgICAgICAgICAgIGlmIChsaXN0ZW5lcikKKyAgICAgICAgICAgIEpTRXZlbnRMaXN0
ZW5lciAqbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5maW5kSlNFdmVu
dExpc3RlbmVyKGFyZ3NbMV0pOworICAgICAgICAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAgICAg
ICAgICAgICAgbm9kZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzWzBdLT50b1N0cmluZyhleGVj
KSwgbGlzdGVuZXIsYXJnc1syXS0+dG9Cb29sZWFuKGV4ZWMpKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RE9NRXZlbnRUYXJnZXROb2RlOjpEaXNwYXRjaEV2ZW50OgpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9ranNfZXZlbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tq
c19ldmVudHMuY3BwCShyZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pz
X2V2ZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw2ICsyMDEsMjQgQEAgdm9pZCBKU1Vu
cHJvdGVjdGVkRXZlbnRMaXN0ZW5lcjo6bWFyaygpCiAgICAgICAgIGxpc3RlbmVyLT5tYXJrKCk7
CiB9CiAKKyNpZm5kZWYgTkRFQlVHCisjaWZuZGVmIExPR19DSEFOTkVMX1BSRUZJWAorI2RlZmlu
ZSBMT0dfQ0hBTk5FTF9QUkVGSVggTG9nCisjZW5kaWYKK1dURkxvZ0NoYW5uZWwgTG9nV2ViQ29y
ZUV2ZW50TGlzdGVuZXJMZWFrcyA9IHsgMHgwMDAwMDAwMCwgIiIsIFdURkxvZ0NoYW5uZWxPbiB9
OworCitzdHJ1Y3QgRXZlbnRMaXN0ZW5lckNvdW50ZXIgeworICAgIHN0YXRpYyB1bnNpZ25lZCBj
b3VudDsKKyAgICB+RXZlbnRMaXN0ZW5lckNvdW50ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKGNv
dW50KQorICAgICAgICAgICAgTE9HKFdlYkNvcmVFdmVudExpc3RlbmVyTGVha3MsICJMRUFLOiAl
dSBFdmVudExpc3RlbmVyc1xuIiwgY291bnQpOworICAgIH0KK307Cit1bnNpZ25lZCBFdmVudExp
c3RlbmVyQ291bnRlcjo6Y291bnQgPSAwOworc3RhdGljIEV2ZW50TGlzdGVuZXJDb3VudGVyIGV2
ZW50TGlzdGVuZXJDb3VudGVyOworI2VuZGlmCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSlNF
dmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIoSlNPYmplY3QqIF9saXN0ZW5lciwgV2luZG93
KiBfd2luLCBib29sIF9odG1sKQpAQCAtMjEzLDYgKzIzMSw5IEBAIEpTRXZlbnRMaXN0ZW5lcjo6
SlNFdmVudExpc3RlbmVyKEpTT2JqZWMKICAgICAgICAgICAgID8gX3dpbi0+anNIVE1MRXZlbnRM
aXN0ZW5lcnMgOiBfd2luLT5qc0V2ZW50TGlzdGVuZXJzOwogICAgICAgICBsaXN0ZW5lcnMuc2V0
KF9saXN0ZW5lciwgdGhpcyk7CiAgICAgfQorI2lmbmRlZiBOREVCVUcKKyAgICArK2V2ZW50TGlz
dGVuZXJDb3VudGVyLmNvdW50OworI2VuZGlmCiB9CiAKIEpTRXZlbnRMaXN0ZW5lcjo6fkpTRXZl
bnRMaXN0ZW5lcigpCkBAIC0yMjIsNiArMjQzLDkgQEAgSlNFdmVudExpc3RlbmVyOjp+SlNFdmVu
dExpc3RlbmVyKCkKICAgICAgICAgICAgID8gd2luLT5qc0hUTUxFdmVudExpc3RlbmVycyA6IHdp
bi0+anNFdmVudExpc3RlbmVyczsKICAgICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7
CiAgICAgfQorI2lmbmRlZiBOREVCVUcKKyAgICAtLWV2ZW50TGlzdGVuZXJDb3VudGVyLmNvdW50
OworI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6Omxpc3RlbmVyT2JqKCkg
Y29uc3QKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAkocmV2aXNpb24gMTk3ODgp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjk4LDMwICsxMjk4LDQ3IEBAIEpTVmFsdWUgKldpbmRvdzo6Z2V0TGlzdGVuZXIoRXhlY1N0
YXRlICoKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CiAKK0pTRXZlbnRMaXN0ZW5lciAqV2luZG93
OjpmaW5kSlNFdmVudExpc3RlbmVyKEpTVmFsdWUqIHZhbCwgYm9vbCBodG1sKSB7CisgIGlmICgh
dmFsLT5pc09iamVjdCgpKQorICAgICByZXR1cm4gMDsKKyAgSlNPYmplY3QgKm9iamVjdCA9IHN0
YXRpY19jYXN0PEpTT2JqZWN0ICo+KHZhbCk7CisgIExpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0g
aHRtbCA/IGpzSFRNTEV2ZW50TGlzdGVuZXJzIDoganNFdmVudExpc3RlbmVyczsKKyAgcmV0dXJu
IGxpc3RlbmVycy5nZXQob2JqZWN0KTsKK30KKwogSlNFdmVudExpc3RlbmVyICpXaW5kb3c6Omdl
dEpTRXZlbnRMaXN0ZW5lcihKU1ZhbHVlICp2YWwsIGJvb2wgaHRtbCkKIHsKKyAgSlNFdmVudExp
c3RlbmVyKiBsaXN0ZW5lciA9IGZpbmRKU0V2ZW50TGlzdGVuZXIodmFsLCBodG1sKTsKKyAgaWYg
KGxpc3RlbmVyKQorICAgIHJldHVybiBsaXN0ZW5lcjsKKwogICBpZiAoIXZhbC0+aXNPYmplY3Qo
KSkKICAgICByZXR1cm4gMDsKICAgSlNPYmplY3QgKm9iamVjdCA9IHN0YXRpY19jYXN0PEpTT2Jq
ZWN0ICo+KHZhbCk7CiAKLSAgTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMgPSBodG1sID8ganNIVE1M
RXZlbnRMaXN0ZW5lcnMgOiBqc0V2ZW50TGlzdGVuZXJzOwotICBpZiAoSlNFdmVudExpc3RlbmVy
KiBsaXN0ZW5lciA9IGxpc3RlbmVycy5nZXQob2JqZWN0KSkKLSAgICByZXR1cm4gbGlzdGVuZXI7
Ci0KICAgLy8gTm90ZSB0aGF0IHRoZSBKU0V2ZW50TGlzdGVuZXIgY29uc3RydWN0b3IgYWRkcyBp
dCB0byBvdXIganNFdmVudExpc3RlbmVycyBsaXN0CiAgIHJldHVybiBuZXcgSlNFdmVudExpc3Rl
bmVyKG9iamVjdCwgdGhpcywgaHRtbCk7CiB9CiAKLUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
ICpXaW5kb3c6OmdldEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKEpTVmFsdWUgKnZhbCwgYm9v
bCBodG1sKQorSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIgKldpbmRvdzo6ZmluZEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKEpTVmFsdWUgKnZhbCwgYm9vbCBodG1sKQogewogICBpZiAoIXZh
bC0+aXNPYmplY3QoKSkKICAgICByZXR1cm4gMDsKICAgSlNPYmplY3QqIG9iamVjdCA9IHN0YXRp
Y19jYXN0PEpTT2JqZWN0ICo+KHZhbCk7Ci0KICAgVW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXAmIGxp
c3RlbmVycyA9IGh0bWwgPyBqc1VucHJvdGVjdGVkSFRNTEV2ZW50TGlzdGVuZXJzIDoganNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXJzOwotICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyID0gbGlzdGVuZXJzLmdldChvYmplY3QpKQorICByZXR1cm4gbGlzdGVuZXJzLmdl
dChvYmplY3QpOworfQorCitKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciAqV2luZG93OjpnZXRK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihKU1ZhbHVlICp2YWwsIGJvb2wgaHRtbCkKK3sKKyAg
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gZmluZEpTVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyKHZhbCwgaHRtbCk7CisgIGlmIChsaXN0ZW5lcikKICAgICByZXR1cm4gbGlz
dGVuZXI7CiAKKyAgaWYgKCF2YWwtPmlzT2JqZWN0KCkpCisgICAgcmV0dXJuIDA7CisgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVjdCAqPih2YWwpOworCiAgIC8vIFRoZSBK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciBjb25zdHJ1Y3RvciBhZGRzIGl0IHRvIG91ciBqc1Vu
cHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnMgbWFwLgogICByZXR1cm4gbmV3IEpTVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyKG9iamVjdCwgdGhpcywgaHRtbCk7CiB9CkBAIC0xNzkxLDEzICsxODA4LDE2
IEBAIEpTVmFsdWUgKldpbmRvd0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKEV4ZWMKICAgICAgICAgICAg
IGlmIChEb2N1bWVudCAqZG9jID0gZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAg
ZG9jLT5hZGRXaW5kb3dFdmVudExpc3RlbmVyKEF0b21pY1N0cmluZyhhcmdzWzBdLT50b1N0cmlu
ZyhleGVjKSksIGxpc3RlbmVyLCBhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYykpOwogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgY2FzZSBXaW5kb3c6OlJlbW92ZUV2ZW50TGlzdGVuZXI6
CisgIGNhc2UgV2luZG93OjpSZW1vdmVFdmVudExpc3RlbmVyOiB7CiAgICAgICAgIGlmICghd2lu
ZG93LT5pc1NhZmVTY3JpcHQoZXhlYykpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLSAgICAgICAgaWYgKEpTRXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJp
ZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU0V2ZW50TGlzdGVuZXIoYXJnc1sxXSkpCisgICAgICAgIEpT
RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5m
aW5kSlNFdmVudExpc3RlbmVyKGFyZ3NbMV0pOworICAgICAgICBpZiAobGlzdGVuZXIpIHsKICAg
ICAgICAgICAgIGlmIChEb2N1bWVudCAqZG9jID0gZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAg
ICAgICAgICAgZG9jLT5yZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKEF0b21pY1N0cmluZyhhcmdz
WzBdLT50b1N0cmluZyhleGVjKSksIGxpc3RlbmVyLCBhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYykp
OworICAgICAgICB9CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICB9CiAgIGNhc2Ug
V2luZG93OjpTaG93TW9kYWxEaWFsb2c6IHsKICAgICBKU1ZhbHVlKiByZXN1bHQgPSBzaG93TW9k
YWxEaWFsb2coZXhlYywgd2luZG93LCBhcmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9ranNfd2luZG93LmgJKHJldmlzaW9uIDE5Nzg4KQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9ranNfd2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw4ICsxMzUsMzIgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgICAgQmFySW5mbyAqc2Nyb2xsYmFycyhFeGVjU3RhdGUqKSBjb25z
dDsKICAgICBCYXJJbmZvICpzdGF0dXNiYXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgQmFySW5m
byAqdG9vbGJhcihFeGVjU3RhdGUqKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgYSB3cmFwcGVy
IG9mIGEgSlMgRXZlbnRMaXN0ZW5lciBpZiB0aGVyZSBpcyBhbiBleGlzdGluZyBvbmUuCisgICAg
Ly8gUmV0dXJucyAwIGlmIG5vIGV4aXN0aW5nIHdyYXBwZXIgb3IgdGhlIGZpcnN0IHBhcmFtZXRl
ciBpcyBub3QgYSAKKyAgICAvLyBKUyBPYmplY3QuCisgICAgSlNFdmVudExpc3RlbmVyICpmaW5k
SlNFdmVudExpc3RlbmVyKEpTVmFsdWUqLCBib29sIGh0bWwgPSBmYWxzZSk7CisKKyAgICAvLyBS
ZXR1cm5zIGEgd3JhcHBlciBvZiBhIEpTIEV2ZW50TGlzdGVuZXIuIENyZWF0ZXMgYSBuZXcgb25l
IGlmIHRoZXJlCisgICAgLy8gaXMgbm8gZXhpc3Rpbmcgb25lLiBSZXR1cm5zIDAgaWYgdGhlIGZp
cnN0IHBhcmFtZXRlciBpcyBub3QgYSBKUyBPYmplY3QuCisgICAgLy8gTm90ZSB0aGF0IGlmIHRo
ZSByZXR1cm5lZCB3cmFwcGVyIGlzIG5ld2x5IGNyZWF0ZWQsIEpTIEV2ZW50TGlzdGVuZXIKKyAg
ICAvLyBvYmplY3QgaXMgR0MtcHJvdGVjdGVkIHVudGlsIHRoZSB3cmFwcGVyIGlzIGRlbGV0ZWQu
CisgICAgLy8gSWYgdGhlIGNhbGxlciBvbmx5IG5lZWRzIHRvIGNoZWNrIHdoZXRoZXIgYSB3cmFw
cGVyIGV4aXN0cyBmb3IKKyAgICAvLyBhIEpTIEV2ZW50TGlzdGVuZXIgb2JqZWN0LCB1c2UgZmlu
ZEpTRXZlbnRMaXN0ZW5lciBpbnN0ZWFkLgogICAgIEpTRXZlbnRMaXN0ZW5lciAqZ2V0SlNFdmVu
dExpc3RlbmVyKEpTVmFsdWUqLCBib29sIGh0bWwgPSBmYWxzZSk7CisKKyAgICAvLyBSZXR1cm5z
IGEgd3JhcHBlciBvZiBhIEpTIEV2ZW50TGlzdGVuZXIgaWYgdGhlcmUgaXMgYW4gZXhpdGluZyBv
bmUuCisgICAgLy8gUmV0dXJucyAwIGlmIG5vIGV4aXN0aW5nIHdyYXBwZXIgb3IgdGhlIGZpcnN0
IHBhcmFtZXRlciBpcyBub3QgYSAKKyAgICAvLyBKUyBPYmplY3QuCisgICAgSlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIgKmZpbmRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihKU1ZhbHVlKiwg
Ym9vbCBodG1sID0gZmFsc2UpOworICAgIC8vIFJldHVybnMgYSB3cmFwcGVyIG9mIGEgSlMgRXZl
bnRMaXN0ZW5lci4gQ3JlYXRlcyBhIG5ldyBvbmUgaWYgdGhlcmUKKyAgICAvLyBpcyBubyBleGlz
dGluZyBvbmUuIFJldHVybnMgMCBpZiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG5vdCBhIEpTIE9i
amVjdC4KKyAgICAvLyBOb3RlIHRoYXQgaWYgdGhlIHJldHVybmVkIHdyYXBwZXIgaXMgbmV3bHkg
Y3JlYXRlZCwgSlMgRXZlbnRMaXN0ZW5lcgorICAgIC8vIG9iamVjdCBpcyAqTk9UKiBHQy1wcm90
ZWN0ZWQuCisgICAgLy8gSWYgdGhlIGNhbGxlciBvbmx5IG5lZWRzIHRvIGNoZWNrIHdoZXRoZXIg
YSB3cmFwcGVyIGV4aXN0cyBmb3IKKyAgICAvLyBhIEpTIEV2ZW50TGlzdGVuZXIgb2JqZWN0LCB1
c2UgZmluZEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyIGluc3RlYWQuCiAgICAgSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIgKmdldEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKEpTVmFsdWUq
LCBib29sIGh0bWwgPSBmYWxzZSk7CisJCiAgICAgdm9pZCBjbGVhcigpOwogICAgIHZpcnR1YWwg
VVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUgKikgY29uc3Q7CiAK
</data>
<flag name="review"
          id="5223"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13328</attachid>
            <date>2007-02-22 14:44:03 -0800</date>
            <delta_ts>2007-02-22 19:08:51 -0800</delta_ts>
            <desc>revised patch again again</desc>
            <filename>bug12850.patch</filename>
            <type>text/plain</type>
            <size>8923</size>
            <attacher name="Feng Qian">ian.eng.webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDctMDItMjIgIElhbiBFbmcgPGlhbi5lbmcud2Via2l0QGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCisKKyAgICAgICAgLSBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg1MAorICAgICAgICBQcm9ibGVtOiBS
ZW1vdmVFdmVudExpc3RlbmVyIGxlYWtzIG1lbW9yeSBpZiB0aGUgbGlzdGVuZXIgaXMgbm90Cisg
ICAgICAgIHJlZ2lzdGVyZWQuCisgICAgICAgIEZpeDogQWRkZWQgV2luZG93OjpmaW5kSlNFdmVu
dExpc3RlbmVyIGZ1bmN0aW9uIHcvbyBjcmVhdGluZyBhIAorICAgICAgICBKU0V2ZW50TGlzdGVu
ZXIuCisgICAgICAgIEFkZGVkIFdpbmRvdzo6ZmluZEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
LgorICAgICAgICAtIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODUz
CisJQXMgYW4gZW5oYW5jZW1lbnQsIGFkZGVkIGEgbGVhayBjb3VudGVyIGZvciBFdmVudExpc3Rl
bmVycy4KKwkKKwkqIGJpbmRpbmdzL2pzL2tqc19kb20uY3BwOgorCSogYmluZGluZ3MvanMva2pz
X3dpbmRvdy5oOiAgICAgICAgCisJKiBiaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcDoKKwkqIGJp
bmRpbmdzL2pzL2tqc19ldmVudC5jcHA6IEFkZCBhIGxlYWsgY291bnRlci4KKwkqIGJpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3QuY3BwOgorCiAyMDA3LTAyLTIxICBLcnp5c3p0b2YgS293YWxj
enlrICA8a2tvd2FsY3p5a0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBS
b2Jlbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2
aXNpb24gMTk3ODgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsNyArMjc4LDcgQEAgSlNWYWx1ZSogSlNYTUxIdHRwUmVx
dWVzdFByb3RvdHlwZUZ1bmN0aQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpSZW1vdmVFdmVudExpc3Rl
bmVyOiB7Ci0gICAgICAgICAgICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcihhcmdzWzFdLCB0cnVlKTsKKyAgICAgICAgICAgIEpTVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyKiBsaXN0ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRKU1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lcihhcmdzWzFdLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChsaXN0
ZW5lcikKICAgICAgICAgICAgICAgICByZXF1ZXN0LT5tX2ltcGwtPnJlbW92ZUV2ZW50TGlzdGVu
ZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLCBhcmdzWzJdLT50b0Jvb2xlYW4o
ZXhlYykpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19kb20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMva2pzX2RvbS5jcHAJKHJldmlzaW9uIDE5Nzg4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfZG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY3LDggKzY2Nyw4IEBAIEpTVmFsdWUqIERP
TUV2ZW50VGFyZ2V0Tm9kZVByb3RvdHlwZUZ1bmMKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRE9NRXZlbnRUYXJnZXROb2RlOjpSZW1v
dmVFdmVudExpc3RlbmVyOiB7Ci0gICAgICAgICAgICBKU0V2ZW50TGlzdGVuZXIgKmxpc3RlbmVy
ID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+Z2V0SlNFdmVudExpc3RlbmVyKGFyZ3Nb
MV0pOwotICAgICAgICAgICAgaWYgKGxpc3RlbmVyKQorICAgICAgICAgICAgSlNFdmVudExpc3Rl
bmVyICpsaXN0ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRKU0V2ZW50
TGlzdGVuZXIoYXJnc1sxXSk7CisgICAgICAgICAgICBpZiAobGlzdGVuZXIpIAogICAgICAgICAg
ICAgICAgIG5vZGUtPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyks
IGxpc3RlbmVyLGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
ZXZlbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMu
Y3BwCShyZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2V2ZW50cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw2ICsyMDEsMjQgQEAgdm9pZCBKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lcjo6bWFyaygpCiAgICAgICAgIGxpc3RlbmVyLT5tYXJrKCk7CiB9CiAKKyNp
Zm5kZWYgTkRFQlVHCisjaWZuZGVmIExPR19DSEFOTkVMX1BSRUZJWAorI2RlZmluZSBMT0dfQ0hB
Tk5FTF9QUkVGSVggTG9nCisjZW5kaWYKK1dURkxvZ0NoYW5uZWwgTG9nV2ViQ29yZUV2ZW50TGlz
dGVuZXJMZWFrcyA9IHsgMHgwMDAwMDAwMCwgIiIsIFdURkxvZ0NoYW5uZWxPbiB9OworCitzdHJ1
Y3QgRXZlbnRMaXN0ZW5lckNvdW50ZXIgeworICAgIHN0YXRpYyB1bnNpZ25lZCBjb3VudDsKKyAg
ICB+RXZlbnRMaXN0ZW5lckNvdW50ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50KQorICAg
ICAgICAgICAgTE9HKFdlYkNvcmVFdmVudExpc3RlbmVyTGVha3MsICJMRUFLOiAldSBFdmVudExp
c3RlbmVyc1xuIiwgY291bnQpOworICAgIH0KK307Cit1bnNpZ25lZCBFdmVudExpc3RlbmVyQ291
bnRlcjo6Y291bnQgPSAwOworc3RhdGljIEV2ZW50TGlzdGVuZXJDb3VudGVyIGV2ZW50TGlzdGVu
ZXJDb3VudGVyOworI2VuZGlmCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSlNFdmVudExpc3Rl
bmVyOjpKU0V2ZW50TGlzdGVuZXIoSlNPYmplY3QqIF9saXN0ZW5lciwgV2luZG93KiBfd2luLCBi
b29sIF9odG1sKQpAQCAtMjEzLDYgKzIzMSw5IEBAIEpTRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExp
c3RlbmVyKEpTT2JqZWMKICAgICAgICAgICAgID8gX3dpbi0+anNIVE1MRXZlbnRMaXN0ZW5lcnMg
OiBfd2luLT5qc0V2ZW50TGlzdGVuZXJzOwogICAgICAgICBsaXN0ZW5lcnMuc2V0KF9saXN0ZW5l
ciwgdGhpcyk7CiAgICAgfQorI2lmbmRlZiBOREVCVUcKKyAgICArK2V2ZW50TGlzdGVuZXJDb3Vu
dGVyLmNvdW50OworI2VuZGlmCiB9CiAKIEpTRXZlbnRMaXN0ZW5lcjo6fkpTRXZlbnRMaXN0ZW5l
cigpCkBAIC0yMjIsNiArMjQzLDkgQEAgSlNFdmVudExpc3RlbmVyOjp+SlNFdmVudExpc3RlbmVy
KCkKICAgICAgICAgICAgID8gd2luLT5qc0hUTUxFdmVudExpc3RlbmVycyA6IHdpbi0+anNFdmVu
dExpc3RlbmVyczsKICAgICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7CiAgICAgfQor
I2lmbmRlZiBOREVCVUcKKyAgICAtLWV2ZW50TGlzdGVuZXJDb3VudGVyLmNvdW50OworI2VuZGlm
CiB9CiAKIEpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6Omxpc3RlbmVyT2JqKCkgY29uc3QKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAkocmV2aXNpb24gMTk3ODgpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjk4LDI5
ICsxMjk4LDQ3IEBAIEpTVmFsdWUgKldpbmRvdzo6Z2V0TGlzdGVuZXIoRXhlY1N0YXRlICoKICAg
ICByZXR1cm4ganNOdWxsKCk7CiB9CiAKK0pTRXZlbnRMaXN0ZW5lciogV2luZG93OjpmaW5kSlNF
dmVudExpc3RlbmVyKEpTVmFsdWUqIHZhbCwgYm9vbCBodG1sKQoreworICAgIGlmICghdmFsLT5p
c09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNPYmplY3QqPih2YWwpOworICAgIExpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0g
aHRtbCA/IGpzSFRNTEV2ZW50TGlzdGVuZXJzIDoganNFdmVudExpc3RlbmVyczsKKyAgICByZXR1
cm4gbGlzdGVuZXJzLmdldChvYmplY3QpOworfQorCiBKU0V2ZW50TGlzdGVuZXIgKldpbmRvdzo6
Z2V0SlNFdmVudExpc3RlbmVyKEpTVmFsdWUgKnZhbCwgYm9vbCBodG1sKQogeworICBKU0V2ZW50
TGlzdGVuZXIgKmxpc3RlbmVyID0gZmluZEpTRXZlbnRMaXN0ZW5lcih2YWwsIGh0bWwpOworICBp
ZiAobGlzdGVuZXIpCisgICAgcmV0dXJuIGxpc3RlbmVyOworCiAgIGlmICghdmFsLT5pc09iamVj
dCgpKQogICAgIHJldHVybiAwOwogICBKU09iamVjdCAqb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNP
YmplY3QgKj4odmFsKTsKIAotICBMaXN0ZW5lcnNNYXAmIGxpc3RlbmVycyA9IGh0bWwgPyBqc0hU
TUxFdmVudExpc3RlbmVycyA6IGpzRXZlbnRMaXN0ZW5lcnM7Ci0gIGlmIChKU0V2ZW50TGlzdGVu
ZXIqIGxpc3RlbmVyID0gbGlzdGVuZXJzLmdldChvYmplY3QpKQotICAgIHJldHVybiBsaXN0ZW5l
cjsKLQogICAvLyBOb3RlIHRoYXQgdGhlIEpTRXZlbnRMaXN0ZW5lciBjb25zdHJ1Y3RvciBhZGRz
IGl0IHRvIG91ciBqc0V2ZW50TGlzdGVuZXJzIGxpc3QKICAgcmV0dXJuIG5ldyBKU0V2ZW50TGlz
dGVuZXIob2JqZWN0LCB0aGlzLCBodG1sKTsKIH0KIAorSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVu
ZXIqIFdpbmRvdzo6ZmluZEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKEpTVmFsdWUqIHZhbCwg
Ym9vbCBodG1sKQoreworICAgIGlmICghdmFsLT5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2YWwpOwor
ICAgIFVucHJvdGVjdGVkTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMgPSBodG1sID8ganNVbnByb3Rl
Y3RlZEhUTUxFdmVudExpc3RlbmVycyA6IGpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyczsKKyAg
ICByZXR1cm4gbGlzdGVuZXJzLmdldChvYmplY3QpOworfQorCiBKU1VucHJvdGVjdGVkRXZlbnRM
aXN0ZW5lciAqV2luZG93OjpnZXRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihKU1ZhbHVlICp2
YWwsIGJvb2wgaHRtbCkKIHsKKyAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIgKmxpc3RlbmVy
ID0gZmluZEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKHZhbCwgaHRtbCk7CisgIGlmIChsaXN0
ZW5lcikKKyAgICByZXR1cm4gbGlzdGVuZXI7CisKICAgaWYgKCF2YWwtPmlzT2JqZWN0KCkpCiAg
ICAgcmV0dXJuIDA7Ci0gIEpTT2JqZWN0KiBvYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVjdCAq
Pih2YWwpOwotCi0gIFVucHJvdGVjdGVkTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMgPSBodG1sID8g
anNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVycyA6IGpzVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyczsKLSAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGxpc3Rl
bmVycy5nZXQob2JqZWN0KSkKLSAgICByZXR1cm4gbGlzdGVuZXI7CisgIEpTT2JqZWN0ICpvYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU09iamVjdCAqPih2YWwpOwogCiAgIC8vIFRoZSBKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lciBjb25zdHJ1Y3RvciBhZGRzIGl0IHRvIG91ciBqc1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lcnMgbWFwLgogICByZXR1cm4gbmV3IEpTVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyKG9iamVjdCwgdGhpcywgaHRtbCk7CkBAIC0xNzk0LDcgKzE4MTIsNyBAQCBKU1ZhbHVlICpX
aW5kb3dGdW5jOjpjYWxsQXNGdW5jdGlvbihFeGVjCiAgIGNhc2UgV2luZG93OjpSZW1vdmVFdmVu
dExpc3RlbmVyOgogICAgICAgICBpZiAoIXdpbmRvdy0+aXNTYWZlU2NyaXB0KGV4ZWMpKQogICAg
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgIGlmIChKU0V2ZW50TGlzdGVu
ZXIgKmxpc3RlbmVyID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+Z2V0SlNFdmVudExp
c3RlbmVyKGFyZ3NbMV0pKQorICAgICAgICBpZiAoSlNFdmVudExpc3RlbmVyICpsaXN0ZW5lciA9
IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRKU0V2ZW50TGlzdGVuZXIoYXJnc1sx
XSkpCiAgICAgICAgICAgICBpZiAoRG9jdW1lbnQgKmRvYyA9IGZyYW1lLT5kb2N1bWVudCgpKQog
ICAgICAgICAgICAgICAgIGRvYy0+cmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcihBdG9taWNTdHJp
bmcoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpLCBsaXN0ZW5lciwgYXJnc1syXS0+dG9Cb29sZWFu
KGV4ZWMpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc193aW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L2tqc193aW5kb3cuaAkocmV2aXNpb24gMTk3ODgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tq
c193aW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDggKzEzNSwzMyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICBCYXJJbmZvICpzY3JvbGxiYXJzKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEJh
ckluZm8gKnN0YXR1c2JhcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICBCYXJJbmZvICp0b29sYmFy
KEV4ZWNTdGF0ZSopIGNvbnN0OworCisgICAgLy8gUmV0dXJucyBhIHdyYXBwZXIgb2YgYSBKUyBF
dmVudExpc3RlbmVyIGlmIHRoZXJlIGlzIGFuIGV4aXN0aW5nIG9uZS4KKyAgICAvLyBSZXR1cm5z
IDAgaWYgbm8gZXhpc3Rpbmcgd3JhcHBlciBvciB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG5vdCBh
IAorICAgIC8vIEpTIE9iamVjdC4KKyAgICBKU0V2ZW50TGlzdGVuZXIqIGZpbmRKU0V2ZW50TGlz
dGVuZXIoSlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKKworICAgIC8vIFJldHVybnMgYSB3
cmFwcGVyIG9mIGEgSlMgRXZlbnRMaXN0ZW5lci4gQ3JlYXRlcyBhIG5ldyBvbmUgaWYgdGhlcmUK
KyAgICAvLyBpcyBubyBleGlzdGluZyBvbmUuIFJldHVybnMgMCBpZiB0aGUgZmlyc3QgcGFyYW1l
dGVyIGlzIG5vdCBhIEpTIE9iamVjdC4KKyAgICAvLyBOb3RlIHRoYXQgaWYgdGhlIHJldHVybmVk
IHdyYXBwZXIgaXMgbmV3bHkgY3JlYXRlZCwgSlMgRXZlbnRMaXN0ZW5lcgorICAgIC8vIG9iamVj
dCBpcyBHQy1wcm90ZWN0ZWQgdW50aWwgdGhlIHdyYXBwZXIgaXMgZGVsZXRlZC4KKyAgICAvLyBJ
ZiB0aGUgY2FsbGVyIG9ubHkgbmVlZHMgdG8gY2hlY2sgd2hldGhlciBhIHdyYXBwZXIgZXhpc3Rz
IGZvcgorICAgIC8vIGEgSlMgRXZlbnRMaXN0ZW5lciBvYmplY3QsIHVzZSBmaW5kSlNFdmVudExp
c3RlbmVyIGluc3RlYWQuCiAgICAgSlNFdmVudExpc3RlbmVyICpnZXRKU0V2ZW50TGlzdGVuZXIo
SlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKKworICAgIC8vIFJldHVybnMgYSB3cmFwcGVy
IG9mIGEgSlMgRXZlbnRMaXN0ZW5lciBpZiB0aGVyZSBpcyBhbiBleGl0aW5nIG9uZS4KKyAgICAv
LyBSZXR1cm5zIDAgaWYgbm8gZXhpc3Rpbmcgd3JhcHBlciBvciB0aGUgZmlyc3QgcGFyYW1ldGVy
IGlzIG5vdCBhIAorICAgIC8vIEpTIE9iamVjdC4KKyAgICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lciogZmluZEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKEpTVmFsdWUqLCBib29sIGh0bWwg
PSBmYWxzZSk7CisKKyAgICAvLyBSZXR1cm5zIGEgd3JhcHBlciBvZiBhIEpTIEV2ZW50TGlzdGVu
ZXIuIENyZWF0ZXMgYSBuZXcgb25lIGlmIHRoZXJlCisgICAgLy8gaXMgbm8gZXhpc3Rpbmcgb25l
LiBSZXR1cm5zIDAgaWYgdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBub3QgYSBKUyBPYmplY3QuCisg
ICAgLy8gTm90ZSB0aGF0IGlmIHRoZSByZXR1cm5lZCB3cmFwcGVyIGlzIG5ld2x5IGNyZWF0ZWQs
IEpTIEV2ZW50TGlzdGVuZXIKKyAgICAvLyBvYmplY3QgaXMgKk5PVCogR0MtcHJvdGVjdGVkLgor
ICAgIC8vIElmIHRoZSBjYWxsZXIgb25seSBuZWVkcyB0byBjaGVjayB3aGV0aGVyIGEgd3JhcHBl
ciBleGlzdHMgZm9yCisgICAgLy8gYSBKUyBFdmVudExpc3RlbmVyIG9iamVjdCwgdXNlIGZpbmRK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciBpbnN0ZWFkLgogICAgIEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyICpnZXRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihKU1ZhbHVlKiwgYm9vbCBo
dG1sID0gZmFsc2UpOworCQogICAgIHZvaWQgY2xlYXIoKTsKICAgICB2aXJ0dWFsIFVTdHJpbmcg
dG9TdHJpbmcoRXhlY1N0YXRlICopIGNvbnN0OwogCg==
</data>
<flag name="review"
          id="5224"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13336</attachid>
            <date>2007-02-22 19:08:51 -0800</date>
            <delta_ts>2007-02-22 19:17:05 -0800</delta_ts>
            <desc>patch again again again</desc>
            <filename>bug12850.patch</filename>
            <type>text/plain</type>
            <size>12359</size>
            <attacher name="Feng Qian">ian.eng.webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDctMDItMjIgIElhbiBFbmcgPGlhbi5lbmcud2Via2l0QGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCisKKyAgICAgICAgLSBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg1MAorICAgICAgICBQcm9ibGVtOiBS
ZW1vdmVFdmVudExpc3RlbmVyIGxlYWtzIG1lbW9yeSBpZiB0aGUgbGlzdGVuZXIgaXMgbm90Cisg
ICAgICAgIHJlZ2lzdGVyZWQuCisgICAgICAgIEZpeDogQWRkZWQgV2luZG93OjpmaW5kSlNFdmVu
dExpc3RlbmVyIGZ1bmN0aW9uIHcvbyBjcmVhdGluZyBhIAorICAgICAgICBKU0V2ZW50TGlzdGVu
ZXI7IFJlbmFtZWQgZ2V0SlNFdmVudExpc3RlbmVyIHRvIGZpbmRPckNyZWF0ZUpTRXZlbnRMaXN0
ZW5lcjsKKyAgICAgICAgQWxzbyBhZGRlZCBhIHRlc3QgY2FzZSwgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcmVtb3ZlLWV2ZW50LWhhbmRsZXIuaHRtbC4KKyAgICAgICAgLSBodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg1MworCUFzIGFuIGVuaGFuY2VtZW50LCBhZGRl
ZCBhIGxlYWsgY291bnRlciBmb3IgRXZlbnRMaXN0ZW5lcnMuCisJCisJKiBXZWJDb3JlL2JpbmRp
bmdzL2pzL2tqc19kb20uY3BwOgorCSogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93Lmg6
ICAgICAgICAKKwkqIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHA6CisJKiBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudC5jcHA6IEFkZCBhIGxlYWsgY291bnRlci4KKwkqIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHA6CisJKiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuaHRtbDoKKwogMjAwNy0wMi0yMSAgS3J6
eXN6dG9mIEtvd2FsY3p5ayAgPGtrb3dhbGN6eWtAZ21haWwuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVx
dWVzdC5jcHAJKHJldmlzaW9uIDE5Nzg4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBK
U1hNTEh0dHBSZXF1ZXN0OjpwdXRWYWx1ZVByb3BlcnR5KAogewogICAgIHN3aXRjaCAodG9rZW4p
IHsKICAgICAgICAgY2FzZSBPbnJlYWR5c3RhdGVjaGFuZ2U6Ci0gICAgICAgICAgICBtX2ltcGwt
PnNldE9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhl
YyktPmdldEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKHZhbHVlLCB0cnVlKSk7CisgICAgICAg
ICAgICBtX2ltcGwtPnNldE9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKFdpbmRvdzo6cmV0cmll
dmVBY3RpdmUoZXhlYyktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKHZh
bHVlLCB0cnVlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBPbmxvYWQ6Ci0g
ICAgICAgICAgICBtX2ltcGwtPnNldE9uTG9hZExpc3RlbmVyKFdpbmRvdzo6cmV0cmlldmVBY3Rp
dmUoZXhlYyktPmdldEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKHZhbHVlLCB0cnVlKSk7Cisg
ICAgICAgICAgICBtX2ltcGwtPnNldE9uTG9hZExpc3RlbmVyKFdpbmRvdzo6cmV0cmlldmVBY3Rp
dmUoZXhlYyktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKHZhbHVlLCB0
cnVlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0yNzIsMTMgKzI3MiwxMyBA
QCBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0UHJvdG90eXBlRnVuY3RpCiAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgCiAgICAgICAgIGNhc2UgSlNYTUxIdHRwUmVx
dWVzdDo6QWRkRXZlbnRMaXN0ZW5lcjogewotICAgICAgICAgICAgSlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIqIGxpc3RlbmVyID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+Z2V0SlNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgdHJ1ZSk7CisgICAgICAgICAgICBKU1Vu
cHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZl
KGV4ZWMpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihhcmdzWzFdLCB0
cnVlKTsKICAgICAgICAgICAgIGlmIChsaXN0ZW5lcikKICAgICAgICAgICAgICAgICByZXF1ZXN0
LT5tX2ltcGwtPmFkZEV2ZW50TGlzdGVuZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGxpc3Rl
bmVyLCBhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYykpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpSZW1v
dmVFdmVudExpc3RlbmVyOiB7Ci0gICAgICAgICAgICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lcihhcmdzWzFdLCB0cnVlKTsKKyAgICAgICAgICAgIEpTVW5wcm90ZWN0
ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYykt
PmZpbmRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihhcmdzWzFdLCB0cnVlKTsKICAgICAgICAg
ICAgIGlmIChsaXN0ZW5lcikKICAgICAgICAgICAgICAgICByZXF1ZXN0LT5tX2ltcGwtPnJlbW92
ZUV2ZW50TGlzdGVuZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLCBhcmdzWzJd
LT50b0Jvb2xlYW4oZXhlYykpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19kb20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMva2pzX2RvbS5jcHAJKHJldmlzaW9uIDE5Nzg4KQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9ranNfZG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIzLDcgKzYyMyw3IEBA
IHZvaWQgRE9NRXZlbnRUYXJnZXROb2RlOjpwdXRWYWx1ZVByb3BlcnQKIAogdm9pZCBET01FdmVu
dFRhcmdldE5vZGU6OnNldExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3Ry
aW5nICZldmVudFR5cGUsIEpTVmFsdWUqIGZ1bmMpIGNvbnN0CiB7Ci0gICAgRXZlbnRUYXJnZXRO
b2RlQ2FzdChpbXBsKCkpLT5zZXRIVE1MRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdpbmRvdzo6
cmV0cmlldmVBY3RpdmUoZXhlYyktPmdldEpTRXZlbnRMaXN0ZW5lcihmdW5jLCB0cnVlKSk7Cisg
ICAgRXZlbnRUYXJnZXROb2RlQ2FzdChpbXBsKCkpLT5zZXRIVE1MRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRPckNyZWF0ZUpTRXZlbnRM
aXN0ZW5lcihmdW5jLCB0cnVlKSk7CiB9CiAKIEpTVmFsdWUqIERPTUV2ZW50VGFyZ2V0Tm9kZTo6
Z2V0TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nICZldmVudFR5cGUpIGNvbnN0CkBAIC02NjEs
MTQgKzY2MSwxNCBAQCBKU1ZhbHVlKiBET01FdmVudFRhcmdldE5vZGVQcm90b3R5cGVGdW5jCiAg
ICAgRXZlbnRUYXJnZXROb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8RXZlbnRUYXJnZXROb2RlKj4o
RE9NTm9kZS0+aW1wbCgpKTsKICAgICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2UgRE9NRXZl
bnRUYXJnZXROb2RlOjpBZGRFdmVudExpc3RlbmVyOiB7Ci0gICAgICAgICAgICBKU0V2ZW50TGlz
dGVuZXIgKmxpc3RlbmVyID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+Z2V0SlNFdmVu
dExpc3RlbmVyKGFyZ3NbMV0pOworICAgICAgICAgICAgSlNFdmVudExpc3RlbmVyICpsaXN0ZW5l
ciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRPckNyZWF0ZUpTRXZlbnRMaXN0
ZW5lcihhcmdzWzFdKTsKICAgICAgICAgICAgIGlmIChsaXN0ZW5lcikKICAgICAgICAgICAgICAg
ICBub2RlLT5hZGRFdmVudExpc3RlbmVyKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5l
cixhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYykpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBET01FdmVudFRhcmdldE5vZGU6OlJlbW92
ZUV2ZW50TGlzdGVuZXI6IHsKLSAgICAgICAgICAgIEpTRXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIg
PSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU0V2ZW50TGlzdGVuZXIoYXJnc1sx
XSk7Ci0gICAgICAgICAgICBpZiAobGlzdGVuZXIpCisgICAgICAgICAgICBKU0V2ZW50TGlzdGVu
ZXIgKmxpc3RlbmVyID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+ZmluZEpTRXZlbnRM
aXN0ZW5lcihhcmdzWzFdKTsKKyAgICAgICAgICAgIGlmIChsaXN0ZW5lcikgCiAgICAgICAgICAg
ICAgICAgbm9kZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzWzBdLT50b1N0cmluZyhleGVjKSwg
bGlzdGVuZXIsYXJnc1syXS0+dG9Cb29sZWFuKGV4ZWMpKTsKICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19l
dmVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2V2ZW50cy5j
cHAJKHJldmlzaW9uIDE5Nzg4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZXZlbnRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYgKzIwMSwyNCBAQCB2b2lkIEpTVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyOjptYXJrKCkKICAgICAgICAgbGlzdGVuZXItPm1hcmsoKTsKIH0KIAorI2lm
bmRlZiBOREVCVUcKKyNpZm5kZWYgTE9HX0NIQU5ORUxfUFJFRklYCisjZGVmaW5lIExPR19DSEFO
TkVMX1BSRUZJWCBMb2cKKyNlbmRpZgorV1RGTG9nQ2hhbm5lbCBMb2dXZWJDb3JlRXZlbnRMaXN0
ZW5lckxlYWtzID0geyAweDAwMDAwMDAwLCAiIiwgV1RGTG9nQ2hhbm5lbE9uIH07CisKK3N0cnVj
dCBFdmVudExpc3RlbmVyQ291bnRlciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGNvdW50OworICAg
IH5FdmVudExpc3RlbmVyQ291bnRlcigpCisgICAgeworICAgICAgICBpZiAoY291bnQpCisgICAg
ICAgICAgICBMT0coV2ViQ29yZUV2ZW50TGlzdGVuZXJMZWFrcywgIkxFQUs6ICV1IEV2ZW50TGlz
dGVuZXJzXG4iLCBjb3VudCk7CisgICAgfQorfTsKK3Vuc2lnbmVkIEV2ZW50TGlzdGVuZXJDb3Vu
dGVyOjpjb3VudCA9IDA7CitzdGF0aWMgRXZlbnRMaXN0ZW5lckNvdW50ZXIgZXZlbnRMaXN0ZW5l
ckNvdW50ZXI7CisjZW5kaWYKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBKU0V2ZW50TGlzdGVu
ZXI6OkpTRXZlbnRMaXN0ZW5lcihKU09iamVjdCogX2xpc3RlbmVyLCBXaW5kb3cqIF93aW4sIGJv
b2wgX2h0bWwpCkBAIC0yMTMsNiArMjMxLDkgQEAgSlNFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlz
dGVuZXIoSlNPYmplYwogICAgICAgICAgICAgPyBfd2luLT5qc0hUTUxFdmVudExpc3RlbmVycyA6
IF93aW4tPmpzRXZlbnRMaXN0ZW5lcnM7CiAgICAgICAgIGxpc3RlbmVycy5zZXQoX2xpc3RlbmVy
LCB0aGlzKTsKICAgICB9CisjaWZuZGVmIE5ERUJVRworICAgICsrZXZlbnRMaXN0ZW5lckNvdW50
ZXIuY291bnQ7CisjZW5kaWYKIH0KIAogSlNFdmVudExpc3RlbmVyOjp+SlNFdmVudExpc3RlbmVy
KCkKQEAgLTIyMiw2ICsyNDMsOSBAQCBKU0V2ZW50TGlzdGVuZXI6On5KU0V2ZW50TGlzdGVuZXIo
KQogICAgICAgICAgICAgPyB3aW4tPmpzSFRNTEV2ZW50TGlzdGVuZXJzIDogd2luLT5qc0V2ZW50
TGlzdGVuZXJzOwogICAgICAgICBsaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKICAgICB9Cisj
aWZuZGVmIE5ERUJVRworICAgIC0tZXZlbnRMaXN0ZW5lckNvdW50ZXIuY291bnQ7CisjZW5kaWYK
IH0KIAogSlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6bGlzdGVuZXJPYmooKSBjb25zdApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCShyZXZpc2lvbiAxOTc4OCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODAsNyAr
MTI4MCw3IEBAIHZvaWQgV2luZG93OjpzZXRMaXN0ZW5lcihFeGVjU3RhdGUgKmV4ZWMKICAgaWYg
KCFkb2MpCiAgICAgcmV0dXJuOwogCi0gIGRvYy0+c2V0SFRNTFdpbmRvd0V2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBnZXRKU0V2ZW50TGlzdGVuZXIoZnVuYyx0cnVlKSk7CisgIGRvYy0+c2V0SFRN
TFdpbmRvd0V2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBmaW5kT3JDcmVhdGVKU0V2ZW50TGlzdGVu
ZXIoZnVuYyx0cnVlKSk7CiB9CiAKIEpTVmFsdWUgKldpbmRvdzo6Z2V0TGlzdGVuZXIoRXhlY1N0
YXRlICpleGVjLCBjb25zdCBBdG9taWNTdHJpbmcgJmV2ZW50VHlwZSkgY29uc3QKQEAgLTEyOTgs
MzAgKzEyOTgsNDggQEAgSlNWYWx1ZSAqV2luZG93OjpnZXRMaXN0ZW5lcihFeGVjU3RhdGUgKgog
ICAgIHJldHVybiBqc051bGwoKTsKIH0KIAotSlNFdmVudExpc3RlbmVyICpXaW5kb3c6OmdldEpT
RXZlbnRMaXN0ZW5lcihKU1ZhbHVlICp2YWwsIGJvb2wgaHRtbCkKK0pTRXZlbnRMaXN0ZW5lciog
V2luZG93OjpmaW5kSlNFdmVudExpc3RlbmVyKEpTVmFsdWUqIHZhbCwgYm9vbCBodG1sKQogewor
ICAgIGlmICghdmFsLT5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBKU09iamVj
dCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2YWwpOworICAgIExpc3RlbmVyc01h
cCYgbGlzdGVuZXJzID0gaHRtbCA/IGpzSFRNTEV2ZW50TGlzdGVuZXJzIDoganNFdmVudExpc3Rl
bmVyczsKKyAgICByZXR1cm4gbGlzdGVuZXJzLmdldChvYmplY3QpOworfQorCitKU0V2ZW50TGlz
dGVuZXIgKldpbmRvdzo6ZmluZE9yQ3JlYXRlSlNFdmVudExpc3RlbmVyKEpTVmFsdWUgKnZhbCwg
Ym9vbCBodG1sKQoreworICBKU0V2ZW50TGlzdGVuZXIgKmxpc3RlbmVyID0gZmluZEpTRXZlbnRM
aXN0ZW5lcih2YWwsIGh0bWwpOworICBpZiAobGlzdGVuZXIpCisgICAgcmV0dXJuIGxpc3RlbmVy
OworCiAgIGlmICghdmFsLT5pc09iamVjdCgpKQogICAgIHJldHVybiAwOwogICBKU09iamVjdCAq
b2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QgKj4odmFsKTsKIAotICBMaXN0ZW5lcnNNYXAm
IGxpc3RlbmVycyA9IGh0bWwgPyBqc0hUTUxFdmVudExpc3RlbmVycyA6IGpzRXZlbnRMaXN0ZW5l
cnM7Ci0gIGlmIChKU0V2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gbGlzdGVuZXJzLmdldChvYmpl
Y3QpKQotICAgIHJldHVybiBsaXN0ZW5lcjsKLQogICAvLyBOb3RlIHRoYXQgdGhlIEpTRXZlbnRM
aXN0ZW5lciBjb25zdHJ1Y3RvciBhZGRzIGl0IHRvIG91ciBqc0V2ZW50TGlzdGVuZXJzIGxpc3QK
ICAgcmV0dXJuIG5ldyBKU0V2ZW50TGlzdGVuZXIob2JqZWN0LCB0aGlzLCBodG1sKTsKIH0KIAot
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIgKldpbmRvdzo6Z2V0SlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIoSlNWYWx1ZSAqdmFsLCBib29sIGh0bWwpCitKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lciogV2luZG93OjpmaW5kSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoSlNWYWx1ZSogdmFs
LCBib29sIGh0bWwpCiB7Ci0gIGlmICghdmFsLT5pc09iamVjdCgpKQotICAgIHJldHVybiAwOwot
ICBKU09iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QgKj4odmFsKTsKKyAgICBp
ZiAoIXZhbC0+aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSlNPYmplY3QqIG9i
amVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odmFsKTsKKyAgICBVbnByb3RlY3RlZExpc3Rl
bmVyc01hcCYgbGlzdGVuZXJzID0gaHRtbCA/IGpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5l
cnMgOiBqc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnM7CisgICAgcmV0dXJuIGxpc3RlbmVycy5n
ZXQob2JqZWN0KTsKK30KIAotICBVbnByb3RlY3RlZExpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0g
aHRtbCA/IGpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMgOiBqc1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcnM7Ci0gIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBsaXN0ZW5lcnMuZ2V0KG9iamVjdCkpCitKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciAqV2lu
ZG93OjpmaW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihKU1ZhbHVlICp2YWws
IGJvb2wgaHRtbCkKK3sKKyAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIgKmxpc3RlbmVyID0g
ZmluZEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKHZhbCwgaHRtbCk7CisgIGlmIChsaXN0ZW5l
cikKICAgICByZXR1cm4gbGlzdGVuZXI7CiAKKyAgaWYgKCF2YWwtPmlzT2JqZWN0KCkpCisgICAg
cmV0dXJuIDA7CisgIEpTT2JqZWN0ICpvYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVjdCAqPih2
YWwpOworCiAgIC8vIFRoZSBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciBjb25zdHJ1Y3RvciBh
ZGRzIGl0IHRvIG91ciBqc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnMgbWFwLgogICByZXR1cm4g
bmV3IEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKG9iamVjdCwgdGhpcywgaHRtbCk7CiB9CkBA
IC0xNzg3LDE0ICsxODA1LDE0IEBAIEpTVmFsdWUgKldpbmRvd0Z1bmM6OmNhbGxBc0Z1bmN0aW9u
KEV4ZWMKICAgY2FzZSBXaW5kb3c6OkFkZEV2ZW50TGlzdGVuZXI6CiAgICAgICAgIGlmICghd2lu
ZG93LT5pc1NhZmVTY3JpcHQoZXhlYykpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLSAgICAgICAgaWYgKEpTRXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJp
ZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU0V2ZW50TGlzdGVuZXIoYXJnc1sxXSkpCisgICAgICAgIGlm
IChKU0V2ZW50TGlzdGVuZXIgKmxpc3RlbmVyID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVj
KS0+ZmluZE9yQ3JlYXRlSlNFdmVudExpc3RlbmVyKGFyZ3NbMV0pKQogICAgICAgICAgICAgaWYg
KERvY3VtZW50ICpkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBkb2Mt
PmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4
ZWMpKSwgbGlzdGVuZXIsIGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogICBjYXNlIFdpbmRvdzo6UmVtb3ZlRXZlbnRMaXN0ZW5lcjoKICAg
ICAgICAgaWYgKCF3aW5kb3ctPmlzU2FmZVNjcmlwdChleGVjKSkKICAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotICAgICAgICBpZiAoSlNFdmVudExpc3RlbmVyICpsaXN0ZW5lciA9
IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmdldEpTRXZlbnRMaXN0ZW5lcihhcmdzWzFd
KSkKKyAgICAgICAgaWYgKEpTRXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJp
ZXZlQWN0aXZlKGV4ZWMpLT5maW5kSlNFdmVudExpc3RlbmVyKGFyZ3NbMV0pKQogICAgICAgICAg
ICAgaWYgKERvY3VtZW50ICpkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAg
ICBkb2MtPnJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRv
U3RyaW5nKGV4ZWMpKSwgbGlzdGVuZXIsIGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
d2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmgJ
KHJldmlzaW9uIDE5Nzg4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzNSw4ICsxMzUsMTkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgQmFy
SW5mbyAqc2Nyb2xsYmFycyhFeGVjU3RhdGUqKSBjb25zdDsKICAgICBCYXJJbmZvICpzdGF0dXNi
YXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgQmFySW5mbyAqdG9vbGJhcihFeGVjU3RhdGUqKSBj
b25zdDsKLSAgICBKU0V2ZW50TGlzdGVuZXIgKmdldEpTRXZlbnRMaXN0ZW5lcihKU1ZhbHVlKiwg
Ym9vbCBodG1sID0gZmFsc2UpOwotICAgIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyICpnZXRK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihKU1ZhbHVlKiwgYm9vbCBodG1sID0gZmFsc2UpOwor
CisgICAgLy8gRmluZHMgYSB3cmFwcGVyIG9mIGEgSlMgRXZlbnRMaXN0ZW5lciwgcmV0dXJucyAw
IGlmIG5vIGV4aXN0aW5nIG9uZS4KKyAgICBKU0V2ZW50TGlzdGVuZXIqIGZpbmRKU0V2ZW50TGlz
dGVuZXIoSlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKKworICAgIC8vIEZpbmRzIG9yIGNy
ZWF0ZXMgYSB3cmFwcGVyIG9mIGEgSlMgRXZlbnRMaXN0ZW5lci4gSlMgRXZlbnRMaXN0ZW5lciBv
YmplY3QgaXMgR0MtcHJvdGVjdGVkLgorICAgIEpTRXZlbnRMaXN0ZW5lciAqZmluZE9yQ3JlYXRl
SlNFdmVudExpc3RlbmVyKEpTVmFsdWUqLCBib29sIGh0bWwgPSBmYWxzZSk7CisKKyAgICAvLyBG
aW5kcyBhIHdyYXBwZXIgb2YgYSBHQy11bnByb3RlY3RlZCBKUyBFdmVudExpc3RlbmVyLCByZXR1
cm5zIDAgaWYgbm8gZXhpc3Rpbmcgb25lLgorICAgIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
KiBmaW5kSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoSlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZh
bHNlKTsKKworICAgIC8vIEZpbmRzIG9yIGNyZWF0ZXMgYSB3cmFwcGVyIG9mIGEgSlMgRXZlbnRM
aXN0ZW5lci4gSlMgRXZlbnRMaXN0ZW5lciBvYmplY3QgaXMgKk5PVCogR0MtcHJvdGVjdGVkLgor
ICAgIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyICpmaW5kT3JDcmVhdGVKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lcihKU1ZhbHVlKiwgYm9vbCBodG1sID0gZmFsc2UpOworCQogICAgIHZvaWQg
Y2xlYXIoKTsKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlICopIGNvbnN0
OwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtZXZlbnQtbGlzdGVuZXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtZXZlbnQt
bGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jl
bW92ZS1ldmVudC1saXN0ZW5lci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACis8
aHRtbD4KKzxib2R5PgorPHNjcmlwdD4KKy8vIGZvbGxvd2luZyBjb2RlIHNob3VsZCBsZWFrIHRo
ZSBmdW5jdGlvbiBhbmQgd2luZG93L2RvY3VtZW50IG9iamVjdHMuCitmdW5jdGlvbiBsZWFrZWQo
ZSkge3ZhciBhID0gd2luZG93OyB9Citkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3Vz
ZW1vdmUiLCBsZWFrZWQsIHRydWUpOworPC9zY3JpcHQ+CitUaGlzIHBhZ2UgZXhlY3V0ZXMgSmF2
YVNjcmlwdCB0aGF0IHJlbW92ZXMgYSBub24tZXhpc3RpbmcgZXZlbnQgbGlzdGVuZXIuIEl0IHNo
b3VsZCBub3QgY2F1c2UgbWVtb3J5IGxlYWtzLgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="5228"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>