<?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>60621</bug_id>
          
          <creation_ts>2011-05-11 05:15:27 -0700</creation_ts>
          <short_desc>[UNIX] Allow sending null handles in messages</short_desc>
          <delta_ts>2011-07-14 10:53:13 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>60629</dependson>
          <blocked>56935</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Carlos Garcia Campos">cgarcia</assigned_to>
          <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>kimmo.t.kinnunen</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ostap73</cc>
    
    <cc>sam</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401917</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-11 05:15:27 -0700</bug_when>
    <thetext>It doesn&apos;t work for gtk and qt port, since sendmsg() checks whether file descriptors are valid before sending the message, returning EBADF when they are not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401918</commentid>
    <comment_count>1</comment_count>
      <attachid>93109</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-11 05:20:44 -0700</bug_when>
    <thetext>Created attachment 93109
Patch

Instead of checking if the handle is null, we can simply check if the size has changed in the plugin process before creating a new backing store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402025</commentid>
    <comment_count>2</comment_count>
      <attachid>93109</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-11 09:18:36 -0700</bug_when>
    <thetext>Comment on attachment 93109
Patch

Looks sane to me, but I&apos;d be more comfortable if the original authors of this code took a look as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402028</commentid>
    <comment_count>3</comment_count>
      <attachid>93109</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-11 09:21:30 -0700</bug_when>
    <thetext>Comment on attachment 93109
Patch

This patch is incorrect. Isn&apos;t it possible to make SharedMemory::Handle::encode just encode whether the handle is null or not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402036</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-11 09:28:14 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 93109 [details])
&gt; This patch is incorrect. Isn&apos;t it possible to make SharedMemory::Handle::encode just encode whether the handle is null or not?

It does it, when file descriptor is -1 the handle is null, but then it&apos;s impossible to send the message because sendmsg always fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402045</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-11 09:31:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 93109 [details] [details])
&gt; &gt; This patch is incorrect. Isn&apos;t it possible to make SharedMemory::Handle::encode just encode whether the handle is null or not?
&gt; 
&gt; It does it, when file descriptor is -1 the handle is null, but then it&apos;s impossible to send the message because sendmsg always fails.

But in that case, does the file descriptor even need to be passed to sendmsg?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402047</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-11 09:36:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (From update of attachment 93109 [details] [details] [details])
&gt; &gt; &gt; This patch is incorrect. Isn&apos;t it possible to make SharedMemory::Handle::encode just encode whether the handle is null or not?
&gt; &gt; 
&gt; &gt; It does it, when file descriptor is -1 the handle is null, but then it&apos;s impossible to send the message because sendmsg always fails.
&gt; 
&gt; But in that case, does the file descriptor even need to be passed to sendmsg?

well, it&apos;s part of the GeometryDidChange message, the handle is encoded as an attachment. Attachments are sent using control messages with cmsg_level = SOL_SOCKET, cmsg_type = SCM_RIGHTS which makes sendmsg check the file descriptors passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402845</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-12 08:05:19 -0700</bug_when>
    <thetext>Your are right, we should be able to send null handles. I&apos;m already working on a patch for ConnectionUnix to allow it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402898</commentid>
    <comment_count>8</comment_count>
      <attachid>93295</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-12 09:41:20 -0700</bug_when>
    <thetext>Created attachment 93295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402905</commentid>
    <comment_count>9</comment_count>
      <attachid>93295</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-05-12 09:51:17 -0700</bug_when>
    <thetext>Comment on attachment 93295
Patch

Attachment 93295 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8684816</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404958</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-16 23:54:26 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 93295 [details])
&gt; Attachment 93295 [details] did not pass qt-ews (qt):
&gt; Output: http://queues.webkit.org/results/8684816

Qt build failed because this patch depends on patch attached to bug #60629</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405811</commentid>
    <comment_count>11</comment_count>
      <attachid>93295</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-18 10:25:53 -0700</bug_when>
    <thetext>Comment on attachment 93295
Patch

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

Look sane, but I&apos;d like to at least get a nod from the personal who originally wrote this code.

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:104
&gt; +    void setType(Attachment::Type type) { m_type = type; }
&gt; +
&gt; +    Attachment::Type getType() { return m_type; }

No need for this extra newline.

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:110
&gt; +        ASSERT(m_type == Attachment::MappedMemoryType);
&gt; +
&gt; +        m_size = size;

Ditto.

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:117
&gt; +        ASSERT(m_type == Attachment::MappedMemoryType);
&gt; +
&gt; +        return m_size;

Ditto.

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:124
&gt; +    void setNull() { m_isNull = true; }
&gt; +
&gt; +    bool isNull() { return m_isNull; }
&gt; +

Ditto.

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:247
&gt; +        size_t attachmentFDCount = 0;

Please call this something less similar to attachmentCount like attachmentFileDescriptorCount. I confused the two variables on my first read through.

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:436
&gt; +        int* fdptr = 0;

Should be fdPtr.

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:442
&gt; +            cmsg = CMSG_FIRSTHDR(&amp;message);

It seems that you only use this insidde this block, so you should declare it here instead of above. It would be better to rename this to something more readable like firstCMSGHeader.

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:457
&gt; +                // Fall trhough.

Please expand this. Why should this fall through?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405873</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-18 11:21:54 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 93295 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93295&amp;action=review
&gt; 
&gt; Look sane, but I&apos;d like to at least get a nod from the personal who originally wrote this code.

Thanks for reviewing.

&gt; &gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:104
&gt; &gt; +    void setType(Attachment::Type type) { m_type = type; }
&gt; &gt; +
&gt; &gt; +    Attachment::Type getType() { return m_type; }
&gt; 
&gt; No need for this extra newline.

I added these lines for consistency with MessageInfo class, but I can remove them.

&gt; &gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:110
&gt; &gt; +        ASSERT(m_type == Attachment::MappedMemoryType);
&gt; &gt; +
&gt; &gt; +        m_size = size;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:117
&gt; &gt; +        ASSERT(m_type == Attachment::MappedMemoryType);
&gt; &gt; +
&gt; &gt; +        return m_size;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:124
&gt; &gt; +    void setNull() { m_isNull = true; }
&gt; &gt; +
&gt; &gt; +    bool isNull() { return m_isNull; }
&gt; &gt; +
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:247
&gt; &gt; +        size_t attachmentFDCount = 0;
&gt; 
&gt; Please call this something less similar to attachmentCount like attachmentFileDescriptorCount. I confused the two variables on my first read through.

Ok.

&gt; &gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:436
&gt; &gt; +        int* fdptr = 0;
&gt; 
&gt; Should be fdPtr.

I haven&apos;t added that variable, it&apos;s in the current code, I&apos;ll rename it anyway. 

&gt; &gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:442
&gt; &gt; +            cmsg = CMSG_FIRSTHDR(&amp;message);
&gt; 
&gt; It seems that you only use this insidde this block, so you should declare it here instead of above.

Ok.

&gt; It would be better to rename this to something more readable like firstCMSGHeader.

This is also current code, I&apos;ll rename it too.

&gt; &gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:457
&gt; &gt; +                // Fall trhough.
&gt; 
&gt; Please expand this. Why should this fall through?

Bacause both mapped mem and socket attachments have a file descriptor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406344</commentid>
    <comment_count>13</comment_count>
      <attachid>94062</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-19 05:22:29 -0700</bug_when>
    <thetext>Created attachment 94062
Updated patch according to review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406347</commentid>
    <comment_count>14</comment_count>
      <attachid>94062</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-05-19 05:36:26 -0700</bug_when>
    <thetext>Comment on attachment 94062
Updated patch according to review

Attachment 94062 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8719071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410331</commentid>
    <comment_count>15</comment_count>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2011-05-26 03:25:22 -0700</bug_when>
    <thetext>A comment as the original implementor:
The patch looks a bit too complex, e.g the AttachmentInfo seems a bit redundant.

What is the condition when the handle file descriptor is -1? I think that is the bug that should be solved? Does the problem appear as ASSERT Handle::encode?

If so, you should be able to solve it like following:

	Modified Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
diff --git a/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp b/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
index 3dce1c2..9789f81 100644
--- a/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
+++ b/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
@@ -69,9 +69,13 @@ bool SharedMemory::Handle::isNull() const
 
 void SharedMemory::Handle::encode(CoreIPC::ArgumentEncoder* encoder) const
 {
-    ASSERT(!isNull());
+    if (isNull())
+        encoder-&gt;encode(false);
+    else {
+        encoder-&gt;encode(true);
+        encoder-&gt;encode(releaseToAttachment());
+    }
 
-    encoder-&gt;encode(releaseToAttachment());
 }
 
 bool SharedMemory::Handle::decode(CoreIPC::ArgumentDecoder* decoder, Handle&amp; handle)
@@ -79,6 +83,13 @@ bool SharedMemory::Handle::decode(CoreIPC::ArgumentDecoder* decoder, Handle&amp; han
     ASSERT_ARG(handle, !handle.m_size);
     ASSERT_ARG(handle, handle.isNull());
 
+    bool hasContent = false;
+    if (!decoder-&gt;decode(hasContent))
+        return false;
+
+    if (!hasContent)
+        return true;
+
     CoreIPC::Attachment attachment;
     if (!decoder-&gt;decode(attachment))
         return false;


Note, that&apos;s just pseudocode, I haven&apos;t tried it..


In general: also if only possible, it would be great if the bug reports would provide a bit more concrete details about the actual symptom. Eg. if it asserts or crashes, you should provide info about where an which conditions. Jumping to conclusions might be a bit non-productive..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410336</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-26 03:38:31 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; A comment as the original implementor:
&gt; The patch looks a bit too complex, e.g the AttachmentInfo seems a bit redundant.
&gt; 
&gt; What is the condition when the handle file descriptor is -1? I think that is the bug that should be solved? Does the problem appear as ASSERT Handle::encode?

GeometryDidChange message sends a null handle on purpose when there&apos;s no need to create a new backing store. Receiver checks whether handle is null to decide whether to create a new backing store or not. I talked to Anders Carlsson and he confirmed that the expected behaviour so we should find a way to send a null handle. 

As I said before the problem of sending a null handle is that the file descriptor is -1. When sending the message using sendmsg(), it tries to dup the descriptors and when it finds the invalid file descritor, sendmsg fails with errno = EBADF and the message is not called. 

&gt; If so, you should be able to solve it like following:
&gt; 
&gt;     Modified Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
&gt; diff --git a/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp b/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
&gt; index 3dce1c2..9789f81 100644
&gt; --- a/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
&gt; +++ b/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
&gt; @@ -69,9 +69,13 @@ bool SharedMemory::Handle::isNull() const
&gt; 
&gt;  void SharedMemory::Handle::encode(CoreIPC::ArgumentEncoder* encoder) const
&gt;  {
&gt; -    ASSERT(!isNull());
&gt; +    if (isNull())
&gt; +        encoder-&gt;encode(false);
&gt; +    else {
&gt; +        encoder-&gt;encode(true);
&gt; +        encoder-&gt;encode(releaseToAttachment());
&gt; +    }
&gt; 
&gt; -    encoder-&gt;encode(releaseToAttachment());
&gt;  }
&gt; 
&gt;  bool SharedMemory::Handle::decode(CoreIPC::ArgumentDecoder* decoder, Handle&amp; handle)
&gt; @@ -79,6 +83,13 @@ bool SharedMemory::Handle::decode(CoreIPC::ArgumentDecoder* decoder, Handle&amp; han
&gt;      ASSERT_ARG(handle, !handle.m_size);
&gt;      ASSERT_ARG(handle, handle.isNull());
&gt; 
&gt; +    bool hasContent = false;
&gt; +    if (!decoder-&gt;decode(hasContent))
&gt; +        return false;
&gt; +
&gt; +    if (!hasContent)
&gt; +        return true;
&gt; +
&gt;      CoreIPC::Attachment attachment;
&gt;      if (!decoder-&gt;decode(attachment))
&gt;          return false;
&gt; 
&gt; 
&gt; Note, that&apos;s just pseudocode, I haven&apos;t tried it..
&gt; 
&gt; 
&gt; In general: also if only possible, it would be great if the bug reports would provide a bit more concrete details about the actual symptom. Eg. if it asserts or crashes, you should provide info about where an which conditions. Jumping to conclusions might be a bit non-productive..

Yes, sorry, this bug report was created when working on other bugs, I explained the problem in bugs #57617 and #60629, and I talked about the issue with apple guys on irc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415790</commentid>
    <comment_count>17</comment_count>
      <attachid>96078</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-06 05:30:45 -0700</bug_when>
    <thetext>Created attachment 96078
Updated patch to current git master

ConnectionUnix.cpp file has changed a bit after r88147, so I&apos;ve updated the patch to apply to current git master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421392</commentid>
    <comment_count>18</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-06-15 09:54:23 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=96078) [details]
&gt; Updated patch to current git master
&gt; 
&gt; ConnectionUnix.cpp file has changed a bit after r88147, so I&apos;ve updated the patch to apply to current git master.

Is it really depends now on 60629? It seems it can be applied without 60629. Am I right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421398</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-15 09:59:07 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; Created an attachment (id=96078) [details] [details]
&gt; &gt; Updated patch to current git master
&gt; &gt; 
&gt; &gt; ConnectionUnix.cpp file has changed a bit after r88147, so I&apos;ve updated the patch to apply to current git master.
&gt; 
&gt; Is it really depends now on 60629? It seems it can be applied without 60629. Am I right?

No, it still requires 60629, because it adds the attachment types (SocketType and MappedType, this one renamed actually) used by this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426059</commentid>
    <comment_count>20</comment_count>
      <attachid>98330</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-23 03:15:04 -0700</bug_when>
    <thetext>Created attachment 98330
Updated patch

It simply removes a couple of asserts that were wrong and are not actually needed and fixes a memory corruption issue with the file descriptors buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426060</commentid>
    <comment_count>21</comment_count>
      <attachid>98330</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-06-23 03:23:10 -0700</bug_when>
    <thetext>Comment on attachment 98330
Updated patch

Attachment 98330 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8923982</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437195</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-07-14 10:53:13 -0700</bug_when>
    <thetext>Committed r91016: &lt;http://trac.webkit.org/changeset/91016&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93109</attachid>
            <date>2011-05-11 05:20:44 -0700</date>
            <delta_ts>2011-05-12 09:41:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-plugin-geometry.diff</filename>
            <type>text/plain</type>
            <size>2860</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3NWYxOGMwLi4yMTAxODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDUtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvbid0
IHVzZSBhIG51bGwgYmFja2luZyBzdG9yZSBoYW5kbGUgaW4gUGx1Z2luQ29udHJvbGxlclByb3h5
OjpHZW9tZXRyeURpZENoYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjA2MjEKKworICAgICAgICBQb3J0cyB1c2luZyB1bml4IGZpbGUgZGVzY3Jp
cHRvcnMgY2FuJ3QgcGFzcyBhIG51bGwgaGFuZGxlLAorICAgICAgICBiZWNhdXNlIHNlbmRtc2co
KSBjaGVja3Mgd2hldGhlciBmaWxlIGRlc2NyaXB0b3JzIHBhc3NlZCBhcmUgdmFsaWQKKyAgICAg
ICAgb3Igbm90LiBXZSBjYW4gc2ltcGx5IHBhc3MgYWx3YXlzIHRoZSBoYW5kbGUgZm9yIHRoZSBj
dXJyZW50IGJhY2tpbmcKKyAgICAgICAgc3RvcmUsIGFuZCBjaGVjayBpbiB0aGUgcGx1Z2luIHBy
b2Nlc3MgaWYgdGhlIHNpemUgaGFzIGNoYW5nZWQgdG8KKyAgICAgICAgY3JlYXRlIGEgbmV3IGJh
Y2tpbmcgc3RvcmUuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6Z2VvbWV0
cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZSk6CisK
IDIwMTEtMDUtMTAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBkYzg5NTk0Li42MzI2
OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBQbHVnaW5Db250cm9s
bGVyUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCwgY29u
c3QgSW4KIAogICAgIHBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKTsKIAotICAgIGlmICghYmFj
a2luZ1N0b3JlSGFuZGxlLmlzTnVsbCgpKSB7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSB8fCBt
X2ZyYW1lUmVjdC5zaXplKCkgIT0gbV9iYWNraW5nU3RvcmUtPnNpemUoKSkgewogICAgICAgICAv
LyBDcmVhdGUgYSBuZXcgYmFja2luZyBzdG9yZS4KICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4
IDkzMzlhYmMuLjYwNjgyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjAxLDE1ICsyMDEsMTUgQEAgdm9pZCBQbHVnaW5Q
cm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBJ
bnRSZWN0JiBjbGkKICAgICAgICAgaWYgKCFtX3BsdWdpbkJhY2tpbmdTdG9yZSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAvLyBDcmVhdGUgYSBoYW5kbGUgdG8gdGhlIHBsdWctaW4g
YmFja2luZyBzdG9yZSBzbyB3ZSBjYW4gc2VuZCBpdCBvdmVyLgotICAgICAgICBpZiAoIW1fcGx1
Z2luQmFja2luZ1N0b3JlLT5jcmVhdGVIYW5kbGUocGx1Z2luQmFja2luZ1N0b3JlSGFuZGxlKSkg
ewotICAgICAgICAgICAgbV9wbHVnaW5CYWNraW5nU3RvcmUgPSBudWxscHRyOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250
YWluc1ZhbGlkRGF0YSA9IGZhbHNlOwogICAgIH0KIAorICAgIC8vIENyZWF0ZSBhIGhhbmRsZSB0
byB0aGUgcGx1Zy1pbiBiYWNraW5nIHN0b3JlIHNvIHdlIGNhbiBzZW5kIGl0IG92ZXIuCisgICAg
aWYgKCFtX3BsdWdpbkJhY2tpbmdTdG9yZS0+Y3JlYXRlSGFuZGxlKHBsdWdpbkJhY2tpbmdTdG9y
ZUhhbmRsZSkpIHsKKyAgICAgICAgbV9wbHVnaW5CYWNraW5nU3RvcmUgPSBudWxscHRyOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6R2VvbWV0cnlEaWRDaGFuZ2UoZnJh
bWVSZWN0LCBjbGlwUmVjdCwgcGx1Z2luQmFja2luZ1N0b3JlSGFuZGxlKSwgbV9wbHVnaW5JbnN0
YW5jZUlELCBDb3JlSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOwogfQogCg==
</data>
<flag name="review"
          id="86215"
          type_id="1"
          status="-"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93295</attachid>
            <date>2011-05-12 09:41:20 -0700</date>
            <delta_ts>2011-05-19 05:22:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-null-fds.diff</filename>
            <type>text/plain</type>
            <size>13043</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzOGE3MTliLi5hODhlNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzQg
QEAKIDIwMTEtMDUtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtVTklY
XSBBbGxvdyBzZW5kaW5nIG51bGwgaGFuZGxlcyBpbiBtZXNzYWdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2MjEKKworICAgICAgICBPbmx5IHZh
bGlkIGZpbGUgZGVzY3JpcHRvcnMgYXJlIG5vdyBzZW50IHVzaW5nIHNlbmRtc2coKSBjb250cm9s
CisgICAgICAgIG1lc3NhZ2VzLCBhbmQgaW5zdGVhZCBvZiBzZW5kaW5nIGEgbGlzdCBvZiBhdHRh
Y2htZW50IHNpemVzIHdlIG5vdworICAgICAgICBzZW5kIGEgbGlzdCBvZiBBdHRhY2htZW50SW5m
byBzdHJ1Y3RzLiBBdHRhY2htZW50SW5mbyBjb250YWlucworICAgICAgICBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgYXR0YWNobWVudHMgaW5jbHVkaW5nIHRoZSBzaXplIGZvcgorICAgICAgICBNYXBw
ZWRNZW1vcnkgYXR0YWNobWVucyBhbmQgd2hldGhlciB0aGUgYXR0YWNobWVudCBpcyBudWxsIG9y
CisgICAgICAgIG5vdC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5mbzo6QXR0YWNobWVu
dEluZm8pOiBOZXcgY2xhc3MgY29udGFpbmluZworICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgYXR0YWNobWVudHMgc2VudC4KKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnRJbmZvOjpz
ZXRUeXBlKTogU2V0IHRoZSBhdHRhY2htZW50IHR5cGUuCisgICAgICAgIChDb3JlSVBDOjpBdHRh
Y2htZW50SW5mbzo6Z2V0VHlwZSk6IFJldHVybiB0aGUgYXR0YWNobWVudCB0eXBlLgorICAgICAg
ICAoQ29yZUlQQzo6QXR0YWNobWVudEluZm86OnNldFNpemUpOiBTZXQgdGhlIHNpemUgZm9yIE1h
cHBlZE1lbW9yeSBhdHRhY2htZW50cy4KKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnRJbmZv
OjpnZXRTaXplKTogR2V0IHRoZSBzaXplIGZvciBNYXBwZWRNZW1vcnkgYXR0YWNobWVudHMuCisg
ICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5mbzo6c2V0TnVsbCk6IFNldCBhdHRhY2htZW50
IGFzIG51bGwsIGl0CisgICAgICAgIGNvbnRhaW5zIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9y
LCBzbyB0aGUgcmVjZWl2ZXIgc2hvdWxkbid0CisgICAgICAgIGV4cGVjdCBhIGZpbGUgZGVzcmlw
dG9yIGZvciB0aGlzIGF0dGFjaG1lbnQuCisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5m
bzo6aXNOdWxsKTogR2V0IHdoZXRoZXIgYXR0YWNobWVudCBpcyBudWxsLAorICAgICAgICBpdCBj
b250YWlucyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4KKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6c2VuZE91dGdvaW5nTWVzc2FnZSk6CisKKzIwMTEtMDUtMTIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBS
b2JpbnNvbi4KIAogICAgICAgICBGaXggdGhlIGJ1aWxkIHdpdGggRU5BQkxFX1BMVUdJTl9QUk9D
RVNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nv
bm5lY3Rpb25Vbml4LmNwcAppbmRleCBkZWRlMGExLi4xNzY4ZjA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
QEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OSw2ICs5MCw0NCBA
QCBwcml2YXRlOgogICAgIHNpemVfdCBtX2F0dGFjaG1lbnRDb3VudDsKIH07CiAKK2NsYXNzIEF0
dGFjaG1lbnRJbmZvIHsKK3B1YmxpYzoKKyAgICBBdHRhY2htZW50SW5mbygpCisgICAgICAgIDog
bV90eXBlKEF0dGFjaG1lbnQ6OlVuaW5pdGlhbGl6ZWQpCisgICAgICAgICwgbV9zaXplKDApCisg
ICAgICAgICwgbV9pc051bGwoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0VHlw
ZShBdHRhY2htZW50OjpUeXBlIHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQorCisgICAgQXR0YWNo
bWVudDo6VHlwZSBnZXRUeXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICB2b2lkIHNldFNp
emUoc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEF0dGFjaG1l
bnQ6Ok1hcHBlZE1lbW9yeVR5cGUpOworCisgICAgICAgIG1fc2l6ZSA9IHNpemU7CisgICAgfQor
CisgICAgc2l6ZV90IGdldFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBB
dHRhY2htZW50OjpNYXBwZWRNZW1vcnlUeXBlKTsKKworICAgICAgICByZXR1cm4gbV9zaXplOwor
ICAgIH0KKworICAgIC8vIFRoZSBhdHRhY2htZW50IGlzIG5vdCBudWxsIHVubGVzcyBleHBsaWNp
dGx5IHNldC4KKyAgICB2b2lkIHNldE51bGwoKSB7IG1faXNOdWxsID0gdHJ1ZTsgfQorCisgICAg
Ym9vbCBpc051bGwoKSB7IHJldHVybiBtX2lzTnVsbDsgfQorCitwcml2YXRlOgorICAgIEF0dGFj
aG1lbnQ6OlR5cGUgbV90eXBlOworICAgIHNpemVfdCBtX3NpemU7CisgICAgYm9vbCBtX2lzTnVs
bDsKK307CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIg
aWRlbnRpZmllcikKIHsKICAgICBtX3NvY2tldERlc2NyaXB0b3IgPSBpZGVudGlmaWVyOwpAQCAt
MTgxLDcgKzIyMCw2IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcigpCiAgICAg
bWVzc2FnZS5tc2dfaW92ID0gaW92OwogICAgIG1lc3NhZ2UubXNnX2lvdmxlbiA9IDE7CiAKLQog
ICAgIGludCBtZXNzYWdlTGVuZ3RoID0gMDsKICAgICB3aGlsZSAoKG1lc3NhZ2VMZW5ndGggPSBy
ZWN2bXNnKG1fc29ja2V0RGVzY3JpcHRvciwgJm1lc3NhZ2UsIDApKSA9PSAtMSkgewogICAgICAg
ICBpZiAoZXJybm8gIT0gRUlOVFIpCkBAIC0xOTQsMjggKzIzMiwzOSBAQCB2b2lkIENvbm5lY3Rp
b246OnJlYWR5UmVhZEhhbmRsZXIoKQogICAgIHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2VEYXRhID0g
bV9yZWFkQnVmZmVyLmRhdGEoKTsKIAogICAgIG1lbWNweSgmbWVzc2FnZUluZm8sIG1lc3NhZ2VE
YXRhLCBzaXplb2YobWVzc2FnZUluZm8pKTsKLSAgICBBU1NFUlQobWVzc2FnZUxlbmd0aCA9PSBz
aXplb2YobWVzc2FnZUluZm8pICsgbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCkgKiBzaXpl
b2Yoc2l6ZV90KSArIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5T09MKCkgPyAwIDogbWVzc2Fn
ZUluZm8uYm9keVNpemUoKSkpOwotCisgICAgQVNTRVJUKG1lc3NhZ2VMZW5ndGggPT0gc2l6ZW9m
KG1lc3NhZ2VJbmZvKSArIG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpICogc2l6ZW9mKEF0
dGFjaG1lbnRJbmZvKSArIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5T09MKCkgPyAwIDogbWVz
c2FnZUluZm8uYm9keVNpemUoKSkpOwogICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihtZXNzYWdl
SW5mbyk7CiAKICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG9vbE1lc3NhZ2VCb2R5
OwogCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpKSB7Ci0gICAgICAgIGlm
IChjb250cm9sTWVzc2FnZSAmJiBjb250cm9sTWVzc2FnZS0+Y21zZ19sZXZlbCA9PSBTT0xfU09D
S0VUICYmIGNvbnRyb2xNZXNzYWdlLT5jbXNnX3R5cGUgPT0gU0NNX1JJR0hUUykgewotICAgICAg
ICAgICAgT3duQXJyYXlQdHI8c2l6ZV90PiBhdHRhY2htZW50U2l6ZXMgPSBhZG9wdEFycmF5UHRy
KG5ldyBzaXplX3RbbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCldKTsKLSAgICAgICAgICAg
IG1lbWNweShhdHRhY2htZW50U2l6ZXMuZ2V0KCksIG1lc3NhZ2VEYXRhLCBzaXplb2Yoc2l6ZV90
KSAqIG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpKTsKLQotICAgICAgICAgICAgbWVzc2Fn
ZURhdGEgKz0gc2l6ZW9mKGF0dGFjaG1lbnRTaXplcyk7Ci0KLSAgICAgICAgICAgIE93bkFycmF5
UHRyPGludD4gZmlsZURlc2NyaXB0b3JzID0gYWRvcHRBcnJheVB0cihuZXcgaW50W21lc3NhZ2VJ
bmZvLmF0dGFjaG1lbnRDb3VudCgpXSk7Ci0gICAgICAgICAgICBtZW1jcHkoZmlsZURlc2NyaXB0
b3JzLmdldCgpLCBDTVNHX0RBVEEoY29udHJvbE1lc3NhZ2UpLCBzaXplb2YoaW50KSAqIG1lc3Nh
Z2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpKTsKKyAgICAgICAgc2l6ZV90IGF0dGFjaG1lbnRDb3Vu
dCA9IG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpOworCisgICAgICAgIE93bkFycmF5UHRy
PEF0dGFjaG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbyA9IGFkb3B0QXJyYXlQdHIobmV3IEF0dGFj
aG1lbnRJbmZvW2F0dGFjaG1lbnRDb3VudF0pOworICAgICAgICBtZW1jcHkoYXR0YWNobWVudElu
Zm8uZ2V0KCksIG1lc3NhZ2VEYXRhLCBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVu
dENvdW50KTsKKyAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAq
IGF0dGFjaG1lbnRDb3VudDsKKworICAgICAgICBzaXplX3QgYXR0YWNobWVudEZEQ291bnQgPSAw
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRDb3VudDsgKytpKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnRJbmZvW2ldLmdldFR5cGUoKSkgeworICAg
ICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpNYXBwZWRNZW1vcnlUeXBlOgorICAgICAgICAgICAg
Y2FzZSBBdHRhY2htZW50OjpTb2NrZXRUeXBlOgorICAgICAgICAgICAgICAgIGlmICghYXR0YWNo
bWVudEluZm9baV0uaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRGRENv
dW50Kys7CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnQ6OlVuaW5pdGlhbGl6ZWQ6CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGludCBhdHRhY2htZW50Q291bnQgPSBtZXNzYWdlSW5m
by5hdHRhY2htZW50Q291bnQoKTsKKyAgICAgICAgT3duQXJyYXlQdHI8aW50PiBmaWxlRGVzY3Jp
cHRvcnMgPSBhZG9wdEFycmF5UHRyKG5ldyBpbnRbYXR0YWNobWVudEZEQ291bnRdKTsKKyAgICAg
ICAgaWYgKGF0dGFjaG1lbnRGRENvdW50ICYmIGNvbnRyb2xNZXNzYWdlICYmIGNvbnRyb2xNZXNz
YWdlLT5jbXNnX2xldmVsID09IFNPTF9TT0NLRVQgJiYgY29udHJvbE1lc3NhZ2UtPmNtc2dfdHlw
ZSA9PSBTQ01fUklHSFRTKSB7CisgICAgICAgICAgICBtZW1jcHkoZmlsZURlc2NyaXB0b3JzLmdl
dCgpLCBDTVNHX0RBVEEoY29udHJvbE1lc3NhZ2UpLCBzaXplb2YoaW50KSAqIGF0dGFjaG1lbnRG
RENvdW50KTsKIAogICAgICAgICAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0wo
KSkKLSAgICAgICAgICAgICAgICBhdHRhY2htZW50Q291bnQtLTsKKyAgICAgICAgICAgICAgICBh
dHRhY2htZW50RkRDb3VudC0tOwogCi0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0
dGFjaG1lbnRDb3VudDsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGF0dGFjaG1lbnRGRENvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAoZmNudGwo
ZmlsZURlc2NyaXB0b3JzW2ldLCBGX1NFVEZMLCBGRF9DTE9FWEVDKSA9PSAtMSkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjIzLDMxICsyNzIsNTMgQEAgdm9pZCBDb25u
ZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyKCkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRyb2xNZXNzYWdlID0g
Q01TR19OWFRIRFIoJm1lc3NhZ2UsIGNvbnRyb2xNZXNzYWdlKTsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dGFjaG1lbnRDb3VudDsgKytpKQotICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGZpbGVEZXNjcmlwdG9yc1tp
XSwgYXR0YWNobWVudFNpemVzW2ldKSk7Ci0KLSAgICAgICAgICAgIGlmIChtZXNzYWdlSW5mby5p
c01lc3NhZ2VCb2R5T09MKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobWVzc2FnZUluZm8u
Ym9keVNpemUoKSk7Ci0KLSAgICAgICAgICAgICAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGhhbmRsZTsKLSAgICAgICAgICAgICAgICBoYW5kbGUuYWRvcHRGcm9tQXR0YWNobWVudChm
aWxlRGVzY3JpcHRvcnNbYXR0YWNobWVudENvdW50XSwgYXR0YWNobWVudFNpemVzW2F0dGFjaG1l
bnRDb3VudF0pOwotICAgICAgICAgICAgICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSkKKyAg
ICAgICAgICAgIGF0dGFjaG1lbnRDb3VudC0tOworCisgICAgICAgIHNpemVfdCBmZEluZGV4ID0g
MDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRhY2htZW50Q291bnQ7ICsraSkg
eworICAgICAgICAgICAgaW50IGZkID0gLTE7CisgICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1l
bnRJbmZvW2ldLmdldFR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpNYXBw
ZWRNZW1vcnlUeXBlOgorICAgICAgICAgICAgICAgIGlmICghYXR0YWNobWVudEluZm9baV0uaXNO
dWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZpbGVEZXNjcmlwdG9ycyk7Cisg
ICAgICAgICAgICAgICAgICAgIGZkID0gZmlsZURlc2NyaXB0b3JzW2ZkSW5kZXgrK107CiAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgb29sTWVzc2FnZUJvZHkgPSBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6Y3JlYXRlKGhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlJlYWRP
bmx5KTsKLSAgICAgICAgICAgICAgICBpZiAoIW9vbE1lc3NhZ2VCb2R5KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKEF0dGFjaG1lbnQoZmQsIGF0
dGFjaG1lbnRJbmZvW2ldLmdldFNpemUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpTb2NrZXRUeXBlOgorICAgICAgICAgICAgICAgIGlm
ICghYXR0YWNobWVudEluZm9baV0uaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGZpbGVEZXNjcmlwdG9ycyk7CisgICAgICAgICAgICAgICAgICAgIGZkID0gZmlsZURlc2Ny
aXB0b3JzW2ZkSW5kZXgrK107CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGF0
dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGZkKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnQ6OlVuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAg
ICAgICAgYXR0YWNobWVudHMuYXBwZW5kKEF0dGFjaG1lbnQoKSk7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSkgeworICAgICAgICAg
ICAgQVNTRVJUKG1lc3NhZ2VJbmZvLmJvZHlTaXplKCkpOworCisgICAgICAgICAgICBpZiAoYXR0
YWNobWVudEluZm9bYXR0YWNobWVudENvdW50XS5pc051bGwoKSkgeworICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgY29udHJvbE1lc3NhZ2UgPSBDTVNHX05YVEhEUigmbWVzc2Fn
ZSwgY29udHJvbE1lc3NhZ2UpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgICAgIGhhbmRsZS5hZG9wdEZy
b21BdHRhY2htZW50KGZpbGVEZXNjcmlwdG9yc1thdHRhY2htZW50RkRDb3VudF0sIGF0dGFjaG1l
bnRJbmZvW2F0dGFjaG1lbnRDb3VudF0uZ2V0U2l6ZSgpKTsKKworICAgICAgICAgICAgb29sTWVz
c2FnZUJvZHkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlKGhhbmRsZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKKyAgICAgICAgICAgIGlmICghb29sTWVzc2FnZUJvZHkp
IHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMyMCw3ICsz
OTEsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogICAgIH0KIAogICAgIE1lc3NhZ2VJbmZv
IG1lc3NhZ2VJbmZvKG1lc3NhZ2VJRCwgYXJndW1lbnRzLT5idWZmZXJTaXplKCksIGF0dGFjaG1l
bnRzLnNpemUoKSk7Ci0gICAgc2l6ZV90IG1lc3NhZ2VTaXplV2l0aEJvZHlJbmxpbmUgPSBzaXpl
b2YobWVzc2FnZUluZm8pICsgKGF0dGFjaG1lbnRzLnNpemUoKSAqIHNpemVvZihzaXplX3QpKSAr
IGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpOworICAgIHNpemVfdCBtZXNzYWdlU2l6ZVdpdGhCb2R5
SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50cy5zaXplKCkgKiBzaXpl
b2YoQXR0YWNobWVudEluZm8pKSArIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpOwogICAgIGlmICht
ZXNzYWdlU2l6ZVdpdGhCb2R5SW5saW5lID4gbWVzc2FnZU1heFNpemUgJiYgYXJndW1lbnRzLT5i
dWZmZXJTaXplKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBvb2xN
ZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGUoYXJndW1lbnRzLT5idWZm
ZXJTaXplKCkpOwogICAgICAgICBpZiAoIW9vbE1lc3NhZ2VCb2R5KQpAQCAtMzQ5LDI4ICs0MjAs
NTYgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNz
YWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICBpb3ZbMF0uaW92X2Jhc2UgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigmbWVzc2FnZUluZm8pOwogICAgIGlvdlswXS5pb3ZfbGVuID0g
c2l6ZW9mKG1lc3NhZ2VJbmZvKTsKIAotICAgIE93bkFycmF5UHRyPGNoYXI+IGF0dGFjaG1lbnRG
REJ1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbQ01TR19TUEFDRShzaXplb2YoaW50KSAq
IGF0dGFjaG1lbnRzLnNpemUoKSldKTsKLSAgICBPd25BcnJheVB0cjxzaXplX3Q+IGF0dGFjaG1l
bnRTaXplcyA9IGFkb3B0QXJyYXlQdHIobmV3IHNpemVfdFthdHRhY2htZW50cy5zaXplKCldKTsK
KyAgICBPd25BcnJheVB0cjxBdHRhY2htZW50SW5mbz4gYXR0YWNobWVudEluZm8gPSBhZG9wdEFy
cmF5UHRyKG5ldyBBdHRhY2htZW50SW5mb1thdHRhY2htZW50cy5zaXplKCldKTsKKworICAgIHNp
emVfdCBhdHRhY2htZW50RkRCdWZmZXJMZW5ndGggPSAwOworICAgIGlmICghYXR0YWNobWVudHMu
aXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0YWNobWVudHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChhdHRhY2htZW50c1tpXS5maWxlRGVzY3Jp
cHRvcigpICE9IC0xKQorICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRGREJ1ZmZlckxlbmd0aCsr
OworICAgICAgICB9CisgICAgfQorICAgIE93bkFycmF5UHRyPGludD4gYXR0YWNobWVudEZEQnVm
ZmVyID0gYWRvcHRBcnJheVB0cihuZXcgaW50W2F0dGFjaG1lbnRGREJ1ZmZlckxlbmd0aF0pOwog
CiAgICAgaWYgKCFhdHRhY2htZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbWVzc2FnZS5tc2df
Y29udHJvbCA9IGF0dGFjaG1lbnRGREJ1ZmZlci5nZXQoKTsKLSAgICAgICAgbWVzc2FnZS5tc2df
Y29udHJvbGxlbiA9IHNpemVvZihjaGFyKSAqIENNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBhdHRh
Y2htZW50cy5zaXplKCkpOworICAgICAgICBzdHJ1Y3QgY21zZ2hkciogY21zZyA9IDA7CisgICAg
ICAgIGludCogZmRwdHIgPSAwOwogCi0gICAgICAgIHN0cnVjdCBjbXNnaGRyKiBjbXNnID0gQ01T
R19GSVJTVEhEUigmbWVzc2FnZSk7Ci0gICAgICAgIGNtc2ctPmNtc2dfbGV2ZWwgPSBTT0xfU09D
S0VUOwotICAgICAgICBjbXNnLT5jbXNnX3R5cGUgPSBTQ01fUklHSFRTOwotICAgICAgICBjbXNn
LT5jbXNnX2xlbiA9IENNU0dfTEVOKHNpemVvZihpbnQpICogYXR0YWNobWVudHMuc2l6ZSgpKTsK
KyAgICAgICAgaWYgKGF0dGFjaG1lbnRGREJ1ZmZlckxlbmd0aCkgeworICAgICAgICAgICAgbWVz
c2FnZS5tc2dfY29udHJvbCA9IGF0dGFjaG1lbnRGREJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAg
IG1lc3NhZ2UubXNnX2NvbnRyb2xsZW4gPSBDTVNHX1NQQUNFKHNpemVvZihpbnQpICogYXR0YWNo
bWVudEZEQnVmZmVyTGVuZ3RoKTsKIAotICAgICAgICBpbnQqIGZkcHRyID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnQqPihDTVNHX0RBVEEoY21zZykpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGF0dGFjaG1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdHRhY2htZW50U2l6
ZXNbaV0gPSBhdHRhY2htZW50c1tpXS5zaXplKCk7Ci0gICAgICAgICAgICBmZHB0cltpXSA9IGF0
dGFjaG1lbnRzW2ldLmZpbGVEZXNjcmlwdG9yKCk7CisgICAgICAgICAgICBjbXNnID0gQ01TR19G
SVJTVEhEUigmbWVzc2FnZSk7CisgICAgICAgICAgICBjbXNnLT5jbXNnX2xldmVsID0gU09MX1NP
Q0tFVDsKKyAgICAgICAgICAgIGNtc2ctPmNtc2dfdHlwZSA9IFNDTV9SSUdIVFM7CisgICAgICAg
ICAgICBjbXNnLT5jbXNnX2xlbiA9IG1lc3NhZ2UubXNnX2NvbnRyb2xsZW47CisKKyAgICAgICAg
ICAgIGZkcHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQqPihDTVNHX0RBVEEoY21zZykpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbWVzc2FnZS5tc2dfY29udHJvbGxlbiA9IGNtc2ctPmNtc2dfbGVu
OworICAgICAgICBpbnQgZmRJbmRleCA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXR0YWNobWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGF0dGFjaG1lbnRJbmZv
W2ldLnNldFR5cGUoYXR0YWNobWVudHNbaV0udHlwZSgpKTsKKworICAgICAgICAgICAgc3dpdGNo
IChhdHRhY2htZW50c1tpXS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudDo6
TWFwcGVkTWVtb3J5VHlwZToKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50SW5mb1tpXS5zZXRT
aXplKGF0dGFjaG1lbnRzW2ldLnNpemUoKSk7CisgICAgICAgICAgICAgICAgLy8gRmFsbCB0cmhv
dWdoLgorICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpTb2NrZXRUeXBlOgorICAgICAgICAg
ICAgICAgIGlmIChhdHRhY2htZW50c1tpXS5maWxlRGVzY3JpcHRvcigpICE9IC0xKSB7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChmZHB0cik7CisgICAgICAgICAgICAgICAgICAgIGZkcHRy
W2ZkSW5kZXgrK10gPSBhdHRhY2htZW50c1tpXS5maWxlRGVzY3JpcHRvcigpOworICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50SW5mb1tpXS5zZXRO
dWxsKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1l
bnQ6OlVuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKLSAgICAgICAgaW92W2lvdkxlbmd0
aF0uaW92X2Jhc2UgPSBhdHRhY2htZW50U2l6ZXMuZ2V0KCk7Ci0gICAgICAgIGlvdltpb3ZMZW5n
dGhdLmlvdl9sZW4gPSBzaXplb2Yoc2l6ZV90KSAqIGF0dGFjaG1lbnRzLnNpemUoKTsKKyAgICAg
ICAgaW92W2lvdkxlbmd0aF0uaW92X2Jhc2UgPSBhdHRhY2htZW50SW5mby5nZXQoKTsKKyAgICAg
ICAgaW92W2lvdkxlbmd0aF0uaW92X2xlbiA9IHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRh
Y2htZW50cy5zaXplKCk7CiAgICAgICAgICsraW92TGVuZ3RoOwogICAgIH0KIAo=
</data>
<flag name="commit-queue"
          id="86437"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94062</attachid>
            <date>2011-05-19 05:22:29 -0700</date>
            <delta_ts>2011-06-06 05:30:45 -0700</delta_ts>
            <desc>Updated patch according to review</desc>
            <filename>wk2-null-handles2.diff</filename>
            <type>text/plain</type>
            <size>13083</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyMGU2MWU2Li5jNjRkNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDUtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtVTklY
XSBBbGxvdyBzZW5kaW5nIG51bGwgaGFuZGxlcyBpbiBtZXNzYWdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2MjEKKworICAgICAgICBPbmx5IHZh
bGlkIGZpbGUgZGVzY3JpcHRvcnMgYXJlIG5vdyBzZW50IHVzaW5nIHNlbmRtc2coKSBjb250cm9s
CisgICAgICAgIG1lc3NhZ2VzLCBhbmQgaW5zdGVhZCBvZiBzZW5kaW5nIGEgbGlzdCBvZiBhdHRh
Y2htZW50IHNpemVzIHdlIG5vdworICAgICAgICBzZW5kIGEgbGlzdCBvZiBBdHRhY2htZW50SW5m
byBzdHJ1Y3RzLiBBdHRhY2htZW50SW5mbyBjb250YWlucworICAgICAgICBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgYXR0YWNobWVudHMgaW5jbHVkaW5nIHRoZSBzaXplIGZvcgorICAgICAgICBNYXBw
ZWRNZW1vcnkgYXR0YWNobWVucyBhbmQgd2hldGhlciB0aGUgYXR0YWNobWVudCBpcyBudWxsIG9y
IG5vdC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHA6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5mbzo6QXR0YWNobWVudEluZm8pOiBO
ZXcgY2xhc3MgY29udGFpbmluZworICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXR0YWNo
bWVudHMgc2VudC4KKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnRJbmZvOjpzZXRUeXBlKTog
U2V0IHRoZSBhdHRhY2htZW50IHR5cGUuCisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5m
bzo6Z2V0VHlwZSk6IFJldHVybiB0aGUgYXR0YWNobWVudCB0eXBlLgorICAgICAgICAoQ29yZUlQ
Qzo6QXR0YWNobWVudEluZm86OnNldFNpemUpOiBTZXQgdGhlIHNpemUgZm9yIE1hcHBlZE1lbW9y
eSBhdHRhY2htZW50cy4KKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnRJbmZvOjpnZXRTaXpl
KTogR2V0IHRoZSBzaXplIGZvciBNYXBwZWRNZW1vcnkgYXR0YWNobWVudHMuCisgICAgICAgIChD
b3JlSVBDOjpBdHRhY2htZW50SW5mbzo6c2V0TnVsbCk6IFNldCBhdHRhY2htZW50IGFzIG51bGws
IGl0CisgICAgICAgIGNvbnRhaW5zIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLCBzbyB0aGUg
cmVjZWl2ZXIgc2hvdWxkbid0CisgICAgICAgIGV4cGVjdCBhIGZpbGUgZGVzcmlwdG9yIGZvciB0
aGlzIGF0dGFjaG1lbnQuCisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5mbzo6aXNOdWxs
KTogR2V0IHdoZXRoZXIgYXR0YWNobWVudCBpcyBudWxsLAorICAgICAgICBpdCBjb250YWlucyBh
biBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OnJlYWR5UmVhZEhhbmRsZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6c2VuZE91
dGdvaW5nTWVzc2FnZSk6CisKIDIwMTEtMDUtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEFzIG9yaWdpbmFsbHkgcmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxz
c29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nv
bm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAKaW5kZXggZGVkZTBhMS4uNjgzODYwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
CkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdh
bGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksNiArOTAsMzkg
QEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9hdHRhY2htZW50Q291bnQ7CiB9OwogCitjbGFzcyBB
dHRhY2htZW50SW5mbyB7CitwdWJsaWM6CisgICAgQXR0YWNobWVudEluZm8oKQorICAgICAgICA6
IG1fdHlwZShBdHRhY2htZW50OjpVbmluaXRpYWxpemVkKQorICAgICAgICAsIG1fc2l6ZSgwKQor
ICAgICAgICAsIG1faXNOdWxsKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldFR5
cGUoQXR0YWNobWVudDo6VHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7IH0KKyAgICBBdHRhY2ht
ZW50OjpUeXBlIGdldFR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIHNldFNpemUo
c2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEF0dGFjaG1lbnQ6
Ok1hcHBlZE1lbW9yeVR5cGUpOworICAgICAgICBtX3NpemUgPSBzaXplOworICAgIH0KKworICAg
IHNpemVfdCBnZXRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQXR0YWNo
bWVudDo6TWFwcGVkTWVtb3J5VHlwZSk7CisgICAgICAgIHJldHVybiBtX3NpemU7CisgICAgfQor
CisgICAgLy8gVGhlIGF0dGFjaG1lbnQgaXMgbm90IG51bGwgdW5sZXNzIGV4cGxpY2l0bHkgc2V0
LgorICAgIHZvaWQgc2V0TnVsbCgpIHsgbV9pc051bGwgPSB0cnVlOyB9CisgICAgYm9vbCBpc051
bGwoKSB7IHJldHVybiBtX2lzTnVsbDsgfQorCitwcml2YXRlOgorICAgIEF0dGFjaG1lbnQ6OlR5
cGUgbV90eXBlOworICAgIHNpemVfdCBtX3NpemU7CisgICAgYm9vbCBtX2lzTnVsbDsKK307CisK
IHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKICAgICBtX3NvY2tldERlc2NyaXB0b3IgPSBpZGVudGlmaWVyOwpAQCAtMTgxLDcgKzIx
NSw2IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcigpCiAgICAgbWVzc2FnZS5t
c2dfaW92ID0gaW92OwogICAgIG1lc3NhZ2UubXNnX2lvdmxlbiA9IDE7CiAKLQogICAgIGludCBt
ZXNzYWdlTGVuZ3RoID0gMDsKICAgICB3aGlsZSAoKG1lc3NhZ2VMZW5ndGggPSByZWN2bXNnKG1f
c29ja2V0RGVzY3JpcHRvciwgJm1lc3NhZ2UsIDApKSA9PSAtMSkgewogICAgICAgICBpZiAoZXJy
bm8gIT0gRUlOVFIpCkBAIC0xOTQsMjggKzIyNywzOSBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWR5
UmVhZEhhbmRsZXIoKQogICAgIHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2VEYXRhID0gbV9yZWFkQnVm
ZmVyLmRhdGEoKTsKIAogICAgIG1lbWNweSgmbWVzc2FnZUluZm8sIG1lc3NhZ2VEYXRhLCBzaXpl
b2YobWVzc2FnZUluZm8pKTsKLSAgICBBU1NFUlQobWVzc2FnZUxlbmd0aCA9PSBzaXplb2YobWVz
c2FnZUluZm8pICsgbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCkgKiBzaXplb2Yoc2l6ZV90
KSArIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5T09MKCkgPyAwIDogbWVzc2FnZUluZm8uYm9k
eVNpemUoKSkpOwotCisgICAgQVNTRVJUKG1lc3NhZ2VMZW5ndGggPT0gc2l6ZW9mKG1lc3NhZ2VJ
bmZvKSArIG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpICogc2l6ZW9mKEF0dGFjaG1lbnRJ
bmZvKSArIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5T09MKCkgPyAwIDogbWVzc2FnZUluZm8u
Ym9keVNpemUoKSkpOwogICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihtZXNzYWdlSW5mbyk7CiAK
ICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG9vbE1lc3NhZ2VCb2R5OwogCiAgICAg
aWYgKG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpKSB7Ci0gICAgICAgIGlmIChjb250cm9s
TWVzc2FnZSAmJiBjb250cm9sTWVzc2FnZS0+Y21zZ19sZXZlbCA9PSBTT0xfU09DS0VUICYmIGNv
bnRyb2xNZXNzYWdlLT5jbXNnX3R5cGUgPT0gU0NNX1JJR0hUUykgewotICAgICAgICAgICAgT3du
QXJyYXlQdHI8c2l6ZV90PiBhdHRhY2htZW50U2l6ZXMgPSBhZG9wdEFycmF5UHRyKG5ldyBzaXpl
X3RbbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCldKTsKLSAgICAgICAgICAgIG1lbWNweShh
dHRhY2htZW50U2l6ZXMuZ2V0KCksIG1lc3NhZ2VEYXRhLCBzaXplb2Yoc2l6ZV90KSAqIG1lc3Nh
Z2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpKTsKLQotICAgICAgICAgICAgbWVzc2FnZURhdGEgKz0g
c2l6ZW9mKGF0dGFjaG1lbnRTaXplcyk7Ci0KLSAgICAgICAgICAgIE93bkFycmF5UHRyPGludD4g
ZmlsZURlc2NyaXB0b3JzID0gYWRvcHRBcnJheVB0cihuZXcgaW50W21lc3NhZ2VJbmZvLmF0dGFj
aG1lbnRDb3VudCgpXSk7Ci0gICAgICAgICAgICBtZW1jcHkoZmlsZURlc2NyaXB0b3JzLmdldCgp
LCBDTVNHX0RBVEEoY29udHJvbE1lc3NhZ2UpLCBzaXplb2YoaW50KSAqIG1lc3NhZ2VJbmZvLmF0
dGFjaG1lbnRDb3VudCgpKTsKKyAgICAgICAgc2l6ZV90IGF0dGFjaG1lbnRDb3VudCA9IG1lc3Nh
Z2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpOworCisgICAgICAgIE93bkFycmF5UHRyPEF0dGFjaG1l
bnRJbmZvPiBhdHRhY2htZW50SW5mbyA9IGFkb3B0QXJyYXlQdHIobmV3IEF0dGFjaG1lbnRJbmZv
W2F0dGFjaG1lbnRDb3VudF0pOworICAgICAgICBtZW1jcHkoYXR0YWNobWVudEluZm8uZ2V0KCks
IG1lc3NhZ2VEYXRhLCBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVudENvdW50KTsK
KyAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFjaG1l
bnRDb3VudDsKKworICAgICAgICBzaXplX3QgYXR0YWNobWVudEZpbGVEZXNjcmlwdG9yQ291bnQg
PSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRDb3VudDsgKytp
KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnRJbmZvW2ldLmdldFR5cGUoKSkgewor
ICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpNYXBwZWRNZW1vcnlUeXBlOgorICAgICAgICAg
ICAgY2FzZSBBdHRhY2htZW50OjpTb2NrZXRUeXBlOgorICAgICAgICAgICAgICAgIGlmICghYXR0
YWNobWVudEluZm9baV0uaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRG
aWxlRGVzY3JpcHRvckNvdW50Kys7CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnQ6OlVuaW5p
dGlhbGl6ZWQ6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAKLSAgICAgICAgICAgIGludCBhdHRhY2htZW50Q291
bnQgPSBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQoKTsKKyAgICAgICAgT3duQXJyYXlQdHI8
aW50PiBmaWxlRGVzY3JpcHRvcnMgPSBhZG9wdEFycmF5UHRyKG5ldyBpbnRbYXR0YWNobWVudEZp
bGVEZXNjcmlwdG9yQ291bnRdKTsKKyAgICAgICAgaWYgKGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRv
ckNvdW50ICYmIGNvbnRyb2xNZXNzYWdlICYmIGNvbnRyb2xNZXNzYWdlLT5jbXNnX2xldmVsID09
IFNPTF9TT0NLRVQgJiYgY29udHJvbE1lc3NhZ2UtPmNtc2dfdHlwZSA9PSBTQ01fUklHSFRTKSB7
CisgICAgICAgICAgICBtZW1jcHkoZmlsZURlc2NyaXB0b3JzLmdldCgpLCBDTVNHX0RBVEEoY29u
dHJvbE1lc3NhZ2UpLCBzaXplb2YoaW50KSAqIGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50
KTsKIAogICAgICAgICAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSkKLSAg
ICAgICAgICAgICAgICBhdHRhY2htZW50Q291bnQtLTsKKyAgICAgICAgICAgICAgICBhdHRhY2ht
ZW50RmlsZURlc2NyaXB0b3JDb3VudC0tOwogCi0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGF0dGFjaG1lbnRDb3VudDsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50OyArK2kpIHsKICAgICAgICAgICAg
ICAgICB3aGlsZSAoZmNudGwoZmlsZURlc2NyaXB0b3JzW2ldLCBGX1NFVEZMLCBGRF9DTE9FWEVD
KSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjIzLDMxICsy
NjcsNTMgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyKCkKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNvbnRyb2xNZXNzYWdlID0gQ01TR19OWFRIRFIoJm1lc3NhZ2UsIGNvbnRyb2xNZXNzYWdlKTsK
KyAgICAgICAgfQogCi0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dGFjaG1lbnRD
b3VudDsgKytpKQotICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50
KGZpbGVEZXNjcmlwdG9yc1tpXSwgYXR0YWNobWVudFNpemVzW2ldKSk7Ci0KLSAgICAgICAgICAg
IGlmIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5T09MKCkpIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQobWVzc2FnZUluZm8uYm9keVNpemUoKSk7Ci0KLSAgICAgICAgICAgICAgICBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgICAgICAgICBoYW5kbGUuYWRv
cHRGcm9tQXR0YWNobWVudChmaWxlRGVzY3JpcHRvcnNbYXR0YWNobWVudENvdW50XSwgYXR0YWNo
bWVudFNpemVzW2F0dGFjaG1lbnRDb3VudF0pOwotICAgICAgICAgICAgICAgIGlmIChoYW5kbGUu
aXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVz
c2FnZUJvZHlPT0woKSkKKyAgICAgICAgICAgIGF0dGFjaG1lbnRDb3VudC0tOworCisgICAgICAg
IHNpemVfdCBmZEluZGV4ID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRh
Y2htZW50Q291bnQ7ICsraSkgeworICAgICAgICAgICAgaW50IGZkID0gLTE7CisgICAgICAgICAg
ICBzd2l0Y2ggKGF0dGFjaG1lbnRJbmZvW2ldLmdldFR5cGUoKSkgeworICAgICAgICAgICAgY2Fz
ZSBBdHRhY2htZW50OjpNYXBwZWRNZW1vcnlUeXBlOgorICAgICAgICAgICAgICAgIGlmICghYXR0
YWNobWVudEluZm9baV0uaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZp
bGVEZXNjcmlwdG9ycyk7CisgICAgICAgICAgICAgICAgICAgIGZkID0gZmlsZURlc2NyaXB0b3Jz
W2ZkSW5kZXgrK107CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgb29sTWVz
c2FnZUJvZHkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlKGhhbmRsZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKLSAgICAgICAgICAgICAgICBpZiAoIW9vbE1lc3NhZ2VC
b2R5KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5k
KEF0dGFjaG1lbnQoZmQsIGF0dGFjaG1lbnRJbmZvW2ldLmdldFNpemUoKSkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpTb2NrZXRUeXBlOgor
ICAgICAgICAgICAgICAgIGlmICghYXR0YWNobWVudEluZm9baV0uaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGZpbGVEZXNjcmlwdG9ycyk7CisgICAgICAgICAgICAgICAg
ICAgIGZkID0gZmlsZURlc2NyaXB0b3JzW2ZkSW5kZXgrK107CiAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGZkKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnQ6OlVuaW5pdGlh
bGl6ZWQ6CisgICAgICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKEF0dGFjaG1lbnQoKSk7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQorICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbnRyb2xNZXNzYWdlID0gQ01TR19OWFRI
RFIoJm1lc3NhZ2UsIGNvbnRyb2xNZXNzYWdlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAobWVzc2FnZUluZm8uaXNNZXNzYWdlQm9keU9PTCgpKSB7CisgICAgICAgICAgICBBU1NFUlQo
bWVzc2FnZUluZm8uYm9keVNpemUoKSk7CisKKyAgICAgICAgICAgIGlmIChhdHRhY2htZW50SW5m
b1thdHRhY2htZW50Q291bnRdLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAg
ICAgIGhhbmRsZS5hZG9wdEZyb21BdHRhY2htZW50KGZpbGVEZXNjcmlwdG9yc1thdHRhY2htZW50
RmlsZURlc2NyaXB0b3JDb3VudF0sIGF0dGFjaG1lbnRJbmZvW2F0dGFjaG1lbnRDb3VudF0uZ2V0
U2l6ZSgpKTsKKworICAgICAgICAgICAgb29sTWVzc2FnZUJvZHkgPSBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6Y3JlYXRlKGhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKKyAg
ICAgICAgICAgIGlmICghb29sTWVzc2FnZUJvZHkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTMyMCw3ICszODYsNyBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVu
dEVuYwogICAgIH0KIAogICAgIE1lc3NhZ2VJbmZvIG1lc3NhZ2VJbmZvKG1lc3NhZ2VJRCwgYXJn
dW1lbnRzLT5idWZmZXJTaXplKCksIGF0dGFjaG1lbnRzLnNpemUoKSk7Ci0gICAgc2l6ZV90IG1l
c3NhZ2VTaXplV2l0aEJvZHlJbmxpbmUgPSBzaXplb2YobWVzc2FnZUluZm8pICsgKGF0dGFjaG1l
bnRzLnNpemUoKSAqIHNpemVvZihzaXplX3QpKSArIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpOwor
ICAgIHNpemVfdCBtZXNzYWdlU2l6ZVdpdGhCb2R5SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZv
KSArIChhdHRhY2htZW50cy5zaXplKCkgKiBzaXplb2YoQXR0YWNobWVudEluZm8pKSArIGFyZ3Vt
ZW50cy0+YnVmZmVyU2l6ZSgpOwogICAgIGlmIChtZXNzYWdlU2l6ZVdpdGhCb2R5SW5saW5lID4g
bWVzc2FnZU1heFNpemUgJiYgYXJndW1lbnRzLT5idWZmZXJTaXplKCkpIHsKICAgICAgICAgUmVm
UHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBvb2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpjcmVhdGUoYXJndW1lbnRzLT5idWZmZXJTaXplKCkpOwogICAgICAgICBpZiAoIW9v
bE1lc3NhZ2VCb2R5KQpAQCAtMzQ5LDI4ICs0MTUsNTUgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5k
T3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRF
bmMKICAgICBpb3ZbMF0uaW92X2Jhc2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmbWVzc2Fn
ZUluZm8pOwogICAgIGlvdlswXS5pb3ZfbGVuID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKTsKIAotICAg
IE93bkFycmF5UHRyPGNoYXI+IGF0dGFjaG1lbnRGREJ1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3
IGNoYXJbQ01TR19TUEFDRShzaXplb2YoaW50KSAqIGF0dGFjaG1lbnRzLnNpemUoKSldKTsKLSAg
ICBPd25BcnJheVB0cjxzaXplX3Q+IGF0dGFjaG1lbnRTaXplcyA9IGFkb3B0QXJyYXlQdHIobmV3
IHNpemVfdFthdHRhY2htZW50cy5zaXplKCldKTsKKyAgICBPd25BcnJheVB0cjxBdHRhY2htZW50
SW5mbz4gYXR0YWNobWVudEluZm8gPSBhZG9wdEFycmF5UHRyKG5ldyBBdHRhY2htZW50SW5mb1th
dHRhY2htZW50cy5zaXplKCldKTsKIAorICAgIHNpemVfdCBhdHRhY2htZW50RkRCdWZmZXJMZW5n
dGggPSAwOwogICAgIGlmICghYXR0YWNobWVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1lc3Nh
Z2UubXNnX2NvbnRyb2wgPSBhdHRhY2htZW50RkRCdWZmZXIuZ2V0KCk7Ci0gICAgICAgIG1lc3Nh
Z2UubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY2hhcikgKiBDTVNHX1NQQUNFKHNpemVvZihpbnQp
ICogYXR0YWNobWVudHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
dHRhY2htZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRzW2ld
LmZpbGVEZXNjcmlwdG9yKCkgIT0gLTEpCisgICAgICAgICAgICAgICAgYXR0YWNobWVudEZEQnVm
ZmVyTGVuZ3RoKys7CisgICAgICAgIH0KKyAgICB9CisgICAgT3duQXJyYXlQdHI8aW50PiBhdHRh
Y2htZW50RkRCdWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBpbnRbYXR0YWNobWVudEZEQnVmZmVy
TGVuZ3RoXSk7CiAKLSAgICAgICAgc3RydWN0IGNtc2doZHIqIGNtc2cgPSBDTVNHX0ZJUlNUSERS
KCZtZXNzYWdlKTsKLSAgICAgICAgY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7Ci0gICAg
ICAgIGNtc2ctPmNtc2dfdHlwZSA9IFNDTV9SSUdIVFM7Ci0gICAgICAgIGNtc2ctPmNtc2dfbGVu
ID0gQ01TR19MRU4oc2l6ZW9mKGludCkgKiBhdHRhY2htZW50cy5zaXplKCkpOworICAgIGlmICgh
YXR0YWNobWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGludCogZmRQdHIgPSAwOwogCi0gICAg
ICAgIGludCogZmRwdHIgPSByZWludGVycHJldF9jYXN0PGludCo+KENNU0dfREFUQShjbXNnKSk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0YWNobWVudHMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIGF0dGFjaG1lbnRTaXplc1tpXSA9IGF0dGFjaG1lbnRzW2ldLnNpemUo
KTsKLSAgICAgICAgICAgIGZkcHRyW2ldID0gYXR0YWNobWVudHNbaV0uZmlsZURlc2NyaXB0b3Io
KTsKKyAgICAgICAgaWYgKGF0dGFjaG1lbnRGREJ1ZmZlckxlbmd0aCkgeworICAgICAgICAgICAg
bWVzc2FnZS5tc2dfY29udHJvbCA9IGF0dGFjaG1lbnRGREJ1ZmZlci5nZXQoKTsKKyAgICAgICAg
ICAgIG1lc3NhZ2UubXNnX2NvbnRyb2xsZW4gPSBDTVNHX1NQQUNFKHNpemVvZihpbnQpICogYXR0
YWNobWVudEZEQnVmZmVyTGVuZ3RoKTsKKworICAgICAgICAgICAgc3RydWN0IGNtc2doZHIqIGNt
c2cgPSBDTVNHX0ZJUlNUSERSKCZtZXNzYWdlKTsKKyAgICAgICAgICAgIGNtc2ctPmNtc2dfbGV2
ZWwgPSBTT0xfU09DS0VUOworICAgICAgICAgICAgY21zZy0+Y21zZ190eXBlID0gU0NNX1JJR0hU
UzsKKyAgICAgICAgICAgIGNtc2ctPmNtc2dfbGVuID0gbWVzc2FnZS5tc2dfY29udHJvbGxlbjsK
KworICAgICAgICAgICAgZmRQdHIgPSByZWludGVycHJldF9jYXN0PGludCo+KENNU0dfREFUQShj
bXNnKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtZXNzYWdlLm1zZ19jb250cm9sbGVuID0gY21z
Zy0+Y21zZ19sZW47CisgICAgICAgIGludCBmZEluZGV4ID0gMDsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhdHRhY2htZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYXR0
YWNobWVudEluZm9baV0uc2V0VHlwZShhdHRhY2htZW50c1tpXS50eXBlKCkpOworCisgICAgICAg
ICAgICBzd2l0Y2ggKGF0dGFjaG1lbnRzW2ldLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBB
dHRhY2htZW50OjpNYXBwZWRNZW1vcnlUeXBlOgorICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRJ
bmZvW2ldLnNldFNpemUoYXR0YWNobWVudHNbaV0uc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAv
LyBGYWxsIHRyaG91Z2gsIHNldCBmaWxlIGRlc2NyaXB0b3Igb3IgbnVsbC4KKyAgICAgICAgICAg
IGNhc2UgQXR0YWNobWVudDo6U29ja2V0VHlwZToKKyAgICAgICAgICAgICAgICBpZiAoYXR0YWNo
bWVudHNbaV0uZmlsZURlc2NyaXB0b3IoKSAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoZmRQdHIpOworICAgICAgICAgICAgICAgICAgICBmZFB0cltmZEluZGV4KytdID0gYXR0
YWNobWVudHNbaV0uZmlsZURlc2NyaXB0b3IoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgYXR0YWNobWVudEluZm9baV0uc2V0TnVsbCgpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpVbmluaXRpYWxpemVk
OgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgIGlvdltpb3ZMZW5ndGhdLmlvdl9iYXNlID0gYXR0
YWNobWVudFNpemVzLmdldCgpOwotICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfbGVuID0gc2l6
ZW9mKHNpemVfdCkgKiBhdHRhY2htZW50cy5zaXplKCk7CisgICAgICAgIGlvdltpb3ZMZW5ndGhd
Lmlvdl9iYXNlID0gYXR0YWNobWVudEluZm8uZ2V0KCk7CisgICAgICAgIGlvdltpb3ZMZW5ndGhd
Lmlvdl9sZW4gPSBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVudHMuc2l6ZSgpOwog
ICAgICAgICArK2lvdkxlbmd0aDsKICAgICB9CiAK
</data>
<flag name="commit-queue"
          id="87316"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96078</attachid>
            <date>2011-06-06 05:30:45 -0700</date>
            <delta_ts>2011-06-23 03:15:04 -0700</delta_ts>
            <desc>Updated patch to current git master</desc>
            <filename>wk2-null-handles3.diff</filename>
            <type>text/plain</type>
            <size>11902</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5ZDk1OTQxLi40MjAzNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzMg
QEAKIDIwMTEtMDYtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtVTklY
XSBBbGxvdyBzZW5kaW5nIG51bGwgaGFuZGxlcyBpbiBtZXNzYWdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2MjEKKworICAgICAgICBPbmx5IHZh
bGlkIGZpbGUgZGVzY3JpcHRvcnMgYXJlIG5vdyBzZW50IHVzaW5nIHNlbmRtc2coKSBjb250cm9s
CisgICAgICAgIG1lc3NhZ2VzLCBhbmQgaW5zdGVhZCBvZiBzZW5kaW5nIGEgbGlzdCBvZiBhdHRh
Y2htZW50IHNpemVzIHdlIG5vdworICAgICAgICBzZW5kIGEgbGlzdCBvZiBBdHRhY2htZW50SW5m
byBzdHJ1Y3RzLiBBdHRhY2htZW50SW5mbyBjb250YWlucworICAgICAgICBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgYXR0YWNobWVudHMgaW5jbHVkaW5nIHRoZSBzaXplIGZvcgorICAgICAgICBNYXBw
ZWRNZW1vcnkgYXR0YWNobWVucyBhbmQgd2hldGhlciB0aGUgYXR0YWNobWVudCBpcyBudWxsIG9y
IG5vdC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHA6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5mbzo6QXR0YWNobWVudEluZm8pOiBO
ZXcgY2xhc3MgY29udGFpbmluZworICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXR0YWNo
bWVudHMgc2VudC4KKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnRJbmZvOjpzZXRUeXBlKTog
U2V0IHRoZSBhdHRhY2htZW50IHR5cGUuCisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5m
bzo6Z2V0VHlwZSk6IFJldHVybiB0aGUgYXR0YWNobWVudCB0eXBlLgorICAgICAgICAoQ29yZUlQ
Qzo6QXR0YWNobWVudEluZm86OnNldFNpemUpOiBTZXQgdGhlIHNpemUgZm9yIE1hcHBlZE1lbW9y
eSBhdHRhY2htZW50cy4KKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnRJbmZvOjpnZXRTaXpl
KTogR2V0IHRoZSBzaXplIGZvciBNYXBwZWRNZW1vcnkgYXR0YWNobWVudHMuCisgICAgICAgIChD
b3JlSVBDOjpBdHRhY2htZW50SW5mbzo6c2V0TnVsbCk6IFNldCBhdHRhY2htZW50IGFzIG51bGws
IGl0CisgICAgICAgIGNvbnRhaW5zIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLCBzbyB0aGUg
cmVjZWl2ZXIgc2hvdWxkbid0CisgICAgICAgIGV4cGVjdCBhIGZpbGUgZGVzcmlwdG9yIGZvciB0
aGlzIGF0dGFjaG1lbnQuCisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5mbzo6aXNOdWxs
KTogUmV0dXJuIHdoZXRoZXIgYXR0YWNobWVudCBpcworICAgICAgICBudWxsLCBpdCBjb250YWlu
cyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OnByb2Nlc3NNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRP
dXRnb2luZ01lc3NhZ2UpOgorCisyMDExLTA2LTA2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24u
CiAKICAgICAgICAgW1VOSVhdIFNPQ0tfREdSQU0gc29ja2V0cyBhcmUgbm90IG5vdGlmaWVkIHdo
ZW4gdGhlIG90aGVyIGVuZCBjbG9zZXMgdGhlIGNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4
IDgwMmNhYWUuLjIyNDIzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTg5LDYgKzkwLDM5IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90
IG1fYXR0YWNobWVudENvdW50OwogfTsKIAorY2xhc3MgQXR0YWNobWVudEluZm8geworcHVibGlj
OgorICAgIEF0dGFjaG1lbnRJbmZvKCkKKyAgICAgICAgOiBtX3R5cGUoQXR0YWNobWVudDo6VW5p
bml0aWFsaXplZCkKKyAgICAgICAgLCBtX3NpemUoMCkKKyAgICAgICAgLCBtX2lzTnVsbChmYWxz
ZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRUeXBlKEF0dGFjaG1lbnQ6OlR5cGUgdHlw
ZSkgeyBtX3R5cGUgPSB0eXBlOyB9CisgICAgQXR0YWNobWVudDo6VHlwZSBnZXRUeXBlKCkgeyBy
ZXR1cm4gbV90eXBlOyB9CisgICAgdm9pZCBzZXRTaXplKHNpemVfdCBzaXplKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBdHRhY2htZW50OjpNYXBwZWRNZW1vcnlUeXBlKTsKKyAg
ICAgICAgbV9zaXplID0gc2l6ZTsKKyAgICB9CisKKyAgICBzaXplX3QgZ2V0U2l6ZSgpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IEF0dGFjaG1lbnQ6Ok1hcHBlZE1lbW9yeVR5cGUp
OworICAgICAgICByZXR1cm4gbV9zaXplOworICAgIH0KKworICAgIC8vIFRoZSBhdHRhY2htZW50
IGlzIG5vdCBudWxsIHVubGVzcyBleHBsaWNpdGx5IHNldC4KKyAgICB2b2lkIHNldE51bGwoKSB7
IG1faXNOdWxsID0gdHJ1ZTsgfQorICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gbV9pc051bGw7
IH0KKworcHJpdmF0ZToKKyAgICBBdHRhY2htZW50OjpUeXBlIG1fdHlwZTsKKyAgICBzaXplX3Qg
bV9zaXplOworICAgIGJvb2wgbV9pc051bGw7Cit9OworCiB2b2lkIENvbm5lY3Rpb246OnBsYXRm
b3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgbV9zb2NrZXREZXNj
cmlwdG9yID0gaWRlbnRpZmllcjsKQEAgLTE2OSw3ICsyMDMsNyBAQCBib29sIENvbm5lY3Rpb246
OnByb2Nlc3NNZXNzYWdlKCkKICAgICBtZW1jcHkoJm1lc3NhZ2VJbmZvLCBtZXNzYWdlRGF0YSwg
c2l6ZW9mKG1lc3NhZ2VJbmZvKSk7CiAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKG1lc3NhZ2VJ
bmZvKTsKIAotICAgIHNpemVfdCBtZXNzYWdlTGVuZ3RoID0gc2l6ZW9mKE1lc3NhZ2VJbmZvKSAr
IG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpICogc2l6ZW9mKHNpemVfdCkgKyAobWVzc2Fn
ZUluZm8uaXNNZXNzYWdlQm9keU9PTCgpID8gMCA6IG1lc3NhZ2VJbmZvLmJvZHlTaXplKCkpOwor
ICAgIHNpemVfdCBtZXNzYWdlTGVuZ3RoID0gc2l6ZW9mKE1lc3NhZ2VJbmZvKSArIG1lc3NhZ2VJ
bmZvLmF0dGFjaG1lbnRDb3VudCgpICogc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSArIChtZXNzYWdl
SW5mby5pc01lc3NhZ2VCb2R5T09MKCkgPyAwIDogbWVzc2FnZUluZm8uYm9keVNpemUoKSk7CiAg
ICAgaWYgKG1fcmVhZEJ1ZmZlclNpemUgPCBtZXNzYWdlTGVuZ3RoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTE3NywyOCArMjExLDY0IEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01l
c3NhZ2UoKQogICAgIEF0dGFjaG1lbnRSZXNvdXJjZUd1YXJkPERlcXVlPEF0dGFjaG1lbnQ+LCBE
ZXF1ZTxBdHRhY2htZW50Pjo6aXRlcmF0b3I+IGF0dGFjaGVtZW50RGlzcG9zZXIoYXR0YWNobWVu
dHMpOwogICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gb29sTWVzc2FnZUJvZHk7CiAK
LSAgICBpbnQgYXR0YWNobWVudENvdW50ID0gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCk7
CisgICAgc2l6ZV90IGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50ID0gMDsKKyAgICBzaXpl
X3QgYXR0YWNobWVudENvdW50ID0gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCk7CiAgICAg
aWYgKGF0dGFjaG1lbnRDb3VudCkgewotICAgICAgICBPd25BcnJheVB0cjxzaXplX3Q+IGF0dGFj
aG1lbnRTaXplcyA9IGFkb3B0QXJyYXlQdHIobmV3IHNpemVfdFthdHRhY2htZW50Q291bnRdKTsK
LSAgICAgICAgbWVtY3B5KGF0dGFjaG1lbnRTaXplcy5nZXQoKSwgbWVzc2FnZURhdGEsIHNpemVv
ZihzaXplX3QpICogYXR0YWNobWVudENvdW50KTsKLSAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6
ZW9mKHNpemVfdCkgKiBhdHRhY2htZW50Q291bnQ7CisgICAgICAgIE93bkFycmF5UHRyPEF0dGFj
aG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbyA9IGFkb3B0QXJyYXlQdHIobmV3IEF0dGFjaG1lbnRJ
bmZvW2F0dGFjaG1lbnRDb3VudF0pOworICAgICAgICBtZW1jcHkoYXR0YWNobWVudEluZm8uZ2V0
KCksIG1lc3NhZ2VEYXRhLCBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVudENvdW50
KTsKKyAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFj
aG1lbnRDb3VudDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRD
b3VudDsgKytpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnRJbmZvW2ldLmdldFR5
cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpNYXBwZWRNZW1vcnlUeXBlOgor
ICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpTb2NrZXRUeXBlOgorICAgICAgICAgICAgICAg
IGlmICghYXR0YWNobWVudEluZm9baV0uaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIGF0
dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50Kys7CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1l
bnQ6OlVuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgaWYgKG1lc3NhZ2VJ
bmZvLmlzTWVzc2FnZUJvZHlPT0woKSkKICAgICAgICAgICAgIGF0dGFjaG1lbnRDb3VudC0tOwog
Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0YWNobWVudENvdW50OyArK2kpCi0gICAg
ICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoQXR0YWNobWVudChtX2ZpbGVEZXNjcmlwdG9yc1tp
XSwgYXR0YWNobWVudFNpemVzW2ldKSk7CisgICAgICAgIHNpemVfdCBmZEluZGV4ID0gMDsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRhY2htZW50Q291bnQ7ICsraSkgeworICAg
ICAgICAgICAgaW50IGZkID0gLTE7CisgICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnRJbmZv
W2ldLmdldFR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpNYXBwZWRNZW1v
cnlUeXBlOgorICAgICAgICAgICAgICAgIGlmICghYXR0YWNobWVudEluZm9baV0uaXNOdWxsKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZpbGVEZXNjcmlwdG9ycyk7CisgICAgICAg
ICAgICAgICAgICAgIGZkID0gbV9maWxlRGVzY3JpcHRvcnNbZmRJbmRleCsrXTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKEF0dGFjaG1lbnQo
ZmQsIGF0dGFjaG1lbnRJbmZvW2ldLmdldFNpemUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpTb2NrZXRUeXBlOgorICAgICAgICAgICAg
ICAgIGlmICghYXR0YWNobWVudEluZm9baV0uaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGZpbGVEZXNjcmlwdG9ycyk7CisgICAgICAgICAgICAgICAgICAgIGZkID0gbV9m
aWxlRGVzY3JpcHRvcnNbZmRJbmRleCsrXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYXR0YWNobWVudHMuYXBwZW5kKEF0dGFjaG1lbnQoZmQpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudDo6VW5pbml0aWFsaXplZDoKKyAg
ICAgICAgICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoQXR0YWNobWVudCgpKTsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KIAogICAgICAgICBpZiAobWVzc2FnZUluZm8uaXNNZXNzYWdlQm9keU9PTCgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQobWVzc2FnZUluZm8uYm9keVNpemUoKSk7CiAKLSAgICAgICAgICAg
IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwotICAgICAgICAgICAgaGFuZGxl
LmFkb3B0RnJvbUF0dGFjaG1lbnQobV9maWxlRGVzY3JpcHRvcnNbYXR0YWNobWVudENvdW50XSwg
YXR0YWNobWVudFNpemVzW2F0dGFjaG1lbnRDb3VudF0pOwotICAgICAgICAgICAgaWYgKGhhbmRs
ZS5pc051bGwoKSkgeworICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRJbmZvW2F0dGFjaG1lbnRD
b3VudF0uaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAg
ICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICAgICAgaGFu
ZGxlLmFkb3B0RnJvbUF0dGFjaG1lbnQobV9maWxlRGVzY3JpcHRvcnNbYXR0YWNobWVudEZpbGVE
ZXNjcmlwdG9yQ291bnQgLSAxXSwgYXR0YWNobWVudEluZm9bYXR0YWNobWVudENvdW50XS5nZXRT
aXplKCkpOworCiAgICAgICAgICAgICBvb2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpjcmVhdGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOwogICAg
ICAgICAgICAgaWYgKCFvb2xNZXNzYWdlQm9keSkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMjI3LDkgKzI5Nyw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vz
c01lc3NhZ2UoKQogICAgIH0gZWxzZQogICAgICAgICBtX3JlYWRCdWZmZXJTaXplID0gMDsKIAot
ICAgIGlmIChtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQoKSkgewotICAgICAgICBpZiAobV9m
aWxlRGVzY3JpcHRvcnNTaXplID4gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCkpIHsKLSAg
ICAgICAgICAgIHNpemVfdCBmaWxlRGVzY3JpcHRvcnNMZW5ndGggPSBtZXNzYWdlSW5mby5hdHRh
Y2htZW50Q291bnQoKSAqIHNpemVvZihpbnQpOworICAgIGlmIChhdHRhY2htZW50RmlsZURlc2Ny
aXB0b3JDb3VudCkgeworICAgICAgICBpZiAobV9maWxlRGVzY3JpcHRvcnNTaXplID4gYXR0YWNo
bWVudEZpbGVEZXNjcmlwdG9yQ291bnQpIHsKKyAgICAgICAgICAgIHNpemVfdCBmaWxlRGVzY3Jp
cHRvcnNMZW5ndGggPSBhdHRhY2htZW50RmlsZURlc2NyaXB0b3JDb3VudCAqIHNpemVvZihpbnQp
OwogICAgICAgICAgICAgbWVtbW92ZShtX2ZpbGVEZXNjcmlwdG9ycy5kYXRhKCksIG1fZmlsZURl
c2NyaXB0b3JzLmRhdGEoKSArIGZpbGVEZXNjcmlwdG9yc0xlbmd0aCwgbV9maWxlRGVzY3JpcHRv
cnNTaXplIC0gZmlsZURlc2NyaXB0b3JzTGVuZ3RoKTsKICAgICAgICAgICAgIG1fZmlsZURlc2Ny
aXB0b3JzU2l6ZSAtPSBmaWxlRGVzY3JpcHRvcnNMZW5ndGg7CiAgICAgICAgIH0gZWxzZQpAQCAt
Mzg3LDcgKzQ1Nyw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNz
YWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAgfQogCiAgICAgTWVz
c2FnZUluZm8gbWVzc2FnZUluZm8obWVzc2FnZUlELCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSwg
YXR0YWNobWVudHMuc2l6ZSgpKTsKLSAgICBzaXplX3QgbWVzc2FnZVNpemVXaXRoQm9keUlubGlu
ZSA9IHNpemVvZihtZXNzYWdlSW5mbykgKyAoYXR0YWNobWVudHMuc2l6ZSgpICogc2l6ZW9mKHNp
emVfdCkpICsgYXJndW1lbnRzLT5idWZmZXJTaXplKCk7CisgICAgc2l6ZV90IG1lc3NhZ2VTaXpl
V2l0aEJvZHlJbmxpbmUgPSBzaXplb2YobWVzc2FnZUluZm8pICsgKGF0dGFjaG1lbnRzLnNpemUo
KSAqIHNpemVvZihBdHRhY2htZW50SW5mbykpICsgYXJndW1lbnRzLT5idWZmZXJTaXplKCk7CiAg
ICAgaWYgKG1lc3NhZ2VTaXplV2l0aEJvZHlJbmxpbmUgPiBtZXNzYWdlTWF4U2l6ZSAmJiBhcmd1
bWVudHMtPmJ1ZmZlclNpemUoKSkgewogICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWRNZW1v
cnk+IG9vbE1lc3NhZ2VCb2R5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZShhcmd1bWVu
dHMtPmJ1ZmZlclNpemUoKSk7CiAgICAgICAgIGlmICghb29sTWVzc2FnZUJvZHkpCkBAIC00MTYs
MjggKzQ4Niw1NiBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogICAgIGlvdlswXS5pb3ZfYmFz
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZtZXNzYWdlSW5mbyk7CiAgICAgaW92WzBdLmlv
dl9sZW4gPSBzaXplb2YobWVzc2FnZUluZm8pOwogCi0gICAgT3duQXJyYXlQdHI8Y2hhcj4gYXR0
YWNobWVudEZEQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgY2hhcltDTVNHX1NQQUNFKHNpemVv
ZihpbnQpICogYXR0YWNobWVudHMuc2l6ZSgpKV0pOwotICAgIE93bkFycmF5UHRyPHNpemVfdD4g
YXR0YWNobWVudFNpemVzID0gYWRvcHRBcnJheVB0cihuZXcgc2l6ZV90W2F0dGFjaG1lbnRzLnNp
emUoKV0pOworICAgIE93bkFycmF5UHRyPEF0dGFjaG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbyA9
IGFkb3B0QXJyYXlQdHIobmV3IEF0dGFjaG1lbnRJbmZvW2F0dGFjaG1lbnRzLnNpemUoKV0pOwog
CisgICAgc2l6ZV90IGF0dGFjaG1lbnRGREJ1ZmZlckxlbmd0aCA9IDA7CiAgICAgaWYgKCFhdHRh
Y2htZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbWVzc2FnZS5tc2dfY29udHJvbCA9IGF0dGFj
aG1lbnRGREJ1ZmZlci5nZXQoKTsKLSAgICAgICAgbWVzc2FnZS5tc2dfY29udHJvbGxlbiA9IHNp
emVvZihjaGFyKSAqIENNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBhdHRhY2htZW50cy5zaXplKCkp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBpZiAoYXR0YWNobWVudHNbaV0uZmlsZURlc2NyaXB0b3IoKSAhPSAt
MSkKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50RkRCdWZmZXJMZW5ndGgrKzsKKyAgICAgICAg
fQorICAgIH0KKyAgICBPd25BcnJheVB0cjxpbnQ+IGF0dGFjaG1lbnRGREJ1ZmZlciA9IGFkb3B0
QXJyYXlQdHIobmV3IGludFthdHRhY2htZW50RkRCdWZmZXJMZW5ndGhdKTsKIAotICAgICAgICBz
dHJ1Y3QgY21zZ2hkciogY21zZyA9IENNU0dfRklSU1RIRFIoJm1lc3NhZ2UpOwotICAgICAgICBj
bXNnLT5jbXNnX2xldmVsID0gU09MX1NPQ0tFVDsKLSAgICAgICAgY21zZy0+Y21zZ190eXBlID0g
U0NNX1JJR0hUUzsKLSAgICAgICAgY21zZy0+Y21zZ19sZW4gPSBDTVNHX0xFTihzaXplb2YoaW50
KSAqIGF0dGFjaG1lbnRzLnNpemUoKSk7CisgICAgaWYgKCFhdHRhY2htZW50cy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaW50KiBmZFB0ciA9IDA7CiAKLSAgICAgICAgaW50KiBmZHB0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50Kj4oQ01TR19EQVRBKGNtc2cpKTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhdHRhY2htZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXR0YWNo
bWVudFNpemVzW2ldID0gYXR0YWNobWVudHNbaV0uc2l6ZSgpOwotICAgICAgICAgICAgZmRwdHJb
aV0gPSBhdHRhY2htZW50c1tpXS5maWxlRGVzY3JpcHRvcigpOworICAgICAgICBpZiAoYXR0YWNo
bWVudEZEQnVmZmVyTGVuZ3RoKSB7CisgICAgICAgICAgICBtZXNzYWdlLm1zZ19jb250cm9sID0g
YXR0YWNobWVudEZEQnVmZmVyLmdldCgpOworICAgICAgICAgICAgbWVzc2FnZS5tc2dfY29udHJv
bGxlbiA9IENNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBhdHRhY2htZW50RkRCdWZmZXJMZW5ndGgp
OworICAgICAgICAgICAgbWVtc2V0KG1lc3NhZ2UubXNnX2NvbnRyb2wsIDAsIG1lc3NhZ2UubXNn
X2NvbnRyb2xsZW4pOworCisgICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciogY21zZyA9IENNU0df
RklSU1RIRFIoJm1lc3NhZ2UpOworICAgICAgICAgICAgY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9T
T0NLRVQ7CisgICAgICAgICAgICBjbXNnLT5jbXNnX3R5cGUgPSBTQ01fUklHSFRTOworICAgICAg
ICAgICAgY21zZy0+Y21zZ19sZW4gPSBDTVNHX0xFTihzaXplb2YoaW50KSAqIGF0dGFjaG1lbnRG
REJ1ZmZlckxlbmd0aCk7CisKKyAgICAgICAgICAgIGZkUHRyID0gcmVpbnRlcnByZXRfY2FzdDxp
bnQqPihDTVNHX0RBVEEoY21zZykpOwogICAgICAgICB9CiAKLSAgICAgICAgbWVzc2FnZS5tc2df
Y29udHJvbGxlbiA9IGNtc2ctPmNtc2dfbGVuOworICAgICAgICBpbnQgZmRJbmRleCA9IDA7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0YWNobWVudHMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIGF0dGFjaG1lbnRJbmZvW2ldLnNldFR5cGUoYXR0YWNobWVudHNbaV0udHlw
ZSgpKTsKKworICAgICAgICAgICAgc3dpdGNoIChhdHRhY2htZW50c1tpXS50eXBlKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgQXR0YWNobWVudDo6TWFwcGVkTWVtb3J5VHlwZToKKyAgICAgICAgICAg
ICAgICBhdHRhY2htZW50SW5mb1tpXS5zZXRTaXplKGF0dGFjaG1lbnRzW2ldLnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgLy8gRmFsbCB0cmhvdWdoLCBzZXQgZmlsZSBkZXNjcmlwdG9yIG9yIG51
bGwuCisgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnQ6OlNvY2tldFR5cGU6CisgICAgICAgICAg
ICAgICAgaWYgKGF0dGFjaG1lbnRzW2ldLmZpbGVEZXNjcmlwdG9yKCkgIT0gLTEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGZkUHRyKTsKKyAgICAgICAgICAgICAgICAgICAgZmRQdHJb
ZmRJbmRleCsrXSA9IGF0dGFjaG1lbnRzW2ldLmZpbGVEZXNjcmlwdG9yKCk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRJbmZvW2ldLnNldE51
bGwoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVu
dDo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICAgICAgICBpb3ZbaW92TGVuZ3Ro
XS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRTaXplcy5nZXQoKTsKLSAgICAgICAgaW92W2lvdkxlbmd0
aF0uaW92X2xlbiA9IHNpemVvZihzaXplX3QpICogYXR0YWNobWVudHMuc2l6ZSgpOworICAgICAg
ICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmdldCgpOworICAgICAg
ICBpb3ZbaW92TGVuZ3RoXS5pb3ZfbGVuID0gc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFj
aG1lbnRzLnNpemUoKTsKICAgICAgICAgKytpb3ZMZW5ndGg7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98330</attachid>
            <date>2011-06-23 03:15:04 -0700</date>
            <delta_ts>2011-06-23 07:45:41 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-null-handles5.diff</filename>
            <type>text/plain</type>
            <size>11701</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5Mzc2MDcyLi43ZjhiNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDYtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtVTklY
XSBBbGxvdyBzZW5kaW5nIG51bGwgaGFuZGxlcyBpbiBtZXNzYWdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2MjEKKworICAgICAgICBPbmx5IHZh
bGlkIGZpbGUgZGVzY3JpcHRvcnMgYXJlIG5vdyBzZW50IHVzaW5nIHNlbmRtc2coKSBjb250cm9s
CisgICAgICAgIG1lc3NhZ2VzLCBhbmQgaW5zdGVhZCBvZiBzZW5kaW5nIGEgbGlzdCBvZiBhdHRh
Y2htZW50IHNpemVzIHdlIG5vdworICAgICAgICBzZW5kIGEgbGlzdCBvZiBBdHRhY2htZW50SW5m
byBzdHJ1Y3RzLiBBdHRhY2htZW50SW5mbyBjb250YWlucworICAgICAgICBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgYXR0YWNobWVudHMgaW5jbHVkaW5nIHRoZSBzaXplIGZvcgorICAgICAgICBNYXBw
ZWRNZW1vcnkgYXR0YWNobWVucyBhbmQgd2hldGhlciB0aGUgYXR0YWNobWVudCBpcyBudWxsIG9y
IG5vdC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHA6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5mbzo6QXR0YWNobWVudEluZm8pOiBO
ZXcgY2xhc3MgY29udGFpbmluZworICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXR0YWNo
bWVudHMgc2VudC4KKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnRJbmZvOjpzZXRUeXBlKTog
U2V0IHRoZSBhdHRhY2htZW50IHR5cGUuCisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5m
bzo6Z2V0VHlwZSk6IFJldHVybiB0aGUgYXR0YWNobWVudCB0eXBlLgorICAgICAgICAoQ29yZUlQ
Qzo6QXR0YWNobWVudEluZm86OnNldFNpemUpOiBTZXQgdGhlIHNpemUgZm9yIE1hcHBlZE1lbW9y
eSBhdHRhY2htZW50cy4KKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnRJbmZvOjpnZXRTaXpl
KTogR2V0IHRoZSBzaXplIGZvciBNYXBwZWRNZW1vcnkgYXR0YWNobWVudHMuCisgICAgICAgIChD
b3JlSVBDOjpBdHRhY2htZW50SW5mbzo6c2V0TnVsbCk6IFNldCBhdHRhY2htZW50IGFzIG51bGws
IGl0CisgICAgICAgIGNvbnRhaW5zIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLCBzbyB0aGUg
cmVjZWl2ZXIgc2hvdWxkbid0CisgICAgICAgIGV4cGVjdCBhIGZpbGUgZGVzcmlwdG9yIGZvciB0
aGlzIGF0dGFjaG1lbnQuCisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50SW5mbzo6aXNOdWxs
KTogUmV0dXJuIHdoZXRoZXIgYXR0YWNobWVudCBpcworICAgICAgICBudWxsLCBpdCBjb250YWlu
cyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OnByb2Nlc3NNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRP
dXRnb2luZ01lc3NhZ2UpOgorCiAyMDExLTA2LTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcAppbmRleCA3NmI2YTY3Li40ZTc5NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAg
LTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEg
Uy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OSw2ICs5MCwzOSBAQCBw
cml2YXRlOgogICAgIHNpemVfdCBtX2F0dGFjaG1lbnRDb3VudDsKIH07CiAKK2NsYXNzIEF0dGFj
aG1lbnRJbmZvIHsKK3B1YmxpYzoKKyAgICBBdHRhY2htZW50SW5mbygpCisgICAgICAgIDogbV90
eXBlKEF0dGFjaG1lbnQ6OlVuaW5pdGlhbGl6ZWQpCisgICAgICAgICwgbV9zaXplKDApCisgICAg
ICAgICwgbV9pc051bGwoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0VHlwZShB
dHRhY2htZW50OjpUeXBlIHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQorICAgIEF0dGFjaG1lbnQ6
OlR5cGUgZ2V0VHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHZvaWQgc2V0U2l6ZShzaXpl
X3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQXR0YWNobWVudDo6TWFw
cGVkTWVtb3J5VHlwZSk7CisgICAgICAgIG1fc2l6ZSA9IHNpemU7CisgICAgfQorCisgICAgc2l6
ZV90IGdldFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBdHRhY2htZW50
OjpNYXBwZWRNZW1vcnlUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fc2l6ZTsKKyAgICB9CisKKyAg
ICAvLyBUaGUgYXR0YWNobWVudCBpcyBub3QgbnVsbCB1bmxlc3MgZXhwbGljaXRseSBzZXQuCisg
ICAgdm9pZCBzZXROdWxsKCkgeyBtX2lzTnVsbCA9IHRydWU7IH0KKyAgICBib29sIGlzTnVsbCgp
IHsgcmV0dXJuIG1faXNOdWxsOyB9CisKK3ByaXZhdGU6CisgICAgQXR0YWNobWVudDo6VHlwZSBt
X3R5cGU7CisgICAgc2l6ZV90IG1fc2l6ZTsKKyAgICBib29sIG1faXNOdWxsOworfTsKKwogdm9p
ZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewogICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGlkZW50aWZpZXI7CkBAIC0xNjksNyArMjAzLDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgbWVtY3B5KCZtZXNzYWdl
SW5mbywgbWVzc2FnZURhdGEsIHNpemVvZihtZXNzYWdlSW5mbykpOwogICAgIG1lc3NhZ2VEYXRh
ICs9IHNpemVvZihtZXNzYWdlSW5mbyk7CiAKLSAgICBzaXplX3QgbWVzc2FnZUxlbmd0aCA9IHNp
emVvZihNZXNzYWdlSW5mbykgKyBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQoKSAqIHNpemVv
ZihzaXplX3QpICsgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSA/IDAgOiBtZXNzYWdl
SW5mby5ib2R5U2l6ZSgpKTsKKyAgICBzaXplX3QgbWVzc2FnZUxlbmd0aCA9IHNpemVvZihNZXNz
YWdlSW5mbykgKyBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQoKSAqIHNpemVvZihBdHRhY2ht
ZW50SW5mbykgKyAobWVzc2FnZUluZm8uaXNNZXNzYWdlQm9keU9PTCgpID8gMCA6IG1lc3NhZ2VJ
bmZvLmJvZHlTaXplKCkpOwogICAgIGlmIChtX3JlYWRCdWZmZXJTaXplIDwgbWVzc2FnZUxlbmd0
aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNzcsMjggKzIxMSw2MCBAQCBib29sIENv
bm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKCkKICAgICBBdHRhY2htZW50UmVzb3VyY2VHdWFyZDxE
ZXF1ZTxBdHRhY2htZW50PiwgRGVxdWU8QXR0YWNobWVudD46Oml0ZXJhdG9yPiBhdHRhY2hlbWVu
dERpc3Bvc2VyKGF0dGFjaG1lbnRzKTsKICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWRNZW1vcnk+
IG9vbE1lc3NhZ2VCb2R5OwogCi0gICAgaW50IGF0dGFjaG1lbnRDb3VudCA9IG1lc3NhZ2VJbmZv
LmF0dGFjaG1lbnRDb3VudCgpOworICAgIHNpemVfdCBhdHRhY2htZW50RmlsZURlc2NyaXB0b3JD
b3VudCA9IDA7CisgICAgc2l6ZV90IGF0dGFjaG1lbnRDb3VudCA9IG1lc3NhZ2VJbmZvLmF0dGFj
aG1lbnRDb3VudCgpOwogICAgIGlmIChhdHRhY2htZW50Q291bnQpIHsKLSAgICAgICAgT3duQXJy
YXlQdHI8c2l6ZV90PiBhdHRhY2htZW50U2l6ZXMgPSBhZG9wdEFycmF5UHRyKG5ldyBzaXplX3Rb
YXR0YWNobWVudENvdW50XSk7Ci0gICAgICAgIG1lbWNweShhdHRhY2htZW50U2l6ZXMuZ2V0KCks
IG1lc3NhZ2VEYXRhLCBzaXplb2Yoc2l6ZV90KSAqIGF0dGFjaG1lbnRDb3VudCk7Ci0gICAgICAg
IG1lc3NhZ2VEYXRhICs9IHNpemVvZihzaXplX3QpICogYXR0YWNobWVudENvdW50OworICAgICAg
ICBPd25BcnJheVB0cjxBdHRhY2htZW50SW5mbz4gYXR0YWNobWVudEluZm8gPSBhZG9wdEFycmF5
UHRyKG5ldyBBdHRhY2htZW50SW5mb1thdHRhY2htZW50Q291bnRdKTsKKyAgICAgICAgbWVtY3B5
KGF0dGFjaG1lbnRJbmZvLmdldCgpLCBtZXNzYWdlRGF0YSwgc2l6ZW9mKEF0dGFjaG1lbnRJbmZv
KSAqIGF0dGFjaG1lbnRDb3VudCk7CisgICAgICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihBdHRh
Y2htZW50SW5mbykgKiBhdHRhY2htZW50Q291bnQ7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhdHRhY2htZW50Q291bnQ7ICsraSkgeworICAgICAgICAgICAgc3dpdGNoIChhdHRh
Y2htZW50SW5mb1tpXS5nZXRUeXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudDo6
TWFwcGVkTWVtb3J5VHlwZToKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudDo6U29ja2V0VHlw
ZToKKyAgICAgICAgICAgICAgICBpZiAoIWF0dGFjaG1lbnRJbmZvW2ldLmlzTnVsbCgpKQorICAg
ICAgICAgICAgICAgICAgICBhdHRhY2htZW50RmlsZURlc2NyaXB0b3JDb3VudCsrOworICAgICAg
ICAgICAgY2FzZSBBdHRhY2htZW50OjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCiAg
ICAgICAgIGlmIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5T09MKCkpCiAgICAgICAgICAgICBh
dHRhY2htZW50Q291bnQtLTsKIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dGFjaG1l
bnRDb3VudDsgKytpKQotICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKEF0dGFjaG1lbnQo
bV9maWxlRGVzY3JpcHRvcnNbaV0sIGF0dGFjaG1lbnRTaXplc1tpXSkpOworICAgICAgICBzaXpl
X3QgZmRJbmRleCA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0YWNobWVu
dENvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGludCBmZCA9IC0xOworICAgICAgICAgICAgc3dp
dGNoIChhdHRhY2htZW50SW5mb1tpXS5nZXRUeXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXR0
YWNobWVudDo6TWFwcGVkTWVtb3J5VHlwZToKKyAgICAgICAgICAgICAgICBpZiAoIWF0dGFjaG1l
bnRJbmZvW2ldLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBmZCA9IG1fZmlsZURlc2Ny
aXB0b3JzW2ZkSW5kZXgrK107CisgICAgICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKEF0
dGFjaG1lbnQoZmQsIGF0dGFjaG1lbnRJbmZvW2ldLmdldFNpemUoKSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpTb2NrZXRUeXBlOgorICAg
ICAgICAgICAgICAgIGlmICghYXR0YWNobWVudEluZm9baV0uaXNOdWxsKCkpCisgICAgICAgICAg
ICAgICAgICAgIGZkID0gbV9maWxlRGVzY3JpcHRvcnNbZmRJbmRleCsrXTsKKyAgICAgICAgICAg
ICAgICBhdHRhY2htZW50cy5hcHBlbmQoQXR0YWNobWVudChmZCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50OjpVbmluaXRpYWxpemVkOgorICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KCkpOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQogCiAgICAgICAgIGlmIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5T09MKCkpIHsKICAg
ICAgICAgICAgIEFTU0VSVChtZXNzYWdlSW5mby5ib2R5U2l6ZSgpKTsKIAotICAgICAgICAgICAg
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgICAgICBoYW5kbGUu
YWRvcHRGcm9tQXR0YWNobWVudChtX2ZpbGVEZXNjcmlwdG9yc1thdHRhY2htZW50Q291bnRdLCBh
dHRhY2htZW50U2l6ZXNbYXR0YWNobWVudENvdW50XSk7Ci0gICAgICAgICAgICBpZiAoaGFuZGxl
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAoYXR0YWNobWVudEluZm9bYXR0YWNobWVudENv
dW50XS5pc051bGwoKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgICAgICAgICBoYW5k
bGUuYWRvcHRGcm9tQXR0YWNobWVudChtX2ZpbGVEZXNjcmlwdG9yc1thdHRhY2htZW50RmlsZURl
c2NyaXB0b3JDb3VudCAtIDFdLCBhdHRhY2htZW50SW5mb1thdHRhY2htZW50Q291bnRdLmdldFNp
emUoKSk7CisKICAgICAgICAgICAgIG9vbE1lc3NhZ2VCb2R5ID0gV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OmNyZWF0ZShoYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpSZWFkT25seSk7CiAgICAg
ICAgICAgICBpZiAoIW9vbE1lc3NhZ2VCb2R5KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0yMjcsOSArMjkzLDkgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNz
TWVzc2FnZSgpCiAgICAgfSBlbHNlCiAgICAgICAgIG1fcmVhZEJ1ZmZlclNpemUgPSAwOwogCi0g
ICAgaWYgKG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpKSB7Ci0gICAgICAgIGlmIChtX2Zp
bGVEZXNjcmlwdG9yc1NpemUgPiBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQoKSkgewotICAg
ICAgICAgICAgc2l6ZV90IGZpbGVEZXNjcmlwdG9yc0xlbmd0aCA9IG1lc3NhZ2VJbmZvLmF0dGFj
aG1lbnRDb3VudCgpICogc2l6ZW9mKGludCk7CisgICAgaWYgKGF0dGFjaG1lbnRGaWxlRGVzY3Jp
cHRvckNvdW50KSB7CisgICAgICAgIGlmIChtX2ZpbGVEZXNjcmlwdG9yc1NpemUgPiBhdHRhY2ht
ZW50RmlsZURlc2NyaXB0b3JDb3VudCkgeworICAgICAgICAgICAgc2l6ZV90IGZpbGVEZXNjcmlw
dG9yc0xlbmd0aCA9IGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50ICogc2l6ZW9mKGludCk7
CiAgICAgICAgICAgICBtZW1tb3ZlKG1fZmlsZURlc2NyaXB0b3JzLmRhdGEoKSwgbV9maWxlRGVz
Y3JpcHRvcnMuZGF0YSgpICsgZmlsZURlc2NyaXB0b3JzTGVuZ3RoLCBtX2ZpbGVEZXNjcmlwdG9y
c1NpemUgLSBmaWxlRGVzY3JpcHRvcnNMZW5ndGgpOwogICAgICAgICAgICAgbV9maWxlRGVzY3Jp
cHRvcnNTaXplIC09IGZpbGVEZXNjcmlwdG9yc0xlbmd0aDsKICAgICAgICAgfSBlbHNlCkBAIC0z
ODcsNyArNDUzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3Nh
Z2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICB9CiAKICAgICBNZXNz
YWdlSW5mbyBtZXNzYWdlSW5mbyhtZXNzYWdlSUQsIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpLCBh
dHRhY2htZW50cy5zaXplKCkpOwotICAgIHNpemVfdCBtZXNzYWdlU2l6ZVdpdGhCb2R5SW5saW5l
ID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50cy5zaXplKCkgKiBzaXplb2Yoc2l6
ZV90KSkgKyBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKTsKKyAgICBzaXplX3QgbWVzc2FnZVNpemVX
aXRoQm9keUlubGluZSA9IHNpemVvZihtZXNzYWdlSW5mbykgKyAoYXR0YWNobWVudHMuc2l6ZSgp
ICogc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSkgKyBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKTsKICAg
ICBpZiAobWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA+IG1lc3NhZ2VNYXhTaXplICYmIGFyZ3Vt
ZW50cy0+YnVmZmVyU2l6ZSgpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlZE1lbW9y
eT4gb29sTWVzc2FnZUJvZHkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlKGFyZ3VtZW50
cy0+YnVmZmVyU2l6ZSgpKTsKICAgICAgICAgaWYgKCFvb2xNZXNzYWdlQm9keSkKQEAgLTQxNiwy
OCArNDgyLDU2IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdl
SUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAgaW92WzBdLmlvdl9iYXNl
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJm1lc3NhZ2VJbmZvKTsKICAgICBpb3ZbMF0uaW92
X2xlbiA9IHNpemVvZihtZXNzYWdlSW5mbyk7CiAKLSAgICBPd25BcnJheVB0cjxjaGFyPiBhdHRh
Y2htZW50RkRCdWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW0NNU0dfU1BBQ0Uoc2l6ZW9m
KGludCkgKiBhdHRhY2htZW50cy5zaXplKCkpXSk7Ci0gICAgT3duQXJyYXlQdHI8c2l6ZV90PiBh
dHRhY2htZW50U2l6ZXMgPSBhZG9wdEFycmF5UHRyKG5ldyBzaXplX3RbYXR0YWNobWVudHMuc2l6
ZSgpXSk7CisgICAgT3duQXJyYXlQdHI8QXR0YWNobWVudEluZm8+IGF0dGFjaG1lbnRJbmZvID0g
YWRvcHRBcnJheVB0cihuZXcgQXR0YWNobWVudEluZm9bYXR0YWNobWVudHMuc2l6ZSgpXSk7CisK
KyAgICBzaXplX3QgYXR0YWNobWVudEZEQnVmZmVyTGVuZ3RoID0gMDsKKyAgICBpZiAoIWF0dGFj
aG1lbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFj
aG1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoYXR0YWNobWVudHNbaV0uZmls
ZURlc2NyaXB0b3IoKSAhPSAtMSkKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50RkRCdWZmZXJM
ZW5ndGgrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBPd25BcnJheVB0cjxjaGFyPiBhdHRhY2ht
ZW50RkRCdWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW0NNU0dfU1BBQ0Uoc2l6ZW9mKGlu
dCkgKiBhdHRhY2htZW50RkRCdWZmZXJMZW5ndGgpXSk7CiAKICAgICBpZiAoIWF0dGFjaG1lbnRz
LmlzRW1wdHkoKSkgewotICAgICAgICBtZXNzYWdlLm1zZ19jb250cm9sID0gYXR0YWNobWVudEZE
QnVmZmVyLmdldCgpOwotICAgICAgICBtZXNzYWdlLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNo
YXIpICogQ01TR19TUEFDRShzaXplb2YoaW50KSAqIGF0dGFjaG1lbnRzLnNpemUoKSk7CisgICAg
ICAgIGludCogZmRQdHIgPSAwOwogCi0gICAgICAgIHN0cnVjdCBjbXNnaGRyKiBjbXNnID0gQ01T
R19GSVJTVEhEUigmbWVzc2FnZSk7Ci0gICAgICAgIGNtc2ctPmNtc2dfbGV2ZWwgPSBTT0xfU09D
S0VUOwotICAgICAgICBjbXNnLT5jbXNnX3R5cGUgPSBTQ01fUklHSFRTOwotICAgICAgICBjbXNn
LT5jbXNnX2xlbiA9IENNU0dfTEVOKHNpemVvZihpbnQpICogYXR0YWNobWVudHMuc2l6ZSgpKTsK
KyAgICAgICAgaWYgKGF0dGFjaG1lbnRGREJ1ZmZlckxlbmd0aCkgeworICAgICAgICAgICAgbWVz
c2FnZS5tc2dfY29udHJvbCA9IGF0dGFjaG1lbnRGREJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAg
IG1lc3NhZ2UubXNnX2NvbnRyb2xsZW4gPSBDTVNHX1NQQUNFKHNpemVvZihpbnQpICogYXR0YWNo
bWVudEZEQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgICAgIG1lbXNldChtZXNzYWdlLm1zZ19jb250
cm9sLCAwLCBtZXNzYWdlLm1zZ19jb250cm9sbGVuKTsKIAotICAgICAgICBpbnQqIGZkcHRyID0g
cmVpbnRlcnByZXRfY2FzdDxpbnQqPihDTVNHX0RBVEEoY21zZykpOwotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBh
dHRhY2htZW50U2l6ZXNbaV0gPSBhdHRhY2htZW50c1tpXS5zaXplKCk7Ci0gICAgICAgICAgICBm
ZHB0cltpXSA9IGF0dGFjaG1lbnRzW2ldLmZpbGVEZXNjcmlwdG9yKCk7CisgICAgICAgICAgICBz
dHJ1Y3QgY21zZ2hkciogY21zZyA9IENNU0dfRklSU1RIRFIoJm1lc3NhZ2UpOworICAgICAgICAg
ICAgY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7CisgICAgICAgICAgICBjbXNnLT5jbXNn
X3R5cGUgPSBTQ01fUklHSFRTOworICAgICAgICAgICAgY21zZy0+Y21zZ19sZW4gPSBDTVNHX0xF
TihzaXplb2YoaW50KSAqIGF0dGFjaG1lbnRGREJ1ZmZlckxlbmd0aCk7CisKKyAgICAgICAgICAg
IGZkUHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQqPihDTVNHX0RBVEEoY21zZykpOwogICAgICAg
ICB9CiAKLSAgICAgICAgbWVzc2FnZS5tc2dfY29udHJvbGxlbiA9IGNtc2ctPmNtc2dfbGVuOwor
ICAgICAgICBpbnQgZmRJbmRleCA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXR0YWNobWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGF0dGFjaG1lbnRJbmZvW2ld
LnNldFR5cGUoYXR0YWNobWVudHNbaV0udHlwZSgpKTsKKworICAgICAgICAgICAgc3dpdGNoIChh
dHRhY2htZW50c1tpXS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudDo6TWFw
cGVkTWVtb3J5VHlwZToKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50SW5mb1tpXS5zZXRTaXpl
KGF0dGFjaG1lbnRzW2ldLnNpemUoKSk7CisgICAgICAgICAgICAgICAgLy8gRmFsbCB0cmhvdWdo
LCBzZXQgZmlsZSBkZXNjcmlwdG9yIG9yIG51bGwuCisgICAgICAgICAgICBjYXNlIEF0dGFjaG1l
bnQ6OlNvY2tldFR5cGU6CisgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRzW2ldLmZpbGVE
ZXNjcmlwdG9yKCkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZkUHRyKTsK
KyAgICAgICAgICAgICAgICAgICAgZmRQdHJbZmRJbmRleCsrXSA9IGF0dGFjaG1lbnRzW2ldLmZp
bGVEZXNjcmlwdG9yKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnRJbmZvW2ldLnNldE51bGwoKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudDo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KIAotICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRTaXplcy5n
ZXQoKTsKLSAgICAgICAgaW92W2lvdkxlbmd0aF0uaW92X2xlbiA9IHNpemVvZihzaXplX3QpICog
YXR0YWNobWVudHMuc2l6ZSgpOworICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IGF0
dGFjaG1lbnRJbmZvLmdldCgpOworICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfbGVuID0gc2l6
ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFjaG1lbnRzLnNpemUoKTsKICAgICAgICAgKytpb3ZM
ZW5ndGg7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="92528"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="92529"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>