<?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>80250</bug_id>
          
          <creation_ts>2012-03-05 00:43:12 -0800</creation_ts>
          <short_desc>[JSC] Cache the CSSPropertyID in JSCSSStyleDeclaration for performance optimization</short_desc>
          <delta_ts>2012-03-05 17:52:05 -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>WebCore JavaScript</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>arv</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>menard</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>570472</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 00:43:12 -0800</bug_when>
    <thetext>V8CSSStyleDeclaration caches the calculated CSSPropertyID. Similarly, we can implement the cache in JSCSSStyleDeclaration.

This is a follow-up patch of bug 79014.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570479</commentid>
    <comment_count>1</comment_count>
      <attachid>130071</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 00:51:02 -0800</bug_when>
    <thetext>Created attachment 130071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570480</commentid>
    <comment_count>2</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 00:51:57 -0800</bug_when>
    <thetext>I wanted to measure the performance by DOM/Accessors.html, but run-perf-tests are not working just right now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570485</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-05 00:58:49 -0800</bug_when>
    <thetext>I actually intentionally avoided the cache because it offered only a small speedup on positive match but a significant impact on negative match.

Are you sure of your numbers? The 35% does not match at all what I had when doing exactly the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570492</commentid>
    <comment_count>4</comment_count>
      <attachid>130071</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-05 01:03:30 -0800</bug_when>
    <thetext>Comment on attachment 130071
Patch

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

&gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:181
&gt; +    typedef HashMap&lt;StringImpl*, CSSPropertyInfo*&gt; CSSPropertyInfoMap;
&gt; +    DEFINE_STATIC_LOCAL(CSSPropertyInfoMap, map, ());
&gt; +    CSSPropertyInfo* propertyInfo = map.get(propertyNameString);

Oh, I see the difference with my test now, your key is the pointer to string, not the string.

This does not seems like a good idea, nothing ensure you will keep this StringImpl in memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570493</commentid>
    <comment_count>5</comment_count>
      <attachid>130073</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 01:04:30 -0800</bug_when>
    <thetext>Created attachment 130073
Test HTML

&gt; I actually intentionally avoided the cache because it offered only a small speedup on positive match but a significant impact on negative match.
&gt; 
&gt; Are you sure of your numbers? The 35% does not match at all what I had when doing exactly the same thing.

I attached the HTML for performance tests. In my AppleWebKit/Mac environment,

- Without the patch: 225ms 1278ms
- With the patch: 149ms 1188ms

Also I confirmed that if I remove the cache from V8CSSStyleDeclaration, DOM/Accessors.html&apos;s performance degrades much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570496</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 01:07:52 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 130071 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130071&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:181
&gt; &gt; +    typedef HashMap&lt;StringImpl*, CSSPropertyInfo*&gt; CSSPropertyInfoMap;
&gt; &gt; +    DEFINE_STATIC_LOCAL(CSSPropertyInfoMap, map, ());
&gt; &gt; +    CSSPropertyInfo* propertyInfo = map.get(propertyNameString);
&gt; 
&gt; Oh, I see the difference with my test now, your key is the pointer to string, not the string.
&gt; 
&gt; This does not seems like a good idea, nothing ensure you will keep this StringImpl in memory.

Ah, makes sense (though I am not sure how much we cannot ensure it in the real world). Then let me try to cache the String. I guess that it would have some performance impact, judging from the fact that removing the cache from V8CSSStyleDeclaration degrades the performance much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570503</commentid>
    <comment_count>7</comment_count>
      <attachid>130074</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 01:24:09 -0800</bug_when>
    <thetext>Created attachment 130074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570506</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 01:25:34 -0800</bug_when>
    <thetext>Benjamin: Updated the patch

- Without the patch: 225ms 1278ms
- With the patch: 141ms 1170ms

(Maybe I need to measure the performance overhead for cache-miss cases though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570512</commentid>
    <comment_count>9</comment_count>
      <attachid>130074</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-05 01:29:53 -0800</bug_when>
    <thetext>Comment on attachment 130074
Patch

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

&gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:180
&gt; +    typedef HashMap&lt;String, CSSPropertyInfo*&gt; CSSPropertyInfoMap;

I would try having CSSPropertyInfo by value instead of allocating them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570515</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-05 01:32:36 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Benjamin: Updated the patch

Thanks, I will definitely try your patch and try to find why we have different outcome.

But tomorrow, tonight I am heading to bed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570517</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 01:33:43 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; Thanks, I will definitely try your patch and try to find why we have different outcome.
&gt; 
&gt; But tomorrow, tonight I am heading to bed :)

OK, thanks. I&apos;ll upload the patch that does not allocate CSSPropertyInfo().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570524</commentid>
    <comment_count>12</comment_count>
      <attachid>130082</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 01:52:00 -0800</bug_when>
    <thetext>Created attachment 130082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570525</commentid>
    <comment_count>13</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 01:52:49 -0800</bug_when>
    <thetext>Benjamin: Updated the patch

- Without the patch: 225ms 1278ms
- With the patch: 149ms 1199ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570776</commentid>
    <comment_count>14</comment_count>
      <attachid>130082</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-05 09:32:11 -0800</bug_when>
    <thetext>Comment on attachment 130082
Patch

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

&gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:180
&gt; +    String stringForCache = String(propertyNameString);

Identifier already store a UString internally, maybe you can use this one as key of the map.  That would avoid to create the String. Does it bring benefits? Maybe not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571045</commentid>
    <comment_count>15</comment_count>
      <attachid>130205</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-05 14:19:56 -0800</bug_when>
    <thetext>Created attachment 130205
Modified version of the test

Here is a slightly modified version of the test.

The problem I have on my hardware is the 3 first test are faster, and the last one is almost twice as slow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571050</commentid>
    <comment_count>16</comment_count>
      <attachid>130082</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-05 14:26:45 -0800</bug_when>
    <thetext>Comment on attachment 130082
Patch

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

This seems like a good idea., the trade off looks very reasonable. Let&apos;s see how that perform in the wild :)

&gt; Source/WebCore/ChangeLog:13
&gt; +        In my local Mac environment, this optimization improves the performance
&gt; +        of CSS property getters by 35%, and the performance of CSS property setters
&gt; +        by 8%.

Are those numbers still accurate after your update?

&gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:183
&gt; +    typedef HashMap&lt;String, CSSPropertyInfo&gt; CSSPropertyInfoMap;
&gt; +    DEFINE_STATIC_LOCAL(CSSPropertyInfoMap, map, ());
&gt; +    propertyInfo = map.get(stringForCache);

I would prefer propertyInfoCache or something more descriptive instead of map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571110</commentid>
    <comment_count>17</comment_count>
      <attachid>130215</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 15:45:08 -0800</bug_when>
    <thetext>Created attachment 130215
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571112</commentid>
    <comment_count>18</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 15:48:21 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        In my local Mac environment, this optimization improves the performance
&gt; &gt; +        of CSS property getters by 35%, and the performance of CSS property setters
&gt; &gt; +        by 8%.
&gt; 
&gt; Are those numbers still accurate after your update?

I confirmed it is still accurate.

&gt; &gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:183
&gt; &gt; +    typedef HashMap&lt;String, CSSPropertyInfo&gt; CSSPropertyInfoMap;
&gt; &gt; +    DEFINE_STATIC_LOCAL(CSSPropertyInfoMap, map, ());
&gt; &gt; +    propertyInfo = map.get(stringForCache);
&gt; 
&gt; I would prefer propertyInfoCache or something more descriptive instead of map.

Done. Thanks for reviewing!

(In reply to comment #14)
&gt; (From update of attachment 130082 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130082&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:180
&gt; &gt; +    String stringForCache = String(propertyNameString);
&gt; 
&gt; Identifier already store a UString internally, maybe you can use this one as key of the map.  That would avoid to create the String. Does it bring benefits? Maybe not.

It seems that we cannot use a UString as a hashmap key:

/Users/haraken/WebKit/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/HashTable.h:355: error: &apos;isDeletedValue&apos; is not a member of &apos;WTF::HashTraits&lt;JSC::UString&gt;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571289</commentid>
    <comment_count>19</comment_count>
      <attachid>130215</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 17:51:18 -0800</bug_when>
    <thetext>Comment on attachment 130215
patch for landing

Clearing flags on attachment: 130215

Committed r109829: &lt;http://trac.webkit.org/changeset/109829&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130071</attachid>
            <date>2012-03-05 00:51:02 -0800</date>
            <delta_ts>2012-03-05 01:23:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80250-20120305175058.patch</filename>
            <type>text/plain</type>
            <size>6487</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNjNjMyM2VkMmIyODY1
NmFmMjY1MDIxNWEyMTljNjQyYmU0M2FhZC4uOTgxY2U0YWQyODQxMjhhMDgxYmM2ZWE2MDczNmEx
NmU2NjQ2OWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSlNDXSBDYWNoZSB0
aGUgQ1NTUHJvcGVydHlJRCBpbiBKU0NTU1N0eWxlRGVjbGFyYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMjUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVjhDU1NTdHlsZURlY2xhcmF0aW9uIGNh
Y2hlcyB0aGUgY2FsY3VsYXRlZCBDU1NQcm9wZXJ0eUlELgorICAgICAgICBTaW1pbGFybHksIHdl
IGNhbiBpbXBsZW1lbnQgdGhlIGNhY2hlIGluIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi4KKworICAg
ICAgICBJbiBteSBsb2NhbCBNYWMgZW52aXJvbm1lbnQsIHRoaXMgb3B0aW1pemF0aW9uIGltcHJv
dmVzIHRoZSBwZXJmb3JtYW5jZQorICAgICAgICBvZiBDU1MgcHJvcGVydHkgZ2V0dGVycyBieSAz
NSUsIGFuZCB0aGUgcGVyZm9ybWFuY2Ugb2YgQ1NTIHByb3BlcnR5IHNldHRlcnMKKyAgICAgICAg
YnkgOCUuCisKKyAgICAgICAgQ1NTIHByb3BlcnR5IGdldHRlcjogZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDAwOyBpKyspIHNwYW4uc3R5bGUuZm9udFdlaWdodDsKKyAgICAgICAgQ1NTIHByb3Bl
cnR5IHNldHRlcjogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHNwYW4uc3R5bGUu
Zm9udFdlaWdodCA9ICJib2xkIjsKKworICAgICAgICBUZXN0czogZmFzdC9kb20vQ1NTU3R5bGVE
ZWNsYXJhdGlvbi8qIChObyBjaGFuZ2UgaW4gdGVzdCByZXN1bHRzKQorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKENTU1By
b3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0
eWxlRGVjbGFyYXRpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZSk6CisKIDIwMTItMDMtMDQgIE1PUklUQSBIYWppbWUg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3Ig
RU5BQkxFKE1BVEhNTCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA4NTE4Y2RlMzUwMDMyMDA3
MGZkYjhkNDZmNTM4YmJkYjZjNjVkMTYyLi4yZmE1NWY4OGY0NTI2ZDE3MTE5YWY2MDk2MGEzMGVj
OWEwNGQ4YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTU4LDYgKzU4LDEyIEBAIHZvaWQg
SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVj
dC0+aW1wbCgpKSk7CiB9CiAKK2NsYXNzIENTU1Byb3BlcnR5SW5mbyB7CitwdWJsaWM6CisgICAg
aW50IHByb3BlcnR5SUQ7CisgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4OworfTsKKwogZW51
bSBQcm9wZXJ0eU5hbWVQcmVmaXgKIHsKICAgICBQcm9wZXJ0eU5hbWVQcmVmaXhOb25lLApAQCAt
MTYxLDE2ICsxNjcsMjEgQEAgc3RhdGljIGlubGluZSB2b2lkIHdyaXRlRXB1YlByZWZpeChjaGFy
KiYgYnVmZmVyKQogICAgICpidWZmZXIrKyA9ICctJzsKIH0KIAotc3RhdGljIGludCBjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBib29sKiBoYWRQaXhlbE9yUG9zUHJlZml4ID0gMCkKK3N0YXRpYyBDU1NQcm9wZXJ0eUluZm8q
IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKGhhZFBpeGVsT3JQb3NQcmVmaXgpCi0gICAgICAgICpoYWRQ
aXhlbE9yUG9zUHJlZml4ID0gZmFsc2U7CisgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4ID0g
ZmFsc2U7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBwcm9wZXJ0eU5hbWUubGVuZ3RoKCk7CiAg
ICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3RyaW5nSW1wbCogcHJv
cGVydHlOYW1lU3RyaW5nID0gcHJvcGVydHlOYW1lLmltcGwoKTsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nSW1wbCosIENTU1Byb3BlcnR5SW5mbyo+IENTU1Byb3BlcnR5SW5mb01hcDsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5SW5mb01hcCwgbWFwLCAoKSk7CisgICAg
Q1NTUHJvcGVydHlJbmZvKiBwcm9wZXJ0eUluZm8gPSBtYXAuZ2V0KHByb3BlcnR5TmFtZVN0cmlu
Zyk7CisgICAgaWYgKHByb3BlcnR5SW5mbykKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5SW5mbzsK
KwogICAgIGNvbnN0IHNpemVfdCBidWZmZXJTaXplID0gbWF4Q1NTUHJvcGVydHlOYW1lTGVuZ3Ro
ICsgMTsKICAgICBjaGFyIGJ1ZmZlcltidWZmZXJTaXplXTsKICAgICBjaGFyKiBidWZmZXJQdHIg
PSBidWZmZXI7CkBAIC0xOTAsMTMgKzIwMSwxMSBAQCBzdGF0aWMgaW50IGNzc1Byb3BlcnR5SURG
b3JKU0NTU1Byb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvbwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeFBpeGVsOgogICAgICAg
ICBpICs9IDU7Ci0gICAgICAgIGlmIChoYWRQaXhlbE9yUG9zUHJlZml4KQotICAgICAgICAgICAg
KmhhZFBpeGVsT3JQb3NQcmVmaXggPSB0cnVlOworICAgICAgICBoYWRQaXhlbE9yUG9zUHJlZml4
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhQb3M6
CiAgICAgICAgIGkgKz0gMzsKLSAgICAgICAgaWYgKGhhZFBpeGVsT3JQb3NQcmVmaXgpCi0gICAg
ICAgICAgICAqaGFkUGl4ZWxPclBvc1ByZWZpeCA9IHRydWU7CisgICAgICAgIGhhZFBpeGVsT3JQ
b3NQcmVmaXggPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFByb3BlcnR5TmFtZVBy
ZWZpeEFwcGxlOgogICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4S0hUTUw6CkBAIC0yNDYsNyAr
MjU1LDE0IEBAIHN0YXRpYyBpbnQgY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgYm9vCiAjZW5kaWYKIAogICAgIGNvbnN0IFBy
b3BlcnR5KiBoYXNoVGFibGVFbnRyeSA9IGZpbmRQcm9wZXJ0eShuYW1lLCBvdXRwdXRMZW5ndGgp
OwotICAgIHJldHVybiBoYXNoVGFibGVFbnRyeSA/IGhhc2hUYWJsZUVudHJ5LT5pZCA6IDA7Cisg
ICAgaW50IHByb3BlcnR5SUQgPSBoYXNoVGFibGVFbnRyeSA/IGhhc2hUYWJsZUVudHJ5LT5pZCA6
IDA7CisgICAgaWYgKHByb3BlcnR5SUQpIHsKKyAgICAgICAgcHJvcGVydHlJbmZvID0gbmV3IENT
U1Byb3BlcnR5SW5mbygpOworICAgICAgICBwcm9wZXJ0eUluZm8tPmhhZFBpeGVsT3JQb3NQcmVm
aXggPSBoYWRQaXhlbE9yUG9zUHJlZml4OworICAgICAgICBwcm9wZXJ0eUluZm8tPnByb3BlcnR5
SUQgPSBwcm9wZXJ0eUlEOworICAgICAgICBtYXAuYWRkKHByb3BlcnR5TmFtZVN0cmluZywgcHJv
cGVydHlJbmZvKTsKKyAgICB9CisgICAgcmV0dXJuIHByb3BlcnR5SW5mbzsKIH0KIAogc3RhdGlj
IGJvb2wgaXNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlJZGVudGlm
aWVyKQpAQCAtMjY4LDMyICsyODQsMzAgQEAgSlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb24KICAgICAv
LyBwb3NUb3AgcmV0dXJucyAiQ1NTIHRvcCIgYXMgbnVtYmVyIHZhbHVlIGluIHVuaXQgcGl4ZWxz
IF9pZl8gaXRzIGEKICAgICAvLyBwb3NpdGlvbmVkIGVsZW1lbnQuIGlmIGl0IGlzIG5vdCBhIHBv
c2l0aW9uZWQgZWxlbWVudCwgcmV0dXJuIDAKICAgICAvLyBmcm9tIE1TSUUgZG9jdW1lbnRhdGlv
biBGSVhNRTogSU1QTEVNRU5UIFRIQVQgKERpcmspCi0gICAgYm9vbCBwaXhlbE9yUG9zOwotICAg
IGludCBjc3NQcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKHBy
b3BlcnR5TmFtZSwgJnBpeGVsT3JQb3MpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNP
YmotPmltcGwoKS0+Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1By
b3BlcnR5SUQ+KGNzc1Byb3BlcnR5SUQpKTsKKyAgICBDU1NQcm9wZXJ0eUluZm8qIGNzc1Byb3Bl
cnR5ID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7Cisg
ICAgUmVmUHRyPENTU1ZhbHVlPiB2ID0gdGhpc09iai0+aW1wbCgpLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oY3NzUHJvcGVydHktPnByb3Bl
cnR5SUQpKTsKICAgICBpZiAodikgewotICAgICAgICBpZiAocGl4ZWxPclBvcyAmJiB2LT5pc1By
aW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIGlmIChjc3NQcm9wZXJ0eS0+aGFkUGl4ZWxPclBvc1By
ZWZpeCAmJiB2LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOdW1i
ZXIoc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odiktPmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwogICAgICAgICByZXR1cm4ganNTdHJpbmdP
ck51bGwoZXhlYywgdi0+Y3NzVGV4dCgpKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgcHJvcGVy
dHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgKHN1Y2ggYXMgInBhZGRpbmciKSwgCiAgICAgLy8g
aXQgY2FuIG9ubHkgYmUgYWNjZXNzZWQgdXNpbmcgZ2V0UHJvcGVydHlWYWx1ZS4KLSAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgdGhpc09iai0+aW1wbCgpLT5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oY3NzUHJvcGVydHlJRCkpKTsKKyAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgdGhpc09iai0+aW1wbCgpLT5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oY3NzUHJvcGVydHktPnByb3BlcnR5SUQpKSk7
CiB9CiAKIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JikKIHsKLSAgICBib29sIHBpeGVsT3JQb3M7Ci0gICAgaW50IGNzc1Byb3Bl
cnR5SUQgPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lLCAm
cGl4ZWxPclBvcyk7Ci0gICAgaWYgKCFjc3NQcm9wZXJ0eUlEKQorICAgIENTU1Byb3BlcnR5SW5m
byogY3NzUHJvcGVydHkgPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVy
dHlOYW1lKTsKKyAgICBpZiAoIWNzc1Byb3BlcnR5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBTdHJpbmcgcHJvcFZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywg
dmFsdWUpOwotICAgIGlmIChwaXhlbE9yUG9zKQorICAgIGlmIChjc3NQcm9wZXJ0eS0+aGFkUGl4
ZWxPclBvc1ByZWZpeCkKICAgICAgICAgcHJvcFZhbHVlICs9ICJweCI7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLT5zZXRQcm9wZXJ0eUludGVybmFsKHN0YXRpY19jYXN0
PENTU1Byb3BlcnR5SUQ+KGNzc1Byb3BlcnR5SUQpLCBwcm9wVmFsdWUsIGZhbHNlLCBlYyk7Cisg
ICAgaW1wbCgpLT5zZXRQcm9wZXJ0eUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+
KGNzc1Byb3BlcnR5LT5wcm9wZXJ0eUlEKSwgcHJvcFZhbHVlLCBmYWxzZSwgZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIHRydWU7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>130073</attachid>
            <date>2012-03-05 01:04:30 -0800</date>
            <delta_ts>2012-03-05 01:04:30 -0800</delta_ts>
            <desc>Test HTML</desc>
            <filename>accessor.html</filename>
            <type>text/html</type>
            <size>625</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPjwvaGVhZD4KPGJvZHk+CjxzcGFuIGlkPSJzcGFuIj4KPC9zcGFuPgo8ZGl2
IGlkPSJyZXN1bHQiPjwvZGl2Pgo8c2NyaXB0Pgp2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzcGFuIik7CnNwYW4uc3R5bGUuZm9udFdlaWdodCA9ICJib2xkIjsKdmFyIGRpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKCihmdW5jdGlvbihzcGFuKSB7CiAg
dmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsKICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7IGkr
KykKICAgIHNwYW4uc3R5bGUuZm9udFdlaWdodDsKICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoKERhdGUubm93KCkgLSBzdGFydCkgKyAiXG4iKSk7Cn0pKHNwYW4pOwoK
KGZ1bmN0aW9uKHNwYW4pIHsKICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwMDsgaSsrKQogICAgc3Bhbi5zdHlsZS5mb250V2VpZ2h0ID0gImJvbGQi
OwogIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgoRGF0ZS5ub3coKSAt
IHN0YXJ0KSArICJcbiIpKTsKfSkoc3Bhbik7Cgo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130074</attachid>
            <date>2012-03-05 01:24:09 -0800</date>
            <delta_ts>2012-03-05 01:51:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80250-20120305182403.patch</filename>
            <type>text/plain</type>
            <size>6531</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNjNjMyM2VkMmIyODY1
NmFmMjY1MDIxNWEyMTljNjQyYmU0M2FhZC4uOTgxY2U0YWQyODQxMjhhMDgxYmM2ZWE2MDczNmEx
NmU2NjQ2OWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSlNDXSBDYWNoZSB0
aGUgQ1NTUHJvcGVydHlJRCBpbiBKU0NTU1N0eWxlRGVjbGFyYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMjUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVjhDU1NTdHlsZURlY2xhcmF0aW9uIGNh
Y2hlcyB0aGUgY2FsY3VsYXRlZCBDU1NQcm9wZXJ0eUlELgorICAgICAgICBTaW1pbGFybHksIHdl
IGNhbiBpbXBsZW1lbnQgdGhlIGNhY2hlIGluIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi4KKworICAg
ICAgICBJbiBteSBsb2NhbCBNYWMgZW52aXJvbm1lbnQsIHRoaXMgb3B0aW1pemF0aW9uIGltcHJv
dmVzIHRoZSBwZXJmb3JtYW5jZQorICAgICAgICBvZiBDU1MgcHJvcGVydHkgZ2V0dGVycyBieSAz
NSUsIGFuZCB0aGUgcGVyZm9ybWFuY2Ugb2YgQ1NTIHByb3BlcnR5IHNldHRlcnMKKyAgICAgICAg
YnkgOCUuCisKKyAgICAgICAgQ1NTIHByb3BlcnR5IGdldHRlcjogZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDAwOyBpKyspIHNwYW4uc3R5bGUuZm9udFdlaWdodDsKKyAgICAgICAgQ1NTIHByb3Bl
cnR5IHNldHRlcjogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHNwYW4uc3R5bGUu
Zm9udFdlaWdodCA9ICJib2xkIjsKKworICAgICAgICBUZXN0czogZmFzdC9kb20vQ1NTU3R5bGVE
ZWNsYXJhdGlvbi8qIChObyBjaGFuZ2UgaW4gdGVzdCByZXN1bHRzKQorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKENTU1By
b3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0
eWxlRGVjbGFyYXRpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZSk6CisKIDIwMTItMDMtMDQgIE1PUklUQSBIYWppbWUg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3Ig
RU5BQkxFKE1BVEhNTCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA4NTE4Y2RlMzUwMDMyMDA3
MGZkYjhkNDZmNTM4YmJkYjZjNjVkMTYyLi5kMDVhZDg3ZjMxNTEzMzhjYzc5NjJiODEzMjA1ZGMw
ZTkzMzE2OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTU4LDYgKzU4LDEyIEBAIHZvaWQg
SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVj
dC0+aW1wbCgpKSk7CiB9CiAKK2NsYXNzIENTU1Byb3BlcnR5SW5mbyB7CitwdWJsaWM6CisgICAg
aW50IHByb3BlcnR5SUQ7CisgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4OworfTsKKwogZW51
bSBQcm9wZXJ0eU5hbWVQcmVmaXgKIHsKICAgICBQcm9wZXJ0eU5hbWVQcmVmaXhOb25lLApAQCAt
MTYxLDE2ICsxNjcsMjIgQEAgc3RhdGljIGlubGluZSB2b2lkIHdyaXRlRXB1YlByZWZpeChjaGFy
KiYgYnVmZmVyKQogICAgICpidWZmZXIrKyA9ICctJzsKIH0KIAotc3RhdGljIGludCBjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBib29sKiBoYWRQaXhlbE9yUG9zUHJlZml4ID0gMCkKK3N0YXRpYyBDU1NQcm9wZXJ0eUluZm8q
IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKGhhZFBpeGVsT3JQb3NQcmVmaXgpCi0gICAgICAgICpoYWRQ
aXhlbE9yUG9zUHJlZml4ID0gZmFsc2U7CisgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4ID0g
ZmFsc2U7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBwcm9wZXJ0eU5hbWUubGVuZ3RoKCk7CiAg
ICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3RyaW5nSW1wbCogcHJv
cGVydHlOYW1lU3RyaW5nID0gcHJvcGVydHlOYW1lLmltcGwoKTsKKyAgICBTdHJpbmcgc3RyaW5n
Rm9yQ2FjaGUgPSBTdHJpbmcocHJvcGVydHlOYW1lU3RyaW5nKTsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBDU1NQcm9wZXJ0eUluZm8qPiBDU1NQcm9wZXJ0eUluZm9NYXA7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUluZm9NYXAsIG1hcCwgKCkpOworICAgIENTU1By
b3BlcnR5SW5mbyogcHJvcGVydHlJbmZvID0gbWFwLmdldChzdHJpbmdGb3JDYWNoZSk7CisgICAg
aWYgKHByb3BlcnR5SW5mbykKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5SW5mbzsKKwogICAgIGNv
bnN0IHNpemVfdCBidWZmZXJTaXplID0gbWF4Q1NTUHJvcGVydHlOYW1lTGVuZ3RoICsgMTsKICAg
ICBjaGFyIGJ1ZmZlcltidWZmZXJTaXplXTsKICAgICBjaGFyKiBidWZmZXJQdHIgPSBidWZmZXI7
CkBAIC0xOTAsMTMgKzIwMiwxMSBAQCBzdGF0aWMgaW50IGNzc1Byb3BlcnR5SURGb3JKU0NTU1By
b3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvbwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeFBpeGVsOgogICAgICAgICBpICs9IDU7
Ci0gICAgICAgIGlmIChoYWRQaXhlbE9yUG9zUHJlZml4KQotICAgICAgICAgICAgKmhhZFBpeGVs
T3JQb3NQcmVmaXggPSB0cnVlOworICAgICAgICBoYWRQaXhlbE9yUG9zUHJlZml4ID0gdHJ1ZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhQb3M6CiAgICAgICAg
IGkgKz0gMzsKLSAgICAgICAgaWYgKGhhZFBpeGVsT3JQb3NQcmVmaXgpCi0gICAgICAgICAgICAq
aGFkUGl4ZWxPclBvc1ByZWZpeCA9IHRydWU7CisgICAgICAgIGhhZFBpeGVsT3JQb3NQcmVmaXgg
PSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeEFwcGxl
OgogICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4S0hUTUw6CkBAIC0yNDYsNyArMjU2LDE0IEBA
IHN0YXRpYyBpbnQgY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgYm9vCiAjZW5kaWYKIAogICAgIGNvbnN0IFByb3BlcnR5KiBo
YXNoVGFibGVFbnRyeSA9IGZpbmRQcm9wZXJ0eShuYW1lLCBvdXRwdXRMZW5ndGgpOwotICAgIHJl
dHVybiBoYXNoVGFibGVFbnRyeSA/IGhhc2hUYWJsZUVudHJ5LT5pZCA6IDA7CisgICAgaW50IHBy
b3BlcnR5SUQgPSBoYXNoVGFibGVFbnRyeSA/IGhhc2hUYWJsZUVudHJ5LT5pZCA6IDA7CisgICAg
aWYgKHByb3BlcnR5SUQpIHsKKyAgICAgICAgcHJvcGVydHlJbmZvID0gbmV3IENTU1Byb3BlcnR5
SW5mbygpOworICAgICAgICBwcm9wZXJ0eUluZm8tPmhhZFBpeGVsT3JQb3NQcmVmaXggPSBoYWRQ
aXhlbE9yUG9zUHJlZml4OworICAgICAgICBwcm9wZXJ0eUluZm8tPnByb3BlcnR5SUQgPSBwcm9w
ZXJ0eUlEOworICAgICAgICBtYXAuYWRkKHN0cmluZ0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOwor
ICAgIH0KKyAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQogCiBzdGF0aWMgYm9vbCBpc0NTU1By
b3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eUlkZW50aWZpZXIpCkBAIC0yNjgs
MzIgKzI4NSwzMCBAQCBKU1ZhbHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbgogICAgIC8vIHBvc1RvcCByZXR1
cm5zICJDU1MgdG9wIiBhcyBudW1iZXIgdmFsdWUgaW4gdW5pdCBwaXhlbHMgX2lmXyBpdHMgYQog
ICAgIC8vIHBvc2l0aW9uZWQgZWxlbWVudC4gaWYgaXQgaXMgbm90IGEgcG9zaXRpb25lZCBlbGVt
ZW50LCByZXR1cm4gMAogICAgIC8vIGZyb20gTVNJRSBkb2N1bWVudGF0aW9uIEZJWE1FOiBJTVBM
RU1FTlQgVEhBVCAoRGlyaykKLSAgICBib29sIHBpeGVsT3JQb3M7Ci0gICAgaW50IGNzc1Byb3Bl
cnR5SUQgPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lLCAm
cGl4ZWxPclBvcyk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB2ID0gdGhpc09iai0+aW1wbCgpLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oY3Nz
UHJvcGVydHlJRCkpOworICAgIENTU1Byb3BlcnR5SW5mbyogY3NzUHJvcGVydHkgPSBjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IHYgPSB0aGlzT2JqLT5pbXBsKCktPmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChz
dGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihjc3NQcm9wZXJ0eS0+cHJvcGVydHlJRCkpOwogICAg
IGlmICh2KSB7Ci0gICAgICAgIGlmIChwaXhlbE9yUG9zICYmIHYtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKKyAgICAgICAgaWYgKGNzc1Byb3BlcnR5LT5oYWRQaXhlbE9yUG9zUHJlZml4ICYmIHYtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfcG9p
bnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2KS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKSk7CiAgICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVjLCB2
LT5jc3NUZXh0KCkpOwogICAgIH0KIAogICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0
aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIpLCAKICAgICAvLyBpdCBjYW4gb25seSBi
ZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAgIHJldHVybiBqc1N0cmluZyhl
eGVjLCB0aGlzT2JqLT5pbXBsKCktPmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPihjc3NQcm9wZXJ0eUlEKSkpOworICAgIHJldHVybiBqc1N0cmluZyhl
eGVjLCB0aGlzT2JqLT5pbXBsKCktPmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPihjc3NQcm9wZXJ0eS0+cHJvcGVydHlJRCkpKTsKIH0KIAogYm9vbCBK
U0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KQogewotICAgIGJvb2wgcGl4ZWxPclBvczsKLSAgICBpbnQgY3NzUHJvcGVydHlJRCA9IGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUsICZwaXhlbE9yUG9zKTsK
LSAgICBpZiAoIWNzc1Byb3BlcnR5SUQpCisgICAgQ1NTUHJvcGVydHlJbmZvKiBjc3NQcm9wZXJ0
eSA9IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpOworICAg
IGlmICghY3NzUHJvcGVydHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cmluZyBw
cm9wVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSk7Ci0gICAg
aWYgKHBpeGVsT3JQb3MpCisgICAgaWYgKGNzc1Byb3BlcnR5LT5oYWRQaXhlbE9yUG9zUHJlZml4
KQogICAgICAgICBwcm9wVmFsdWUgKz0gInB4IjsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpbXBsKCktPnNldFByb3BlcnR5SW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4oY3NzUHJvcGVydHlJRCksIHByb3BWYWx1ZSwgZmFsc2UsIGVjKTsKKyAgICBpbXBsKCktPnNl
dFByb3BlcnR5SW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oY3NzUHJvcGVydHkt
PnByb3BlcnR5SUQpLCBwcm9wVmFsdWUsIGZhbHNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130082</attachid>
            <date>2012-03-05 01:52:00 -0800</date>
            <delta_ts>2012-03-05 17:52:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80250-20120305185158.patch</filename>
            <type>text/plain</type>
            <size>8010</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNjNjMyM2VkMmIyODY1
NmFmMjY1MDIxNWEyMTljNjQyYmU0M2FhZC4uOTgxY2U0YWQyODQxMjhhMDgxYmM2ZWE2MDczNmEx
NmU2NjQ2OWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSlNDXSBDYWNoZSB0
aGUgQ1NTUHJvcGVydHlJRCBpbiBKU0NTU1N0eWxlRGVjbGFyYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMjUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVjhDU1NTdHlsZURlY2xhcmF0aW9uIGNh
Y2hlcyB0aGUgY2FsY3VsYXRlZCBDU1NQcm9wZXJ0eUlELgorICAgICAgICBTaW1pbGFybHksIHdl
IGNhbiBpbXBsZW1lbnQgdGhlIGNhY2hlIGluIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi4KKworICAg
ICAgICBJbiBteSBsb2NhbCBNYWMgZW52aXJvbm1lbnQsIHRoaXMgb3B0aW1pemF0aW9uIGltcHJv
dmVzIHRoZSBwZXJmb3JtYW5jZQorICAgICAgICBvZiBDU1MgcHJvcGVydHkgZ2V0dGVycyBieSAz
NSUsIGFuZCB0aGUgcGVyZm9ybWFuY2Ugb2YgQ1NTIHByb3BlcnR5IHNldHRlcnMKKyAgICAgICAg
YnkgOCUuCisKKyAgICAgICAgQ1NTIHByb3BlcnR5IGdldHRlcjogZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDAwOyBpKyspIHNwYW4uc3R5bGUuZm9udFdlaWdodDsKKyAgICAgICAgQ1NTIHByb3Bl
cnR5IHNldHRlcjogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHNwYW4uc3R5bGUu
Zm9udFdlaWdodCA9ICJib2xkIjsKKworICAgICAgICBUZXN0czogZmFzdC9kb20vQ1NTU3R5bGVE
ZWNsYXJhdGlvbi8qIChObyBjaGFuZ2UgaW4gdGVzdCByZXN1bHRzKQorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKENTU1By
b3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0
eWxlRGVjbGFyYXRpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZSk6CisKIDIwMTItMDMtMDQgIE1PUklUQSBIYWppbWUg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3Ig
RU5BQkxFKE1BVEhNTCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA4NTE4Y2RlMzUwMDMyMDA3
MGZkYjhkNDZmNTM4YmJkYjZjNjVkMTYyLi44MmViNzY4Y2MxNWQ1ZmVmMThmOTU1ZWE4NGEzMzFm
NDBiMDYyZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTU4LDYgKzU4LDEyIEBAIHZvaWQg
SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodGhpc09iamVj
dC0+aW1wbCgpKSk7CiB9CiAKK2NsYXNzIENTU1Byb3BlcnR5SW5mbyB7CitwdWJsaWM6CisgICAg
aW50IHByb3BlcnR5SUQ7CisgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4OworfTsKKwogZW51
bSBQcm9wZXJ0eU5hbWVQcmVmaXgKIHsKICAgICBQcm9wZXJ0eU5hbWVQcmVmaXhOb25lLApAQCAt
MTYxLDE2ICsxNjcsMjMgQEAgc3RhdGljIGlubGluZSB2b2lkIHdyaXRlRXB1YlByZWZpeChjaGFy
KiYgYnVmZmVyKQogICAgICpidWZmZXIrKyA9ICctJzsKIH0KIAotc3RhdGljIGludCBjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBib29sKiBoYWRQaXhlbE9yUG9zUHJlZml4ID0gMCkKK3N0YXRpYyBDU1NQcm9wZXJ0eUluZm8g
Y3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKIHsKLSAgICBpZiAoaGFkUGl4ZWxPclBvc1ByZWZpeCkKLSAgICAgICAgKmhhZFBp
eGVsT3JQb3NQcmVmaXggPSBmYWxzZTsKKyAgICBDU1NQcm9wZXJ0eUluZm8gcHJvcGVydHlJbmZv
ID0gezAsIGZhbHNlfTsKKyAgICBib29sIGhhZFBpeGVsT3JQb3NQcmVmaXggPSBmYWxzZTsKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZS5sZW5ndGgoKTsKICAgICBpZiAoIWxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87CiAK
ICAgICBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBwcm9wZXJ0eU5hbWUuaW1wbCgp
OworICAgIFN0cmluZyBzdHJpbmdGb3JDYWNoZSA9IFN0cmluZyhwcm9wZXJ0eU5hbWVTdHJpbmcp
OworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5SW5mbz4gQ1NTUHJvcGVy
dHlJbmZvTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlJbmZvTWFwLCBt
YXAsICgpKTsKKyAgICBwcm9wZXJ0eUluZm8gPSBtYXAuZ2V0KHN0cmluZ0ZvckNhY2hlKTsKKyAg
ICBpZiAocHJvcGVydHlJbmZvLnByb3BlcnR5SUQpCisgICAgICAgIHJldHVybiBwcm9wZXJ0eUlu
Zm87CisKICAgICBjb25zdCBzaXplX3QgYnVmZmVyU2l6ZSA9IG1heENTU1Byb3BlcnR5TmFtZUxl
bmd0aCArIDE7CiAgICAgY2hhciBidWZmZXJbYnVmZmVyU2l6ZV07CiAgICAgY2hhciogYnVmZmVy
UHRyID0gYnVmZmVyOwpAQCAtMTgzLDIwICsxOTYsMTggQEAgc3RhdGljIGludCBjc3NQcm9wZXJ0
eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBi
b28KICAgICBzd2l0Y2ggKGdldENTU1Byb3BlcnR5TmFtZVByZWZpeCgqcHJvcGVydHlOYW1lU3Ry
aW5nKSkgewogICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4Tm9uZToKICAgICAgICAgaWYgKGlz
QVNDSUlVcHBlcigoKnByb3BlcnR5TmFtZVN0cmluZylbMF0pKQotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeENTUzoKICAgICAgICAgaSArPSAzOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeFBpeGVsOgogICAgICAgICBpICs9IDU7
Ci0gICAgICAgIGlmIChoYWRQaXhlbE9yUG9zUHJlZml4KQotICAgICAgICAgICAgKmhhZFBpeGVs
T3JQb3NQcmVmaXggPSB0cnVlOworICAgICAgICBoYWRQaXhlbE9yUG9zUHJlZml4ID0gdHJ1ZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhQb3M6CiAgICAgICAg
IGkgKz0gMzsKLSAgICAgICAgaWYgKGhhZFBpeGVsT3JQb3NQcmVmaXgpCi0gICAgICAgICAgICAq
aGFkUGl4ZWxPclBvc1ByZWZpeCA9IHRydWU7CisgICAgICAgIGhhZFBpeGVsT3JQb3NQcmVmaXgg
PSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeEFwcGxl
OgogICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4S0hUTUw6CkBAIC0yMjAsMTcgKzIzMSwxNyBA
QCBzdGF0aWMgaW50IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvbwogICAgIHNpemVfdCBidWZmZXJTaXplTGVmdCA9IHN0
cmluZ0VuZCAtIGJ1ZmZlclB0cjsKICAgICBzaXplX3QgcHJvcGVydHlTaXplTGVmdCA9IGxlbmd0
aCAtIGk7CiAgICAgaWYgKHByb3BlcnR5U2l6ZUxlZnQgPiBidWZmZXJTaXplTGVmdCkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87CiAKICAgICBmb3IgKDsg
aSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSAoKnByb3BlcnR5TmFtZVN0cmlu
ZylbaV07CiAgICAgICAgIGlmICghYyB8fCBjID49IDB4N0YpCi0gICAgICAgICAgICByZXR1cm4g
MDsgLy8gaWxsZWdhbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87
IC8vIGlsbGVnYWwgY2hhcmFjdGVyCiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoYykpIHsKICAg
ICAgICAgICAgIHNpemVfdCBidWZmZXJTaXplTGVmdCA9IHN0cmluZ0VuZCAtIGJ1ZmZlclB0cjsK
ICAgICAgICAgICAgIHNpemVfdCBwcm9wZXJ0eVNpemVMZWZ0ID0gbGVuZ3RoIC0gaSArIDE7CiAg
ICAgICAgICAgICBpZiAocHJvcGVydHlTaXplTGVmdCA+IGJ1ZmZlclNpemVMZWZ0KQotICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87
CiAgICAgICAgICAgICAqYnVmZmVyUHRyKysgPSAnLSc7CiAgICAgICAgICAgICAqYnVmZmVyUHRy
KysgPSB0b0FTQ0lJTG93ZXIoYyk7CiAgICAgICAgIH0gZWxzZQpAQCAtMjQ2LDEyICsyNTcsMTkg
QEAgc3RhdGljIGludCBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBib28KICNlbmRpZgogCiAgICAgY29uc3QgUHJvcGVydHkq
IGhhc2hUYWJsZUVudHJ5ID0gZmluZFByb3BlcnR5KG5hbWUsIG91dHB1dExlbmd0aCk7Ci0gICAg
cmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gaGFzaFRhYmxlRW50cnktPmlkIDogMDsKKyAgICBpbnQg
cHJvcGVydHlJRCA9IGhhc2hUYWJsZUVudHJ5ID8gaGFzaFRhYmxlRW50cnktPmlkIDogMDsKKyAg
ICBpZiAocHJvcGVydHlJRCkgeworICAgICAgICBwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1By
ZWZpeCA9IGhhZFBpeGVsT3JQb3NQcmVmaXg7CisgICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0
eUlEID0gcHJvcGVydHlJRDsKKyAgICAgICAgbWFwLmFkZChzdHJpbmdGb3JDYWNoZSwgcHJvcGVy
dHlJbmZvKTsKKyAgICB9CisgICAgcmV0dXJuIHByb3BlcnR5SW5mbzsKIH0KIAogc3RhdGljIGJv
b2wgaXNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlJZGVudGlmaWVy
KQogewotICAgIHJldHVybiBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVy
dHlJZGVudGlmaWVyKTsKKyAgICBDU1NQcm9wZXJ0eUluZm8gcHJvcGVydHlJbmZvID0gY3NzUHJv
cGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKHByb3BlcnR5SWRlbnRpZmllcik7CisgICAgcmV0
dXJuIHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEOwogfQogCiBib29sIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIENTU1N0eWxlRGVjbGFyYXRpb24q
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCkBAIC0yNjgsMzIgKzI4NiwzMCBAQCBK
U1ZhbHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIGNvbgogICAgIC8vIHBvc1RvcCByZXR1cm5zICJDU1MgdG9wIiBh
cyBudW1iZXIgdmFsdWUgaW4gdW5pdCBwaXhlbHMgX2lmXyBpdHMgYQogICAgIC8vIHBvc2l0aW9u
ZWQgZWxlbWVudC4gaWYgaXQgaXMgbm90IGEgcG9zaXRpb25lZCBlbGVtZW50LCByZXR1cm4gMAog
ICAgIC8vIGZyb20gTVNJRSBkb2N1bWVudGF0aW9uIEZJWE1FOiBJTVBMRU1FTlQgVEhBVCAoRGly
aykKLSAgICBib29sIHBpeGVsT3JQb3M7Ci0gICAgaW50IGNzc1Byb3BlcnR5SUQgPSBjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lLCAmcGl4ZWxPclBvcyk7Ci0g
ICAgUmVmUHRyPENTU1ZhbHVlPiB2ID0gdGhpc09iai0+aW1wbCgpLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oY3NzUHJvcGVydHlJRCkpOwor
ICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQ
cm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHYgPSB0aGlz
T2JqLT5pbXBsKCktPmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQ
cm9wZXJ0eUlEPihwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkpOwogICAgIGlmICh2KSB7Ci0gICAg
ICAgIGlmIChwaXhlbE9yUG9zICYmIHYtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgaWYg
KHByb3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4ICYmIHYtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2KS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KSk7CiAgICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVjLCB2LT5jc3NUZXh0KCkpOwog
ICAgIH0KIAogICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAo
c3VjaCBhcyAicGFkZGluZyIpLCAKICAgICAvLyBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1c2lu
ZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5p
bXBsKCktPmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlE
Pihjc3NQcm9wZXJ0eUlEKSkpOworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5p
bXBsKCktPmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlE
Pihwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkpKTsKIH0KIAogYm9vbCBKU0NTU1N0eWxlRGVjbGFy
YXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewotICAgIGJvb2wg
cGl4ZWxPclBvczsKLSAgICBpbnQgY3NzUHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SURGb3JKU0NT
U1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUsICZwaXhlbE9yUG9zKTsKLSAgICBpZiAoIWNzc1By
b3BlcnR5SUQpCisgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5
SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpOworICAgIGlmICghcHJvcGVydHlJ
bmZvLnByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cmluZyBwcm9w
VmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSk7Ci0gICAgaWYg
KHBpeGVsT3JQb3MpCisgICAgaWYgKHByb3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4KQog
ICAgICAgICBwcm9wVmFsdWUgKz0gInB4IjsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBpbXBsKCktPnNldFByb3BlcnR5SW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4o
Y3NzUHJvcGVydHlJRCksIHByb3BWYWx1ZSwgZmFsc2UsIGVjKTsKKyAgICBpbXBsKCktPnNldFBy
b3BlcnR5SW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJbmZvLnBy
b3BlcnR5SUQpLCBwcm9wVmFsdWUsIGZhbHNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>130205</attachid>
            <date>2012-03-05 14:19:56 -0800</date>
            <delta_ts>2012-03-05 14:19:56 -0800</delta_ts>
            <desc>Modified version of the test</desc>
            <filename>accessor.html</filename>
            <type>text/html</type>
            <size>1615</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPjwvaGVhZD4KPGJvZHk+CjxzcGFuIGlkPSJzcGFuIj4KPC9zcGFuPgo8ZGl2
IGlkPSJyZXN1bHQiPjwvZGl2Pgo8c2NyaXB0Pgp2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzcGFuIik7CnNwYW4uc3R5bGUuZm9udFdlaWdodCA9ICJib2xkIjsKdmFyIGRpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKCi8vIFJlYWQuCihmdW5jdGlvbihz
cGFuKSB7CiAgdmFyIHNwYW5TdHlsZSA9IHNwYW4uc3R5bGU7CiAgdmFyIHN0YXJ0ID0gRGF0ZS5u
b3coKTsKICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgewogICAgc3BhblN0eWxl
LmZvbnRXZWlnaHQ7CiAgICBzcGFuU3R5bGUuY29sb3I7CiAgICBzcGFuU3R5bGUuYmFja2dyb3Vu
ZENvbG9yOwogICAgc3BhblN0eWxlLmRpc3BsYXk7CiAgfQogIGRpdi5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgoRGF0ZS5ub3coKSAtIHN0YXJ0KSArICJcbiIpKTsKfSkoc3Bh
bik7CgovLyBXcml0ZS4KKGZ1bmN0aW9uKHNwYW4pIHsKICB2YXIgc3BhblN0eWxlID0gc3Bhbi5z
dHlsZTsKICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogIGZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDAwMDsgaSsrKSB7CiAgICBzcGFuU3R5bGUuZm9udFdlaWdodCA9ICJib2xkIjsKICAgIHNwYW5T
dHlsZS5jb2xvciA9ICJyZWQiOwogICAgc3BhblN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJncmVl
biI7CiAgICBzcGFuU3R5bGUuZGlzcGxheSA9ICJpbmxpbmUiOwogIH0KICBkaXYuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoKERhdGUubm93KCkgLSBzdGFydCkgKyAiXG4iKSk7
Cn0pKHNwYW4pOwoKLy8gV3JpdGUgcHJlZml4ZWQuCihmdW5jdGlvbihzcGFuKSB7CiAgdmFyIHNw
YW5TdHlsZSA9IHNwYW4uc3R5bGU7CiAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsKICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgewogICAgc3BhblN0eWxlLmNzc0ZvbnRXZWlnaHQg
PSAiYm9sZCI7CiAgICBzcGFuU3R5bGUuY3NzQ29sb3IgPSAicmVkIjsKICAgIHNwYW5TdHlsZS5j
c3NCYWNrZ3JvdW5kQ29sb3IgPSAiZ3JlZW4iOwogICAgc3BhblN0eWxlLmNzc0Rpc3BsYXkgPSAi
aW5saW5lIjsKICB9CiAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKChE
YXRlLm5vdygpIC0gc3RhcnQpICsgIlxuIikpOwp9KShzcGFuKTsKCi8vIFdyaXRlIG5vdCBwcm9w
ZXJ0eS4KKGZ1bmN0aW9uKHNwYW4pIHsKICB2YXIgc3BhblN0eWxlID0gc3Bhbi5zdHlsZTsKICB2
YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsr
KSB7CiAgICBzcGFuU3R5bGUuaW52YWxpZEZvbnRXZWlnaHQ7CiAgICBzcGFuU3R5bGUuaW52YWxp
ZENvbG9yOwogICAgc3BhblN0eWxlLmludmFsaWRCYWNrZ3JvdW5kQ29sb3I7CiAgICBzcGFuU3R5
bGUuaW52YWxpZERpc3BsYXk7CiAgfQogIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgoRGF0ZS5ub3coKSAtIHN0YXJ0KSArICJcbiIpKTsKfSkoc3Bhbik7Cgo8L3Njcmlw
dD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130215</attachid>
            <date>2012-03-05 15:45:08 -0800</date>
            <delta_ts>2012-03-05 17:51:18 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-80250-20120306084506.patch</filename>
            <type>text/plain</type>
            <size>8054</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNjNjMyM2VkMmIyODY1
NmFmMjY1MDIxNWEyMTljNjQyYmU0M2FhZC4uN2IwMTE1NTIxMzU0Y2UwY2Y3ODJkNzIzM2E0MjJi
OTUwYjNmMjliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSlNDXSBDYWNoZSB0
aGUgQ1NTUHJvcGVydHlJRCBpbiBKU0NTU1N0eWxlRGVjbGFyYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMjUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBWOENTU1N0eWxlRGVjbGFyYXRpb24g
Y2FjaGVzIHRoZSBjYWxjdWxhdGVkIENTU1Byb3BlcnR5SUQuCisgICAgICAgIFNpbWlsYXJseSwg
d2UgY2FuIGltcGxlbWVudCB0aGUgY2FjaGUgaW4gSlNDU1NTdHlsZURlY2xhcmF0aW9uLgorCisg
ICAgICAgIEluIG15IGxvY2FsIE1hYyBlbnZpcm9ubWVudCwgdGhpcyBvcHRpbWl6YXRpb24gaW1w
cm92ZXMgdGhlIHBlcmZvcm1hbmNlCisgICAgICAgIG9mIENTUyBwcm9wZXJ0eSBnZXR0ZXJzIGJ5
IDM1JSwgYW5kIHRoZSBwZXJmb3JtYW5jZSBvZiBDU1MgcHJvcGVydHkgc2V0dGVycworICAgICAg
ICBieSA4JS4KKworICAgICAgICBDU1MgcHJvcGVydHkgZ2V0dGVyOiBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwMDA7IGkrKykgc3Bhbi5zdHlsZS5mb250V2VpZ2h0OworICAgICAgICBDU1MgcHJv
cGVydHkgc2V0dGVyOiBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgc3Bhbi5zdHls
ZS5mb250V2VpZ2h0ID0gImJvbGQiOworCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9DU1NTdHls
ZURlY2xhcmF0aW9uLyogKE5vIGNoYW5nZSBpbiB0ZXN0IHJlc3VsdHMpCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoQ1NT
UHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Nz
UHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0
eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKToKKwogMjAxMi0wMy0wNCAgTU9SSVRBIEhhamlt
ZSA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZv
ciBFTkFCTEUoTUFUSE1MKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCmluZGV4IDg1MThjZGUzNTAwMzIw
MDcwZmRiOGQ0NmY1MzhiYmRiNmM2NWQxNjIuLjQ3ZTQ0OTA1YjIyNzA3MjkxY2NkNjI4YTVmMDA4
Zjc3YTA3NzRjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
U3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApAQCAtNTgsNiArNTgsMTIgQEAgdm9p
ZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2Jq
ZWN0LT5pbXBsKCkpKTsKIH0KIAorY2xhc3MgQ1NTUHJvcGVydHlJbmZvIHsKK3B1YmxpYzoKKyAg
ICBpbnQgcHJvcGVydHlJRDsKKyAgICBib29sIGhhZFBpeGVsT3JQb3NQcmVmaXg7Cit9OworCiBl
bnVtIFByb3BlcnR5TmFtZVByZWZpeAogewogICAgIFByb3BlcnR5TmFtZVByZWZpeE5vbmUsCkBA
IC0xNjEsMTYgKzE2NywyMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgd3JpdGVFcHViUHJlZml4KGNo
YXIqJiBidWZmZXIpCiAgICAgKmJ1ZmZlcisrID0gJy0nOwogfQogCi1zdGF0aWMgaW50IGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIGJvb2wqIGhhZFBpeGVsT3JQb3NQcmVmaXggPSAwKQorc3RhdGljIENTU1Byb3BlcnR5SW5m
byBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQogewotICAgIGlmIChoYWRQaXhlbE9yUG9zUHJlZml4KQotICAgICAgICAqaGFk
UGl4ZWxPclBvc1ByZWZpeCA9IGZhbHNlOworICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUlu
Zm8gPSB7MCwgZmFsc2V9OworICAgIGJvb2wgaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGZhbHNlOwog
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gcHJvcGVydHlOYW1lLmxlbmd0aCgpOwogICAgIGlmICgh
bGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5SW5mbzsK
IAogICAgIFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZVN0cmluZyA9IHByb3BlcnR5TmFtZS5pbXBs
KCk7CisgICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0gU3RyaW5nKHByb3BlcnR5TmFtZVN0cmlu
Zyk7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ1NTUHJvcGVydHlJbmZvPiBDU1NQcm9w
ZXJ0eUluZm9NYXA7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUluZm9NYXAs
IHByb3BlcnR5SW5mb0NhY2hlLCAoKSk7CisgICAgcHJvcGVydHlJbmZvID0gcHJvcGVydHlJbmZv
Q2FjaGUuZ2V0KHN0cmluZ0ZvckNhY2hlKTsKKyAgICBpZiAocHJvcGVydHlJbmZvLnByb3BlcnR5
SUQpCisgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87CisKICAgICBjb25zdCBzaXplX3QgYnVm
ZmVyU2l6ZSA9IG1heENTU1Byb3BlcnR5TmFtZUxlbmd0aCArIDE7CiAgICAgY2hhciBidWZmZXJb
YnVmZmVyU2l6ZV07CiAgICAgY2hhciogYnVmZmVyUHRyID0gYnVmZmVyOwpAQCAtMTgzLDIwICsx
OTYsMTggQEAgc3RhdGljIGludCBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib28KICAgICBzd2l0Y2ggKGdldENTU1Byb3Bl
cnR5TmFtZVByZWZpeCgqcHJvcGVydHlOYW1lU3RyaW5nKSkgewogICAgIGNhc2UgUHJvcGVydHlO
YW1lUHJlZml4Tm9uZToKICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcigoKnByb3BlcnR5TmFtZVN0
cmluZylbMF0pKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gcHJv
cGVydHlJbmZvOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeENT
UzoKICAgICAgICAgaSArPSAzOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFByb3BlcnR5TmFt
ZVByZWZpeFBpeGVsOgogICAgICAgICBpICs9IDU7Ci0gICAgICAgIGlmIChoYWRQaXhlbE9yUG9z
UHJlZml4KQotICAgICAgICAgICAgKmhhZFBpeGVsT3JQb3NQcmVmaXggPSB0cnVlOworICAgICAg
ICBoYWRQaXhlbE9yUG9zUHJlZml4ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQ
cm9wZXJ0eU5hbWVQcmVmaXhQb3M6CiAgICAgICAgIGkgKz0gMzsKLSAgICAgICAgaWYgKGhhZFBp
eGVsT3JQb3NQcmVmaXgpCi0gICAgICAgICAgICAqaGFkUGl4ZWxPclBvc1ByZWZpeCA9IHRydWU7
CisgICAgICAgIGhhZFBpeGVsT3JQb3NQcmVmaXggPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeEFwcGxlOgogICAgIGNhc2UgUHJvcGVydHlOYW1lUHJl
Zml4S0hUTUw6CkBAIC0yMjAsMTcgKzIzMSwxNyBAQCBzdGF0aWMgaW50IGNzc1Byb3BlcnR5SURG
b3JKU0NTU1Byb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvbwog
ICAgIHNpemVfdCBidWZmZXJTaXplTGVmdCA9IHN0cmluZ0VuZCAtIGJ1ZmZlclB0cjsKICAgICBz
aXplX3QgcHJvcGVydHlTaXplTGVmdCA9IGxlbmd0aCAtIGk7CiAgICAgaWYgKHByb3BlcnR5U2l6
ZUxlZnQgPiBidWZmZXJTaXplTGVmdCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBwcm9wZXJ0eUluZm87CiAKICAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAg
IFVDaGFyIGMgPSAoKnByb3BlcnR5TmFtZVN0cmluZylbaV07CiAgICAgICAgIGlmICghYyB8fCBj
ID49IDB4N0YpCi0gICAgICAgICAgICByZXR1cm4gMDsgLy8gaWxsZWdhbCBjaGFyYWN0ZXIKKyAg
ICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87IC8vIGlsbGVnYWwgY2hhcmFjdGVyCiAgICAg
ICAgIGlmIChpc0FTQ0lJVXBwZXIoYykpIHsKICAgICAgICAgICAgIHNpemVfdCBidWZmZXJTaXpl
TGVmdCA9IHN0cmluZ0VuZCAtIGJ1ZmZlclB0cjsKICAgICAgICAgICAgIHNpemVfdCBwcm9wZXJ0
eVNpemVMZWZ0ID0gbGVuZ3RoIC0gaSArIDE7CiAgICAgICAgICAgICBpZiAocHJvcGVydHlTaXpl
TGVmdCA+IGJ1ZmZlclNpemVMZWZ0KQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87CiAgICAgICAgICAgICAqYnVmZmVyUHRyKysg
PSAnLSc7CiAgICAgICAgICAgICAqYnVmZmVyUHRyKysgPSB0b0FTQ0lJTG93ZXIoYyk7CiAgICAg
ICAgIH0gZWxzZQpAQCAtMjQ2LDEyICsyNTcsMTkgQEAgc3RhdGljIGludCBjc3NQcm9wZXJ0eUlE
Rm9ySlNDU1NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib28K
ICNlbmRpZgogCiAgICAgY29uc3QgUHJvcGVydHkqIGhhc2hUYWJsZUVudHJ5ID0gZmluZFByb3Bl
cnR5KG5hbWUsIG91dHB1dExlbmd0aCk7Ci0gICAgcmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gaGFz
aFRhYmxlRW50cnktPmlkIDogMDsKKyAgICBpbnQgcHJvcGVydHlJRCA9IGhhc2hUYWJsZUVudHJ5
ID8gaGFzaFRhYmxlRW50cnktPmlkIDogMDsKKyAgICBpZiAocHJvcGVydHlJRCkgeworICAgICAg
ICBwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhhZFBpeGVsT3JQb3NQcmVmaXg7
CisgICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gcHJvcGVydHlJRDsKKyAgICAgICAg
cHJvcGVydHlJbmZvQ2FjaGUuYWRkKHN0cmluZ0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOworICAg
IH0KKyAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQogCiBzdGF0aWMgYm9vbCBpc0NTU1Byb3Bl
cnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eUlkZW50aWZpZXIpCiB7Ci0gICAgcmV0
dXJuIGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIp
OworICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9ySlND
U1NQcm9wZXJ0eU5hbWUocHJvcGVydHlJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcHJvcGVydHlJ
bmZvLnByb3BlcnR5SUQ7CiB9CiAKIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpjYW5HZXRJ
dGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKQEAgLTI2OCwzMiArMjg2LDMwIEBAIEpTVmFsdWUgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgY29uCiAgICAgLy8gcG9zVG9wIHJldHVybnMgIkNTUyB0b3AiIGFzIG51bWJlciB2YWx1
ZSBpbiB1bml0IHBpeGVscyBfaWZfIGl0cyBhCiAgICAgLy8gcG9zaXRpb25lZCBlbGVtZW50LiBp
ZiBpdCBpcyBub3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQsIHJldHVybiAwCiAgICAgLy8gZnJvbSBN
U0lFIGRvY3VtZW50YXRpb24gRklYTUU6IElNUExFTUVOVCBUSEFUIChEaXJrKQotICAgIGJvb2wg
cGl4ZWxPclBvczsKLSAgICBpbnQgY3NzUHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SURGb3JKU0NT
U1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUsICZwaXhlbE9yUG9zKTsKLSAgICBSZWZQdHI8Q1NT
VmFsdWU+IHYgPSB0aGlzT2JqLT5pbXBsKCktPmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChz
dGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihjc3NQcm9wZXJ0eUlEKSk7CisgICAgQ1NTUHJvcGVy
dHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShw
cm9wZXJ0eU5hbWUpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPmltcGwoKS0+
Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHBy
b3BlcnR5SW5mby5wcm9wZXJ0eUlEKSk7CiAgICAgaWYgKHYpIHsKLSAgICAgICAgaWYgKHBpeGVs
T3JQb3MgJiYgdi0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBpZiAocHJvcGVydHlJbmZv
LmhhZFBpeGVsT3JQb3NQcmVmaXggJiYgdi0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19wb2ludGVyX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHYpLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKICAgICAgICAg
cmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHYtPmNzc1RleHQoKSk7CiAgICAgfQogCiAgICAg
Ly8gSWYgdGhlIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IChzdWNoIGFzICJwYWRk
aW5nIiksIAogICAgIC8vIGl0IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5
VmFsdWUuCi0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGNzc1Byb3BlcnR5
SUQpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SW5m
by5wcm9wZXJ0eUlEKSkpOwogfQogCiBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7Ci0gICAgYm9vbCBwaXhlbE9yUG9zOwot
ICAgIGludCBjc3NQcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1l
KHByb3BlcnR5TmFtZSwgJnBpeGVsT3JQb3MpOwotICAgIGlmICghY3NzUHJvcGVydHlJRCkKKyAg
ICBDU1NQcm9wZXJ0eUluZm8gcHJvcGVydHlJbmZvID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJv
cGVydHlOYW1lKHByb3BlcnR5TmFtZSk7CisgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJ
RCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU3RyaW5nIHByb3BWYWx1ZSA9IHZhbHVl
VG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKTsKLSAgICBpZiAocGl4ZWxPclBvcykK
KyAgICBpZiAocHJvcGVydHlJbmZvLmhhZFBpeGVsT3JQb3NQcmVmaXgpCiAgICAgICAgIHByb3BW
YWx1ZSArPSAicHgiOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS0+c2V0
UHJvcGVydHlJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihjc3NQcm9wZXJ0eUlE
KSwgcHJvcFZhbHVlLCBmYWxzZSwgZWMpOworICAgIGltcGwoKS0+c2V0UHJvcGVydHlJbnRlcm5h
bChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCksIHBy
b3BWYWx1ZSwgZmFsc2UsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAg
IHJldHVybiB0cnVlOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>