<?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>109750</bug_id>
          
          <creation_ts>2013-02-13 14:34:16 -0800</creation_ts>
          <short_desc>StartTagScanner should be thread-safe</short_desc>
          <delta_ts>2013-02-13 18:17:55 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106127</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832351</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 14:34:16 -0800</bug_when>
    <thetext>StartTagScanner should be thread-safe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832360</commentid>
    <comment_count>1</comment_count>
      <attachid>188186</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 14:39:06 -0800</bug_when>
    <thetext>Created attachment 188186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832387</commentid>
    <comment_count>2</comment_count>
      <attachid>188186</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-13 15:00:14 -0800</bug_when>
    <thetext>Comment on attachment 188186
Patch

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

&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:109
&gt; +        if (m_tagId == UnknownTagId)
&gt;              return;

I think this is very clever.  It&apos;s not clear to me that the HTMLTagIdentifier stuff needs to leak out of this class at all.  It could just be private to StartTagScanner?  I assume it&apos;s part of a larger plan you have for world domination, hence being separate?

&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:112
&gt;              AtomicString attributeName(iter-&gt;name);

I believe this will crash on the background thread, no?  It looks like you don&apos;t even use it as Atomic, but making it Atomic does prevent a copy in teh common case on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832390</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 15:04:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 188186 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188186&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:109
&gt; &gt; +        if (m_tagId == UnknownTagId)
&gt; &gt;              return;
&gt; 
&gt; I think this is very clever.  It&apos;s not clear to me that the HTMLTagIdentifier stuff needs to leak out of this class at all.  It could just be private to StartTagScanner?  I assume it&apos;s part of a larger plan you have for world domination, hence being separate?

It&apos;s going to leak out of the class, but hopefully not out of the file.  For example, I plan to use it in processPossibleStyleTag as well.

&gt; &gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:112
&gt; &gt;              AtomicString attributeName(iter-&gt;name);
&gt; 
&gt; I believe this will crash on the background thread, no?  It looks like you don&apos;t even use it as Atomic, but making it Atomic does prevent a copy in teh common case on the main thread.

Yeah, processAttributes(const HTMLToken::AttributeList&amp; attributes) is going to be main thread only.  I plan to add a processAttributes that takes a CompactHTMLToken::AttributeList or whatever the actual type is called.  I can add an ASSERT(isMainThread()) to this function if that would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832466</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 16:09:40 -0800</bug_when>
    <thetext>Review ping.  This patch is blocking this stack of patches.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832483</commentid>
    <comment_count>5</comment_count>
      <attachid>188186</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-13 16:21:12 -0800</bug_when>
    <thetext>Comment on attachment 188186
Patch

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

LGTM.

&gt;&gt;&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:112
&gt;&gt;&gt;              AtomicString attributeName(iter-&gt;name);
&gt;&gt; 
&gt;&gt; I believe this will crash on the background thread, no?  It looks like you don&apos;t even use it as Atomic, but making it Atomic does prevent a copy in teh common case on the main thread.
&gt; 
&gt; Yeah, processAttributes(const HTMLToken::AttributeList&amp; attributes) is going to be main thread only.  I plan to add a processAttributes that takes a CompactHTMLToken::AttributeList or whatever the actual type is called.  I can add an ASSERT(isMainThread()) to this function if that would be helpful.

I think ASSERTing when we should be on the main thread is helpful, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832622</commentid>
    <comment_count>6</comment_count>
      <attachid>188243</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 18:02:09 -0800</bug_when>
    <thetext>Created attachment 188243
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832633</commentid>
    <comment_count>7</comment_count>
      <attachid>188243</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 18:17:53 -0800</bug_when>
    <thetext>Comment on attachment 188243
Patch for landing

Clearing flags on attachment: 188243

Committed r142840: &lt;http://trac.webkit.org/changeset/142840&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832634</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 18:17:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188186</attachid>
            <date>2013-02-13 14:39:06 -0800</date>
            <delta_ts>2013-02-13 18:02:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109750-20130213143535.patch</filename>
            <type>text/plain</type>
            <size>10427</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI4OGYwNzBiZDhiNDgw
ZjQ3NjQ0OTFiNzRkOGU5NzMyNzM4M2YzYi4uNjE0N2ViYjg4YmJjM2FiNWQ0ZGU4YTM5Y2FkNmNk
MTYzOWIxMGM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDEzLTAyLTEzICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgU3RhcnRUYWdTY2FubmVyIHNo
b3VsZCBiZSB0aHJlYWQtc2FmZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA5NzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCB3ZWVucyB0aGUgU3RhcnRUYWdTY2FubmVyIG9mZiBBdG9t
aWNTdHJpbmcgdXNpbmcgdHdvCisgICAgICAgIHRlY2huaXF1ZXM6CisKKyAgICAgICAgMSkgVGhp
cyBwYXRjaCBjcmVhdGVzIGFuIGVudW0gdG8gcmVwcmVzZW50IHRoZSBmb3VyIHRhZyBuYW1lcyB0
aGF0IHRoZQorICAgICAgICAgICBTdGFydFRhZ1NjYW5uZXIgbmVlZHMgdG8gdW5kZXJzdGFuZC4g
VXNpbmcgYW4gZW51bSBpcyBiZXR0ZXIgdGhhbgorICAgICAgICAgICB1c2luZyBhbiBBdG9taWNT
dHJpbmcgYmVjYXVzZSB3ZSBjYW4gdXNlIHRoZSBlbnVtIG9uIGJvdGggdGhlIG1haW4KKyAgICAg
ICAgICAgdGhyZWFkIGFuZCBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCisKKyAgICAgICAgMikg
Rm9yIGF0dHJpYnV0ZXMsIHRoaXMgcGF0Y2ggdXNlcyB0aHJlYWRTYWZlTWF0Y2guIFdlJ3JlIG5v
dCBhYmxlIHRvCisgICAgICAgICAgIHVzZSB0aHJlYWRTYWZlTWF0Y2ggZXZlcnl3aGVyZSBkdWUg
dG8gcGVyZm9ybWFuY2UsIGJ1dCB1c2luZyBpdCBmb3IKKyAgICAgICAgICAgYXR0cmlidXRlcyBh
cHBlYXJzIHRvIGJlIG9rIGJlY2F1ZXMgd2Ugb25seSBjYWxsIHRocmVhZFNhZmVNYXRjaCBvbgor
ICAgICAgICAgICB0aGUgYXR0cmlidXRlcyBvZiAiaW50ZXJlc3RpbmciIHRhZ3MuCisKKyAgICAg
ICAgSSB0ZXN0ZWQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoaXMgcGF0Y2ggdXNpbmcKKyAgICAgICAg
UGVyZm9ybWFuY2VUZXN0cy9QYXJzZXIvaHRtbC1wYXJzZXIuaHRtbCBhbmQgZGlkIG5vdCBzZWUg
YW55IHNsb3dkb3duLgorICAgICAgICAoVGhlcmUgYWN0dWFsbHkgYXBwZWFyZWQgdG8gYmUgYSA8
MSUgc3BlZWR1cCwgYnV0IEknbSBhdHRyaWJ1dGluZyB0aGF0CisgICAgICAgIHRvIG5vaXNlLikK
KworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppZGVudGlmaWVyRm9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6aW5pdGl0YXRvckZvcik6CisgICAgICAgIChXZWJDb3JlOjpTdGFydFRhZ1NjYW5u
ZXI6OlN0YXJ0VGFnU2Nhbm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTdGFydFRhZ1NjYW5uZXI6
OnByb2Nlc3NBdHRyaWJ1dGVzKToKKyAgICAgICAgKFN0YXJ0VGFnU2Nhbm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpTdGFydFRhZ1NjYW5uZXI6OmNyZWF0ZVByZWxvYWRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdGFydFRhZ1NjYW5uZXI6OmNoYXJzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U3RhcnRUYWdTY2FubmVyOjpyZXNvdXJjZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3RhcnRU
YWdTY2FubmVyOjpzaG91bGRQcmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2Fk
U2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKToKKworMjAxMy0wMi0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgorCiAgICAgICAgIENTU1ByZWxvYWRTY2FubmVyIHNob3VsZCBub3QgZGVw
ZW5kIG9uIEhUTUxUb2tlbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA5NzQyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGM1YTMxMDRkYTdlMGQ5NTY1MjEwMmZiMTU0NjI0NDU5
MGQ1MjVjZDYuLmQ5Zjc3YjI4ODMzNzYyZDAwMWYwNWY5Y2IzMDViMDBlYTJlN2I3ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApA
QCAtNTMsNTEgKzUzLDEwMiBAQCBzdGF0aWMgYm9vbCBpc1N0YXJ0T3JFbmRUYWcoY29uc3QgSFRN
TFRva2VuJiB0b2tlbikKICAgICByZXR1cm4gdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5k
VGFnIHx8IGlzU3RhcnRUYWcodG9rZW4pOwogfQogCitlbnVtIEhUTUxUYWdJZGVudGlmaWVyIHsK
KyAgICBJbWdUYWdJZCwKKyAgICBJbnB1dFRhZ0lkLAorICAgIExpbmtUYWdJZCwKKyAgICBTY3Jp
cHRUYWdJZCwKKyAgICBVbmtub3duVGFnSWQsCit9OworCitzdGF0aWMgSFRNTFRhZ0lkZW50aWZp
ZXIgaWRlbnRpZmllckZvcihjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCit7CisgICAgaWYg
KHRhZ05hbWUgPT0gaW1nVGFnKQorICAgICAgICByZXR1cm4gSW1nVGFnSWQ7CisgICAgaWYgKHRh
Z05hbWUgPT0gaW5wdXRUYWcpCisgICAgICAgIHJldHVybiBJbnB1dFRhZ0lkOworICAgIGlmICh0
YWdOYW1lID09IGxpbmtUYWcpCisgICAgICAgIHJldHVybiBMaW5rVGFnSWQ7CisgICAgaWYgKHRh
Z05hbWUgPT0gc2NyaXB0VGFnKQorICAgICAgICByZXR1cm4gU2NyaXB0VGFnSWQ7CisgICAgcmV0
dXJuIFVua25vd25UYWdJZDsKK30KKworc3RhdGljIFN0cmluZyBpbml0aXRhdG9yRm9yKEhUTUxU
YWdJZGVudGlmaWVyIHRhZ0lkKQoreworICAgIHN3aXRjaCAodGFnSWQpIHsKKyAgICBjYXNlIElt
Z1RhZ0lkOgorICAgICAgICByZXR1cm4gImltZyI7CisgICAgY2FzZSBJbnB1dFRhZ0lkOgorICAg
ICAgICByZXR1cm4gImlucHV0IjsKKyAgICBjYXNlIExpbmtUYWdJZDoKKyAgICAgICAgcmV0dXJu
ICJsaW5rIjsKKyAgICBjYXNlIFNjcmlwdFRhZ0lkOgorICAgICAgICByZXR1cm4gInNjcmlwdCI7
CisgICAgY2FzZSBVbmtub3duVGFnSWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gInVua25vd24iOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gInVua25vd24iOworfQorCiBjbGFzcyBTdGFydFRhZ1NjYW5uZXIgewog
cHVibGljOgotICAgIFN0YXJ0VGFnU2Nhbm5lcihjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUs
IGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcykKLSAgICAgICAgOiBt
X3RhZ05hbWUodGFnTmFtZSkKKyAgICBleHBsaWNpdCBTdGFydFRhZ1NjYW5uZXIoSFRNTFRhZ0lk
ZW50aWZpZXIgdGFnSWQpCisgICAgICAgIDogbV90YWdJZCh0YWdJZCkKICAgICAgICAgLCBtX2xp
bmtJc1N0eWxlU2hlZXQoZmFsc2UpCiAgICAgICAgICwgbV9saW5rTWVkaWFBdHRyaWJ1dGVJc1Nj
cmVlbih0cnVlKQogICAgICAgICAsIG1faW5wdXRJc0ltYWdlKGZhbHNlKQogICAgIHsKLSAgICAg
ICAgcHJvY2Vzc0F0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQogCiAgICAgdm9pZCBwcm9j
ZXNzQXR0cmlidXRlcyhjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMp
CiAgICAgewotICAgICAgICBpZiAobV90YWdOYW1lICE9IGltZ1RhZwotICAgICAgICAgICAgJiYg
bV90YWdOYW1lICE9IGlucHV0VGFnCi0gICAgICAgICAgICAmJiBtX3RhZ05hbWUgIT0gbGlua1Rh
ZwotICAgICAgICAgICAgJiYgbV90YWdOYW1lICE9IHNjcmlwdFRhZykKKyAgICAgICAgaWYgKG1f
dGFnSWQgPT0gVW5rbm93blRhZ0lkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZv
ciAoSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gYXR0cmli
dXRlcy5iZWdpbigpOwotICAgICAgICAgICAgIGl0ZXIgIT0gYXR0cmlidXRlcy5lbmQoKTsgKytp
dGVyKSB7CisgICAgICAgIGZvciAoSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0Ojpjb25zdF9pdGVy
YXRvciBpdGVyID0gYXR0cmlidXRlcy5iZWdpbigpOyBpdGVyICE9IGF0dHJpYnV0ZXMuZW5kKCk7
ICsraXRlcikgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIGF0dHJpYnV0ZU5hbWUoaXRlci0+
bmFtZSk7CiAgICAgICAgICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWUgPSBTdHJpbmdJbXBsOjpj
cmVhdGU4Qml0SWZQb3NzaWJsZShpdGVyLT52YWx1ZSk7CisgICAgICAgICAgICBwcm9jZXNzQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIFBhc3NPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IGNyZWF0ZVByZWxvYWRSZXF1ZXN0KGNv
bnN0IEtVUkwmIHByZWRpY3RlZEJhc2VVUkwpCisgICAgeworICAgICAgICBpZiAoIXNob3VsZFBy
ZWxvYWQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIE93blB0cjxQ
cmVsb2FkUmVxdWVzdD4gcmVxdWVzdCA9IFByZWxvYWRSZXF1ZXN0OjpjcmVhdGUoaW5pdGl0YXRv
ckZvcihtX3RhZ0lkKSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHJlc291cmNlVHlw
ZSgpKTsKKyAgICAgICAgcmVxdWVzdC0+c2V0Q3Jvc3NPcmlnaW5Nb2RlQWxsb3dzQ29va2llcyhj
cm9zc09yaWdpbk1vZGVBbGxvd3NDb29raWVzKCkpOworICAgICAgICByZXF1ZXN0LT5zZXRDaGFy
c2V0KGNoYXJzZXQoKSk7CisgICAgICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKKyAgICB9
CiAKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IGNoYXJzZXRBdHRyKQotICAgICAg
ICAgICAgICAgIG1fY2hhcnNldCA9IGF0dHJpYnV0ZVZhbHVlOwotCi0gICAgICAgICAgICBpZiAo
bV90YWdOYW1lID09IHNjcmlwdFRhZyB8fCBtX3RhZ05hbWUgPT0gaW1nVGFnKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gc3JjQXR0cikKLSAgICAgICAgICAgICAgICAg
ICAgc2V0VXJsVG9Mb2FkKGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlm
IChhdHRyaWJ1dGVOYW1lID09IGNyb3Nzb3JpZ2luQXR0ciAmJiAhYXR0cmlidXRlVmFsdWUuaXNO
dWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fY3Jvc3NPcmlnaW5Nb2RlID0gc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV90YWdOYW1lID09IGxpbmtUYWcpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSBocmVmQXR0cikKLSAgICAgICAgICAgICAgICAgICAgc2V0VXJsVG9Mb2Fk
KGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVOYW1l
ID09IHJlbEF0dHIpCi0gICAgICAgICAgICAgICAgICAgIG1fbGlua0lzU3R5bGVTaGVldCA9IHJl
bEF0dHJpYnV0ZUlzU3R5bGVTaGVldChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBtZWRpYUF0dHIpCi0gICAgICAgICAgICAgICAgICAg
IG1fbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4gPSBsaW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVl
bihhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBp
bnB1dFRhZykgewotICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IHNyY0F0dHIp
Ci0gICAgICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSB0eXBlQXR0cikKLSAgICAgICAg
ICAgICAgICAgICAgbV9pbnB1dElzSW1hZ2UgPSBlcXVhbElnbm9yaW5nQ2FzZShhdHRyaWJ1dGVW
YWx1ZSwgSW5wdXRUeXBlTmFtZXM6OmltYWdlKCkpOwotICAgICAgICAgICAgfQorcHJpdmF0ZToK
KyAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBj
b25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHRocmVhZFNh
ZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBjaGFyc2V0QXR0cikpCisgICAgICAgICAgICBtX2NoYXJz
ZXQgPSBhdHRyaWJ1dGVWYWx1ZTsKKworICAgICAgICBpZiAobV90YWdJZCA9PSBTY3JpcHRUYWdJ
ZCB8fCBtX3RhZ0lkID09IEltZ1RhZ0lkKSB7CisgICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1h
dGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQorICAgICAgICAgICAgICAgIHNldFVybFRvTG9h
ZChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2go
YXR0cmlidXRlTmFtZSwgY3Jvc3NvcmlnaW5BdHRyKSAmJiAhYXR0cmlidXRlVmFsdWUuaXNOdWxs
KCkpCisgICAgICAgICAgICAgICAgbV9jcm9zc09yaWdpbk1vZGUgPSBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFsdWUpOworICAgICAgICB9IGVsc2UgaWYgKG1f
dGFnSWQgPT0gTGlua1RhZ0lkKSB7CisgICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0
dHJpYnV0ZU5hbWUsIGhyZWZBdHRyKSkKKyAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0
cmlidXRlVmFsdWUpOworICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJp
YnV0ZU5hbWUsIHJlbEF0dHIpKQorICAgICAgICAgICAgICAgIG1fbGlua0lzU3R5bGVTaGVldCA9
IHJlbEF0dHJpYnV0ZUlzU3R5bGVTaGVldChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAgICBl
bHNlIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgbWVkaWFBdHRyKSkKKyAgICAg
ICAgICAgICAgICBtX2xpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuID0gbGlua01lZGlhQXR0cmli
dXRlSXNTY3JlZW4oYXR0cmlidXRlVmFsdWUpOworICAgICAgICB9IGVsc2UgaWYgKG1fdGFnSWQg
PT0gSW5wdXRUYWdJZCkgeworICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1
dGVOYW1lLCBzcmNBdHRyKSkKKyAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRl
VmFsdWUpOworICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5h
bWUsIHR5cGVBdHRyKSkKKyAgICAgICAgICAgICAgICBtX2lucHV0SXNJbWFnZSA9IGVxdWFsSWdu
b3JpbmdDYXNlKGF0dHJpYnV0ZVZhbHVlLCBJbnB1dFR5cGVOYW1lczo6aW1hZ2UoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTEzMiwxOCArMTgzLDE4IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIGNoYXJzZXQoKSBjb25zdAogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0cyBub3Qg
Y2xlYXIgdGhhdCB0aGlzIGlmIGlzIG5lZWRlZCwgdGhlIGxvYWRlciBwcm9iYWJseSBpZ25vcmVz
IGNoYXJzZXQgZm9yIGltYWdlIHJlcXVlc3RzIGFueXdheS4KLSAgICAgICAgaWYgKG1fdGFnTmFt
ZSA9PSBpbWdUYWcpCisgICAgICAgIGlmIChtX3RhZ0lkID09IEltZ1RhZ0lkKQogICAgICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHJldHVybiBtX2NoYXJzZXQ7CiAgICAg
fQogCiAgICAgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIGlmIChtX3RhZ05hbWUgPT0gc2NyaXB0VGFnKQorICAgICAgICBpZiAobV90YWdJ
ZCA9PSBTY3JpcHRUYWdJZCkKICAgICAgICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZTo6U2Ny
aXB0OwotICAgICAgICBpZiAobV90YWdOYW1lID09IGltZ1RhZyB8fCAobV90YWdOYW1lID09IGlu
cHV0VGFnICYmIG1faW5wdXRJc0ltYWdlKSkKKyAgICAgICAgaWYgKG1fdGFnSWQgPT0gSW1nVGFn
SWQgfHwgKG1fdGFnSWQgPT0gSW5wdXRUYWdJZCAmJiBtX2lucHV0SXNJbWFnZSkpCiAgICAgICAg
ICAgICByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U7Ci0gICAgICAgIGlmICht
X3RhZ05hbWUgPT0gbGlua1RhZyAmJiBtX2xpbmtJc1N0eWxlU2hlZXQgJiYgbV9saW5rTWVkaWFB
dHRyaWJ1dGVJc1NjcmVlbikKKyAgICAgICAgaWYgKG1fdGFnSWQgPT0gTGlua1RhZ0lkICYmIG1f
bGlua0lzU3R5bGVTaGVldCAmJiBtX2xpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuKQogICAgICAg
ICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlOjpSYXdSZXNv
dXJjZTsKQEAgLTE1NCwzNSArMjA1LDIxIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fdXJsVG9M
b2FkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAo
bV90YWdOYW1lID09IGxpbmtUYWcgJiYgKCFtX2xpbmtJc1N0eWxlU2hlZXQgfHwgIW1fbGlua01l
ZGlhQXR0cmlidXRlSXNTY3JlZW4pKQorICAgICAgICBpZiAobV90YWdJZCA9PSBMaW5rVGFnSWQg
JiYgKCFtX2xpbmtJc1N0eWxlU2hlZXQgfHwgIW1fbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX3RhZ05hbWUgPT0g
aW5wdXRUYWcgJiYgIW1faW5wdXRJc0ltYWdlKQorICAgICAgICBpZiAobV90YWdJZCA9PSBJbnB1
dFRhZ0lkICYmICFtX2lucHV0SXNJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQogCi0gICAgUGFzc093blB0cjxQcmVsb2FkUmVxdWVz
dD4gY3JlYXRlUHJlbG9hZFJlcXVlc3QoY29uc3QgS1VSTCYgcHJlZGljdGVkQmFzZVVSTCkKLSAg
ICB7Ci0gICAgICAgIGlmICghc2hvdWxkUHJlbG9hZCgpKQotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICAgICAgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiByZXF1ZXN0ID0gUHJlbG9h
ZFJlcXVlc3Q6OmNyZWF0ZShtX3RhZ05hbWUsIG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJM
LCByZXNvdXJjZVR5cGUoKSk7Ci0gICAgICAgIHJlcXVlc3QtPnNldENyb3NzT3JpZ2luTW9kZUFs
bG93c0Nvb2tpZXMoY3Jvc3NPcmlnaW5Nb2RlQWxsb3dzQ29va2llcygpKTsKLSAgICAgICAgcmVx
dWVzdC0+c2V0Q2hhcnNldChjaGFyc2V0KCkpOwotICAgICAgICByZXR1cm4gcmVxdWVzdC5yZWxl
YXNlKCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdGFnTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZTsgfQotCi1wcml2YXRlOgot
CiAgICAgYm9vbCBjcm9zc09yaWdpbk1vZGVBbGxvd3NDb29raWVzKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZSht
X2Nyb3NzT3JpZ2luTW9kZSwgInVzZS1jcmVkZW50aWFscyIpOwogICAgIH0KIAotICAgIEF0b21p
Y1N0cmluZyBtX3RhZ05hbWU7CisgICAgSFRNTFRhZ0lkZW50aWZpZXIgbV90YWdJZDsKICAgICBT
dHJpbmcgbV91cmxUb0xvYWQ7CiAgICAgU3RyaW5nIG1fY2hhcnNldDsKICAgICBTdHJpbmcgbV9j
cm9zc09yaWdpbk1vZGU7CkBAIC0zMDEsNyArMzM4LDggQEAgdm9pZCBIVE1MUHJlbG9hZFNjYW5u
ZXI6OnByb2Nlc3NUb2tlbihjb25zdCBIVE1MVG9rZW4mIHRva2VuLCBWZWN0b3I8T3duUHRyPFBy
ZWwKICAgICBpZiAocHJvY2Vzc1Bvc3NpYmxlQmFzZVRhZyh0YWdOYW1lLCB0b2tlbikpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFN0YXJ0VGFnU2Nhbm5lciBzY2FubmVyKHRhZ05hbWUsIHRva2Vu
LmF0dHJpYnV0ZXMoKSk7CisgICAgU3RhcnRUYWdTY2FubmVyIHNjYW5uZXIoaWRlbnRpZmllckZv
cih0YWdOYW1lKSk7CisgICAgc2Nhbm5lci5wcm9jZXNzQXR0cmlidXRlcyh0b2tlbi5hdHRyaWJ1
dGVzKCkpOwogICAgIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gcmVxdWVzdCA9ICBzY2FubmVyLmNy
ZWF0ZVByZWxvYWRSZXF1ZXN0KG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwpOwogICAgIGlmIChy
ZXF1ZXN0KQogICAgICAgICByZXF1ZXN0cy5hcHBlbmQocmVxdWVzdC5yZWxlYXNlKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188243</attachid>
            <date>2013-02-13 18:02:09 -0800</date>
            <delta_ts>2013-02-13 18:17:53 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109750-20130213175837.patch</filename>
            <type>text/plain</type>
            <size>10415</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRkOTU0ZjAxZjk0ZjA4
ODBjZjJjNGUzNGQ5OWI3MzVmY2IxMDQ0Zi4uMGY2ZWVhYjk1Y2FjZjFkNjFiMTJiOGI2OGNmOWYx
NWI5Njg4MmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTAyLTEzICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnRUYWdTY2FubmVyIHNo
b3VsZCBiZSB0aHJlYWQtc2FmZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA5NzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisK
KyAgICAgICAgVGhpcyBwYXRjaCB3ZWVucyB0aGUgU3RhcnRUYWdTY2FubmVyIG9mZiBBdG9taWNT
dHJpbmcgdXNpbmcgdHdvCisgICAgICAgIHRlY2huaXF1ZXM6CisKKyAgICAgICAgMSkgVGhpcyBw
YXRjaCBjcmVhdGVzIGFuIGVudW0gdG8gcmVwcmVzZW50IHRoZSBmb3VyIHRhZyBuYW1lcyB0aGF0
IHRoZQorICAgICAgICAgICBTdGFydFRhZ1NjYW5uZXIgbmVlZHMgdG8gdW5kZXJzdGFuZC4gVXNp
bmcgYW4gZW51bSBpcyBiZXR0ZXIgdGhhbgorICAgICAgICAgICB1c2luZyBhbiBBdG9taWNTdHJp
bmcgYmVjYXVzZSB3ZSBjYW4gdXNlIHRoZSBlbnVtIG9uIGJvdGggdGhlIG1haW4KKyAgICAgICAg
ICAgdGhyZWFkIGFuZCBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCisKKyAgICAgICAgMikgRm9y
IGF0dHJpYnV0ZXMsIHRoaXMgcGF0Y2ggdXNlcyB0aHJlYWRTYWZlTWF0Y2guIFdlJ3JlIG5vdCBh
YmxlIHRvCisgICAgICAgICAgIHVzZSB0aHJlYWRTYWZlTWF0Y2ggZXZlcnl3aGVyZSBkdWUgdG8g
cGVyZm9ybWFuY2UsIGJ1dCB1c2luZyBpdCBmb3IKKyAgICAgICAgICAgYXR0cmlidXRlcyBhcHBl
YXJzIHRvIGJlIG9rIGJlY2F1ZXMgd2Ugb25seSBjYWxsIHRocmVhZFNhZmVNYXRjaCBvbgorICAg
ICAgICAgICB0aGUgYXR0cmlidXRlcyBvZiAiaW50ZXJlc3RpbmciIHRhZ3MuCisKKyAgICAgICAg
SSB0ZXN0ZWQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoaXMgcGF0Y2ggdXNpbmcKKyAgICAgICAgUGVy
Zm9ybWFuY2VUZXN0cy9QYXJzZXIvaHRtbC1wYXJzZXIuaHRtbCBhbmQgZGlkIG5vdCBzZWUgYW55
IHNsb3dkb3duLgorICAgICAgICAoVGhlcmUgYWN0dWFsbHkgYXBwZWFyZWQgdG8gYmUgYSA8MSUg
c3BlZWR1cCwgYnV0IEknbSBhdHRyaWJ1dGluZyB0aGF0CisgICAgICAgIHRvIG5vaXNlLikKKwor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppZGVudGlmaWVyRm9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5pdGl0YXRvckZvcik6CisgICAgICAgIChXZWJDb3JlOjpTdGFydFRhZ1NjYW5uZXI6
OlN0YXJ0VGFnU2Nhbm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTdGFydFRhZ1NjYW5uZXI6OnBy
b2Nlc3NBdHRyaWJ1dGVzKToKKyAgICAgICAgKFN0YXJ0VGFnU2Nhbm5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdGFydFRhZ1NjYW5uZXI6OmNyZWF0ZVByZWxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGFydFRhZ1NjYW5uZXI6OmNoYXJzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3Rh
cnRUYWdTY2FubmVyOjpyZXNvdXJjZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3RhcnRUYWdT
Y2FubmVyOjpzaG91bGRQcmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nh
bm5lcjo6cHJvY2Vzc1Rva2VuKToKKwogMjAxMy0wMi0xMyAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBSZW5hbWUgWFhYQWNjZXNzb3JHZXR0ZXIo
KSB0byBYWFhBdHRyR2V0dGVyQ3VzdG9tKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCAxMmQ0MGQ5OWZjZDg4ZDYwZjk1YzJj
MDg1NzhjYTNlZGRiNDRmOWEzLi45MzcxZmI4NDYxNzM2YjM5N2M2Yzc5OWQ4OGQ1ZDE5N2ExNzUx
N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAKQEAgLTUzLDUxICs1MywxMDQgQEAgc3RhdGljIGJvb2wgaXNTdGFydE9yRW5kVGFn
KGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgcmV0dXJuIHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OkVuZFRhZyB8fCBpc1N0YXJ0VGFnKHRva2VuKTsKIH0KIAorZW51bSBIVE1MVGFnSWRl
bnRpZmllciB7CisgICAgSW1nVGFnSWQsCisgICAgSW5wdXRUYWdJZCwKKyAgICBMaW5rVGFnSWQs
CisgICAgU2NyaXB0VGFnSWQsCisgICAgVW5rbm93blRhZ0lkLAorfTsKKworc3RhdGljIEhUTUxU
YWdJZGVudGlmaWVyIGlkZW50aWZpZXJGb3IoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQor
eworICAgIGlmICh0YWdOYW1lID09IGltZ1RhZykKKyAgICAgICAgcmV0dXJuIEltZ1RhZ0lkOwor
ICAgIGlmICh0YWdOYW1lID09IGlucHV0VGFnKQorICAgICAgICByZXR1cm4gSW5wdXRUYWdJZDsK
KyAgICBpZiAodGFnTmFtZSA9PSBsaW5rVGFnKQorICAgICAgICByZXR1cm4gTGlua1RhZ0lkOwor
ICAgIGlmICh0YWdOYW1lID09IHNjcmlwdFRhZykKKyAgICAgICAgcmV0dXJuIFNjcmlwdFRhZ0lk
OworICAgIHJldHVybiBVbmtub3duVGFnSWQ7Cit9CisKK3N0YXRpYyBTdHJpbmcgaW5pdGl0YXRv
ckZvcihIVE1MVGFnSWRlbnRpZmllciB0YWdJZCkKK3sKKyAgICBzd2l0Y2ggKHRhZ0lkKSB7Cisg
ICAgY2FzZSBJbWdUYWdJZDoKKyAgICAgICAgcmV0dXJuICJpbWciOworICAgIGNhc2UgSW5wdXRU
YWdJZDoKKyAgICAgICAgcmV0dXJuICJpbnB1dCI7CisgICAgY2FzZSBMaW5rVGFnSWQ6CisgICAg
ICAgIHJldHVybiAibGluayI7CisgICAgY2FzZSBTY3JpcHRUYWdJZDoKKyAgICAgICAgcmV0dXJu
ICJzY3JpcHQiOworICAgIGNhc2UgVW5rbm93blRhZ0lkOgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuICJ1bmtub3duIjsKKyAgICB9CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICJ1bmtub3duIjsKK30KKwogY2xhc3MgU3RhcnRUYWdT
Y2FubmVyIHsKIHB1YmxpYzoKLSAgICBTdGFydFRhZ1NjYW5uZXIoY29uc3QgQXRvbWljU3RyaW5n
JiB0YWdOYW1lLCBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpCi0g
ICAgICAgIDogbV90YWdOYW1lKHRhZ05hbWUpCisgICAgZXhwbGljaXQgU3RhcnRUYWdTY2FubmVy
KEhUTUxUYWdJZGVudGlmaWVyIHRhZ0lkKQorICAgICAgICA6IG1fdGFnSWQodGFnSWQpCiAgICAg
ICAgICwgbV9saW5rSXNTdHlsZVNoZWV0KGZhbHNlKQogICAgICAgICAsIG1fbGlua01lZGlhQXR0
cmlidXRlSXNTY3JlZW4odHJ1ZSkKICAgICAgICAgLCBtX2lucHV0SXNJbWFnZShmYWxzZSkKICAg
ICB7Ci0gICAgICAgIHByb2Nlc3NBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KIAogICAg
IHZvaWQgcHJvY2Vzc0F0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBh
dHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgaWYgKG1fdGFnTmFtZSAhPSBpbWdUYWcKLSAgICAg
ICAgICAgICYmIG1fdGFnTmFtZSAhPSBpbnB1dFRhZwotICAgICAgICAgICAgJiYgbV90YWdOYW1l
ICE9IGxpbmtUYWcKLSAgICAgICAgICAgICYmIG1fdGFnTmFtZSAhPSBzY3JpcHRUYWcpCisgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAgICAgaWYgKG1fdGFnSWQgPT0gVW5r
bm93blRhZ0lkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvciAoSFRNTFRva2Vu
OjpBdHRyaWJ1dGVMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gYXR0cmlidXRlcy5iZWdpbigp
OwotICAgICAgICAgICAgIGl0ZXIgIT0gYXR0cmlidXRlcy5lbmQoKTsgKytpdGVyKSB7CisgICAg
ICAgIGZvciAoSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
YXR0cmlidXRlcy5iZWdpbigpOyBpdGVyICE9IGF0dHJpYnV0ZXMuZW5kKCk7ICsraXRlcikgewog
ICAgICAgICAgICAgQXRvbWljU3RyaW5nIGF0dHJpYnV0ZU5hbWUoaXRlci0+bmFtZSk7CiAgICAg
ICAgICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWUgPSBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQ
b3NzaWJsZShpdGVyLT52YWx1ZSk7CisgICAgICAgICAgICBwcm9jZXNzQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFBhc3NP
d25QdHI8UHJlbG9hZFJlcXVlc3Q+IGNyZWF0ZVByZWxvYWRSZXF1ZXN0KGNvbnN0IEtVUkwmIHBy
ZWRpY3RlZEJhc2VVUkwpCisgICAgeworICAgICAgICBpZiAoIXNob3VsZFByZWxvYWQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFt
ZSA9PSBjaGFyc2V0QXR0cikKLSAgICAgICAgICAgICAgICBtX2NoYXJzZXQgPSBhdHRyaWJ1dGVW
YWx1ZTsKLQotICAgICAgICAgICAgaWYgKG1fdGFnTmFtZSA9PSBzY3JpcHRUYWcgfHwgbV90YWdO
YW1lID09IGltZ1RhZykgewotICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IHNy
Y0F0dHIpCi0gICAgICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBjcm9zc29yaWdpbkF0
dHIgJiYgIWF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgICAgICBtX2Ny
b3NzT3JpZ2luTW9kZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1
dGVWYWx1ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBsaW5rVGFnKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gaHJlZkF0dHIpCi0gICAgICAg
ICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSByZWxBdHRyKQotICAgICAgICAgICAgICAgICAg
ICBtX2xpbmtJc1N0eWxlU2hlZXQgPSByZWxBdHRyaWJ1dGVJc1N0eWxlU2hlZXQoYXR0cmlidXRl
VmFsdWUpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gbWVkaWFB
dHRyKQotICAgICAgICAgICAgICAgICAgICBtX2xpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuID0g
bGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4oYXR0cmlidXRlVmFsdWUpOwotICAgICAgICAgICAg
fSBlbHNlIGlmIChtX3RhZ05hbWUgPT0gaW5wdXRUYWcpIHsKLSAgICAgICAgICAgICAgICBpZiAo
YXR0cmlidXRlTmFtZSA9PSBzcmNBdHRyKQotICAgICAgICAgICAgICAgICAgICBzZXRVcmxUb0xv
YWQoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZU5h
bWUgPT0gdHlwZUF0dHIpCi0gICAgICAgICAgICAgICAgICAgIG1faW5wdXRJc0ltYWdlID0gZXF1
YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIElucHV0VHlwZU5hbWVzOjppbWFnZSgpKTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiByZXF1ZXN0ID0g
UHJlbG9hZFJlcXVlc3Q6OmNyZWF0ZShpbml0aXRhdG9yRm9yKG1fdGFnSWQpLCBtX3VybFRvTG9h
ZCwgcHJlZGljdGVkQmFzZVVSTCwgcmVzb3VyY2VUeXBlKCkpOworICAgICAgICByZXF1ZXN0LT5z
ZXRDcm9zc09yaWdpbk1vZGVBbGxvd3NDb29raWVzKGNyb3NzT3JpZ2luTW9kZUFsbG93c0Nvb2tp
ZXMoKSk7CisgICAgICAgIHJlcXVlc3QtPnNldENoYXJzZXQoY2hhcnNldCgpKTsKKyAgICAgICAg
cmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHBy
b2Nlc3NBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTdHJpbmcm
IGF0dHJpYnV0ZVZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRy
aWJ1dGVOYW1lLCBjaGFyc2V0QXR0cikpCisgICAgICAgICAgICBtX2NoYXJzZXQgPSBhdHRyaWJ1
dGVWYWx1ZTsKKworICAgICAgICBpZiAobV90YWdJZCA9PSBTY3JpcHRUYWdJZCB8fCBtX3RhZ0lk
ID09IEltZ1RhZ0lkKSB7CisgICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0
ZU5hbWUsIHNyY0F0dHIpKQorICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVW
YWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFt
ZSwgY3Jvc3NvcmlnaW5BdHRyKSAmJiAhYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCisgICAgICAg
ICAgICAgICAgbV9jcm9zc09yaWdpbk1vZGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoYXR0cmlidXRlVmFsdWUpOworICAgICAgICB9IGVsc2UgaWYgKG1fdGFnSWQgPT0gTGlu
a1RhZ0lkKSB7CisgICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUs
IGhyZWZBdHRyKSkKKyAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUp
OworICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHJl
bEF0dHIpKQorICAgICAgICAgICAgICAgIG1fbGlua0lzU3R5bGVTaGVldCA9IHJlbEF0dHJpYnV0
ZUlzU3R5bGVTaGVldChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmICh0aHJl
YWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgbWVkaWFBdHRyKSkKKyAgICAgICAgICAgICAgICBt
X2xpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuID0gbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4o
YXR0cmlidXRlVmFsdWUpOworICAgICAgICB9IGVsc2UgaWYgKG1fdGFnSWQgPT0gSW5wdXRUYWdJ
ZCkgeworICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBzcmNB
dHRyKSkKKyAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOworICAg
ICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHR5cGVBdHRy
KSkKKyAgICAgICAgICAgICAgICBtX2lucHV0SXNJbWFnZSA9IGVxdWFsSWdub3JpbmdDYXNlKGF0
dHJpYnV0ZVZhbHVlLCBJbnB1dFR5cGVOYW1lczo6aW1hZ2UoKSk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTEzMiwxOCArMTg1LDE4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQoKSBjb25zdAogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0cyBub3QgY2xlYXIgdGhhdCB0
aGlzIGlmIGlzIG5lZWRlZCwgdGhlIGxvYWRlciBwcm9iYWJseSBpZ25vcmVzIGNoYXJzZXQgZm9y
IGltYWdlIHJlcXVlc3RzIGFueXdheS4KLSAgICAgICAgaWYgKG1fdGFnTmFtZSA9PSBpbWdUYWcp
CisgICAgICAgIGlmIChtX3RhZ0lkID09IEltZ1RhZ0lkKQogICAgICAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAgICAgICAgIHJldHVybiBtX2NoYXJzZXQ7CiAgICAgfQogCiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlm
IChtX3RhZ05hbWUgPT0gc2NyaXB0VGFnKQorICAgICAgICBpZiAobV90YWdJZCA9PSBTY3JpcHRU
YWdJZCkKICAgICAgICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OwotICAgICAg
ICBpZiAobV90YWdOYW1lID09IGltZ1RhZyB8fCAobV90YWdOYW1lID09IGlucHV0VGFnICYmIG1f
aW5wdXRJc0ltYWdlKSkKKyAgICAgICAgaWYgKG1fdGFnSWQgPT0gSW1nVGFnSWQgfHwgKG1fdGFn
SWQgPT0gSW5wdXRUYWdJZCAmJiBtX2lucHV0SXNJbWFnZSkpCiAgICAgICAgICAgICByZXR1cm4g
Q2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U7Ci0gICAgICAgIGlmIChtX3RhZ05hbWUgPT0g
bGlua1RhZyAmJiBtX2xpbmtJc1N0eWxlU2hlZXQgJiYgbV9saW5rTWVkaWFBdHRyaWJ1dGVJc1Nj
cmVlbikKKyAgICAgICAgaWYgKG1fdGFnSWQgPT0gTGlua1RhZ0lkICYmIG1fbGlua0lzU3R5bGVT
aGVldCAmJiBtX2xpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuKQogICAgICAgICAgICAgcmV0dXJu
IENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZTsKQEAgLTE1
NCwzNSArMjA3LDIxIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fdXJsVG9Mb2FkLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAobV90YWdOYW1lID09
IGxpbmtUYWcgJiYgKCFtX2xpbmtJc1N0eWxlU2hlZXQgfHwgIW1fbGlua01lZGlhQXR0cmlidXRl
SXNTY3JlZW4pKQorICAgICAgICBpZiAobV90YWdJZCA9PSBMaW5rVGFnSWQgJiYgKCFtX2xpbmtJ
c1N0eWxlU2hlZXQgfHwgIW1fbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX3RhZ05hbWUgPT0gaW5wdXRUYWcgJiYg
IW1faW5wdXRJc0ltYWdlKQorICAgICAgICBpZiAobV90YWdJZCA9PSBJbnB1dFRhZ0lkICYmICFt
X2lucHV0SXNJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQogCi0gICAgUGFzc093blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRlUHJl
bG9hZFJlcXVlc3QoY29uc3QgS1VSTCYgcHJlZGljdGVkQmFzZVVSTCkKLSAgICB7Ci0gICAgICAg
IGlmICghc2hvdWxkUHJlbG9hZCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICAgICAgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiByZXF1ZXN0ID0gUHJlbG9hZFJlcXVlc3Q6OmNy
ZWF0ZShtX3RhZ05hbWUsIG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCByZXNvdXJjZVR5
cGUoKSk7Ci0gICAgICAgIHJlcXVlc3QtPnNldENyb3NzT3JpZ2luTW9kZUFsbG93c0Nvb2tpZXMo
Y3Jvc3NPcmlnaW5Nb2RlQWxsb3dzQ29va2llcygpKTsKLSAgICAgICAgcmVxdWVzdC0+c2V0Q2hh
cnNldChjaGFyc2V0KCkpOwotICAgICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZTsgfQotCi1wcml2YXRlOgotCiAgICAgYm9vbCBj
cm9zc09yaWdpbk1vZGVBbGxvd3NDb29raWVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Ny
b3NzT3JpZ2luTW9kZS5pc051bGwoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShtX2Nyb3NzT3JpZ2lu
TW9kZSwgInVzZS1jcmVkZW50aWFscyIpOwogICAgIH0KIAotICAgIEF0b21pY1N0cmluZyBtX3Rh
Z05hbWU7CisgICAgSFRNTFRhZ0lkZW50aWZpZXIgbV90YWdJZDsKICAgICBTdHJpbmcgbV91cmxU
b0xvYWQ7CiAgICAgU3RyaW5nIG1fY2hhcnNldDsKICAgICBTdHJpbmcgbV9jcm9zc09yaWdpbk1v
ZGU7CkBAIC0yNzksNyArMzE4LDggQEAgdm9pZCBUb2tlblByZWxvYWRTY2FubmVyOjpzY2FuKGNv
bnN0IEhUTUxUb2tlbiYgdG9rZW4sIFZlY3RvcjxPd25QdHI8UHJlbG9hZFJlcXUKICAgICBpZiAo
cHJvY2Vzc1Bvc3NpYmxlQmFzZVRhZyh0YWdOYW1lLCB0b2tlbikpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0YXJ0VGFnU2Nhbm5lciBzY2FubmVyKHRhZ05hbWUsIHRva2VuLmF0dHJpYnV0ZXMo
KSk7CisgICAgU3RhcnRUYWdTY2FubmVyIHNjYW5uZXIoaWRlbnRpZmllckZvcih0YWdOYW1lKSk7
CisgICAgc2Nhbm5lci5wcm9jZXNzQXR0cmlidXRlcyh0b2tlbi5hdHRyaWJ1dGVzKCkpOwogICAg
IE93blB0cjxQcmVsb2FkUmVxdWVzdD4gcmVxdWVzdCA9ICBzY2FubmVyLmNyZWF0ZVByZWxvYWRS
ZXF1ZXN0KG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwpOwogICAgIGlmIChyZXF1ZXN0KQogICAg
ICAgICByZXF1ZXN0cy5hcHBlbmQocmVxdWVzdC5yZWxlYXNlKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>