<?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>67096</bug_id>
          
          <creation_ts>2011-08-28 19:26:07 -0700</creation_ts>
          <short_desc>Make sure accesskey works for elements in shadow DOM</short_desc>
          <delta_ts>2011-09-08 11:14:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>66669</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>sam</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>458041</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-28 19:26:07 -0700</bug_when>
    <thetext>We have to define the behavior in the case that an element in shadow DOM has a &apos;accesskey&apos; attribute.

I guess there are some cases we have to consider. I&apos;ll post LayoutTests for each later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458058</commentid>
    <comment_count>1</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-28 21:25:08 -0700</bug_when>
    <thetext>At first, let me post a question. I&apos;d like to collect opinions.
Suppose the following dom tree, including one shadow host.

&lt;html&gt;
  &lt;body&gt;
    &lt;input id=&quot;inputA&quot; /&gt;
    &lt;shadow-host&gt;
      -- &lt;shadow-root&gt;
            &lt;input id=&quot;inputB&quot; accesskey=&quot;g&quot; /&gt;

When &apos;inputA&apos; is focused and a user presses &apos;g&apos; key with proper modifiers, should we focus on &apos;inputB&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458074</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-28 23:08:33 -0700</bug_when>
    <thetext>By the nature of shadow DOM, it seems that accesskey should be ignored in it, shouldn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458098</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-29 00:21:15 -0700</bug_when>
    <thetext>Hi Alexey,
Thank you for the comment.

(In reply to comment #2)
&gt; By the nature of shadow DOM, it seems that accesskey should be ignored in it, shouldn&apos;t it?

I agree. Such internal accesskeys should be hidden.

What about the reverse case?
Suppose the following dom tree. When &apos;inputB&apos; is focused and a user presses &apos;f&apos; key with proper modifier keys, should we focus on &apos;inputA&apos;? In this case, we should support accesskey, looking up the TreeScope, shoudn&apos;t we?

&lt;html&gt;
  &lt;body&gt;
    &lt;input id=&quot;inputA&quot; accesskey=&quot;f&quot; /&gt;
    &lt;shadow-host&gt;
      -- &lt;shadow-root&gt;
            &lt;input id=&quot;inputB&quot; accesskey=&quot;g&quot; /&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458107</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-29 00:41:17 -0700</bug_when>
    <thetext>The reverse seems certain to me, yes. Doesn&apos;t it work now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458110</commentid>
    <comment_count>5</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-29 00:46:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; The reverse seems certain to me, yes. Doesn&apos;t it work now?

Yeah, I agree again. I&apos;m now writing LayoutTest to make sure that. Let me update this bugzilla later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458123</commentid>
    <comment_count>6</comment_count>
      <attachid>105474</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-29 01:25:39 -0700</bug_when>
    <thetext>Created attachment 105474
Add minimum tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458124</commentid>
    <comment_count>7</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-29 01:29:36 -0700</bug_when>
    <thetext>I&apos;ve posted a LayoutTest.
It seems that the current implementation doesn&apos;t ignore accesskey in shadow DOM.

I think this should be fixed. Let me continue investigations further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458126</commentid>
    <comment_count>8</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-29 01:39:05 -0700</bug_when>
    <thetext>I&apos;ve found this change.
https://trac.webkit.org/changeset/85680

This change traverses into shadow trees when building the access key map. So accesskey in shadow trees isn&apos;t ignored now.

I think each access key map should be stored in each TreeScope, not in Document.
Any opinions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458725</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-29 23:20:08 -0700</bug_when>
    <thetext>&gt; I&apos;ve found this change.
&gt; https://trac.webkit.org/changeset/85680

I think that the change was wrong. Shadow DOM is about reusable components - but how can you put two components with accesskey on a single page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458900</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-30 07:53:59 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; I&apos;ve found this change.
&gt; &gt; https://trac.webkit.org/changeset/85680
&gt; 
&gt; I think that the change was wrong. Shadow DOM is about reusable components - but how can you put two components with accesskey on a single page?

I agree.  Hayato-san,  I think your notion of &quot;propagates in, but not out&quot; is the right thing to do. Also, this needs to be spec&apos;d properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458908</commentid>
    <comment_count>11</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-30 08:08:59 -0700</bug_when>
    <thetext>Why shouldn’t accesskey propagate *in* to shadow DOM?

Yes, two inputs should not have the same access key on a given page. That is a separate issue that exists regardless of components or not.

My $0.0.2: Someone building a component should be able to set up key shortcuts to controls in their component. Why not let accesskey propagate into shadow DOM? At worst, if there are multiple instances of the component or if the containing page uses the same accesskey, then the accesskey will not work. But this seems better than what is proposed here, which ensures that accesskey will *never* work in a component.

What about this shadow DOM:

&lt;html&gt;
  &lt;body&gt;
    &lt;input id=&quot;inputA&quot; /&gt;
    &lt;shadow-host&gt;
      -- &lt;shadow-root&gt;
            &lt;input id=&quot;inputB&quot; /&gt;
            &lt;input id=&quot;inputC&quot;  accesskey=&quot;g&quot; /&gt;

If inputB has the focus, does modifier-g focus inputC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459465</commentid>
    <comment_count>12</comment_count>
      <attachid>105745</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-30 23:39:39 -0700</bug_when>
    <thetext>Created attachment 105745
WIP, scoped accesskey map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459466</commentid>
    <comment_count>13</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-30 23:42:54 -0700</bug_when>
    <thetext>Thank you for the comments, guys. 

Okay. I&apos;ve just implemented the idea of &apos;scoped&apos; accesskey as an experiment.
If a component doesn&apos;t have elements with the accesskey, the search continues to its parent component until an element with the accesskey is found
 
See the layouttest in the patch for the details.

One disadvantage of this approach is that we cannot rescue the following case as Dominic worried about:

- Dom tree is:
&lt;html&gt;
  &lt;body&gt;
    &lt;input id=&quot;inputA&quot;/&gt;
    &lt;shadow-host&gt;
      -- &lt;shadow-root&gt;
            &lt;input id=&quot;inputB&quot; accesskey=&quot;g&quot; /&gt;

- InputA has the focus and modifier-g is pressed.

In this case, inputB won&apos;t get focused in my experimental implementation. I&apos;d like to loosen up this restriction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459479</commentid>
    <comment_count>14</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-31 00:09:04 -0700</bug_when>
    <thetext>Let me try to &apos;propagate-in&apos; somehow, reusing scoped accesskey concept.

(In reply to comment #13)
&gt; Thank you for the comments, guys. 
&gt; 
&gt; Okay. I&apos;ve just implemented the idea of &apos;scoped&apos; accesskey as an experiment.
&gt; If a component doesn&apos;t have elements with the accesskey, the search continues to its parent component until an element with the accesskey is found
&gt; 
&gt; See the layouttest in the patch for the details.
&gt; 
&gt; One disadvantage of this approach is that we cannot rescue the following case as Dominic worried about:
&gt; 
&gt; - Dom tree is:
&gt; &lt;html&gt;
&gt;   &lt;body&gt;
&gt;     &lt;input id=&quot;inputA&quot;/&gt;
&gt;     &lt;shadow-host&gt;
&gt;       -- &lt;shadow-root&gt;
&gt;             &lt;input id=&quot;inputB&quot; accesskey=&quot;g&quot; /&gt;
&gt; 
&gt; - InputA has the focus and modifier-g is pressed.
&gt; 
&gt; In this case, inputB won&apos;t get focused in my experimental implementation. I&apos;d like to loosen up this restriction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459530</commentid>
    <comment_count>15</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-31 02:03:22 -0700</bug_when>
    <thetext>I am now thinking the following simple model.

1. Local elements in the TreeScope of &apos;focused&apos; component should be honored at first priority, which means a access key could not be overridden by other component as long as a user stay within the component.
2. If there is no such a local element, simply return the &apos;first&apos; (or last?) element with the accesskey in the overall &apos;Document&apos;, as current implementation does so.

Any opinions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459657</commentid>
    <comment_count>16</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-31 09:08:35 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; I am now thinking the following simple model.
&gt; 
&gt; 1. Local elements in the TreeScope of &apos;focused&apos; component should be honored at first priority, which means a access key could not be overridden by other component as long as a user stay within the component.
&gt; 2. If there is no such a local element, simply return the &apos;first&apos; (or last?) element with the accesskey in the overall &apos;Document&apos;, as current implementation does so.

Doesn’t it seem odd that the same access key does something different depending on where you are in the document?

Could we do something simpler that operates over all of the accesskeys in the flattened DOM? eg markup with children and markup with shadow DOM that results in the same presentation should have the same accesskey behavior?

I just played around with accesskey in Firefox Nightly and when multiple buttons have the same accesskey, it just focuses the first one but doesn’t activate it. If you press the access key again, the focus traverses elements with that accesskey. Whether WebKit should do this or not is a separate issue, but I think just making shadow DOM with access keys work like ordinary DOM with access keys, and then solving the duplicate accesskey problem separately, would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460328</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-09-01 01:48:07 -0700</bug_when>
    <thetext>We can think how shadow DOM works with flattened DOM in mind,
On the other hand, we can think it as if shadow DOM were iframe.
In flattened-DOM viewpoint, @accesskey inside DOM should be exposed.
In iframe viewpoint, @accesskey should be hidden inside the tree.

What does it happen if CSS contains a selector which matches elements with @accesskey?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461046</commentid>
    <comment_count>18</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-09-01 22:16:16 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; I am now thinking the following simple model.
&gt; &gt; 
&gt; &gt; 1. Local elements in the TreeScope of &apos;focused&apos; component should be honored at first priority, which means a access key could not be overridden by other component as long as a user stay within the component.
&gt; &gt; 2. If there is no such a local element, simply return the &apos;first&apos; (or last?) element with the accesskey in the overall &apos;Document&apos;, as current implementation does so.
&gt; 
&gt; Doesn’t it seem odd that the same access key does something different depending on where you are in the document?
&gt; 


&gt; Could we do something simpler that operates over all of the accesskeys in the flattened DOM? eg markup with children and markup with shadow DOM that results in the same presentation should have the same accesskey behavior?

I think that&apos;s exactly same behavior as the current implementations does. If that&apos;s a desired behavior, there is no much things we have to do with accesskeys in Shadow DOM. That&apos;s already implemented.

&gt; 
&gt; I just played around with accesskey in Firefox Nightly and when multiple buttons have the same accesskey, it just focuses the first one but doesn’t activate it. If you press the access key again, the focus traverses elements with that accesskey. Whether WebKit should do this or not is a separate issue, but I think just making shadow DOM with access keys work like ordinary DOM with access keys, and then solving the duplicate accesskey problem separately, would be better.

Yeah, that&apos;s totally different issue. I am not sure whether we should do the same thing in WebKit. We need to investigate other browsers&apos; behavior as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461179</commentid>
    <comment_count>19</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-09-02 06:02:10 -0700</bug_when>
    <thetext>FWIW, here is what Firefox Nightly does with accesskeys in frames:

- Activate unique access key, focus outside frame =&gt; run command **even if button is inside the iframe**
- Non-unique access key, focus outside frame =&gt; tab between elements with that access key in outer doc
- Non-unique access key, but unique per frame, focus outside frame =&gt; run command in outer doc
- Non-unique access key, focus inside frame =&gt; tab between elements with that access key in frame
- Non-unique access key, but unique per frame, focus inside frame =&gt; run command in frame

Chrome Canary:

- Activate unique access key, focus outside frame =&gt; run command **if in outside frame** (otherwise do nothing)
- Non-unique access key, focus outside frame =&gt; run last matching command in outer doc
- Non-unique access key, but unique per frame, focus outside frame =&gt; run command in outer doc
- Non-unique access key, focus inside frame =&gt; run last matching command in frame
- Non-unique access key, but unique per frame, focus inside frame =&gt; run command in frame

In general WebKit’s handling of accesskey seems less sophisticated, but maybe more consistent, than Firefox’s. Not arguing that we should fix or change WebKit’s accesskey behavior in this bug though. Just pointing out that things may work differently in future, so we might need to be prepared to revisit this.

So if we want to use iframes as the model, then this change sounds like it makes shadow DOM match iframes. It might be nice if there was a test that set up shadow DOM and an analogous situation in iframes (same arrangement, different accesskeys) and verified that their behavior matched. That way if someone improves accesskey for iframes we can catch it and update shadow DOM handling too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462323</commentid>
    <comment_count>20</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-09-05 19:09:32 -0700</bug_when>
    <thetext>Thank you for the further investigations.

(In reply to comment #19)
&gt; FWIW, here is what Firefox Nightly does with accesskeys in frames:
&gt; 
&gt; - Activate unique access key, focus outside frame =&gt; run command **even if button is inside the iframe**
&gt; - Non-unique access key, focus outside frame =&gt; tab between elements with that access key in outer doc
&gt; - Non-unique access key, but unique per frame, focus outside frame =&gt; run command in outer doc
&gt; - Non-unique access key, focus inside frame =&gt; tab between elements with that access key in frame
&gt; - Non-unique access key, but unique per frame, focus inside frame =&gt; run command in frame
&gt; 
&gt; Chrome Canary:
&gt; 
&gt; - Activate unique access key, focus outside frame =&gt; run command **if in outside frame** (otherwise do nothing)
&gt; - Non-unique access key, focus outside frame =&gt; run last matching command in outer doc
&gt; - Non-unique access key, but unique per frame, focus outside frame =&gt; run command in outer doc
&gt; - Non-unique access key, focus inside frame =&gt; run last matching command in frame
&gt; - Non-unique access key, but unique per frame, focus inside frame =&gt; run command in frame
&gt; 
&gt; In general WebKit’s handling of accesskey seems less sophisticated, but maybe more consistent, than Firefox’s. Not arguing that we should fix or change WebKit’s accesskey behavior in this bug though. Just pointing out that things may work differently in future, so we might need to be prepared to revisit this.
&gt; 
&gt; So if we want to use iframes as the model, then this change sounds like it makes shadow DOM match iframes. It might be nice if there was a test that set up shadow DOM and an analogous situation in iframes (same arrangement, different accesskeys) and verified that their behavior matched. That way if someone improves accesskey for iframes we can catch it and update shadow DOM handling too.

I am not 100% sure that we should use iframe as the model. We should be flexible as per each feature.
As for accesskey, I don&apos;t have a strong opinion yet, but it would be good to have a LayoutTest to ensure that behavior matches to iframe.
Let me add tests for accesskey for iframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462498</commentid>
    <comment_count>21</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-09-06 07:09:09 -0700</bug_when>
    <thetext>I am adding a LayoutTest for accesskey in regard to iframes in:
https://bugs.webkit.org/show_bug.cgi?id=67642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463231</commentid>
    <comment_count>22</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-09-07 01:27:15 -0700</bug_when>
    <thetext>Let me summarize how WebKit handles accesskey at this point:

- There is one accesskey map per each Document (iframe).  You can think Accesskey as a HashMap&lt;Key, Element&gt;.
- Only accesskey map in a focused frame is used to look up the accesskey. Aaccesskey maps in other iframes are not used at all.
- If there is a duplication of the same accesskey, the latter (in Document order) wins.

 Therefore, when one iframe has some shadow DOM components which define accesskeys inside of them, they share one access key map. Simply the latter wins in case of duplication. There is no mechanism to hide. They are simply &apos;flattened&apos;.

I thought we had to hide accesskeys inside of shadow DOM from an outer Document, but now I am not sure whether this is a good idea or not.

I&apos;d like to mark this bug as &apos;WONT FIX&apos;, only adding a layout test to verify the current behavior.
If we encounter the significant use case that must be handled, this bug entry should be opened again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463258</commentid>
    <comment_count>23</comment_count>
      <attachid>106562</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-09-07 02:56:12 -0700</bug_when>
    <thetext>Created attachment 106562
only layouttest. No functional change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463259</commentid>
    <comment_count>24</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-09-07 02:57:50 -0700</bug_when>
    <thetext>I&apos;ve uploaded a patch which contains only a LayoutTest to verify the current implementation.
So instead of marking bug as &apos;WONTFIX&apos;, I&apos;ll use this bug for this LayoutTest.

(In reply to comment #23)
&gt; Created an attachment (id=106562) [details]
&gt; only layouttest. No functional change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464183</commentid>
    <comment_count>25</comment_count>
      <attachid>106562</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-08 11:14:06 -0700</bug_when>
    <thetext>Comment on attachment 106562
only layouttest. No functional change

Clearing flags on attachment: 106562

Committed r94768: &lt;http://trac.webkit.org/changeset/94768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464184</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-08 11:14:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105474</attachid>
            <date>2011-08-29 01:25:39 -0700</date>
            <delta_ts>2011-08-30 23:39:33 -0700</delta_ts>
            <desc>Add minimum tests.</desc>
            <filename>bug-67096-20110829172537.patch</filename>
            <type>text/plain</type>
            <size>4583</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM4NjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YTFiMzc3OWJmZWMxYjVjNjgzOGUw
ZTQzMjhiMDBmN2YzYzg0MzE5Li5mNjQ2MGIxMTgwYWRmMjU2MTE2ZTMwM2RhNzFjZGM0YmU3YTZj
ZDY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMjkgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgYWNjZXNza2V5LCBjcm9z
c2luZyBzaGFkb3cgRE9NIGJvdW5kYXJpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NzA5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2FjY2Vzcy1rZXktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvYWNjZXNzLWtleS5odG1sOiBB
ZGRlZC4KKwogMjAxMS0wOC0yNiAgSmFtZXMgS296aWFuc2tpICA8a296QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTM4NTMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYWNjZXNzLWtleS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYWNjZXNzLWtleS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2U5YjJhMTc1OTFmNTFkZjgwNjU1OTBmNzg5MDM0YzNhMzhjMzUzNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9hY2Nlc3Mta2V5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyB0byBlbnN1cmUgdGhhdCBhY2Nlc3NrZXkgd29ya3Mg
Y3Jvc3Npbmcgc2hhZG93IERPTSBib3VuZGFyeS4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BBU1MgZGlzcGF0Y2hlZEV2ZW50KCJm
b2N1cyIpIGlzIFsiaW5wdXRDIl0KK0ZBSUwgZGlzcGF0Y2hlZEV2ZW50KCJmb2N1cyIpIHNob3Vs
ZCBiZSAuIFdhcyBpbnB1dEUuCitQQVNTIGRpc3BhdGNoZWRFdmVudCgiZm9jdXMiKSBpcyBbImlu
cHV0QyJdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjY2Vzcy1rZXkuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9hY2Nlc3Mta2V5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDgxYjAxODIwNDVlNTQwMDBiYzZiNmYzMzVjN2I2OTc5NjdiNDBlZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9hY2Nlc3Mta2V5Lmh0bWwKQEAgLTAs
MCArMSwxMDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9jcmVhdGUtZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0byBlbnN1
cmUgdGhhdCBhY2Nlc3NrZXkgd29ya3MgY3Jvc3Npbmcgc2hhZG93IERPTSBib3VuZGFyeS4gQ2Fu
IG9ubHkgcnVuIHdpdGhpbiBEUlQuIik7CisKK2Z1bmN0aW9uIHByZXNzQWNjZXNzS2V5KGtleSkK
K3sKKyAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5zZWFyY2goL1xiTWFjIE9TIFhcYi8pICE9
IC0xKQorICAgICAgICBtb2RpZmllcnMgPSBbImN0cmxLZXkiLCAiYWx0S2V5Il07CisgICAgZWxz
ZQorICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJdOworICAgIGV2ZW50U2VuZGVyLmtleURv
d24oa2V5LCBtb2RpZmllcnMpOworfQorCit2YXIgZXZlbnRSZWNvcmRzID0ge307CisKK2Z1bmN0
aW9uIGNsZWFyRXZlbnRSZWNvcmRzKCkKK3sKKyAgICBldmVudFJlY29yZHMgPSB7fTsKK30KKwor
ZnVuY3Rpb24gZGlzcGF0Y2hlZEV2ZW50KGV2ZW50VHlwZSkKK3sKKyAgICB2YXIgZXZlbnRzID0g
ZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV07CisgICAgaWYgKCFldmVudHMpCisgICAgICAgIHJldHVy
biBbXTsKKyAgICByZXR1cm4gZXZlbnRzOworfQorCitmdW5jdGlvbiByZWNvcmRFdmVudChldmVu
dCkKK3sKKyAgICB2YXIgZXZlbnRUeXBlID0gZXZlbnQudHlwZQorICAgIGlmICghZXZlbnRSZWNv
cmRzW2V2ZW50VHlwZV0pIHsKKyAgICAgICAgZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV0gPSBbXQor
ICAgIH0KKyAgICBldmVudFJlY29yZHNbZXZlbnRUeXBlXS5wdXNoKGV2ZW50LnRhcmdldC5pZCk7
Cit9CisKK2Z1bmN0aW9uIGdldEVsZW1lbnRJblNoYWRvdyhwYXRoKQoreworICAgIHZhciBpZHMg
PSBwYXRoLnNwbGl0KCcvJyk7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChpZHNbMF0pOworICAgIGZvciAodmFyIGkgPSAxOyBlbGVtZW50ICE9IG51bGwgJiYgaSA8
IGlkcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGludGVybmFscy5z
aGFkb3dSb290KGVsZW1lbnQpOworICAgICAgICBlbGVtZW50ID0gaW50ZXJuYWxzLmdldEVsZW1l
bnRCeUlkSW5TaGFkb3dSb290KHNoYWRvd1Jvb3QsIGlkc1tpXSk7CisgICAgfQorICAgIHJldHVy
biBlbGVtZW50OworfQorCitmdW5jdGlvbiBwcmVwYXJlRG9tVHJlZShwYXJlbnQpCit7CisgICAg
cGFyZW50LmFwcGVuZENoaWxkKAorICAgICAgICBjcmVhdGVEb20oJ2RpdicsIHsnaWQnOiAnZGl2
QSd9LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXRC
J30pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXRD
JywgJ2FjY2Vzc2tleSc6ICdjJ30pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93KCdk
aXYnLCB7J2lkJzogJ3NoYWRvd0QnLCAndGFiaW5kZXgnOiAwfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVEb20oJ2lucHV0JywgeydpZCc6ICdpbnB1dEUnLCAnYWNjZXNz
a2V5JzogJ2UnfSkpKSk7CisKKyAgICB2YXIgaWRzID0gWydpbnB1dEInLCAnaW5wdXRDJywgJ3No
YWRvd0QvaW5wdXRFJ107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBnZXRFbGVtZW50SW5TaGFkb3coaWRzW2ldKTsKKyAg
ICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHJlY29yZEV2ZW50LCBmYWxz
ZSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKKyAgICBwcmVwYXJlRG9tVHJlZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eCcpKTsKKworICAgIC8vIEFjY2Nlc3NrZXkgc2hvdWxkIHdvcmsgbm9ybWFsbHkuCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0QicpLmZvY3VzKCk7CisgICAgY2xlYXJFdmVudFJl
Y29yZHMoKTsKKyAgICBwcmVzc0FjY2Vzc0tleSgnYycpOworICAgIHNob3VsZEJlKCdkaXNwYXRj
aGVkRXZlbnQoImZvY3VzIiknLCAnWyJpbnB1dEMiXScpOworCisgICAgLy8gQWNjY2Vzc2tleSBp
biB0aGUgc2hhZG93IERPTSBzaG91bGQgYmUgaWdub3JlZC4KKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaW5wdXRCJykuZm9jdXMoKTsKKyAgICBjbGVhckV2ZW50UmVjb3JkcygpOworICAg
IHByZXNzQWNjZXNzS2V5KCdlJyk7CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgiZm9j
dXMiKScsICdbXScpOworCisgICAgLy8gQWNjZXNza2V5IGluIG91dGVyIHNjb3BlcyBzaG91bCBi
ZSBob25vcmVkLgorICAgIGdldEVsZW1lbnRJblNoYWRvdygnc2hhZG93RC9pbnB1dEUnKS5mb2N1
cygpOworICAgIGNsZWFyRXZlbnRSZWNvcmRzKCk7CisgICAgcHJlc3NBY2Nlc3NLZXkoJ2MnKTsK
KyAgICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJmb2N1cyIpJywgJ1siaW5wdXRDIl0nKTsK
K30KKwordGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105745</attachid>
            <date>2011-08-30 23:39:39 -0700</date>
            <delta_ts>2011-09-07 02:56:05 -0700</delta_ts>
            <desc>WIP, scoped accesskey map.</desc>
            <filename>bug-67096-20110831153938.patch</filename>
            <type>text/plain</type>
            <size>14569</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM5NTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NzU5NjljY2NiNDY1MTM4NmZiMjkz
MTk2NmQyYzE3YjQxYTJjNGI3Li44MjJkMTNhNzM1ZjI5YTBjNzZmNDA5YjMxODIxYWU5MmFiNDA0
NTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMzAgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFuIGFjY2Vzc2tleSBtYXAgaXMgbm93IHNjb3Bl
ZCBieSBjb21wb25lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjcwOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNb3ZlIGFjY2Vzc2tleSBtYXAgZnJvbSBEb2N1bWVudCB0byBUcmVlU2NvcGUgc28g
dGhhdCBlYWNoCisgICAgICAgIGNvbXBvbmVudCBoYXMgaXRzIG93biBhY2Nlc3NrZXkgbWFwLiBB
IHNlYXJjaCBmb3IgYWNjZXNza2V5IG5vdworICAgICAgICBzdGFydHMgaW4gYSBjb21wb25lbnQg
d2hpY2ggaGFzIGEgZm9jdXNlZCBlbGVtZW50LiAgQ29tcG9uZW50cworICAgICAgICBkZWxlZ2F0
ZSB0aGUgc2VhcmNoIHRvIGEgcGFyZW50IGNvbXBvbmVudCBpZiB0aGV5IGRvbid0IGhhdmUgYQor
ICAgICAgICBlbGVtZW50IHdpdGggdGhlIGFjY2Vzc2tleS4KKworICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9hY2Nlc3Mta2V5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L2FjY2Vzcy1rZXkuaHRtbDogQWRkZWQuCisKIDIwMTEtMDgtMjkgIFBhdmVsIFBv
ZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
bWFyayBldmVudC1jb25zdHJ1Y3RvcnMuaHRtbCBhcyBmYWlsaW5nIGluIGNocm9taXVtLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjY2Vzcy1rZXktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjY2Vzcy1rZXktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY2NGFkZTYwYTE1MzE2ODlkY2Q5NTdkMjQ3MjlkYjBhMjMyMzBkYjcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYWNjZXNzLWtleS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdG8gZW5zdXJlIHRoYXQgYWNjZXNz
a2V5IHdvcmtzIGluIHJlZ2FyZCB0byBzaGFkb3cgRE9NIGJvdW5kYXJ5LiBDYW4gb25seSBydW4g
d2l0aGluIERSVC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBkaXNw
YXRjaGVkRXZlbnQoImZvY3VzIikgaXMgWyJpbnB1dEMiXQorUEFTUyBkaXNwYXRjaGVkRXZlbnQo
ImZvY3VzIikgaXMgW10KK1BBU1MgZGlzcGF0Y2hlZEV2ZW50KCJmb2N1cyIpIGlzIFsiaW5wdXRI
Il0KK1BBU1MgZGlzcGF0Y2hlZEV2ZW50KCJmb2N1cyIpIGlzIFsiaW5wdXREIl0KK1BBU1MgZGlz
cGF0Y2hlZEV2ZW50KCJmb2N1cyIpIGlzIFsiaW5wdXREIl0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvYWNjZXNzLWtleS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2FjY2Vzcy1rZXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDgzZDJkYzZjMTAyZjc2MDYxMTU4NWVh
ZjdmNjNkODM4OGY3MDA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2FjY2Vzcy1rZXkuaHRtbApAQCAtMCwwICsxLDEyNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1kb20uanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIlRlc3RzIHRvIGVuc3VyZSB0aGF0IGFjY2Vzc2tleSB3b3JrcyBpbiBy
ZWdhcmQgdG8gc2hhZG93IERPTSBib3VuZGFyeS4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQuIik7
CisKK2Z1bmN0aW9uIHByZXNzQWNjZXNzS2V5KGtleSkKK3sKKyAgICBpZiAobmF2aWdhdG9yLnVz
ZXJBZ2VudC5zZWFyY2goL1xiTWFjIE9TIFhcYi8pICE9IC0xKQorICAgICAgICBtb2RpZmllcnMg
PSBbImN0cmxLZXkiLCAiYWx0S2V5Il07CisgICAgZWxzZQorICAgICAgICBtb2RpZmllcnMgPSBb
ImFsdEtleSJdOworICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBtb2RpZmllcnMpOworfQor
Cit2YXIgZXZlbnRSZWNvcmRzID0ge307CisKK2Z1bmN0aW9uIGNsZWFyRXZlbnRSZWNvcmRzKCkK
K3sKKyAgICBldmVudFJlY29yZHMgPSB7fTsKK30KKworZnVuY3Rpb24gZGlzcGF0Y2hlZEV2ZW50
KGV2ZW50VHlwZSkKK3sKKyAgICB2YXIgZXZlbnRzID0gZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV07
CisgICAgaWYgKCFldmVudHMpCisgICAgICAgIHJldHVybiBbXTsKKyAgICByZXR1cm4gZXZlbnRz
OworfQorCitmdW5jdGlvbiByZWNvcmRFdmVudChldmVudCkKK3sKKyAgICB2YXIgZXZlbnRUeXBl
ID0gZXZlbnQudHlwZQorICAgIGlmICghZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV0pIHsKKyAgICAg
ICAgZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV0gPSBbXQorICAgIH0KKyAgICBldmVudFJlY29yZHNb
ZXZlbnRUeXBlXS5wdXNoKGV2ZW50LnRhcmdldC5pZCk7Cit9CisKK2Z1bmN0aW9uIGdldEVsZW1l
bnRJblNoYWRvdyhwYXRoKQoreworICAgIHZhciBpZHMgPSBwYXRoLnNwbGl0KCcvJyk7CisgICAg
dmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZHNbMF0pOworICAgIGZvciAo
dmFyIGkgPSAxOyBlbGVtZW50ICE9IG51bGwgJiYgaSA8IGlkcy5sZW5ndGg7ICsraSkgeworICAg
ICAgICB2YXIgc2hhZG93Um9vdCA9IGludGVybmFscy5zaGFkb3dSb290KGVsZW1lbnQpOworICAg
ICAgICBlbGVtZW50ID0gaW50ZXJuYWxzLmdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KHNoYWRv
d1Jvb3QsIGlkc1tpXSk7CisgICAgfQorICAgIHJldHVybiBlbGVtZW50OworfQorCitmdW5jdGlv
biBwcmVwYXJlRG9tVHJlZShwYXJlbnQpCit7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKAorICAg
ICAgICBjcmVhdGVEb20oJ2RpdicsIHsnaWQnOiAnZGl2QSd9LAorICAgICAgICAgICAgICAgICAg
Y3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXRCJ30pLAorICAgICAgICAgICAgICAgICAg
Y3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXRDJywgJ2FjY2Vzc2tleSc6ICdhJ30pLAor
ICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXREJywgJ2Fj
Y2Vzc2tleSc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdpbnB1dCcsIHsn
aWQnOiAnaW5wdXRFJywgJ2FjY2Vzc2tleSc6ICdjJ30pLAorICAgICAgICAgICAgICAgICAgY3Jl
YXRlU2hhZG93KCdkaXYnLCB7J2lkJzogJ3NoYWRvd0YnLCAndGFiaW5kZXgnOiAwfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVEb20oJ2lucHV0JywgeydpZCc6ICdpbnB1
dEcnLCAnYWNjZXNza2V5JzogJ2EnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXRIJywgJ2FjY2Vzc2tleSc6ICdjJ30pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnaW5wdXQnLCB7J2lkJzog
J2lucHV0SScsICdhY2Nlc3NrZXknOiAnZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3coJ2RpdicsIHsnaWQnOiAnc2hhZG93SicsICd0YWJpbmRleCc6IDB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVEb20o
J2lucHV0JywgeydpZCc6ICdpbnB1dEsnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnaW5wdXQnLCB7J2lkJzogJ2lucHV0TCcsICdhY2Nl
c3NrZXknOiAnYSd9KSkpKSk7CisKKyAgICB2YXIgaWRzID0gWydpbnB1dEInLCAnaW5wdXRDJywg
J2lucHV0RCcsICdpbnB1dEUnLCAKKyAgICAgICAgICAgICAgICdzaGFkb3dGL2lucHV0RycsICdz
aGFkb3dGL2lucHV0SCcsICdzaGFkb3dGL2lucHV0SScsCisgICAgICAgICAgICAgICAnc2hhZG93
Ri9zaGFkb3dKL2lucHV0SycsICdzaGFkb3dGL3NoYWRvd0ovaW5wdXRMJ107CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBn
ZXRFbGVtZW50SW5TaGFkb3coaWRzW2ldKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCdmb2N1cycsIHJlY29yZEV2ZW50LCBmYWxzZSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBwcmVwYXJlRG9tVHJlZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpKTsKKworICAgIC8vIE1ha2VzIHN1cmUg
dGhhdCBhbiBhY2NjZXNza2V5IHNob3VsZCBub3QgYmUgb3ZlcnJpZGRlbiBieSBvdGhlciBjb21w
b25lbnRzLgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dEInKS5mb2N1cygpOwor
ICAgIGNsZWFyRXZlbnRSZWNvcmRzKCk7CisgICAgcHJlc3NBY2Nlc3NLZXkoJ2EnKTsKKyAgICBz
aG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJmb2N1cyIpJywgJ1siaW5wdXRDIl0nKTsKKworICAg
IC8vIEEgcGFyZW50IGNvbXBvbmVudCBzaG91bGQgaWdub3JlIGFjY2Nlc3NrZXlzIGRlZmluZWQg
aW4gYSBjaGlsZCBjb21wb25lbnQuCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0
QicpLmZvY3VzKCk7CisgICAgY2xlYXJFdmVudFJlY29yZHMoKTsKKyAgICBwcmVzc0FjY2Vzc0tl
eSgnZCcpOworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVkRXZlbnQoImZvY3VzIiknLCAnW10nKTsK
KworICAgIC8vIEFuIGFjY2Vzc2tleSBzaG91bGQgd29yayBldmVuIGluc2lkZSBvZiBjb21wb25l
bnRzLgorICAgIGdldEVsZW1lbnRJblNoYWRvdygnc2hhZG93Ri9pbnB1dEcnKS5mb2N1cygpOwor
ICAgIGNsZWFyRXZlbnRSZWNvcmRzKCk7CisgICAgcHJlc3NBY2Nlc3NLZXkoJ2MnKTsKKyAgICBz
aG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJmb2N1cyIpJywgJ1siaW5wdXRIIl0nKTsKKworICAg
IC8vIEEgY2hpbGQgY29tcG9uZW50IHNob3VsZCBsb29rIHVwIGFjY2Nlc3NrZXlzIGRlZmluZWQg
aW4gcGFyZW50IGNvbXBvbmVudHMsIHJlY3Vyc2l2ZWx5LCBpZiBjdXJyZW50IGNvbXBvbmVudCBk
b2Vzbid0IGhhdmUgYW4gZWxlbWVudCB3aXRoIHRoZSBhY2Nlc3NrZXkuCisgICAgZ2V0RWxlbWVu
dEluU2hhZG93KCdzaGFkb3dGL2lucHV0RycpLmZvY3VzKCk7CisgICAgY2xlYXJFdmVudFJlY29y
ZHMoKTsKKyAgICBwcmVzc0FjY2Vzc0tleSgnYicpOworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVk
RXZlbnQoImZvY3VzIiknLCAnWyJpbnB1dEQiXScpOworCisgICAgZ2V0RWxlbWVudEluU2hhZG93
KCdzaGFkb3dGL3NoYWRvd0ovaW5wdXRLJykuZm9jdXMoKTsKKyAgICBjbGVhckV2ZW50UmVjb3Jk
cygpOworICAgIHByZXNzQWNjZXNzS2V5KCdiJyk7CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRF
dmVudCgiZm9jdXMiKScsICdbImlucHV0RCJdJyk7Cit9CisKK3Rlc3QoKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmMjllYjM4MDdlNGMzMTRmMTFkYjc0YjBhMzM3MmVmMGUyMjk2YTRjLi4yNTQ0
MDVlYTZkMzM5NTljZjMwNTkxYTViNDMxYzUzMWE4ZTVhZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMTEtMDgtMzAgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEFuIGFjY2Vzc2tleSBtYXAgaXMgbm93IHNjb3BlZCBieSBjb21wb25lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcwOTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGFjY2Vz
c2tleSBtYXAgZnJvbSBEb2N1bWVudCB0byBUcmVlU2NvcGUgc28gdGhhdCBlYWNoCisgICAgICAg
IGNvbXBvbmVudCBoYXMgaXRzIG93biBhY2Nlc3NrZXkgbWFwLiBBIHNlYXJjaCBmb3IgYWNjZXNz
a2V5IG5vdworICAgICAgICBzdGFydHMgaW4gYSBjb21wb25lbnQgd2hpY2ggaGFzIGEgZm9jdXNl
ZCBlbGVtZW50LiAgQ29tcG9uZW50cworICAgICAgICBkZWxlZ2F0ZSB0aGUgc2VhcmNoIHRvIGEg
cGFyZW50IGNvbXBvbmVudCBpZiB0aGV5IGRvbid0IGhhdmUgYQorICAgICAgICBlbGVtZW50IHdp
dGggdGhlIGFjY2Vzc2tleS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvYWNjZXNz
LWtleS5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRGb3JtRWxlbWVudHMpOgorICAgICAgICAqIGRvbS9U
cmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpnZXRFbGVtZW50QnlBY2Nlc3NLZXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpidWlsZEFjY2Vzc0tleU1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmVlU2NvcGU6OmludmFsaWRhdGVBY2Nlc3NLZXlNYXApOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleSk6CisKIDIwMTEtMDgtMjkg
IE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBmYXN0L2Nh
bnZhcy9zaGFkb3ctb2Zmc2V0LSouaHRtbCBmYWlsIG9uIExlb3BhcmQvU25vdyBMZW9wYXJkIHdo
ZW4gcmVtb3ZpbmcgdGhlIHdvcmsgYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxNTBjMGZjZWM0ZDdiMTUyM2Y0YWVmZDdmYWY5
N2Y5ZjVjNWI5NzIzLi45N2FmYWJmYWU5NGM1OTdkOTJjOGY1MmU3MmM3NjFmZDFlZTQ2NmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQwMyw3ICs0MDMsNiBAQCBEb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBp
c0hUTUwpCiAjZW5kaWYKICAgICAsIG1fY3JlYXRlUmVuZGVyZXJzKHRydWUpCiAgICAgLCBtX2lu
UGFnZUNhY2hlKGZhbHNlKQotICAgICwgbV9hY2Nlc3NLZXlNYXBWYWxpZChmYWxzZSkKICAgICAs
IG1fdXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoZmFsc2UpCiAgICAgLCBtX2lzWEhU
TUwoaXNYSFRNTCkKICAgICAsIG1faXNIVE1MKGlzSFRNTCkKQEAgLTYxMiwzNiArNjExLDYgQEAg
RWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQp
IGNvbnN0CiAgICAgcmV0dXJuIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoaWQpOwogfQogCi1F
bGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5
KQotewotICAgIGlmIChrZXkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAo
IW1fYWNjZXNzS2V5TWFwVmFsaWQpIHsKLSAgICAgICAgYnVpbGRBY2Nlc3NLZXlNYXAodGhpcyk7
Ci0gICAgICAgIG1fYWNjZXNzS2V5TWFwVmFsaWQgPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4g
bV9lbGVtZW50c0J5QWNjZXNzS2V5LmdldChrZXkuaW1wbCgpKTsKLX0KLQotdm9pZCBEb2N1bWVu
dDo6YnVpbGRBY2Nlc3NLZXlNYXAoVHJlZVNjb3BlKiByb290KQotewotICAgICBmb3IgKE5vZGUq
IG4gPSByb290OyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShyb290KSkgewotICAgICAgICBp
ZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBF
bGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGFjY2Vzc0tleSA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShhY2Nlc3Nr
ZXlBdHRyKTsKLSAgICAgICAgaWYgKCFhY2Nlc3NLZXkuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9lbGVtZW50c0J5QWNjZXNzS2V5LnNldChhY2Nlc3NLZXkuaW1wbCgpLCBlbGVtZW50KTsKLSAg
ICAgICAgYnVpbGRBY2Nlc3NLZXlNYXAoZWxlbWVudC0+c2hhZG93Um9vdCgpKTsKLSAgICB9Ci19
Ci0KLXZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVBY2Nlc3NLZXlNYXAoKQotewotICAgIG1fYWNj
ZXNzS2V5TWFwVmFsaWQgPSBmYWxzZTsKLSAgICBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuY2xlYXIo
KTsKLX0KLQogTWVkaWFRdWVyeU1hdGNoZXIqIERvY3VtZW50OjptZWRpYVF1ZXJ5TWF0Y2hlcigp
CiB7CiAgICAgaWYgKCFtX21lZGlhUXVlcnlNYXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCAzZTg0NjEyNmVhN2MwNzUwZGFmODAzYmMyZjU1ZTNjNjRhM2I0NWU0Li41ZWRkNWYxMDRiMDE2
MjVhN2U1NjJjZWVkMDk1OGZhZGFjYmJiYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjE5
LDcgKzIxOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb2N1bWVudCgpOwogCiAgICAgdHlw
ZWRlZiBMaXN0SGFzaFNldDxFbGVtZW50KiwgNjQ+IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQ7Ci0g
ICAgY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCogZ2V0Rm9ybUVsZW1lbnRzKCkgY29uc3Qg
eyByZXR1cm4gJm1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlOyB9ICAgIAorICAgIGNvbnN0IEZvcm1F
bGVtZW50TGlzdEhhc2hTZXQqIGdldEZvcm1FbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuICZtX2Zv
cm1FbGVtZW50c1dpdGhTdGF0ZTsgfQogCiAgICAgTWVkaWFRdWVyeU1hdGNoZXIqIG1lZGlhUXVl
cnlNYXRjaGVyKCk7CiAKQEAgLTI1NSw5ICsyNTUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpOwot
ICAgIHZvaWQgaW52YWxpZGF0ZUFjY2Vzc0tleU1hcCgpOwotCiAgICAgLy8gRE9NIG1ldGhvZHMg
JiBhdHRyaWJ1dGVzIGZvciBEb2N1bWVudAogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihhYm9ydCk7CkBAIC0xMTM1LDggKzExMzIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBjYWNoZURvY3VtZW50RWxlbWVudCgpIGNvbnN0OwogCi0gICAgdm9pZCBidWlsZEFjY2Vzc0tl
eU1hcChUcmVlU2NvcGUqIHJvb3QpOwotCiAgICAgdm9pZCBjcmVhdGVTdHlsZVNlbGVjdG9yKCk7
CiAKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBoYW5kbGVaZXJvUGFkZGluZyhjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKSBjb25zdDsKQEAgLTEzNTcsOSArMTM1Miw2IEBA
IHByaXZhdGU6CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxl
bWVudHM7CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5n
ZWRFbGVtZW50czsKIAotICAgIEhhc2hNYXA8U3RyaW5nSW1wbCosIEVsZW1lbnQqLCBDYXNlRm9s
ZGluZ0hhc2g+IG1fZWxlbWVudHNCeUFjY2Vzc0tleTsgICAgCi0gICAgYm9vbCBtX2FjY2Vzc0tl
eU1hcFZhbGlkOwotCiAgICAgYm9vbCBtX3VzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZl
OwogCiAgICAgYm9vbCBtX2lzWEhUTUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDcz
MzM5NjRiOTg0YzBhYjNkZWI1YzFlZmEyYzYwNmMzMDJiNWE0NjQuLmIwYTZmYzhiYzBkNDYwMDBh
YmNiY2Y3MjY0YTQyNWVmN2JmMTYyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0z
OSw2ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBUcmVlU2NvcGU6OlRyZWVT
Y29wZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50KQog
ICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKKyAgICAsIG1fYWNjZXNzS2V5TWFwVmFsaWQoZmFs
c2UpCiAgICAgLCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCiB7CiB9CkBAIC03Miw2ICs3MywzOSBA
QCBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYg
ZWxlbWVudElkKSBjb25zdAogICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5nZXRFbGVtZW50QnlJ
ZChlbGVtZW50SWQuaW1wbCgpLCB0aGlzKTsKIH0KIAorRWxlbWVudCogVHJlZVNjb3BlOjpnZXRF
bGVtZW50QnlBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgaWYgKGtleS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9hY2Nlc3NLZXlNYXBWYWxpZCkg
eworICAgICAgICBidWlsZEFjY2Vzc0tleU1hcCgpOworICAgICAgICBtX2FjY2Vzc0tleU1hcFZh
bGlkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBtX2VsZW1lbnRz
QnlBY2Nlc3NLZXkuZ2V0KGtleS5pbXBsKCkpKQorICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAg
ICBpZiAoVHJlZVNjb3BlKiBwYXJlbnRUcmVlU2NvcGUgPSB0aGlzLT5wYXJlbnRUcmVlU2NvcGUo
KSkKKyAgICAgICAgcmV0dXJuIHBhcmVudFRyZWVTY29wZS0+Z2V0RWxlbWVudEJ5QWNjZXNzS2V5
KGtleSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVHJlZVNjb3BlOjpidWlsZEFjY2Vzc0tl
eU1hcCgpCit7CisgICAgZm9yIChOb2RlKiBuID0gdGhpczsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4
dE5vZGUodGhpcykpIHsKKyAgICAgICAgaWYgKCFuLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihuKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhY2Nlc3NLZXkgPSBlbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoYWNjZXNza2V5QXR0cik7CisgICAgICAgIGlmICghYWNjZXNzS2V5
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5zZXQoYWNjZXNz
S2V5LmltcGwoKSwgZWxlbWVudCk7CisgICAgfQorfQorCit2b2lkIFRyZWVTY29wZTo6aW52YWxp
ZGF0ZUFjY2Vzc0tleU1hcCgpCit7CisgICAgbV9hY2Nlc3NLZXlNYXBWYWxpZCA9IGZhbHNlOwor
ICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5jbGVhcigpOworfQorCiB2b2lkIFRyZWVTY29wZTo6
YWRkRWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqIGVs
ZW1lbnQpCiB7CiAgICAgbV9lbGVtZW50c0J5SWQuYWRkKGVsZW1lbnRJZC5pbXBsKCksIGVsZW1l
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCmluZGV4IGU5MjNmYzRiMzY4NmNkMDc2ZmY5MDc1NzM2
MzlkMzkwMzQwM2QzMjAuLjA0ZWMyYjgyMWJlMTFjMGQ1MTA3MWNhMDcyZDExODM2YjY1MWRjMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKTsKICAgICBIVE1MTWFwRWxlbWVudCog
Z2V0SW1hZ2VNYXAoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogCisgICAgRWxlbWVudCogZ2V0
RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KTsKKyAgICB2b2lkIGludmFsaWRh
dGVBY2Nlc3NLZXlNYXAoKTsKKwogICAgIHZvaWQgYWRkTm9kZUxpc3RDYWNoZSgpIHsgKyttX251
bU5vZGVMaXN0Q2FjaGVzOyB9CiAgICAgdm9pZCByZW1vdmVOb2RlTGlzdENhY2hlKCkgeyBBU1NF
UlQobV9udW1Ob2RlTGlzdENhY2hlcyA+IDApOyAtLW1fbnVtTm9kZUxpc3RDYWNoZXM7IH0KICAg
ICBib29sIGhhc05vZGVMaXN0Q2FjaGVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1Ob2RlTGlzdENh
Y2hlczsgfQpAQCAtNzYsNiArNzksMTEgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudE9yZGVyZWRN
YXAgbV9lbGVtZW50c0J5SWQ7CiAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1faW1hZ2VNYXBzQnlO
YW1lOwogCisgICAgdm9pZCBidWlsZEFjY2Vzc0tleU1hcCgpOworCisgICAgbXV0YWJsZSBIYXNo
TWFwPFN0cmluZ0ltcGwqLCBFbGVtZW50KiwgQ2FzZUZvbGRpbmdIYXNoPiBtX2VsZW1lbnRzQnlB
Y2Nlc3NLZXk7CisgICAgbXV0YWJsZSBib29sIG1fYWNjZXNzS2V5TWFwVmFsaWQ7CisKICAgICB1
bnNpZ25lZCBtX251bU5vZGVMaXN0Q2FjaGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDA4ZmQyNzc0MzI0MjczYmVlZGIxODNhNzhiNTNiNDQwMTFhNGI1MmUu
LjllODY1YWM2MDFlNDdmZjcyOTI4ZGY2NGI4OWY0MDE3YmNkZmVkYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI0NDcsNyArMjQ0NywxMSBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlQWNjZXNzS2V5KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZ0KQog
ICAgIGlmICgoZXZ0Lm1vZGlmaWVycygpICYgflBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hpZnRL
ZXkpICE9IGFjY2Vzc0tleU1vZGlmaWVycygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
U3RyaW5nIGtleSA9IGV2dC51bm1vZGlmaWVkVGV4dCgpOwotICAgIEVsZW1lbnQqIGVsZW0gPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlBY2Nlc3NLZXkoa2V5Lmxvd2VyKCkpOwor
ICAgIEVsZW1lbnQqIGVsZW07CisgICAgaWYgKE5vZGUqIGZvY3VzZWROb2RlID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSkKKyAgICAgICAgZWxlbSA9IGZvY3VzZWROb2RlLT50
cmVlU2NvcGUoKS0+Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGtleS5sb3dlcigpKTsKKyAgICBlbHNl
CisgICAgICAgIGVsZW0gPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlBY2Nlc3NL
ZXkoa2V5Lmxvd2VyKCkpOwogICAgIGlmICghZWxlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGVsZW0tPmFjY2Vzc0tleUFjdGlvbihmYWxzZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106562</attachid>
            <date>2011-09-07 02:56:12 -0700</date>
            <delta_ts>2011-09-08 11:14:06 -0700</delta_ts>
            <desc>only layouttest. No functional change</desc>
            <filename>bug-67096-20110907185610.patch</filename>
            <type>text/plain</type>
            <size>5056</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNTJlZGFhNzMzOWUxMmFhMGY3MDFm
YTA0ZmY4OWQ1ZDZjN2IwMjRlLi4zYzUxNjVjODA2NWI0MTUwMWQ3YWVhYjNmMTNmNjVkNjg4MTM1
NzkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMDcgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IGZvciB0aGUgY2Fz
ZSB3aGVyZSBhbiBhY2Nlc3NrZXkgaXMgZGVmaW5lZCBpbiBzaGFkb3cgRE9NLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzA5NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93
L2FjY2Vzcy1rZXktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvYWNjZXNzLWtleS5odG1sOiBBZGRlZC4KKwogMjAxMS0wOS0wMiAgSmFtZXMgUm9iaW5zb24g
IDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXBkYXRlIGJhc2Vs
aW5lcyBhbmQgZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2FjY2Vzcy1rZXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2FjY2Vzcy1rZXktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNThmYWM1OTMyODMxNmY1
YTI4NWEzZWUwNjg1NDliZWJhNmVjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvYWNjZXNzLWtleS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAor
VGVzdHMgdG8gZW5zdXJlIHRoYXQgYWNjZXNza2V5IHdvcmtzIGluIHJlZ2FyZCB0byBzaGFkb3cg
RE9NIGJvdW5kYXJ5LiBDYW4gb25seSBydW4gd2l0aGluIERSVC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKKworUEFTUyBkaXNwYXRjaGVkRXZlbnQoImZvY3VzIikgaXMgWyJpbnB1
dEUiXQorUEFTUyBkaXNwYXRjaGVkRXZlbnQoImZvY3VzIikgaXMgWyJpbnB1dEUiXQorUEFTUyBk
aXNwYXRjaGVkRXZlbnQoImZvY3VzIikgaXMgWyJpbnB1dEUiXQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9hY2Nlc3Mta2V5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvYWNjZXNzLWtleS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZTQ2YmY0ZmM2ZmQyYzNlZGUzMzkw
MmVlZGU1MzJiZWRjMWE3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvYWNjZXNzLWtleS5odG1sCkBAIC0wLDAgKzEsMTExIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWRvbS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdG8gZW5zdXJlIHRoYXQgYWNjZXNza2V5IHdvcmtzIGlu
IHJlZ2FyZCB0byBzaGFkb3cgRE9NIGJvdW5kYXJ5LiBDYW4gb25seSBydW4gd2l0aGluIERSVC4i
KTsKKworZnVuY3Rpb24gcHJlc3NBY2Nlc3NLZXkoa2V5KQoreworICAgIGlmIChuYXZpZ2F0b3Iu
dXNlckFnZW50LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykgIT0gLTEpCisgICAgICAgIG1vZGlmaWVy
cyA9IFsiY3RybEtleSIsICJhbHRLZXkiXTsKKyAgICBlbHNlCisgICAgICAgIG1vZGlmaWVycyA9
IFsiYWx0S2V5Il07CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIG1vZGlmaWVycyk7Cit9
CisKK3ZhciBldmVudFJlY29yZHMgPSB7fTsKKworZnVuY3Rpb24gY2xlYXJFdmVudFJlY29yZHMo
KQoreworICAgIGV2ZW50UmVjb3JkcyA9IHt9OworfQorCitmdW5jdGlvbiBkaXNwYXRjaGVkRXZl
bnQoZXZlbnRUeXBlKQoreworICAgIHZhciBldmVudHMgPSBldmVudFJlY29yZHNbZXZlbnRUeXBl
XTsKKyAgICBpZiAoIWV2ZW50cykKKyAgICAgICAgcmV0dXJuIFtdOworICAgIHJldHVybiBldmVu
dHM7Cit9CisKK2Z1bmN0aW9uIHJlY29yZEV2ZW50KGV2ZW50KQoreworICAgIHZhciBldmVudFR5
cGUgPSBldmVudC50eXBlCisgICAgaWYgKCFldmVudFJlY29yZHNbZXZlbnRUeXBlXSkgeworICAg
ICAgICBldmVudFJlY29yZHNbZXZlbnRUeXBlXSA9IFtdCisgICAgfQorICAgIGV2ZW50UmVjb3Jk
c1tldmVudFR5cGVdLnB1c2goZXZlbnQudGFyZ2V0LmlkKTsKK30KKworZnVuY3Rpb24gZ2V0RWxl
bWVudEluU2hhZG93KHBhdGgpCit7CisgICAgdmFyIGlkcyA9IHBhdGguc3BsaXQoJy8nKTsKKyAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkc1swXSk7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGVsZW1lbnQgIT0gbnVsbCAmJiBpIDwgaWRzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIHZhciBzaGFkb3dSb290ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZWxlbWVudCk7Cisg
ICAgICAgIGVsZW1lbnQgPSBpbnRlcm5hbHMuZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3Qoc2hh
ZG93Um9vdCwgaWRzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK2Z1bmN0
aW9uIHByZXBhcmVEb21UcmVlKHBhcmVudCkKK3sKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoCisg
ICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6ICdkaXZBJ30sCisgICAgICAgICAgICAgICAg
ICBjcmVhdGVEb20oJ2lucHV0JywgeydpZCc6ICdpbnB1dEInfSksCisgICAgICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3coJ2RpdicsIHsnaWQnOiAnc2hhZG93QycsICd0YWJpbmRleCc6IDB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnaW5wdXQnLCB7J2lkJzog
J2lucHV0RCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVEb20oJ2lu
cHV0JywgeydpZCc6ICdpbnB1dEUnLCAnYWNjZXNza2V5JzogJ2EnfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93KCdkaXYnLCB7J2lkJzogJ3NoYWRvd0YnLCAn
dGFiaW5kZXgnOiAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXRHJ30pKSkpKTsKKworICAgIHZhciBp
ZHMgPSBbJ2lucHV0QicsCisgICAgICAgICAgICAgICAnc2hhZG93Qy9pbnB1dEQnLCAnc2hhZG93
Qy9pbnB1dEUnLAorICAgICAgICAgICAgICAgJ3NoYWRvd0Mvc2hhZG93Ri9pbnB1dEcnXTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGlkcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgZWxl
bWVudCA9IGdldEVsZW1lbnRJblNoYWRvdyhpZHNbaV0pOworICAgICAgICBlbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoJ2ZvY3VzJywgcmVjb3JkRXZlbnQsIGZhbHNlKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHByZXBhcmVE
b21UcmVlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94JykpOworCisgICAgLy8gUGxl
YXNlIHNlZSB0aGUgZGlzY3Vzc2lvbiBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjcwOTYuCisgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIGNsZWFyIGlkZWEgaG93IGFj
Y2Vzc2tleSBzaG91bGQgd29yayBpbiByZWdhcmQgdG8gc2hhZG93IERPTS4KKyAgICAvLyBJbiBj
dXJyZW50IGltcGxlbWVudGF0aW9uLCBhY2Nlc3NrZXlzIGRlZmluZWQgaW5zaWRlIG9mIGNvbXBv
bmVudHMgYXJlIGV4cG9zZWQgdG8gYW4gb3V0ZXIgZG9jdW1lbnQuCisgICAgLy8gRXZlcnkgYWNj
ZXNza2V5cyBhcmUgZmxhdHRlbmVkIHBlciBlYWNoIGRvY3VtZW50LgorICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpbnB1dEInKS5mb2N1cygpOworICAgIGNsZWFyRXZlbnRSZWNvcmRzKCk7
CisgICAgcHJlc3NBY2Nlc3NLZXkoJ2EnKTsKKyAgICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50
KCJmb2N1cyIpJywgJ1siaW5wdXRFIl0nKTsKKworICAgIGdldEVsZW1lbnRJblNoYWRvdygnc2hh
ZG93Qy9pbnB1dEQnKS5mb2N1cygpOworICAgIGNsZWFyRXZlbnRSZWNvcmRzKCk7CisgICAgcHJl
c3NBY2Nlc3NLZXkoJ2EnKTsKKyAgICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJmb2N1cyIp
JywgJ1siaW5wdXRFIl0nKTsKKworICAgIGdldEVsZW1lbnRJblNoYWRvdygnc2hhZG93Qy9zaGFk
b3dGL2lucHV0RycpLmZvY3VzKCk7CisgICAgY2xlYXJFdmVudFJlY29yZHMoKTsKKyAgICBwcmVz
c0FjY2Vzc0tleSgnYScpOworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVkRXZlbnQoImZvY3VzIikn
LCAnWyJpbnB1dEUiXScpOworfQorCit0ZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>