<?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>44533</bug_id>
          
          <creation_ts>2010-08-24 10:15:07 -0700</creation_ts>
          <short_desc>XMLDocumentParser needs to implement DocumentParser::detach()</short_desc>
          <delta_ts>2019-02-06 09:03:38 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://weblab.ab-c.nl/streetview</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, NeedsReduction</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chasen Le Hara">rendezvouscp</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>268620</commentid>
    <comment_count>0</comment_count>
    <who name="Chasen Le Hara">rendezvouscp</who>
    <bug_when>2010-08-24 10:15:07 -0700</bug_when>
    <thetext>Visiting the page in the latest version of WebKit (r65825, Safari 5.0.1) causes a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268695</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-24 12:01:24 -0700</bug_when>
    <thetext>#0	0x1029e0421 in WebCore::TreeShared&lt;WebCore::Node&gt;::deref at TreeShared.h:71
#1	0x10367b6cf in WebCore::XMLDocumentParser::clearCurrentNodeStack at XMLDocumentParser.cpp:107
#2	0x10367d0ed in WebCore::XMLDocumentParser::~XMLDocumentParser at XMLDocumentParserLibxml2.cpp:619
#3	0x102c3598d in WTF::RefCounted&lt;WebCore::DocumentParser&gt;::deref at RefCounted.h:139
#4	0x102c4b317 in WTF::derefIfNotNull&lt;WebCore::DocumentParser&gt; at PassRefPtr.h:58
#5	0x102c4b39d in WTF::RefPtr&lt;WebCore::DocumentParser&gt;::clear at RefPtr.h:104
#6	0x102c1c77d in WebCore::Document::detachParser at Document.cpp:1830
#7	0x102c2b20c in WebCore::Document::~Document at Document.cpp:541
#8	0x1035386cd in WebCore::SVGDocument::~SVGDocument at SVGDocument.cpp:45
#9	0x102c2b87a in WebCore::Document::removedLastRef at Document.cpp:514
#10	0x1029e04ff in WebCore::TreeShared&lt;WebCore::Node&gt;::deref at TreeShared.h:78
#11	0x102c9c469 in WTF::derefIfNotNull&lt;WebCore::SVGDocument&gt; at PassRefPtr.h:58
#12	0x102aa2839 in WTF::RefPtr&lt;WebCore::SVGDocument&gt;::clear at RefPtr.h:104
#13	0x102aa1f3a in WebCore::CachedFont::ensureSVGFontData at CachedFont.cpp:146
#14	0x102b24abf in WebCore::CSSFontFaceSource::getFontData at CSSFontFaceSource.cpp:130

    if (m_currentNode &amp;&amp; m_currentNode != document())
        m_currentNode-&gt;deref();

m_currentNode is a Document, but DocumentParser::m_document is null, so we&apos;re wrongly trying to deref the document.

Could it be an HTML5 parser related change that DocumentParser::m_document is null here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268762</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 13:46:18 -0700</bug_when>
    <thetext>Investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268787</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 14:14:34 -0700</bug_when>
    <thetext>The ASSERT/crash is that the Document is already being deleted and the XMLDocumentParser still has a reference to it on its node stack.

This may have been caused by changes to fragment parsing.  Seems we should have cleared the node stack earlier.

I&apos;m not sure how this worked before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268792</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 14:20:27 -0700</bug_when>
    <thetext>I don&apos;t think it&apos;s &quot;safe&quot; in this case, to blast away the Document before telling the XMLDocumentParser we&apos;re done.

I believe the wrong code is bool CachedFont::ensureSVGFontData().

bool CachedFont::ensureSVGFontData()
{
    ASSERT(m_isSVGFont);
    if (!m_externalSVGDocument &amp;&amp; !errorOccurred() &amp;&amp; !isLoading() &amp;&amp; m_data) {
        m_externalSVGDocument = SVGDocument::create(0, KURL());
        m_externalSVGDocument-&gt;open();

        RefPtr&lt;TextResourceDecoder&gt; decoder = TextResourceDecoder::create(&quot;application/xml&quot;);
        m_externalSVGDocument-&gt;write(decoder-&gt;decode(m_data-&gt;data(), m_data-&gt;size()));
        m_externalSVGDocument-&gt;write(decoder-&gt;flush());
        if (decoder-&gt;sawError()) {
            m_externalSVGDocument.clear();
            return 0;
        }

        m_externalSVGDocument-&gt;finishParsing();
        m_externalSVGDocument-&gt;close();
    }

We should move the decoding up to before opening the document, or we should let the parse finish and only abort on decoding error after the parse is done.

I&apos;m not sure what the old parser was doing here, but it&apos;s possible it was doing Bad Things™.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268798</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 14:29:40 -0700</bug_when>
    <thetext>On second thought, I think the root cause here is that XMLDocumentParser needs a detach() implementation, which should do things like clearing the node stack at that time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268893</commentid>
    <comment_count>6</comment_count>
      <attachid>65343</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 16:44:10 -0700</bug_when>
    <thetext>Created attachment 65343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268900</commentid>
    <comment_count>7</comment_count>
      <attachid>65343</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-24 16:49:19 -0700</bug_when>
    <thetext>Comment on attachment 65343
Patch

This looks good.  Don&apos;t we want a test case for the original crash though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268901</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 16:54:44 -0700</bug_when>
    <thetext>I&apos;m not averse to adding one.  The case encountered by the orignal crash is now transformed to be covered by a whole bunch of Layout Tests.  I&apos;ll see if I can whip up an SVG font with invalid decoding however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268902</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 16:57:55 -0700</bug_when>
    <thetext>I believe http://weblab.ab-c.nl/css/font/abc.aspx is the font in question.  It&apos;s a truetype file, but maybe somehow it&apos;s heading down the SVG font path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268903</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 16:58:25 -0700</bug_when>
    <thetext>curl -I &quot;http://weblab.ab-c.nl/css/font/abc.aspx&quot;
HTTP/1.1 200 OK
Date: Tue, 24 Aug 2010 23:58:09 GMT
Server: Microsoft-IIS/6.0
X-UA-Compatible: IE=EmulateIE7
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Length: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268909</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 17:04:48 -0700</bug_when>
    <thetext>The page is explicitly telling WebKit it&apos;s an SVG font when it isn&apos;t:

http://weblab.ab-c.nl/css/weblab.css:

@font-face {font-family: &apos;abc&apos;; src: url(&apos;font/abc.aspx#webfont6R4Fh5cD&apos;) format(&apos;svg&apos;), url(&apos;font/abc.aspx&apos;)}

So a test case should be easy to create.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268925</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 17:29:57 -0700</bug_when>
    <thetext>Added one.  Will commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268926</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 17:30:58 -0700</bug_when>
    <thetext>Folks releasing from a branch may want this change.  Should be easy to pick up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268931</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 17:40:29 -0700</bug_when>
    <thetext>Committed r65958: &lt;http://trac.webkit.org/changeset/65958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268998</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 21:34:09 -0700</bug_when>
    <thetext>Committed r65976: &lt;http://trac.webkit.org/changeset/65976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280456</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-09-16 17:04:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/8442098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503008</commentid>
    <comment_count>17</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:38 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65343</attachid>
            <date>2010-08-24 16:44:10 -0700</date>
            <delta_ts>2010-08-24 16:49:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44533-20100824164409.patch</filename>
            <type>text/plain</type>
            <size>17886</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYWI5OTg0N2IxOWE3OTZkYjE3MjQ3MGI4YTIxMTg1ZjE4YjE4OWFjLi5hYWI2N2Y4
NGJmOTIxN2NiNzlhYjIyNjE3ZjIyMTc2NWRjMTRlZTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMjQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFhNTERvY3VtZW50UGFyc2VyIG5l
ZWRzIHRvIGltcGxlbWVudCBEb2N1bWVudFBhcnNlcjo6ZGV0YWNoKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NTMzCisKKyAgICAgICAgWE1MIHZl
cnNpb25zIG9mIG9uZSBvZiB0aGUgdGVzdHMgZnJvbQorICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC82NTY5MgorCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NldC1zcmMtdG8tamF2YXNjcmlwdC11cmwueGh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3NldC1wYXJlbnQtc3JjLXN5bmNocm9ub3VzbHkueGh0bWw6IEFkZGVkLgorCiAyMDEw
LTA4LTI0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvc2V0LXNyYy10by1qYXZhc2NyaXB0LXVybC54aHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zZXQtc3JjLXRvLWphdmFzY3JpcHQtdXJsLnhodG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE0OWZhMTc4ODgzNTUzNjVjYWUyMDcxYWQ2Njc3ZDM5NTMyZWU4ZDIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2V0LXNy
Yy10by1qYXZhc2NyaXB0LXVybC54aHRtbApAQCAtMCwwICsxLDE1IEBACis8aHRtbCB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8Ym9keT4KK0ZBSUwKKzxzY3JpcHQ+Cisg
ICAgZnVuY3Rpb24gcmV0dXJuU3RyaW5nVmFsdWUoKSB7CisgICAgICAgIHJldHVybiAidGVzdCI7
CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgcGFyZW50LmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJwYXJlbnQiKS5zZXRBdHRyaWJ1dGUoInNyYyIsICJqYXZhc2NyaXB0
OiByZXR1cm5TdHJpbmdWYWx1ZSgpIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NldC1wYXJlbnQtc3JjLXN5bmNocm9u
b3VzbHkueGh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zZXQtcGFyZW50LXNyYy1zeW5j
aHJvbm91c2x5LnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxNjI5MzVlYzhlZGUxZjMxODYyZjNjZGVjYmU0
OTExOGRhMzBhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
ZXQtcGFyZW50LXNyYy1zeW5jaHJvbm91c2x5LnhodG1sCkBAIC0wLDAgKzEsNiBAQAorPGh0bWwg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGJvZHk+CitUaGlzIHRlc3Qg
ZmFpbHMgaWYgd2UgY3Jhc2ggb3IgYW55IHRleHQgYmVsb3cgdGhpcyBpcyB2aXNpYmxlICh0aGUg
aWZyYW1lIHNob3VsZCBkZXRhY2ggaXRzZWxmIGZyb20gdGhlIHBhZ2UpLgorPGlmcmFtZSBpZD0i
cGFyZW50IiBzcmM9InJlc291cmNlcy9zZXQtc3JjLXRvLWphdmFzY3JpcHQtdXJsLnhodG1sIj48
L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRmMTJmMTdhMGFjYWU5OGVhNWQ0MmJiMjZiMWJi
MGMyYTkzMjI0NS4uZjNhZjFhMzM3ZWI2ZDcyNTkyMDM5NzhiMGM2MWI2OTcwYjgxNzkyMSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxMC0wOC0yNCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgWE1MRG9jdW1l
bnRQYXJzZXIgbmVlZHMgdG8gaW1wbGVtZW50IERvY3VtZW50UGFyc2VyOjpkZXRhY2goKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1MzMKKworICAg
ICAgICBUZXN0OiBmYXN0L2ZyYW1lcy9zZXQtcGFyZW50LXNyYy1zeW5jaHJvbm91c2x5LnhodG1s
CisKKyAgICAgICAgSW4gdGhlIGV4YW1wbGUgZnJvbSB0aGUgcGFnZSB3ZSB3ZXJlIGFjY2Vzc2lu
ZyBkb2N1bWVudCgpCisgICAgICAgIGFmdGVyIERvY3VtZW50UGFyc2VyOjpkZXRhY2goKSB3YXMg
Y2FsbGVkLiAgVG8gcHJldmVudCB0aGlzCisgICAgICAgIEkgYWRkZWQgYW4gQVNTRVJUKG1fZG9j
dW1lbnQpIHRvIGRvY3VtZW50KCksIGNhdXNpbmcgbWFueQorICAgICAgICB0ZXN0IGNhc2VzIHRv
IGNvdmVyIHRoZSBidWcgc2hvd24gaW4gYnVnIDQ0NTMzLgorCisgICAgICAgIFRvIGZpeCB0aGUg
YnVnLCBJIGltcGxlbWVudGVkIFhNTERvY3VtZW50UGFyc2VyOjpkZXRhY2goKQorICAgICAgICBh
bmQgaGFkIGl0IGNhbGwgY2xlYXJDdXJyZW50Tm9kZVN0YWNrKCksIHRodXMgbWFraW5nCisgICAg
ICAgIGl0IGltcG9zc2libGUgZm9yIFhNTERvY3VtZW50UGFyc2VyIHRvIHN0aWxsIGhhdmUgdGhl
IERvY3VtZW50CisgICAgICAgIG9uIHRoZSBub2RlIHN0YWNrIGFmdGVyIGRldGFjaCAod2hpY2gg
d2FzIHdoYXQgd2FzIGNhdXNpbmcgdGhpcyBidWcpLgorCisgICAgICAgIFdoaWxlIGZpeGluZyB0
aGlzLCBJIG5vdGljZWQgdGhhdCBYTUxEb2N1bWVudFBhcnNlciBtYXkgaGF2ZSB0aGUKKyAgICAg
ICAgc2FtZSB0cm91YmxlIGNyYXNoaW5nIHRoYXQgdGhlIEhUTUxEb2N1bWVudFBhcnNlciBkaWQg
d2hlbgorICAgICAgICBzeW5jaHJvbm91c2x5IGRlbGV0ZWQgZnJvbSBKUyAoZm9yIGV4YW1wbGUg
YnkgYW4gaWZyYW1lIG5hdmlnYXRpb24pLgorICAgICAgICBJIGFkZGVkIGEgdGVzdCBjYXNlIHRv
IGNvdmVyIHRoaXMgYW5kIHByb3RlY3RlZCB0aGUgcGFyc2VyIGFmdGVyCisgICAgICAgIHRoZSB0
d28gcGxhY2VzIGl0IGV4ZWN1dGVzIHNjcmlwdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnRQ
YXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UGFyc2VyOjpkb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcjo6aXNEZXRhY2hlZCk6CisgICAgICAgICog
ZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmF3RGF0YURv
Y3VtZW50UGFyc2VyOjpmaW5pc2gpOgorICAgICAgICAqIGRvbS9YTUxEb2N1bWVudFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBkb20vWE1M
RG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkb1dyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmcpOgorICAgICAgICAq
IGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1
bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1l
bnRQYXJzZXI6OndpbGxQdW1wTGV4ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50
UGFyc2VyOjpkaWRQdW1wTGV4ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFy
c2VyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjplbmRJZkRl
bGF5ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpzY3JpcHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVwZGF0ZVRva2VuaXplclN0YXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmll
d1NvdXJjZVBhcnNlcjo6ZG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnRQYXJzZXI6OmRvY3VtZW50KToK
KwogMjAxMC0wOC0yNCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
VHJ5IHRvIGZpeCBHVEsrIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQ
YXJzZXIuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKaW5kZXggZTUxY2Y5NGY0OTU4
NGMwYWI4MjA5YTI2MmFiYWM5MWEyYmU1NTg5Yy4uYmNkMDI0MWY4ZmU2NTAxMzRlOTI0YzBmMTdl
YmFkNTYzNmY0YjYxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAor
KysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCkBAIC02NSw3ICs2NSw5IEBAIHB1Ymxp
YzoKICAgICAvLyBjb2RlIHNob3VsZCBub3QgbmVlZCB0byByZWFjaCBpbnRvIGltcGxlbWVudGF0
aW9uIGRldGFpbHMgb2YgdGhlIHBhcnNlci4KICAgICB2aXJ0dWFsIExlZ2FjeUhUTUxUcmVlQnVp
bGRlciogaHRtbFRyZWVCdWlsZGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQorICAgIC8vIGRvY3Vt
ZW50KCkgd2lsbCByZXR1cm4gMCBhZnRlciBkZXRhY2goKSBpcyBjYWxsZWQuCisgICAgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3QgeyBBU1NFUlQobV9kb2N1bWVudCk7IHJldHVybiBtX2RvY3Vt
ZW50OyB9CisgICAgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4gIW1fZG9jdW1lbnQ7
IH0KIAogICAgIC8vIERvY3VtZW50IGlzIGV4cGVjdGVkIHRvIGRldGFjaCB0aGUgcGFyc2VyIGJl
Zm9yZSByZWxlYXNpbmcgaXRzIHJlZi4KICAgICAvLyBBZnRlciBkZXRhY2gsIG1fZG9jdW1lbnQg
aXMgY2xlYXJlZC4gIFRoZSBwYXJzZXIgd2lsbCB1bndpbmQgaXRzCkBAIC04OSw2ICs5MSw3IEBA
IHByb3RlY3RlZDoKICAgICAvLyBGSVhNRTogbV9kb2N1bWVudCA9IDAgY291bGQgYmUgY2hhbmdl
ZCB0byBtZWFuICJwYXJzZXIgc3RvcHBlZCIuCiAgICAgYm9vbCBtX3BhcnNlclN0b3BwZWQ7CiAK
K3ByaXZhdGU6CiAgICAgLy8gRXZlcnkgRG9jdW1lbnRQYXJzZXIgbmVlZHMgYSBwb2ludGVyIGJh
Y2sgdG8gdGhlIGRvY3VtZW50LgogICAgIC8vIG1fZG9jdW1lbnQgd2lsbCBiZSAwIGFmdGVyIHRo
ZSBwYXJzZXIgaXMgc3RvcHBlZC4KICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29yZS9kb20vUmF3
RGF0YURvY3VtZW50UGFyc2VyLmgKaW5kZXggOWVlYTliNmVhZTg0NWQ0MTE5NjEwNDQ2ZjkzMTQw
ZDJmNmYyZTQ2Yy4uMDkzZGRhZjY3ZDE4MGM0ZGEwYWM3MTY2Y2U0ZmFhZmQ1YzE4MTFjMSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29y
ZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKQEAgLTM5LDggKzM5LDggQEAgcHJvdGVjdGVk
OgogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpCiAgICAgewotICAgICAgICBpZiAoIW1fcGFy
c2VyU3RvcHBlZCkKLSAgICAgICAgICAgIG1fZG9jdW1lbnQtPmZpbmlzaGVkUGFyc2luZygpOwor
ICAgICAgICBpZiAoIW1fcGFyc2VyU3RvcHBlZCAmJiAhaXNEZXRhY2hlZCgpKQorICAgICAgICAg
ICAgZG9jdW1lbnQoKS0+ZmluaXNoZWRQYXJzaW5nKCk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9kb20v
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDA1NGU0ZTM1OWFiZDU5NDEyZDIyZjg2N2UzNDE2
YTcxYjVjNzY3ZGEuLjExN2E0NTQ5NmUyMmQ2MDdkZGM0N2RiNzAyZmZiN2M3ZjI5ZmQ5OGUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFhNTERv
Y3VtZW50UGFyc2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzKQogICAgIGlmICht
X3Nhd1hTTFRyYW5zZm9ybSB8fCAhbV9zYXdGaXJzdEVsZW1lbnQpCiAgICAgICAgIG1fb3JpZ2lu
YWxTb3VyY2VGb3JUcmFuc2Zvcm0gKz0gcGFyc2VTdHJpbmc7CiAKLSAgICBpZiAobV9wYXJzZXJT
dG9wcGVkIHx8IG1fc2F3WFNMVHJhbnNmb3JtKQorICAgIGlmIChpc0RldGFjaGVkKCkgfHwgbV9w
YXJzZXJTdG9wcGVkIHx8IG1fc2F3WFNMVHJhbnNmb3JtKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobV9wYXJzZXJQYXVzZWQpIHsKQEAgLTIxMSw2ICsyMTEsMTIgQEAgdm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6ZXhpdFRleHQoKQogICAgIHBvcEN1cnJlbnROb2RlKCk7CiB9CiAKK3ZvaWQg
WE1MRG9jdW1lbnRQYXJzZXI6OmRldGFjaCgpCit7CisgICAgY2xlYXJDdXJyZW50Tm9kZVN0YWNr
KCk7CisgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjpkZXRhY2goKTsKK30KKwogdm9pZCBY
TUxEb2N1bWVudFBhcnNlcjo6ZW5kKCkKIHsKICAgICAvLyBYTUxEb2N1bWVudFBhcnNlckxpYnht
bDIgd2lsbCBkbyBiYWQgdGhpbmdzIHRvIHRoZSBkb2N1bWVudCBpZiBkb0VuZCgpIGlzIGNhbGxl
ZC4KQEAgLTM0Niw2ICszNTIsOSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSogdW51c2VkUmVzb3VyY2UpCiAgICAgU2NyaXB0RWxlbWVudCog
c2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChlLmdldCgpKTsKICAgICBBU1NFUlQoc2Ny
aXB0RWxlbWVudCk7CiAKKyAgICAvLyBKYXZhU2NyaXB0IGNhbiBkZXRhY2ggdGhpcyBwYXJzZXIs
IG1ha2Ugc3VyZSBpdCdzIGtlcHQgYWxpdmUgZXZlbiBpZiBkZXRhY2hlZC4KKyAgICBSZWZQdHI8
WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CisgICAgCiAgICAgaWYgKGVycm9yT2Nj
dXJyZWQpCiAgICAgICAgIHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAg
IGVsc2UgewpAQCAtMzU1LDcgKzM2NCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiB1bnVzZWRSZXNvdXJjZSkKIAogICAgIG1fc2NyaXB0
RWxlbWVudCA9IDA7CiAKLSAgICBpZiAoIW1fcmVxdWVzdGluZ1NjcmlwdCkKKyAgICBpZiAoIWlz
RGV0YWNoZWQoKSAmJiAhbV9yZXF1ZXN0aW5nU2NyaXB0KQogICAgICAgICByZXN1bWVQYXJzaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmggYi9X
ZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGJlYmFmN2NiMzZjNmU1ZDRjZjY0
MmJmMTI2NGM2ODQ5OGRmMGVmYTEuLmE5M2ZkYTc3NjU2YmMwNmI1MDY3YjExMDhiZTI0NjMyZTJk
ZjFhM2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKKysrIGIv
V2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMTE3LDYgKzExNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGZpbmlzaFdhc0NhbGxlZCgpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcFBhcnNpbmcoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRldGFj
aCgpOwogCiAgICAgICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvV2ViQ29yZS9kb20vWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBjZTI1OTA1MjQ5NjZiNTM5NmQxZmY5MTZl
ZWVlYjMzOWUzZTQ4YTVhLi40MDIyZGI1NzllMTY2ZTU5YjUwNDc0OTIwNGY2ZGMyMjUxNjQ0YjM2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTYyMSwxMyAr
NjIxLDE4IEBAIFhNTFBhcnNlckNvbnRleHQ6On5YTUxQYXJzZXJDb250ZXh0KCkKIAogWE1MRG9j
dW1lbnRQYXJzZXI6On5YTUxEb2N1bWVudFBhcnNlcigpCiB7Ci0gICAgY2xlYXJDdXJyZW50Tm9k
ZVN0YWNrKCk7CisgICAgLy8gVGhlIFhNTERvY3VtZW50UGFyc2VyIHdpbGwgYWx3YXlzIGJlIGRl
dGFjaGVkIGJlZm9yZSBiZWluZyBkZXN0cm95ZWQuCisgICAgQVNTRVJUKG1fY3VycmVudE5vZGVT
dGFjay5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CisKKyAgICAvLyBG
SVhNRTogbV9wZW5kaW5nU2NyaXB0IGhhbmRsaW5nIHNob3VsZCBiZSBtb3ZlZCBpbnRvIFhNTERv
Y3VtZW50UGFyc2VyLmNwcCEKICAgICBpZiAobV9wZW5kaW5nU2NyaXB0KQogICAgICAgICBtX3Bl
bmRpbmdTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBh
cnNlcjo6ZG9Xcml0ZShjb25zdCBTdHJpbmcmIHBhcnNlU3RyaW5nKQogeworICAgIEFTU0VSVCgh
aXNEZXRhY2hlZCgpKTsKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgaW5pdGlhbGl6ZVBh
cnNlckNvbnRleHQoKTsKIApAQCAtNjM2LDYgKzY0MSwxMCBAQCB2b2lkIFhNTERvY3VtZW50UGFy
c2VyOjpkb1dyaXRlKGNvbnN0IFN0cmluZyYgcGFyc2VTdHJpbmcpCiAKICAgICAvLyBsaWJYTUwg
dGhyb3dzIGFuIGVycm9yIGlmIHlvdSB0cnkgdG8gc3dpdGNoIHRoZSBlbmNvZGluZyBmb3IgYW4g
ZW1wdHkgc3RyaW5nLgogICAgIGlmIChwYXJzZVN0cmluZy5sZW5ndGgoKSkgeworICAgICAgICAv
LyBKYXZhU2NyaXB0IG1heSBjYXVzZSB0aGUgcGFyc2VyIHRvIGRldGFjaCBkdXJpbmcgeG1sUGFy
c2VDaHVuaworICAgICAgICAvLyBrZWVwIHRoaXMgYWxpdmUgdW50aWwgdGhpcyBmdW5jdGlvbiBp
cyBkb25lLgorICAgICAgICBSZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7
CisKICAgICAgICAgLy8gSGFjayBhcm91bmQgbGlieG1sMidzIGxhY2sgb2YgZW5jb2Rpbmcgb3Zl
cmlkZSBzdXBwb3J0IGJ5IG1hbnVhbGx5CiAgICAgICAgIC8vIHJlc2V0dGluZyB0aGUgZW5jb2Rp
bmcgdG8gVVRGLTE2IGJlZm9yZSBldmVyeSBjaHVuay4gIE90aGVyd2lzZSBsaWJ4bWwKICAgICAg
ICAgLy8gd2lsbCBkZXRlY3QgPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iPGVuY29kaW5n
IG5hbWU+Ij8+IGJsb2NrcwpAQCAtNjQ2LDE0ICs2NTUsMTggQEAgdm9pZCBYTUxEb2N1bWVudFBh
cnNlcjo6ZG9Xcml0ZShjb25zdCBTdHJpbmcmIHBhcnNlU3RyaW5nKQogCiAgICAgICAgIFhNTERv
Y3VtZW50UGFyc2VyU2NvcGUgc2NvcGUoZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpOwogICAgICAg
ICB4bWxQYXJzZUNodW5rKGNvbnRleHQtPmNvbnRleHQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4ocGFyc2VTdHJpbmcuY2hhcmFjdGVycygpKSwgc2l6ZW9mKFVDaGFyKSAqIHBhcnNl
U3RyaW5nLmxlbmd0aCgpLCAwKTsKKworICAgICAgICAvLyBKYXZhU2NyaXB0ICh3aGljaCBtYXkg
YmUgcnVuIHVuZGVyIHRoZSB4bWxQYXJzZUNodW5rIGNhbGxzdGFjaykgbWF5CisgICAgICAgIC8v
IGNhdXNlIHRoZSBwYXJzZXIgdG8gYmUgc3RvcHBlZCBvciBkZXRhY2hlZC4KKyAgICAgICAgaWYg
KGlzRGV0YWNoZWQoKSB8fCBtX3BhcnNlclN0b3BwZWQpCisgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGhlcmU/ICBBbmQgd2h5IGlzIGl0IGFm
dGVyIHdlIHByb2Nlc3MgdGhlIHBhc3NlZCBzb3VyY2U/CiAgICAgaWYgKGRvY3VtZW50KCktPmRl
Y29kZXIoKSAmJiBkb2N1bWVudCgpLT5kZWNvZGVyKCktPnNhd0Vycm9yKCkpIHsKICAgICAgICAg
Ly8gSWYgdGhlIGRlY29kZXIgc2F3IGFuIGVycm9yLCByZXBvcnQgaXQgYXMgZmF0YWwgKHN0b3Bz
IHBhcnNpbmcpCiAgICAgICAgIGhhbmRsZUVycm9yKGZhdGFsLCAiRW5jb2RpbmcgZXJyb3IiLCBj
b250ZXh0LT5jb250ZXh0KCktPmlucHV0LT5saW5lLCBjb250ZXh0LT5jb250ZXh0KCktPmlucHV0
LT5jb2wpOwogICAgIH0KLQotICAgIHJldHVybjsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcg
dG9TdHJpbmcoY29uc3QgeG1sQ2hhciogc3RyLCB1bnNpZ25lZCBsZW4pCkBAIC04NjAsNiArODcz
LDEzIEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1lbnROcygpCiAgICAgZWxzZQog
I2VuZGlmCiAgICAgeworICAgICAgICAvLyBGSVhNRTogU2NyaXB0IGV4ZWN1dGlvbiBzaG91bGQg
YmUgc2hhcmVkIHNob3VsZCBiZSBzaGFyZWQgYmV0d2VlbgorICAgICAgICAvLyB0aGUgbGlieG1s
MiBhbmQgUXQgWE1MRG9jdW1lbnRQYXJzZXIgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIC8v
IEphdmFTY3JpcHQgY2FuIGRldGFjaCB0aGUgcGFyc2VyLiAgTWFrZSBzdXJlIHRoaXMgaXMgbm90
IHJlbGVhc2VkCisgICAgICAgIC8vIGJlZm9yZSB0aGUgZW5kIG9mIHRoaXMgbWV0aG9kLgorICAg
ICAgICBSZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CisKICAgICAgICAg
U3RyaW5nIHNjcmlwdEhyZWYgPSBzY3JpcHRFbGVtZW50LT5zb3VyY2VBdHRyaWJ1dGVWYWx1ZSgp
OwogICAgICAgICBpZiAoIXNjcmlwdEhyZWYuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyB3
ZSBoYXZlIGEgc3JjIGF0dHJpYnV0ZQpAQCAtODc2LDYgKzg5NiwxMCBAQCB2b2lkIFhNTERvY3Vt
ZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQogICAgICAgICAgICAgICAgIG1fc2NyaXB0RWxlbWVu
dCA9IDA7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV92aWV3LT5mcmFtZSgpLT5zY3Jp
cHQoKS0+ZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdEVsZW1lbnQtPnNjcmlw
dENvbnRlbnQoKSwgZG9jdW1lbnQoKS0+dXJsKCksIG1fc2NyaXB0U3RhcnRMaW5lKSk7CisKKyAg
ICAgICAgLy8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBkZXRhY2hlZCB0aGUgcGFyc2VyCisgICAgICAg
IGlmIChpc0RldGFjaGVkKCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fcmVx
dWVzdGluZ1NjcmlwdCA9IGZhbHNlOwogICAgIHBvcEN1cnJlbnROb2RlKCk7CkBAIC0xMzU0LDYg
KzEzNzgsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdG9wUGFyc2luZygpCiAKIHZvaWQg
WE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmcoKQogeworICAgIEFTU0VSVCghaXNEZXRh
Y2hlZCgpKTsKICAgICBBU1NFUlQobV9wYXJzZXJQYXVzZWQpOwogCiAgICAgbV9wYXJzZXJQYXVz
ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggOTVjNGZlMTk2
NTI5Zjk1MzM2MjE0NTZmY2I5YzRiMDhhYzY0MjRkYi4uYjQ0ZmM1NTQ4MmEzODU1ZGNlMDk1MWFl
YjBhYWI4NmZkZGM1OTA5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE5
Myw3ICsxOTMsNyBAQCBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0ZvclBhdXNl
ZFRyZWVCdWlsZGVyKCkKIAogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIo
U3luY2hyb25vdXNNb2RlIG1vZGUpCiB7Ci0gICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIEFT
U0VSVCghaXNEZXRhY2hlZCgpKTsKICAgICBBU1NFUlQoIW1fcGFyc2VyU3RvcHBlZCk7CiAgICAg
QVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKICAgICBBU1NFUlQoIWlzU2NoZWR1
bGVkRm9yUmVzdW1lKCkpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgICAgICBtX3Rva2Vu
LmNsZWFyKCk7CiAKICAgICAgICAgLy8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBzdG9wcGVkIG9yIGRl
dGFjaGVkIHRoZSBwYXJzZXIuCi0gICAgICAgIGlmICghbV9kb2N1bWVudCB8fCBtX3BhcnNlclN0
b3BwZWQpCisgICAgICAgIGlmIChpc0RldGFjaGVkKCkgfHwgbV9wYXJzZXJTdG9wcGVkKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFRoZSBwYXJzZXIgd2lsbCBwYXVzZSBpdHNl
bGYgd2hlbiB3YWl0aW5nIG9uIGEgc2NyaXB0IHRvIGxvYWQgb3IgcnVuLgpAQCAtMjI2LDcgKzIy
Niw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3Vz
TW9kZSBtb2RlKQogICAgICAgICBtX3RyZWVCdWlsZGVyLT5zZXRQYXVzZWQoIXNob3VsZENvbnRp
bnVlUGFyc2luZyk7CiAKICAgICAgICAgLy8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBzdG9wcGVkIG9y
IGRldGFjaGVkIHRoZSBwYXJzZXIuCi0gICAgICAgIGlmICghbV9kb2N1bWVudCB8fCBtX3BhcnNl
clN0b3BwZWQpCisgICAgICAgIGlmIChpc0RldGFjaGVkKCkgfHwgbV9wYXJzZXJTdG9wcGVkKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghc2hvdWxkQ29udGludWVQYXJzaW5n
KQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5p
emVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkp
IHsKICAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLT5zdGF0ZSgpID09IEhUTUxUb2tlbml6ZXI6
OkRhdGFTdGF0ZSk7CiAgICAgICAgIGlmICghbV9wcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAg
ICAgbV9wcmVsb2FkU2Nhbm5lci5zZXQobmV3IEhUTUxQcmVsb2FkU2Nhbm5lcihtX2RvY3VtZW50
KSk7CisgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLnNldChuZXcgSFRNTFByZWxvYWRTY2Fu
bmVyKGRvY3VtZW50KCkpKTsKICAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPmFwcGVuZFRv
RW5kKG1faW5wdXQuY3VycmVudCgpKTsKICAgICAgICAgfQogICAgICAgICBtX3ByZWxvYWRTY2Fu
bmVyLT5zY2FuKCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OndpbGxQdW1wTGV4ZXIoKQogICAgIC8vIEZJWE1FOiBtX2lucHV0LmN1cnJlbnQoKS5sZW5ndGgo
KSBpcyBvbmx5IGFjY3VyYXRlIGlmIHdlCiAgICAgLy8gZW5kIHVwIHBhcnNpbmcgdGhlIHdob2xl
IGJ1ZmZlciBpbiB0aGlzIHB1bXAuICBXZSBzaG91bGQgcGFzcyBob3cKICAgICAvLyBtdWNoIHdl
IHBhcnNlZCBhcyBwYXJ0IG9mIGRpZFdyaXRlSFRNTCBpbnN0ZWFkIG9mIHdpbGxXcml0ZUhUTUwu
Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2RvY3Vt
ZW50LT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBkb2N1bWVudCgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxXcml0ZUhUTUwobV9pbnB1dC5jdXJyZW50
KCkubGVuZ3RoKCksIG1fdG9rZW5pemVyLT5saW5lTnVtYmVyKCkpOwogI2VuZGlmCiB9CkBAIC0y
NjMsNyArMjYzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OndpbGxQdW1wTGV4ZXIoKQog
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFB1bXBMZXhlcigpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IG1fZG9jdW1lbnQtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGRvY3VtZW50KCktPmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkV3JpdGVIVE1MKG1fdG9rZW5p
emVyLT5saW5lTnVtYmVyKCkpOwogI2VuZGlmCiB9CkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkK
IAogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmVuZCgpCiB7Ci0gICAgQVNTRVJUKG1fZG9jdW1l
bnQpOworICAgIEFTU0VSVCghaXNEZXRhY2hlZCgpKTsKICAgICBBU1NFUlQoIWlzU2NoZWR1bGVk
Rm9yUmVzdW1lKCkpOwogCiAgICAgLy8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJz
ZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCkBAIC0zNTUsNyArMzU1LDcgQEAg
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmF0dGVtcHRUb0VuZCgpCiB2b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6ZW5kSWZEZWxheWVkKCkKIHsKICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGJlZW4g
ZGV0YWNoZWQsIGRvbid0IGJvdGhlciBlbmRpbmcuCi0gICAgaWYgKCFtX2RvY3VtZW50KQorICAg
IGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9lbmRXYXNE
ZWxheWVkIHx8IHNob3VsZERlbGF5RW5kKCkpCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBIVE1M
RG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkKIAog
U2NyaXB0Q29udHJvbGxlciogSFRNTERvY3VtZW50UGFyc2VyOjpzY3JpcHQoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2RvY3VtZW50LT5mcmFtZSgpID8gbV9kb2N1bWVudC0+ZnJhbWUoKS0+c2Ny
aXB0KCkgOiAwOworICAgIHJldHVybiBkb2N1bWVudCgpLT5mcmFtZSgpID8gZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+c2NyaXB0KCkgOiAwOwogfQogCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cGFy
c2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgc291cmNlLCBEb2N1bWVudEZyYWdtZW50
KiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxWaWV3U291cmNlUGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNl
ci5jcHAKaW5kZXggMmQ2OWZlNjZmZjBjY2YxZjY5MzU2ZTllZGE0NzgzZmEyMTEyMjU1MC4uZmU0
YmRiYTcxYjE0NzgxYzYwM2FlNTMxYzVkNGRmY2M5MGM3OWEwMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgSFRNTFZpZXdTb3VyY2VQ
YXJzZXI6OnVwZGF0ZVRva2VuaXplclN0YXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQXRv
bWljU3RyaW5nIHRhZ05hbWUobV90b2tlbi5uYW1lKCkuZGF0YSgpLCBtX3Rva2VuLm5hbWUoKS5z
aXplKCkpOwotICAgIG1fdG9rZW5pemVyLnNldFN0YXRlKEhUTUxUcmVlQnVpbGRlcjo6YWRqdXN0
ZWRMZXhlclN0YXRlKG1fdG9rZW5pemVyLnN0YXRlKCksIHRhZ05hbWUsIG1fZG9jdW1lbnQtPmZy
YW1lKCkpKTsKKyAgICBtX3Rva2VuaXplci5zZXRTdGF0ZShIVE1MVHJlZUJ1aWxkZXI6OmFkanVz
dGVkTGV4ZXJTdGF0ZShtX3Rva2VuaXplci5zdGF0ZSgpLCB0YWdOYW1lLCBkb2N1bWVudCgpLT5m
cmFtZSgpKSk7CiAgICAgaWYgKHRhZ05hbWUgPT0gSFRNTE5hbWVzOjpzY3JpcHRUYWcpIHsKICAg
ICAgICAgLy8gVGhlIHRyZWUgYnVpbGRlciBoYW5kbGVzIHNjcmlwdFRhZyBzZXBhcmF0ZWx5IGZy
b20gdGhlIG90aGVyIHRva2VuaXplcgogICAgICAgICAvLyBzdGF0ZSBhZGp1c3RtZW50cywgc28g
d2UgbmVlZCB0byBoYW5kbGUgaXQgc2VwYXJhdGVseSB0b28uCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJj
ZVBhcnNlci5oCmluZGV4IGFmMzMzZDg2ODQwMTExNzQxN2Q0OTNhNTVlNDgzOTA2MjcxNDBmMDYu
LjZhMTc2NTMwOThiNzIzOWIzYWFjOTNkYmZmYmZhZmQwNzNjNGIxNmMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
Vmlld1NvdXJjZVBhcnNlci5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaCgpOwogICAgIHZpcnR1YWwgYm9vbCBmaW5pc2hXYXNDYWxsZWQoKTsKIAot
ICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTFZpZXdTb3VyY2VEb2N1bWVudCo+KG1fZG9jdW1lbnQpOyB9CisgICAgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MVmlld1NvdXJjZURvY3VtZW50Kj4oRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6ZG9j
dW1lbnQoKSk7IH0KIAogICAgIHZvaWQgcHVtcFRva2VuaXplcigpOwogICAgIFN0cmluZyBzb3Vy
Y2VGb3JUb2tlbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5j
cHAgYi9XZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAppbmRleCBlNWU3MGM3M2IwM2Q2
ZjYxZGRjZjg5YzRlOWRiNzNlNGE2NmI1M2U2Li5hMWE5ZjgwMjVkY2EwMzgyNjU0ZTQyN2NmYTZk
NDc1NTkwODQ3MDczIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNw
cAorKysgYi9XZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcApAQCAtODAsNyArODAsNyBA
QCBwdWJsaWM6CiAKICAgICBJbWFnZURvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VEb2N1bWVudCo+KG1fZG9jdW1lbnQpOwor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VEb2N1bWVudCo+KFJhd0RhdGFEb2N1bWVu
dFBhcnNlcjo6ZG9jdW1lbnQoKSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToK
</data>
<flag name="review"
          id="54101"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="54102"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>