<?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>39903</bug_id>
          
          <creation_ts>2010-05-28 14:34:40 -0700</creation_ts>
          <short_desc>HTML5 parser should block script execution until stylesheets load</short_desc>
          <delta_ts>2010-05-29 10:53:09 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>231946</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-28 14:34:40 -0700</bug_when>
    <thetext>HTML5 parser should block script execution while stylesheets load</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231949</commentid>
    <comment_count>1</comment_count>
      <attachid>57382</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-28 14:37:59 -0700</bug_when>
    <thetext>Created attachment 57382
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231955</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-28 14:42:11 -0700</bug_when>
    <thetext>This patch doesn&apos;t work yet because it triggers parser reentry on any &lt;style&gt; tag. :(


#4	0x0440bf46 in WebCore::HTML5Tokenizer::resumeParsingAfterScriptExecution at HTML5Tokenizer.cpp:110
#5	0x0440bff3 in WebCore::HTML5Tokenizer::executeScriptsWaitingForStylesheets at HTML5Tokenizer.cpp:155
#6	0x04246567 in WebCore::Document::removePendingSheet at Document.cpp:2567
#7	0x0447e0ac in WebCore::HTMLStyleElement::sheetLoaded at HTMLStyleElement.cpp:107
#8	0x041f0305 in WebCore::CSSStyleSheet::checkLoaded at CSSStyleSheet.cpp:213
#9	0x04aa3412 in WebCore::StyleElement::createSheet at StyleElement.cpp:115
#10	0x04aa3671 in WebCore::StyleElement::process at StyleElement.cpp:85
#11	0x0447e25d in WebCore::HTMLStyleElement::finishParsingChildren at HTMLStyleElement.cpp:61
#12	0x04476c30 in WebCore::HTMLParser::popOneBlockCommon at HTMLParser.cpp:1480
#13	0x0446fabe in WebCore::HTMLParser::popOneBlock at HTMLParser.cpp:1508
#14	0x04471756 in WebCore::HTMLParser::popBlock at HTMLParser.cpp:1423
#15	0x044762fb in WebCore::HTMLParser::processCloseTag at HTMLParser.cpp:1023
#16	0x04475c0b in WebCore::HTMLParser::parseToken at HTMLParser.cpp:271
#17	0x0440d763 in WebCore::HTML5TreeBuilder::passTokenToLegacyParser at HTML5TreeBuilder.cpp:140
#18	0x0440dcaf in WebCore::HTML5TreeBuilder::constructTreeFromToken at HTML5TreeBuilder.cpp:173
#19	0x0440bdd9 in WebCore::HTML5Tokenizer::pumpLexer at HTML5Tokenizer.cpp:62
#20	0x0440bf46 in WebCore::HTML5Tokenizer::resumeParsingAfterScriptExecution at HTML5Tokenizer.cpp:110
#21	0x0440c066 in WebCore::HTML5Tokenizer::notifyFinished at HTML5Tokenizer.cpp:147
#22	0x040d78af in WebCore::CachedScript::checkNotify at CachedScript.cpp:106
#23	0x040d7993 in WebCore::CachedScript::data at CachedScript.cpp:96
#24	0x048092ba in WebCore::Loader::Host::didFinishLoading at loader.cpp:406
#25	0x04aa97f6 in WebCore::SubresourceLoader::didFinishLoading at SubresourceLoader.cpp:194
#26	0x04a01b9c in WebCore::ResourceLoader::didFinishLoading at ResourceLoader.cpp:443
#27	0x049fdff1 in -[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:] at ResourceHandleMac.mm:862

I&apos;m not sure yet what the proper solution is.  We may have to not do anything in executeScriptsWaitingForStylesheets until after executeScriptsWaitingForLoad has executed once and failed to due to unloaded style sheets.

The old HTMLTokenizer has something similar to that:

    // Make external scripts wait for external stylesheets.
    // FIXME: This needs to be done for inline scripts too.
    m_hasScriptsWaitingForStylesheets = !m_doc-&gt;haveStylesheetsLoaded();
    if (m_hasScriptsWaitingForStylesheets)
        return;

We probably want that exact check, but we need to explain better in our comments why it does what it does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231988</commentid>
    <comment_count>3</comment_count>
      <attachid>57392</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-28 15:52:08 -0700</bug_when>
    <thetext>Created attachment 57392
I believe this patch works, still testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232078</commentid>
    <comment_count>4</comment_count>
      <attachid>57406</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-29 00:22:45 -0700</bug_when>
    <thetext>Created attachment 57406
patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232086</commentid>
    <comment_count>5</comment_count>
      <attachid>57407</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-29 01:24:45 -0700</bug_when>
    <thetext>Created attachment 57407
Added fix for fast/parser/tokenizer-close-during-document-write.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232111</commentid>
    <comment_count>6</comment_count>
      <attachid>57407</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-29 08:57:37 -0700</bug_when>
    <thetext>Comment on attachment 57407
Added fix for fast/parser/tokenizer-close-during-document-write.html

Makes sense to me.  Can we add a test that we block script in this way?  It&apos;s not clear to me exactly how this is observable without CSS expressions().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232112</commentid>
    <comment_count>7</comment_count>
      <attachid>57407</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-29 09:12:17 -0700</bug_when>
    <thetext>Comment on attachment 57407
Added fix for fast/parser/tokenizer-close-during-document-write.html

Clearing flags on attachment: 57407

Committed r60409: &lt;http://trac.webkit.org/changeset/60409&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232113</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-29 09:12:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232124</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-29 10:53:09 -0700</bug_when>
    <thetext>Yes, we can detect this.  Start a timer at the top of the page, then load a slow style sheet, then check the time in a script.  I&apos;m not sure if we already have tests for htat since we have no clue how many tests we pass/fail yet. :)  However this fixed a bunch of test cases.  Not sure if that aspect of the change is tested or not.  I can certainly write more tests.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57382</attachid>
            <date>2010-05-28 14:37:59 -0700</date>
            <delta_ts>2010-05-28 15:52:03 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-39903-20100528143758.patch</filename>
            <type>text/plain</type>
            <size>4591</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWUzMGYyZmQ0YWU4ZjJhN2I0YjM2ODg1ZWQ4MTE1NDk1NWFmZGM3ZS4uNzAzMDgyNDA4OGY4NTI4
NGViNmRmZTI2MjZiYTA2MWE5ZTI2MzQ2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0yOCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSFRNTDUgcGFyc2VyIHNob3VsZCBibG9jayBzY3JpcHQgZXhl
Y3V0aW9uIHVudGlsIHN0eWxlc2hlZXRzIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTAzCisKKyAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0
UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjppc1BlbmRp
bmdTY3JpcHRSZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhl
Y3V0ZVBlbmRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6
OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKToKKyAgICAgICAgKiBodG1sL0hU
TUw1U2NyaXB0UnVubmVyLmg6CisgICAgICAgICogaHRtbC9IVE1MNVRva2VuaXplci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxl
c2hlZXRzKToKKwogMjAxMC0wNS0yOCAgQWRhbSBUcmVhdCAgPGF0cmVhdEByaW0uY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIu
Y3BwCmluZGV4IGEyMDQ2NDFiYmM0ZDA4OTViMGNmNzhhODA3NjEwZGI0NTBhY2E3ZjEuLjhhZjUw
NTMwYjI4Nzk4Mzg0Yjg4NGQ2Mjg5NGQ0N2M4OWVhZTkwYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0
UnVubmVyLmNwcApAQCAtODksMTAgKzg5LDggQEAgU2NyaXB0U291cmNlQ29kZSBIVE1MNVNjcmlw
dFJ1bm5lcjo6c291cmNlRnJvbVBlbmRpbmdTY3JpcHQoY29uc3QgUGVuZGluZ1NjcmlwdCYKIAog
Ym9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGlu
Z1NjcmlwdCYgc2NyaXB0KQogewotICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBibG9jayBmb3Igc3R5
bGVzaGVldHMgeWV0LCBiZWNhdXNlIHRoYXQgY2F1c2VzIHVzIHRvIHJlLWVudGVyCi0gICAgLy8g
dGhlIHBhcnNlciBmcm9tIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzIHdoZW4g
cGFyc2luZyBzdHlsZSB0YWdzLgotICAgIC8vIGlmICghbV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hl
ZXRzTG9hZGVkKCkpCi0gICAgLy8gICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fZG9jdW1l
bnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQgJiYgIXNjcmlwdC5jYWNoZWRTY3JpcHQtPmlzTG9hZGVk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwMSw5ICs5
OSw3IEBAIGJvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmlzUGVuZGluZ1NjcmlwdFJlYWR5KGNvbnN0
IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCkKIHZvaWQgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQ
ZW5kaW5nU2NyaXB0KCkKIHsKICAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKLSAg
ICAvLyBGSVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yIHN0eWxlc2hlZXRzIHlldCwgYmVjYXVzZSB0
aGF0IGNhdXNlcyB1cyB0byByZS1lbnRlcgotICAgIC8vIHRoZSBwYXJzZXIgZnJvbSBleGVjdXRl
U2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyB3aGVuIHBhcnNpbmcgc3R5bGUgdGFncy4KLSAg
ICAvLyBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpOworICAgIEFT
U0VSVChtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CiAgICAgYm9vbCBlcnJv
ck9jY3VycmVkID0gZmFsc2U7CiAgICAgQVNTRVJUKGlzUGVuZGluZ1NjcmlwdFJlYWR5KG1fcGFy
c2luZ0Jsb2NraW5nU2NyaXB0KSk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlID0g
c291cmNlRnJvbVBlbmRpbmdTY3JpcHQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQsIGVycm9yT2Nj
dXJyZWQpOwpAQCAtMTkwLDYgKzE4NiwxMiBAQCBib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVj
dXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKikKICAgICByZXR1cm4gZXhl
Y3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKIH0KIAorYm9vbCBIVE1MNVNjcmlwdFJ1bm5l
cjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQoreworICAgIEFTU0VSVCht
X2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CisgICAgcmV0dXJuIGV4ZWN1dGVQ
YXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7Cit9CisKIHZvaWQgSFRNTDVTY3JpcHRSdW5uZXI6OnJl
cXVlc3RTY3JpcHQoRWxlbWVudCogc2NyaXB0KQogewogICAgIEFTU0VSVCghbV9wYXJzaW5nQmxv
Y2tpbmdTY3JpcHQuZWxlbWVudCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3Jp
cHRSdW5uZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oCmluZGV4IGU2N2E4
MDRiMjg0YjdiYTY4ZmIwYWVhMThmODg5NTNmMmFmMzIzNzYuLmZmYTc2ODE1NzVmODNiMDVlMzk3
M2M3ZDYyNDA3M2MwYjNmNzUzNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlw
dFJ1bm5lci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oCkBAIC01MCw2
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGV4ZWN1dGUoUGFzc1JlZlB0cjxFbGVtZW50PiBz
Y3JpcHRUb1Byb2Nlc3MpOwogICAgIC8vIFByb2Nlc3NlcyBhbnkgcGVuZGluZyBzY3JpcHRzLgog
ICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZChDYWNoZWRSZXNvdXJjZSopOwor
ICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIAogcHJpdmF0
ZToKICAgICBzdHJ1Y3QgUGVuZGluZ1NjcmlwdCB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTDVUb2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcAppbmRl
eCBkZjgxMjM2NjNjYzRjZjEyYmZhMWU2YmQwYTNjZTc2OTM4ZjhhYTM0Li44NmI3NTUzZTRhNTMx
NTQ2MWFhNjBmODczMmI4YTQwMWNlMzg4MmE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TDVUb2tlbml6ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAKQEAg
LTE0MiwxNiArMTQyLDE3IEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmV4ZWN1dGVTY3JpcHQoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHZvaWQgSFRNTDVUb2tlbml6ZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBib29s
IHNob3VsZENvbnRpbnVlUGFyc2luZyA9IG1fc2NyaXB0UnVubmVyLT5leGVjdXRlU2NyaXB0c1dh
aXRpbmdGb3JMb2FkKGNhY2hlZFJlc291cmNlKTsKLSAgICBpZiAoc2hvdWxkQ29udGludWVQYXJz
aW5nKSB7Ci0gICAgICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZChmYWxzZSk7CisgICAgbV90
cmVlQnVpbGRlci0+c2V0UGF1c2VkKCFzaG91bGRDb250aW51ZVBhcnNpbmcpOworICAgIGlmIChz
aG91bGRDb250aW51ZVBhcnNpbmcpCiAgICAgICAgIHJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4
ZWN1dGlvbigpOwotICAgIH0KIH0KIAogdm9pZCBIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlw
dHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogewotICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBibG9j
ayBmb3Igc3R5bGVzaGVldHMgeWV0LCBiZWNhdXNlIHRoYXQgY2F1c2VzIHVzIHRvIHJlLWVudGVy
Ci0gICAgLy8gdGhlIHBhcnNlciBmcm9tIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hl
ZXRzIHdoZW4gcGFyc2luZyBzdHlsZSB0YWdzLgorICAgIGJvb2wgc2hvdWxkQ29udGludWVQYXJz
aW5nID0gbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRz
KCk7CisgICAgbV90cmVlQnVpbGRlci0+c2V0UGF1c2VkKCFzaG91bGRDb250aW51ZVBhcnNpbmcp
OworICAgIGlmIChzaG91bGRDb250aW51ZVBhcnNpbmcpCisgICAgICAgIHJlc3VtZVBhcnNpbmdB
ZnRlclNjcmlwdEV4ZWN1dGlvbigpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57392</attachid>
            <date>2010-05-28 15:52:08 -0700</date>
            <delta_ts>2010-05-29 00:22:41 -0700</delta_ts>
            <desc>I believe this patch works, still testing</desc>
            <filename>bug-39903-20100528155205.patch</filename>
            <type>text/plain</type>
            <size>6236</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWUzMGYyZmQ0YWU4ZjJhN2I0YjM2ODg1ZWQ4MTE1NDk1NWFmZGM3ZS4uNzAzMDgyNDA4OGY4NTI4
NGViNmRmZTI2MjZiYTA2MWE5ZTI2MzQ2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0yOCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSFRNTDUgcGFyc2VyIHNob3VsZCBibG9jayBzY3JpcHQgZXhl
Y3V0aW9uIHVudGlsIHN0eWxlc2hlZXRzIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTAzCisKKyAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0
UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjppc1BlbmRp
bmdTY3JpcHRSZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhl
Y3V0ZVBlbmRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6
OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKToKKyAgICAgICAgKiBodG1sL0hU
TUw1U2NyaXB0UnVubmVyLmg6CisgICAgICAgICogaHRtbC9IVE1MNVRva2VuaXplci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxl
c2hlZXRzKToKKwogMjAxMC0wNS0yOCAgQWRhbSBUcmVhdCAgPGF0cmVhdEByaW0uY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIu
Y3BwCmluZGV4IGEyMDQ2NDFiYmM0ZDA4OTViMGNmNzhhODA3NjEwZGI0NTBhY2E3ZjEuLjNlMGNk
N2ZiOGIxNzZhMTQyNGQzNGFhMDEwYWEzNDMwODQzZThlOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0
UnVubmVyLmNwcApAQCAtNDYsNiArNDYsNyBAQCBIVE1MNVNjcmlwdFJ1bm5lcjo6SFRNTDVTY3Jp
cHRSdW5uZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MNVNjcmlwdFJ1bm5lckhvc3QqCiAgICAg
OiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9ob3N0KGhvc3QpCiAgICAgLCBtX3Njcmlw
dE5lc3RpbmdMZXZlbCgwKQorICAgICwgbV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRz
KGZhbHNlKQogewogfQogCkBAIC04OSwxMCArOTAsOSBAQCBTY3JpcHRTb3VyY2VDb2RlIEhUTUw1
U2NyaXB0UnVubmVyOjpzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25zdCBQZW5kaW5nU2NyaXB0
JgogCiBib29sIEhUTUw1U2NyaXB0UnVubmVyOjppc1BlbmRpbmdTY3JpcHRSZWFkeShjb25zdCBQ
ZW5kaW5nU2NyaXB0JiBzY3JpcHQpCiB7Ci0gICAgLy8gRklYTUU6IFdlIGNhbid0IGJsb2NrIGZv
ciBzdHlsZXNoZWV0cyB5ZXQsIGJlY2F1c2UgdGhhdCBjYXVzZXMgdXMgdG8gcmUtZW50ZXIKLSAg
ICAvLyB0aGUgcGFyc2VyIGZyb20gZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMg
d2hlbiBwYXJzaW5nIHN0eWxlIHRhZ3MuCi0gICAgLy8gaWYgKCFtX2RvY3VtZW50LT5oYXZlU3R5
bGVzaGVldHNMb2FkZWQoKSkKLSAgICAvLyAgICAgcmV0dXJuIGZhbHNlOworICAgIG1faGFzU2Ny
aXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyA9ICFtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNM
b2FkZWQoKTsKKyAgICBpZiAobV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQgJiYgIXNjcmlw
dC5jYWNoZWRTY3JpcHQtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTEwMSw5ICsxMDEsNyBAQCBib29sIEhUTUw1U2NyaXB0UnVubmVyOjpp
c1BlbmRpbmdTY3JpcHRSZWFkeShjb25zdCBQZW5kaW5nU2NyaXB0JiBzY3JpcHQpCiB2b2lkIEhU
TUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdCgpCiB7CiAgICAgQVNTRVJUKCFt
X3NjcmlwdE5lc3RpbmdMZXZlbCk7Ci0gICAgLy8gRklYTUU6IFdlIGNhbid0IGJsb2NrIGZvciBz
dHlsZXNoZWV0cyB5ZXQsIGJlY2F1c2UgdGhhdCBjYXVzZXMgdXMgdG8gcmUtZW50ZXIKLSAgICAv
LyB0aGUgcGFyc2VyIGZyb20gZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMgd2hl
biBwYXJzaW5nIHN0eWxlIHRhZ3MuCi0gICAgLy8gQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVTdHls
ZXNoZWV0c0xvYWRlZCgpKTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRz
TG9hZGVkKCkpOwogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCA9IGZhbHNlOwogICAgIEFTU0VSVChp
c1BlbmRpbmdTY3JpcHRSZWFkeShtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCkpOwogICAgIFNjcmlw
dFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IHNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KG1fcGFyc2lu
Z0Jsb2NraW5nU2NyaXB0LCBlcnJvck9jY3VycmVkKTsKQEAgLTE4NSwxMSArMTgzLDIyIEBAIGJv
b2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCkKIAog
Ym9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZChDYWNo
ZWRSZXNvdXJjZSopCiB7CisgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CiAgICAg
QVNTRVJUKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmVsZW1lbnQpOwogICAgIEFTU0VSVChtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQtPmlzTG9hZGVkKCkpOwogICAgIHJldHVy
biBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOwogfQogCitib29sIEhUTUw1U2NyaXB0
UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpCit7CisgICAgLy8g
Q2FsbGVycyBzaG91bGQgY2hlY2sgaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIGJl
Zm9yZSBjYWxsaW5nCisgICAgLy8gdG8gcHJldmVudCBwYXJzZXIgb3Igc2NyaXB0IHJlLWVudHJ5
IGR1cmluZyA8L3N0eWxlPiBwYXJzaW5nLgorICAgIEFTU0VSVChtX2hhc1NjcmlwdHNXYWl0aW5n
Rm9yU3R5bGVzaGVldHMpOworICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2ZWwpOworICAg
IEFTU0VSVChtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CisgICAgcmV0dXJu
IGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7Cit9CisKIHZvaWQgSFRNTDVTY3JpcHRS
dW5uZXI6OnJlcXVlc3RTY3JpcHQoRWxlbWVudCogc2NyaXB0KQogewogICAgIEFTU0VSVCghbV9w
YXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTDVTY3JpcHRSdW5uZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oCmlu
ZGV4IGU2N2E4MDRiMjg0YjdiYTY4ZmIwYWVhMThmODg5NTNmMmFmMzIzNzYuLmU2NjU5NjY1OGRk
MDZmZDdkYTQ5ODFkNTUzYTZhY2QxZjVjNTMzYWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MNVNjcmlwdFJ1bm5lci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5o
CkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGV4ZWN1dGUoUGFzc1JlZlB0cjxF
bGVtZW50PiBzY3JpcHRUb1Byb2Nlc3MpOwogICAgIC8vIFByb2Nlc3NlcyBhbnkgcGVuZGluZyBz
Y3JpcHRzLgogICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZChDYWNoZWRSZXNv
dXJjZSopOworICAgIGJvb2wgaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0czsgfQorICAgIGJvb2wg
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIAogcHJpdmF0ZToKICAgICBz
dHJ1Y3QgUGVuZGluZ1NjcmlwdCB7CkBAIC04NSw2ICs4NywxMiBAQCBwcml2YXRlOgogICAgIEhU
TUw1U2NyaXB0UnVubmVySG9zdCogbV9ob3N0OwogICAgIFBlbmRpbmdTY3JpcHQgbV9wYXJzaW5n
QmxvY2tpbmdTY3JpcHQ7CiAgICAgdW5zaWduZWQgbV9zY3JpcHROZXN0aW5nTGV2ZWw7CisKKyAg
ICAvLyBXZSBvbmx5IHdhbnQgc3R5bGVzaGVldCBsb2FkcyB0byB0cmlnZ2VyIHNjcmlwdCBleGVj
dXRpb24gaWYgc2NyaXB0CisgICAgLy8gZXhlY3V0aW9uIGlzIGN1cnJlbnRseSBzdG9wcGVkIGR1
ZSB0byBzdHlsZXNoZWV0IGxvYWRzLCBvdGhlcndpc2Ugd2UnZAorICAgIC8vIGNhdXNlIG5lc3Rl
ZCBzcmlwdCBleGVjdXRpb24gd2hlbiBwYXJzaW5nIDxzdHlsZT4gdGFncyBzaW5jZSA8L3N0eWxl
PgorICAgIC8vIHRhZ3MgY2FuIGNhdXNlIERvY3VtZW50IHRvIGNhbGwgZXhlY3V0ZVNjcmlwdHNX
YWl0aW5nRm9yU3R5bGVzaGVldHMuCisgICAgYm9vbCBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5
bGVzaGVldHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6
ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcAppbmRleCBkZjgxMjM2NjNj
YzRjZjEyYmZhMWU2YmQwYTNjZTc2OTM4ZjhhYTM0Li5jMDJkM2M5ZTZlNmY4NmI2MmFlZDQ1OWQx
MTViM2Q3MDc0MzA1MzQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAKQEAgLTE0MiwxNiArMTQy
LDIyIEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSkKIHZvaWQgSFRNTDVUb2tlbml6ZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBib29sIHNob3VsZENvbnRp
bnVlUGFyc2luZyA9IG1fc2NyaXB0UnVubmVyLT5leGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2Fk
KGNhY2hlZFJlc291cmNlKTsKLSAgICBpZiAoc2hvdWxkQ29udGludWVQYXJzaW5nKSB7Ci0gICAg
ICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZChmYWxzZSk7CisgICAgbV90cmVlQnVpbGRlci0+
c2V0UGF1c2VkKCFzaG91bGRDb250aW51ZVBhcnNpbmcpOworICAgIGlmIChzaG91bGRDb250aW51
ZVBhcnNpbmcpCiAgICAgICAgIHJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpOwot
ICAgIH0KIH0KIAogdm9pZCBIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9y
U3R5bGVzaGVldHMoKQogewotICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBibG9jayBmb3Igc3R5bGVz
aGVldHMgeWV0LCBiZWNhdXNlIHRoYXQgY2F1c2VzIHVzIHRvIHJlLWVudGVyCi0gICAgLy8gdGhl
IHBhcnNlciBmcm9tIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzIHdoZW4gcGFy
c2luZyBzdHlsZSB0YWdzLgorICAgIC8vIElnbm9yZSBjYWxscyB1bmxlc3Mgd2UgaGF2ZSBhIHNj
cmlwdCBibG9ja2luZyB0aGUgcGFyc2VyIHdhaXRpbmcgb24gYQorICAgIC8vIHN0eWxlc2hlZXQg
bG9hZC4gIE90aGVyd2lzZSB3ZSBhcmUgY3VycmVudGx5IHBhcnNpbmcgYW5kIHRoaXMKKyAgICAv
LyBpcyBhIHJlLWVudHJhbnQgY2FsbCBmcm9tIGVuY291bnRlcmluZyBhIDwvc3R5bGU+IHRhZy4K
KyAgICBpZiAoIW1fc2NyaXB0UnVubmVyLT5oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRz
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBib29sIHNob3VsZENvbnRpbnVlUGFyc2luZyA9IG1f
c2NyaXB0UnVubmVyLT5leGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOworICAg
IG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZCghc2hvdWxkQ29udGludWVQYXJzaW5nKTsKKyAgICBp
ZiAoc2hvdWxkQ29udGludWVQYXJzaW5nKQorICAgICAgICByZXN1bWVQYXJzaW5nQWZ0ZXJTY3Jp
cHRFeGVjdXRpb24oKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57406</attachid>
            <date>2010-05-29 00:22:45 -0700</date>
            <delta_ts>2010-05-29 01:24:40 -0700</delta_ts>
            <desc>patch for review</desc>
            <filename>bug-39903-20100529002244.patch</filename>
            <type>text/plain</type>
            <size>12115</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWUzMGYyZmQ0YWU4ZjJhN2I0YjM2ODg1ZWQ4MTE1NDk1NWFmZGM3ZS4uZDA4NzVmZTJmODU4M2Ez
OWM4Y2FkOTBmNDFmZDI2Njk2NzFjMDZmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxMC0wNS0yOCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSFRNTDUgcGFyc2VyIHNob3VsZCBibG9jayBzY3JpcHQgZXhl
Y3V0aW9uIHVudGlsIHN0eWxlc2hlZXRzIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTAzCisKKyAgICAgICAgQWxsIDxzY3JpcHQ+IHRhZyBl
eGVjdXRpb24gbm93IGJsb2NrcyBvbiBzdHlsZXNoZWV0IGxvYWQsIGluY2x1ZGluZworICAgICAg
ICBpbmxpbmUgPHNjcmlwdD4gY29udGVudCB3aGljaCB0aGUgb2xkIHBhcnNlciBkb2Vzbid0IHN1
cHBvcnQgYmxvY2tpbmcuCisKKyAgICAgICAgSHlhdHQgc2F5cyB3ZSBjb3VsZCBub3cgZ2V0IHJp
ZCBvZiB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMKKyAgICAgICAgb25jZSBv
dXIgcHJpbWFyeSBwYXJzZXIga25vd3MgaG93IHRvIHdhaXQgZm9yIHN0eWxlc2hlZXRzCisgICAg
ICAgIGJlZm9yZSBleGVjdXRpbmcgaW5saW5lIDxzY3JpcHQ+IGNvbnRlbnQuCisKKyAgICAgICAg
QWxsIG9mIGh0dHAvdGVzdHMvbG9jYWwgcGFzc2VzIGluIC0taHRtbDUtcGFyc2VyIG1vZGUgbm93
LgorCisgICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6SFRNTDVTY3JpcHRSdW5uZXIpOgorICAgICAgICAgLSBB
ZGRlZCBhIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyBib29sIHNvIHRoYXQgd2Ug
Y2FuCisgICAgICAgICAgIGRldGVjdCB3aGVuIHdlJ3JlIGFjdHVhbGx5IHdhaXRpbmcgb24gc3R5
bGVzaGVldHMgb3Igbm90LgorICAgICAgICAgICBJZiB3ZSdyZSBub3Qgd2FpdGluZyBvbiBzdHls
ZXNoZWV0cyB0aGVuIHdlJ3JlIHN0aWxsIHBhcnNpbmcgYW5kCisgICAgICAgICAgIGV4ZWN1dGlu
ZyBzY3JpcHRzIHdvdWxkIGNhdXNlIHBhcnNlci9zY3JpcHQgcmVlbnRyYW5jeSBhbmQgYmFkIG5l
d3MgYmVhcnMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5n
U2NyaXB0UmVhZHkpOgorICAgICAgICAgLSBSZS1lbmFibGUgdGhlIGNoZWNrIHRoYXQgdGhlIHN0
eWxlc2hlZXRzIGhhdmUgbG9hZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5u
ZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KToKKyAgICAgICAgIC0gQVNTRVJUIHRoYXQgc3R5bGVz
aGVldHMgaGF2ZSBsb2FkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZCk6CisgICAgICAgICAtIEFTU0VSVCB0aGF0IHRo
aXMgaXMgbmV2ZXIgY2FsbGVkIHJlZW50cmFudGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVT
Y3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKToKKyAgICAg
ICAgIC0gRXhlY3V0ZSBhbnkgc2NyaXB0cyB3aGljaCB3ZXJlIGJsb2NrZWQgb24gc3R5bGVzaGVl
dCBsb2Fkcy4KKyAgICAgICAgIC0gQVNTRVJUIChpbiB0d28gd2F5cykgdGhhdCB0aGlzIGlzIG5l
dmVyIGNhbGxlZCByZWVudHJhbnRseS4KKyAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVubmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6aGFzU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cyk6CisgICAgICAgICAtIENhbGxlcnMgbmVlZCB0byBjaGVjayB0aGlz
IGJlZm9yZSBjYWxsaW5nIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6aW5TY3JpcHRFeGVjdXRpb24pOgorICAgICAgICAg
LSBVc2VkIGJ5IGNhbGxlcnMgdG8gQVNTRVJUIHRoYXQgd2UncmUgbm90IGNhbGxlZCByZS1lbnRy
YW50bHkuCisgICAgICAgICogaHRtbC9IVE1MNVRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MNVRva2VuaXplcjo6SFRNTDVUb2tlbml6ZXIpOgorICAgICAgICAgLSBBZGQgbV9o
YXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzIGZvciB0cmFja2luZyBpZiB3ZSd2ZSBwYXVz
ZWQKKyAgICAgICAgICAgZHVlIHRvIHN0eWxlc2hlZXRzIG9yIG5vdC4gIENhbGxlcnMgbmVlZCB0
byBrbm93IHRoaXMgdG8ga25vdyBpZiB0aGV5CisgICAgICAgICAgIHNob3VsZCBpZ25vcmUgZXhl
Y3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMgY2FsbHMgZnJvbQorICAgICAgICAgICBE
b2N1bWVudCAod2hpY2ggbWF5IGJlIGdlbmVyYXRlZCB3aGVuIHBhcnNpbmcgPC9zY3JpcHQ+IHRh
Z3MpLgorICAgICAgICAgICBXZSBvbmx5IGNhcmUgYWJvdXQgZXhlY3V0ZVNjcmlwdHNXYWl0aW5n
Rm9yU3R5bGVzaGVldHMgY2FsbHMgd2hlbgorICAgICAgICAgICB3ZSd2ZSBhY3R1YWxseSBibG9j
a2VkIHRoZSBwYXJzZXIgZHVlIHRvIHdhaXRpbmcgb24gYSBzdHlsZXNoZWV0IGxvYWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZW5kKToKKyAgICAgICAgIC0gTW92ZSBtX3Nv
dXJjZS5jbG9zZSgpIGJhY2sgdG8gdGhpcyBtZXRob2Qgbm93IHRoYXQgSSB1bmRlcnN0YW5kIG1v
cmUKKyAgICAgICAgICAgYWJvdXQgd2hlbiBmaW5pc2goKSBpcyBjYWxsZWQuICBUaGlzIHNob3Vs
ZCBmaXggc2V2ZXJhbCBsYXlvdXQgdGVzdCBBU1NFUlRTLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TDVUb2tlbml6ZXI6OmZpbmlzaCk6CisgICAgICAgICAtIFRoaXMgc2hvdWxkIG5vdCBjbG9zZSBt
X3NvdXJjZSBzaW5jZSBzY3JpcHRzIG1heSBzdGlsbCB3cml0ZSB0bworICAgICAgICAgICB0aGUg
ZG9jdW1lbnQuICBTZXQgbV93YXNXYWl0aW5nT25TY3JpcHRzRHVyaW5nRmluaXNoIHRvIGluZGlj
YXRlCisgICAgICAgICAgIHRoYXQgd2Ugd2VyZSBub3QgYWJsZSB0byBlbmQgcGFyc2luZyBkdXJp
bmcgZmluaXNoLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OnJlc3VtZVBhcnNp
bmdBZnRlclNjcmlwdEV4ZWN1dGlvbik6CisgICAgICAgICAtIEFTU0VSVCB0aGF0IHRoaXMgaXMg
bmV2ZXIgY2FsbGVyIHJlLWVudHJhbnRseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5p
emVyOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgIC0gQVNTRVJUIHRoYXQgdGhlIFNjcmlwdFJ1
bm5lciBhbHdheXMgdGhpbmtzIHdlJ3JlIHJ1bm5pbmcgc2NyaXB0cyB3aGVuIHRoaXMgaXMgY2Fs
bGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgIC0gQVNTRVJUIHRoYXQgdGhpcyBpcyBuZXZlciBjYWxsZWQgcmUtZW50cmFudGx5
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzKToKKyAgICAgICAgIC0gQ2FsbCB0aGUgU2NyaXB0UnVubmVyIHRvIHRl
bGwgaXQgdGhhdCBzdHlsZXNoZWV0cyBoYXZlIGxvYWRlZCBpZgorICAgICAgICAgICBpdCBpcyBi
bG9ja2VkIG9uIHN0eWxlc2hlZXQgbG9hZHMuCisgICAgICAgICAtIEFTU0VSVChtX2hhc1Njcmlw
dHNXYWl0aW5nRm9yU3R5bGVzaGVldHMpLiAgV2UgY2FuJ3QganVzdCBhc3NlcnQKKyAgICAgICAg
ICAgaXNQYXVzZWQoKSBzaW5jZSB3ZSBtYXkgYmUgcGF1c2VkIGZvciBzY3JpcHQgbG9hZHMuCisg
ICAgICAgICogaHRtbC9IVE1MNVRva2VuaXplci5oOgorCiAyMDEwLTA1LTI4ICBBZGFtIFRyZWF0
ICA8YXRyZWF0QHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAKaW5kZXggYTIwNDY0MWJiYzRkMDg5NWIwY2Y3OGE4
MDc2MTBkYjQ1MGFjYTdmMS4uM2UwY2Q3ZmI4YjE3NmExNDI0ZDM0YWEwMTBhYTM0MzA4NDNlOGU5
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwCkBAIC00Niw2ICs0Niw3IEBAIEhUTUw1
U2NyaXB0UnVubmVyOjpIVE1MNVNjcmlwdFJ1bm5lcihEb2N1bWVudCogZG9jdW1lbnQsIEhUTUw1
U2NyaXB0UnVubmVySG9zdCoKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX2hv
c3QoaG9zdCkKICAgICAsIG1fc2NyaXB0TmVzdGluZ0xldmVsKDApCisgICAgLCBtX2hhc1Njcmlw
dHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoZmFsc2UpCiB7CiB9CiAKQEAgLTg5LDEwICs5MCw5IEBA
IFNjcmlwdFNvdXJjZUNvZGUgSFRNTDVTY3JpcHRSdW5uZXI6OnNvdXJjZUZyb21QZW5kaW5nU2Ny
aXB0KGNvbnN0IFBlbmRpbmdTY3JpcHQmCiAKIGJvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmlzUGVu
ZGluZ1NjcmlwdFJlYWR5KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCkKIHsKLSAgICAvLyBG
SVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yIHN0eWxlc2hlZXRzIHlldCwgYmVjYXVzZSB0aGF0IGNh
dXNlcyB1cyB0byByZS1lbnRlcgotICAgIC8vIHRoZSBwYXJzZXIgZnJvbSBleGVjdXRlU2NyaXB0
c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyB3aGVuIHBhcnNpbmcgc3R5bGUgdGFncy4KLSAgICAvLyBp
ZiAoIW1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKQotICAgIC8vICAgICByZXR1
cm4gZmFsc2U7CisgICAgbV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzID0gIW1fZG9j
dW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpOworICAgIGlmIChtX2hhc1NjcmlwdHNXYWl0
aW5nRm9yU3R5bGVzaGVldHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoc2NyaXB0
LmNhY2hlZFNjcmlwdCAmJiAhc2NyaXB0LmNhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTAxLDkgKzEwMSw3IEBAIGJv
b2wgSFRNTDVTY3JpcHRSdW5uZXI6OmlzUGVuZGluZ1NjcmlwdFJlYWR5KGNvbnN0IFBlbmRpbmdT
Y3JpcHQmIHNjcmlwdCkKIHZvaWQgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2Ny
aXB0KCkKIHsKICAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKLSAgICAvLyBGSVhN
RTogV2UgY2FuJ3QgYmxvY2sgZm9yIHN0eWxlc2hlZXRzIHlldCwgYmVjYXVzZSB0aGF0IGNhdXNl
cyB1cyB0byByZS1lbnRlcgotICAgIC8vIHRoZSBwYXJzZXIgZnJvbSBleGVjdXRlU2NyaXB0c1dh
aXRpbmdGb3JTdHlsZXNoZWV0cyB3aGVuIHBhcnNpbmcgc3R5bGUgdGFncy4KLSAgICAvLyBBU1NF
UlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpOworICAgIEFTU0VSVChtX2Rv
Y3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CiAgICAgYm9vbCBlcnJvck9jY3VycmVk
ID0gZmFsc2U7CiAgICAgQVNTRVJUKGlzUGVuZGluZ1NjcmlwdFJlYWR5KG1fcGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0KSk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlID0gc291cmNlRnJv
bVBlbmRpbmdTY3JpcHQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQsIGVycm9yT2NjdXJyZWQpOwpA
QCAtMTg1LDExICsxODMsMjIgQEAgYm9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNp
bmdCbG9ja2luZ1NjcmlwdHMoKQogCiBib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlU2Ny
aXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKikKIHsKKyAgICBBU1NFUlQoIW1fc2Ny
aXB0TmVzdGluZ0xldmVsKTsKICAgICBBU1NFUlQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxl
bWVudCk7CiAgICAgQVNTRVJUKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdC0+
aXNMb2FkZWQoKSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7
CiB9CiAKK2Jvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKCkKK3sKKyAgICAvLyBDYWxsZXJzIHNob3VsZCBjaGVjayBoYXNTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzKCkgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0byBwcmV2ZW50IHBh
cnNlciBvciBzY3JpcHQgcmUtZW50cnkgZHVyaW5nIDwvc3R5bGU+IHBhcnNpbmcuCisgICAgQVNT
RVJUKG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyk7CisgICAgQVNTRVJUKCFtX3Nj
cmlwdE5lc3RpbmdMZXZlbCk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0
c0xvYWRlZCgpKTsKKyAgICByZXR1cm4gZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsK
K30KKwogdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6cmVxdWVzdFNjcmlwdChFbGVtZW50KiBzY3Jp
cHQpCiB7CiAgICAgQVNTRVJUKCFtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50KTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oIGIvV2ViQ29yZS9odG1s
L0hUTUw1U2NyaXB0UnVubmVyLmgKaW5kZXggZTY3YTgwNGIyODRiN2JhNjhmYjBhZWExOGY4ODk1
M2YyYWYzMjM3Ni4uYzZhMDNmYjEwYmI4NjE4MzNkYTBlNjg5NmViYmU0M2FlNWE0MzAwMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmgKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUw1U2NyaXB0UnVubmVyLmgKQEAgLTUwLDYgKzUwLDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGV4ZWN1dGUoUGFzc1JlZlB0cjxFbGVtZW50PiBzY3JpcHRUb1Byb2Nlc3MpOwogICAgIC8v
IFByb2Nlc3NlcyBhbnkgcGVuZGluZyBzY3JpcHRzLgogICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNX
YWl0aW5nRm9yTG9hZChDYWNoZWRSZXNvdXJjZSopOworICAgIGJvb2wgaGFzU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JT
dHlsZXNoZWV0czsgfQorICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVl
dHMoKTsKKworICAgIGJvb2wgaW5TY3JpcHRFeGVjdXRpb24oKSB7IHJldHVybiAhIW1fc2NyaXB0
TmVzdGluZ0xldmVsOyB9CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBlbmRpbmdTY3JpcHQgewpA
QCAtODUsNiArODksMTIgQEAgcHJpdmF0ZToKICAgICBIVE1MNVNjcmlwdFJ1bm5lckhvc3QqIG1f
aG9zdDsKICAgICBQZW5kaW5nU2NyaXB0IG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0OwogICAgIHVu
c2lnbmVkIG1fc2NyaXB0TmVzdGluZ0xldmVsOworCisgICAgLy8gV2Ugb25seSB3YW50IHN0eWxl
c2hlZXQgbG9hZHMgdG8gdHJpZ2dlciBzY3JpcHQgZXhlY3V0aW9uIGlmIHNjcmlwdAorICAgIC8v
IGV4ZWN1dGlvbiBpcyBjdXJyZW50bHkgc3RvcHBlZCBkdWUgdG8gc3R5bGVzaGVldCBsb2Fkcywg
b3RoZXJ3aXNlIHdlJ2QKKyAgICAvLyBjYXVzZSBuZXN0ZWQgc3JpcHQgZXhlY3V0aW9uIHdoZW4g
cGFyc2luZyA8c3R5bGU+IHRhZ3Mgc2luY2UgPC9zdHlsZT4KKyAgICAvLyB0YWdzIGNhbiBjYXVz
ZSBEb2N1bWVudCB0byBjYWxsIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzLgor
ICAgIGJvb2wgbV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MNVRva2VuaXplci5jcHAKaW5kZXggZGY4MTIzNjYzY2M0Y2YxMmJmYTFlNmJkMGEzY2U3Njkz
OGY4YWEzNC4uYjYwYjZlYzI4ZjU1N2E3NDc3NTczOWVmYmFiMzg4MGJhZGM5NzNkMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTDVUb2tlbml6ZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBAIEhUTUw1VG9rZW5pemVyOjpIVE1M
NVRva2VuaXplcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycykKICAg
ICAsIG1fbGV4ZXIobmV3IEhUTUw1TGV4ZXIpCiAgICAgLCBtX3NjcmlwdFJ1bm5lcihuZXcgSFRN
TDVTY3JpcHRSdW5uZXIoZG9jdW1lbnQsIHRoaXMpKQogICAgICwgbV90cmVlQnVpbGRlcihuZXcg
SFRNTDVUcmVlQnVpbGRlcihtX2xleGVyLmdldCgpLCBkb2N1bWVudCwgcmVwb3J0RXJyb3JzKSkK
KyAgICAsIG1fd2FzV2FpdGluZ09uU2NyaXB0c0R1cmluZ0ZpbmlzaChmYWxzZSkKIHsKICAgICBi
ZWdpbigpOwogfQpAQCAtODQsNiArODUsNyBAQCB2b2lkIEhUTUw1VG9rZW5pemVyOjp3cml0ZShj
b25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCkKIAogdm9pZCBIVE1MNVRva2VuaXpl
cjo6ZW5kKCkKIHsKKyAgICBtX3NvdXJjZS5jbG9zZSgpOwogICAgIGlmICghbV90cmVlQnVpbGRl
ci0+aXNQYXVzZWQoKSkKICAgICAgICAgcHVtcExleGVyKCk7CiAgICAgbV90cmVlQnVpbGRlci0+
ZmluaXNoZWQoKTsKQEAgLTkzLDkgKzk1LDEzIEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6OmZpbmlz
aCgpCiB7CiAgICAgLy8gZmluaXNoKCkgaW5kaWNhdGVzIHdlIHdpbGwgbm90IHJlY2VpdmUgYW55
IG1vcmUgZGF0YS4gSWYgd2UgYXJlIHdhaXRpbmcgb24KICAgICAvLyBhbiBleHRlcm5hbCBzY3Jp
cHQgdG8gbG9hZCwgd2UgY2FuJ3QgZmluaXNoIHBhcnNpbmcgcXVpdGUgeWV0LgotICAgIG1fc291
cmNlLmNsb3NlKCk7Ci0gICAgaWYgKCFtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKQorICAgIC8v
IFdlIGNhbid0IGNhbGwgbV9zb3VyY2UuY2xvc2UoKSB5ZXQgYXMgd2UgbWF5IGhhdmUgYSA8c2Ny
aXB0PiBleGVjdXRpb24KKyAgICAvLyBwZW5kaW5nIHdoaWNoIHdpbGwgY2FsbCBkb2N1bWVudC53
cml0ZSgpLiAgTm8gbW9yZSBkYXRhIG9mZiB0aGUgbmV0d29ya3QgdGhvdWdoLgorICAgIGlmICgh
bV90cmVlQnVpbGRlci0+aXNQYXVzZWQoKSkgeworICAgICAgICAvLyBGSVhNRTogV2UgbWlnaHQg
d2FudCB0byB1c2UgcmVhbCBzdGF0ZSBlbnVtIGluc3RlYWQgb2YgYSBib29sIGhlcmUuCisgICAg
ICAgIG1fd2FzV2FpdGluZ09uU2NyaXB0c0R1cmluZ0ZpbmlzaCA9IHRydWU7CiAgICAgICAgIGVu
ZCgpOworICAgIH0KIH0KIAogYm9vbCBIVE1MNVRva2VuaXplcjo6aXNXYWl0aW5nRm9yU2NyaXB0
cygpIGNvbnN0CkBAIC0xMDUsMTAgKzExMSwxMSBAQCBib29sIEhUTUw1VG9rZW5pemVyOjppc1dh
aXRpbmdGb3JTY3JpcHRzKCkgY29uc3QKIAogdm9pZCBIVE1MNVRva2VuaXplcjo6cmVzdW1lUGFy
c2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIHsKKyAgICBBU1NFUlQoIW1fc2NyaXB0UnVubmVy
LT5pblNjcmlwdEV4ZWN1dGlvbigpKTsKICAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmlzUGF1
c2VkKCkpOwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRoZSB3cm9uZyB3cml0ZSBpbiB0aGUgY2Fz
ZSBvZiBkb2N1bWVudC53cml0ZSByZS1lbnRyeS4KICAgICBwdW1wTGV4ZXIoKTsKLSAgICBpZiAo
bV9zb3VyY2UuaXNFbXB0eSgpICYmIG1fc291cmNlLmlzQ2xvc2VkKCkpCisgICAgaWYgKG1fc291
cmNlLmlzRW1wdHkoKSAmJiBtX3dhc1dhaXRpbmdPblNjcmlwdHNEdXJpbmdGaW5pc2gpCiAgICAg
ICAgIGVuZCgpOyAvLyBUaGUgZG9jdW1lbnQgYWxyZWFkeSBmaW5pc2hlZCBwYXJzaW5nIHdlIHdl
cmUganVzdCB3YWl0aW5nIG9uIHNjcmlwdHMgd2hlbiBmaW5pc2hlZCgpIHdhcyBjYWxsZWQuCiB9
CiAKQEAgLTEyOCw2ICsxMzUsNyBAQCB2b2lkIEhUTUw1VG9rZW5pemVyOjpzdG9wV2F0Y2hpbmdG
b3JMb2FkKENhY2hlZFJlc291cmNlKiBjYWNoZWRTY3JpcHQpCiAKIHZvaWQgSFRNTDVUb2tlbml6
ZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsK
KyAgICBBU1NFUlQobV9zY3JpcHRSdW5uZXItPmluU2NyaXB0RXhlY3V0aW9uKCkpOwogICAgIGlm
ICghbV9kb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDEsMTcgKzE0
OSwyNyBAQCB2b2lkIEhUTUw1VG9rZW5pemVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKKyAgICBBU1NFUlQoIW1fc2Ny
aXB0UnVubmVyLT5pblNjcmlwdEV4ZWN1dGlvbigpKTsKKyAgICBBU1NFUlQobV90cmVlQnVpbGRl
ci0+aXNQYXVzZWQoKSk7CiAgICAgYm9vbCBzaG91bGRDb250aW51ZVBhcnNpbmcgPSBtX3Njcmlw
dFJ1bm5lci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZChjYWNoZWRSZXNvdXJjZSk7Ci0g
ICAgaWYgKHNob3VsZENvbnRpbnVlUGFyc2luZykgewotICAgICAgICBtX3RyZWVCdWlsZGVyLT5z
ZXRQYXVzZWQoZmFsc2UpOworICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZCghc2hvdWxkQ29u
dGludWVQYXJzaW5nKTsKKyAgICBpZiAoc2hvdWxkQ29udGludWVQYXJzaW5nKQogICAgICAgICBy
ZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKLSAgICB9CiB9CiAKIHZvaWQgSFRN
TDVUb2tlbml6ZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkKIHsKLSAg
ICAvLyBGSVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yIHN0eWxlc2hlZXRzIHlldCwgYmVjYXVzZSB0
aGF0IGNhdXNlcyB1cyB0byByZS1lbnRlcgotICAgIC8vIHRoZSBwYXJzZXIgZnJvbSBleGVjdXRl
U2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyB3aGVuIHBhcnNpbmcgc3R5bGUgdGFncy4KKyAg
ICAvLyBJZ25vcmUgY2FsbHMgdW5sZXNzIHdlIGhhdmUgYSBzY3JpcHQgYmxvY2tpbmcgdGhlIHBh
cnNlciB3YWl0aW5nIG9uIGEKKyAgICAvLyBzdHlsZXNoZWV0IGxvYWQuICBPdGhlcndpc2Ugd2Ug
YXJlIGN1cnJlbnRseSBwYXJzaW5nIGFuZCB0aGlzCisgICAgLy8gaXMgYSByZS1lbnRyYW50IGNh
bGwgZnJvbSBlbmNvdW50ZXJpbmcgYSA8LyBzdHlsZT4gdGFnLgorICAgIGlmICghbV9zY3JpcHRS
dW5uZXItPmhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIEFTU0VSVCghbV9zY3JpcHRSdW5uZXItPmluU2NyaXB0RXhlY3V0aW9uKCkpOworICAg
IEFTU0VSVChtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKKyAgICBib29sIHNob3VsZENvbnRp
bnVlUGFyc2luZyA9IG1fc2NyaXB0UnVubmVyLT5leGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHls
ZXNoZWV0cygpOworICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZCghc2hvdWxkQ29udGludWVQ
YXJzaW5nKTsKKyAgICBpZiAoc2hvdWxkQ29udGludWVQYXJzaW5nKQorICAgICAgICByZXN1bWVQ
YXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUw1VG9rZW5pemVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaApp
bmRleCBjNGJkMmQ5OGU1ZTc3OTU4OTlkYjVhM2RhMzkxZmJiZjRlNTA5NGM1Li44MDdhN2Q4Mzcw
Yzc5YmFmNTNiYzRjMDRiMWIyNmNlN2U4NDQyMDc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTDVUb2tlbml6ZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaApAQCAt
NzgsNiArNzgsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxIVE1MNUxleGVyPiBtX2xleGVyOwog
ICAgIE93blB0cjxIVE1MNVNjcmlwdFJ1bm5lcj4gbV9zY3JpcHRSdW5uZXI7CiAgICAgT3duUHRy
PEhUTUw1VHJlZUJ1aWxkZXI+IG1fdHJlZUJ1aWxkZXI7CisgICAgYm9vbCBtX3dhc1dhaXRpbmdP
blNjcmlwdHNEdXJpbmdGaW5pc2g7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57407</attachid>
            <date>2010-05-29 01:24:45 -0700</date>
            <delta_ts>2010-05-29 09:12:16 -0700</delta_ts>
            <desc>Added fix for fast/parser/tokenizer-close-during-document-write.html</desc>
            <filename>bug-39903-20100529012443.patch</filename>
            <type>text/plain</type>
            <size>12733</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWUzMGYyZmQ0YWU4ZjJhN2I0YjM2ODg1ZWQ4MTE1NDk1NWFmZGM3ZS4uNjUxNjJmNjFjNjQ3Njg3
MTRlNWU2MWI0MzgyNzI2OTU3NzE0ZTM1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAxMC0wNS0yOCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSFRNTDUgcGFyc2VyIHNob3VsZCBibG9jayBzY3JpcHQgZXhl
Y3V0aW9uIHVudGlsIHN0eWxlc2hlZXRzIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTAzCisKKyAgICAgICAgQWxsIDxzY3JpcHQ+IHRhZyBl
eGVjdXRpb24gbm93IGJsb2NrcyBvbiBzdHlsZXNoZWV0IGxvYWQsIGluY2x1ZGluZworICAgICAg
ICBpbmxpbmUgPHNjcmlwdD4gY29udGVudCB3aGljaCB0aGUgb2xkIHBhcnNlciBkb2Vzbid0IHN1
cHBvcnQgYmxvY2tpbmcuCisKKyAgICAgICAgSHlhdHQgc2F5cyB3ZSBjb3VsZCBub3cgZ2V0IHJp
ZCBvZiB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMKKyAgICAgICAgb25jZSBv
dXIgcHJpbWFyeSBwYXJzZXIga25vd3MgaG93IHRvIHdhaXQgZm9yIHN0eWxlc2hlZXRzCisgICAg
ICAgIGJlZm9yZSBleGVjdXRpbmcgaW5saW5lIDxzY3JpcHQ+IGNvbnRlbnQuCisKKyAgICAgICAg
QWxsIG9mIGh0dHAvdGVzdHMvbG9jYWwgcGFzc2VzIGluIC0taHRtbDUtcGFyc2VyIG1vZGUgbm93
LgorICAgICAgICBBbHNvIGZpeGVkIGZhc3QvcGFyc2VyL3Rva2VuaXplci1jbG9zZS1kdXJpbmct
ZG9jdW1lbnQtd3JpdGUuaHRtbC4KKworICAgICAgICAqIGh0bWwvSFRNTDVTY3JpcHRSdW5uZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OkhUTUw1U2NyaXB0UnVu
bmVyKToKKyAgICAgICAgIC0gQWRkZWQgYSBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVl
dHMgYm9vbCBzbyB0aGF0IHdlIGNhbgorICAgICAgICAgICBkZXRlY3Qgd2hlbiB3ZSdyZSBhY3R1
YWxseSB3YWl0aW5nIG9uIHN0eWxlc2hlZXRzIG9yIG5vdC4KKyAgICAgICAgICAgSWYgd2UncmUg
bm90IHdhaXRpbmcgb24gc3R5bGVzaGVldHMgdGhlbiB3ZSdyZSBzdGlsbCBwYXJzaW5nIGFuZAor
ICAgICAgICAgICBleGVjdXRpbmcgc2NyaXB0cyB3b3VsZCBjYXVzZSBwYXJzZXIvc2NyaXB0IHJl
ZW50cmFuY3kgYW5kIGJhZCBuZXdzIGJlYXJzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3Jp
cHRSdW5uZXI6OmlzUGVuZGluZ1NjcmlwdFJlYWR5KToKKyAgICAgICAgIC0gUmUtZW5hYmxlIHRo
ZSBjaGVjayB0aGF0IHRoZSBzdHlsZXNoZWV0cyBoYXZlIGxvYWRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdCk6CisgICAgICAgICAt
IEFTU0VSVCB0aGF0IHN0eWxlc2hlZXRzIGhhdmUgbG9hZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQpOgorICAgICAg
ICAgLSBBU1NFUlQgdGhhdCB0aGlzIGlzIG5ldmVyIGNhbGxlZCByZWVudHJhbnRseS4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JT
dHlsZXNoZWV0cyk6CisgICAgICAgICAtIEV4ZWN1dGUgYW55IHNjcmlwdHMgd2hpY2ggd2VyZSBi
bG9ja2VkIG9uIHN0eWxlc2hlZXQgbG9hZHMuCisgICAgICAgICAtIEFTU0VSVCAoaW4gdHdvIHdh
eXMpIHRoYXQgdGhpcyBpcyBuZXZlciBjYWxsZWQgcmVlbnRyYW50bHkuCisgICAgICAgICogaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5u
ZXI6Omhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMpOgorICAgICAgICAgLSBDYWxsZXJz
IG5lZWQgdG8gY2hlY2sgdGhpcyBiZWZvcmUgY2FsbGluZyBleGVjdXRlU2NyaXB0c1dhaXRpbmdG
b3JMb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OmluU2NyaXB0RXhl
Y3V0aW9uKToKKyAgICAgICAgIC0gVXNlZCBieSBjYWxsZXJzIHRvIEFTU0VSVCB0aGF0IHdlJ3Jl
IG5vdCBjYWxsZWQgcmUtZW50cmFudGx5LgorICAgICAgICAqIGh0bWwvSFRNTDVUb2tlbml6ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OkhUTUw1VG9rZW5pemVyKToK
KyAgICAgICAgIC0gQWRkIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyBmb3IgdHJh
Y2tpbmcgaWYgd2UndmUgcGF1c2VkCisgICAgICAgICAgIGR1ZSB0byBzdHlsZXNoZWV0cyBvciBu
b3QuICBDYWxsZXJzIG5lZWQgdG8ga25vdyB0aGlzIHRvIGtub3cgaWYgdGhleQorICAgICAgICAg
ICBzaG91bGQgaWdub3JlIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzIGNhbGxz
IGZyb20KKyAgICAgICAgICAgRG9jdW1lbnQgKHdoaWNoIG1heSBiZSBnZW5lcmF0ZWQgd2hlbiBw
YXJzaW5nIDwvc2NyaXB0PiB0YWdzKS4KKyAgICAgICAgICAgV2Ugb25seSBjYXJlIGFib3V0IGV4
ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzIGNhbGxzIHdoZW4KKyAgICAgICAgICAg
d2UndmUgYWN0dWFsbHkgYmxvY2tlZCB0aGUgcGFyc2VyIGR1ZSB0byB3YWl0aW5nIG9uIGEgc3R5
bGVzaGVldCBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OmVuZCk6Cisg
ICAgICAgICAtIE1vdmUgbV9zb3VyY2UuY2xvc2UoKSBiYWNrIHRvIHRoaXMgbWV0aG9kIG5vdyB0
aGF0IEkgdW5kZXJzdGFuZCBtb3JlCisgICAgICAgICAgIGFib3V0IHdoZW4gZmluaXNoKCkgaXMg
Y2FsbGVkLiAgVGhpcyBzaG91bGQgZml4IHNldmVyYWwgbGF5b3V0IHRlc3QgQVNTRVJUUy4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpmaW5pc2gpOgorICAgICAgICAgLSBUaGlz
IHNob3VsZCBub3QgY2xvc2UgbV9zb3VyY2Ugc2luY2Ugc2NyaXB0cyBtYXkgc3RpbGwgd3JpdGUg
dG8KKyAgICAgICAgICAgdGhlIGRvY3VtZW50LiAgU2V0IG1fd2FzV2FpdGluZ09uU2NyaXB0c0R1
cmluZ0ZpbmlzaCB0byBpbmRpY2F0ZQorICAgICAgICAgICB0aGF0IHdlIHdlcmUgbm90IGFibGUg
dG8gZW5kIHBhcnNpbmcgZHVyaW5nIGZpbmlzaC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9r
ZW5pemVyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24pOgorICAgICAgICAgLSBB
U1NFUlQgdGhhdCB0aGlzIGlzIG5ldmVyIGNhbGxlciByZS1lbnRyYW50bHkuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAgICAtIEFTU0VS
VCB0aGF0IHRoZSBTY3JpcHRSdW5uZXIgYWx3YXlzIHRoaW5rcyB3ZSdyZSBydW5uaW5nIHNjcmlw
dHMgd2hlbiB0aGlzIGlzIGNhbGxlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVy
OjpleGVjdXRpbmdTY3JpcHQpOgorICAgICAgICAgLSBBZGRlZCBpbXBsZW1lbnRhdGlvbiB0byBm
aXggZmFzdC9wYXJzZXIvdG9rZW5pemVyLWNsb3NlLWR1cmluZy1kb2N1bWVudC13cml0ZS5odG1s
CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICAgLSBBU1NFUlQgdGhhdCB0aGlzIGlzIG5ldmVyIGNhbGxlZCByZS1lbnRyYW50bHkuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9y
U3R5bGVzaGVldHMpOgorICAgICAgICAgLSBDYWxsIHRoZSBTY3JpcHRSdW5uZXIgdG8gdGVsbCBp
dCB0aGF0IHN0eWxlc2hlZXRzIGhhdmUgbG9hZGVkIGlmCisgICAgICAgICAgIGl0IGlzIGJsb2Nr
ZWQgb24gc3R5bGVzaGVldCBsb2Fkcy4KKyAgICAgICAgIC0gQVNTRVJUKG1faGFzU2NyaXB0c1dh
aXRpbmdGb3JTdHlsZXNoZWV0cykuICBXZSBjYW4ndCBqdXN0IGFzc2VydAorICAgICAgICAgICBp
c1BhdXNlZCgpIHNpbmNlIHdlIG1heSBiZSBwYXVzZWQgZm9yIHNjcmlwdCBsb2Fkcy4KKyAgICAg
ICAgKiBodG1sL0hUTUw1VG9rZW5pemVyLmg6CisKIDIwMTAtMDUtMjggIEFkYW0gVHJlYXQgIDxh
dHJlYXRAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUw1U2NyaXB0UnVubmVyLmNwcAppbmRleCBhMjA0NjQxYmJjNGQwODk1YjBjZjc4YTgwNzYx
MGRiNDUwYWNhN2YxLi4zZTBjZDdmYjhiMTc2YTE0MjRkMzRhYTAxMGFhMzQzMDg0M2U4ZTljIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgSFRNTDVTY3Jp
cHRSdW5uZXI6OkhUTUw1U2NyaXB0UnVubmVyKERvY3VtZW50KiBkb2N1bWVudCwgSFRNTDVTY3Jp
cHRSdW5uZXJIb3N0KgogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1faG9zdCho
b3N0KQogICAgICwgbV9zY3JpcHROZXN0aW5nTGV2ZWwoMCkKKyAgICAsIG1faGFzU2NyaXB0c1dh
aXRpbmdGb3JTdHlsZXNoZWV0cyhmYWxzZSkKIHsKIH0KIApAQCAtODksMTAgKzkwLDkgQEAgU2Ny
aXB0U291cmNlQ29kZSBIVE1MNVNjcmlwdFJ1bm5lcjo6c291cmNlRnJvbVBlbmRpbmdTY3JpcHQo
Y29uc3QgUGVuZGluZ1NjcmlwdCYKIAogYm9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5n
U2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0KQogewotICAgIC8vIEZJWE1F
OiBXZSBjYW4ndCBibG9jayBmb3Igc3R5bGVzaGVldHMgeWV0LCBiZWNhdXNlIHRoYXQgY2F1c2Vz
IHVzIHRvIHJlLWVudGVyCi0gICAgLy8gdGhlIHBhcnNlciBmcm9tIGV4ZWN1dGVTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzIHdoZW4gcGFyc2luZyBzdHlsZSB0YWdzLgotICAgIC8vIGlmICgh
bV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCi0gICAgLy8gICAgIHJldHVybiBm
YWxzZTsKKyAgICBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMgPSAhbV9kb2N1bWVu
dC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCk7CisgICAgaWYgKG1faGFzU2NyaXB0c1dhaXRpbmdG
b3JTdHlsZXNoZWV0cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChzY3JpcHQuY2Fj
aGVkU2NyaXB0ICYmICFzY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDEsOSArMTAxLDcgQEAgYm9vbCBI
VE1MNVNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1Njcmlw
dCYgc2NyaXB0KQogdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHQo
KQogewogICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2ZWwpOwotICAgIC8vIEZJWE1FOiBX
ZSBjYW4ndCBibG9jayBmb3Igc3R5bGVzaGVldHMgeWV0LCBiZWNhdXNlIHRoYXQgY2F1c2VzIHVz
IHRvIHJlLWVudGVyCi0gICAgLy8gdGhlIHBhcnNlciBmcm9tIGV4ZWN1dGVTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzIHdoZW4gcGFyc2luZyBzdHlsZSB0YWdzLgotICAgIC8vIEFTU0VSVCht
X2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CisgICAgQVNTRVJUKG1fZG9jdW1l
bnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKICAgICBib29sIGVycm9yT2NjdXJyZWQgPSBm
YWxzZTsKICAgICBBU1NFUlQoaXNQZW5kaW5nU2NyaXB0UmVhZHkobV9wYXJzaW5nQmxvY2tpbmdT
Y3JpcHQpKTsKICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBzb3VyY2VGcm9tUGVu
ZGluZ1NjcmlwdChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCwgZXJyb3JPY2N1cnJlZCk7CkBAIC0x
ODUsMTEgKzE4MywyMiBAQCBib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Js
b2NraW5nU2NyaXB0cygpCiAKIGJvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRz
V2FpdGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKQogeworICAgIEFTU0VSVCghbV9zY3JpcHRO
ZXN0aW5nTGV2ZWwpOwogICAgIEFTU0VSVChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5lbGVtZW50
KTsKICAgICBBU1NFUlQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xv
YWRlZCgpKTsKICAgICByZXR1cm4gZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKIH0K
IAorYm9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVz
aGVldHMoKQoreworICAgIC8vIENhbGxlcnMgc2hvdWxkIGNoZWNrIGhhc1NjcmlwdHNXYWl0aW5n
Rm9yU3R5bGVzaGVldHMoKSBiZWZvcmUgY2FsbGluZworICAgIC8vIHRvIHByZXZlbnQgcGFyc2Vy
IG9yIHNjcmlwdCByZS1lbnRyeSBkdXJpbmcgPC9zdHlsZT4gcGFyc2luZy4KKyAgICBBU1NFUlQo
bV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKTsKKyAgICBBU1NFUlQoIW1fc2NyaXB0
TmVzdGluZ0xldmVsKTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkpOworICAgIHJldHVybiBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOworfQor
CiB2b2lkIEhUTUw1U2NyaXB0UnVubmVyOjpyZXF1ZXN0U2NyaXB0KEVsZW1lbnQqIHNjcmlwdCkK
IHsKICAgICBBU1NFUlQoIW1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmVsZW1lbnQpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmggYi9XZWJDb3JlL2h0bWwvSFRN
TDVTY3JpcHRSdW5uZXIuaAppbmRleCBlNjdhODA0YjI4NGI3YmE2OGZiMGFlYTE4Zjg4OTUzZjJh
ZjMyMzc2Li5jNmEwM2ZiMTBiYjg2MTgzM2RhMGU2ODk2ZWJiZTQzYWU1YTQzMDAzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTDVTY3JpcHRSdW5uZXIuaApAQCAtNTAsNiArNTAsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
ZXhlY3V0ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdFRvUHJvY2Vzcyk7CiAgICAgLy8gUHJv
Y2Vzc2VzIGFueSBwZW5kaW5nIHNjcmlwdHMuCiAgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JMb2FkKENhY2hlZFJlc291cmNlKik7CisgICAgYm9vbCBoYXNTY3JpcHRzV2FpdGluZ0Zv
clN0eWxlc2hlZXRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxl
c2hlZXRzOyB9CisgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygp
OworCisgICAgYm9vbCBpblNjcmlwdEV4ZWN1dGlvbigpIHsgcmV0dXJuICEhbV9zY3JpcHROZXN0
aW5nTGV2ZWw7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGVuZGluZ1NjcmlwdCB7CkBAIC04
NSw2ICs4OSwxMiBAQCBwcml2YXRlOgogICAgIEhUTUw1U2NyaXB0UnVubmVySG9zdCogbV9ob3N0
OwogICAgIFBlbmRpbmdTY3JpcHQgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQ7CiAgICAgdW5zaWdu
ZWQgbV9zY3JpcHROZXN0aW5nTGV2ZWw7CisKKyAgICAvLyBXZSBvbmx5IHdhbnQgc3R5bGVzaGVl
dCBsb2FkcyB0byB0cmlnZ2VyIHNjcmlwdCBleGVjdXRpb24gaWYgc2NyaXB0CisgICAgLy8gZXhl
Y3V0aW9uIGlzIGN1cnJlbnRseSBzdG9wcGVkIGR1ZSB0byBzdHlsZXNoZWV0IGxvYWRzLCBvdGhl
cndpc2Ugd2UnZAorICAgIC8vIGNhdXNlIG5lc3RlZCBzcmlwdCBleGVjdXRpb24gd2hlbiBwYXJz
aW5nIDxzdHlsZT4gdGFncyBzaW5jZSA8L3N0eWxlPgorICAgIC8vIHRhZ3MgY2FuIGNhdXNlIERv
Y3VtZW50IHRvIGNhbGwgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMuCisgICAg
Ym9vbCBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHM7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1
VG9rZW5pemVyLmNwcAppbmRleCBkZjgxMjM2NjNjYzRjZjEyYmZhMWU2YmQwYTNjZTc2OTM4Zjhh
YTM0Li4zYWQ3MmVjZWMyZjFlMGNhZmIyZDFhNGYxYTcyMmViYTE0NjllYmRmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
NVRva2VuaXplci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgSFRNTDVUb2tlbml6ZXI6OkhUTUw1VG9r
ZW5pemVyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQogICAgICwg
bV9sZXhlcihuZXcgSFRNTDVMZXhlcikKICAgICAsIG1fc2NyaXB0UnVubmVyKG5ldyBIVE1MNVNj
cmlwdFJ1bm5lcihkb2N1bWVudCwgdGhpcykpCiAgICAgLCBtX3RyZWVCdWlsZGVyKG5ldyBIVE1M
NVRyZWVCdWlsZGVyKG1fbGV4ZXIuZ2V0KCksIGRvY3VtZW50LCByZXBvcnRFcnJvcnMpKQorICAg
ICwgbV93YXNXYWl0aW5nT25TY3JpcHRzRHVyaW5nRmluaXNoKGZhbHNlKQogewogICAgIGJlZ2lu
KCk7CiB9CkBAIC04NCw2ICs4NSw3IEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6OndyaXRlKGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBib29sKQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjpl
bmQoKQogeworICAgIG1fc291cmNlLmNsb3NlKCk7CiAgICAgaWYgKCFtX3RyZWVCdWlsZGVyLT5p
c1BhdXNlZCgpKQogICAgICAgICBwdW1wTGV4ZXIoKTsKICAgICBtX3RyZWVCdWlsZGVyLT5maW5p
c2hlZCgpOwpAQCAtOTMsOSArOTUsMTggQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6ZmluaXNoKCkK
IHsKICAgICAvLyBmaW5pc2goKSBpbmRpY2F0ZXMgd2Ugd2lsbCBub3QgcmVjZWl2ZSBhbnkgbW9y
ZSBkYXRhLiBJZiB3ZSBhcmUgd2FpdGluZyBvbgogICAgIC8vIGFuIGV4dGVybmFsIHNjcmlwdCB0
byBsb2FkLCB3ZSBjYW4ndCBmaW5pc2ggcGFyc2luZyBxdWl0ZSB5ZXQuCi0gICAgbV9zb3VyY2Uu
Y2xvc2UoKTsKLSAgICBpZiAoIW1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpCisgICAgLy8gV2Ug
Y2FuJ3QgY2FsbCBtX3NvdXJjZS5jbG9zZSgpIHlldCBhcyB3ZSBtYXkgaGF2ZSBhIDxzY3JpcHQ+
IGV4ZWN1dGlvbgorICAgIC8vIHBlbmRpbmcgd2hpY2ggd2lsbCBjYWxsIGRvY3VtZW50LndyaXRl
KCkuICBObyBtb3JlIGRhdGEgb2ZmIHRoZSBuZXR3b3JrIHRob3VnaC4KKyAgICBpZiAoIW1fdHJl
ZUJ1aWxkZXItPmlzUGF1c2VkKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQg
dG8gdXNlIHJlYWwgc3RhdGUgZW51bSBpbnN0ZWFkIG9mIGEgYm9vbCBoZXJlLgorICAgICAgICBt
X3dhc1dhaXRpbmdPblNjcmlwdHNEdXJpbmdGaW5pc2ggPSB0cnVlOwogICAgICAgICBlbmQoKTsK
KyAgICB9Cit9CisKK2ludCBIVE1MNVRva2VuaXplcjo6ZXhlY3V0aW5nU2NyaXB0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zY3JpcHRSdW5uZXItPmluU2NyaXB0RXhlY3V0aW9uKCk7CiB9CiAK
IGJvb2wgSFRNTDVUb2tlbml6ZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdApAQCAtMTA1
LDEwICsxMTYsMTEgQEAgYm9vbCBIVE1MNVRva2VuaXplcjo6aXNXYWl0aW5nRm9yU2NyaXB0cygp
IGNvbnN0CiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4
ZWN1dGlvbigpCiB7CisgICAgQVNTRVJUKCFtX3NjcmlwdFJ1bm5lci0+aW5TY3JpcHRFeGVjdXRp
b24oKSk7CiAgICAgQVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKICAgICAvLyBG
SVhNRTogVGhpcyBpcyB0aGUgd3Jvbmcgd3JpdGUgaW4gdGhlIGNhc2Ugb2YgZG9jdW1lbnQud3Jp
dGUgcmUtZW50cnkuCiAgICAgcHVtcExleGVyKCk7Ci0gICAgaWYgKG1fc291cmNlLmlzRW1wdHko
KSAmJiBtX3NvdXJjZS5pc0Nsb3NlZCgpKQorICAgIGlmIChtX3NvdXJjZS5pc0VtcHR5KCkgJiYg
bV93YXNXYWl0aW5nT25TY3JpcHRzRHVyaW5nRmluaXNoKQogICAgICAgICBlbmQoKTsgLy8gVGhl
IGRvY3VtZW50IGFscmVhZHkgZmluaXNoZWQgcGFyc2luZyB3ZSB3ZXJlIGp1c3Qgd2FpdGluZyBv
biBzY3JpcHRzIHdoZW4gZmluaXNoZWQoKSB3YXMgY2FsbGVkLgogfQogCkBAIC0xMjgsNiArMTQw
LDcgQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6c3RvcFdhdGNoaW5nRm9yTG9hZChDYWNoZWRSZXNv
dXJjZSogY2FjaGVkU2NyaXB0KQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjpleGVjdXRlU2NyaXB0
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7CisgICAgQVNTRVJUKG1fc2Ny
aXB0UnVubmVyLT5pblNjcmlwdEV4ZWN1dGlvbigpKTsKICAgICBpZiAoIW1fZG9jdW1lbnQtPmZy
YW1lKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQxLDE3ICsxNTQsMjcgQEAgdm9pZCBIVE1M
NVRva2VuaXplcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlKQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UpCiB7CisgICAgQVNTRVJUKCFtX3NjcmlwdFJ1bm5lci0+aW5TY3Jp
cHRFeGVjdXRpb24oKSk7CisgICAgQVNTRVJUKG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOwog
ICAgIGJvb2wgc2hvdWxkQ29udGludWVQYXJzaW5nID0gbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGVT
Y3JpcHRzV2FpdGluZ0ZvckxvYWQoY2FjaGVkUmVzb3VyY2UpOwotICAgIGlmIChzaG91bGRDb250
aW51ZVBhcnNpbmcpIHsKLSAgICAgICAgbV90cmVlQnVpbGRlci0+c2V0UGF1c2VkKGZhbHNlKTsK
KyAgICBtX3RyZWVCdWlsZGVyLT5zZXRQYXVzZWQoIXNob3VsZENvbnRpbnVlUGFyc2luZyk7Cisg
ICAgaWYgKHNob3VsZENvbnRpbnVlUGFyc2luZykKICAgICAgICAgcmVzdW1lUGFyc2luZ0FmdGVy
U2NyaXB0RXhlY3V0aW9uKCk7Ci0gICAgfQogfQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjpleGVj
dXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpCiB7Ci0gICAgLy8gRklYTUU6IFdlIGNh
bid0IGJsb2NrIGZvciBzdHlsZXNoZWV0cyB5ZXQsIGJlY2F1c2UgdGhhdCBjYXVzZXMgdXMgdG8g
cmUtZW50ZXIKLSAgICAvLyB0aGUgcGFyc2VyIGZyb20gZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9y
U3R5bGVzaGVldHMgd2hlbiBwYXJzaW5nIHN0eWxlIHRhZ3MuCisgICAgLy8gSWdub3JlIGNhbGxz
IHVubGVzcyB3ZSBoYXZlIGEgc2NyaXB0IGJsb2NraW5nIHRoZSBwYXJzZXIgd2FpdGluZyBvbiBh
CisgICAgLy8gc3R5bGVzaGVldCBsb2FkLiAgT3RoZXJ3aXNlIHdlIGFyZSBjdXJyZW50bHkgcGFy
c2luZyBhbmQgdGhpcworICAgIC8vIGlzIGEgcmUtZW50cmFudCBjYWxsIGZyb20gZW5jb3VudGVy
aW5nIGEgPC8gc3R5bGU+IHRhZy4KKyAgICBpZiAoIW1fc2NyaXB0UnVubmVyLT5oYXNTY3JpcHRz
V2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIW1f
c2NyaXB0UnVubmVyLT5pblNjcmlwdEV4ZWN1dGlvbigpKTsKKyAgICBBU1NFUlQobV90cmVlQnVp
bGRlci0+aXNQYXVzZWQoKSk7CisgICAgYm9vbCBzaG91bGRDb250aW51ZVBhcnNpbmcgPSBtX3Nj
cmlwdFJ1bm5lci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKKyAgICBt
X3RyZWVCdWlsZGVyLT5zZXRQYXVzZWQoIXNob3VsZENvbnRpbnVlUGFyc2luZyk7CisgICAgaWYg
KHNob3VsZENvbnRpbnVlUGFyc2luZykKKyAgICAgICAgcmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0
RXhlY3V0aW9uKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRva2Vu
aXplci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmgKaW5kZXggYzRiZDJkOThlNWU3
Nzk1ODk5ZGI1YTNkYTM5MWZiYmY0ZTUwOTRjNS4uYjk2ODY2ZDAyZjE3ZTMzNDhhNWE0M2E5ZTFj
Mzk0MzJhMGEzZWU5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmgK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmLCBib29s
IGFwcGVuZERhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoKCk7CisgICAgdmlydHVhbCBpbnQgZXhlY3V0aW5nU2NyaXB0KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIApAQCAtNzgsNiArNzks
NyBAQCBwcml2YXRlOgogICAgIE93blB0cjxIVE1MNUxleGVyPiBtX2xleGVyOwogICAgIE93blB0
cjxIVE1MNVNjcmlwdFJ1bm5lcj4gbV9zY3JpcHRSdW5uZXI7CiAgICAgT3duUHRyPEhUTUw1VHJl
ZUJ1aWxkZXI+IG1fdHJlZUJ1aWxkZXI7CisgICAgYm9vbCBtX3dhc1dhaXRpbmdPblNjcmlwdHNE
dXJpbmdGaW5pc2g7CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>