<?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>40199</bug_id>
          
          <creation_ts>2010-06-04 19:31:28 -0700</creation_ts>
          <short_desc>HTML5 parser should normalize line endings</short_desc>
          <delta_ts>2010-06-07 11:34:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>234479</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 19:31:28 -0700</bug_when>
    <thetext>HTML5 parser should normalize line endings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234480</commentid>
    <comment_count>1</comment_count>
      <attachid>57947</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 19:48:14 -0700</bug_when>
    <thetext>Created attachment 57947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234538</commentid>
    <comment_count>2</comment_count>
      <attachid>57947</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-04 22:50:08 -0700</bug_when>
    <thetext>Comment on attachment 57947
Patch

WebCore/html/HTML5Lexer.cpp:335
 +  #define PEEK_AND_RECONSUME_IN(StateName)                                   \
Please add comments to these macros about when to use which.  It&apos;s not clear when to use PEEK_AND_ vs. normal RECONSUME

WebCore/html/HTML5Lexer.cpp:338
 +          if (!m_inputStreamPreprocessor.peek(source, m_lineNumber))         \
This might want to be a macro itself, sicne it&apos;s used other places.  EXIT_IF_PEEK_FAIL or something?

WebCore/html/HTML5Lexer.cpp:413
 +      if (m_skipLeadingNewLineForListing) {
We might want to document in the header why both the input stream preprocessor &quot;skip next newline&quot; and this m_skipLeadingNewLineForListing are needed.  They&apos;re both needed.  Mostly to cover the &lt;pre&gt;\r\n case cleanly.

WebCore/html/HTML5Lexer.cpp:1160
 +              // We ignore the return value because it&apos;s checked by the loop.
This comment is not clear.  What&apos;s the return value?  How is it checked by which loop?

WebCore/html/HTML5Lexer.h:138
 +              UChar nextInputCharacter() { return m_nextInputCharacter; }
const?

WebCore/html/HTML5Lexer.h:136
 +              InputStreamPreprocessor() : m_nextInputCharacter(&apos;\0&apos;), m_skipNextNewLine(false) { }
separate lines?

WebCore/html/HTML5Lexer.h:147
 +                          return false;
So I&apos;m not sure what a false vs. true return here mean.  False means that there is not enough data in the stream to be able to do the \r\n handling?

This just isn&apos;t clear.  You talked about adding more ASSERTs in InputStreamPreprocessor to prevent double-peeking too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234941</commentid>
    <comment_count>3</comment_count>
      <attachid>58051</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-07 11:19:52 -0700</bug_when>
    <thetext>Created attachment 58051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234951</commentid>
    <comment_count>4</comment_count>
      <attachid>58051</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-07 11:30:53 -0700</bug_when>
    <thetext>Comment on attachment 58051
Patch

Looks OK.  Thank you for all the extra commenting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234953</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-07 11:34:18 -0700</bug_when>
    <thetext>Committed r60790: &lt;http://trac.webkit.org/changeset/60790&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57947</attachid>
            <date>2010-06-04 19:48:14 -0700</date>
            <delta_ts>2010-06-07 11:19:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40199-20100604194813.patch</filename>
            <type>text/plain</type>
            <size>12891</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjE1NjJiM2Q3ZmViOTc3NTZlMDk3ZDMyZjA0YWI5NGU3NTY0ZGQyYS4uOTU3OWYyYTY5YjNlYTQz
MzQ0MjdmYzZhNzkzODFhNGZhOTYwZTdjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzNyBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEhUTUw1IHBhcnNlciBzaG91bGQgbm9y
bWFsaXplIGxpbmUgZW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAxOTkKKworICAgICAgICBXaGVuIHJlYWRpbmcgY2hhcmFjdGVycyBmcm9t
IHRoZSBzb3VyY2UsIHdlIG5lZWQgdG8gbm9ybWFsaXplIGxpbmUKKyAgICAgICAgZW5kaW5ncywg
d2hpY2ggbWVhbnMgdHJlYXRpbmcgXHIgYXMgXG4gYW5kIGZvbGRpbmcgXHJcbiBzZXF1ZW5jZXMg
aW50bworICAgICAgICBhIHNpbmdsZSBcbi4gIERvaW5nIHRoaXMgcmVxdWlyZXMgYSBzbGlnaHRs
eSB0aWdodGVyIHBhdHRlcm4gZm9yCisgICAgICAgIGFkdmFuY2luZyB0aGUgc291cmNlICh0byBt
YWtlIHN1cmUgd2UgdXBkYXRlIG91ciBzdGF0ZSBtYWNoaW5lCisgICAgICAgIGNvcnJlY3RseSku
CisKKyAgICAgICAgRml4ZXMgZmFzdC9jc3MvZmlyc3QtY2hpbGQtcHNldWRvLWNsYXNzLmh0bWwg
YW5kIGh1bmRyZWRzIG9mIG90aGVyCisgICAgICAgIExheW91dFRlc3RzIGluIHRoZSBIVE1MNSBw
YXJzZXIuCisKKyAgICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVMZXhlcjo6bmV4dFRva2VuKToKKyAgICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6OklucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpM
aW5lRW5kaW5nTm9ybWFsaXplcik6CisgICAgICAgICAgICAtIEludHJvZHVjZWQgSW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3IgdG8ga2VlcCB0cmFjayBvZiBvdXIgbGluZQorICAgICAgICAgICAgICBl
bmRpbmdzIHN0YXRlIG1hY2hpbmUuICBUaGlzIGNsYXNzIHdpbGwgZ3JvdyB0byBldmVudHVhbGx5
IGRvCisgICAgICAgICAgICAgIGFsbCB0aGUgaW5wdXQgc3RyZWFtIHByZXByb2Nlc3NpbmcgcmVx
dWlyZWQgYnkgdGhlIEhUTUw1IHNwZWMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjpJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6bmV4dElucHV0Q2hhcmFjdGVyKToKKyAgICAgICAgICAg
IC0gV2UgbmVlZCB0byBiZSBjYXJlZnVsIG5vdCB0byByZWFkICpzb3VyY2UgbW9yZSB0aGFuCisg
ICAgICAgICAgICAgIG9uY2UgYmVjYXVzZSB3ZSBuZWVkIHRvIGtub3cgd2hldGhlciB3ZSd2ZSB0
cmFuc2Zvcm1lZCB0aGUKKyAgICAgICAgICAgICAgY2hhcmFjdGVyLiAgS2VlcGluZyB0aGUgbmV4
dCBpbnB1dCBjaGFyYWN0ZXIgaW4gdGhpcyBzdGF0ZQorICAgICAgICAgICAgICBtYWNoaW5lIHJl
cXVpcmVzIHNvbWUgY2FyZWZ1bCBjb2RpbmcsIGJ1dCBzZWVtcyBhZHZhbnRhZ2VvdXMuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6cGVlayk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
YWR2YW5jZSk6CisKKzIwMTAtMDYtMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBIVE1MNSBw
YXJzZXIgc2hvdWxkIGJlIHdpdGhpbiAxJSBvZiBvbGQgcGFyc2VyIHBlcmZvcm1hbmNlCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDE3MgogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVM
ZXhlci5jcHAKaW5kZXggN2E4NzQ3YmIwMmI5NjkzMGNiODAxM2Q2NmE4MDUyZTc4M2VkOWJkNC4u
ODllMTJmMWM0MzVlNTViY2RlNGQ5MGQ0NDA1NTNhN2M0ODdjN2NiNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmNw
cApAQCAtMzI5LDE3ICszMjksMjQgQEAgaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6cHJvY2Vzc0Vu
dGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKICNkZWZpbmUgUkVDT05TVU1FX0lOKFN0YXRl
TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBk
byB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlTmFtZTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2MgPSAqc291cmNl
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgZ290byBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBQRUVL
X0FORF9SRUNPTlNVTUVfSU4oU3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gU3RhdGVOYW1l
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IucGVlayhzb3VyY2UsIG1fbGluZU51bWJl
cikpICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJh
Y3RlclRva2VuKHNvdXJjZSk7ICAgICAgICAgICAgICAgXAorICAgICAgICBjYyA9IG1faW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7ICAgICAgICAgICAgICAgXAog
ICAgICAgICBnb3RvIFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIEFEVkFO
Q0VfVE8oU3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZU5hbWU7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghbV9pbnB1dFN0
cmVhbVByZXByb2Nlc3Nvci5hZHZhbmNlKHNvdXJjZSwgbV9saW5lTnVtYmVyKSkgICAgICBcCiAg
ICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNl
KTsgICAgICAgICAgICAgICBcCi0gICAgICAgIGNjID0gKnNvdXJjZTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNjID0gbV9p
bnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAgICAgICAgICAg
ICBcCiAgICAgICAgIGdvdG8gU3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKQEAgLTM2Niw5
ICszNzMsMTAgQEAgaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6cHJvY2Vzc0VudGl0eShTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSkKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgbV9zdGF0ZSA9
IFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgX0ZMVVNIX0JVRkZFUkVEX0VORF9UQUcoKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYg
KHNvdXJjZS5pc0VtcHR5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWso
c291cmNlLCBtX2xpbmVOdW1iZXIpKSAgICAgIFwKICAgICAgICAgICAgIHJldHVybiBzaG91bGRF
bWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOyAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgY2MgPSAqc291cmNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgY2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5l
eHRJbnB1dENoYXJhY3RlcigpOyAgICAgICAgICAgICAgIFwKICAgICAgICAgZ290byBTdGF0ZU5h
bWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKIApAQCAtMzk3LDE2ICs0MDUsMTggQEAgYm9vbCBIVE1MNUxl
eGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2Vu
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjcGFyc2lu
Zy1tYWluLWluYm9keQotICAgIGlmIChtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcgJiYg
bV9zdGF0ZSA9PSBEYXRhU3RhdGUgJiYgIXNvdXJjZS5pc0VtcHR5KCkgJiYgKnNvdXJjZSA9PSAn
XHgwQScpCi0gICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCdceDBBJyk7Ci0gICAgbV9z
a2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0gZmFsc2U7Ci0KLSAgICBpZiAoc291cmNlLmlz
RW1wdHkoKSkKKyAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCAhbV9pbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvci5wZWVrKHNvdXJjZSwgbV9saW5lTnVtYmVyKSkKICAgICAgICAgcmV0dXJuIHNob3Vs
ZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CisgICAgVUNoYXIgY2MgPSBtX2lu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOworCisgICAgLy8gaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
dG9rZW5pemF0aW9uLmh0bWwjcGFyc2luZy1tYWluLWluYm9keQorICAgIGlmIChtX3NraXBMZWFk
aW5nTmV3TGluZUZvckxpc3RpbmcpIHsKKyAgICAgICAgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JM
aXN0aW5nID0gZmFsc2U7CisgICAgICAgIGlmIChtX3N0YXRlID09IERhdGFTdGF0ZSAmJiBjYyA9
PSAnXG4nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgIH0KIAogICAg
IC8vIFNvdXJjZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay8jdG9rZW5pc2F0aW9uMAotICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKICAgICBzd2l0Y2gg
KG1fc3RhdGUpIHsKICAgICBCRUdJTl9TVEFURShEYXRhU3RhdGUpIHsKICAgICAgICAgaWYgKGNj
ID09ICcmJykKQEAgLTQyOCw3ICs0MzgsNyBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihT
ZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgQkVHSU5fU1RB
VEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUpIHsKICAgICAgICAgaWYgKCFwcm9jZXNz
RW50aXR5KHNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hh
cmFjdGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7Cisg
ICAgICAgIFBFRUtfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCkBAIC00NDcsNyArNDU3LDcgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4o
U2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgIEJFR0lOX1NU
QVRFKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpIHsKICAgICAgICAgaWYgKCFwcm9j
ZXNzRW50aXR5KHNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVk
Q2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgUkVDT05TVU1FX0lOKFJDREFUQVN0YXRl
KTsKKyAgICAgICAgUEVFS19BTkRfUkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKICAgICB9CiAg
ICAgRU5EX1NUQVRFKCkKIApAQCAtMTEwMCwxMSArMTExMCwxMSBAQCBib29sIEhUTUw1TGV4ZXI6
Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAg
ICAgICAgIC8vIGtlZXBpbmcgdHJhY2sgb2YgdGhpcyBleHBsaWN0bHksIHdlIG9ic2VydmUgdGhh
dCB0aGUgcHJldmlvdXMKICAgICAgICAgLy8gc3RhdGUgY2FuIGJlIGRldGVybWluZWQgYnkgbV9h
ZGRpdGlvbmFsQWxsb3dlZENoYXJhY3Rlci4KICAgICAgICAgaWYgKG1fYWRkaXRpb25hbEFsbG93
ZWRDaGFyYWN0ZXIgPT0gJyInKQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZh
bHVlRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgUEVFS19BTkRfUkVDT05TVU1FX0lO
KEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChtX2Fk
ZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICdcJycpCi0gICAgICAgICAgICBSRUNPTlNVTUVf
SU4oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBQRUVLX0FO
RF9SRUNPTlNVTUVfSU4oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAg
IGVsc2UgaWYgKG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJz4nKQotICAgICAgICAg
ICAgUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgICAg
ICBQRUVLX0FORF9SRUNPTlNVTUVfSU4oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAt
MTE0MiwxMSArMTE1MiwxMiBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAgIC8vIGNvbW1lbnQgZWFy
bHkgaWYgd2UgZG9uJ3QgaGF2ZSB0aGUgd2hvbGUgaW5wdXQgc3RyZWFtIGF2YWlsYWJsZS4KICAg
ICAgICAgbV90b2tlbi0+YmVnaW5Db21tZW50KCk7CiAgICAgICAgIHdoaWxlICghc291cmNlLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgY2MgPSAqc291cmNlOworICAgICAgICAgICAgY2MgPSBt
X2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOwogICAgICAgICAg
ICAgaWYgKGNjID09ICc+JykKICAgICAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0
YVN0YXRlKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAg
ICAgICAgICBzb3VyY2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOworICAgICAgICAgICAgbV9pbnB1
dFN0cmVhbVByZXByb2Nlc3Nvci5hZHZhbmNlKHNvdXJjZSwgbV9saW5lTnVtYmVyKTsKKyAgICAg
ICAgICAgIC8vIFdlIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGJlY2F1c2UgaXQncyBjaGVja2Vk
IGJ5IHRoZSBsb29wLgogICAgICAgICB9CiAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE2MywxNCArMTE3NCwxNCBAQCBib29sIEhUTUw1TGV4
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4p
CiAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKICAgICAgICAg
ICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScpOwogICAgICAgICAgICAgICAgIG1f
dG9rZW4tPmJlZ2luQ29tbWVudCgpOwotICAgICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihDb21t
ZW50U3RhcnRTdGF0ZSk7CisgICAgICAgICAgICAgICAgUEVFS19BTkRfUkVDT05TVU1FX0lOKENv
bW1lbnRTdGFydFN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgICAgICAgICByZXR1cm4g
c2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnRCcgfHwgY2MgPT0gJ2QnKSB7CiAgICAgICAgICAgICBTZWdtZW50ZWRTdHJp
bmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNl
KGRvY3R5cGVTdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJp
bmc6OkRpZE1hdGNoKSB7CiAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVEln
bm9yaW5nQ2FzZShzb3VyY2UsICJkb2N0eXBlIik7Ci0gICAgICAgICAgICAgICAgUkVDT05TVU1F
X0lOKERPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAgICAgICAgUEVFS19BTkRfUkVDT05TVU1FX0lO
KERPQ1RZUEVTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50
ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNo
b3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CiAgICAgICAgIH0KQEAgLTEz
NTUsMTQgKzEzNjYsMTQgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgIFNlZ21lbnRl
ZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmlu
Z0Nhc2UocHVibGljU3RyaW5nKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmlu
Z0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJwdWJsaWMiKTsKLSAgICAgICAgICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSk7CisgICAg
ICAgICAgICAgICAgICAgIFBFRUtfQU5EX1JFQ09OU1VNRV9JTihBZnRlckRPQ1RZUEVQdWJsaWNL
ZXl3b3JkU3RhdGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICdTJyB8fCBjYyA9PSAncycpIHsKICAgICAgICAgICAgICAgICBT
ZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFk
SWdub3JpbmdDYXNlKHN5c3RlbVN0cmluZyk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9
PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgIGFkdmFu
Y2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAic3lzdGVtIik7Ci0gICAgICAg
ICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUp
OworICAgICAgICAgICAgICAgICAgICBQRUVLX0FORF9SRUNPTlNVTUVfSU4oQWZ0ZXJET0NUWVBF
U3lzdGVtS2V5d29yZFN0YXRlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9
PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwogICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaCBiL1dlYkNv
cmUvaHRtbC9IVE1MNUxleGVyLmgKaW5kZXggYjk1Y2RmYmJlMWZlYjJlYjUyOTYzODNkZmY4OTJi
MTMxNWE4NjI2OS4uMDU2ZmYwNWM0YWI0M2ZlMTIzYTJiYzkxN2JiMDgyN2Y0M2IwNDRhMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TDVMZXhlci5oCkBAIC0xMzAsNiArMTMwLDQ1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBza2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nKCkgeyBtX3NraXBMZWFkaW5nTmV3
TGluZUZvckxpc3RpbmcgPSB0cnVlOyB9CiAKICAgICBwcml2YXRlOgorICAgICAgICAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNz
aW5nLXRoZS1pbnB1dC1zdHJlYW0KKyAgICAgICAgY2xhc3MgSW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3IgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBJ
bnB1dFN0cmVhbVByZXByb2Nlc3NvcigpIDogbV9uZXh0SW5wdXRDaGFyYWN0ZXIoJ1wwJyksIG1f
c2tpcE5leHROZXdMaW5lKGZhbHNlKSB7IH0KKworICAgICAgICAgICAgVUNoYXIgbmV4dElucHV0
Q2hhcmFjdGVyKCkgeyByZXR1cm4gbV9uZXh0SW5wdXRDaGFyYWN0ZXI7IH0KKworICAgICAgICAg
ICAgYm9vbCBwZWVrKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBpbnQmIGxpbmVOdW1iZXIpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAqc291
cmNlOworICAgICAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9PSAnXG4nICYm
IG1fc2tpcE5leHROZXdMaW5lKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdM
aW5lID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5ld2xp
bmUobGluZU51bWJlcik7CisgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICpzb3VyY2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9PSAnXHInKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gJ1xuJzsKKyAgICAgICAgICAg
ICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IGZhbHNlOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29s
IGFkdmFuY2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGludCYgbGluZU51bWJlcikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZShsaW5lTnVtYmVyKTsKKyAg
ICAgICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBwZWVrKHNvdXJjZSwgbGluZU51
bWJlcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI25leHQt
aW5wdXQtY2hhcmFjdGVyCisgICAgICAgICAgICBVQ2hhciBtX25leHRJbnB1dENoYXJhY3RlcjsK
KyAgICAgICAgICAgIGJvb2wgbV9za2lwTmV4dE5ld0xpbmU7CisgICAgICAgIH07CisKICAgICAg
ICAgaW5saW5lIHZvaWQgZW1pdENoYXJhY3RlcihVQ2hhcik7CiAgICAgICAgIGlubGluZSB2b2lk
IGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgIGlubGluZSB2b2lkIGVtaXRDdXJyZW50VG9rZW4o
KTsKQEAgLTE2OSw2ICsyMDgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8g
aHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYWRkaXRp
b25hbC1hbGxvd2VkLWNoYXJhY3RlcgogICAgICAgICBVQ2hhciBtX2FkZGl0aW9uYWxBbGxvd2Vk
Q2hhcmFjdGVyOworCisgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvI3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVhbQorICAgICAg
ICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yOwogICAg
IH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58051</attachid>
            <date>2010-06-07 11:19:52 -0700</date>
            <delta_ts>2010-06-07 11:30:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40199-20100607111951.patch</filename>
            <type>text/plain</type>
            <size>14708</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjliMThiYzIyMWQ5Y2NlZjNkYmQ0OWMwODk1YWExMTgxOWI1ZTU5MC4uMWZlOThlNDU2ZWNmMmEw
YjRhODUxYjU0MmMyZjFlYzA1MTFkMTk4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNi0wNyAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEhUTUw1IHBhcnNlciBzaG91bGQgbm9ybWFsaXplIGxpbmUg
ZW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAxOTkKKworICAgICAgICBXaGVuIHJlYWRpbmcgY2hhcmFjdGVycyBmcm9tIHRoZSBzb3VyY2Us
IHdlIG5lZWQgdG8gbm9ybWFsaXplIGxpbmUKKyAgICAgICAgZW5kaW5ncywgd2hpY2ggbWVhbnMg
dHJlYXRpbmcgXHIgYXMgXG4gYW5kIGZvbGRpbmcgXHJcbiBzZXF1ZW5jZXMgaW50bworICAgICAg
ICBhIHNpbmdsZSBcbi4gIERvaW5nIHRoaXMgcmVxdWlyZXMgYSBzbGlnaHRseSB0aWdodGVyIHBh
dHRlcm4gZm9yCisgICAgICAgIGFkdmFuY2luZyB0aGUgc291cmNlICh0byBtYWtlIHN1cmUgd2Ug
dXBkYXRlIG91ciBzdGF0ZSBtYWNoaW5lCisgICAgICAgIGNvcnJlY3RseSkuCisKKyAgICAgICAg
Rml4ZXMgZmFzdC9jc3MvZmlyc3QtY2hpbGQtcHNldWRvLWNsYXNzLmh0bWwgYW5kIGh1bmRyZWRz
IG9mIG90aGVyCisgICAgICAgIExheW91dFRlc3RzIGluIHRoZSBIVE1MNSBwYXJzZXIuCisKKyAg
ICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhl
cjo6bmV4dFRva2VuKToKKyAgICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUw1TGV4ZXI6OklucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpMaW5lRW5kaW5nTm9y
bWFsaXplcik6CisgICAgICAgICAgICAtIEludHJvZHVjZWQgSW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3IgdG8ga2VlcCB0cmFjayBvZiBvdXIgbGluZQorICAgICAgICAgICAgICBlbmRpbmdzIHN0YXRl
IG1hY2hpbmUuICBUaGlzIGNsYXNzIHdpbGwgZ3JvdyB0byBldmVudHVhbGx5IGRvCisgICAgICAg
ICAgICAgIGFsbCB0aGUgaW5wdXQgc3RyZWFtIHByZXByb2Nlc3NpbmcgcmVxdWlyZWQgYnkgdGhl
IEhUTUw1IHNwZWMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjpJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6bmV4dElucHV0Q2hhcmFjdGVyKToKKyAgICAgICAgICAgIC0gV2UgbmVlZCB0
byBiZSBjYXJlZnVsIG5vdCB0byByZWFkICpzb3VyY2UgbW9yZSB0aGFuCisgICAgICAgICAgICAg
IG9uY2UgYmVjYXVzZSB3ZSBuZWVkIHRvIGtub3cgd2hldGhlciB3ZSd2ZSB0cmFuc2Zvcm1lZCB0
aGUKKyAgICAgICAgICAgICAgY2hhcmFjdGVyLiAgS2VlcGluZyB0aGUgbmV4dCBpbnB1dCBjaGFy
YWN0ZXIgaW4gdGhpcyBzdGF0ZQorICAgICAgICAgICAgICBtYWNoaW5lIHJlcXVpcmVzIHNvbWUg
Y2FyZWZ1bCBjb2RpbmcsIGJ1dCBzZWVtcyBhZHZhbnRhZ2VvdXMuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MNUxleGVyOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6cGVlayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNUxleGVyOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6YWR2YW5jZSk6CisK
IDIwMTAtMDYtMDcgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIG15IEhUTUwgY29tbWVudCBwYXJzaW5nIGNo
YW5nZSBhcyBpdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwIGIvV2Vi
Q29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwCmluZGV4IGFhMDRhZjJmYzYzMjY0ZDExZWEwODhkMDM2
ZmI2NDFkNWFjZTk2OGYuLmEyMmNiZDljYWZkMGI0Y2E0MzZjNTRkYWY1NjNmNGVlMjE4OWRmNjQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTDVMZXhlci5jcHAKQEAgLTMyNiwyMyArMzI2LDQyIEBAIGlubGluZSBib29sIEhUTUw1
TGV4ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAjZGVmaW5lIEJF
R0lOX1NUQVRFKHN0YXRlTmFtZSkgY2FzZSBzdGF0ZU5hbWU6IHN0YXRlTmFtZToKICNkZWZpbmUg
RU5EX1NUQVRFKCkgQVNTRVJUX05PVF9SRUFDSEVEKCk7IGJyZWFrOwogCisvLyBXZSB1c2UgdGhp
cyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgInJlY29uc3VtZSB0aGUgY3VycmVudCBp
bnB1dAorLy8gY2hhcmFjdGVyIGluIHRoZSA8bXVtYmxlPiBzdGF0ZS4iCiAjZGVmaW5lIFJFQ09O
U1VNRV9JTihzdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IGNjID0gKnNvdXJjZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAK
Ky8vIFdlIHVzZSB0aGlzIG1hY3JvIHdoZW4gdGhlIEhUTUw1IHNwZWMgc2F5cyAiY29uc3VtZSB0
aGUgbmV4dCBpbnB1dAorLy8gY2hhcmFjdGVyIC4uLiBhbmQgc3dpdGNoIHRvIHRoZSA8bXVtYmxl
PiBzdGF0ZS4iCiAjZGVmaW5lIEFEVkFOQ0VfVE8oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzb3VyY2Uu
aXNFbXB0eSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIGlmICghbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5hZHZhbmNlKHNvdXJjZSwg
bV9saW5lTnVtYmVyKSkgICAgICBcCisgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsgICAgICAgICAgICAgICBcCisgICAgICAgIGNjID0g
bV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAgICAgICAg
ICAgICBcCisgICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKy8vIFNv
bWV0aW1lcyB0aGVyZSdzIG1vcmUgY29tcGxpY2F0ZWQgbG9naWMgaW4gdGhlIHNwZWMgdGhhdCBz
ZXBhcmF0ZXMgd2hlbgorLy8gd2UgY29uc3VtZSB0aGUgbmV4dCBpbnB1dCBjaGFyYWN0ZXIgYW5k
IHdoZW4gd2Ugc3dpdGNoIHRvIGEgcGFydGljdWxhcgorLy8gc3RhdGUuICBXZSBoYW5kbGUgdGhv
c2UgY2FzZXMgYnkgYWR2YW5jaW5nIHRoZSBzb3VyY2UgZGlyZWN0bHkgYW5kIHVzaW5nCisvLyB0
aGlzIG1hY3JvIHRvIHN3aXRjaCB0byB0aGUgaW5kaWNhdGVkIHN0YXRlLgorI2RlZmluZSBTV0lU
Q0hfVE8oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1l
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IucGVlayhzb3VyY2UsIG1fbGluZU51bWJl
cikpICAgICAgICAgXAogICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJh
Y3RlclRva2VuKHNvdXJjZSk7ICAgICAgICAgICAgICAgXAotICAgICAgICBjYyA9ICpzb3VyY2U7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVy
KCk7ICAgICAgICAgICAgICAgXAogICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZh
bHNlKQogCisvLyBXZSB1c2UgdGhpcyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgIkVt
aXQgdGhlIGN1cnJlbnQgPG11bWJsZT4KKy8vIHRva2VuLiBTd2l0Y2ggdG8gdGhlIDxtdW1ibGU+
IHN0YXRlLiIgIFdlIHVzZSB0aGUgd29yZCAicmVzdW1lIiBpbnN0ZWFkIG9mCisvLyBzd2l0Y2gg
dG8gaW5kaWNhdGUgdGhhdCB0aGlzIG1hY3JvIGFjdHVhbGx5IHJldHVybnMgYW5kIHRoYXQgd2Un
bGwgZW5kIHVwCisvLyBpbiB0aGUgc3RhdGUgd2hlbiB3ZSAicmVzdW1lIiAoaS5lLiwgYXJlIGNh
bGxlZCBhZ2FpbikuCiAjZGVmaW5lIEVNSVRfQU5EX1JFU1VNRV9JTihzdGF0ZU5hbWUpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCkBAIC0zNjYsOSArMzg1LDEwIEBAIGlubGluZSBib29sIEhUTUw1
TGV4ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIF9GTFVTSF9CVUZGRVJFRF9F
TkRfVEFHKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB8fCAhbV9p
bnB1dFN0cmVhbVByZXByb2Nlc3Nvci5wZWVrKHNvdXJjZSwgbV9saW5lTnVtYmVyKSkgICAgICBc
CiAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291
cmNlKTsgICAgICAgICAgICAgICBcCi0gICAgICAgIGNjID0gKnNvdXJjZTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNjID0g
bV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAgICAgICAg
ICAgICBcCiAgICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKQEAgLTM5
NywxNiArNDE3LDI4IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgfQogICAgIH0KIAotICAgIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlw
YWdlL3Rva2VuaXphdGlvbi5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHkKLSAgICBpZiAobV9za2lw
TGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nICYmIG1fc3RhdGUgPT0gRGF0YVN0YXRlICYmICFzb3Vy
Y2UuaXNFbXB0eSgpICYmICpzb3VyY2UgPT0gJ1x4MEEnKQotICAgICAgICBzb3VyY2UuYWR2YW5j
ZUFuZEFTU0VSVCgnXHgwQScpOwotICAgIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZyA9
IGZhbHNlOwotCi0gICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCisgICAgaWYgKHNvdXJjZS5pc0Vt
cHR5KCkgfHwgIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IucGVlayhzb3VyY2UsIG1fbGluZU51
bWJlcikpCiAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihz
b3VyY2UpOworICAgIFVDaGFyIGNjID0gbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5w
dXRDaGFyYWN0ZXIoKTsKKworICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI3BhcnNpbmctbWFp
bi1pbmJvZHkKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBsb2dpYyBpcyBkaWZmZXJlbnQgdGhhbiB0
aGUgZ2VuZXJpYyBcclxuIGNvbGxhcHNpbmcKKyAgICAvLyBoYW5kbGVkIGluIHRoZSBpbnB1dCBz
dHJlYW0gcHJlcHJvY2Vzc29yLiAgVGhpcyBsb2dpYyBpcyBoZXJlIGFzIGFuCisgICAgLy8gImF1
dGhvcmluZyBjb252ZW5pZW5jZSIgc28gZm9sa3MgY2FuIHdyaXRlOgorICAgIC8vCisgICAgLy8g
PHByZT4KKyAgICAvLyBsb3JlbSBpcHN1bQorICAgIC8vIGxvcmVtIGlwc3VtCisgICAgLy8gPC9w
cmU+CisgICAgLy8KKyAgICAvLyB3aXRob3V0IGdldHRpbmcgYW4gZXh0cmEgbmV3bGluZSBhdCB0
aGUgc3RhcnQgb2YgdGhlaXIgPHByZT4gZWxlbWVudC4KKyAgICBpZiAobV9za2lwTGVhZGluZ05l
d0xpbmVGb3JMaXN0aW5nKSB7CisgICAgICAgIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGlu
ZyA9IGZhbHNlOworICAgICAgICBpZiAobV9zdGF0ZSA9PSBEYXRhU3RhdGUgJiYgY2MgPT0gJ1xu
JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICB9CiAKICAgICAvLyBT
b3VyY2U6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
I3Rva2VuaXNhdGlvbjAKLSAgICBVQ2hhciBjYyA9ICpzb3VyY2U7CiAgICAgc3dpdGNoIChtX3N0
YXRlKSB7CiAgICAgQkVHSU5fU1RBVEUoRGF0YVN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAn
JicpCkBAIC00MjgsNyArNDYwLDcgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgIEJFR0lOX1NUQVRFKENo
YXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlKSB7CiAgICAgICAgIGlmICghcHJvY2Vzc0VudGl0
eShzb3VyY2UpKQogICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3Rl
clRva2VuKHNvdXJjZSk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAg
ICBTV0lUQ0hfVE8oRGF0YVN0YXRlKTsKICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtNDQ3
LDcgKzQ3OSw3IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYg
c291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICBCRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZl
cmVuY2VJblJDREFUQVN0YXRlKSB7CiAgICAgICAgIGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2Up
KQogICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNv
dXJjZSk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CisgICAgICAgIFNXSVRD
SF9UTyhSQ0RBVEFTdGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTExMDAsMTEg
KzExMzIsMTEgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAgICAvLyBrZWVwaW5nIHRyYWNrIG9mIHRo
aXMgZXhwbGljdGx5LCB3ZSBvYnNlcnZlIHRoYXQgdGhlIHByZXZpb3VzCiAgICAgICAgIC8vIHN0
YXRlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIuCiAg
ICAgICAgIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICciJykKLSAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAg
ICAgICAgIFNXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAg
ICAgZWxzZSBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnXCcnKQotICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOworICAg
ICAgICAgICAgU1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOwogICAg
ICAgICBlbHNlIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICc+JykKLSAgICAg
ICAgICAgIFJFQ09OU1VNRV9JTihBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOworICAgICAg
ICAgICAgU1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTExNDIsMTEg
KzExNzQsMTMgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAgICAvLyBjb21tZW50IGVhcmx5IGlmIHdl
IGRvbid0IGhhdmUgdGhlIHdob2xlIGlucHV0IHN0cmVhbSBhdmFpbGFibGUuCiAgICAgICAgIG1f
dG9rZW4tPmJlZ2luQ29tbWVudCgpOwogICAgICAgICB3aGlsZSAoIXNvdXJjZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAgIGNjID0gbV9pbnB1dFN0
cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsKICAgICAgICAgICAgIGlmIChj
YyA9PSAnPicpCiAgICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7
CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAg
c291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVyKTsKKyAgICAgICAgICAgIG1faW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3IuYWR2YW5jZShzb3VyY2UsIG1fbGluZU51bWJlcik7CisgICAgICAgICAgICAv
LyBXZSBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSAod2hpY2ggaW5kaWNhdGVzIHRoYXQgfHNvdXJj
ZXwgaXMKKyAgICAgICAgICAgIC8vIGVtcHR5KSBiZWNhdXNlIGl0J3MgY2hlY2tlZCBieSB0aGUg
bG9vcCBjb25kaXRpb24gYWJvdmUuCiAgICAgICAgIH0KICAgICAgICAgbV9zdGF0ZSA9IERhdGFT
dGF0ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTYzLDE0ICsxMTk3LDE0IEBAIGJvb2wg
SFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2Vu
JiB0b2tlbikKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScpOwog
ICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7CiAgICAgICAgICAg
ICAgICAgbV90b2tlbi0+YmVnaW5Db21tZW50KCk7Ci0gICAgICAgICAgICAgICAgUkVDT05TVU1F
X0lOKENvbW1lbnRTdGFydFN0YXRlKTsKKyAgICAgICAgICAgICAgICBTV0lUQ0hfVE8oQ29tbWVu
dFN0YXJ0U3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiBzaG91
bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwogICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICdEJyB8fCBjYyA9PSAnZCcpIHsKICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6
TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UoZG9j
dHlwZVN0cmluZyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
RGlkTWF0Y2gpIHsKICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3Jp
bmdDYXNlKHNvdXJjZSwgImRvY3R5cGUiKTsKLSAgICAgICAgICAgICAgICBSRUNPTlNVTUVfSU4o
RE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgICAgICBTV0lUQ0hfVE8oRE9DVFlQRVN0YXRlKTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5v
dWdoQ2hhcmFjdGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVk
Q2hhcmFjdGVyVG9rZW4oc291cmNlKTsKICAgICAgICAgfQpAQCAtMTM1NSwxNCArMTM4OSwxNCBA
QCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRN
TDVUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhl
YWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNTdHJp
bmcpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRN
YXRjaCkgewogICAgICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3Jp
bmdDYXNlKHNvdXJjZSwgInB1YmxpYyIpOwotICAgICAgICAgICAgICAgICAgICBSRUNPTlNVTUVf
SU4oQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAg
U1dJVENIX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSk7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0
ZXJzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFj
dGVyVG9rZW4oc291cmNlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1MnIHx8IGNj
ID09ICdzJykgewogICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVz
dWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uoc3lzdGVtU3RyaW5nKTsK
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gp
IHsKICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2Fz
ZShzb3VyY2UsICJzeXN0ZW0iKTsKLSAgICAgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKEFm
dGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIFNXSVRD
SF9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRv
a2VuKHNvdXJjZSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TDVMZXhlci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaAppbmRleCBiOTVjZGZiYmUxZmVi
MmViNTI5NjM4M2RmZjg5MmIxMzE1YTg2MjY5Li4xYzIwZGVkMjAzYjE5YTVmMWM5ZTYxYjQzOGE5
NTM5Yjc2NDc5OTdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmgKQEAgLTEzMCw2ICsxMzAsNTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHNraXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcoKSB7
IG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZyA9IHRydWU7IH0KIAogICAgIHByaXZhdGU6
CisgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvI3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVhbQorICAgICAgICBjbGFzcyBJbnB1
dFN0cmVhbVByZXByb2Nlc3NvciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgICAgIHB1Ymxp
YzoKKyAgICAgICAgICAgIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yKCkKKyAgICAgICAgICAgICAg
ICA6IG1fbmV4dElucHV0Q2hhcmFjdGVyKCdcMCcpCisgICAgICAgICAgICAgICAgLCBtX3NraXBO
ZXh0TmV3TGluZShmYWxzZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgVUNoYXIgbmV4dElucHV0Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0SW5w
dXRDaGFyYWN0ZXI7IH0KKworICAgICAgICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHdlIHN1Y2Nl
ZWRlZCBpbiBwZWVraW5nIGF0IHRoZSBuZXh0IGNoYXJhY3Rlci4KKyAgICAgICAgICAgIC8vIFRo
ZSBvbmx5IHdheSB3ZSBjYW4gZmFpbCB0byBwZWVrIGlzIGlmIHRoZXJlIGFyZSBubyBtb3JlCisg
ICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIGluIHxzb3VyY2V8IChhZnRlciBjb2xsYXBzaW5nIFxy
XG4sIGV0YykuCisgICAgICAgICAgICBib29sIHBlZWsoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IGludCYgbGluZU51bWJlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX25leHRJ
bnB1dENoYXJhY3RlciA9ICpzb3VyY2U7CisgICAgICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0
Q2hhcmFjdGVyID09ICdcbicgJiYgbV9za2lwTmV4dE5ld0xpbmUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlLmFkdmFuY2VQYXN0TmV3bGluZShsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHNvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gKnNvdXJjZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFj
dGVyID09ICdccicpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIg
PSAnXG4nOworICAgICAgICAgICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdM
aW5lID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0
ZXJzIGluIHxzb3VyY2V8IGFmdGVyIGFkdmFuY2luZy4KKyAgICAgICAgICAgIGJvb2wgYWR2YW5j
ZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgaW50JiBsaW5lTnVtYmVyKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlKGxpbmVOdW1iZXIpOworICAgICAgICAg
ICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBlZWsoc291cmNlLCBsaW5lTnVtYmVyKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgLy8gaHR0cDov
L3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jbmV4dC1pbnB1dC1j
aGFyYWN0ZXIKKyAgICAgICAgICAgIFVDaGFyIG1fbmV4dElucHV0Q2hhcmFjdGVyOworICAgICAg
ICAgICAgYm9vbCBtX3NraXBOZXh0TmV3TGluZTsKKyAgICAgICAgfTsKKwogICAgICAgICBpbmxp
bmUgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyKTsKICAgICAgICAgaW5saW5lIHZvaWQgZW1pdFBh
cnNlRXJyb3IoKTsKICAgICAgICAgaW5saW5lIHZvaWQgZW1pdEN1cnJlbnRUb2tlbigpOwpAQCAt
MTY5LDYgKzIxNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhZGRpdGlvbmFsLWFs
bG93ZWQtY2hhcmFjdGVyCiAgICAgICAgIFVDaGFyIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0
ZXI7CisKKyAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay8jcHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtCisgICAgICAgIElucHV0
U3RyZWFtUHJlcHJvY2Vzc29yIG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I7CiAgICAgfTsKIAog
fQo=
</data>
<flag name="review"
          id="42853"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>