<?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>9571</bug_id>
          
          <creation_ts>2006-06-24 22:38:45 -0700</creation_ts>
          <short_desc>Teach svn-apply and svn-unapply to handle directory adds and removes better</short_desc>
          <delta_ts>2006-06-25 12:46:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></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="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>47091</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-24 22:38:45 -0700</bug_when>
    <thetext>Currently svn-apply does a chdir() to every directory it adds.  This is unnecessary.  See:

http://bugzilla.opendarwin.org/show_bug.cgi?id=9485#c6

The svn-apply script doesn&apos;t know when to remove directories, e.g., when they are empty after all files and directories under them have been marked for removal.

Finally, the svn-unapply script doesn&apos;t know how to remove previously-added directories or add (revert) previously removed directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47092</commentid>
    <comment_count>1</comment_count>
      <attachid>9013</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-24 22:53:18 -0700</bug_when>
    <thetext>Created attachment 9013
Patch v1

Changes to svn-apply:

- Sorted subroutines alphabetically; handleBinaryChange() moved but did not change; addDirectoriesIfNeeded() was moved and had major changes.
- Changed addDirectoriesIfNeeded() subroutine to operation without changing directories.  Keep track of directories checked for adding in %checkedDirectories global.  Removed $startDir global variable.
- Extracted svnStatus() subroutine from existing code.
- Added removeDirectoriesIfNeeded() subroutine to check for empty directories.  It is called after all patches have been applied.
- Added isDirectoryEmptyForRemoval() subroutine used by removeDirectoriesIfNeeded() to determine if a directory is empty or not.  This sub uses the %removeDirectoryIgnoreList global to filter out directories to ignore when checking if a given directory is empty.  Note that &quot;return&quot; can&apos;t be used in the grep{} code block, otherwise that will cause the entire function to return.

Changes to svn-unapply:

- Sorted subroutines alphabetically; unapplyPatch() was moved but did not change.
- Extracted svnStatus() subroutine from existing code.
- Removed unused $startDir global variable.
- Added revertDirectories() subroutine.  Uses %directoriesToCheck global variable when running.  This variable is set as patches are unapplied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47115</commentid>
    <comment_count>2</comment_count>
      <attachid>9013</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-25 10:06:59 -0700</bug_when>
    <thetext>Comment on attachment 9013
Patch v1

+        if (exists $removeDirectoryIgnoreList{$_}) {
+            0;
+        }
+        elsif (! -d File::Spec-&gt;catdir($dir, $_)) {
+            1;
+        }
+        else {

Our formatting would be:

    } elsif

not

    }
    elsif

I&apos;m not sure that svn revert is the right thing to do in svn-unapply, but I can&apos;t think of any other way to bring the file back. Ideally the file would come back with the contents from the patch rather than the current contents in Subversion?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47123</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-25 12:38:35 -0700</bug_when>
    <thetext>Committed revision 15028.

Fixed formatting in svn-apply in revision 15029.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47124</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-25 12:46:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m not sure that svn revert is the right thing to do in svn-unapply, but I
&gt; can&apos;t think of any other way to bring the file back. Ideally the file would
&gt; come back with the contents from the patch rather than the current contents in
&gt; Subversion?

This will get fixed when the &quot;svn revert&quot; todo is done.  The svn-unapply script should do a smart comparison between the original (from &quot;svn revert&quot;) and the reversed patch.


</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9013</attachid>
            <date>2006-06-24 22:53:18 -0700</date>
            <delta_ts>2006-06-25 10:06:59 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-9571-v1.diff</filename>
            <type>text/plain</type>
            <size>10082</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE1MDI0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDYtMDYtMjUgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGtpbHplci5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTcxCisgICAgICAgIFRlYWNoIHN2bi1hcHBseSBhbmQgc3ZuLXVuYXBwbHkgdG8gaGFuZGxl
IGRpcmVjdG9yeSBhZGRzIGFuZCByZW1vdmVzIGJldHRlcgorCisgICAgICAgICogU2NyaXB0cy9z
dm4tYXBwbHk6IEhhbmRsZSBkaXJlY3RvcnkgYWRkcyBtb3JlIGludGVsbGlnZW50bHkuICBIYW5k
bGUgZGlyZWN0b3J5IHJlbW92ZXMuCisgICAgICAgICogU2NyaXB0cy9zdm4tdW5hcHBseTogSGFu
ZGxlIHVuZG9pbmcgYm90aCBkaXJlY3RvcnkgYWRkcyBhbmQgcmVtb3Zlcy4KKwogMjAwNi0wNi0y
NCAgSmFtZXMgRy4gU3BldGggIDxzcGV0aEBlbmQuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHJldmlzaW9uIDE1MDI0KQorKysgV2Vi
S2l0VG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDEw
IEBACiAjIERpZmZlcmVuY2VzIGZyb20gaW52b2tpbmcgInBhdGNoIC1wMCI6CiAjCiAjICAgSGFu
ZGxlcyBhZGRlZCBmaWxlcyAoZG9lcyBhIHN2biBhZGQpLgorIyAgIEhhbmRsZXMgYWRkZWQgZGly
ZWN0b3JpZXMgKGRvZXMgYSBzdm4gYWRkKS4KICMgICBIYW5kbGVzIHJlbW92ZWQgZmlsZXMgKGRv
ZXMgYSBzdm4gcm0pLgorIyAgIEhhbmRsZXMgcmVtb3ZlZCBkaXJlY3Rvcmllcy0tdGhvc2Ugd2l0
aCBubyBtb3JlIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGxlZnQgaW4gdGhlbQorIyAgICAgICAoZG9l
cyBhIHN2biBybSkuCiAjICAgSGFzIG1vZGUgd2hlcmUgaXQgd2lsbCByb2xsIGJhY2sgdG8gc3Zu
IHZlcnNpb24gbnVtYmVycyBpbiB0aGUgcGF0Y2ggZmlsZSBzbyBzdm4KICMgICAgICAgY2FuIGRv
IGEgMy13YXkgbWVyZ2UuCiAjICAgUGF0aHMgZnJvbSBJbmRleDogbGluZXMgYXJlIHVzZWQgcmF0
aGVyIHRoYW4gdGhlIHBhdGhzIG9uIHRoZSBwYXRjaCBsaW5lcywgd2hpY2gKQEAgLTYxLDcgKzY0
LDEwIEBAIHVzZSBNSU1FOjpCYXNlNjQ7CiBzdWIgYWRkRGlyZWN0b3JpZXNJZk5lZWRlZCgkKTsK
IHN1YiBhcHBseVBhdGNoKCQkOyQpOwogc3ViIGhhbmRsZUJpbmFyeUNoYW5nZSgkJCk7CitzdWIg
aXNEaXJlY3RvcnlFbXB0eUZvclJlbW92YWwoJCk7CiBzdWIgcGF0Y2goJCk7CitzdWIgcmVtb3Zl
RGlyZWN0b3JpZXNJZk5lZWRlZCgpOworc3ViIHN2blN0YXR1cygkKTsKIAogbXkgJG1lcmdlID0g
MDsKIG15ICRzaG93SGVscCA9IDA7CkBAIC03MCw4ICs3NiwxNCBAQCBpZiAoIUdldE9wdGlvbnMo
Im1lcmdlISIgPT4gXCRtZXJnZSwgImhlCiAgICAgZXhpdCAxOwogfQogCi1teSAkc3RhcnREaXIg
PSBnZXRjd2QoKTsKK215ICVyZW1vdmVEaXJlY3RvcnlJZ25vcmVMaXN0ID0gKAorICAgICcuJyA9
PiAxLAorICAgICcuLicgPT4gMSwKKyAgICAnLnN2bicgPT4gMSwKKyAgICAnX3N2bicgPT4gMSwK
Kyk7CiAKK215ICVjaGVja2VkRGlyZWN0b3JpZXM7CiBteSBAcGF0Y2hlczsKIG15ICV2ZXJzaW9u
czsKIApAQCAtMTE1LDggKzEyNywzNiBAQCBmb3IgJHBhdGNoIChAcGF0Y2hlcykgewogICAgIHBh
dGNoKCRwYXRjaCk7CiB9CiAKK3JlbW92ZURpcmVjdG9yaWVzSWZOZWVkZWQoKTsKKwogZXhpdCAw
OwogCitzdWIgYWRkRGlyZWN0b3JpZXNJZk5lZWRlZCgkKQoreworICAgIG15ICgkcGF0aCkgPSBA
XzsKKyAgICBteSBAZGlycyA9IEZpbGU6OlNwZWMtPnNwbGl0ZGlyKCRwYXRoKTsKKyAgICBteSAk
ZGlyID0gIi4iOworICAgIHdoaWxlIChzY2FsYXIgQGRpcnMpIHsKKyAgICAgICAgJGRpciA9IEZp
bGU6OlNwZWMtPmNhdGRpcigkZGlyLCBzaGlmdCBAZGlycyk7CisgICAgICAgIG5leHQgaWYgKGV4
aXN0cyAkY2hlY2tlZERpcmVjdG9yaWVzeyRkaXJ9KTsKKyAgICAgICAgaWYgKCEgLWUgJGRpcikg
eworICAgICAgICAgICAgbWtkaXIgJGRpciBvciBkaWUgIkZhaWxlZCB0byBjcmVhdGUgcmVxdWly
ZWQgZGlyZWN0b3J5ICckZGlyJyBmb3IgcGF0aCAnJHBhdGgnXG4iOworICAgICAgICAgICAgc3lz
dGVtICJzdm4iLCAiYWRkIiwgJGRpcjsKKyAgICAgICAgICAgICRjaGVja2VkRGlyZWN0b3JpZXN7
JGRpcn0gPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2lmICgtZCAkZGlyKSB7CisgICAgICAg
ICAgICBteSAkc3ZuT3V0cHV0ID0gc3ZuU3RhdHVzKCRkaXIpOworICAgICAgICAgICAgaWYgKCRz
dm5PdXRwdXQgJiYgc3Vic3RyKCRzdm5PdXRwdXQsIDAsIDEpIGVxICI/IikgeworICAgICAgICAg
ICAgICAgIHN5c3RlbSAic3ZuIiwgImFkZCIsICRkaXI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAkY2hlY2tlZERpcmVjdG9yaWVzeyRkaXJ9ID0gMTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGRpZSAiJyRkaXInIGlzIG5vdCBhIGRpcmVjdG9yeSI7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKIHN1YiBhcHBseVBhdGNoKCQkOyQpCiB7CiAgICAgbXkgKCRwYXRj
aCwgJGZ1bGxQYXRoLCAkb3B0aW9ucykgPSBAXzsKQEAgLTEyNywxMiArMTY3LDU5IEBAIHN1YiBh
cHBseVBhdGNoKCQkOyQpCiAgICAgY2xvc2UgUEFUQ0g7CiB9CiAKK3N1YiBoYW5kbGVCaW5hcnlD
aGFuZ2UoJCQpCit7CisgICAgbXkgKCRmdWxsUGF0aCwgJGNvbnRlbnRzKSA9IEBfOworICAgIGlm
ICgkY29udGVudHMgPX4gbSMoKFxuW0EtWmEtejAtOSsvXXs3Nn0pK1xuW0EtWmEtejAtOSsvPV17
NCw3Nn1cbilcbiMpIHsKKyAgICAgICAgIyBBZGRpdGlvbiBvciBNb2RpZmljYXRpb24KKyAgICAg
ICAgb3BlbiBGSUxFLCAiPiIsICRmdWxsUGF0aCBvciBkaWU7CisgICAgICAgIHByaW50IEZJTEUg
ZGVjb2RlX2Jhc2U2NCgkMSk7CisgICAgICAgIGNsb3NlIEZJTEU7CisgICAgICAgIG15ICRzdm5P
dXRwdXQgPSBzdm5TdGF0dXMoJGZ1bGxQYXRoKTsKKyAgICAgICAgaWYgKCRzdm5PdXRwdXQgJiYg
c3Vic3RyKCRzdm5PdXRwdXQsIDAsIDEpIGVxICI/IikgeworICAgICAgICAgICAgIyBBZGRpdGlv
bgorICAgICAgICAgICAgc3lzdGVtICJzdm4iLCAiYWRkIiwgJGZ1bGxQYXRoOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgIyBNb2RpZmljYXRpb24KKyAgICAgICAgICAgIHByaW50ICRz
dm5PdXRwdXQgaWYgJHN2bk91dHB1dDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
ICMgRGVsZXRpb24KKyAgICAgICAgc3lzdGVtICJzdm4iLCAicm0iLCAkZnVsbFBhdGg7CisgICAg
fQorfQorCitzdWIgaXNEaXJlY3RvcnlFbXB0eUZvclJlbW92YWwoJCkKK3sKKyAgICBteSAoJGRp
cikgPSBAXzsKKyAgICBvcGVuZGlyIERJUiwgJGRpciBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICck
ZGlyJyB0byBsaXN0IGZpbGVzOiAkPyI7CisgICAgbXkgQGZpbGVzID0gZ3JlcCB7CisgICAgICAg
IGlmIChleGlzdHMgJHJlbW92ZURpcmVjdG9yeUlnbm9yZUxpc3R7JF99KSB7CisgICAgICAgICAg
ICAwOworICAgICAgICB9CisgICAgICAgIGVsc2lmICghIC1kIEZpbGU6OlNwZWMtPmNhdGRpcigk
ZGlyLCAkXykpIHsKKyAgICAgICAgICAgIDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBteSAkc3ZuT3V0cHV0ID0gc3ZuU3RhdHVzKEZpbGU6OlNwZWMtPmNhdGRpcigk
ZGlyLCAkXykpOworICAgICAgICAgICAgaWYgKCRzdm5PdXRwdXQgJiYgc3Vic3RyKCRzdm5PdXRw
dXQsIDAsIDEpIGVxICJEIikgeworICAgICAgICAgICAgICAgIDA7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAxOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfSByZWFkZGlyIERJUjsKKyAgICBjbG9zZWRpciBESVI7CisgICAgcmV0dXJu
IHNjYWxhcihAZmlsZXMpID09IDA7Cit9CisKIHN1YiBwYXRjaCgkKQogewogICAgIG15ICgkcGF0
Y2gpID0gQF87CiAgICAgcmV0dXJuIGlmICEkcGF0Y2g7CiAKLSAgICAkcGF0Y2ggPX4gbXxeSW5k
ZXg6IChbXlxuXSspfCBvciBkaWUgIkZhaWxlZCB0byBmaW5kIEluZGV4OiBpbiBcIiRwYXRjaFwi
XG4iOworICAgICRwYXRjaCA9fiBtfF5JbmRleDogKFteXG5dKyl8IG9yIGRpZSAiRmFpbGVkIHRv
IGZpbmQgJ0luZGV4OicgaW4gXCIkcGF0Y2hcIlxuIjsKICAgICBteSAkZnVsbFBhdGggPSAkMTsK
IAogICAgIG15ICRkZWxldGlvbiA9IDA7CkBAIC0xODIsNDAgKzI2OSwyNyBAQCBzdWIgcGF0Y2go
JCkKICAgICB9CiB9CiAKLXN1YiBoYW5kbGVCaW5hcnlDaGFuZ2UoJCQpCitzdWIgcmVtb3ZlRGly
ZWN0b3JpZXNJZk5lZWRlZCgpCiB7Ci0gICAgbXkgKCRmdWxsUGF0aCwgJGNvbnRlbnRzKSA9IEBf
OwotICAgIGlmICgkY29udGVudHMgPX4gbSMoKFxuW0EtWmEtejAtOSsvXXs3Nn0pK1xuW0EtWmEt
ejAtOSsvPV17NCw3Nn1cbilcbiMpIHsKLSAgICAgICAgIyBBZGRpdGlvbiBvciBNb2RpZmljYXRp
b24KLSAgICAgICAgb3BlbiBGSUxFLCAiPiIsICRmdWxsUGF0aCBvciBkaWU7Ci0gICAgICAgIHBy
aW50IEZJTEUgZGVjb2RlX2Jhc2U2NCgkMSk7Ci0gICAgICAgIGNsb3NlIEZJTEU7Ci0gICAgICAg
IG9wZW4gU1ZOLCAic3ZuIHN0YXQgJyRmdWxsUGF0aCcgfCIgb3IgZGllOwotICAgICAgICBteSAk
c3ZuU3RhdHVzID0gPFNWTj47Ci0gICAgICAgIGNsb3NlIFNWTjsKLSAgICAgICAgaWYgKHN1YnN0
cigkc3ZuU3RhdHVzLCAwICwxKSBlcSAiPyIpIHsKLSAgICAgICAgICAgICMgQWRkaXRpb24KLSAg
ICAgICAgICAgIHN5c3RlbSAic3ZuIiwgImFkZCIsICRmdWxsUGF0aDsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICMgTW9kaWZpY2F0aW9uCi0gICAgICAgICAgICBwcmludCAkc3ZuU3Rh
dHVzOworICAgIGZvcmVhY2ggbXkgJGRpciAocmV2ZXJzZSBzb3J0IGtleXMgJWNoZWNrZWREaXJl
Y3RvcmllcykgeworICAgICAgICBpZiAoaXNEaXJlY3RvcnlFbXB0eUZvclJlbW92YWwoJGRpcikp
IHsKKyAgICAgICAgICAgIG15ICRzdm5PdXRwdXQ7CisgICAgICAgICAgICBvcGVuIFNWTiwgInN2
biBybSAnJGRpcicgfCIgb3IgZGllOworICAgICAgICAgICAgIyBPbmx5IHNhdmUgdGhlIGxhc3Qg
bGluZSBzaW5jZSBTdWJ2ZXJzaW9uIGxpc3RzIGFsbCBjaGFuZ2VkIHN0YXR1c2VzIGJlbG93ICRk
aXIKKyAgICAgICAgICAgIHdoaWxlICg8U1ZOPikgeworICAgICAgICAgICAgICAgICRzdm5PdXRw
dXQgPSAkXzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNsb3NlIFNWTjsKKyAgICAgICAg
ICAgIHByaW50ICRzdm5PdXRwdXQ7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAj
IERlbGV0aW9uCi0gICAgICAgIHN5c3RlbSAic3ZuIiwgInJtIiwgJGZ1bGxQYXRoOwogICAgIH0K
IH0KIAotc3ViIGFkZERpcmVjdG9yaWVzSWZOZWVkZWQoJCkKK3N1YiBzdm5TdGF0dXMoJCkKIHsK
LSAgICBteSAoJHBhdGgpID0gQF87Ci0gICAgbXkgQGRpcnMgPSBGaWxlOjpTcGVjLT5zcGxpdGRp
cigkcGF0aCk7Ci0gICAgd2hpbGUgKG15ICRkaXIgPSBzaGlmdCBAZGlycykgewotICAgICAgICBp
ZiAoISAteCAkZGlyKSB7Ci0gICAgICAgICAgICBta2RpciAkZGlyIG9yIGRpZSAiRmFpbGVkIGNy
ZWF0ZSByZXF1aXJlZCBkaXJlY3Rvcnk6ICRkaXIgZm9yIHBhdGg6ICRwYXRoXG4iOwotICAgICAg
ICAgICAgc3lzdGVtICJzdm4iLCAiYWRkIiwgJGRpcjsKLSAgICAgICAgfQotICAgICAgICBjaGRp
ciAkZGlyIG9yIGRpZSAiRmFpbGVkIHRvIGNoZGlyIHRvICRkaXJcbiI7Ci0gICAgfQotICAgIGNo
ZGlyICRzdGFydERpciBvciBkaWUgIkZhaWxlZCB0byBjaGRpciB0byAkc3RhcnREaXJcbiI7Cisg
ICAgbXkgKCRmdWxsUGF0aCkgPSBAXzsKKyAgICBvcGVuIFNWTiwgInN2biBzdGF0dXMgLS1ub24t
aW50ZXJhY3RpdmUgLS1ub24tcmVjdXJzaXZlICckZnVsbFBhdGgnIHwiIG9yIGRpZTsKKyAgICBt
eSAkc3ZuU3RhdHVzID0gPFNWTj47CisgICAgY2xvc2UgU1ZOOworICAgIHJldHVybiAkc3ZuU3Rh
dHVzOwogfQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tdW5hcHBseQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi11bmFwcGx5CShyZXZpc2lvbiAxNTAyNCkKKysr
IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDkgQEAKICMgRGlmZmVyZW5jZXMgZnJvbSBpbnZva2luZyAicGF0Y2ggLXAwIC1SIjoKICMK
ICMgICBIYW5kbGVzIGFkZGVkIGZpbGVzIChkb2VzIGEgc3ZuIHJtKS4gCi0jICAgSGFuZGxlcyBy
ZW1vdmVkIGZpbGVzIChkb2VzIGEgc3ZuIGFkZCkuIAorIyAgIEhhbmRsZXMgYWRkZWQgZGlyZWN0
b3JpZXMgKGRvZXMgYSBzdm4gcm0gYW5kIGEgcm1kaXIpLgorIyAgIEhhbmRsZXMgcmVtb3ZlZCBm
aWxlcyAoZG9lcyBhIHN2biByZXZlcnQpLiAKKyMgICBIYW5kbGVzIHJlbW92ZWQgZGlyZWN0b3Jp
ZXMgKGRvZXMgYSBzdm4gcmV2ZXJ0KS4gCiAjICAgUGF0aHMgZnJvbSBJbmRleDogbGluZXMgYXJl
IHVzZWQgcmF0aGVyIHRoYW4gdGhlIHBhdGhzIG9uIHRoZSBwYXRjaCBsaW5lcywgd2hpY2gKICMg
ICAgICAgbWFrZXMgcGF0Y2hlcyBnZW5lcmF0ZWQgYnkgImN2cyBkaWZmIiB3b3JrIChpbmNyZWFz
aW5nbHkgdW5pbXBvcnRhbnQgc2luY2Ugd2UKICMgICAgICAgdXNlIFN1YnZlcnNpb24gbm93KS4K
QEAgLTQ3LDE2ICs0OSwxOCBAQAogIyAgIE5vdGljZSBhIHBhdGNoIHRoYXQncyBiZWluZyB1bmFw
cGxpZWQgYXQgdGhlICJ3cm9uZyBsZXZlbCIgYW5kIG1ha2UgaXQgd29yayBhbnl3YXkuCiAjICAg
RG8gYSBkcnkgcnVuIG9uIHRoZSB3aG9sZSBwYXRjaCBhbmQgZG9uJ3QgZG8gYW55dGhpbmcgaWYg
cGFydCBvZiB0aGUgcGF0Y2ggaXMKICMgICAgICAgZ29pbmcgdG8gZmFpbCAocHJvYmFibHkgdG9v
IHN0cmljdCB1bmxlc3Mgd2UgZG8gdGhlIENoYW5nZUxvZyB0aGluZykuCi0jICAgUmVtb3ZlIG5l
dyBkaXJlY3RvcmllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBhZGRlZCBieSBzdm4tYXBwbHkuCiAK
IHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKIHVzZSBDd2Q7CiB1c2UgRmlsZTo6QmFzZW5h
bWU7Cit1c2UgRmlsZTo6U3BlYzsKIHVzZSBHZXRvcHQ6Okxvbmc7CiAKIHN1YiBwYXRjaCgkKTsK
K3N1YiByZXZlcnREaXJlY3RvcmllcygpOworc3ViIHN2blN0YXR1cygkKTsKIHN1YiB1bmFwcGx5
UGF0Y2goJCQ7JCk7CiAKIG15ICRzaG93SGVscCA9IDA7CkBAIC02NSw3ICs2OSw3IEBAIGlmICgh
R2V0T3B0aW9ucygiaGVscCEiID0+IFwkc2hvd0hlbHApIHwKICAgICBleGl0IDE7CiB9CiAKLW15
ICRzdGFydERpciA9IGdldGN3ZCgpOworbXkgJWRpcmVjdG9yaWVzVG9DaGVjazsKIAogbXkgJGlu
ZGV4UGF0aDsKIG15ICRwYXRjaDsKQEAgLTkxLDE3ICs5NSw5IEBAIHdoaWxlICg8PikgewogfQog
cGF0Y2goJHBhdGNoKTsKIAotZXhpdCAwOworcmV2ZXJ0RGlyZWN0b3JpZXMoKTsKIAotc3ViIHVu
YXBwbHlQYXRjaCgkJDskKQotewotICAgIG15ICgkcGF0Y2gsICRmdWxsUGF0aCwgJG9wdGlvbnMp
ID0gQF87Ci0gICAgJG9wdGlvbnMgPSBbXSBpZiAoISAkb3B0aW9ucyk7Ci0gICAgbXkgJGNvbW1h
bmQgPSAicGF0Y2ggIiAuIGpvaW4oIiAiLCAiLXAwIiwgIi1SIiwgQHskb3B0aW9uc30pOwotICAg
IG9wZW4gUEFUQ0gsICJ8ICRjb21tYW5kIiBvciBkaWUgIkZhaWxlZCB0byBwYXRjaCAkZnVsbFBh
dGhcbiI7Ci0gICAgcHJpbnQgUEFUQ0ggJHBhdGNoOwotICAgIGNsb3NlIFBBVENIOwotfQorZXhp
dCAwOwogCiBzdWIgcGF0Y2goJCkKIHsKQEAgLTExMCw2ICsxMDYsNyBAQCBzdWIgcGF0Y2goJCkK
IAogICAgICRwYXRjaCA9fiBtfF5JbmRleDogKFteXG5dKyl8IG9yIGRpZSAiRmFpbGVkIHRvIGZp
bmQgSW5kZXg6IGluIFwiJHBhdGNoXCJcbiI7CiAgICAgbXkgJGZ1bGxQYXRoID0gJDE7CisgICAg
JGRpcmVjdG9yaWVzVG9DaGVja3tkaXJuYW1lKCRmdWxsUGF0aCl9ID0gMTsKIAogICAgIG15ICRk
ZWxldGlvbiA9IDA7CiAgICAgbXkgJGFkZGl0aW9uID0gMDsKQEAgLTEzOCwzICsxMzUsNTMgQEAg
c3ViIHBhdGNoKCQpCiAgICAgICAgIHN5c3RlbSAic3ZuIiwgInJldmVydCIsICRmdWxsUGF0aDsK
ICAgICB9CiB9CisKK3N1YiByZXZlcnREaXJlY3RvcmllcygpCit7CisgICAgbXkgJWNoZWNrZWRE
aXJlY3RvcmllczsKKyAgICBmb3JlYWNoIG15ICRwYXRoIChyZXZlcnNlIHNvcnQga2V5cyAlZGly
ZWN0b3JpZXNUb0NoZWNrKSB7CisgICAgICAgIG15IEBkaXJzID0gRmlsZTo6U3BlYy0+c3BsaXRk
aXIoJHBhdGgpOworICAgICAgICB3aGlsZSAoc2NhbGFyIEBkaXJzKSB7CisgICAgICAgICAgICBt
eSAkZGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKEBkaXJzKTsKKyAgICAgICAgICAgIHBvcChAZGly
cyk7CisgICAgICAgICAgICBuZXh0IGlmIChleGlzdHMgJGNoZWNrZWREaXJlY3Rvcmllc3skZGly
fSk7CisgICAgICAgICAgICBpZiAoLWQgJGRpcikgeworICAgICAgICAgICAgICAgIG15ICRzdm5P
dXRwdXQgPSBzdm5TdGF0dXMoJGRpcik7CisgICAgICAgICAgICAgICAgaWYgKCRzdm5PdXRwdXQg
JiYgc3Vic3RyKCRzdm5PdXRwdXQsIDAsIDEpIGVxICJBIikgeworICAgICAgICAgICAgICAgICAg
IHN5c3RlbSAic3ZuIiwgInJldmVydCIsICRkaXI7CisgICAgICAgICAgICAgICAgICAgcm1kaXIg
JGRpcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzaWYgKCRzdm5PdXRw
dXQgJiYgc3Vic3RyKCRzdm5PdXRwdXQsIDAsIDEpIGVxICJEIikgeworICAgICAgICAgICAgICAg
ICAgIHN5c3RlbSAic3ZuIiwgInJldmVydCIsICRkaXI7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAjIE1vZGlmaWNhdGlvbgor
ICAgICAgICAgICAgICAgICAgICBwcmludCAkc3ZuT3V0cHV0IGlmICRzdm5PdXRwdXQ7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICRjaGVja2VkRGlyZWN0b3JpZXN7JGRpcn0g
PSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ZGllICInJGRpcicgaXMgbm90IGEgZGlyZWN0b3J5IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKworc3ViIHN2blN0YXR1cygkKQoreworICAgIG15ICgkZnVsbFBhdGgpID0g
QF87CisgICAgb3BlbiBTVk4sICJzdm4gc3RhdHVzIC0tbm9uLWludGVyYWN0aXZlIC0tbm9uLXJl
Y3Vyc2l2ZSAnJGZ1bGxQYXRoJyB8IiBvciBkaWU7CisgICAgbXkgJHN2blN0YXR1cyA9IDxTVk4+
OworICAgIGNsb3NlIFNWTjsKKyAgICByZXR1cm4gJHN2blN0YXR1czsKK30KKworc3ViIHVuYXBw
bHlQYXRjaCgkJDskKQoreworICAgIG15ICgkcGF0Y2gsICRmdWxsUGF0aCwgJG9wdGlvbnMpID0g
QF87CisgICAgJG9wdGlvbnMgPSBbXSBpZiAoISAkb3B0aW9ucyk7CisgICAgbXkgJGNvbW1hbmQg
PSAicGF0Y2ggIiAuIGpvaW4oIiAiLCAiLXAwIiwgIi1SIiwgQHskb3B0aW9uc30pOworICAgIG9w
ZW4gUEFUQ0gsICJ8ICRjb21tYW5kIiBvciBkaWUgIkZhaWxlZCB0byBwYXRjaCAkZnVsbFBhdGhc
biI7CisgICAgcHJpbnQgUEFUQ0ggJHBhdGNoOworICAgIGNsb3NlIFBBVENIOworfQo=
</data>
<flag name="review"
          id="2669"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>