<?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>107150</bug_id>
          
          <creation_ts>2013-01-17 11:52:59 -0800</creation_ts>
          <short_desc>BackgroundHTMLParser shouldn&apos;t create AtomicStrings</short_desc>
          <delta_ts>2013-01-18 15:16:48 -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>809579</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 11:52:59 -0800</bug_when>
    <thetext>BackgroundHTMLParser shouldn&apos;t make an extra copy of every tag name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809584</commentid>
    <comment_count>1</comment_count>
      <attachid>183236</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 11:56:42 -0800</bug_when>
    <thetext>Created attachment 183236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809587</commentid>
    <comment_count>2</comment_count>
      <attachid>183236</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-17 11:59:29 -0800</bug_when>
    <thetext>Comment on attachment 183236
Patch

Do we know if this is faster?  And do we have any good way to catch that w&apos;ere not using regular equal with these tags?  HTMLNames is really dangerous to have on this background thread.  (Also this code is still wrong wrt namespaces, but that&apos;s a separate bug.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809588</commentid>
    <comment_count>3</comment_count>
      <attachid>183236</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 11:59:32 -0800</bug_when>
    <thetext>Comment on attachment 183236
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Previously, we were creating an AtomicString from the HTMLToken for
&gt; +        every start and end tag. This caused us to allocate a new StringImpl
&gt; +        and memcpy the start and end tag names an extra time.

I guess this isn&apos;t quite true since AtomicString will atomize them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809592</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 12:02:30 -0800</bug_when>
    <thetext>&gt; Do we know if this is faster?

Tony is still upstreaming your work from last night, so I haven&apos;t been able to run the performance test.

In general, though, I don&apos;t think we should be creating AtomicStrings on the background thread.  That creates a static dependency, which will block integration with libdispatch later.

&gt; And do we have any good way to catch that w&apos;ere not using regular equal with these tags?

Nope.  We need to be careful with how we&apos;re using HTMLNames.

&gt; Also this code is still wrong wrt namespaces, but that&apos;s a separate bug.

Yes, this patch does not attempt to address that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809597</commentid>
    <comment_count>5</comment_count>
      <attachid>183239</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 12:04:39 -0800</bug_when>
    <thetext>Created attachment 183239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809598</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 12:05:14 -0800</bug_when>
    <thetext>I&apos;ve adjusted the ChangeLog to motivate the change without referencing performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809604</commentid>
    <comment_count>7</comment_count>
      <attachid>183239</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-17 12:08:09 -0800</bug_when>
    <thetext>Comment on attachment 183239
Patch

I&apos;m still concerned about using HTMLNames w/o any ASSERT protections. :)  And I would still like to know what the perf impact is.  run-perf-tests parser/html-parser-srcdoc.html should show a difference.  :)  I guess we should just rename that to -threaded, and have it force on the threaded parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809606</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 12:09:11 -0800</bug_when>
    <thetext>We can wait on this patch until we finish upstreaming the branch if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809985</commentid>
    <comment_count>9</comment_count>
      <attachid>183325</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 17:26:32 -0800</bug_when>
    <thetext>Created attachment 183325
rebase to TOT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810088</commentid>
    <comment_count>10</comment_count>
      <attachid>183348</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 18:49:26 -0800</bug_when>
    <thetext>Created attachment 183348
works---not for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810094</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 18:56:09 -0800</bug_when>
    <thetext>I need to study it more carefully, but this patch does not appear to have a performance impact on the srcdoc benchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810096</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-17 18:59:44 -0800</bug_when>
    <thetext>Our benchmark probably needs improvement (we still don&apos;t really keep the main thread very busy).  But I suspect that this stuff is also rather subtle, and as you say, just need more study.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810919</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-18 12:18:35 -0800</bug_when>
    <thetext>This looks like it saves around ~10% of the time on the parser thread.  I&apos;m going to clean it up for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810927</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-18 12:26:25 -0800</bug_when>
    <thetext>Running the parser-srcdoc benchmark with the patch in bug 107236 applied:

== With patch ==

Running Time    Self        Symbol Name
12129.0ms   76.4%   0.0     Main Thread  0x878fe
3628.0ms   22.8%    0.0     WebCore::HTMLParserThread::runLoop  0x8792f

== Without patch ==

Running Time    Self        Symbol Name
11846.0ms   73.9%   0.0     Main Thread  0x87b04
4100.0ms   25.5%    0.0     WebCore::HTMLParserThread::runLoop  0x87b28

That&apos;s a 2.3% savings on the main thread and an 11.5% savings on the background thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810931</commentid>
    <comment_count>15</comment_count>
      <attachid>183526</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-18 12:36:39 -0800</bug_when>
    <thetext>Created attachment 183526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810948</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-18 12:49:30 -0800</bug_when>
    <thetext>I assume that you also saw a total reduction in time when instruments was not running? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811020</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-18 14:00:08 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; I assume that you also saw a total reduction in time when instruments was not running? :)

== With patch ==

avg 464.88400000016554 ms
median 431.9385000017064 ms
stdev 131.61021047785155 ms

== Without patch ==

avg 477.63914999995905 ms
median 443.0915000011737 ms
stdev 138.40526205197622 ms

Result: 2.6% faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811087</commentid>
    <comment_count>18</comment_count>
      <attachid>183526</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 15:16:44 -0800</bug_when>
    <thetext>Comment on attachment 183526
Patch

Clearing flags on attachment: 183526

Committed r140212: &lt;http://trac.webkit.org/changeset/140212&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811088</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 15:16:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183236</attachid>
            <date>2013-01-17 11:56:42 -0800</date>
            <delta_ts>2013-01-17 12:04:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107150-20130117115342.patch</filename>
            <type>text/plain</type>
            <size>9131</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM0N2Y2OGZkMGQ1MWVi
NjA4YWJmMzU5NDQwZjQzYTRhYTc1ODRiYi4uMmRjZDBmNGQyZTI5YjAwMDQ4ZGM5YjQ2ZjY0MGNi
YjFlMjZhOWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAxLTE3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja2dyb3VuZEhUTUxQYXJz
ZXIgc2hvdWxkbid0IG1ha2UgYW4gZXh0cmEgY29weSBvZiBldmVyeSB0YWcgbmFtZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MTUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgd2Ug
d2VyZSBjcmVhdGluZyBhbiBBdG9taWNTdHJpbmcgZnJvbSB0aGUgSFRNTFRva2VuIGZvcgorICAg
ICAgICBldmVyeSBzdGFydCBhbmQgZW5kIHRhZy4gVGhpcyBjYXVzZWQgdXMgdG8gYWxsb2NhdGUg
YSBuZXcgU3RyaW5nSW1wbAorICAgICAgICBhbmQgbWVtY3B5IHRoZSBzdGFydCBhbmQgZW5kIHRh
ZyBuYW1lcyBhbiBleHRyYSB0aW1lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXNlcyBhIGRpZmZl
cmVudCBhcHByb2FjaCB3aGVyZWJ5IHdlIHVzZSB0aGUgdGFnIG5hbWUgZnJvbQorICAgICAgICB0
aGUgQ29tcGFjdEhUTUxUb2tlbiwgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBjb3BpZWQgaW50byBh
IFN0cmluZ0ltcGwKKyAgICAgICAgZm9yIGxhdGVyIHRyYW5zcG9ydCB0byB0aGUgbWFpbiB0aHJl
YWQuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgY2FsbGluZyBzdHJjbXAgZXhjZXNzaXZl
bHksIHdlIHVzZSBTdHJpbmdJbXBsOjpoYXNoCisgICAgICAgIHRvIHF1aWNrbHkgcmVqZWN0IG1h
dGNoZXMgd2l0aCBzb21lIGNvbW1vbiB0YWcgbmFtZXMuIEFzIGEgc2lkZSBlZmZlY3QsCisgICAg
ICAgIHRoZSBoYXNoIHZhbHVlIHdpbGwgYmUgY2FjaGVkIGluIHRoZSBTdHJpbmdJbXBsLCBzcGVl
ZGluZyB1cAorICAgICAgICBhdG9taXphdGlvbiBvbmNlIHRoZXNlIFN0cmluZ0ltcGxzIGFycml2
ZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5k
SFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRo
cmVhZFNhZmVFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjp0aHJlYWRTYWZlTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAgICAg
IChCYWNrZ3JvdW5kSFRNTFBhcnNlcik6CisKIDIwMTMtMDEtMTcgIFNoaW55YSBLYXdhbmFrYSAg
PHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtNYWNdIHN2Zy9jdXN0b20vdGV4dC11
c2UtY2xpY2stY3Jhc2gueGh0bWwgYWRkZWQgYnkgcjEzOTAyOSBoaXRzIGFzc2VydGlvbiBpbiBl
bmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCA3ZjU2ZTEyZjlhOGEzZjhhOGI0MjU5
ZDRmNmYwNjRlMzc2ZGMyYWM1Li40YWY0MjcwYWYxY2UxMTdjMWFjNzNkMWM0N2ZiMmNkZmRjYzJh
NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhU
TUxQYXJzZXIuY3BwCkBAIC0zMCwxMyArMzAsMTggQEAKICNpbmNsdWRlICJCYWNrZ3JvdW5kSFRN
TFBhcnNlci5oIgogCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclRocmVhZC5oIgogI2luY2x1ZGUgIkhU
TUxUb2tlbml6ZXIuaCIKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNWR05h
bWVzLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
KwogI2lmbmRlZiBOREVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0VG9rZW5zQXJlU2FmZVRv
U2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBWZWN0b3I8Q29tcGFjdEhUTUxUb2tlbj4mIHRva2Vu
cykKQEAgLTQ3LDYgKzUyLDE4IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFRva2Vuc0FyZVNhZmVU
b1NlbmRUb0Fub3RoZXJUaHJlYWQoY29uc3QgVmVjdG9yPENvbXBhY3RIVE1MCiAKICNlbmRpZgog
CitzdGF0aWMgYm9vbCB0aHJlYWRTYWZlRXF1YWwoU3RyaW5nSW1wbCogYSwgU3RyaW5nSW1wbCog
YikKK3sKKyAgICBpZiAoYS0+aGFzaCgpICE9IGItPmhhc2goKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChhLCBiKTsKK30KKworc3RhdGljIGJv
b2wgdGhyZWFkU2FmZU1hdGNoKFN0cmluZ0ltcGwqIGxvY2FsTmFtZSwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgcU5hbWUpCit7CisgICAgcmV0dXJuIHRocmVhZFNhZmVFcXVhbChsb2NhbE5hbWUsIHFO
YW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7Cit9CisKIHR5cGVkZWYgY29uc3Qgdm9pZCogUGFyc2Vy
SWRlbnRpZmllcjsKIGNsYXNzIEhUTUxEb2N1bWVudFBhcnNlcjsKIApAQCAtMTAzLDYwICsxMjAs
MTQgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAgICAgaWYg
KG1faXNQYXVzZWRXYWl0aW5nRm9yU2NyaXB0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8g
SXQncyB1bmNsZWFyIHdoZXRoZXIgd2Ugd2FudCB0byB1c2UgQXRvbWljU3RyaW5ncyBvbiB0aGUg
YmFja2dyb3VuZAotICAgIC8vIHRocmVhZC4gV2Ugd2lsbCBsaWtlbHkgZXZlbnR1YWxseSB1c2Ug
bGliZGlzcGF0Y2ggdG8gc2NoZWR1bGUgcGFyc2luZwotICAgIC8vIGluIGEgc2VwYXJhdGUgc2Vx
dWVuY2VkIHF1ZXVlIGZvciBlYWNoIEhUTUxEb2N1bWVudFBhcnNlciBpbnN0YW5jZS4KLSAgICAv
LyBPbmNlIHdlIGRvIHRoYXQsIHRoZSBjb2RlIGJlbG93IHdpbGwgYmUgdW5zYWZlIGJlY2F1c2Ug
bGliZGlzcGF0Y2gKLSAgICAvLyBtaWdodCBzY2hlZHVsZSB1cyBvbiBtYW55IGRpZmZlcmVudCB0
aHJlYWRzLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZnJhbWVUYWcs
ICgiaWZyYW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtYXRoVGFnLCAoIm1hdGgiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG5vZW1iZWRUYWcsICgibm9lbWJlZCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bm9mcmFtZXNUYWcsICgibm9mcmFtZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5vc2NyaXB0VGFn
LCAoIm5vc2NyaXB0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwbGFpbnRleHRUYWcsICgicGxhaW50
ZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzY3JpcHRUYWcsICgic2NyaXB0IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBzdHlsZVRhZywgKCJzdHlsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3ZnVGFn
LCAoInN2ZyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdGV4dGFyZWFUYWcsICgidGV4dGFyZWEiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHRpdGxlVGFnLCAoInRpdGxlIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCB4bXBUYWcsICgieG1wIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwot
CiAgICAgd2hpbGUgKG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksIG1f
dG9rZW4pKSB7CiAgICAgICAgIG1fcGVuZGluZ1Rva2Vucy5hcHBlbmQoQ29tcGFjdEhUTUxUb2tl
bihtX3Rva2VuKSk7Ci0KLSAgICAgICAgaWYgKG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZykgewotICAgICAgICAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tl
bi5uYW1lKCkuZGF0YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwotICAgICAgICAgICAgaWYg
KHRhZ05hbWUgPT0gc3ZnVGFnIHx8IHRhZ05hbWUgPT0gbWF0aFRhZykKLSAgICAgICAgICAgICAg
ICBtX2luRm9yZWlnbkNvbnRlbnQgPSB0cnVlOwotCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBpcyBqdXN0IGEgY29weSBvZiBUb2tlbml6ZXI6OnVwZGF0ZVN0YXRlRm9yIHdoaWNoIGRvZXNu
J3QgdXNlIEhUTUxOYW1lcy4KLSAgICAgICAgICAgIGlmICh0YWdOYW1lID09IHRleHRhcmVhVGFn
IHx8IHRhZ05hbWUgPT0gdGl0bGVUYWcpCi0gICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNl
dFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUpOwotICAgICAgICAgICAgZWxz
ZSBpZiAodGFnTmFtZSA9PSBwbGFpbnRleHRUYWcpCi0gICAgICAgICAgICAgICAgbV90b2tlbml6
ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOwotICAgICAg
ICAgICAgZWxzZSBpZiAodGFnTmFtZSA9PSBzY3JpcHRUYWcpCi0gICAgICAgICAgICAgICAgbV90
b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6U2NyaXB0RGF0YVN0YXRlKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHRhZ05hbWUgPT0gc3R5bGVUYWcKLSAgICAgICAgICAgICAg
ICB8fCB0YWdOYW1lID09IGlmcmFtZVRhZwotICAgICAgICAgICAgICAgIHx8IHRhZ05hbWUgPT0g
eG1wVGFnCi0gICAgICAgICAgICAgICAgfHwgKHRhZ05hbWUgPT0gbm9lbWJlZFRhZyAmJiBtX29w
dGlvbnMucGx1Z2luc0VuYWJsZWQpCi0gICAgICAgICAgICAgICAgfHwgdGFnTmFtZSA9PSBub2Zy
YW1lc1RhZwotICAgICAgICAgICAgICAgIHx8ICh0YWdOYW1lID09IG5vc2NyaXB0VGFnICYmIG1f
b3B0aW9ucy5zY3JpcHRFbmFibGVkKSkKLSAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0
U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhUU3RhdGUpOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKSB7Ci0gICAg
ICAgICAgICBBdG9taWNTdHJpbmcgdGFnTmFtZShtX3Rva2VuLm5hbWUoKS5kYXRhKCksIG1fdG9r
ZW4ubmFtZSgpLnNpemUoKSk7Ci0gICAgICAgICAgICBpZiAodGFnTmFtZSA9PSBzdmdUYWcgfHwg
dGFnTmFtZSA9PSBtYXRoVGFnKQotICAgICAgICAgICAgICAgIG1faW5Gb3JlaWduQ29udGVudCA9
IGZhbHNlOwotICAgICAgICAgICAgaWYgKHRhZ05hbWUgPT0gc2NyaXB0VGFnKSB7Ci0gICAgICAg
ICAgICAgICAgbV9pc1BhdXNlZFdhaXRpbmdGb3JTY3JpcHRzID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICBtX3Rva2VuLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc2V0IHNldEZvcmNlTnVs
bENoYXJhY3RlclJlcGxhY2VtZW50IGJhc2VkIG9uIG1faW5Gb3JlaWduQ29udGVudCBhcyB3ZWxs
LgotICAgICAgICBtX3Rva2VuaXplci0+c2V0U2hvdWxkQWxsb3dDREFUQShtX2luRm9yZWlnbkNv
bnRlbnQpOwogICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CisKKyAgICAgICAgc2ltdWxhdGVUcmVl
QnVpbGRlcihtX3BlbmRpbmdUb2tlbnMubGFzdCgpKTsKKworICAgICAgICBpZiAobV9pc1BhdXNl
ZFdhaXRpbmdGb3JTY3JpcHRzKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAjaWZuZGVm
IE5ERUJVRwpAQCAtMTY2LDYgKzEzNyw0MiBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpw
dW1wVG9rZW5pemVyKCkKICAgICBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiB9CiAKK3ZvaWQg
QmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIoY29uc3QgQ29tcGFjdEhU
TUxUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcpIHsKKyAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHRva2VuLmRhdGEoKS5p
bXBsKCk7CisKKyAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChuYW1lLCBTVkdOYW1lczo6c3Zn
VGFnKQorICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKG5hbWUsIE1hdGhNTE5hbWVzOjpt
YXRoVGFnKSkKKyAgICAgICAgICAgIG1faW5Gb3JlaWduQ29udGVudCA9IHRydWU7CisgICAgICAg
IGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaChuYW1lLCB0ZXh0YXJlYVRhZykKKyAgICAgICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaChuYW1lLCB0aXRsZVRhZykpCisgICAgICAgICAgICBtX3Rva2Vu
aXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSk7CisgICAgICAg
IGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaChuYW1lLCBwbGFpbnRleHRUYWcpKQorICAgICAgICAg
ICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3Rh
dGUpOworICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2gobmFtZSwgc2NyaXB0VGFnKSkK
KyAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlNj
cmlwdERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaChuYW1lLCBz
dHlsZVRhZykKKyAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaChuYW1lLCBpZnJhbWVUYWcp
CisgICAgICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2gobmFtZSwgeG1wVGFnKQorICAgICAgICAg
ICAgfHwgKHRocmVhZFNhZmVNYXRjaChuYW1lLCBub2VtYmVkVGFnKSAmJiBtX29wdGlvbnMucGx1
Z2luc0VuYWJsZWQpCisgICAgICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2gobmFtZSwgbm9mcmFt
ZXNUYWcpCisgICAgICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKG5hbWUsIG5vc2NyaXB0VGFn
KSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCisgICAgICAgICAgICBtX3Rva2VuaXplci0+
c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhUU3RhdGUpOworICAgIH0KKyAgICBp
ZiAobV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZykgeworICAgICAgICBT
dHJpbmdJbXBsKiBuYW1lID0gdG9rZW4uZGF0YSgpLmltcGwoKTsKKworICAgICAgICBpZiAodGhy
ZWFkU2FmZU1hdGNoKG5hbWUsIFNWR05hbWVzOjpzdmdUYWcpCisgICAgICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2gobmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQorICAgICAgICAgICAgbV9p
bkZvcmVpZ25Db250ZW50ID0gZmFsc2U7CisgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRj
aChuYW1lLCBzY3JpcHRUYWcpKQorICAgICAgICAgICAgbV9pc1BhdXNlZFdhaXRpbmdGb3JTY3Jp
cHRzID0gdHJ1ZTsKKyAgICB9CisgICAgLy8gRklYTUU6IE5lZWQgdG8gc2V0IHNldEZvcmNlTnVs
bENoYXJhY3RlclJlcGxhY2VtZW50IGJhc2VkIG9uIG1faW5Gb3JlaWduQ29udGVudCBhcyB3ZWxs
LgorICAgIG1fdG9rZW5pemVyLT5zZXRTaG91bGRBbGxvd0NEQVRBKG1faW5Gb3JlaWduQ29udGVu
dCk7Cit9CisKIGNsYXNzIFRva2VuRGVsaXZlcnkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFRva2VuRGVsaXZlcnkpOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKaW5kZXggOTY4MTU2MDQxOTFmY2IxNzRkOTI4NjU3
NjAzMjIwYTkwZmVmMWIzNi4uMmRkMTZlY2EwYmJmYmZiODY1YWQ3YjZjNTQxNmExNjY3N2FiMzU0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBh
cnNlci5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQmFja2dyb3Vu
ZEhUTUxQYXJzZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmLCBQYXJzZXJJZGVudGlmaWVyKTsK
IAogICAgIHZvaWQgcHVtcFRva2VuaXplcigpOworICAgIHZvaWQgc2ltdWxhdGVUcmVlQnVpbGRl
cihjb25zdCBDb21wYWN0SFRNTFRva2VuJik7CiAKICAgICB2b2lkIHNlbmRUb2tlbnNUb01haW5U
aHJlYWQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183239</attachid>
            <date>2013-01-17 12:04:39 -0800</date>
            <delta_ts>2013-01-17 17:26:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107150-20130117120139.patch</filename>
            <type>text/plain</type>
            <size>9205</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM0N2Y2OGZkMGQ1MWVi
NjA4YWJmMzU5NDQwZjQzYTRhYTc1ODRiYi4uMGJhNjc1ZGM0MTM5NjcwNDYwMmY0YTVlYzYyMzk4
YjcxM2NjNjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAxLTE3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja2dyb3VuZEhUTUxQYXJz
ZXIgc2hvdWxkbid0IGNyZWF0ZSBBdG9taWNTdHJpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSB3ZXJlIGNyZWF0aW5nIGFu
IEF0b21pY1N0cmluZyBmcm9tIHRoZSBIVE1MVG9rZW4gZm9yCisgICAgICAgIGV2ZXJ5IHN0YXJ0
IGFuZCBlbmQgdGFnLiBUaGlzIGNhdXNlZCB1cyB0byBoYXZlIGEgc3RhdGljIGRlcGVuZGVuY3kg
b24KKyAgICAgICAgdGhlIHBhcnNlciB0aHJlYWQncyBhdG9taWMgc3RyaW5nIHRhYmxlLiBXZSB3
YW50IHRvIGF2b2lkIHN0YXRpYworICAgICAgICBkZXBlbmRlbmNpZXMgYmVjYXVzZSB3ZSB3YW50
IHRvIGV2ZW50dWFsbHkgcnVuIHRoZSBiYWNrZ3JvdW5kIHBhcnNlcgorICAgICAgICB1c2luZyBh
IGxpYnJhcnkgbGlrZSBsaWJkaXNwYXRjaCB0aGF0IHdpbGwgbGV0IHVzIHJ1biBtYW55IHZlcnNp
b24gaW4KKyAgICAgICAgcGFyYWxsZWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1c2VzIGEgZGlm
ZmVyZW50IGFwcHJvYWNoIHdoZXJlYnkgd2UgdXNlIHRoZSB0YWcgbmFtZSBmcm9tCisgICAgICAg
IHRoZSBDb21wYWN0SFRNTFRva2VuLiBJbiBvcmRlciB0byBhdm9pZCBjYWxsaW5nIHN0cmNtcCBl
eGNlc3NpdmVseSwgd2UKKyAgICAgICAgdXNlIFN0cmluZ0ltcGw6Omhhc2ggdG8gcXVpY2tseSBy
ZWplY3QgbWF0Y2hlcyB3aXRoIHNvbWUgY29tbW9uIHRhZworICAgICAgICBuYW1lcy4gQXMgYSBz
aWRlIGVmZmVjdCwgdGhlIGhhc2ggdmFsdWUgd2lsbCBiZSBjYWNoZWQgaW4gdGhlCisgICAgICAg
IFN0cmluZ0ltcGwsIHNwZWVkaW5nIHVwIGF0b21pemF0aW9uIG9uY2UgdGhlc2UgU3RyaW5nSW1w
bHMgYXJyaXZlIG9uCisgICAgICAgIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICAqIGh0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6dGhyZWFkU2FmZUVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OnRocmVh
ZFNhZmVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVt
cFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2lt
dWxhdGVUcmVlQnVpbGRlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuaDoKKyAgICAgICAgKEJhY2tncm91bmRIVE1MUGFyc2VyKToKKwogMjAxMy0wMS0xNyAg
U2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW01hY10g
c3ZnL2N1c3RvbS90ZXh0LXVzZS1jbGljay1jcmFzaC54aHRtbCBhZGRlZCBieSByMTM5MDI5IGhp
dHMgYXNzZXJ0aW9uIGluIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmluZGV4IDdmNTZl
MTJmOWE4YTNmOGE4YjQyNTlkNGY2ZjA2NGUzNzZkYzJhYzUuLjRhZjQyNzBhZjFjZTExN2MxYWM3
M2QxYzQ3ZmIyY2RmZGNjMmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTMwLDEzICszMCwxOCBAQAogI2luY2x1
ZGUgIkJhY2tncm91bmRIVE1MUGFyc2VyLmgiCiAKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJz
ZXIuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyVGhyZWFk
LmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgi
CisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOworCiAjaWZuZGVmIE5ERUJVRwogCiBzdGF0aWMgdm9pZCBjaGVja1Ro
YXRUb2tlbnNBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IFZlY3RvcjxDb21wYWN0
SFRNTFRva2VuPiYgdG9rZW5zKQpAQCAtNDcsNiArNTIsMTggQEAgc3RhdGljIHZvaWQgY2hlY2tU
aGF0VG9rZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBWZWN0b3I8Q29tcGFj
dEhUTUwKIAogI2VuZGlmCiAKK3N0YXRpYyBib29sIHRocmVhZFNhZmVFcXVhbChTdHJpbmdJbXBs
KiBhLCBTdHJpbmdJbXBsKiBiKQoreworICAgIGlmIChhLT5oYXNoKCkgIT0gYi0+aGFzaCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEsIGIp
OworfQorCitzdGF0aWMgYm9vbCB0aHJlYWRTYWZlTWF0Y2goU3RyaW5nSW1wbCogbG9jYWxOYW1l
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICByZXR1cm4gdGhyZWFkU2FmZUVx
dWFsKGxvY2FsTmFtZSwgcU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKK30KKwogdHlwZWRlZiBj
b25zdCB2b2lkKiBQYXJzZXJJZGVudGlmaWVyOwogY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyOwog
CkBAIC0xMDMsNjAgKzEyMCwxNCBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9r
ZW5pemVyKCkKICAgICBpZiAobV9pc1BhdXNlZFdhaXRpbmdGb3JTY3JpcHRzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBJdCdzIHVuY2xlYXIgd2hldGhlciB3ZSB3YW50IHRvIHVzZSBBdG9t
aWNTdHJpbmdzIG9uIHRoZSBiYWNrZ3JvdW5kCi0gICAgLy8gdGhyZWFkLiBXZSB3aWxsIGxpa2Vs
eSBldmVudHVhbGx5IHVzZSBsaWJkaXNwYXRjaCB0byBzY2hlZHVsZSBwYXJzaW5nCi0gICAgLy8g
aW4gYSBzZXBhcmF0ZSBzZXF1ZW5jZWQgcXVldWUgZm9yIGVhY2ggSFRNTERvY3VtZW50UGFyc2Vy
IGluc3RhbmNlLgotICAgIC8vIE9uY2Ugd2UgZG8gdGhhdCwgdGhlIGNvZGUgYmVsb3cgd2lsbCBi
ZSB1bnNhZmUgYmVjYXVzZSBsaWJkaXNwYXRjaAotICAgIC8vIG1pZ2h0IHNjaGVkdWxlIHVzIG9u
IG1hbnkgZGlmZmVyZW50IHRocmVhZHMuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGlmcmFtZVRhZywgKCJpZnJhbWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG1hdGhUYWcs
ICgibWF0aCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbm9lbWJlZFRhZywgKCJub2VtYmVkIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBub2ZyYW1lc1RhZywgKCJub2ZyYW1lcyIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgbm9zY3JpcHRUYWcsICgibm9zY3JpcHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHBsYWlu
dGV4dFRhZywgKCJwbGFpbnRleHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNjcmlwdFRhZywgKCJz
Y3JpcHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN0eWxlVGFnLCAoInN0eWxlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBzdmdUYWcsICgic3ZnIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB0ZXh0YXJlYVRh
ZywgKCJ0ZXh0YXJlYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdGl0bGVUYWcsICgidGl0bGUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHhtcFRhZywgKCJ4bXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0KICAgICB3aGlsZSAobV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lu
cHV0LmN1cnJlbnQoKSwgbV90b2tlbikpIHsKICAgICAgICAgbV9wZW5kaW5nVG9rZW5zLmFwcGVu
ZChDb21wYWN0SFRNTFRva2VuKG1fdG9rZW4pKTsKLQotICAgICAgICBpZiAobV90b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKSB7Ci0gICAgICAgICAgICBBdG9taWNTdHJp
bmcgdGFnTmFtZShtX3Rva2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFtZSgpLnNpemUoKSk7
Ci0gICAgICAgICAgICBpZiAodGFnTmFtZSA9PSBzdmdUYWcgfHwgdGFnTmFtZSA9PSBtYXRoVGFn
KQotICAgICAgICAgICAgICAgIG1faW5Gb3JlaWduQ29udGVudCA9IHRydWU7Ci0KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1c3QgYSBjb3B5IG9mIFRva2VuaXplcjo6dXBkYXRlU3Rh
dGVGb3Igd2hpY2ggZG9lc24ndCB1c2UgSFRNTE5hbWVzLgotICAgICAgICAgICAgaWYgKHRhZ05h
bWUgPT0gdGV4dGFyZWFUYWcgfHwgdGFnTmFtZSA9PSB0aXRsZVRhZykKLSAgICAgICAgICAgICAg
ICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSk7
Ci0gICAgICAgICAgICBlbHNlIGlmICh0YWdOYW1lID09IHBsYWludGV4dFRhZykKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRF
WFRTdGF0ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0YWdOYW1lID09IHNjcmlwdFRhZykKLSAg
ICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpT
Y3JpcHREYXRhU3RhdGUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGFnTmFtZSA9PSBzdHlsZVRh
ZwotICAgICAgICAgICAgICAgIHx8IHRhZ05hbWUgPT0gaWZyYW1lVGFnCi0gICAgICAgICAgICAg
ICAgfHwgdGFnTmFtZSA9PSB4bXBUYWcKLSAgICAgICAgICAgICAgICB8fCAodGFnTmFtZSA9PSBu
b2VtYmVkVGFnICYmIG1fb3B0aW9ucy5wbHVnaW5zRW5hYmxlZCkKLSAgICAgICAgICAgICAgICB8
fCB0YWdOYW1lID09IG5vZnJhbWVzVGFnCi0gICAgICAgICAgICAgICAgfHwgKHRhZ05hbWUgPT0g
bm9zY3JpcHRUYWcgJiYgbV9vcHRpb25zLnNjcmlwdEVuYWJsZWQpKQotICAgICAgICAgICAgICAg
IG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRTdGF0ZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpFbmRUYWcpIHsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFt
ZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmICh0YWdO
YW1lID09IHN2Z1RhZyB8fCB0YWdOYW1lID09IG1hdGhUYWcpCi0gICAgICAgICAgICAgICAgbV9p
bkZvcmVpZ25Db250ZW50ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAodGFnTmFtZSA9PSBzY3Jp
cHRUYWcpIHsKLSAgICAgICAgICAgICAgICBtX2lzUGF1c2VkV2FpdGluZ0ZvclNjcmlwdHMgPSB0
cnVlOwotICAgICAgICAgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogTmVlZCB0
byBzZXQgc2V0Rm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQgYmFzZWQgb24gbV9pbkZvcmVp
Z25Db250ZW50IGFzIHdlbGwuCi0gICAgICAgIG1fdG9rZW5pemVyLT5zZXRTaG91bGRBbGxvd0NE
QVRBKG1faW5Gb3JlaWduQ29udGVudCk7CiAgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKKworICAg
ICAgICBzaW11bGF0ZVRyZWVCdWlsZGVyKG1fcGVuZGluZ1Rva2Vucy5sYXN0KCkpOworCisgICAg
ICAgIGlmIChtX2lzUGF1c2VkV2FpdGluZ0ZvclNjcmlwdHMpCisgICAgICAgICAgICBicmVhazsK
ICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xNjYsNiArMTM3LDQyIEBAIHZvaWQgQmFja2dy
b3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIoKQogICAgIHNlbmRUb2tlbnNUb01haW5UaHJl
YWQoKTsKIH0KIAordm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRl
cihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykgeworICAgICAgICBTdHJpbmdJbXBsKiBuYW1l
ID0gdG9rZW4uZGF0YSgpLmltcGwoKTsKKworICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKG5h
bWUsIFNWR05hbWVzOjpzdmdUYWcpCisgICAgICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2gobmFt
ZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQorICAgICAgICAgICAgbV9pbkZvcmVpZ25Db250ZW50
ID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKG5hbWUsIHRleHRhcmVh
VGFnKQorICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKG5hbWUsIHRpdGxlVGFnKSkKKyAg
ICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFU
QVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKG5hbWUsIHBsYWludGV4
dFRhZykpCisgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0
YXRlOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaChu
YW1lLCBzY3JpcHRUYWcpKQorICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxU
b2tlbml6ZXJTdGF0ZTo6U2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAodGhyZWFk
U2FmZU1hdGNoKG5hbWUsIHN0eWxlVGFnKQorICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KG5hbWUsIGlmcmFtZVRhZykKKyAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaChuYW1lLCB4
bXBUYWcpCisgICAgICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKG5hbWUsIG5vZW1iZWRUYWcp
ICYmIG1fb3B0aW9ucy5wbHVnaW5zRW5hYmxlZCkKKyAgICAgICAgICAgIHx8IHRocmVhZFNhZmVN
YXRjaChuYW1lLCBub2ZyYW1lc1RhZykKKyAgICAgICAgICAgIHx8ICh0aHJlYWRTYWZlTWF0Y2go
bmFtZSwgbm9zY3JpcHRUYWcpICYmIG1fb3B0aW9ucy5zY3JpcHRFbmFibGVkKSkKKyAgICAgICAg
ICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRTdGF0
ZSk7CisgICAgfQorICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5k
VGFnKSB7CisgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSB0b2tlbi5kYXRhKCkuaW1wbCgpOwor
CisgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2gobmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykKKyAg
ICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaChuYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykp
CisgICAgICAgICAgICBtX2luRm9yZWlnbkNvbnRlbnQgPSBmYWxzZTsKKyAgICAgICAgZWxzZSBp
ZiAodGhyZWFkU2FmZU1hdGNoKG5hbWUsIHNjcmlwdFRhZykpCisgICAgICAgICAgICBtX2lzUGF1
c2VkV2FpdGluZ0ZvclNjcmlwdHMgPSB0cnVlOworICAgIH0KKyAgICAvLyBGSVhNRTogTmVlZCB0
byBzZXQgc2V0Rm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQgYmFzZWQgb24gbV9pbkZvcmVp
Z25Db250ZW50IGFzIHdlbGwuCisgICAgbV90b2tlbml6ZXItPnNldFNob3VsZEFsbG93Q0RBVEEo
bV9pbkZvcmVpZ25Db250ZW50KTsKK30KKwogY2xhc3MgVG9rZW5EZWxpdmVyeSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVG9rZW5EZWxpdmVyeSk7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAppbmRleCA5NjgxNTYw
NDE5MWZjYjE3NGQ5Mjg2NTc2MDMyMjBhOTBmZWYxYjM2Li4yZGQxNmVjYTBiYmZiZmI4NjVhZDdi
NmM1NDE2YTE2Njc3YWIzNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBCYWNrZ3JvdW5kSFRNTFBhcnNlcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYsIFBh
cnNlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBwdW1wVG9rZW5pemVyKCk7CisgICAgdm9pZCBz
aW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mKTsKIAogICAgIHZvaWQg
c2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183325</attachid>
            <date>2013-01-17 17:26:32 -0800</date>
            <delta_ts>2013-01-17 18:49:24 -0800</delta_ts>
            <desc>rebase to TOT</desc>
            <filename>bug-107150-20130117172334.patch</filename>
            <type>text/plain</type>
            <size>9345</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGEzMWYxZjFhMDczZjFj
YzI3YzFmOWI4YjNjOWMzMzBhZjU5NWI5MC4uOWIyNWMxMTEwMDZhMTZkNTQxMDgwNmQ5MTdhNDBm
MGJhMGVlNzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEzLTAxLTE3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgQmFja2dyb3VuZEhUTUxQYXJz
ZXIgc2hvdWxkbid0IGNyZWF0ZSBBdG9taWNTdHJpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSB3ZXJlIGNyZWF0aW5nIGFu
IEF0b21pY1N0cmluZyBmcm9tIHRoZSBIVE1MVG9rZW4gZm9yCisgICAgICAgIGV2ZXJ5IHN0YXJ0
IGFuZCBlbmQgdGFnLiBUaGlzIGNhdXNlZCB1cyB0byBoYXZlIGEgc3RhdGljIGRlcGVuZGVuY3kg
b24KKyAgICAgICAgdGhlIHBhcnNlciB0aHJlYWQncyBhdG9taWMgc3RyaW5nIHRhYmxlLiBXZSB3
YW50IHRvIGF2b2lkIHN0YXRpYworICAgICAgICBkZXBlbmRlbmNpZXMgYmVjYXVzZSB3ZSB3YW50
IHRvIGV2ZW50dWFsbHkgcnVuIHRoZSBiYWNrZ3JvdW5kIHBhcnNlcgorICAgICAgICB1c2luZyBh
IGxpYnJhcnkgbGlrZSBsaWJkaXNwYXRjaCB0aGF0IHdpbGwgbGV0IHVzIHJ1biBtYW55IHZlcnNp
b24gaW4KKyAgICAgICAgcGFyYWxsZWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1c2VzIGEgZGlm
ZmVyZW50IGFwcHJvYWNoIHdoZXJlYnkgd2UgdXNlIHRoZSB0YWcgbmFtZSBmcm9tCisgICAgICAg
IHRoZSBDb21wYWN0SFRNTFRva2VuLiBJbiBvcmRlciB0byBhdm9pZCBjYWxsaW5nIHN0cmNtcCBl
eGNlc3NpdmVseSwgd2UKKyAgICAgICAgdXNlIFN0cmluZ0ltcGw6Omhhc2ggdG8gcXVpY2tseSBy
ZWplY3QgbWF0Y2hlcyB3aXRoIHNvbWUgY29tbW9uIHRhZworICAgICAgICBuYW1lcy4gQXMgYSBz
aWRlIGVmZmVjdCwgdGhlIGhhc2ggdmFsdWUgd2lsbCBiZSBjYWNoZWQgaW4gdGhlCisgICAgICAg
IFN0cmluZ0ltcGwsIHNwZWVkaW5nIHVwIGF0b21pemF0aW9uIG9uY2UgdGhlc2UgU3RyaW5nSW1w
bHMgYXJyaXZlIG9uCisgICAgICAgIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICAqIGh0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6dGhyZWFkU2FmZUVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OnRocmVh
ZFNhZmVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVt
cFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2lt
dWxhdGVUcmVlQnVpbGRlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuaDoKKyAgICAgICAgKEJhY2tncm91bmRIVE1MUGFyc2VyKToKKworMjAxMy0wMS0xNyAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIEJhY2tncm91bmRIVE1M
UGFyc2VyIHNob3VsZCBnbyAxOCUgZmFzdGVyIG9uIGh0bWwtcGFyc2VyLXNyY2RvYyBiZW5jaG1h
cmsKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzIw
MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBh
cnNlci5jcHAKaW5kZXggOGUyZGY3MjU2ZTM2ZWJiYjAyYTMzMDJmOTExOTg4OWQ0NTM3MmM4NS4u
NDliZjZiMmNmNzQyZDZiOTI2ZjBjMGRjZDc5ZmM3ODUyMzQ2YzQ2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcApAQCAtMzAs
MTMgKzMwLDE4IEBACiAjaW5jbHVkZSAiQmFja2dyb3VuZEhUTUxQYXJzZXIuaCIKIAogI2luY2x1
ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhUTUxQYXJzZXJUaHJlYWQuaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCisjaW5j
bHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKICNpZm5kZWYgTkRFQlVHCiAK
IHN0YXRpYyB2b2lkIGNoZWNrVGhhdFRva2Vuc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQo
Y29uc3QgVmVjdG9yPENvbXBhY3RIVE1MVG9rZW4+JiB0b2tlbnMpCkBAIC00OSw2ICs1NCwxOCBA
QCBzdGF0aWMgdm9pZCBjaGVja1RoYXRUb2tlbnNBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFk
KGNvbnN0IFZlY3RvcjxDb21wYWN0SFRNTAogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdU
b2tlbkxpbWl0ID0gNDAwMDsKIAorc3RhdGljIGJvb2wgdGhyZWFkU2FmZUVxdWFsKFN0cmluZ0lt
cGwqIGEsIFN0cmluZ0ltcGwqIGIpCit7CisgICAgaWYgKGEtPmhhc2goKSAhPSBiLT5oYXNoKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYSwg
Yik7Cit9CisKK3N0YXRpYyBib29sIHRocmVhZFNhZmVNYXRjaChTdHJpbmdJbXBsKiBsb2NhbE5h
bWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQoreworICAgIHJldHVybiB0aHJlYWRTYWZl
RXF1YWwobG9jYWxOYW1lLCBxTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOworfQorCiB0eXBlZGVm
IGNvbnN0IHZvaWQqIFBhcnNlcklkZW50aWZpZXI7CiBjbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXI7
CiAKQEAgLTEwNSw2MSArMTIyLDE1IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBU
b2tlbml6ZXIoKQogICAgIGlmIChtX2lzUGF1c2VkV2FpdGluZ0ZvclNjcmlwdHMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIC8vIEl0J3MgdW5jbGVhciB3aGV0aGVyIHdlIHdhbnQgdG8gdXNlIEF0
b21pY1N0cmluZ3Mgb24gdGhlIGJhY2tncm91bmQKLSAgICAvLyB0aHJlYWQuIFdlIHdpbGwgbGlr
ZWx5IGV2ZW50dWFsbHkgdXNlIGxpYmRpc3BhdGNoIHRvIHNjaGVkdWxlIHBhcnNpbmcKLSAgICAv
LyBpbiBhIHNlcGFyYXRlIHNlcXVlbmNlZCBxdWV1ZSBmb3IgZWFjaCBIVE1MRG9jdW1lbnRQYXJz
ZXIgaW5zdGFuY2UuCi0gICAgLy8gT25jZSB3ZSBkbyB0aGF0LCB0aGUgY29kZSBiZWxvdyB3aWxs
IGJlIHVuc2FmZSBiZWNhdXNlIGxpYmRpc3BhdGNoCi0gICAgLy8gbWlnaHQgc2NoZWR1bGUgdXMg
b24gbWFueSBkaWZmZXJlbnQgdGhyZWFkcy4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgaWZyYW1lVGFnLCAoImlmcmFtZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbWF0aFRh
ZywgKCJtYXRoIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBub2VtYmVkVGFnLCAoIm5vZW1iZWQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5vZnJhbWVzVGFnLCAoIm5vZnJhbWVzIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBub3NjcmlwdFRhZywgKCJub3NjcmlwdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGxh
aW50ZXh0VGFnLCAoInBsYWludGV4dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2NyaXB0VGFnLCAo
InNjcmlwdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3R5bGVUYWcsICgic3R5bGUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIHN2Z1RhZywgKCJzdmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHRleHRhcmVh
VGFnLCAoInRleHRhcmVhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB0aXRsZVRhZywgKCJ0aXRsZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgeG1wVGFnLCAoInhtcCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLQogICAgIHdoaWxlIChtX3Rva2VuaXplci0+bmV4dFRva2VuKG1f
aW5wdXQuY3VycmVudCgpLCBtX3Rva2VuKSkgewogICAgICAgICBtX3BlbmRpbmdUb2tlbnMuYXBw
ZW5kKENvbXBhY3RIVE1MVG9rZW4obV90b2tlbikpOwotCi0gICAgICAgIGlmIChtX3Rva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpIHsKLSAgICAgICAgICAgIEF0b21pY1N0
cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgp
KTsKLSAgICAgICAgICAgIGlmICh0YWdOYW1lID09IHN2Z1RhZyB8fCB0YWdOYW1lID09IG1hdGhU
YWcpCi0gICAgICAgICAgICAgICAgbV9pbkZvcmVpZ25Db250ZW50ID0gdHJ1ZTsKLQotICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIGNvcHkgb2YgVG9rZW5pemVyOjp1cGRhdGVT
dGF0ZUZvciB3aGljaCBkb2Vzbid0IHVzZSBIVE1MTmFtZXMuCi0gICAgICAgICAgICBpZiAodGFn
TmFtZSA9PSB0ZXh0YXJlYVRhZyB8fCB0YWdOYW1lID09IHRpdGxlVGFnKQotICAgICAgICAgICAg
ICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFUQVN0YXRl
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRhZ05hbWUgPT0gcGxhaW50ZXh0VGFnKQotICAgICAg
ICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlO
VEVYVFN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRhZ05hbWUgPT0gc2NyaXB0VGFnKQot
ICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6
OlNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0YWdOYW1lID09IHN0eWxl
VGFnCi0gICAgICAgICAgICAgICAgfHwgdGFnTmFtZSA9PSBpZnJhbWVUYWcKLSAgICAgICAgICAg
ICAgICB8fCB0YWdOYW1lID09IHhtcFRhZwotICAgICAgICAgICAgICAgIHx8ICh0YWdOYW1lID09
IG5vZW1iZWRUYWcgJiYgbV9vcHRpb25zLnBsdWdpbnNFbmFibGVkKQotICAgICAgICAgICAgICAg
IHx8IHRhZ05hbWUgPT0gbm9mcmFtZXNUYWcKLSAgICAgICAgICAgICAgICB8fCAodGFnTmFtZSA9
PSBub3NjcmlwdFRhZyAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCi0gICAgICAgICAgICAg
ICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0YXRl
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZykgewotICAgICAgICAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tlbi5u
YW1lKCkuZGF0YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwotICAgICAgICAgICAgaWYgKHRh
Z05hbWUgPT0gc3ZnVGFnIHx8IHRhZ05hbWUgPT0gbWF0aFRhZykKLSAgICAgICAgICAgICAgICBt
X2luRm9yZWlnbkNvbnRlbnQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICh0YWdOYW1lID09IHNj
cmlwdFRhZykgewotICAgICAgICAgICAgICAgIG1faXNQYXVzZWRXYWl0aW5nRm9yU2NyaXB0cyA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi5jbGVhcigpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBOZWVk
IHRvIHNldCBzZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudCBiYXNlZCBvbiBtX2luRm9y
ZWlnbkNvbnRlbnQgYXMgd2VsbC4KLSAgICAgICAgbV90b2tlbml6ZXItPnNldFNob3VsZEFsbG93
Q0RBVEEobV9pbkZvcmVpZ25Db250ZW50KTsKICAgICAgICAgbV90b2tlbi5jbGVhcigpOwogCisg
ICAgICAgIHNpbXVsYXRlVHJlZUJ1aWxkZXIobV9wZW5kaW5nVG9rZW5zLmxhc3QoKSk7CisKKyAg
ICAgICAgaWYgKG1faXNQYXVzZWRXYWl0aW5nRm9yU2NyaXB0cykKKyAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIGlmIChtX3BlbmRpbmdUb2tlbnMuc2l6ZSgpID49IHBlbmRpbmdUb2tlbkxp
bWl0KQogICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwogICAgIH0KQEAgLTE2
Nyw2ICsxMzgsNDIgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigp
CiAgICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwogfQogCit2b2lkIEJhY2tncm91bmRIVE1M
UGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2Vu
KQoreworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKSB7
CisgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSB0b2tlbi5kYXRhKCkuaW1wbCgpOworCisgICAg
ICAgIGlmICh0aHJlYWRTYWZlTWF0Y2gobmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykKKyAgICAgICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaChuYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCisgICAg
ICAgICAgICBtX2luRm9yZWlnbkNvbnRlbnQgPSB0cnVlOworICAgICAgICBlbHNlIGlmICh0aHJl
YWRTYWZlTWF0Y2gobmFtZSwgdGV4dGFyZWFUYWcpCisgICAgICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2gobmFtZSwgdGl0bGVUYWcpKQorICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRl
KEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUpOworICAgICAgICBlbHNlIGlmICh0aHJl
YWRTYWZlTWF0Y2gobmFtZSwgcGxhaW50ZXh0VGFnKSkKKyAgICAgICAgICAgIG1fdG9rZW5pemVy
LT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKG5hbWUsIHNjcmlwdFRhZykpCisgICAgICAgICAgICBt
X3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRhU3RhdGUp
OworICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2gobmFtZSwgc3R5bGVUYWcpCisgICAg
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2gobmFtZSwgaWZyYW1lVGFnKQorICAgICAgICAgICAg
fHwgdGhyZWFkU2FmZU1hdGNoKG5hbWUsIHhtcFRhZykKKyAgICAgICAgICAgIHx8ICh0aHJlYWRT
YWZlTWF0Y2gobmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25zLnBsdWdpbnNFbmFibGVkKQor
ICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKG5hbWUsIG5vZnJhbWVzVGFnKQorICAgICAg
ICAgICAgfHwgKHRocmVhZFNhZmVNYXRjaChuYW1lLCBub3NjcmlwdFRhZykgJiYgbV9vcHRpb25z
LnNjcmlwdEVuYWJsZWQpKQorICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxU
b2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0YXRlKTsKKyAgICB9CisgICAgaWYgKG1fdG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpIHsKKyAgICAgICAgU3RyaW5nSW1wbCogbmFt
ZSA9IHRva2VuLmRhdGEoKS5pbXBsKCk7CisKKyAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChu
YW1lLCBTVkdOYW1lczo6c3ZnVGFnKQorICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKG5h
bWUsIE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKKyAgICAgICAgICAgIG1faW5Gb3JlaWduQ29udGVu
dCA9IGZhbHNlOworICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2gobmFtZSwgc2NyaXB0
VGFnKSkKKyAgICAgICAgICAgIG1faXNQYXVzZWRXYWl0aW5nRm9yU2NyaXB0cyA9IHRydWU7Cisg
ICAgfQorICAgIC8vIEZJWE1FOiBOZWVkIHRvIHNldCBzZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBs
YWNlbWVudCBiYXNlZCBvbiBtX2luRm9yZWlnbkNvbnRlbnQgYXMgd2VsbC4KKyAgICBtX3Rva2Vu
aXplci0+c2V0U2hvdWxkQWxsb3dDREFUQShtX2luRm9yZWlnbkNvbnRlbnQpOworfQorCiBjbGFz
cyBUb2tlbkRlbGl2ZXJ5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUb2tlbkRlbGl2ZXJ5
KTsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5k
SFRNTFBhcnNlci5oCmluZGV4IDk2ODE1NjA0MTkxZmNiMTc0ZDkyODY1NzYwMzIyMGE5MGZlZjFi
MzYuLjJkZDE2ZWNhMGJiZmJmYjg2NWFkN2I2YzU0MTZhMTY2NzdhYjM1NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaApAQCAtNjEs
NiArNjEsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IEJhY2tncm91bmRIVE1MUGFyc2VyKGNv
bnN0IEhUTUxQYXJzZXJPcHRpb25zJiwgUGFyc2VySWRlbnRpZmllcik7CiAKICAgICB2b2lkIHB1
bXBUb2tlbml6ZXIoKTsKKyAgICB2b2lkIHNpbXVsYXRlVHJlZUJ1aWxkZXIoY29uc3QgQ29tcGFj
dEhUTUxUb2tlbiYpOwogCiAgICAgdm9pZCBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183348</attachid>
            <date>2013-01-17 18:49:26 -0800</date>
            <delta_ts>2013-01-18 12:36:37 -0800</delta_ts>
            <desc>works---not for review</desc>
            <filename>bug-107150-20130117184626.patch</filename>
            <type>text/plain</type>
            <size>5941</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKaW5kZXggM2NkMGY4NWU4MjM2MGY0ZWNk
ZmMxNTk4NzRmOTBkYTI4NjMzNGI3MC4uYWYwZDc4ZjMwNzE5MjkzNjdiMDc4MjVhNmZjNTM0NWEw
MjE5NzhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3Vu
ZEhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MUGFyc2VyLmNwcApAQCAtMzAsMTMgKzMwLDE4IEBACiAjaW5jbHVkZSAiQmFja2dyb3Vu
ZEhUTUxQYXJzZXIuaCIKIAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgorI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJUaHJlYWQuaCIKICNpbmNsdWRl
ICJIVE1MVG9rZW5pemVyLmgiCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CisKICNpZm5kZWYgTkRFQlVHCiAKIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFRva2Vuc0FyZVNh
ZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoY29uc3QgVmVjdG9yPENvbXBhY3RIVE1MVG9rZW4+JiB0
b2tlbnMpCkBAIC01MCw2ICs1NSwxOCBAQCBzdGF0aWMgdm9pZCBjaGVja1RoYXRUb2tlbnNBcmVT
YWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IFZlY3RvcjxDb21wYWN0SFRNTAogLy8gRklY
TUU6IFR1bmUgdGhpcyBjb25zdGFudCBiYXNlZCBvbiBhIGJlbmNobWFyay4gVGhlIGN1cnJlbnQg
dmFsdWUgd2FzIGNob29zZW4gYXJiaXRyYXJpbHkuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRp
bmdUb2tlbkxpbWl0ID0gNDAwMDsKIAorc3RhdGljIGJvb2wgdGhyZWFkU2FmZUVxdWFsKFN0cmlu
Z0ltcGwqIGEsIFN0cmluZ0ltcGwqIGIpCit7CisgICAgaWYgKGEtPmhhc2goKSAhPSBiLT5oYXNo
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwo
YSwgYik7Cit9CisKK3N0YXRpYyBib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBTdHJpbmcmIGxv
Y2FsTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCit7CisgICAgcmV0dXJuIHRocmVh
ZFNhZmVFcXVhbChsb2NhbE5hbWUuaW1wbCgpLCBxTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwor
fQorCiB0eXBlZGVmIGNvbnN0IHZvaWQqIFBhcnNlcklkZW50aWZpZXI7CiBjbGFzcyBIVE1MRG9j
dW1lbnRQYXJzZXI7CiAKQEAgLTEwNiw1MiArMTIzLDM3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQ
YXJzZXI6OnB1bXBUb2tlbml6ZXIoKQogICAgIGlmIChtX2lzUGF1c2VkV2FpdGluZ0ZvclNjcmlw
dHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEl0J3MgdW5jbGVhciB3aGV0aGVyIHdlIHdh
bnQgdG8gdXNlIEF0b21pY1N0cmluZ3Mgb24gdGhlIGJhY2tncm91bmQKLSAgICAvLyB0aHJlYWQu
IFdlIHdpbGwgbGlrZWx5IGV2ZW50dWFsbHkgdXNlIGxpYmRpc3BhdGNoIHRvIHNjaGVkdWxlIHBh
cnNpbmcKLSAgICAvLyBpbiBhIHNlcGFyYXRlIHNlcXVlbmNlZCBxdWV1ZSBmb3IgZWFjaCBIVE1M
RG9jdW1lbnRQYXJzZXIgaW5zdGFuY2UuCi0gICAgLy8gT25jZSB3ZSBkbyB0aGF0LCB0aGUgY29k
ZSBiZWxvdyB3aWxsIGJlIHVuc2FmZSBiZWNhdXNlIGxpYmRpc3BhdGNoCi0gICAgLy8gbWlnaHQg
c2NoZWR1bGUgdXMgb24gbWFueSBkaWZmZXJlbnQgdGhyZWFkcy4KLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgaWZyYW1lVGFnLCAoImlmcmFtZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgbWF0aFRhZywgKCJtYXRoIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBub2VtYmVkVGFnLCAo
Im5vZW1iZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5vZnJhbWVzVGFnLCAoIm5vZnJhbWVzIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBub3NjcmlwdFRhZywgKCJub3NjcmlwdCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgcGxhaW50ZXh0VGFnLCAoInBsYWludGV4dCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
c2NyaXB0VGFnLCAoInNjcmlwdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3R5bGVUYWcsICgic3R5
bGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN2Z1RhZywgKCJzdmciLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHRleHRhcmVhVGFnLCAoInRleHRhcmVhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB0aXRsZVRh
ZywgKCJ0aXRsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgeG1wVGFnLCAoInhtcCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQogICAgIHdoaWxlIChtX3Rva2VuaXplci0+
bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuKSkgewogICAgICAgICBtX3BlbmRp
bmdUb2tlbnMuYXBwZW5kKENvbXBhY3RIVE1MVG9rZW4obV90b2tlbikpOwogCi0gICAgICAgIGlm
IChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpIHsKLSAgICAgICAg
ICAgIEF0b21pY1N0cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5u
YW1lKCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmICh0YWdOYW1lID09IHN2Z1RhZyB8fCB0YWdO
YW1lID09IG1hdGhUYWcpCisgICAgICAgIGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuID0g
bV9wZW5kaW5nVG9rZW5zLmxhc3QoKTsKKworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZykgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0YWdO
YW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBTVkdOYW1lczo6c3ZnVGFnKQorICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCiAgICAgICAgICAgICAgICAgbV9pbkZv
cmVpZ25Db250ZW50ID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMganVz
dCBhIGNvcHkgb2YgVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvciB3aGljaCBkb2Vzbid0IHVzZSBI
VE1MTmFtZXMuCi0gICAgICAgICAgICBpZiAodGFnTmFtZSA9PSB0ZXh0YXJlYVRhZyB8fCB0YWdO
YW1lID09IHRpdGxlVGFnKQorICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCB0ZXh0YXJlYVRhZykgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHRpdGxlVGFnKSkKICAg
ICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpS
Q0RBVEFTdGF0ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0YWdOYW1lID09IHBsYWludGV4dFRh
ZykKKyAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBwbGFpbnRl
eHRUYWcpKQogICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5p
emVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRhZ05hbWUg
PT0gc2NyaXB0VGFnKQorICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIHNjcmlwdFRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhU
TUxUb2tlbml6ZXJTdGF0ZTo6U2NyaXB0RGF0YVN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHRhZ05hbWUgPT0gc3R5bGVUYWcKLSAgICAgICAgICAgICAgICB8fCB0YWdOYW1lID09IGlmcmFt
ZVRhZwotICAgICAgICAgICAgICAgIHx8IHRhZ05hbWUgPT0geG1wVGFnCi0gICAgICAgICAgICAg
ICAgfHwgKHRhZ05hbWUgPT0gbm9lbWJlZFRhZyAmJiBtX29wdGlvbnMucGx1Z2luc0VuYWJsZWQp
Ci0gICAgICAgICAgICAgICAgfHwgdGFnTmFtZSA9PSBub2ZyYW1lc1RhZwotICAgICAgICAgICAg
ICAgIHx8ICh0YWdOYW1lID09IG5vc2NyaXB0VGFnICYmIG1fb3B0aW9ucy5zY3JpcHRFbmFibGVk
KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzdHlsZVRh
ZykKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaWZyYW1lVGFn
KQorICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB4bXBUYWcpCisg
ICAgICAgICAgICAgICAgfHwgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBub2VtYmVkVGFnKSAm
JiBtX29wdGlvbnMucGx1Z2luc0VuYWJsZWQpCisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIG5vZnJhbWVzVGFnKQorICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgbm9zY3JpcHRUYWcpICYmIG1fb3B0aW9ucy5zY3JpcHRFbmFibGVk
KSkKICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0
YXRlOjpSQVdURVhUU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX3Rva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKSB7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcg
dGFnTmFtZShtX3Rva2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFtZSgpLnNpemUoKSk7Ci0g
ICAgICAgICAgICBpZiAodGFnTmFtZSA9PSBzdmdUYWcgfHwgdGFnTmFtZSA9PSBtYXRoVGFnKQor
ICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpIHsKKyAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAg
ICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKICAgICAgICAgICAg
ICAgICBtX2luRm9yZWlnbkNvbnRlbnQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICh0YWdOYW1l
ID09IHNjcmlwdFRhZykgeworICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBzY3JpcHRUYWcpKSB7CiAgICAgICAgICAgICAgICAgbV9pc1BhdXNlZFdhaXRpbmdGb3JTY3Jp
cHRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183526</attachid>
            <date>2013-01-18 12:36:39 -0800</date>
            <delta_ts>2013-01-18 15:16:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107150-20130118123343.patch</filename>
            <type>text/plain</type>
            <size>7722</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDE5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAxLTE4ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja2dyb3VuZEhUTUxQYXJzZXIg
c2hvdWxkbid0IGNyZWF0ZSBBdG9taWNTdHJpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSB3ZXJlIGNyZWF0aW5nIGFuIEF0
b21pY1N0cmluZyBmcm9tIHRoZSBIVE1MVG9rZW4gZm9yCisgICAgICAgIGV2ZXJ5IHN0YXJ0IGFu
ZCBlbmQgdGFnLiBUaGlzIGNhdXNlZCB1cyB0byBoYXZlIGEgc3RhdGljIGRlcGVuZGVuY3kgb24K
KyAgICAgICAgdGhlIHBhcnNlciB0aHJlYWQncyBhdG9taWMgc3RyaW5nIHRhYmxlLiBXZSB3YW50
IHRvIGF2b2lkIHN0YXRpYworICAgICAgICBkZXBlbmRlbmNpZXMgYmVjYXVzZSB3ZSB3YW50IHRv
IGV2ZW50dWFsbHkgcnVuIHRoZSBiYWNrZ3JvdW5kIHBhcnNlcgorICAgICAgICB1c2luZyBhIGxp
YnJhcnkgbGlrZSBsaWJkaXNwYXRjaCB0aGF0IHdpbGwgbGV0IHVzIHJ1biBtYW55IHZlcnNpb24g
aW4KKyAgICAgICAgcGFyYWxsZWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1c2VzIGEgZGlmZmVy
ZW50IGFwcHJvYWNoIHdoZXJlYnkgd2UgdXNlIHRoZSB0YWcgbmFtZSBmcm9tCisgICAgICAgIHRo
ZSBDb21wYWN0SFRNTFRva2VuLiBJbiBvcmRlciB0byBhdm9pZCBjYWxsaW5nIHN0cmNtcCBleGNl
c3NpdmVseSwgd2UKKyAgICAgICAgdXNlIFN0cmluZ0ltcGw6Omhhc2ggdG8gcXVpY2tseSByZWpl
Y3QgbWF0Y2hlcyB3aXRoIHNvbWUgY29tbW9uIHRhZworICAgICAgICBuYW1lcy4gQXMgYSBzaWRl
IGVmZmVjdCwgdGhlIGhhc2ggdmFsdWUgd2lsbCBiZSBjYWNoZWQgaW4gdGhlCisgICAgICAgIFN0
cmluZ0ltcGwsIHNwZWVkaW5nIHVwIGF0b21pemF0aW9uIG9uY2UgdGhlc2UgU3RyaW5nSW1wbHMg
YXJyaXZlIG9uCisgICAgICAgIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG9uIGh0bWwtcGFyc2VyLXNyY2RvYy5odG1s
LgorICAgICAgICBXaXRoIHRoZSBwYXRjaCBpbiBidWcgMTA3MjM2IGFwcGxpZWQgKHdoaWNoIGZv
Y3VzZXMgdGhlIGJlbmNobWFyayBtb3JlCisgICAgICAgIHRpZ2h0bHkgb24gdGhlIHBhcnNlciks
IHdlIHNwZW5kIDIuMyUgbGVzcyB0aW1lIG9uIHRoZSBtYWluIHRocmVhZAorICAgICAgICAobGlr
ZWx5IGR1ZSB0byBwcmUtY2FjaGluZyB0aGUgaGFzaCB2YWx1ZXMpIGFuZCAxMS41JSBsZXNzIHRp
bWUgb24gdGhlCisgICAgICAgIHBhcnNlciB0aHJlYWQuCisKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OnRocmVhZFNhZmVFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjp0aHJlYWRTYWZl
TWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tl
bml6ZXIpOgorCiAyMDEzLTAxLTE4ICBUaW0gVm9sb2RpbmUgIDx0aW12b2xvZGluZUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVGV4dCBBdXRvc2l6aW5nOiBkb24ndCBhdXRvc2l6ZSBoZWFkZXJz
IHdpdGggbXVsdGlwbGUgaW5saW5lIGxpbmtzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAkocmV2aXNpb24gMTQwMTkz
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTggQEAKICNpbmNsdWRlICJCYWNrZ3JvdW5k
SFRNTFBhcnNlci5oIgogCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclRocmVhZC5oIgogI2luY2x1ZGUg
IkhUTUxUb2tlbml6ZXIuaCIKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKKwogI2lmbmRlZiBOREVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0VG9rZW5zQXJlU2Fm
ZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBWZWN0b3I8Q29tcGFjdEhUTUxUb2tlbj4mIHRv
a2VucykKQEAgLTUwLDYgKzU1LDE4IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFRva2Vuc0FyZVNh
ZmVUb1NlbmQKIC8vIEZJWE1FOiBUdW5lIHRoaXMgY29uc3RhbnQgYmFzZWQgb24gYSBiZW5jaG1h
cmsuIFRoZSBjdXJyZW50IHZhbHVlIHdhcyBjaG9vc2VuIGFyYml0cmFyaWx5Lgogc3RhdGljIGNv
bnN0IHNpemVfdCBwZW5kaW5nVG9rZW5MaW1pdCA9IDQwMDA7CiAKK3N0YXRpYyBib29sIHRocmVh
ZFNhZmVFcXVhbChTdHJpbmdJbXBsKiBhLCBTdHJpbmdJbXBsKiBiKQoreworICAgIGlmIChhLT5o
YXNoKCkgIT0gYi0+aGFzaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFN0
cmluZ0hhc2g6OmVxdWFsKGEsIGIpOworfQorCitzdGF0aWMgYm9vbCB0aHJlYWRTYWZlTWF0Y2go
Y29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQorewor
ICAgIHJldHVybiB0aHJlYWRTYWZlRXF1YWwobG9jYWxOYW1lLmltcGwoKSwgcU5hbWUubG9jYWxO
YW1lKCkuaW1wbCgpKTsKK30KKwogdHlwZWRlZiBjb25zdCB2b2lkKiBQYXJzZXJJZGVudGlmaWVy
OwogY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyOwogCkBAIC0xMDYsNTIgKzEyMywzNyBAQCB2b2lk
IEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyCiAgICAgaWYgKG1faXNQYXVzZWRX
YWl0aW5nRm9yU2NyaXB0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSXQncyB1bmNsZWFy
IHdoZXRoZXIgd2Ugd2FudCB0byB1c2UgQXRvbWljU3RyaW5ncyBvbiB0aGUgYmFja2dyb3VuZAot
ICAgIC8vIHRocmVhZC4gV2Ugd2lsbCBsaWtlbHkgZXZlbnR1YWxseSB1c2UgbGliZGlzcGF0Y2gg
dG8gc2NoZWR1bGUgcGFyc2luZwotICAgIC8vIGluIGEgc2VwYXJhdGUgc2VxdWVuY2VkIHF1ZXVl
IGZvciBlYWNoIEhUTUxEb2N1bWVudFBhcnNlciBpbnN0YW5jZS4KLSAgICAvLyBPbmNlIHdlIGRv
IHRoYXQsIHRoZSBjb2RlIGJlbG93IHdpbGwgYmUgdW5zYWZlIGJlY2F1c2UgbGliZGlzcGF0Y2gK
LSAgICAvLyBtaWdodCBzY2hlZHVsZSB1cyBvbiBtYW55IGRpZmZlcmVudCB0aHJlYWRzLgotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZnJhbWVUYWcsICgiaWZyYW1lIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBtYXRoVGFnLCAoIm1hdGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IG5vZW1iZWRUYWcsICgibm9lbWJlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbm9mcmFtZXNUYWcs
ICgibm9mcmFtZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5vc2NyaXB0VGFnLCAoIm5vc2NyaXB0
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwbGFpbnRleHRUYWcsICgicGxhaW50ZXh0IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBzY3JpcHRUYWcsICgic2NyaXB0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBz
dHlsZVRhZywgKCJzdHlsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3ZnVGFnLCAoInN2ZyIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgdGV4dGFyZWFUYWcsICgidGV4dGFyZWEiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHRpdGxlVGFnLCAoInRpdGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4bXBUYWcsICgi
eG1wIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCiAgICAgd2hpbGUg
KG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW4pKSB7CiAg
ICAgICAgIG1fcGVuZGluZ1Rva2Vucy5hcHBlbmQoQ29tcGFjdEhUTUxUb2tlbihtX3Rva2VuKSk7
CiAKLSAgICAgICAgaWYgKG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
ZykgewotICAgICAgICAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tlbi5uYW1lKCkuZGF0
YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwotICAgICAgICAgICAgaWYgKHRhZ05hbWUgPT0g
c3ZnVGFnIHx8IHRhZ05hbWUgPT0gbWF0aFRhZykKKyAgICAgICAgY29uc3QgQ29tcGFjdEhUTUxU
b2tlbiYgdG9rZW4gPSBtX3BlbmRpbmdUb2tlbnMubGFzdCgpOworCisgICAgICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKSB7CisgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBpZiAodGhyZWFk
U2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpCisgICAgICAgICAgICAgICAgfHwg
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKICAgICAgICAg
ICAgICAgICBtX2luRm9yZWlnbkNvbnRlbnQgPSB0cnVlOwogCiAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBpcyBqdXN0IGEgY29weSBvZiBUb2tlbml6ZXI6OnVwZGF0ZVN0YXRlRm9yIHdoaWNo
IGRvZXNuJ3QgdXNlIEhUTUxOYW1lcy4KLSAgICAgICAgICAgIGlmICh0YWdOYW1lID09IHRleHRh
cmVhVGFnIHx8IHRhZ05hbWUgPT0gdGl0bGVUYWcpCisgICAgICAgICAgICBpZiAodGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIHRleHRhcmVhVGFnKSB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
dGl0bGVUYWcpKQogICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9r
ZW5pemVyU3RhdGU6OlJDREFUQVN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRhZ05hbWUg
PT0gcGxhaW50ZXh0VGFnKQorICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIHBsYWludGV4dFRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0
YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOwotICAgICAgICAgICAgZWxz
ZSBpZiAodGFnTmFtZSA9PSBzY3JpcHRUYWcpCisgICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkKICAgICAgICAgICAgICAgICBtX3Rva2VuaXpl
ci0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRhU3RhdGUpOwotICAgICAg
ICAgICAgZWxzZSBpZiAodGFnTmFtZSA9PSBzdHlsZVRhZwotICAgICAgICAgICAgICAgIHx8IHRh
Z05hbWUgPT0gaWZyYW1lVGFnCi0gICAgICAgICAgICAgICAgfHwgdGFnTmFtZSA9PSB4bXBUYWcK
LSAgICAgICAgICAgICAgICB8fCAodGFnTmFtZSA9PSBub2VtYmVkVGFnICYmIG1fb3B0aW9ucy5w
bHVnaW5zRW5hYmxlZCkKLSAgICAgICAgICAgICAgICB8fCB0YWdOYW1lID09IG5vZnJhbWVzVGFn
Ci0gICAgICAgICAgICAgICAgfHwgKHRhZ05hbWUgPT0gbm9zY3JpcHRUYWcgJiYgbV9vcHRpb25z
LnNjcmlwdEVuYWJsZWQpKQorICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIHN0eWxlVGFnKQorICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBpZnJhbWVUYWcpCisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIHhtcFRhZykKKyAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IG5vZW1iZWRUYWcpICYmIG1fb3B0aW9ucy5wbHVnaW5zRW5hYmxlZCkKKyAgICAgICAgICAgICAg
ICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbm9mcmFtZXNUYWcpCisgICAgICAgICAgICAg
ICAgfHwgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBub3NjcmlwdFRhZykgJiYgbV9vcHRpb25z
LnNjcmlwdEVuYWJsZWQpKQogICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShI
VE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpIHsKLSAgICAgICAgICAg
IEF0b21pY1N0cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1l
KCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmICh0YWdOYW1lID09IHN2Z1RhZyB8fCB0YWdOYW1l
ID09IG1hdGhUYWcpCisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkVuZFRhZykgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0
YSgpOworICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdOYW1lczo6
c3ZnVGFnKSB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcp
KQogICAgICAgICAgICAgICAgIG1faW5Gb3JlaWduQ29udGVudCA9IGZhbHNlOwotICAgICAgICAg
ICAgaWYgKHRhZ05hbWUgPT0gc2NyaXB0VGFnKSB7CisgICAgICAgICAgICBpZiAodGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpIHsKICAgICAgICAgICAgICAgICBtX2lzUGF1c2Vk
V2FpdGluZ0ZvclNjcmlwdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgIG1fdG9rZW4uY2xlYXIo
KTsKICAgICAgICAgICAgICAgICBicmVhazsK
</data>

          </attachment>
      

    </bug>

</bugzilla>