<?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>193756</bug_id>
          
          <creation_ts>2019-01-23 19:55:34 -0800</creation_ts>
          <short_desc>Simplify and streamline code that creates an appropriate document based on MIME type</short_desc>
          <delta_ts>2019-01-31 10:11:29 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1497710</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-23 19:55:34 -0800</bug_when>
    <thetext>Simplify and streamline code that creates an appropriate document based on MIME type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497711</commentid>
    <comment_count>1</comment_count>
      <attachid>359989</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-23 20:00:44 -0800</bug_when>
    <thetext>Created attachment 359989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497807</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-24 07:31:36 -0800</bug_when>
    <thetext>Can’t figure out how this patch caused the WinCairo build failure. Does anyone have a theory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497831</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-24 09:13:07 -0800</bug_when>
    <thetext>That build failure looks like it was caused by not cleaning up from having run https://bugs.webkit.org/show_bug.cgi?id=193602</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497850</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-24 09:33:05 -0800</bug_when>
    <thetext>Thanks, Chris! So I think this is ready to review, then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497852</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-24 09:43:17 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Thanks, Chris! So I think this is ready to review, then.

You&apos;re welcome but it was Alex :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497855</commentid>
    <comment_count>6</comment_count>
      <attachid>359989</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-24 09:51:52 -0800</bug_when>
    <thetext>Comment on attachment 359989
Patch

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

&gt; Source/WebCore/dom/DOMImplementation.cpp:141
&gt; +    if (equalLettersIgnoringASCIICase(type, &quot;text/html&quot;))

Why is this OK? I thought MIME type checks were usually case-sensitive. Looking at the call sites:
- DOMParser::parseFromString() already validates the MIME type in a case-sensitive manner before calling this. The spec seems to indicate case-sensitive checks should be done (https://w3c.github.io/DOM-Parsing/#dom-domparser-parsefromstring &amp; &quot;Unless otherwise stated, string comparisons are done in a case-sensitive manner.&quot; in Conformance section).
- DocumentWriter::createDocument() -&gt; unclear yet, would need to look more into this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497919</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-24 13:01:46 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; I thought MIME type checks were usually case-sensitive.

I was almost certain they are *not* until you questioned it. There are many non-case-sensitive checks in the MIME type registry. Almost all the tables in there are ASCII case folding.

Note comments like this one:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types

&quot;MIME types are case-insensitive but traditionally written in lowercase.&quot;&apos;

&gt; - DOMParser::parseFromString() already validates the MIME type in a
&gt; case-sensitive manner before calling this. The spec seems to indicate
&gt; case-sensitive checks should be done
&gt; (https://w3c.github.io/DOM-Parsing/#dom-domparser-parsefromstring &amp; &quot;Unless
&gt; otherwise stated, string comparisons are done in a case-sensitive manner.&quot;
&gt; in Conformance section).

I will do some research. I don’t think DOMParser is the best place to look for this information. But it seems like we may need to push things in the opposite direction, with some compatibility risk. Or perhaps there is an &quot;ASCII lowercasing&quot; step somewhere else in the algorithm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497921</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-24 13:14:30 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; (In reply to Chris Dumez from comment #6)
&gt; &gt; I thought MIME type checks were usually case-sensitive.
&gt; 
&gt; I was almost certain they are *not* until you questioned it. There are many
&gt; non-case-sensitive checks in the MIME type registry. Almost all the tables
&gt; in there are ASCII case folding.
&gt; 
&gt; Note comments like this one:
&gt; 
&gt; https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
&gt; 
&gt; &quot;MIME types are case-insensitive but traditionally written in lowercase.&quot;&apos;
&gt; 
&gt; &gt; - DOMParser::parseFromString() already validates the MIME type in a
&gt; &gt; case-sensitive manner before calling this. The spec seems to indicate
&gt; &gt; case-sensitive checks should be done
&gt; &gt; (https://w3c.github.io/DOM-Parsing/#dom-domparser-parsefromstring &amp; &quot;Unless
&gt; &gt; otherwise stated, string comparisons are done in a case-sensitive manner.&quot;
&gt; &gt; in Conformance section).
&gt; 
&gt; I will do some research. I don’t think DOMParser is the best place to look
&gt; for this information. But it seems like we may need to push things in the
&gt; opposite direction, with some compatibility risk. Or perhaps there is an
&gt; &quot;ASCII lowercasing&quot; step somewhere else in the algorithm.

My understanding is that MIME types coming from HTTP are case-insensitive. However, when it comes to content types passed to Web API (Like DOMParser.parseFromString()), it is up to the specification.
In this particular case, DOMParser.parseFromString() is case-sensitive. Technically your patch does not change behavior for DOMParser.parseFromString() though since that method would have already thrown if the input type was not lowercase.
createDocument() would merely do case-insensitive checks unnecessarily for the purpose of this particular caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497975</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-24 14:56:02 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; My understanding is that MIME types coming from HTTP are case-insensitive.
&gt; However, when it comes to content types passed to Web API (Like
&gt; DOMParser.parseFromString()), it is up to the specification.
&gt; In this particular case, DOMParser.parseFromString() is case-sensitive.

I suppose that might create a demand inside WebKit for case-sensitive MIME type helper functions, which is unfortunate. On the other hand, if the logic is all right there in line in the DOMParser class, the the helper functions don’t matter.

&gt; Technically your patch does not change behavior for
&gt; DOMParser.parseFromString() though since that method would have already
&gt; thrown if the input type was not lowercase.

I think that goes beyond just &quot;technically&quot;, I think that’s an important point.

The main purpose of this DOMImplementation::createDocument function is, and always has been, creating documents as part of normal page loading. If DOMParser also shares the function, but is stricter, that would not mean we should change createDocument’s behavior.

I think the real question is how we want to structure code inside WebKit. Do we have a lot of call for case-sensitive MIME type checks, or do we want to continue to make most of our MIME logic be ASCII case-insensitive. Another design is to have callers convert the type to ASCII lowercase before calling this function, or not, depending on what behavior they need. Which is the best way to do things in our code?

And of course we want to make sure we have the correct behavior for standards like DOMParser that require case sensitive checks.

I guess if my &quot;fix&quot; to do ASCII case-insensitive checks here is important, then I would technically need to construct test cases to show what was broken before. It’s possible there is some code that lower-cases the MIME type before we even get here so then I’m unnecessarily making this code slower. And also many of our MIME type helper functions might also be unnecessarily slow because they do ASCII case-insensitive operations.

Do you have a preference for how I proceed? If you think it’s a big deal, I could make a version of this patch that makes no changes to case sensitivity and decide whether to make that change separate from the rest of the restructuring here. It does rub me the wrong way that the function currently does a combination of case sensitive checks (mostly here in the function) and ASCII case-insensitive checks (mostly in the MIMETypeRegistry functions) and I felt good about making it consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498734</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-26 11:14:11 -0800</bug_when>
    <thetext>Chris, because of the case sensitivity thing you raised, I don’t think anyone else is going to review this patch, so please do one of these when you have the chance:

1) Ask me to post a new patch that makes no case sensitivity changes.

2) Review this patch.

3) Confirm that the case sensitivity changes are OK to let other reviewers know it’s OK to do the rest of the reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500021</commentid>
    <comment_count>11</comment_count>
      <attachid>359989</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-30 08:41:22 -0800</bug_when>
    <thetext>Comment on attachment 359989
Patch

Oops, this isn’t right for PDF. Need one more ImageDocument::create case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500027</commentid>
    <comment_count>12</comment_count>
      <attachid>360583</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-30 08:55:42 -0800</bug_when>
    <thetext>Created attachment 360583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500623</commentid>
    <comment_count>13</comment_count>
      <attachid>360583</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-31 10:10:55 -0800</bug_when>
    <thetext>Comment on attachment 360583
Patch

Clearing flags on attachment: 360583

Committed r240795: &lt;https://trac.webkit.org/changeset/240795&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500624</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-31 10:10:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500625</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-31 10:11:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/47706409&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359989</attachid>
            <date>2019-01-23 20:00:44 -0800</date>
            <delta_ts>2019-01-30 08:55:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193756-20190123200043.patch</filename>
            <type>text/plain</type>
            <size>7109</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY2ZTRiYmZlNGRhMDU4
MmJlODMyMzRhOTE1OWJiODFlYmEwYTM5My4uMmRmNjYyMWYzODgyYjYwMDMyZTZjNTQ1ZWViNjFl
OWFiMTg4ODY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAxLTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBhbmQgc3RyZWFt
bGluZSBjb2RlIHRoYXQgY3JlYXRlcyBhbiBhcHByb3ByaWF0ZSBkb2N1bWVudCBiYXNlZCBvbiBN
SU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5Mzc1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudCk6IFVzZSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSByYXRoZXIKKyAgICAgICAgdGhhbiA9PSBmb3IgYWxsIHRoZSBNSU1FIHR5cGUgY2hlY2tz
LiBVc2UgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlCisgICAgICAg
IGluc3RlYWQgb2YgSW1hZ2U6OnN1cHBvcnRzVHlwZS4gUmVhcnJhbmdlZCBjaGVja3Mgc28gdGhh
dCBhbGwgdGhlIGNvbWJpbmF0aW9ucyB0aGF0CisgICAgICAgIHRoYXQgdGFrZSBwcmVjZWRlbmNl
IG92ZXIgcGx1Zy1pbnMgYXJlIGNoZWNrZWQgZmlyc3QsIGZpeGluZyBzb21lIHVuaW1wb3J0YW50
IGVkZ2UKKyAgICAgICAgY2FzZXMgd2hlcmUgdGhlIHBsdWctaW4gZGF0YWJhc2UgaXMgaW5pdGlh
bGl6ZWQgYW5kIGRvZXNuJ3QgbmVlZCB0byBiZS4gU3RyYWlnaHRlbmVkCisgICAgICAgIG91dCB0
aGUgbG9naWMgZm9yIHZhcmlvdXMgc3BlY2lhbCB0eXBlcyBzbyB0aGF0IHRoZSBjaGVja3MgYXJl
IG1vcmUgaW5kZXBlbmRlbnQgZnJvbQorICAgICAgICBlYWNoIG90aGVyIGFuZCBoZW5jZSBlYXNp
ZXIgdG8gdW5kZXJzdGFuZC4KKwogMjAxOS0wMS0yMyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmph
bWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3Njg2NDMwPiBSZXZl
cnQgd29ya2Fyb3VuZCBBVlBsYXllci5zZXRNdXRlZCBidWcgb24gbWFjT1MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IGE5ODMyYzgyMGZiMjVhNzFhNzAwOGEw
ODIzYTE2MjNmNDU1MDQ1NWQuLjUxODJiYzRjM2M2ZmJiNTM0OTIyNGI4OTAwYjM4YTE1YTIwNzRm
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTMzLDY1
ICsxMzMsNjEgQEAgUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhU
TUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogCiBSZWY8RG9jdW1lbnQ+IERPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgLy8gRklYTUU6IENvbmZ1c2luZyB0byBoYXZlIHRo
aXMgaGVyZSB3aXRoIHB1YmxpYyBET00gQVBJcyBmb3IgY3JlYXRpbmcgZG9jdW1lbnRzLiBUaGlz
IGlzIGRpZmZlcmVudCBlbm91Z2ggdGhhdCBpdCBzaG91bGQgcGVyaGFwcyBiZSBtb3ZlZC4KLSAg
ICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBjYXNlIGluc2Vuc2l0aXZlIGNvbXBh
cmlzb25zIG9uIE1JTUUgdHlwZXMuIFNob3VsZCBkbyBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSBpbnN0ZWFkLgorICAgIC8vIEZJWE1FOiBJbmVsZWdhbnQgdG8gaGF2ZSB0aGlzIGhlcmUg
anVzdCBiZWNhdXNlIHRoaXMgaXMgdGhlIGhvbWUgb2YgRE9NIEFQSXMgZm9yIGNyZWF0aW5nIGRv
Y3VtZW50cy4KKyAgICAvLyBUaGlzIGlzIGludGVybmFsLCBub3QgYSBET00gQVBJLiBNYXliZSB3
ZSBzaG91bGQgcHV0IGl0IGluIGEgbmV3IGNsYXNzIGNhbGxlZCBEb2N1bWVudEZhY3RvcnksCisg
ICAgLy8gYmVjYXVzZSBvZiB0aGUgYW5hbG9neSB3aXRoIEhUTUxFbGVtZW50RmFjdG9yeS4KIAot
ICAgIC8vIFBsdWdpbnMgY2Fubm90IHRha2UgSFRNTCBhbmQgWEhUTUwgZnJvbSB1cywgYW5kIHdl
IGRvbid0IGV2ZW4gbmVlZCB0byBpbml0aWFsaXplIHRoZSBwbHVnaW4gZGF0YWJhc2UgZm9yIHRo
b3NlLgotICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiKQorICAgIC8vIFBsdWctaW5zIGNhbm5v
dCB0YWtlIG92ZXIgZm9yIEhUTUwsIFhIVE1MLCBwbGFpbiB0ZXh0LCBvciBub24tUERGIGltYWdl
cy4KKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInRleHQvaHRt
bCIpKQogICAgICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7Ci0g
ICAgaWYgKHR5cGUgPT0gImFwcGxpY2F0aW9uL3hodG1sK3htbCIpCisgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKSkKICAg
ICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChmcmFtZSwgdXJsKTsKLQotI2lm
IEVOQUJMRShGVFBESVIpCi0gICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBGVFAgZnJvbSB1cyBl
aXRoZXIKLSAgICBpZiAodHlwZSA9PSAiYXBwbGljYXRpb24veC1mdHAtZGlyZWN0b3J5IikKLSAg
ICAgICAgcmV0dXJuIEZUUERpcmVjdG9yeURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7Ci0j
ZW5kaWYKLQotICAgIC8vIElmIHdlIHdhbnQgdG8gdXNlSW1hZ2VEb2N1bWVudEZvclN1YmZyYW1l
UERGLCB3ZSdsbCBsZXQgdGhhdCBvdmVycmlkZSBwbHVnaW4gc3VwcG9ydC4KLSAgICBpZiAoZnJh
bWUgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpICYmIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlN
RVR5cGUodHlwZSkgJiYgZnJhbWUtPnNldHRpbmdzKCkudXNlSW1hZ2VEb2N1bWVudEZvclN1YmZy
YW1lUERGKCkpCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0
ZXh0L3BsYWluIikpCisgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwg
dXJsKTsKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
KHR5cGUpICYmICFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHR5
cGUpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhhdCBmcmFtZSBpcyBu
b24tbnVsbCBoZXJlPwogICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpmcmFt
ZSwgdXJsKTsKLQotICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSBudWxscHRyOwotICAgIGF1
dG8gYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lu
czsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBpZiAoZnJhbWUt
PmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKCkpCi0gICAgICAgICAgICBh
bGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zOwotCi0gICAgICAgIHBs
dWdpbkRhdGEgPSAmZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpOwogICAgIH0KIAotICAgIC8v
IFBERiBpcyBvbmUgaW1hZ2UgdHlwZSBmb3Igd2hpY2ggYSBwbHVnaW4gY2FuIG92ZXJyaWRlIGJ1
aWx0LWluIHN1cHBvcnQuCi0gICAgLy8gV2UgZG8gbm90IHdhbnQgUXVpY2tUaW1lIHRvIHRha2Ug
b3ZlciBhbGwgaW1hZ2UgdHlwZXMsIG9idmlvdXNseS4KLSAgICBpZiAoTUlNRVR5cGVSZWdpc3Ry
eTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZSh0eXBlKSAmJiBwbHVnaW5EYXRhICYmIHBsdWdp
bkRhdGEtPnN1cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKHR5cGUsIGFsbG93ZWRQbHVnaW5UeXBl
cykpCi0gICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwot
ICAgIGlmIChJbWFnZTo6c3VwcG9ydHNUeXBlKHR5cGUpKQorICAgIC8vIFVzZSBvZiBpbWFnZSBk
b2N1bWVudHMgZm9yIHN1YmZyYW1lIFBERnMgd2lsbCBvdmVycmlkZSBhIFBERiBwbHVnLWluLgor
ICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgTUlNRVR5cGVSZWdpc3Ry
eTo6aXNQREZNSU1FVHlwZSh0eXBlKSAmJiBmcmFtZS0+c2V0dGluZ3MoKS51c2VJbWFnZURvY3Vt
ZW50Rm9yU3ViZnJhbWVQREYoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6OmNyZWF0
ZSgqZnJhbWUsIHVybCk7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgLy8gQ2hlY2sgdG8gc2Vl
IGlmIHRoZSB0eXBlIGNhbiBiZSBwbGF5ZWQgYnkgb3VyIE1lZGlhUGxheWVyLCBpZiBzbyBjcmVh
dGUgYSBNZWRpYURvY3VtZW50Ci0gICAgLy8gS2V5IHN5c3RlbSBpcyBub3QgYXBwbGljYWJsZSBo
ZXJlLgorICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgdHlwZSBjYW4gYmUgcGxheWVkIGJ5IG91
ciBNZWRpYVBsYXllciwgaWYgc28gY3JlYXRlIGEgTWVkaWFEb2N1bWVudC4KKyAgICAvLyAoS2V5
IHN5c3RlbSBpcyBub3QgYXBwbGljYWJsZSBoZXJlLikKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5cGUo
dHlwZSk7CisgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5cGUgeyB0eXBlIH07CiAgICAg
cGFyYW1ldGVycy51cmwgPSB1cmw7CiAgICAgaWYgKE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUo
cGFyYW1ldGVycykpCiAgICAgICAgIHJldHVybiBNZWRpYURvY3VtZW50OjpjcmVhdGUoZnJhbWUs
IHVybCk7CiAjZW5kaWYKIAotICAgIC8vIEV2ZXJ5dGhpbmcgZWxzZSBleGNlcHQgdGV4dC9wbGFp
biBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwbHVnaW5zLiBJbiBwYXJ0aWN1bGFyLCBBZG9iZSBTVkcg
Vmlld2VyIHNob3VsZCBiZSB1c2VkIGZvciBTVkcsIGlmIGluc3RhbGxlZC4KLSAgICAvLyBEaXNh
bGxvd2luZyBwbHVnLWlucyB0byB1c2UgdGV4dC9wbGFpbiBwcmV2ZW50cyBwbHVnLWlucyBmcm9t
IGhpamFja2luZyBhIGZ1bmRhbWVudGFsIHR5cGUgdGhhdCB0aGUgYnJvd3NlciBpcyBleHBlY3Rl
ZCB0byBoYW5kbGUsCi0gICAgLy8gYW5kIGFsc28gc2VydmVzIGFzIGFuIG9wdGltaXphdGlvbiB0
byBwcmV2ZW50IGxvYWRpbmcgdGhlIHBsdWctaW4gZGF0YWJhc2UgaW4gdGhlIGNvbW1vbiBjYXNl
LgotICAgIGlmICh0eXBlICE9ICJ0ZXh0L3BsYWluIiAmJiAoKHBsdWdpbkRhdGEgJiYgcGx1Z2lu
RGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUodHlwZSwgYWxsb3dlZFBsdWdpblR5cGVz
KSkgfHwgKGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRBbHdheXNVc2VQ
bHVnaW5Eb2N1bWVudCh0eXBlKSkpKQorI2lmIEVOQUJMRShGVFBESVIpCisgICAgLy8gVGhlcmUn
cyBubyBuZWVkIHRvIHN1cHBvcnQgcGx1Zy1pbnMgdGFraW5nIG92ZXIgZm9yIEZUUCBkaXJlY3Rv
cmllcyBlaXRoZXIuCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUs
ICJhcHBsaWNhdGlvbi94LWZ0cC1kaXJlY3RvcnkiKSkKKyAgICAgICAgcmV0dXJuIEZUUERpcmVj
dG9yeURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisjZW5kaWYKKworICAgIGlmIChmcmFt
ZSAmJiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1l
bnQodHlwZSkpCiAgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1
cmwpOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBpcyB0aGUgcmVsYXRpdmVseSBjb3N0bHkgbG9v
a3VwIHRoYXQgcmVxdWlyZXMgaW5pdGlhbGl6aW5nIHRoZSBwbHVnLWluIGRhdGFiYXNlLgorICAg
IGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAgIGF1dG8gYWxsb3dlZFBsdWdp
blR5cGVzID0gZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKCkK
KyAgICAgICAgICAgID8gUGx1Z2luRGF0YTo6QWxsUGx1Z2lucyA6IFBsdWdpbkRhdGE6Ok9ubHlB
cHBsaWNhdGlvblBsdWdpbnM7CisgICAgICAgIGlmIChmcmFtZS0+cGFnZSgpLT5wbHVnaW5EYXRh
KCkuc3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUodHlwZSwgYWxsb3dlZFBsdWdpblR5cGVzKSkK
KyAgICAgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwor
ICAgIH0KKworICAgIC8vIEV2ZXJ5dGhpbmcgaGVyZSBhZnRlciB0aGUgcGx1Zy1pbiBjaGVjayBj
YW4gYmUgb3ZlcnJpZGRlbiBieSBwbHVnLWlucy4KKyAgICAvLyBGb3IgZXhhbXBsZSwgcGx1Zy1p
bnMgY2FuIHRha2Ugb3ZlciBzdXBwb3J0IGZvciBTVkcgb3IgUERGLgogICAgIGlmIChNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIFRleHREb2N1
bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwotCi0gICAgaWYgKHR5cGUgPT0gImltYWdlL3N2Zyt4
bWwiKQorICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiaW1hZ2Uv
c3ZnK3htbCIpKQogICAgICAgICByZXR1cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJs
KTsKLQogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKHR5cGUpKQogICAg
ICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKLQogICAgIHJldHVy
biBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360583</attachid>
            <date>2019-01-30 08:55:42 -0800</date>
            <delta_ts>2019-01-31 10:10:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193756-20190130085542.patch</filename>
            <type>text/plain</type>
            <size>6943</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE4ZmNlYzhjZjFiNTc1
NTU1MWRhOWQ1ZDFmYzUwNmY0NTY4MmUxMi4uNGFmYjA2NTBlOWRmNjdiMjFlZGNhZjM2ZDFlMDJi
MzRjNzAyOTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAxLTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBhbmQgc3RyZWFt
bGluZSBjb2RlIHRoYXQgY3JlYXRlcyBhbiBhcHByb3ByaWF0ZSBkb2N1bWVudCBiYXNlZCBvbiBN
SU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5Mzc1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudCk6IFVzZSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSByYXRoZXIKKyAgICAgICAgdGhhbiA9PSBmb3IgYWxsIHRoZSBNSU1FIHR5cGUgY2hlY2tz
LiBVc2UgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlCisgICAgICAg
IGluc3RlYWQgb2YgSW1hZ2U6OnN1cHBvcnRzVHlwZS4gUmVhcnJhbmdlZCBjaGVja3Mgc28gdGhh
dCBhbGwgdGhlIGNvbWJpbmF0aW9ucyB0aGF0CisgICAgICAgIHRoYXQgdGFrZSBwcmVjZWRlbmNl
IG92ZXIgcGx1Zy1pbnMgYXJlIGNoZWNrZWQgZmlyc3QsIGZpeGluZyBzb21lIHVuaW1wb3J0YW50
IGVkZ2UKKyAgICAgICAgY2FzZXMgd2hlcmUgdGhlIHBsdWctaW4gZGF0YWJhc2UgaXMgaW5pdGlh
bGl6ZWQgYW5kIGRvZXNuJ3QgbmVlZCB0byBiZS4gU3RyYWlnaHRlbmVkCisgICAgICAgIG91dCB0
aGUgbG9naWMgZm9yIHZhcmlvdXMgc3BlY2lhbCB0eXBlcyBzbyB0aGF0IHRoZSBjaGVja3MgYXJl
IG1vcmUgaW5kZXBlbmRlbnQgZnJvbQorICAgICAgICBlYWNoIG90aGVyIGFuZCBoZW5jZSBlYXNp
ZXIgdG8gdW5kZXJzdGFuZC4KKwogMjAxOS0wMS0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIFVzZSB0aGUgdXNlZCBtYXJnaW4gdmFsdWVzIGluIG91
dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSBjb25zaXN0ZW50bHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IGE5ODMyYzgyMGZiMjVhNzFhNzAwOGEw
ODIzYTE2MjNmNDU1MDQ1NWQuLjNhMmVkMjAwNGNiMGVkYmJmNWFkOWJmYjdhNjFjMGU0NzI4YmFl
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTMzLDY1
ICsxMzMsNTkgQEAgUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhU
TUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogCiBSZWY8RG9jdW1lbnQ+IERPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgLy8gRklYTUU6IENvbmZ1c2luZyB0byBoYXZlIHRo
aXMgaGVyZSB3aXRoIHB1YmxpYyBET00gQVBJcyBmb3IgY3JlYXRpbmcgZG9jdW1lbnRzLiBUaGlz
IGlzIGRpZmZlcmVudCBlbm91Z2ggdGhhdCBpdCBzaG91bGQgcGVyaGFwcyBiZSBtb3ZlZC4KLSAg
ICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBjYXNlIGluc2Vuc2l0aXZlIGNvbXBh
cmlzb25zIG9uIE1JTUUgdHlwZXMuIFNob3VsZCBkbyBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSBpbnN0ZWFkLgorICAgIC8vIEZJWE1FOiBJbmVsZWdhbnQgdG8gaGF2ZSB0aGlzIGhlcmUg
anVzdCBiZWNhdXNlIHRoaXMgaXMgdGhlIGhvbWUgb2YgRE9NIEFQSXMgZm9yIGNyZWF0aW5nIGRv
Y3VtZW50cy4KKyAgICAvLyBUaGlzIGlzIGludGVybmFsLCBub3QgYSBET00gQVBJLiBNYXliZSB3
ZSBzaG91bGQgcHV0IGl0IGluIGEgbmV3IGNsYXNzIGNhbGxlZCBEb2N1bWVudEZhY3RvcnksCisg
ICAgLy8gYmVjYXVzZSBvZiB0aGUgYW5hbG9neSB3aXRoIEhUTUxFbGVtZW50RmFjdG9yeS4KIAot
ICAgIC8vIFBsdWdpbnMgY2Fubm90IHRha2UgSFRNTCBhbmQgWEhUTUwgZnJvbSB1cywgYW5kIHdl
IGRvbid0IGV2ZW4gbmVlZCB0byBpbml0aWFsaXplIHRoZSBwbHVnaW4gZGF0YWJhc2UgZm9yIHRo
b3NlLgotICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiKQorICAgIC8vIFBsdWctaW5zIGNhbm5v
dCB0YWtlIG92ZXIgZm9yIEhUTUwsIFhIVE1MLCBwbGFpbiB0ZXh0LCBvciBub24tUERGIGltYWdl
cy4KKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInRleHQvaHRt
bCIpKQogICAgICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7Ci0g
ICAgaWYgKHR5cGUgPT0gImFwcGxpY2F0aW9uL3hodG1sK3htbCIpCisgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKSkKICAg
ICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChmcmFtZSwgdXJsKTsKLQotI2lm
IEVOQUJMRShGVFBESVIpCi0gICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBGVFAgZnJvbSB1cyBl
aXRoZXIKLSAgICBpZiAodHlwZSA9PSAiYXBwbGljYXRpb24veC1mdHAtZGlyZWN0b3J5IikKLSAg
ICAgICAgcmV0dXJuIEZUUERpcmVjdG9yeURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7Ci0j
ZW5kaWYKLQotICAgIC8vIElmIHdlIHdhbnQgdG8gdXNlSW1hZ2VEb2N1bWVudEZvclN1YmZyYW1l
UERGLCB3ZSdsbCBsZXQgdGhhdCBvdmVycmlkZSBwbHVnaW4gc3VwcG9ydC4KLSAgICBpZiAoZnJh
bWUgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpICYmIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlN
RVR5cGUodHlwZSkgJiYgZnJhbWUtPnNldHRpbmdzKCkudXNlSW1hZ2VEb2N1bWVudEZvclN1YmZy
YW1lUERGKCkpCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0
ZXh0L3BsYWluIikpCisgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwg
dXJsKTsKKyAgICBib29sIGlzSW1hZ2UgPSBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZElt
YWdlTUlNRVR5cGUodHlwZSk7CisgICAgaWYgKGZyYW1lICYmIGlzSW1hZ2UgJiYgIU1JTUVUeXBl
UmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVy
biBJbWFnZURvY3VtZW50OjpjcmVhdGUoKmZyYW1lLCB1cmwpOwogCi0gICAgUGx1Z2luRGF0YSog
cGx1Z2luRGF0YSA9IG51bGxwdHI7Ci0gICAgYXV0byBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVn
aW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zOwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+
cGFnZSgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5h
bGxvd1BsdWdpbnMoKSkKLSAgICAgICAgICAgIGFsbG93ZWRQbHVnaW5UeXBlcyA9IFBsdWdpbkRh
dGE6OkFsbFBsdWdpbnM7Ci0KLSAgICAgICAgcGx1Z2luRGF0YSA9ICZmcmFtZS0+cGFnZSgpLT5w
bHVnaW5EYXRhKCk7Ci0gICAgfQotCi0gICAgLy8gUERGIGlzIG9uZSBpbWFnZSB0eXBlIGZvciB3
aGljaCBhIHBsdWdpbiBjYW4gb3ZlcnJpZGUgYnVpbHQtaW4gc3VwcG9ydC4KLSAgICAvLyBXZSBk
byBub3Qgd2FudCBRdWlja1RpbWUgdG8gdGFrZSBvdmVyIGFsbCBpbWFnZSB0eXBlcywgb2J2aW91
c2x5LgotICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBl
KHR5cGUpICYmIHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWlt
ZVR5cGUodHlwZSwgYWxsb3dlZFBsdWdpblR5cGVzKSkKLSAgICAgICAgcmV0dXJuIFBsdWdpbkRv
Y3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7Ci0gICAgaWYgKEltYWdlOjpzdXBwb3J0c1R5cGUo
dHlwZSkpCisgICAgLy8gVGhlICJpbWFnZSBkb2N1bWVudHMgZm9yIHN1YmZyYW1lIFBERnMiIG1v
ZGUgd2lsbCBvdmVycmlkZSBhIFBERiBwbHVnLWluLgorICAgIGlmIChmcmFtZSAmJiAhZnJhbWUt
PmlzTWFpbkZyYW1lKCkgJiYgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZSh0eXBlKSAm
JiBmcmFtZS0+c2V0dGluZ3MoKS51c2VJbWFnZURvY3VtZW50Rm9yU3ViZnJhbWVQREYoKSkKICAg
ICAgICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHVybCk7CiAKICNpZiBF
TkFCTEUoVklERU8pCi0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSB0eXBlIGNhbiBiZSBwbGF5
ZWQgYnkgb3VyIE1lZGlhUGxheWVyLCBpZiBzbyBjcmVhdGUgYSBNZWRpYURvY3VtZW50Ci0gICAg
Ly8gS2V5IHN5c3RlbSBpcyBub3QgYXBwbGljYWJsZSBoZXJlLgogICAgIE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50
VHlwZSh0eXBlKTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZSB7IHR5cGUgfTsK
ICAgICBwYXJhbWV0ZXJzLnVybCA9IHVybDsKICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRz
VHlwZShwYXJhbWV0ZXJzKSkKICAgICAgICAgcmV0dXJuIE1lZGlhRG9jdW1lbnQ6OmNyZWF0ZShm
cmFtZSwgdXJsKTsKICNlbmRpZgogCi0gICAgLy8gRXZlcnl0aGluZyBlbHNlIGV4Y2VwdCB0ZXh0
L3BsYWluIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBsdWdpbnMuIEluIHBhcnRpY3VsYXIsIEFkb2Jl
IFNWRyBWaWV3ZXIgc2hvdWxkIGJlIHVzZWQgZm9yIFNWRywgaWYgaW5zdGFsbGVkLgotICAgIC8v
IERpc2FsbG93aW5nIHBsdWctaW5zIHRvIHVzZSB0ZXh0L3BsYWluIHByZXZlbnRzIHBsdWctaW5z
IGZyb20gaGlqYWNraW5nIGEgZnVuZGFtZW50YWwgdHlwZSB0aGF0IHRoZSBicm93c2VyIGlzIGV4
cGVjdGVkIHRvIGhhbmRsZSwKLSAgICAvLyBhbmQgYWxzbyBzZXJ2ZXMgYXMgYW4gb3B0aW1pemF0
aW9uIHRvIHByZXZlbnQgbG9hZGluZyB0aGUgcGx1Zy1pbiBkYXRhYmFzZSBpbiB0aGUgY29tbW9u
IGNhc2UuCi0gICAgaWYgKHR5cGUgIT0gInRleHQvcGxhaW4iICYmICgocGx1Z2luRGF0YSAmJiBw
bHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2lu
VHlwZXMpKSB8fCAoZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEFsd2F5
c1VzZVBsdWdpbkRvY3VtZW50KHR5cGUpKSkpCisjaWYgRU5BQkxFKEZUUERJUikKKyAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImFwcGxpY2F0aW9uL3gtZnRwLWRp
cmVjdG9yeSIpKQorICAgICAgICByZXR1cm4gRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZShm
cmFtZSwgdXJsKTsKKyNlbmRpZgorCisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS5j
bGllbnQoKS5zaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudCh0eXBlKSkKICAgICAgICAgcmV0
dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisKKyAgICAvLyBUaGUgZm9s
bG93aW5nIGlzIHRoZSByZWxhdGl2ZWx5IGNvc3RseSBsb29rdXAgdGhhdCByZXF1aXJlcyBpbml0
aWFsaXppbmcgdGhlIHBsdWctaW4gZGF0YWJhc2UuCisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5w
YWdlKCkpIHsKKyAgICAgICAgYXV0byBhbGxvd2VkUGx1Z2luVHlwZXMgPSBmcmFtZS0+bG9hZGVy
KCkuc3ViZnJhbWVMb2FkZXIoKS5hbGxvd1BsdWdpbnMoKQorICAgICAgICAgICAgPyBQbHVnaW5E
YXRhOjpBbGxQbHVnaW5zIDogUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2luczsKKyAg
ICAgICAgaWYgKGZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKS5zdXBwb3J0c1dlYlZpc2libGVN
aW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKQorICAgICAgICAgICAgcmV0dXJuIFBs
dWdpbkRvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAgfQorCisgICAgLy8gSXRlbXMg
bGlzdGVkIGhlcmUsIGFmdGVyIHRoZSBwbHVnLWluIGNoZWNrcywgY2FuIGJlIG92ZXJyaWRkZW4g
YnkgcGx1Zy1pbnMuCisgICAgLy8gRm9yIGV4YW1wbGUsIHBsdWctaW5zIGNhbiB0YWtlIG92ZXIg
c3VwcG9ydCBmb3IgUERGIG9yIFNWRy4KKyAgICBpZiAoZnJhbWUgJiYgaXNJbWFnZSkKKyAgICAg
ICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHVybCk7CiAgICAgaWYgKE1J
TUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gVGV4
dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7Ci0KLSAgICBpZiAodHlwZSA9PSAiaW1hZ2Uv
c3ZnK3htbCIpCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJp
bWFnZS9zdmcreG1sIikpCiAgICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKGZyYW1l
LCB1cmwpOwotCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUodHlwZSkp
CiAgICAgICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwotCiAgICAg
cmV0dXJuIEhUTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>