<?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>56331</bug_id>
          
          <creation_ts>2011-03-14 14:03:43 -0700</creation_ts>
          <short_desc>FileSystemWin.cpp needs listDirectory() implementation</short_desc>
          <delta_ts>2018-11-27 17:24:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=192042</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Weinstein">bweinstein</reporter>
          <assigned_to name="Brian Weinstein">bweinstein</assigned_to>
          <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>367202</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-14 14:03:43 -0700</bug_when>
    <thetext>FileSystemWin.cpp needs listDirectory() implementation.

&lt;rdar://problem/9126635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367207</commentid>
    <comment_count>1</comment_count>
      <attachid>85716</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-14 14:08:37 -0700</bug_when>
    <thetext>Created attachment 85716
[PATCH] Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367210</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-14 14:10:35 -0700</bug_when>
    <thetext>Attachment 85716 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit2/UIProcess/Plugins/win/PluginInfoStoreWin.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367215</commentid>
    <comment_count>3</comment_count>
      <attachid>85716</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-14 14:11:46 -0700</bug_when>
    <thetext>Comment on attachment 85716
[PATCH] Fix

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

&gt; Source/WebCore/platform/win/FileSystemWin.cpp:307
&gt; +    String windowsSpecificFilter = &quot;\\&quot; + filter;
&gt; +    PathWalker walker(directory, windowsSpecificFilter);

Please just pass filter through here.

&gt; Source/WebCore/platform/win/FileSystemWin.cpp:316
&gt; +        String fileName = walker.data().cFileName;
&gt; +        entries.append(makeString(directory, &quot;\\&quot;, fileName));

This will (I think) be more efficient if you remove the local fileName variable.

&gt; Source/WebCore/platform/win/PathWalker.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011!

&gt; Source/WebCore/platform/win/PathWalker.cpp:54
&gt; +bool PathWalker::isValid() const
&gt; +{
&gt; +    return m_handle != INVALID_HANDLE_VALUE;
&gt; +}
&gt; +
&gt; +const WIN32_FIND_DATAW&amp; PathWalker::data() const
&gt; +{
&gt; +    return m_data;
&gt; +}

I think these could go in the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367236</commentid>
    <comment_count>4</comment_count>
      <attachid>85716</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-14 14:32:46 -0700</bug_when>
    <thetext>Comment on attachment 85716
[PATCH] Fix

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

&gt;&gt; Source/WebCore/platform/win/FileSystemWin.cpp:307
&gt;&gt; +    PathWalker walker(directory, windowsSpecificFilter);
&gt; 
&gt; Please just pass filter through here.

Fixed.

&gt;&gt; Source/WebCore/platform/win/FileSystemWin.cpp:316
&gt;&gt; +        entries.append(makeString(directory, &quot;\\&quot;, fileName));
&gt; 
&gt; This will (I think) be more efficient if you remove the local fileName variable.

Fixed. Added some code to StringConcatenate to handle UChar* - I will send out a new patch shortly.

&gt;&gt; Source/WebCore/platform/win/PathWalker.cpp:2
&gt;&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.
&gt; 
&gt; 2011!

Fixed!

&gt;&gt; Source/WebCore/platform/win/PathWalker.cpp:54
&gt;&gt; +}
&gt; 
&gt; I think these could go in the header.

Moved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367254</commentid>
    <comment_count>5</comment_count>
      <attachid>85724</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-14 14:45:19 -0700</bug_when>
    <thetext>Created attachment 85724
[PATCH] Fix v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367261</commentid>
    <comment_count>6</comment_count>
      <attachid>85724</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-14 14:48:20 -0700</bug_when>
    <thetext>Comment on attachment 85724
[PATCH] Fix v2

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

I think the StringConcatenate changes need some work.

&gt; Source/JavaScriptCore/wtf/text/StringConcatenate.h:102
&gt; +        if (m_length &gt; std::numeric_limits&lt;unsigned&gt;::max())
&gt; +            CRASH();

I don&apos;t think this will ever be true.

&gt; Source/JavaScriptCore/wtf/text/StringConcatenate.h:112
&gt; +        for (unsigned i = 0; i &lt; m_length; ++i) {
&gt; +            unsigned char c = m_buffer[i];
&gt; +            destination[i] = c;
&gt; +        }

You&apos;re stripping off the high 8 bits of each character. That doesn&apos;t seem right. I think memcpy would be better.

&gt; Source/WebCore/platform/win/PathWalker.h:27
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Why is this neeed? Would a forward declaration suffice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367272</commentid>
    <comment_count>7</comment_count>
      <attachid>85726</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-14 15:02:20 -0700</bug_when>
    <thetext>Created attachment 85726
[PATCH] Fix v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367274</commentid>
    <comment_count>8</comment_count>
      <attachid>85726</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-14 15:04:16 -0700</bug_when>
    <thetext>Comment on attachment 85726
[PATCH] Fix v3

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

&gt; Source/JavaScriptCore/wtf/text/StringConcatenate.h:111
&gt; +        memcpy(destination, m_buffer, m_length * sizeof(UChar));

please cast m_length to size_t before multiplying, this might overflow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367276</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-14 15:04:57 -0700</bug_when>
    <thetext>Attachment 85726 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebCore/platform/win/PathWalker.h:30:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367280</commentid>
    <comment_count>10</comment_count>
      <attachid>85727</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-14 15:10:49 -0700</bug_when>
    <thetext>Created attachment 85727
[PATCH] Fix v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367282</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-14 15:16:21 -0700</bug_when>
    <thetext>Landed in r81065.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85716</attachid>
            <date>2011-03-14 14:08:37 -0700</date>
            <delta_ts>2011-03-14 14:45:19 -0700</delta_ts>
            <desc>[PATCH] Fix</desc>
            <filename>list_directory_win.patch</filename>
            <type>text/plain</type>
            <size>9866</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMDU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTQgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpbGVTeXN0ZW1XaW4uY3BwIG5lZWRzIGxpc3REaXJl
Y3RvcnkoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTYzMzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkxMjY2MzU+Cisg
ICAgICAgIAorICAgICAgICBNb3ZlIFBhdGhXYWxrZXIgZnJvbSBhbiBpbmxpbmUgY2xhc3MgaW4g
V2ViS2l0MiB0byBpdHMgb3duIGNsYXNzIGluIFdlYkNvcmUsCisgICAgICAgIHNvIGl0IGNhbiBi
ZSB1c2VkIGZyb20gYm90aCBXZWJDb3JlIGFuZCBXZWJLaXQyLgorICAgICAgICAKKyAgICAgICAg
SW1wbGVtZW50IEZpbGVTeXN0ZW1XaW46Omxpc3REaXJlY3RvcnkgdXNpbmcgUGF0aFdhbGtlciB0
byBwb3B1bGF0ZSB0aGUgVmVjdG9yCisgICAgICAgIG9mIHBhdGhzIG1hdGNoaW5nIHRoZSBwYXNz
ZWQgaW4gcGF0dGVybi4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Omxpc3REaXJlY3RvcnkpOiBDYWxsIHRocm91Z2ggdG8gUGF0aFdhbGtlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGF0aFdhbGtlcjo6UGF0aFdhbGtlcik6IE1vdmVkIGZyb20gV2ViS2l0Mi4gQWRkZWQgYSBz
ZWNvbmQgYXJndW1lbnQKKyAgICAgICAgICAgIGZvciB0aGUgcGF0dGVybiB0byBwYXNzIHRvIHRo
ZSBXaW5kb3dzIEZpbGUgQVBJcy4KKyAgICAgICAgKFdlYkNvcmU6OlBhdGhXYWxrZXI6On5QYXRo
V2Fsa2VyKTogTW92ZWQgZnJvbSBXZWJLaXQyLgorICAgICAgICAoV2ViQ29yZTo6UGF0aFdhbGtl
cjo6aXNWYWxpZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGF0aFdhbGtlcjo6ZGF0YSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGF0aFdhbGtlcjo6c3RlcCk6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmg6IEFkZGVkLgorCiAyMDExLTAzLTE0ICBE
YXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4g
QmVybnN0ZWluLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHJldmlzaW9uIDgxMDMzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2MzA5LDYgKzI2MzA5LDE0IEBA
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVx3aW5cUGF0aFdhbGtlci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx3aW5cUGF0aFdhbGtlci5oIgorCQkJ
CQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cd2luXFBsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCShy
ZXZpc2lvbiA4MTAzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVt
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTEgQEAKICNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhdGhX
YWxrZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8
d2luYmFzZS5oPgpAQCAtMjk3LDEwICsyOTksMjMgQEAgYm9vbCBzYWZlQ3JlYXRlRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IGxp
c3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK1Zl
Y3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0
IFN0cmluZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKworICAgIFN0cmluZyB3aW5kb3dzU3BlY2lmaWNGaWx0ZXIgPSAiXFwi
ICsgZmlsdGVyOworICAgIFBhdGhXYWxrZXIgd2Fsa2VyKGRpcmVjdG9yeSwgd2luZG93c1NwZWNp
ZmljRmlsdGVyKTsKKyAgICBpZiAoIXdhbGtlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBl
bnRyaWVzOworCisgICAgZG8geworICAgICAgICBpZiAod2Fsa2VyLmRhdGEoKS5kd0ZpbGVBdHRy
aWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgU3RyaW5nIGZpbGVOYW1lID0gd2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWU7Cisg
ICAgICAgIGVudHJpZXMuYXBwZW5kKG1ha2VTdHJpbmcoZGlyZWN0b3J5LCAiXFwiLCBmaWxlTmFt
ZSkpOworICAgIH0gd2hpbGUgKHdhbGtlci5zdGVwKCkpOworCiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUGF0aFdhbGtlci5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXRoV2Fsa2Vy
OjpQYXRoV2Fsa2VyKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRl
cm4pCit7CisgICAgU3RyaW5nIHBhdGggPSBtYWtlU3RyaW5nKGRpcmVjdG9yeSwgIlxcIiwgcGF0
dGVybik7CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHBhdGguY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKSwgJm1fZGF0YSk7Cit9CisKK1BhdGhXYWxrZXI6On5QYXRoV2Fs
a2VyKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIDo6Rmlu
ZENsb3NlKG1faGFuZGxlKTsKK30KKworYm9vbCBQYXRoV2Fsa2VyOjppc1ZhbGlkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKK2Nv
bnN0IFdJTjMyX0ZJTkRfREFUQVcmIFBhdGhXYWxrZXI6OmRhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2RhdGE7Cit9CisKK2Jvb2wgUGF0aFdhbGtlcjo6c3RlcCgpCit7CisgICAgcmV0dXJu
IDo6RmluZE5leHRGaWxlVyhtX2hhbmRsZSwgJm1fZGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGF0aFdhbGtlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUGF0aFdhbGtlcik7CitwdWJsaWM6CisgICAgUGF0aFdhbGtlcihjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKTsKKyAgICB+UGF0aFdhbGtlcigpOwor
CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisgICAgY29uc3QgV0lOMzJfRklORF9EQVRBVyYg
ZGF0YSgpIGNvbnN0OworCisgICAgYm9vbCBzdGVwKCk7CisKK3ByaXZhdGU6CisgICAgSEFORExF
IG1faGFuZGxlOworICAgIFdJTjMyX0ZJTkRfREFUQVcgbV9kYXRhOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODEwNTUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0w
My0xNCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlsZVN5c3RlbVdpbi5jcHAg
bmVlZHMgbGlzdERpcmVjdG9yeSgpIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMzMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vOTEyNjYzNT4KKyAgICAgICAgCisgICAgICAgIE1vdmUgUGF0aFdhbGtlciBkb3duIGludG8g
V2ViQ29yZSwgYW5kIGNhbGwgdGhlIFBhdGhXYWxrZXIgaW4gV2ViQ29yZQorICAgICAgICAodGhh
dCBub3cgaGFzIGEgc2Vjb25kIGFyZ3VtZW50LCB0aGUgcGF0dGVybiB0byB0YWtlKS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6OnBsdWdpblBhdGhzSW5EaXJlY3RvcnkpOgor
CiAyMDExLTAzLTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNwcAkocmV2aXNp
b24gODEwMzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2lu
SW5mb1N0b3JlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QYXRoV2Fsa2VyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC0yNTQsMzcgKzI1NSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBs
dWdpbnNECiAgICAgcmV0dXJuIGRpcmVjdG9yaWVzOwogfQogCi1jbGFzcyBQYXRoV2Fsa2VyIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXRoV2Fsa2VyKTsKLXB1YmxpYzoKLSAgICBQYXRo
V2Fsa2VyKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQotICAgIHsKLSAgICAgICAgU3RyaW5nIHBh
dHRlcm4gPSBkaXJlY3RvcnkgKyAiXFwqIjsKLSAgICAgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJz
dEZpbGVXKHBhdHRlcm4uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgJm1fZGF0YSk7
Ci0gICAgfQotCi0gICAgflBhdGhXYWxrZXIoKQotICAgIHsKLSAgICAgICAgaWYgKCFpc1ZhbGlk
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIDo6RmluZENsb3NlKG1faGFuZGxlKTsK
LSAgICB9Ci0KLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSBJ
TlZBTElEX0hBTkRMRV9WQUxVRTsgfQotICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KLQotICAgIGJvb2wgc3RlcCgpIHsgcmV0dXJuIDo6
RmluZE5leHRGaWxlVyhtX2hhbmRsZSwgJm1fZGF0YSk7IH0KLQotcHJpdmF0ZToKLSAgICBIQU5E
TEUgbV9oYW5kbGU7Ci0gICAgV0lOMzJfRklORF9EQVRBVyBtX2RhdGE7Ci19OwotCiBWZWN0b3I8
U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpblBhdGhzSW5EaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnkpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CiAKLSAgICBQYXRo
V2Fsa2VyIHdhbGtlcihkaXJlY3RvcnkpOworICAgIFBhdGhXYWxrZXIgd2Fsa2VyKGRpcmVjdG9y
eSwgIioiKTsKICAgICBpZiAoIXdhbGtlci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBwYXRo
czsKIAo=
</data>
<flag name="review"
          id="77891"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85724</attachid>
            <date>2011-03-14 14:45:19 -0700</date>
            <delta_ts>2011-03-14 15:02:20 -0700</delta_ts>
            <desc>[PATCH] Fix v2</desc>
            <filename>list_directory_win.patch</filename>
            <type>text/plain</type>
            <size>11499</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODEwNTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDMtMTQgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpbGVTeXN0ZW1X
aW4uY3BwIG5lZWRzIGxpc3REaXJlY3RvcnkoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYzMzEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzkxMjY2MzU+CisgICAgICAgIAorICAgICAgICBHaXZlIFN0cmluZ0NvbmNhdGVu
YXRlIHRoZSBhYmlsaXR5IHRvIGRlYWwgd2l0aCBjb25zdCBVQ2hhcioncyBhcyBhIFN0cmluZyB0
eXBlIHRvIGFwcGVuZC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6
CisKIDIwMTEtMDMtMTQgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiA4MTAzMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OSw2ICs4OSwzNSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8PgorY2xh
c3MgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgVUNoYXIqPiB7CitwdWJsaWM6CisgICAgU3RyaW5n
VHlwZUFkYXB0ZXI8Y29uc3QgVUNoYXIqPihjb25zdCBVQ2hhciogYnVmZmVyKQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1fbGVuZ3RoID0gMDsKKyAgICAgICAg
d2hpbGUgKG1fYnVmZmVyW21fbGVuZ3RoXSAhPSBVQ2hhcigwKSkKKyAgICAgICAgICAgIG1fbGVu
Z3RoKys7CisKKyAgICAgICAgaWYgKG1fbGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBsZW5ndGgoKSB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgdm9pZCB3cml0ZVRvKFVDaGFy
KiBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2xlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBtX2J1ZmZlcltp
XTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gYzsKKyAgICAgICAgfQorICAgIH0KKwor
cHJpdmF0ZToKKyAgICBjb25zdCBVQ2hhciogbV9idWZmZXI7CisgICAgdW5zaWduZWQgbV9sZW5n
dGg7Cit9OworCit0ZW1wbGF0ZTw+CiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFy
Kj4gewogcHVibGljOgogICAgIFN0cmluZ1R5cGVBZGFwdGVyPGNvbnN0IGNoYXIqPihjb25zdCBj
aGFyKiBidWZmZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTA1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDExLTAz
LTE0ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaWxlU3lzdGVtV2luLmNwcCBu
ZWVkcyBsaXN0RGlyZWN0b3J5KCkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MzMxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS85MTI2NjM1PgorICAgICAgICAKKyAgICAgICAgTW92ZSBQYXRoV2Fsa2VyIGZyb20gYW4gaW5s
aW5lIGNsYXNzIGluIFdlYktpdDIgdG8gaXRzIG93biBjbGFzcyBpbiBXZWJDb3JlLAorICAgICAg
ICBzbyBpdCBjYW4gYmUgdXNlZCBmcm9tIGJvdGggV2ViQ29yZSBhbmQgV2ViS2l0Mi4KKyAgICAg
ICAgCisgICAgICAgIEltcGxlbWVudCBGaWxlU3lzdGVtV2luOjpsaXN0RGlyZWN0b3J5IHVzaW5n
IFBhdGhXYWxrZXIgdG8gcG9wdWxhdGUgdGhlIFZlY3RvcgorICAgICAgICBvZiBwYXRocyBtYXRj
aGluZyB0aGUgcGFzc2VkIGluIHBhdHRlcm4uCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KTogQ2FsbCB0aHJvdWdoIHRvIFBhdGhX
YWxrZXIuCisgICAgICAgICogcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhdGhXYWxrZXI6OlBhdGhXYWxrZXIpOiBNb3ZlZCBmcm9tIFdlYktp
dDIuIEFkZGVkIGEgc2Vjb25kIGFyZ3VtZW50CisgICAgICAgICAgICBmb3IgdGhlIHBhdHRlcm4g
dG8gcGFzcyB0byB0aGUgV2luZG93cyBGaWxlIEFQSXMuCisgICAgICAgIChXZWJDb3JlOjpQYXRo
V2Fsa2VyOjp+UGF0aFdhbGtlcik6IE1vdmVkIGZyb20gV2ViS2l0Mi4KKyAgICAgICAgKFdlYkNv
cmU6OlBhdGhXYWxrZXI6OmlzVmFsaWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhdGhX
YWxrZXI6OmRhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhdGhXYWxrZXI6OnN0ZXAp
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5oOiBBZGRlZC4KKwog
MjAxMS0wMy0xNCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA4MTAzMykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMwOSw2
ICsyNjMwOSwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cd2luXFBhdGhXYWxrZXIuY3BwIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cd2luXFBhdGhX
YWxrZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXHdpblxQbGF0Zm9ybU1vdXNlRXZlbnRXaW4uY3BwIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1X
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcAkocmV2aXNpb24gODEwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRmlsZVN5c3RlbVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDExIEBACiAj
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJQYXRoV2Fsa2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaW5jbHVkZSA8d2luZG93cy5o
PgogI2luY2x1ZGUgPHdpbmJhc2UuaD4KQEAgLTI5NywxMCArMjk5LDIxIEBAIGJvb2wgc2FmZUNy
ZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLAogICAgIHJldHVybiB0cnVlOwogfQogCi1WZWN0
b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBmaWx0ZXIpCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBlbnRy
aWVzOwotICAgIG5vdEltcGxlbWVudGVkKCk7CisKKyAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJl
Y3RvcnksIGZpbHRlcik7CisgICAgaWYgKCF3YWxrZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm4gZW50cmllczsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKHdhbGtlci5kYXRhKCkuZHdGaWxl
QXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGVudHJpZXMuYXBwZW5kKG1ha2VTdHJpbmcoZGlyZWN0b3J5LCAiXFwi
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4od2Fsa2VyLmRhdGEoKS5jRmlsZU5hbWUp
KSk7CisgICAgfSB3aGlsZSAod2Fsa2VyLnN0ZXAoKSk7CisKICAgICByZXR1cm4gZW50cmllczsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BhdGhXYWxrZXI6
OlBhdGhXYWxrZXIoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVy
bikKK3sKKyAgICBTdHJpbmcgcGF0aCA9IG1ha2VTdHJpbmcoZGlyZWN0b3J5LCAiXFwiLCBwYXR0
ZXJuKTsKKyAgICBtX2hhbmRsZSA9IDo6RmluZEZpcnN0RmlsZVcocGF0aC5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpLCAmbV9kYXRhKTsKK30KKworUGF0aFdhbGtlcjo6flBhdGhXYWxr
ZXIoKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisgICAgOjpGaW5k
Q2xvc2UobV9oYW5kbGUpOworfQorCitib29sIFBhdGhXYWxrZXI6OnN0ZXAoKQoreworICAgIHJl
dHVybiA6OkZpbmROZXh0RmlsZVcobV9oYW5kbGUsICZtX2RhdGEpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2Vy
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhdGhXYWxrZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFBhdGhXYWxrZXIpOworcHVibGljOgorICAgIFBhdGhXYWxrZXIoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0dGVybik7CisgICAgflBhdGhXYWxrZXIo
KTsKKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlICE9IElOVkFM
SURfSEFORExFX1ZBTFVFOyB9CisgICAgY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAgYm9vbCBzdGVwKCk7CisKK3ByaXZhdGU6Cisg
ICAgSEFORExFIG1faGFuZGxlOworICAgIFdJTjMyX0ZJTkRfREFUQVcgbV9kYXRhOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODEwNTUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBA
QAorMjAxMS0wMy0xNCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlsZVN5c3Rl
bVdpbi5jcHAgbmVlZHMgbGlzdERpcmVjdG9yeSgpIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMzMQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vOTEyNjYzNT4KKyAgICAgICAgCisgICAgICAgIE1vdmUgUGF0aFdhbGtlciBk
b3duIGludG8gV2ViQ29yZSwgYW5kIGNhbGwgdGhlIFBhdGhXYWxrZXIgaW4gV2ViQ29yZQorICAg
ICAgICAodGhhdCBub3cgaGFzIGEgc2Vjb25kIGFyZ3VtZW50LCB0aGUgcGF0dGVybiB0byB0YWtl
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6OnBsdWdpblBhdGhzSW5EaXJl
Y3RvcnkpOgorCiAyMDExLTAzLTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNw
cAkocmV2aXNpb24gODEwMzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy93
aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVn
aW5Nb2R1bGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhdGhXYWxrZXIuaD4KICNpbmNsdWRlIDxz
aGx3YXBpLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjU0LDM3ICsyNTUsMTEg
QEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5zRAogICAgIHJldHVybiBk
aXJlY3RvcmllczsKIH0KIAotY2xhc3MgUGF0aFdhbGtlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUGF0aFdhbGtlcik7Ci1wdWJsaWM6Ci0gICAgUGF0aFdhbGtlcihjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSkKLSAgICB7Ci0gICAgICAgIFN0cmluZyBwYXR0ZXJuID0gZGlyZWN0b3J5ICsg
IlxcKiI7Ci0gICAgICAgIG1faGFuZGxlID0gOjpGaW5kRmlyc3RGaWxlVyhwYXR0ZXJuLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksICZtX2RhdGEpOwotICAgIH0KLQotICAgIH5QYXRo
V2Fsa2VyKCkKLSAgICB7Ci0gICAgICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICA6OkZpbmRDbG9zZShtX2hhbmRsZSk7Ci0gICAgfQotCi0gICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7
IH0KLSAgICBjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhOyB9Ci0KLSAgICBib29sIHN0ZXAoKSB7IHJldHVybiA6OkZpbmROZXh0RmlsZVcobV9oYW5k
bGUsICZtX2RhdGEpOyB9Ci0KLXByaXZhdGU6Ci0gICAgSEFORExFIG1faGFuZGxlOwotICAgIFdJ
TjMyX0ZJTkRfREFUQVcgbV9kYXRhOwotfTsKLQogVmVjdG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0
b3JlOjpwbHVnaW5QYXRoc0luRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQogewog
ICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwogCi0gICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0
b3J5KTsKKyAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJlY3RvcnksICIqIik7CiAgICAgaWYgKCF3
YWxrZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gcGF0aHM7CiAK
</data>
<flag name="review"
          id="77898"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85726</attachid>
            <date>2011-03-14 15:02:20 -0700</date>
            <delta_ts>2011-03-14 15:10:49 -0700</delta_ts>
            <desc>[PATCH] Fix v3</desc>
            <filename>list_directory_win.patch</filename>
            <type>text/plain</type>
            <size>11480</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODEwNTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDMtMTQgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpbGVTeXN0ZW1X
aW4uY3BwIG5lZWRzIGxpc3REaXJlY3RvcnkoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYzMzEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzkxMjY2MzU+CisgICAgICAgIAorICAgICAgICBHaXZlIFN0cmluZ0NvbmNhdGVu
YXRlIHRoZSBhYmlsaXR5IHRvIGRlYWwgd2l0aCBjb25zdCBVQ2hhcioncyBhcyBhIFN0cmluZyB0
eXBlIHRvIGFwcGVuZC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6
CisKIDIwMTEtMDMtMTQgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiA4MTAzMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OSw2ICs4OSwzNCBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8PgorY2xh
c3MgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgVUNoYXIqPiB7CitwdWJsaWM6CisgICAgU3RyaW5n
VHlwZUFkYXB0ZXI8Y29uc3QgVUNoYXIqPihjb25zdCBVQ2hhciogYnVmZmVyKQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICB7CisgICAgICAgIHNpemVfdCBsZW4gPSAwOworICAgICAg
ICB3aGlsZSAobV9idWZmZXJbbGVuXSAhPSBVQ2hhcigwKSkKKyAgICAgICAgICAgIGxlbisrOwor
CisgICAgICAgIGlmIChsZW4gPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CisgICAgICAgICAgICBDUkFTSCgpOworCisgICAgICAgIG1fbGVuZ3RoID0gbGVuOworICAgIH0K
KworICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKKyAgICB2b2lk
IHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgbWVtY3B5KGRlc3Rp
bmF0aW9uLCBtX2J1ZmZlciwgbV9sZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgY29uc3QgVUNoYXIqIG1fYnVmZmVyOworICAgIHVuc2lnbmVkIG1fbGVuZ3Ro
OworfTsKKwordGVtcGxhdGU8PgogY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgY2hhcio+
IHsKIHB1YmxpYzoKICAgICBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFyKj4oY29uc3QgY2hh
ciogYnVmZmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODEwNTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0wMy0x
NCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlsZVN5c3RlbVdpbi5jcHAgbmVl
ZHMgbGlzdERpcmVjdG9yeSgpIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
OTEyNjYzNT4KKyAgICAgICAgCisgICAgICAgIE1vdmUgUGF0aFdhbGtlciBmcm9tIGFuIGlubGlu
ZSBjbGFzcyBpbiBXZWJLaXQyIHRvIGl0cyBvd24gY2xhc3MgaW4gV2ViQ29yZSwKKyAgICAgICAg
c28gaXQgY2FuIGJlIHVzZWQgZnJvbSBib3RoIFdlYkNvcmUgYW5kIFdlYktpdDIuCisgICAgICAg
IAorICAgICAgICBJbXBsZW1lbnQgRmlsZVN5c3RlbVdpbjo6bGlzdERpcmVjdG9yeSB1c2luZyBQ
YXRoV2Fsa2VyIHRvIHBvcHVsYXRlIHRoZSBWZWN0b3IKKyAgICAgICAgb2YgcGF0aHMgbWF0Y2hp
bmcgdGhlIHBhc3NlZCBpbiBwYXR0ZXJuLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGlzdERpcmVjdG9yeSk6IENhbGwgdGhyb3VnaCB0byBQYXRoV2Fs
a2VyLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKTogTW92ZWQgZnJvbSBXZWJLaXQy
LiBBZGRlZCBhIHNlY29uZCBhcmd1bWVudAorICAgICAgICAgICAgZm9yIHRoZSBwYXR0ZXJuIHRv
IHBhc3MgdG8gdGhlIFdpbmRvd3MgRmlsZSBBUElzLgorICAgICAgICAoV2ViQ29yZTo6UGF0aFdh
bGtlcjo6flBhdGhXYWxrZXIpOiBNb3ZlZCBmcm9tIFdlYktpdDIuCisgICAgICAgIChXZWJDb3Jl
OjpQYXRoV2Fsa2VyOjppc1ZhbGlkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXRoV2Fs
a2VyOjpkYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXRoV2Fsa2VyOjpzdGVwKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIuaDogQWRkZWQuCisKIDIw
MTEtMDMtMTQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gODEwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYzMDksNiAr
MjYzMDksMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXHdpblxQYXRoV2Fsa2VyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHdpblxQYXRoV2Fs
a2VyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVx3aW5cUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcCIKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAJKHJldmlzaW9uIDgxMDMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSwxMSBAQAogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGF0aFdhbGtlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4K
ICNpbmNsdWRlIDx3aW5iYXNlLmg+CkBAIC0yOTcsMTAgKzI5OSwyMSBAQCBib29sIHNhZmVDcmVh
dGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVmVjdG9y
PFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
ZmlsdGVyKQorVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZW50cmll
czsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgUGF0aFdhbGtlciB3YWxrZXIoZGlyZWN0
b3J5LCBmaWx0ZXIpOworICAgIGlmICghd2Fsa2VyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
IGVudHJpZXM7CisKKyAgICBkbyB7CisgICAgICAgIGlmICh3YWxrZXIuZGF0YSgpLmR3RmlsZUF0
dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBlbnRyaWVzLmFwcGVuZChtYWtlU3RyaW5nKGRpcmVjdG9yeSwgIlxcIiwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHdhbGtlci5kYXRhKCkuY0ZpbGVOYW1lKSkp
OworICAgIH0gd2hpbGUgKHdhbGtlci5zdGVwKCkpOworCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGF0aFdhbGtlci5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXRoV2Fsa2VyOjpQ
YXRoV2Fsa2VyKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4p
Cit7CisgICAgU3RyaW5nIHBhdGggPSBtYWtlU3RyaW5nKGRpcmVjdG9yeSwgIlxcIiwgcGF0dGVy
bik7CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHBhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKSwgJm1fZGF0YSk7Cit9CisKK1BhdGhXYWxrZXI6On5QYXRoV2Fsa2Vy
KCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIDo6RmluZENs
b3NlKG1faGFuZGxlKTsKK30KKworYm9vbCBQYXRoV2Fsa2VyOjpzdGVwKCkKK3sKKyAgICByZXR1
cm4gOjpGaW5kTmV4dEZpbGVXKG1faGFuZGxlLCAmbV9kYXRhKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BhdGhXYWxrZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxX
aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXVEYg
eworICAgIGNsYXNzIFN0cmluZzsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQ
YXRoV2Fsa2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXRoV2Fsa2VyKTsKK3B1Ymxp
YzoKKyAgICBQYXRoV2Fsa2VyKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFdU
Rjo6U3RyaW5nJiBwYXR0ZXJuKTsKKyAgICB+UGF0aFdhbGtlcigpOworCisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7IH0K
KyAgICBjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CisKKyAgICBib29sIHN0ZXAoKTsKKworcHJpdmF0ZToKKyAgICBIQU5ETEUgbV9oYW5kbGU7
CisgICAgV0lOMzJfRklORF9EQVRBVyBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTA1NSkKKysrIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTE0ICBCcmlh
biBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaWxlU3lzdGVtV2luLmNwcCBuZWVkcyBsaXN0
RGlyZWN0b3J5KCkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU2MzMxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MTI2NjM1
PgorICAgICAgICAKKyAgICAgICAgTW92ZSBQYXRoV2Fsa2VyIGRvd24gaW50byBXZWJDb3JlLCBh
bmQgY2FsbCB0aGUgUGF0aFdhbGtlciBpbiBXZWJDb3JlCisgICAgICAgICh0aGF0IG5vdyBoYXMg
YSBzZWNvbmQgYXJndW1lbnQsIHRoZSBwYXR0ZXJuIHRvIHRha2UpLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1BsdWdpbnMvd2luL1BsdWdpbkluZm9TdG9yZVdpbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpbkluZm9TdG9yZTo6cGx1Z2luUGF0aHNJbkRpcmVjdG9yeSk6CisKIDIwMTEtMDMt
MTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9Q
bHVnaW5JbmZvU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4uY3BwCShyZXZpc2lvbiA4MTAzMykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUGx1Z2lu
SW5mb1N0b3JlLmgiCiAKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUGF0aFdhbGtlci5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yNTQsMzcgKzI1NSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQ
bHVnaW5JbmZvU3RvcmU6OnBsdWdpbnNECiAgICAgcmV0dXJuIGRpcmVjdG9yaWVzOwogfQogCi1j
bGFzcyBQYXRoV2Fsa2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXRoV2Fsa2VyKTsK
LXB1YmxpYzoKLSAgICBQYXRoV2Fsa2VyKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQotICAgIHsK
LSAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBkaXJlY3RvcnkgKyAiXFwqIjsKLSAgICAgICAgbV9o
YW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHBhdHRlcm4uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKSwgJm1fZGF0YSk7Ci0gICAgfQotCi0gICAgflBhdGhXYWxrZXIoKQotICAgIHsKLSAg
ICAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIDo6Rmlu
ZENsb3NlKG1faGFuZGxlKTsKLSAgICB9Ci0KLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBtX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsgfQotICAgIGNvbnN0IFdJTjMy
X0ZJTkRfREFUQVcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KLQotICAgIGJvb2wg
c3RlcCgpIHsgcmV0dXJuIDo6RmluZE5leHRGaWxlVyhtX2hhbmRsZSwgJm1fZGF0YSk7IH0KLQot
cHJpdmF0ZToKLSAgICBIQU5ETEUgbV9oYW5kbGU7Ci0gICAgV0lOMzJfRklORF9EQVRBVyBtX2Rh
dGE7Ci19OwotCiBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpblBhdGhzSW5E
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
cGF0aHM7CiAKLSAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJlY3RvcnkpOworICAgIFBhdGhXYWxr
ZXIgd2Fsa2VyKGRpcmVjdG9yeSwgIioiKTsKICAgICBpZiAoIXdhbGtlci5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBwYXRoczsKIAo=
</data>
<flag name="review"
          id="77901"
          type_id="1"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85727</attachid>
            <date>2011-03-14 15:10:49 -0700</date>
            <delta_ts>2011-03-14 15:13:46 -0700</delta_ts>
            <desc>[PATCH] Fix v4</desc>
            <filename>list_directory_win.patch</filename>
            <type>text/plain</type>
            <size>11501</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODEwNTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDMtMTQgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpbGVTeXN0ZW1X
aW4uY3BwIG5lZWRzIGxpc3REaXJlY3RvcnkoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYzMzEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzkxMjY2MzU+CisgICAgICAgIAorICAgICAgICBHaXZlIFN0cmluZ0NvbmNhdGVu
YXRlIHRoZSBhYmlsaXR5IHRvIGRlYWwgd2l0aCBjb25zdCBVQ2hhcioncyBhcyBhIFN0cmluZyB0
eXBlIHRvIGFwcGVuZC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6
CisKIDIwMTEtMDMtMTQgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiA4MTAzMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OSw2ICs4OSwzNCBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8PgorY2xh
c3MgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgVUNoYXIqPiB7CitwdWJsaWM6CisgICAgU3RyaW5n
VHlwZUFkYXB0ZXI8Y29uc3QgVUNoYXIqPihjb25zdCBVQ2hhciogYnVmZmVyKQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICB7CisgICAgICAgIHNpemVfdCBsZW4gPSAwOworICAgICAg
ICB3aGlsZSAobV9idWZmZXJbbGVuXSAhPSBVQ2hhcigwKSkKKyAgICAgICAgICAgIGxlbisrOwor
CisgICAgICAgIGlmIChsZW4gPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CisgICAgICAgICAgICBDUkFTSCgpOworCisgICAgICAgIG1fbGVuZ3RoID0gbGVuOworICAgIH0K
KworICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKKyAgICB2b2lk
IHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgbWVtY3B5KGRlc3Rp
bmF0aW9uLCBtX2J1ZmZlciwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2xlbmd0aCkgKiBzaXplb2Yo
VUNoYXIpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVUNoYXIqIG1fYnVmZmVyOwor
ICAgIHVuc2lnbmVkIG1fbGVuZ3RoOworfTsKKwordGVtcGxhdGU8PgogY2xhc3MgU3RyaW5nVHlw
ZUFkYXB0ZXI8Y29uc3QgY2hhcio+IHsKIHB1YmxpYzoKICAgICBTdHJpbmdUeXBlQWRhcHRlcjxj
b25zdCBjaGFyKj4oY29uc3QgY2hhciogYnVmZmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
ODEwNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyOSBAQAorMjAxMS0wMy0xNCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RmlsZVN5c3RlbVdpbi5jcHAgbmVlZHMgbGlzdERpcmVjdG9yeSgpIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMzMQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vOTEyNjYzNT4KKyAgICAgICAgCisgICAgICAgIE1vdmUgUGF0
aFdhbGtlciBmcm9tIGFuIGlubGluZSBjbGFzcyBpbiBXZWJLaXQyIHRvIGl0cyBvd24gY2xhc3Mg
aW4gV2ViQ29yZSwKKyAgICAgICAgc28gaXQgY2FuIGJlIHVzZWQgZnJvbSBib3RoIFdlYkNvcmUg
YW5kIFdlYktpdDIuCisgICAgICAgIAorICAgICAgICBJbXBsZW1lbnQgRmlsZVN5c3RlbVdpbjo6
bGlzdERpcmVjdG9yeSB1c2luZyBQYXRoV2Fsa2VyIHRvIHBvcHVsYXRlIHRoZSBWZWN0b3IKKyAg
ICAgICAgb2YgcGF0aHMgbWF0Y2hpbmcgdGhlIHBhc3NlZCBpbiBwYXR0ZXJuLgorCisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlzdERpcmVjdG9yeSk6IENh
bGwgdGhyb3VnaCB0byBQYXRoV2Fsa2VyLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXRoV2Fs
a2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXRoV2Fsa2VyOjpQYXRoV2Fsa2Vy
KTogTW92ZWQgZnJvbSBXZWJLaXQyLiBBZGRlZCBhIHNlY29uZCBhcmd1bWVudAorICAgICAgICAg
ICAgZm9yIHRoZSBwYXR0ZXJuIHRvIHBhc3MgdG8gdGhlIFdpbmRvd3MgRmlsZSBBUElzLgorICAg
ICAgICAoV2ViQ29yZTo6UGF0aFdhbGtlcjo6flBhdGhXYWxrZXIpOiBNb3ZlZCBmcm9tIFdlYktp
dDIuCisgICAgICAgIChXZWJDb3JlOjpQYXRoV2Fsa2VyOjppc1ZhbGlkKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpQYXRoV2Fsa2VyOjpkYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpQYXRoV2Fsa2VyOjpzdGVwKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luL1BhdGhX
YWxrZXIuaDogQWRkZWQuCisKIDIwMTEtMDMtMTQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gODEwMzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjYzMDksNiArMjYzMDksMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHdpblxQYXRoV2Fsa2VyLmNw
cCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXHdpblxQYXRoV2Fsa2VyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx3aW5cUGxhdGZvcm1Nb3VzZUV2ZW50
V2luLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAJKHJldmlzaW9uIDgxMDMzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw5ICszMSwxMSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGF0aFdhbGtlci5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAog
I2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3aW5iYXNlLmg+CkBAIC0yOTcsMTAgKzI5
OSwyMSBAQCBib29sIHNhZmVDcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQorVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9y
eShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4gZW50cmllczsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgUGF0
aFdhbGtlciB3YWxrZXIoZGlyZWN0b3J5LCBmaWx0ZXIpOworICAgIGlmICghd2Fsa2VyLmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisKKyAgICBkbyB7CisgICAgICAgIGlmICh3
YWxrZXIuZGF0YSgpLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlbnRyaWVzLmFwcGVuZChtYWtlU3Ry
aW5nKGRpcmVjdG9yeSwgIlxcIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHdhbGtl
ci5kYXRhKCkuY0ZpbGVOYW1lKSkpOworICAgIH0gd2hpbGUgKHdhbGtlci5zdGVwKCkpOworCiAg
ICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXRoV2Fsa2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGF0aFdhbGtlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGF0aFdhbGtlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGF0aFdhbGtlci5oIgorCisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBj
b25zdCBTdHJpbmcmIHBhdHRlcm4pCit7CisgICAgU3RyaW5nIHBhdGggPSBtYWtlU3RyaW5nKGRp
cmVjdG9yeSwgIlxcIiwgcGF0dGVybik7CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVX
KHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgJm1fZGF0YSk7Cit9CisKK1Bh
dGhXYWxrZXI6On5QYXRoV2Fsa2VyKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIDo6RmluZENsb3NlKG1faGFuZGxlKTsKK30KKworYm9vbCBQYXRoV2Fsa2Vy
OjpzdGVwKCkKK3sKKyAgICByZXR1cm4gOjpGaW5kTmV4dEZpbGVXKG1faGFuZGxlLCAmbV9kYXRh
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1BhdGhXYWxrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGF0aFdhbGtlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1BhdGhXYWxrZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworICAgIGNsYXNzIFN0cmluZzsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBQYXRoV2Fsa2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQYXRoV2Fsa2VyKTsKK3B1YmxpYzoKKyAgICBQYXRoV2Fsa2VyKGNvbnN0IFdURjo6U3RyaW5n
JiBkaXJlY3RvcnksIGNvbnN0IFdURjo6U3RyaW5nJiBwYXR0ZXJuKTsKKyAgICB+UGF0aFdhbGtl
cigpOworCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUgIT0gSU5W
QUxJRF9IQU5ETEVfVkFMVUU7IH0KKyAgICBjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICBib29sIHN0ZXAoKTsKKworcHJpdmF0ZToK
KyAgICBIQU5ETEUgbV9oYW5kbGU7CisgICAgV0lOMzJfRklORF9EQVRBVyBtX2RhdGE7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTA1NSkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDExLTAzLTE0ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaWxlU3lz
dGVtV2luLmNwcCBuZWVkcyBsaXN0RGlyZWN0b3J5KCkgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MzMxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS85MTI2NjM1PgorICAgICAgICAKKyAgICAgICAgTW92ZSBQYXRoV2Fsa2Vy
IGRvd24gaW50byBXZWJDb3JlLCBhbmQgY2FsbCB0aGUgUGF0aFdhbGtlciBpbiBXZWJDb3JlCisg
ICAgICAgICh0aGF0IG5vdyBoYXMgYSBzZWNvbmQgYXJndW1lbnQsIHRoZSBwYXR0ZXJuIHRvIHRh
a2UpLgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvd2luL1BsdWdpbkluZm9TdG9yZVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6cGx1Z2luUGF0aHNJbkRp
cmVjdG9yeSk6CisKIDIwMTEtMDMtMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4u
Y3BwCShyZXZpc2lvbiA4MTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCiAKICNpbmNsdWRlICJOZXRzY2FwZVBs
dWdpbk1vZHVsZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGF0aFdhbGtlci5oPgogI2luY2x1ZGUg
PHNobHdhcGkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yNTQsMzcgKzI1NSwx
MSBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpbnNECiAgICAgcmV0dXJu
IGRpcmVjdG9yaWVzOwogfQogCi1jbGFzcyBQYXRoV2Fsa2VyIHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShQYXRoV2Fsa2VyKTsKLXB1YmxpYzoKLSAgICBQYXRoV2Fsa2VyKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KQotICAgIHsKLSAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBkaXJlY3Rvcnkg
KyAiXFwqIjsKLSAgICAgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHBhdHRlcm4uY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgJm1fZGF0YSk7Ci0gICAgfQotCi0gICAgflBh
dGhXYWxrZXIoKQotICAgIHsKLSAgICAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIDo6RmluZENsb3NlKG1faGFuZGxlKTsKLSAgICB9Ci0KLSAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxV
RTsgfQotICAgIGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KLQotICAgIGJvb2wgc3RlcCgpIHsgcmV0dXJuIDo6RmluZE5leHRGaWxlVyhtX2hh
bmRsZSwgJm1fZGF0YSk7IH0KLQotcHJpdmF0ZToKLSAgICBIQU5ETEUgbV9oYW5kbGU7Ci0gICAg
V0lOMzJfRklORF9EQVRBVyBtX2RhdGE7Ci19OwotCiBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZv
U3RvcmU6OnBsdWdpblBhdGhzSW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiB7
CiAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CiAKLSAgICBQYXRoV2Fsa2VyIHdhbGtlcihkaXJl
Y3RvcnkpOworICAgIFBhdGhXYWxrZXIgd2Fsa2VyKGRpcmVjdG9yeSwgIioiKTsKICAgICBpZiAo
IXdhbGtlci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBwYXRoczsKIAo=
</data>
<flag name="review"
          id="77902"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>