<?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>9589</bug_id>
          
          <creation_ts>2006-06-25 19:30:13 -0700</creation_ts>
          <short_desc>WCSS: -wap-accesskey not supported</short_desc>
          <delta_ts>2011-04-29 15:52:49 -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>CSS</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>23452</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nicholas Shanks">nickshanks</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>charles.wei</cc>
    
    <cc>eric</cc>
    
    <cc>ian</cc>
    
    <cc>jhuangjiahua</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>rohini.ananth</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>47193</commentid>
    <comment_count>0</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-25 19:30:13 -0700</bug_when>
    <thetext>The WCSS property -wap-accesskey, equivalent to the accesskey attribute on an anchor element, is not supported in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47232</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-26 02:27:33 -0700</bug_when>
    <thetext>Not relevant on the desktop, but could be relevant if/when Nokia merges to TOT.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108250</commentid>
    <comment_count>2</comment_count>
      <attachid>27309</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-02-04 01:12:38 -0800</bug_when>
    <thetext>Created attachment 27309
initial patch for WCSS acceeskey support


WAP CSS is the companion of XHTML Mobile Profile (XHTML MP), both of them are defined in WAP 2.0 specification. This patch depends on the patch of XHMLMP, which is traced by Bug 23452.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109623</commentid>
    <comment_count>3</comment_count>
      <attachid>27641</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-02-12 22:48:28 -0800</bug_when>
    <thetext>Created attachment 27641
updated patch contains code changes


split up the initial patch into two parts: one contains code changes, the other is for layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109624</commentid>
    <comment_count>4</comment_count>
      <attachid>27642</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-02-12 22:49:37 -0800</bug_when>
    <thetext>Created attachment 27642
patch for layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121245</commentid>
    <comment_count>5</comment_count>
      <attachid>30324</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-14 02:50:32 -0700</bug_when>
    <thetext>Created attachment 30324
Updated patch for adding tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121246</commentid>
    <comment_count>6</comment_count>
      <attachid>30325</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-14 02:51:25 -0700</bug_when>
    <thetext>Created attachment 30325
Updated patch for code changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121766</commentid>
    <comment_count>7</comment_count>
      <attachid>30445</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-18 02:02:20 -0700</bug_when>
    <thetext>Created attachment 30445
Latest Updated patch for code changes

Add copyright messages for code changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122032</commentid>
    <comment_count>8</comment_count>
      <attachid>30324</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-05-19 20:42:41 -0700</bug_when>
    <thetext>Comment on attachment 30324
Updated patch for adding tests

Okay, but need to add to Qt skipped list on checkin also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122764</commentid>
    <comment_count>9</comment_count>
      <attachid>30324</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-22 19:40:04 -0700</bug_when>
    <thetext>Comment on attachment 30324
Updated patch for adding tests

These look like manual tets, they do not belong in LayoutTests/

Can&apos;t we make these automated using DumpRenderTree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122765</commentid>
    <comment_count>10</comment_count>
      <attachid>30445</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-22 19:41:32 -0700</bug_when>
    <thetext>Comment on attachment 30445
Latest Updated patch for code changes

Why this:
#if ENABLE(WCSS)
 1047     mutable HashMap&lt;String, Element*, CaseFoldingHash&gt; m_elementsByAccessKey;
 1048 #else

In general this patch looks fine.  non-harmful.  The testing looks inadequate however, see my previous comment.

I can&apos;t really approve this until there are better tests. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123101</commentid>
    <comment_count>11</comment_count>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-25 20:23:38 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 30445 [review])
&gt; Why this:
&gt; #if ENABLE(WCSS)
&gt;  1047     mutable HashMap&lt;String, Element*, CaseFoldingHash&gt;
&gt; m_elementsByAccessKey;
&gt;  1048 #else

Here using String instead of original StringImpl* to keep the hash key is because the hash keys 
are generated dynamically for WCSS acceesskey.


&gt; In general this patch looks fine.  non-harmful.  The testing looks inadequate
&gt; however, see my previous comment.
&gt; I can&apos;t really approve this until there are better tests. :(

Okay, I will consider making the tests better.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133384</commentid>
    <comment_count>12</comment_count>
      <attachid>33151</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-07-21 00:44:08 -0700</bug_when>
    <thetext>Created attachment 33151
This is for -wap-accesskey support , contains both the code change and the test cases as per request from last review 

This patch contains both the code change and the test cases /expected test results.  There&apos;s no change to the last code change,  this patch differes from last patch only in the test cases, test cases for LayoutTests has been designed and expected test results are also attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137238</commentid>
    <comment_count>13</comment_count>
      <attachid>33151</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-04 19:38:21 -0700</bug_when>
    <thetext>Comment on attachment 33151
This is for -wap-accesskey support , contains both the code change and the test cases as per request from last review 

We need more information in the ChangeLog in order to make a productive review.  What is this change doing, why is it doing it.  What are the changes to the files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137240</commentid>
    <comment_count>14</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-08-04 19:53:51 -0700</bug_when>
    <thetext>
(In reply to comment #10)
&gt; (From update of attachment 30445 [details])
&gt; Why this:
&gt; #if ENABLE(WCSS)
&gt;  1047     mutable HashMap&lt;String, Element*, CaseFoldingHash&gt;
&gt; m_elementsByAccessKey;
&gt;  1048 #else
&gt; 
&gt; In general this patch looks fine.  non-harmful.  The testing looks inadequate
&gt; however, see my previous comment.
&gt; 
&gt; I can&apos;t really approve this until there are better tests. :(

(In reply to comment #13)
&gt; (From update of attachment 33151 [details])
&gt; We need more information in the ChangeLog in order to make a productive review.
&gt;  What is this change doing, why is it doing it.  What are the changes to the
&gt; files?

Forgetting your previous review? :)  I think it&apos;s quite clear what it does, and it seems that you felt so before also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137501</commentid>
    <comment_count>15</comment_count>
      <attachid>34197</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-08-05 19:28:23 -0700</bug_when>
    <thetext>Created attachment 34197
resubmit the patch with a more descriptive ChangeLog following the review comments    

I am now resubmitting the patch with a more descriptive ChangeLog following Eric&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137685</commentid>
    <comment_count>16</comment_count>
      <attachid>34197</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-06 16:38:38 -0700</bug_when>
    <thetext>Comment on attachment 34197
resubmit the patch with a more descriptive ChangeLog following the review comments    

Why does WebKit want this?

This seems like a non-critical feature of an obscure spec.  This if for mobile no?  I don&apos;t know of a mobile device with an alt key, but I believe you there is one.  How many pages on the WAP web actually depend on this parsing?  Is there a CSS3 equivilant that we can just map this property to?

You change to the ChangeLog to tell me to read the spec, isn&apos;t very helpful.  Reviewing is often hard.  There are 80 patches in the queue right now.  Patches which are easy to r+ are the ones which get reviewed.  In this case, it&apos;s not obvious why this is a good thing for the project, why it&apos;s correct, or even what it does.  There is a relatively large amount of code to review in this patch (2-3 pages of code).

I&apos;m not trying to be difficult. But if you want this reviewed, you need to make it easy for the reviewers to r+ it.  Much of that work is on selling your patch.  making it small, making the ChangeLog and tests super-clear.  Patches which aren&apos;t easy to r+ just sit in the queue for forever, until someone like me comes along and r-&apos;s them.

Also, I don&apos;t think you want to make me the requestee.  :) That&apos;s likely only to slow down your reviews as others will ignore them.

Please add more useful information to the ChangeLog, including answering some of the questions I posed above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137733</commentid>
    <comment_count>17</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-08-06 18:59:12 -0700</bug_when>
    <thetext>This was already discussed on webkit-dev.  Also I should point out that Google&apos;s Android team seems to be very interested according to my source, so I think there is interest from your own organization too. As previously pointed out, WAP gateways make use of XHTML-MP and associated features, and we&apos;d like to have full mobile support.  It&apos;s legacy, but you can&apos;t just make the world disappear simply because you don&apos;t like the protocol it talks.  We&apos;ve been maintaining it for more than a year now so I think that&apos;s enough evidence that it will be maintained.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137962</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 10:31:29 -0700</bug_when>
    <thetext>What device would use this?  It still seems like an irrelevant portion of the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137965</commentid>
    <comment_count>19</comment_count>
      <attachid>34197</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 10:34:48 -0700</bug_when>
    <thetext>Comment on attachment 34197
resubmit the patch with a more descriptive ChangeLog following the review comments    

Changes like these should be explained in the ChangeLog or in the source:
 #if ENABLE(WCSS)
 1068     mutable HashMap&lt;String, Element*, CaseFoldingHash&gt; m_elementsByAccessKey;
 1069 #else
10671070     mutable HashMap&lt;StringImpl*, Element*, CaseFoldingHash&gt; m_elementsByAccessKey;
 1071 #endif

I don&apos;t see how this is changed from the last patch I r-d.  I didn&apos;t just r- this because I disagree with WAP. ;)  I r- this because it&apos;s difficult to r+ without more information as to what&apos;s going on here.

If we&apos;re adding a parser, why don&apos;t we have parser tests for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139773</commentid>
    <comment_count>20</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-08-13 03:24:22 -0700</bug_when>
    <thetext>This article explains advantages and disadvantatges of accesskey attribute of HTML 4,  and some proposals about how the webpage author should design their page to take advantage of the access key.
 
http://www.cs.tut.fi/~jkorpela/forms/accesskey.html


I did some more test of accesskey attribute of HTML4 on different browser , and here&apos;s the findings:

On IE6/7/8,  Alt+accesskey, and then Enter to activiate the element (link, button,etc)
On Firefox,  Alt+Shift+accesskey to activate the element 
On Safari on Windows,  Alt + accesskey to activate the element
On Opera 9, Shift+Esc will list all the accesskeys , and then press corresponding accesskey to activate the element it associates with 
Chrome:  doesn&apos;t support accesskey .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140723</commentid>
    <comment_count>21</comment_count>
      <attachid>34971</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-08-17 09:02:14 -0700</bug_when>
    <thetext>Created attachment 34971
patch that fixes the comments by the reviewer

This patch is for WCSS -wap-accesskey support. 

-wap-accesskey is an extension to CSS2 by OMA, to assign an accesskey for elements, for easy navigation purpose. pretty much like accesskey attribute of HTML.

We are limiting the valid accesskey to number 0 ~ 9, # and *, since they are available on all keypad devices.

This patch differences from the last patch -- 34197 : 

1. moved the property name to the WCSS-specific .in file.
2. fixed some bug in parsing.
3. re-designed the accesskey invocation algorithm
4. new test cases designed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140726</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 09:08:58 -0700</bug_when>
    <thetext>How does a wap-enabled device (phone) use these?  Are there wap-enabled devices with wcc -wap-accesskey support on the market today?  Are there pages which use this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140772</commentid>
    <comment_count>23</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-08-17 11:21:00 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; How does a wap-enabled device (phone) use these?  Are there wap-enabled devices
&gt; with wcc -wap-accesskey support on the market today?  Are there pages which use
&gt; this?

There are many millions of such devices out there, for sure.  They all behave differently because it depends on the physical hardware and how it can be mapped to the browser.  It&apos;s primarily for non-touchscreen phones where getting to a link is not always easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140967</commentid>
    <comment_count>24</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-08-17 18:35:33 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; How does a wap-enabled device (phone) use these?  Are there wap-enabled devices
&gt; with wcc -wap-accesskey support on the market today?  Are there pages which use
&gt; this?


OMA is playing a very important role in the wireless field,  and most of the operators will require the mobile device to be OMA standard compliant. XHTML-MP, ESMP, WCSS are the important Web browsers from OMA , which are derived from the internet standard, XHTML, ECMA and CSS respectively. We need to make WebKit to support this standards to promote it to Wireless devices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141844</commentid>
    <comment_count>25</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-08-21 01:29:56 -0700</bug_when>
    <thetext>Anybody who can help to review this ?   any comments ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143232</commentid>
    <comment_count>26</comment_count>
      <attachid>34971</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-27 16:26:49 -0700</bug_when>
    <thetext>Comment on attachment 34971
patch that fixes the comments by the reviewer

+Element* Document::getElementByAccessKey(const String&amp; key) const

seems like a really slow way to crawl through the DOM for the access keys.  Why can&apos;t one expand the m_elementsByAccessKey strategy?  querySelector would answer the CSS side of the question.

style:
+        if (accessKeys.contains(key)) {
+            return element;
+        }

Spelling:
+        //2, Try to get accecckeys from internal WCSS and external WCSS in turn

spacing:
+        String accessKeys ; //accesskeysForElement(element, m_styleSelector);

Honestly I don&apos;t really want this change.  I still don&apos;t understand why this obscure part of a dying spec is needed, and clearly no other reviewer seems to care enough to review it either since this bug has been ignored for over 7 months in the queue.

r- for the nits above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144170</commentid>
    <comment_count>27</comment_count>
      <attachid>38919</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-09-02 02:59:29 -0700</bug_when>
    <thetext>Created attachment 38919
new patch address reviewer&apos;s comments

This patch addresses the following comments by the reviewer:
1. style issue
2. spelling issue
3. Spacing issue 
4. use m_elementsByAccessKey strategy to store the [accesskey, element] pair in m_elementsByAccessKey , this is done only once   for a document, next time you have a accesskey pressed,  it will try to get the element from m_elementsByAccessKey directly instead tranversing the DOM.
   To do that , m_elementsByAccessKey was changed 
  from :
    mutable HashMap&lt;StringImpl*, Element*, CaseFoldingHash&gt; m_elementsByAccessKey;
  to: 
    mutalbe HashMap&lt;String, Element*, CaseFoldingHash&gt; m_elementsByAccessKey;

   because we can&apos;t hold a StringImpl* since the accesskey in the style sheet, while before the change,  the index of m_elementsByAccessKey is of type &quot;StringImpl*&quot;, which is hold by an element in it&apos;s &quot;accesskey&quot; attribute .

5.  As to the mention of &quot;querySelector would answer the CSS side of the question&quot; , I don&apos;t know how to apply that to this feature.  basically what we would like to do is to go through all elements and find those with &quot;-wap-accesskey&quot; style or with &quot;accesskey&quot; attribute,  if an element with both &quot;accesskey&quot; attribute and &quot;-wap-accesskey&quot; style applied, the -wap-accesskey takes precedence .

To address the reviewer&apos;s other comments: 

 &quot;why this obscure part of a dying spec is needed&quot;,  actually WCSS is an emergying spec instead of a dying spec, which is initiatied by OMA, an big player in Mobile industry, for Mobile devides. OMA standard compliance is a requirement of must for many operators and device manufactures,  implementation of WCSS and other OMA specs in WebKit definitely promotes WebKit into a wider spectrum of devices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147136</commentid>
    <comment_count>28</comment_count>
      <attachid>38919</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-09-14 12:33:54 -0700</bug_when>
    <thetext>Comment on attachment 38919
new patch address reviewer&apos;s comments

The function in Document seems a bit inefficient.  Is there any way to do this better?

Other than that I think the patch is fine and has addressed all the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148497</commentid>
    <comment_count>29</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-09-19 09:23:45 -0700</bug_when>
    <thetext>*** Bug 29360 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162221</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-10 14:27:15 -0800</bug_when>
    <thetext>Given that no one has reviewed this in 2 months, and I have since decided that I am against adding this feature to WebKit, I think we should reject this patch/bug due to lack of reviewer support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166639</commentid>
    <comment_count>31</comment_count>
      <attachid>38919</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-25 22:08:54 -0800</bug_when>
    <thetext>Comment on attachment 38919
new patch address reviewer&apos;s comments

Rejecting patch due to lack of reviewer support, per my comment from 2 weeks ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166705</commentid>
    <comment_count>32</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-11-26 05:25:25 -0800</bug_when>
    <thetext>Niko can you help review these?  Otherwise I&quot;ll take care of it int he next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167370</commentid>
    <comment_count>33</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:43:23 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 38919 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182470</commentid>
    <comment_count>34</comment_count>
      <attachid>38919</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 14:40:17 -0800</bug_when>
    <thetext>Comment on attachment 38919
new patch address reviewer&apos;s comments

Still lacking reviewer support again 6 weeks later, this is just wasting space in the review queue.  WebKit&apos;s apathy seems to be serving as rejection of this feature.  I suggest we close this bug as WONTFIX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395591</commentid>
    <comment_count>35</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-29 15:52:49 -0700</bug_when>
    <thetext>Bug 23477 was resolved with a general lack of desire to implement any WCSS extensions, so closing this one, too. Please e-mail webkit-dev mailing list if you are interested in WCSS support.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27309</attachid>
            <date>2009-02-04 01:12:38 -0800</date>
            <delta_ts>2009-02-12 22:48:28 -0800</delta_ts>
            <desc>initial patch for WCSS acceeskey support</desc>
            <filename>addwcssaccesskeysupport.patch</filename>
            <type>text/plain</type>
            <size>17732</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDYwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDItMDQgIFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNo
bW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgV0NTUyBhY2Nlc3NrZXkgZXh0ZW5zaW9uIHN1cHBvcnQgdG8gV2Via2l0Cisg
ICAgICAgIHJlZmVyIHRvOiBXQVAtMjM5LVdDU1MtMjAwMTEwMjYtYS5wZGYKKworICAgICAgICBU
ZXN0czogZmFzdC93Y3NzL2ZpcnN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd2Nzcy9zZWNv
bmQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93Y3NzL3RoaXJkLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC54aHRtbAorICAgICAgICAgICAg
ICAgZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRtbAorICAgICAgICAgICAgICAg
ZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLnhodG1sCisKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlV0NTU0FjY2Vzc0tleSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAq
IGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphY2Nlc3Nr
ZXlzRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0RWxlbWVudEJ5
QWNjZXNzS2V5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL3F0
L0V2ZW50SGFuZGxlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNj
ZXNzS2V5TW9kaWZpZXJzKToKKwogMjAwOS0wMi0wMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlz
aW9uIDQwNTYwKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTAx
LDYgKzEwMSw3IEBAIENPTkZJRyhRVERJUl9idWlsZCkgewogIWNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9YUEFUSD0uKTogREVGSU5FUyArPSBFTkFCTEVfWFBBVEg9MQogIyFjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YQkw9MQogIWNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0gRU5BQkxFX1dNTD0wCishY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1hIVE1MTVA9Lik6IERFRklORVMgKz0gRU5BQkxFX1hIVE1MTVA9MAog
IWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9Lik6IERFRklORVMgKz0gRU5BQkxFX1NWRz0x
CiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWR19GT05UUz0uKTogREVGSU5FUyArPSBFTkFC
TEVfU1ZHX0ZPTlRTPTEKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHX0ZJTFRFUlM9Lik6
IERFRklORVMgKz0gRU5BQkxFX1NWR19GSUxURVJTPTEKQEAgLTE0NzUsNiArMTQ3NiwxNSBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfV01MPTEpIHsKICAgICBhZGRFeHRyYUNvbXBpbGVyV2l0
aEhlYWRlcih3bWxuYW1lc19iKQogfQogCitjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEhUTUxN
UD0xKSB7CisgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1hIVE1MTVA9
MQorICAgICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0NTUz0uKTogREVGSU5FUyArPSBFTkFC
TEVfV0NTUz0xCit9CisgCitjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0NTUz0xKSB7CisgICAg
RkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dDU1M9MQorfQorCiBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQ
VCArPSBFTkFCTEVfU1ZHPTEKIApJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA0MDU2MCkKKysr
IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODQsNiArMTU4
NCwxNCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKICAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKICAgICB9
CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcEFjY2Vzc2tleToKKyAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2
ZSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VX
Q1NTQWNjZXNzS2V5KCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAgcmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRo
YW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBA
IC0xNjIyLDYgKzE2MzAsNjEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShXQ1NTKSAgICAgICAKK1Bh
c3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlV0NTU0FjY2Vzc0tleSgpCit7
CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKKyAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+
Y3VycmVudCgpOworICAgIENTU1BhcnNlclZhbHVlKiBuZXh0VmFsdWUgPSAwOyAKKyAgICBib29s
IG5leHRJc1ZhbGlkU2VwYXJhdG9yID0gZmFsc2U7IAorICAgIGJvb2wgbmV4dElzVmFsaWRWYWx1
ZSA9IGZhbHNlOyAKKyAgICBTdHJpbmcga2V5czsKKyAgICB3aGlsZSAodmFsdWUpIHsKKyAgICAg
ICAgbmV4dFZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgbmV4dElzVmFsaWRT
ZXBhcmF0b3IgPSAhbmV4dFZhbHVlIHx8IAorICAgICAgICAgICAgKG5leHRWYWx1ZS0+dW5pdCA9
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgbmV4dFZhbHVlLT5pVmFsdWUgPT0gJywnKTsK
KyAgICAgICAgbmV4dElzVmFsaWRWYWx1ZSA9IG5leHRWYWx1ZSAmJiAKKyAgICAgICAgICAgIChu
ZXh0VmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIgfHwgbmV4dFZh
bHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpOworIAorICAgICAgICBp
ZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKKyAgICAg
ICAgICAgIGludCB2YWwgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlLT5mVmFsdWUpOworIAorICAg
ICAgICAgICAgLy8gSGVyZSB3ZSBqdXN0IGFsbG93IHRoZSBpbnB1dGVkIGFjY2Vzc2tleSBudW1i
ZXIgaW4gdGhpcyBzY29wZSBbMCw5XQorICAgICAgICAgICAgaWYgKHZhbCA+PSAwICYmIHZhbCA8
IDEwKSB7CisgICAgICAgICAgICAgICAga2V5cyArPSAiICI7CisgICAgICAgICAgICAgICAga2V5
cyArPSBTdHJpbmc6Om51bWJlcih2YWx1ZS0+ZlZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAKKyAg
ICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lE
RU5UKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyID0gU3RyaW5nKHZhbHVlLT5zdHJpbmcpOwor
ICAgICAgICAgICAgLy9IZXJlIHdlIGp1c3QgYWNjZXB0IHRoZSBpbnB1dGVkIGNoYXJhY3RlciBp
biB0aGlzIHNldDogWyAqIHwgIyBdCisgICAgICAgICAgICBpZiAoc3RyID09ICIqIiB8fCBzdHIg
PT0gIiMiKSB7CisgICAgICAgICAgICAgICAga2V5cyArPSAiICI7CisgICAgICAgICAgICAgICAg
a2V5cyArPSBzdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAKKyAgICAgICAgaWYgKG5l
eHRJc1ZhbGlkU2VwYXJhdG9yICYmICFrZXlzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoa2V5cywgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TVFJJTkcpKTsKKyAgICAgICAgICAgIGtleXMgPSAiIjsKKyAgICAgICAgfQorIAor
ICAgICAgICBpZiAoIW5leHRWYWx1ZSkKKyAgICAgICAgICAgIGJyZWFrOworIAorICAgICAgICBp
ZiAobmV4dElzVmFsaWRWYWx1ZSkKKyAgICAgICAgICAgIHZhbHVlID0gbmV4dFZhbHVlOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAg
fQorIAorICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCisgICAgICAgIGxpc3QgPSAwOworIAorICAg
IHJldHVybiBsaXN0LnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCiB2b2lkIENTU1BhcnNlcjo6YWRk
RmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJ2
YWwpCiB7CiAgICAgaWYgKGx2YWwpIHsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiA0MDU2MCkKKysr
IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFy
c2VTVkdTdHJva2VEYXNoYXJyYXkoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdDU1MpCisgICAg
ICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZVdDU1NBY2Nlc3NLZXkoKTsKKyNlbmRp
ZgorCiAgICAgICAgIC8vIENTUzMgUGFyc2luZyBSb3V0aW5lcyAoZm9yIHByb3BlcnRpZXMgc3Bl
Y2lmaWMgdG8gQ1NTMykKICAgICAgICAgYm9vbCBwYXJzZVNoYWRvdyhpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCk7CiAgICAgICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCwgUmVmUHRyPENTU1ZhbHVlPiYpOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5h
bWVzLmluCShyZXZpc2lvbiA0MDU2MCkKKysrIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsNyBAQCB3b3JkLXNwYWNpbmcKIHdvcmQt
d3JhcAogei1pbmRleAogem9vbQorLXdhcC1hY2Nlc3NrZXkKIC13ZWJraXQtYW5pbWF0aW9uCiAt
d2Via2l0LWFuaW1hdGlvbi1kZWxheQogLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uCkluZGV4
OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNDA1NjApCisrKyBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA5Myw2ICs1MDkzLDkg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZToKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVy
bGluZVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6CisjaWYg
RU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcEFjY2Vzc2tleToKKyNlbmRpZgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOgogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5TdGFydDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGlu
Z1N0YXJ0OgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNDA1NjApCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDExIEBACiAjaW5jbHVkZSAi
QVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNEQVRBU2VjdGlvbi5oIgogI2luY2x1ZGUgIkNT
U0hlbHBlci5oIgorI2lmIEVOQUJMRShXQ1NTKQorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNlbmRp
ZgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgpAQCAtOTQ1LDYgKzk1MCwxMTEgQEAg
dm9pZCBEb2N1bWVudDo6cmVtb3ZlRWxlbWVudEJ5SWQoY29uc3QgQQogICAgICAgICBtX2R1cGxp
Y2F0ZUlkcy5yZW1vdmUoZWxlbWVudElkLmltcGwoKSk7CiB9CiAKKyNpZiBFTkFCTEUoV0NTUykK
K3N0YXRpYyBTdHJpbmcgYWNjZXNza2V5c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgQ1NT
U3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvcikKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsgCisgCisgICAgU3RyaW5nIGFjY2Vzc0tleXM7CisgICAgQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBlbGVtZW50LT5zdHlsZSgpOworICAgIC8vMSwgVHJ5
IHRvIGdldCBhY2NlY2NrZXlzIGZyb20gaW5saW5lIFdDU1MgCisgICAgaWYgKHN0eWxlKQorICAg
ICAgICBhY2Nlc3NLZXlzID0gc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlXYXBB
Y2Nlc3NrZXkpOworIAorICAgIC8vMiwgVHJ5IHRvIGdldCBhY2NlY2NrZXlzIGZyb20gaW50ZXJu
YWwgV0NTUyBhbmQgZXh0ZXJuYWwgV0NTUyBpbiB0dXJuCisgICAgaWYgKGFjY2Vzc0tleXMuaXNF
bXB0eSgpICYmIHN0eWxlU2VsZWN0b3IpIHsKKyAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBy
dWxlcyA9IHN0eWxlU2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIGZhbHNl
KTsKKyAgICAgICAgaWYgKHJ1bGVzICYmIHJ1bGVzLT5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAg
ICAgIENTU1J1bGUqIHJ1bGUgPSAwOworICAgICAgICAgICAgU3RyaW5nIGNzc1RleHQ7CisgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVzLT5sZW5ndGgoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgcnVsZSA9IHJ1bGVzLT5pdGVtKGkpOworICAgICAgICAgICAgICAgIGNzc1Rl
eHQgPSBydWxlLT5jc3NUZXh0KCk7CisgCisgICAgICAgICAgICAgICAgaW50IGlkeCA9IGNzc1Rl
eHQuZmluZCgiLXdhcC1hY2Nlc3NrZXkiKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0x
KSB7CisgICAgICAgICAgICAgICAgICAgIGludCBwb3MgPSBjc3NUZXh0LmZpbmQoJzonLCBpZHgp
OworICAgICAgICAgICAgICAgICAgICBhY2Nlc3NLZXlzID0gY3NzVGV4dC5zdWJzdHJpbmcocG9z
ICsgMSk7CisgCisgICAgICAgICAgICAgICAgICAgIHBvcyA9IGFjY2Vzc0tleXMuZmluZCgnOycp
OworICAgICAgICAgICAgICAgICAgICBpZiAocG9zID09IC0xKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcG9zID0gYWNjZXNzS2V5cy5maW5kKCd9Jyk7CisgICAgICAgICAgICAgICAgICAgIGFj
Y2Vzc0tleXMudHJ1bmNhdGUocG9zKTsKKyAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICAg
ICAgICAgaWYgKCFhY2Nlc3NLZXlzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgCisgICAgLy8zLCBUcnkgdG8g
Z2V0IGFjY2VjY2tleXMgZnJvbSB0aGUgYWNjZXNza2V5IGF0dHJpYnV0ZSBvZiBlbGVtZW50Cisg
ICAgaWYgKGFjY2Vzc0tleXMuaXNFbXB0eSgpKQorICAgICAgICBhY2Nlc3NLZXlzID0gZWxlbWVu
dC0+Z2V0QXR0cmlidXRlKGFjY2Vzc2tleUF0dHIpOworIAorICAgIGlmICghYWNjZXNzS2V5cy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYWNjZXNzS2V5cy5yZXBsYWNlKCdcJycsICIiKTsKKyAgICAg
ICAgYWNjZXNzS2V5cyA9IGFjY2Vzc0tleXMuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgfQor
IAorICAgIHJldHVybiBhY2Nlc3NLZXlzOworfQorCitFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxl
bWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAoreworICAgIGlmIChrZXku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9hY2Nlc3NLZXlNYXBW
YWxpZCkgeworICAgICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50
cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghbi0+aXNFbGVtZW50Tm9kZSgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgRWxlbWVudCogZWxlbWVu
dCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKKworICAgICAgICAgICAgU3RyaW5nIGFjY2Vz
c0tleVN0cmluZyA9IGFjY2Vzc2tleXNGb3JFbGVtZW50KGVsZW1lbnQsIG1fc3R5bGVTZWxlY3Rv
cik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZLZXlzOworICAgICAgICAgICAgYWNj
ZXNzS2V5U3RyaW5nLnNwbGl0KCIsIiwgdktleXMpOworCisgICAgICAgICAgICBTdHJpbmcgYWNj
ZXNzS2V5OworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gdktleXMu
YmVnaW4oKTsKKyAgICAgICAgICAgIHdoaWxlIChpdCAhPSB2S2V5cy5lbmQoKSkgeworICAgICAg
ICAgICAgICAgIGFjY2Vzc0tleSA9ICppdCsrOworICAgICAgICAgICAgICAgIGFjY2Vzc0tleSA9
IGFjY2Vzc0tleS5zdHJpcFdoaXRlU3BhY2UoKTsKKworICAgICAgICAgICAgICAgIGludCBrZXlM
ZW4gPSBhY2Nlc3NLZXkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGtleUxlbiA9PSAx
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9lbGVtZW50c0J5QWNjZXNzS2V5LmNvbnRh
aW5zKGFjY2Vzc0tleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZWxlbWVudHNCeUFj
Y2Vzc0tleS5zZXQoYWNjZXNzS2V5LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gQXMgcGVyIHRoZSBzcGVjaWZpY2F0aW9uIFdBUC0yMzkt
V0NTUy0yMDAxMTAyNi1hLnBkZiwgCisgICAgICAgICAgICAgICAgICAgIC8vIEluIGEgc3BhY2Ug
IiAiIHNlcGFyYXRlZCBsaXN0IG9mIGFjY2VzcyBrZXlzIHRoZSB1c2VyIAorICAgICAgICAgICAg
ICAgICAgICAvLyBhZ2VudCBNVVNUIHNlbGVjdCBhbGwgYXZhaWxhYmxlIGFjY2VzcyBrZXlzIGZv
ciBhc3NpZ25tZW50CisgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNGb3VuZFZhbGlkS2V5ID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwga2V5TGVuOyAr
K2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBrZXk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBrZXkuYXBwZW5kKGFjY2Vzc0tleVtrXSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWlzc3BhY2Uoc3RhdGljX2Nhc3Q8Y2hhcj4oYWNjZXNzS2V5W2tdKSkgJiYgIW1f
ZWxlbWVudHNCeUFjY2Vzc0tleS5jb250YWlucyhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9lbGVtZW50c0J5QWNjZXNzS2V5LnNldChrZXksIGVsZW1lbnQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzRm91bmRWYWxpZEtleSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNGb3VuZFZhbGlkS2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1f
YWNjZXNzS2V5TWFwVmFsaWQgPSB0cnVlOworICAgIH0KKworICAgIHJldHVybiBtX2VsZW1lbnRz
QnlBY2Nlc3NLZXkuZ2V0KGtleSk7Cit9CisKKyNlbHNlCiBFbGVtZW50KiBEb2N1bWVudDo6Z2V0
RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogewogICAgIGlmIChr
ZXkuaXNFbXB0eSgpKQpAQCAtOTYyLDYgKzEwNzIsNyBAQCBFbGVtZW50KiBEb2N1bWVudDo6Z2V0
RWxlbWVudEJ5QWNjZXNzS2V5CiAgICAgfQogICAgIHJldHVybiBtX2VsZW1lbnRzQnlBY2Nlc3NL
ZXkuZ2V0KGtleS5pbXBsKCkpOwogfQorI2VuZGlmCiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRp
dGxlKCkKIHsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNDA1NjApCisrKyBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDY3LDcgKzEwNjcsMTEgQEAgcHJpdmF0ZToKICAg
ICBtdXRhYmxlIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqPiBtX2VsZW1lbnRz
QnlJZDsKICAgICBtdXRhYmxlIEhhc2hDb3VudGVkU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBtX2R1
cGxpY2F0ZUlkczsKICAgICAKKyNpZiBFTkFCTEUoV0NTUykKKyAgICBtdXRhYmxlIEhhc2hNYXA8
U3RyaW5nLCBFbGVtZW50KiwgQ2FzZUZvbGRpbmdIYXNoPiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXk7
CisjZWxzZQogICAgIG11dGFibGUgSGFzaE1hcDxTdHJpbmdJbXBsKiwgRWxlbWVudCosIENhc2VG
b2xkaW5nSGFzaD4gbV9lbGVtZW50c0J5QWNjZXNzS2V5OworI2VuZGlmCiAgICAgCiAgICAgSW5o
ZXJpdGVkQm9vbCBtX2Rlc2lnbk1vZGU7CiAgICAgCkluZGV4OiBXZWJDb3JlL3BhZ2UvcXQvRXZl
bnRIYW5kbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRs
ZXJRdC5jcHAJKHJldmlzaW9uIDQwNTYwKQorKysgV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxl
clF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiwxMyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50CiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNj
ZXNzS2V5TW9kaWZpZXJzKCkKIHsKKyAgICAvLyBGSVhNRTogRm9yIFF0LCB0aGUgdGV4dCBjaGFy
YWN0ZXIgd29uJ3QgYmUgcGFzc2VkIHRvIFdlYkNvcmUgd2hlbiBpdCBpcworICAgIC8vIGlucHV0
ZWQgZm9sbG93aW5nIHRoZSBDdHJsIEtleS4gV2UnZCBiZXR0ZXIgdXNlIEFsdCBrZXkgYXMgYWNj
ZXNza2V5IG1vZGlmaWVyIAorI2lmIEVOQUJMRShXQ1NTKQorICAgIHJldHVybiBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkFsdEtleTsKKyNlbHNlCiAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Q3RybEtleTsKKyNlbmRpZgogfQogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MDYwOCkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDA5LTAyLTA0ICBZaWNoYW8gWWluICA8eWljaGFvLnlpbkB0b3JjaG1vYmlsZS5jb20uY24+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L3djc3M6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy9maXJzdC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3djc3MvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3djc3Mv
cmVzb3VyY2VzL2FjY2Vzc2tleS5jc3M6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy9zZWNv
bmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL3RoaXJkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC54aHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLnhodG1sOiBBZGRl
ZC4KKwogMjAwOS0wMi0wMyAgQnJhZCBHYXJjaWEgIDxiZ2FyY2lhQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dj
c3MvZmlyc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3MvZmlyc3Qu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9maXJzdC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+Cis8aDE+dGhpcyBpcyBm
aXJzdC5odG1sPC9oMT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
d2Nzcy9zZWNvbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvc2Vj
b25kLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvc2Vjb25kLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorPGh0bWw+Cit0aGlzIGlzIHNlY29uZC5o
dG1sCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3djc3MvdGhpcmQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3MvdGhpcmQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy90aGlyZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMgQEAKKzxodG1sPgorVGhpcyBpcyB0aGlyZC5odG1sCis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktZXh0ZXJuYWwueGh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWV4dGVybmFsLnhodG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWV4
dGVybmFsLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XQVBG
T1JVTS8vRFREIFhIVE1MIE1vYmlsZSAxLjEvL0VOIiAKKyAgICAgICAgImh0dHA6Ly93d3cud2Fw
Zm9ydW0ub3JnL0RURC94aHRtbC1tb2JpbGUxMS5kdGQiPgorCis8aHRtbCB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCI+IAorPGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNza2V5
IHRlc3Q6IGV4dGVybmFsIENTUzwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
InJlc291cmNlcy9hY2Nlc3NrZXkuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIvPgorPC9oZWFkPgorCis8
Ym9keT4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBp
cyBhcHBsaWVkIGFzIGFuIGV4dGVybmFsIENTUyA8L3A+IAorPHA+IGNsaWNrICdBTFQrMScgb3Ig
J0FMVCsjJyB3aWxsIGFjY2VzcyB0aGUgZmlyc3QuaHRtbCA8L3A+Cis8cD4gY2xpY2sgJ0FMVCsy
JyBvciAnQUxUKyonIHdpbGwgYWNjZXNzIHRoZSBzZWNvbmQuaHRtbCA8L3A+Cis8cD4gY2xpY2sg
J0FMVCszJyB3aWxsIGFjY2VzcyB0aGUgdGhpcmQuaHRtbCA8L3A+Cis8b2w+Cis8bGk+PGEgaHJl
Zj0iZmlyc3QuaHRtbCIgY2xhc3M9ImFjY2Vzc2tleSI+Zmlyc3QgWzEgfCAjXTwvYT48L2xpPgor
PGxpPjxhIGhyZWY9InNlY29uZC5odG1sIiBjbGFzcz0iYWNjZXNza2V5Ij5zZWNvbmQgWzIgfCAq
XTwvYT48L2xpPgorPGxpPjxhIGhyZWY9InRoaXJkLmh0bWwiIGNsYXNzPSJhY2Nlc3NrZXkiPnRo
aXJkWzNdPC9hPjwvbGk+Cis8L29sPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW5saW5lLnhodG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vV0FQRk9SVU0vL0RURCBY
SFRNTCBNb2JpbGUgMS4xLy9FTiIgCisgICAgICAgICJodHRwOi8vd3d3LndhcGZvcnVtLm9yZy9E
VEQveGh0bWwtbW9iaWxlMTEuZHRkIj4KKworPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNza2V5IHRlc3Q6IGlubGlu
ZSBDU1M8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keT4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNz
IEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIGFzIGFuIGlubGluZSBDU1MgPC9wPiAK
KzxwPiBjbGljayAnQUxUKzEnIHdpbGwgYWNjZXNzIHRoZSBmaXJzdC5odG1sIDwvcD4KKzxwPiBj
bGljayAnQUxUKzInIHdpbGwgYWNjZXNzIHRoZSBzZWNvbmQuaHRtbCA8L3A+Cis8cD4gY2xpY2sg
J0FMVCszJyBvciAnQUxUKyonIHdpbGwgYWNjZXNzIHRoZSB0aGlyZC5odG1sIDwvcD4KKzxvbD4K
KzxsaT48YSBocmVmPSJmaXJzdC5odG1sIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IHggeSwgMSxz
bmQsIDIsIDkgXDJhIj5maXJzdCBbMV08L2E+PC9saT4KKzxsaT48YSBocmVmPSJzZWNvbmQuaHRt
bCIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiAyLCAzLDQgXDJhIj5zZWNvbmQgWzJdPC9hPjwvbGk+
Cis8bGk+PGEgaHJlZj0idGhpcmQuaHRtbCIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiAzIFwyYSI+
dGhpcmQgWzMgfCAqXTwvYT48L2xpPgorPC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbnRlcm5hbC54aHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW50ZXJuYWwueGh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXkt
aW50ZXJuYWwueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1dB
UEZPUlVNLy9EVEQgWEhUTUwgTW9iaWxlIDEuMS8vRU4iIAorICAgICAgICAiaHR0cDovL3d3dy53
YXBmb3J1bS5vcmcvRFREL3hodG1sLW1vYmlsZTExLmR0ZCI+CisKKzxodG1sIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPldDU1MgYWNjZXNza2V5
IHRlc3Q6IGludGVybmFsIENTUzwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorYSB7
IC13YXAtYWNjZXNza2V5OiAxLCBzbmQsIDIgMTEgXDJhICwgXDIzfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKworPGJvZHk+Cis8cD4gVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24g
d2hpY2ggaXMgdXNlZCBhcyBhbiBpbnRlcm5hbCBDU1MgPC9wPiAKKzxwPiBjbGljayAnQUxUKzEn
IHdpbGwgYWNjZXNzIHRoZSBmaXJzdC5odG1sIDwvcD4KKzxwPiBjbGljayAnQUxUKzInIG9yICdB
TFQrKicgd2lsbCBhY2Nlc3MgdGhlIHNlY29uZC5odG1sIDwvcD4KKzxwPiBjbGljayAnQUxUKyMn
IHdpbGwgYWNjZXNzIHRoZSB0aGlyZC5odG1sIDwvcD4KKzxvbD4KKzxsaT48YSBocmVmPSJmaXJz
dC5odG1sIj5maXJzdCBbMV08L2E+PC9saT4KKzxsaT48YSBocmVmPSJzZWNvbmQuaHRtbCI+c2Vj
b25kIFsyIHwgKl08L2E+PC9saT4KKzxsaT48YSBocmVmPSJ0aGlyZC5odG1sIj50aGlyZCBbI108
L2E+PC9saT4KKzwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3djc3MvcmVzb3VyY2VzL2FjY2Vzc2tleS5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC93Y3NzL3Jlc291cmNlcy9hY2Nlc3NrZXkuY3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC93Y3NzL3Jlc291cmNlcy9hY2Nlc3NrZXkuY3NzCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxIEBACisuYWNjZXNza2V5IHsgLXdhcC1hY2Nlc3NrZXk6IDEgXDIzLCB0LCAyIFwyYSwg
MzsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27641</attachid>
            <date>2009-02-12 22:48:28 -0800</date>
            <delta_ts>2009-05-14 02:51:25 -0700</delta_ts>
            <desc>updated patch contains code changes</desc>
            <filename>addwcssaccesskey_codechange.patch</filename>
            <type>text/plain</type>
            <size>12424</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDk2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDItMTMgIFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNo
bW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgV0NTUyBhY2Nlc3NrZXkgZXh0ZW5zaW9uIHN1cHBvcnQgdG8gV2Via2l0Cisg
ICAgICAgIHJlZmVyIHRvOiBXQVAtMjM5LVdDU1MtMjAwMTEwMjYtYS5wZGYKKworICAgICAgICBU
ZXN0czogZmFzdC93Y3NzL2ZpcnN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd2Nzcy9zZWNv
bmQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93Y3NzL3RoaXJkLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC54aHRtbAorICAgICAgICAgICAg
ICAgZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRtbAorICAgICAgICAgICAgICAg
ZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLnhodG1sCisKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlV0NTU0FjY2Vzc0tleSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAq
IGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphY2Nlc3Nr
ZXlzRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0RWxlbWVudEJ5
QWNjZXNzS2V5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL3F0
L0V2ZW50SGFuZGxlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNj
ZXNzS2V5TW9kaWZpZXJzKToKKwogMjAwOS0wMi0xMiAgbWlnZ2lsaW4gIDxtci5kaWdnaWxpbkBn
bWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJl
dmlzaW9uIDQwODQ2KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAt
MTAxLDYgKzEwMSw3IEBAIENPTkZJRyhRVERJUl9idWlsZCkgewogIWNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9YUEFUSD0uKTogREVGSU5FUyArPSBFTkFCTEVfWFBBVEg9MQogIyFjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YQkw9MQogIWNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0gRU5BQkxFX1dNTD0wCishY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1hIVE1MTVA9Lik6IERFRklORVMgKz0gRU5BQkxFX1hIVE1MTVA9
MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9Lik6IERFRklORVMgKz0gRU5BQkxFX1NW
Rz0xCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWR19GT05UUz0uKTogREVGSU5FUyArPSBF
TkFCTEVfU1ZHX0ZPTlRTPTEKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHX0ZJTFRFUlM9
Lik6IERFRklORVMgKz0gRU5BQkxFX1NWR19GSUxURVJTPTEKQEAgLTE0NzYsNiArMTQ3NywxNSBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV01MPTEpIHsKICAgICBhZGRFeHRyYUNvbXBpbGVy
V2l0aEhlYWRlcih3bWxuYW1lc19iKQogfQogCitjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEhU
TUxNUD0xKSB7CisgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1hIVE1M
TVA9MQorICAgICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0NTUz0uKTogREVGSU5FUyArPSBF
TkFCTEVfV0NTUz0xCit9CisgCitjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0NTUz0xKSB7Cisg
ICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dDU1M9MQorfQorCiBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICBGRUFUVVJFX0RFRklORVNfSkFWQVND
UklQVCArPSBFTkFCTEVfU1ZHPTEKIApJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA0MDg0NikK
KysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODMsNiAr
MTU4MywxNCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJv
a2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKICAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKICAg
ICB9CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcEFjY2Vzc2tleToK
KyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHZhbGlkX3ByaW1p
dGl2ZSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcGFy
c2VXQ1NTQWNjZXNzS2V5KCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAgcmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hv
cnRoYW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246
CkBAIC0xNjIxLDYgKzE2MjksNTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShXQ1NTKSAgICAgICAK
K1Bhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlV0NTU0FjY2Vzc0tleSgp
Cit7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKKyAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlz
dC0+Y3VycmVudCgpOworICAgIENTU1BhcnNlclZhbHVlKiBuZXh0VmFsdWUgPSAwOyAKKyAgICBi
b29sIG5leHRJc1ZhbGlkU2VwYXJhdG9yID0gZmFsc2U7IAorICAgIGJvb2wgbmV4dElzVmFsaWRW
YWx1ZSA9IGZhbHNlOyAKKyAgICBTdHJpbmcga2V5czsKKyAgICB3aGlsZSAodmFsdWUpIHsKKyAg
ICAgICAgbmV4dFZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgbmV4dElzVmFs
aWRTZXBhcmF0b3IgPSAhbmV4dFZhbHVlIHx8IChuZXh0VmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2Vy
VmFsdWU6Ok9wZXJhdG9yICYmIG5leHRWYWx1ZS0+aVZhbHVlID09ICcsJyk7CisgICAgICAgIG5l
eHRJc1ZhbGlkVmFsdWUgPSBuZXh0VmFsdWUgJiYgKG5leHRWYWx1ZS0+dW5pdCA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiB8fCBuZXh0VmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19JREVOVCk7CisgCisgICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAgICAgICAgaW50IHZhbCA9IHN0YXRpY19j
YXN0PGludD4odmFsdWUtPmZWYWx1ZSk7CisgICAgICAgICAgICAvLyBIZXJlIHdlIGp1c3QgYWxs
b3cgdGhlIGlucHV0ZWQgYWNjZXNza2V5IG51bWJlciBpbiB0aGlzIHNjb3BlIFswLDldCisgICAg
ICAgICAgICBpZiAodmFsID49IDAgJiYgdmFsIDwgMTApIHsKKyAgICAgICAgICAgICAgICBrZXlz
ICs9ICIgIjsKKyAgICAgICAgICAgICAgICBrZXlzICs9IFN0cmluZzo6bnVtYmVyKHZhbHVlLT5m
VmFsdWUpOworICAgICAgICAgICAgfQorIAorICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT51bml0
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKKyAgICAgICAgICAgIFN0cmluZyBz
dHIgPSBTdHJpbmcodmFsdWUtPnN0cmluZyk7CisgICAgICAgICAgICAvL0hlcmUgd2UganVzdCBh
Y2NlcHQgdGhlIGlucHV0ZWQgY2hhcmFjdGVyIGluIHRoaXMgc2V0OiBbICogfCAjIF0KKyAgICAg
ICAgICAgIGlmIChzdHIgPT0gIioiIHx8IHN0ciA9PSAiIyIpIHsKKyAgICAgICAgICAgICAgICBr
ZXlzICs9ICIgIjsKKyAgICAgICAgICAgICAgICBrZXlzICs9IHN0cjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorIAorICAgICAgICBpZiAobmV4dElzVmFsaWRTZXBhcmF0b3IgJiYgIWtleXMu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShrZXlzLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOworICAgICAgICAg
ICAga2V5cyA9ICIiOworICAgICAgICB9CisgCisgICAgICAgIGlmICghbmV4dFZhbHVlKQorICAg
ICAgICAgICAgYnJlYWs7CisgCisgICAgICAgIGlmIChuZXh0SXNWYWxpZFZhbHVlKQorICAgICAg
ICAgICAgdmFsdWUgPSBuZXh0VmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVl
ID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICB9CisgCisgICAgaWYgKCFsaXN0LT5sZW5ndGgo
KSkKKyAgICAgICAgbGlzdCA9IDA7CisgCisgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworfQor
I2VuZGlmCisKIHZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYg
bHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcnZhbCkKIHsKICAgICBpZiAobHZhbCkgewpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgJKHJldmlzaW9uIDQwODQ2KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNWR1N0cm9rZURhc2hhcnJheSgpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoV0NTUykKKyAgICAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IHBhcnNlV0NTU0FjY2Vzc0tleSgpOworI2VuZGlmCisKICAgICAgICAgLy8gQ1NTMyBQYXJzaW5n
IFJvdXRpbmVzIChmb3IgcHJvcGVydGllcyBzcGVjaWZpYyB0byBDU1MzKQogICAgICAgICBib29s
IHBhcnNlU2hhZG93KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAgICAgYm9vbCBw
YXJzZUJvcmRlckltYWdlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50LCBSZWZQdHI8Q1NTVmFs
dWU+Jik7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDQwODQ2KQorKysg
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYg
KzE0Myw3IEBAIHdvcmQtc3BhY2luZwogd29yZC13cmFwCiB6LWluZGV4CiB6b29tCistd2FwLWFj
Y2Vzc2tleQogLXdlYmtpdC1hbmltYXRpb24KIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5CiAtd2Vi
a2l0LWFuaW1hdGlvbi1kaXJlY3Rpb24KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShy
ZXZpc2lvbiA0MDg0NikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDkwLDYgKzUwOTAsOSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKKyNpZiBFTkFCTEUoV0NTUykKKyAgICBjYXNlIENTU1By
b3BlcnR5V2FwQWNjZXNza2V5OgorI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRTaXplRGVsdGE6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0OgogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CkluZGV4OiBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiA0MDg0NikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTYxLDYgKzE2MSwxMiBAQAogI2luY2x1ZGUgIldNTE5hbWVzLmgiCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShXQ1NTKQorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJD
U1NSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2Rl
OwpAQCAtOTQ1LDYgKzk1MSwxMTEgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlRWxlbWVudEJ5SWQo
Y29uc3QgQQogICAgICAgICBtX2R1cGxpY2F0ZUlkcy5yZW1vdmUoZWxlbWVudElkLmltcGwoKSk7
CiB9CiAKKyNpZiBFTkFCTEUoV0NTUykKK3N0YXRpYyBTdHJpbmcgYWNjZXNza2V5c0ZvckVsZW1l
bnQoRWxlbWVudCogZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvcikKK3sK
KyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCisgCisgICAgU3Ry
aW5nIGFjY2Vzc0tleXM7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBlbGVtZW50
LT5zdHlsZSgpOworICAgIC8vMSwgVHJ5IHRvIGdldCBhY2NlY2NrZXlzIGZyb20gaW5saW5lIFdD
U1MgCisgICAgaWYgKHN0eWxlKQorICAgICAgICBhY2Nlc3NLZXlzID0gc3R5bGUtPmdldFByb3Bl
cnR5VmFsdWUoQ1NTUHJvcGVydHlXYXBBY2Nlc3NrZXkpOworIAorICAgIC8vMiwgVHJ5IHRvIGdl
dCBhY2NlY2NrZXlzIGZyb20gaW50ZXJuYWwgV0NTUyBhbmQgZXh0ZXJuYWwgV0NTUyBpbiB0dXJu
CisgICAgaWYgKGFjY2Vzc0tleXMuaXNFbXB0eSgpICYmIHN0eWxlU2VsZWN0b3IpIHsKKyAgICAg
ICAgUmVmUHRyPENTU1J1bGVMaXN0PiBydWxlcyA9IHN0eWxlU2VsZWN0b3ItPnN0eWxlUnVsZXNG
b3JFbGVtZW50KGVsZW1lbnQsIGZhbHNlKTsKKyAgICAgICAgaWYgKHJ1bGVzICYmIHJ1bGVzLT5s
ZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgIENTU1J1bGUqIHJ1bGUgPSAwOworICAgICAgICAg
ICAgU3RyaW5nIGNzc1RleHQ7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVz
LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgcnVsZSA9IHJ1bGVzLT5pdGVtKGkp
OworICAgICAgICAgICAgICAgIGNzc1RleHQgPSBydWxlLT5jc3NUZXh0KCk7CisgCisgICAgICAg
ICAgICAgICAgaW50IGlkeCA9IGNzc1RleHQuZmluZCgiLXdhcC1hY2Nlc3NrZXkiKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaWR4ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBwb3Mg
PSBjc3NUZXh0LmZpbmQoJzonLCBpZHgpOworICAgICAgICAgICAgICAgICAgICBhY2Nlc3NLZXlz
ID0gY3NzVGV4dC5zdWJzdHJpbmcocG9zICsgMSk7CisgCisgICAgICAgICAgICAgICAgICAgIHBv
cyA9IGFjY2Vzc0tleXMuZmluZCgnOycpOworICAgICAgICAgICAgICAgICAgICBpZiAocG9zID09
IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gYWNjZXNzS2V5cy5maW5kKCd9Jyk7
CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc0tleXMudHJ1bmNhdGUocG9zKTsKKyAgICAgICAg
ICAgICAgICB9CisgCisgICAgICAgICAgICAgICAgaWYgKCFhY2Nlc3NLZXlzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgCisgICAgLy8zLCBUcnkgdG8gZ2V0IGFjY2VjY2tleXMgZnJvbSB0aGUgYWNjZXNza2V5
IGF0dHJpYnV0ZSBvZiBlbGVtZW50CisgICAgaWYgKGFjY2Vzc0tleXMuaXNFbXB0eSgpKQorICAg
ICAgICBhY2Nlc3NLZXlzID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGFjY2Vzc2tleUF0dHIpOwor
IAorICAgIGlmICghYWNjZXNzS2V5cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYWNjZXNzS2V5cy5y
ZXBsYWNlKCdcJycsICIiKTsKKyAgICAgICAgYWNjZXNzS2V5cyA9IGFjY2Vzc0tleXMuc2ltcGxp
ZnlXaGl0ZVNwYWNlKCk7CisgICAgfQorIAorICAgIHJldHVybiBhY2Nlc3NLZXlzOworfQorCitF
bGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5
KSBjb25zdAoreworICAgIGlmIChrZXkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmICghbV9hY2Nlc3NLZXlNYXBWYWxpZCkgeworICAgICAgICBmb3IgKE5vZGUqIG4gPSBm
aXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAgICAgICAg
IGlmICghbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwor
ICAgICAgICAgICAgU3RyaW5nIGFjY2Vzc0tleVN0cmluZyA9IGFjY2Vzc2tleXNGb3JFbGVtZW50
KGVsZW1lbnQsIG1fc3R5bGVTZWxlY3Rvcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHZLZXlzOworICAgICAgICAgICAgYWNjZXNzS2V5U3RyaW5nLnNwbGl0KCIsIiwgdktleXMpOwor
CisgICAgICAgICAgICBTdHJpbmcgYWNjZXNzS2V5OworICAgICAgICAgICAgVmVjdG9yPFN0cmlu
Zz46Oml0ZXJhdG9yIGl0ID0gdktleXMuYmVnaW4oKTsKKyAgICAgICAgICAgIHdoaWxlIChpdCAh
PSB2S2V5cy5lbmQoKSkgeworICAgICAgICAgICAgICAgIGFjY2Vzc0tleSA9ICppdCsrOworICAg
ICAgICAgICAgICAgIGFjY2Vzc0tleSA9IGFjY2Vzc0tleS5zdHJpcFdoaXRlU3BhY2UoKTsKKwor
ICAgICAgICAgICAgICAgIGludCBrZXlMZW4gPSBhY2Nlc3NLZXkubGVuZ3RoKCk7CisgICAgICAg
ICAgICAgICAgaWYgKGtleUxlbiA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9l
bGVtZW50c0J5QWNjZXNzS2V5LmNvbnRhaW5zKGFjY2Vzc0tleSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5zZXQoYWNjZXNzS2V5LCBlbGVtZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQXMgcGVyIHRo
ZSBzcGVjaWZpY2F0aW9uIFdBUC0yMzktV0NTUy0yMDAxMTAyNi1hLnBkZiwgCisgICAgICAgICAg
ICAgICAgICAgIC8vIEluIGEgc3BhY2UgIiAiIHNlcGFyYXRlZCBsaXN0IG9mIGFjY2VzcyBrZXlz
IHRoZSB1c2VyIAorICAgICAgICAgICAgICAgICAgICAvLyBhZ2VudCBNVVNUIHNlbGVjdCBhbGwg
YXZhaWxhYmxlIGFjY2VzcyBrZXlzIGZvciBhc3NpZ25tZW50CisgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNGb3VuZFZhbGlkS2V5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
aW50IGsgPSAwOyBrIDwga2V5TGVuOyArK2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0
cmluZyBrZXk7CisgICAgICAgICAgICAgICAgICAgICAgICBrZXkuYXBwZW5kKGFjY2Vzc0tleVtr
XSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzc3BhY2Uoc3RhdGljX2Nhc3Q8Y2hh
cj4oYWNjZXNzS2V5W2tdKSkgJiYgIW1fZWxlbWVudHNCeUFjY2Vzc0tleS5jb250YWlucyhrZXkp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lbGVtZW50c0J5QWNjZXNzS2V5LnNl
dChrZXksIGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm91bmRWYWxp
ZEtleSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoaXNGb3VuZFZhbGlkS2V5KQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIG1fYWNjZXNzS2V5TWFwVmFsaWQgPSB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuZ2V0KGtleSk7Cit9CisKKyNlbHNl
CiBFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYg
a2V5KSBjb25zdAogewogICAgIGlmIChrZXkuaXNFbXB0eSgpKQpAQCAtOTYyLDYgKzEwNzMsNyBA
QCBFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5CiAgICAgfQogICAgIHJl
dHVybiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuZ2V0KGtleS5pbXBsKCkpOwogfQorI2VuZGlmCiAK
IHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKCkKIHsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNDA4
NDYpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDY3LDcg
KzEwNjcsMTEgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1w
bCosIEVsZW1lbnQqPiBtX2VsZW1lbnRzQnlJZDsKICAgICBtdXRhYmxlIEhhc2hDb3VudGVkU2V0
PEF0b21pY1N0cmluZ0ltcGwqPiBtX2R1cGxpY2F0ZUlkczsKICAgICAKKyNpZiBFTkFCTEUoV0NT
UykKKyAgICBtdXRhYmxlIEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQ2FzZUZvbGRpbmdIYXNo
PiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXk7CisjZWxzZQogICAgIG11dGFibGUgSGFzaE1hcDxTdHJp
bmdJbXBsKiwgRWxlbWVudCosIENhc2VGb2xkaW5nSGFzaD4gbV9lbGVtZW50c0J5QWNjZXNzS2V5
OworI2VuZGlmCiAgICAgCiAgICAgSW5oZXJpdGVkQm9vbCBtX2Rlc2lnbk1vZGU7CiAgICAgCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHJldmlzaW9uIDQwODQ2KQorKysgV2Vi
Q29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcg
KzEzMiwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50CiAKIHVu
c2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKKyAgICAvLyBGSVhN
RTogRm9yIFF0LCB0aGUgdGV4dCBjaGFyYWN0ZXIgd29uJ3QgYmUgcGFzc2VkIHRvIFdlYkNvcmUg
d2hlbiBpdCBpcworICAgIC8vIGlucHV0ZWQgZm9sbG93aW5nIHRoZSBDdHJsIEtleS4gV2UnZCBi
ZXR0ZXIgdXNlIEFsdCBrZXkgYXMgYWNjZXNza2V5IG1vZGlmaWVyIAorI2lmIEVOQUJMRShXQ1NT
KQorICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyNlbHNlCiAgICAg
cmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleTsKKyNlbmRpZgogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27642</attachid>
            <date>2009-02-12 22:49:37 -0800</date>
            <delta_ts>2009-05-14 02:50:32 -0700</delta_ts>
            <desc>patch for layout tests</desc>
            <filename>addwcssaccesskey_layouttests.patch</filename>
            <type>text/plain</type>
            <size>7064</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQwOTY1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMDItMTMgIFlpY2hhbyBZaW4gIDx5aWNo
YW8ueWluQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qvd2NzczogQWRkZWQuCisgICAgICAgICogZmFzdC93
Y3NzL2ZpcnN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy9yZXNvdXJjZXM6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy9yZXNvdXJjZXMvYWNjZXNza2V5LmNzczogQWRkZWQu
CisgICAgICAgICogZmFzdC93Y3NzL3NlY29uZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3djc3MvdGhpcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL3djc3MtYWNjZXNz
a2V5LWV4dGVybmFsLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3djc3Mvd2Nzcy1hY2Nl
c3NrZXktaW5saW5lLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3djc3Mvd2Nzcy1hY2Nl
c3NrZXktaW50ZXJuYWwueGh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9Ta2lwcGVkOgorCiAyMDA5LTAyLTEyICBIb3JpYSBPbGFydSAgPG9sYXJ1QGFkb2JlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3Qvd2Nzcy9maXJzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nz
cy9maXJzdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2ZpcnN0
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKzxoMT50
aGlzIGlzIGZpcnN0Lmh0bWw8L2gxPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC93Y3NzL3NlY29uZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
d2Nzcy9zZWNvbmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9z
ZWNvbmQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACis8aHRtbD4KK3RoaXMgaXMg
c2Vjb25kLmh0bWwKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy90aGlyZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy90aGlyZC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3RoaXJkLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorPGh0bWw+CitUaGlzIGlzIHRoaXJkLmh0bWwKKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC54aHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktZXh0ZXJu
YWwueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nl
c3NrZXktZXh0ZXJuYWwueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMg
Ii0vL1dBUEZPUlVNLy9EVEQgWEhUTUwgTW9iaWxlIDEuMS8vRU4iIAorICAgICAgICAiaHR0cDov
L3d3dy53YXBmb3J1bS5vcmcvRFREL3hodG1sLW1vYmlsZTExLmR0ZCI+CisKKzxodG1sIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4gCis8aGVhZD4KKzx0aXRsZT4gV0NTUyBh
Y2Nlc3NrZXkgdGVzdDogZXh0ZXJuYWwgQ1NTPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0icmVzb3VyY2VzL2FjY2Vzc2tleS5jc3MiIHR5cGU9InRleHQvY3NzIi8+Cis8L2hl
YWQ+CisKKzxib2R5PgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5zaW9u
IHdoaWNoIGlzIGFwcGxpZWQgYXMgYW4gZXh0ZXJuYWwgQ1NTIDwvcD4gCis8cD4gY2xpY2sgJ0FM
VCsxJyBvciAnQUxUKyMnIHdpbGwgYWNjZXNzIHRoZSBmaXJzdC5odG1sIDwvcD4KKzxwPiBjbGlj
ayAnQUxUKzInIG9yICdBTFQrKicgd2lsbCBhY2Nlc3MgdGhlIHNlY29uZC5odG1sIDwvcD4KKzxw
PiBjbGljayAnQUxUKzMnIHdpbGwgYWNjZXNzIHRoZSB0aGlyZC5odG1sIDwvcD4KKzxvbD4KKzxs
aT48YSBocmVmPSJmaXJzdC5odG1sIiBjbGFzcz0iYWNjZXNza2V5Ij5maXJzdCBbMSB8ICNdPC9h
PjwvbGk+Cis8bGk+PGEgaHJlZj0ic2Vjb25kLmh0bWwiIGNsYXNzPSJhY2Nlc3NrZXkiPnNlY29u
ZCBbMiB8ICpdPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0idGhpcmQuaHRtbCIgY2xhc3M9ImFjY2Vz
c2tleSI+dGhpcmRbM108L2E+PC9saT4KKzwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW5saW5lLnhodG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbmxpbmUueGh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW5s
aW5lLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XQVBGT1JV
TS8vRFREIFhIVE1MIE1vYmlsZSAxLjEvL0VOIiAKKyAgICAgICAgImh0dHA6Ly93d3cud2FwZm9y
dW0ub3JnL0RURC94aHRtbC1tb2JpbGUxMS5kdGQiPgorCis8aHRtbCB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT4gV0NTUyBhY2Nlc3NrZXkgdGVz
dDogaW5saW5lIENTUzwvdGl0bGU+Cis8L2hlYWQ+CisKKzxib2R5PgorPHA+IFRlc3QgZm9yIFdB
UCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5zaW9uIHdoaWNoIGlzIHVzZWQgYXMgYW4gaW5saW5lIENT
UyA8L3A+IAorPHA+IGNsaWNrICdBTFQrMScgd2lsbCBhY2Nlc3MgdGhlIGZpcnN0Lmh0bWwgPC9w
PgorPHA+IGNsaWNrICdBTFQrMicgd2lsbCBhY2Nlc3MgdGhlIHNlY29uZC5odG1sIDwvcD4KKzxw
PiBjbGljayAnQUxUKzMnIG9yICdBTFQrKicgd2lsbCBhY2Nlc3MgdGhlIHRoaXJkLmh0bWwgPC9w
PgorPG9sPgorPGxpPjxhIGhyZWY9ImZpcnN0Lmh0bWwiIHN0eWxlPSItd2FwLWFjY2Vzc2tleTog
eCB5LCAxLHNuZCwgMiwgOSBcMmEiPmZpcnN0IFsxXTwvYT48L2xpPgorPGxpPjxhIGhyZWY9InNl
Y29uZC5odG1sIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IDIsIDMsNCBcMmEiPnNlY29uZCBbMl08
L2E+PC9saT4KKzxsaT48YSBocmVmPSJ0aGlyZC5odG1sIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6
IDMgXDJhIj50aGlyZCBbMyB8ICpdPC9hPjwvbGk+Cis8L29sPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLnhodG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbnRl
cm5hbC54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFj
Y2Vzc2tleS1pbnRlcm5hbC54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBodG1sIFBVQkxJ
QyAiLS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4xLy9FTiIgCisgICAgICAgICJodHRw
Oi8vd3d3LndhcGZvcnVtLm9yZy9EVEQveGh0bWwtbW9iaWxlMTEuZHRkIj4KKworPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+V0NTUyBh
Y2Nlc3NrZXkgdGVzdDogaW50ZXJuYWwgQ1NTPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CithIHsgLXdhcC1hY2Nlc3NrZXk6IDEsIHNuZCwgMiAxMSBcMmEgLCBcMjN9Cis8L3N0eWxl
PgorPC9oZWFkPgorCis8Ym9keT4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4
dGVuc2lvbiB3aGljaCBpcyB1c2VkIGFzIGFuIGludGVybmFsIENTUyA8L3A+IAorPHA+IGNsaWNr
ICdBTFQrMScgd2lsbCBhY2Nlc3MgdGhlIGZpcnN0Lmh0bWwgPC9wPgorPHA+IGNsaWNrICdBTFQr
Micgb3IgJ0FMVCsqJyB3aWxsIGFjY2VzcyB0aGUgc2Vjb25kLmh0bWwgPC9wPgorPHA+IGNsaWNr
ICdBTFQrIycgd2lsbCBhY2Nlc3MgdGhlIHRoaXJkLmh0bWwgPC9wPgorPG9sPgorPGxpPjxhIGhy
ZWY9ImZpcnN0Lmh0bWwiPmZpcnN0IFsxXTwvYT48L2xpPgorPGxpPjxhIGhyZWY9InNlY29uZC5o
dG1sIj5zZWNvbmQgWzIgfCAqXTwvYT48L2xpPgorPGxpPjxhIGhyZWY9InRoaXJkLmh0bWwiPnRo
aXJkIFsjXTwvYT48L2xpPgorPC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3Qvd2Nzcy9yZXNvdXJjZXMvYWNjZXNza2V5LmNzcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3djc3MvcmVzb3VyY2VzL2FjY2Vzc2tleS5jc3MJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3djc3MvcmVzb3VyY2VzL2FjY2Vzc2tleS5jc3MJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEgQEAKKy5hY2Nlc3NrZXkgeyAtd2FwLWFjY2Vzc2tleTogMSBcMjMsIHQs
IDIgXDJhLCAzOyB9CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gNDA4
NDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpA
QCAtMjIxNiwzICsyMjE2LDggQEAgcGx1Z2lucy9uZXRzY2FwZS1kb20tYWNjZXNzLmh0bWwKICMg
VGVzdHMgaW4gdHJhbnNpdGlvbnMvIGRpcmVjdG9yeQogIyBUZXN0cyBnZW5lcmF0aW5nIG5ldyBy
ZXN1bHRzCiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWRydC1hcGkuaHRtbAorCisjIFRlc3RzIGZv
ciBXQ1NTIGFjY2Vzc2tleSBleHRlbnNpb24gd2hpY2ggaXMgbm90IHZlcmlmaWVkIG9uIEdUSwor
ZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWV4dGVybmFsLnhodG1sCitmYXN0L3djc3Mvd2Nzcy1h
Y2Nlc3NrZXktaW5saW5lLnhodG1sCitmYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW50ZXJuYWwu
eGh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCShyZXZpc2lvbiA0MDg0NikKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC00Niwz
ICs0Niw4IEBAIHRhYmxlcy9tb3ppbGxhX2V4cGVjdGVkX2ZhaWx1cmVzL2J1Z3MvYnUKIAogIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MTMgUmVwYWludCBwaXhl
bCB0ZXN0IGZhaWx1cmUKIGZhc3QvcmVwYWludC9ib2R5LWJhY2tncm91bmQtaW1hZ2UuaHRtbAor
CisjIFRlc3RzIGZvciBXQ1NTIGFjY2Vzc2tleSBleHRlbnNpb24gd2hpY2ggaXMgbm90IHZlcmlm
aWVkIG9uIE1BQyAKK2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC54aHRtbAorZmFz
dC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRtbAorZmFzdC93Y3NzL3djc3MtYWNjZXNz
a2V5LWludGVybmFsLnhodG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNp
b24gNDA4NDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBj
b3B5KQpAQCAtNDM2LDMgKzQzNiw4IEBAIHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZHJ0LWFwaS5o
dG1sCiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWRydC1hcGktZGVsYXkuaHRtbAogdHJhbnNpdGlv
bnMvdHJhbnNpdGlvbi1zaG9ydGhhbmQtZGVsYXkuaHRtbAogdHJhbnNpdGlvbnMvemVyby1kdXJh
dGlvbi1ub24temVyby1kZWxheS1lbmQuaHRtbAorCisjIFRlc3RzIGZvciBXQ1NTIGFjY2Vzc2tl
eSBleHRlbnNpb24gd2hpY2ggaXMgbm90IHZlcmlmaWVkIG9uIFdpbmRvd3MgCitmYXN0L3djc3Mv
d2Nzcy1hY2Nlc3NrZXktZXh0ZXJuYWwueGh0bWwKK2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1p
bmxpbmUueGh0bWwKK2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbnRlcm5hbC54aHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30324</attachid>
            <date>2009-05-14 02:50:32 -0700</date>
            <delta_ts>2010-06-10 20:30:05 -0700</delta_ts>
            <desc>Updated patch for adding tests</desc>
            <filename>WCSSAccesskeyTests.patch</filename>
            <type>text/plain</type>
            <size>7162</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQzNjg5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDUtMTQgIFlpY2hhbyBZaW4gIDx5aWNo
YW8ueWluQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFdDU1MgYWNjZXNza2V5IGV4dGVuc2lv
biBzdXBwb3J0CisKKyAgICAgICAgKiBmYXN0L3djc3M6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
d2Nzcy9maXJzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3djc3MvcmVzb3VyY2VzOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3djc3MvcmVzb3VyY2VzL2FjY2Vzc2tleS5jc3M6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvd2Nzcy9zZWNvbmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC93Y3NzL3RoaXJkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy93Y3NzLWFjY2Vz
c2tleS1leHRlcm5hbC54aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL3djc3MtYWNj
ZXNza2V5LWlubGluZS54aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL3djc3MtYWNj
ZXNza2V5LWludGVybmFsLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vU2tpcHBlZDoKKwogMjAwOS0wNS0xMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBObyByZXZpZXcuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3djc3MvZmlyc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3MvZmly
c3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9maXJzdC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+Cis8aDE+dGhpcyBp
cyBmaXJzdC5odG1sPC9oMT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3Qvd2Nzcy9zZWNvbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3Mv
c2Vjb25kLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvc2Vjb25k
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorPGh0bWw+Cit0aGlzIGlzIHNlY29u
ZC5odG1sCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3djc3MvdGhpcmQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3MvdGhpcmQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy90aGlyZC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMgQEAKKzxodG1sPgorVGhpcyBpcyB0aGlyZC5odG1sCis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktZXh0ZXJuYWwueGh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWV4dGVybmFsLnho
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5
LWV4dGVybmFsLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9X
QVBGT1JVTS8vRFREIFhIVE1MIE1vYmlsZSAxLjEvL0VOIiAKKyAgICAgICAgImh0dHA6Ly93d3cu
d2FwZm9ydW0ub3JnL0RURC94aHRtbC1tb2JpbGUxMS5kdGQiPgorCis8aHRtbCB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+IAorPGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNz
a2V5IHRlc3Q6IGV4dGVybmFsIENTUzwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy9hY2Nlc3NrZXkuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIvPgorPC9oZWFkPgor
Cis8Ym9keT4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGlj
aCBpcyBhcHBsaWVkIGFzIGFuIGV4dGVybmFsIENTUyA8L3A+IAorPHA+IGNsaWNrICdBTFQrMScg
b3IgJ0FMVCsjJyB3aWxsIGFjY2VzcyB0aGUgZmlyc3QuaHRtbCA8L3A+Cis8cD4gY2xpY2sgJ0FM
VCsyJyBvciAnQUxUKyonIHdpbGwgYWNjZXNzIHRoZSBzZWNvbmQuaHRtbCA8L3A+Cis8cD4gY2xp
Y2sgJ0FMVCszJyB3aWxsIGFjY2VzcyB0aGUgdGhpcmQuaHRtbCA8L3A+Cis8b2w+Cis8bGk+PGEg
aHJlZj0iZmlyc3QuaHRtbCIgY2xhc3M9ImFjY2Vzc2tleSI+Zmlyc3QgWzEgfCAjXTwvYT48L2xp
PgorPGxpPjxhIGhyZWY9InNlY29uZC5odG1sIiBjbGFzcz0iYWNjZXNza2V5Ij5zZWNvbmQgWzIg
fCAqXTwvYT48L2xpPgorPGxpPjxhIGhyZWY9InRoaXJkLmh0bWwiIGNsYXNzPSJhY2Nlc3NrZXki
PnRoaXJkWzNdPC9hPjwvbGk+Cis8L29sPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW5saW5lLnhodG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vV0FQRk9SVU0vL0RU
RCBYSFRNTCBNb2JpbGUgMS4xLy9FTiIgCisgICAgICAgICJodHRwOi8vd3d3LndhcGZvcnVtLm9y
Zy9EVEQveGh0bWwtbW9iaWxlMTEuZHRkIj4KKworPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNza2V5IHRlc3Q6IGlu
bGluZSBDU1M8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keT4KKzxwPiBUZXN0IGZvciBXQVAgQWNj
ZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIGFzIGFuIGlubGluZSBDU1MgPC9w
PiAKKzxwPiBjbGljayAnQUxUKzEnIHdpbGwgYWNjZXNzIHRoZSBmaXJzdC5odG1sIDwvcD4KKzxw
PiBjbGljayAnQUxUKzInIHdpbGwgYWNjZXNzIHRoZSBzZWNvbmQuaHRtbCA8L3A+Cis8cD4gY2xp
Y2sgJ0FMVCszJyBvciAnQUxUKyonIHdpbGwgYWNjZXNzIHRoZSB0aGlyZC5odG1sIDwvcD4KKzxv
bD4KKzxsaT48YSBocmVmPSJmaXJzdC5odG1sIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IHggeSwg
MSxzbmQsIDIsIDkgXDJhIj5maXJzdCBbMV08L2E+PC9saT4KKzxsaT48YSBocmVmPSJzZWNvbmQu
aHRtbCIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiAyLCAzLDQgXDJhIj5zZWNvbmQgWzJdPC9hPjwv
bGk+Cis8bGk+PGEgaHJlZj0idGhpcmQuaHRtbCIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiAzIFwy
YSI+dGhpcmQgWzMgfCAqXTwvYT48L2xpPgorPC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbnRlcm5hbC54aHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW50ZXJuYWwu
eGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3Nr
ZXktaW50ZXJuYWwueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0v
L1dBUEZPUlVNLy9EVEQgWEhUTUwgTW9iaWxlIDEuMS8vRU4iIAorICAgICAgICAiaHR0cDovL3d3
dy53YXBmb3J1bS5vcmcvRFREL3hodG1sLW1vYmlsZTExLmR0ZCI+CisKKzxodG1sIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPldDU1MgYWNjZXNz
a2V5IHRlc3Q6IGludGVybmFsIENTUzwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgor
YSB7IC13YXAtYWNjZXNza2V5OiAxLCBzbmQsIDIgMTEgXDJhICwgXDIzfQorPC9zdHlsZT4KKzwv
aGVhZD4KKworPGJvZHk+Cis8cD4gVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNp
b24gd2hpY2ggaXMgdXNlZCBhcyBhbiBpbnRlcm5hbCBDU1MgPC9wPiAKKzxwPiBjbGljayAnQUxU
KzEnIHdpbGwgYWNjZXNzIHRoZSBmaXJzdC5odG1sIDwvcD4KKzxwPiBjbGljayAnQUxUKzInIG9y
ICdBTFQrKicgd2lsbCBhY2Nlc3MgdGhlIHNlY29uZC5odG1sIDwvcD4KKzxwPiBjbGljayAnQUxU
KyMnIHdpbGwgYWNjZXNzIHRoZSB0aGlyZC5odG1sIDwvcD4KKzxvbD4KKzxsaT48YSBocmVmPSJm
aXJzdC5odG1sIj5maXJzdCBbMV08L2E+PC9saT4KKzxsaT48YSBocmVmPSJzZWNvbmQuaHRtbCI+
c2Vjb25kIFsyIHwgKl08L2E+PC9saT4KKzxsaT48YSBocmVmPSJ0aGlyZC5odG1sIj50aGlyZCBb
I108L2E+PC9saT4KKzwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3djc3MvcmVzb3VyY2VzL2FjY2Vzc2tleS5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC93Y3NzL3Jlc291cmNlcy9hY2Nlc3NrZXkuY3NzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC93Y3NzL3Jlc291cmNlcy9hY2Nlc3NrZXkuY3NzCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxIEBACisuYWNjZXNza2V5IHsgLXdhcC1hY2Nlc3NrZXk6IDEgXDIzLCB0LCAyIFwy
YSwgMzsgfQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDQzNjgxKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU5
NDIsMyArNTk0Miw4IEBAIHdlYmFyY2hpdmUvdGVzdC1zY3JpcHQtc3JjLmh0bWwKIHdlYmFyY2hp
dmUvdGVzdC10YWJsZS1iYWNrZ3JvdW5kLmh0bWwKIHdlYmFyY2hpdmUvdGVzdC10ZC1iYWNrZ3Jv
dW5kLmh0bWwKIHdlYmFyY2hpdmUvdGVzdC14bWwtc3R5bGVzaGVldC54bWwKKworIyBUZXN0cyBm
b3IgV0NTUyBhY2Nlc3NrZXkgZXh0ZW5zaW9uIHdoaWNoIGlzIG5vdCB2ZXJpZmllZAorZmFzdC93
Y3NzL3djc3MtYWNjZXNza2V5LWV4dGVybmFsLnhodG1sCitmYXN0L3djc3Mvd2Nzcy1hY2Nlc3Nr
ZXktaW5saW5lLnhodG1sCitmYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW50ZXJuYWwueGh0bWwK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCShyZXZpc2lvbiA0MzY4MSkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC02NiwzICs2Niw4
IEBAIHN2Zy9oaXhpZS9wZXJmLzAwMi54bWwKIAogIyA8cmRhcjovL3Byb2JsZW0vNjcxMDYyNT4g
VGVzdCBtZWRpYS92aWRlby1lcnJvci1hYm9ydC5odG1sIGRvZXNuJ3Qgd29yawogbWVkaWEvdmlk
ZW8tZXJyb3ItYWJvcnQuaHRtbAorCisjIFRlc3RzIGZvciBXQ1NTIGFjY2Vzc2tleSBleHRlbnNp
b24gd2hpY2ggaXMgbm90IHZlcmlmaWVkCitmYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktZXh0ZXJu
YWwueGh0bWwKK2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbmxpbmUueGh0bWwKK2Zhc3Qvd2Nz
cy93Y3NzLWFjY2Vzc2tleS1pbnRlcm5hbC54aHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQJKHJldmlzaW9uIDQzNjgxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQJKHdvcmtpbmcgY29weSkKQEAgLTU5NSwzICs1OTUsOCBAQCBtZWRpYS92aWRlby1kb2N1bWVu
dC10eXBlcy5odG1sCiAjIEJ1ZyAyNTU4MzogTmV3IFNWRyByZWdyZXNzaW9uIHRlc3RzIGFkZGVk
IGluIHI0MzI2OSBmYWlsIG9uIFdpbmRvd3MgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNTU4Mz4KIHN2Zy90cmFuc2Zvcm1zL3RleHQtd2l0aC1wYXR0ZXJuLWluc2lk
ZS10cmFuc2Zvcm1lZC1odG1sLnhodG1sCiBzdmcvdHJhbnNmb3Jtcy90ZXh0LXdpdGgtcGF0dGVy
bi13aXRoLXN2Zy10cmFuc2Zvcm0uc3ZnCisKKyMgVGVzdHMgZm9yIFdDU1MgYWNjZXNza2V5IGV4
dGVuc2lvbiB3aGljaCBpcyBub3QgdmVyaWZpZWQKK2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1l
eHRlcm5hbC54aHRtbAorZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRtbAorZmFz
dC93Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLnhodG1sCg==
</data>
<flag name="review"
          id="15267"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30325</attachid>
            <date>2009-05-14 02:51:25 -0700</date>
            <delta_ts>2009-05-18 02:02:20 -0700</delta_ts>
            <desc>Updated patch for code changes</desc>
            <filename>WCSSAccesskeyChange.patch</filename>
            <type>text/plain</type>
            <size>12268</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzY4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDUtMTQgIFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNo
bW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgV0NTUyBhY2Nlc3NrZXkgZXh0ZW5zaW9uIHN1cHBvcnQgdG8gV2Via2l0Cisg
ICAgICAgIHJlZmVyIHRvOiBXQVAtMjM5LVdDU1MtMjAwMTEwMjYtYS5wZGYKKworICAgICAgICBU
ZXN0czogZmFzdC93Y3NzL2ZpcnN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd2Nzcy9zZWNv
bmQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93Y3NzL3RoaXJkLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC54aHRtbAorICAgICAgICAgICAg
ICAgZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRtbAorICAgICAgICAgICAgICAg
ZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLnhodG1sCisKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlV0NTU0FjY2Vzc0tleSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAq
IGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphY2Nlc3Nr
ZXlzRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0RWxlbWVudEJ5
QWNjZXNzS2V5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL3F0
L0V2ZW50SGFuZGxlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNj
ZXNzS2V5TW9kaWZpZXJzKToKKwogMjAwOS0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNDM2ODEp
CisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcg
QEAgQ09ORklHKFFURElSX2J1aWxkKSB7CiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RBU0hC
T0FSRF9TVVBQT1JUPS4pOiBERUZJTkVTICs9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVD0wCiAh
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hQQVRIPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YUEFU
SD0xCiAjIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YQkw9Lik6IERFRklORVMgKz0gRU5BQkxF
X1hCTD0xCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dDU1M9Lik6IERFRklORVMgKz0gRU5B
QkxFX1dDU1M9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0g
RU5BQkxFX1dNTD0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dPUktFUlM9Lik6IERFRklO
RVMgKz0gRU5BQkxFX1dPUktFUlM9MQogCkBAIC0xNDc2LDYgKzE0NzcsMTEgQEAgY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1hCTD0xKSB7CiAgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQg
Kz0gRU5BQkxFX1hCTD0xCiB9CiAKK2NvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XQ1NTPTEpIHsK
KyAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfV0NTUz0xCisgICAgIWNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9YSFRNTE1QPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YSFRN
TE1QPTEKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dNTD0xKSB7CiAgICAgU09VUkNF
UyArPSBcCiAgICAgICAgIHdtbC9XTUxBRWxlbWVudC5jcHAgXApJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShy
ZXZpc2lvbiA0MzY4MSkKKysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MTQsNiArMTYxNCwxNCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBiCiAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3Ig
fTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwg
aW1wb3J0YW50KTsKICAgICB9CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdhcEFjY2Vzc2tleToKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAg
ICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBh
cnNlZFZhbHVlID0gcGFyc2VXQ1NTQWNjZXNzS2V5KCk7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAgcmV0dXJuIHBh
cnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zaXRpb246CkBAIC0xNjUzLDYgKzE2NjEsNTggQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlVmFsdWUoaW50IHByb3BJZCwgYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJM
RShXQ1NTKSAgICAgICAKK1Bhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNl
V0NTU0FjY2Vzc0tleSgpCit7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBDU1NQYXJzZXJWYWx1ZSogdmFs
dWUgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOworICAgIENTU1BhcnNlclZhbHVlKiBuZXh0VmFs
dWUgPSAwOyAKKyAgICBib29sIG5leHRJc1ZhbGlkU2VwYXJhdG9yID0gZmFsc2U7IAorICAgIGJv
b2wgbmV4dElzVmFsaWRWYWx1ZSA9IGZhbHNlOyAKKyAgICBTdHJpbmcga2V5czsKKyAgICB3aGls
ZSAodmFsdWUpIHsKKyAgICAgICAgbmV4dFZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAg
ICAgICAgbmV4dElzVmFsaWRTZXBhcmF0b3IgPSAhbmV4dFZhbHVlIHx8IChuZXh0VmFsdWUtPnVu
aXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIG5leHRWYWx1ZS0+aVZhbHVlID09ICcs
Jyk7CisgICAgICAgIG5leHRJc1ZhbGlkVmFsdWUgPSBuZXh0VmFsdWUgJiYgKG5leHRWYWx1ZS0+
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiB8fCBuZXh0VmFsdWUtPnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCk7CisgCisgICAgICAgIGlmICh2YWx1ZS0+
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAgICAgICAgaW50
IHZhbCA9IHN0YXRpY19jYXN0PGludD4odmFsdWUtPmZWYWx1ZSk7CisgICAgICAgICAgICAvLyBI
ZXJlIHdlIGp1c3QgYWxsb3cgdGhlIGlucHV0ZWQgYWNjZXNza2V5IG51bWJlciBpbiB0aGlzIHNj
b3BlIFswLDldCisgICAgICAgICAgICBpZiAodmFsID49IDAgJiYgdmFsIDwgMTApIHsKKyAgICAg
ICAgICAgICAgICBrZXlzICs9ICIgIjsKKyAgICAgICAgICAgICAgICBrZXlzICs9IFN0cmluZzo6
bnVtYmVyKHZhbHVlLT5mVmFsdWUpOworICAgICAgICAgICAgfQorIAorICAgICAgICB9IGVsc2Ug
aWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKKyAgICAg
ICAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmcodmFsdWUtPnN0cmluZyk7CisgICAgICAgICAgICAv
L0hlcmUgd2UganVzdCBhY2NlcHQgdGhlIGlucHV0ZWQgY2hhcmFjdGVyIGluIHRoaXMgc2V0OiBb
ICogfCAjIF0KKyAgICAgICAgICAgIGlmIChzdHIgPT0gIioiIHx8IHN0ciA9PSAiIyIpIHsKKyAg
ICAgICAgICAgICAgICBrZXlzICs9ICIgIjsKKyAgICAgICAgICAgICAgICBrZXlzICs9IHN0cjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorIAorICAgICAgICBpZiAobmV4dElzVmFsaWRTZXBh
cmF0b3IgJiYgIWtleXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShrZXlzLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
RykpOworICAgICAgICAgICAga2V5cyA9ICIiOworICAgICAgICB9CisgCisgICAgICAgIGlmICgh
bmV4dFZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgIGlmIChuZXh0SXNWYWxp
ZFZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBuZXh0VmFsdWU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICB9CisgCisgICAgaWYg
KCFsaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgbGlzdCA9IDA7CisgCisgICAgcmV0dXJuIGxpc3Qu
cmVsZWFzZSgpOworfQorI2VuZGlmCisKIHZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFsdWUoUmVm
UHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcnZhbCkKIHsKICAgICBp
ZiAobHZhbCkgewpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHJldmlzaW9uIDQzNjgxKQorKysgV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNWR1N0cm9rZURh
c2hhcnJheSgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0NTUykKKyAgICAgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlV0NTU0FjY2Vzc0tleSgpOworI2VuZGlmCisKICAgICAgICAg
Ly8gQ1NTMyBQYXJzaW5nIFJvdXRpbmVzIChmb3IgcHJvcGVydGllcyBzcGVjaWZpYyB0byBDU1Mz
KQogICAgICAgICBib29sIHBhcnNlU2hhZG93KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsK
ICAgICAgICAgYm9vbCBwYXJzZUJvcmRlckltYWdlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
LCBSZWZQdHI8Q1NTVmFsdWU+Jik7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlz
aW9uIDQzNjgxKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMTM2LDYgKzEzNiw3IEBAIHdvcmQtc3BhY2luZwogd29yZC13cmFwCiB6LWluZGV4
CiB6b29tCistd2FwLWFjY2Vzc2tleQogLXdlYmtpdC1hbmltYXRpb24KIC13ZWJraXQtYW5pbWF0
aW9uLWRlbGF5CiAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb24KSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCShyZXZpc2lvbiA0MzY4MSkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTk1LDYgKzUxOTUsOSBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRV
bmRlcmxpbmVNb2RlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKKyNpZiBFTkFCTEUoV0NTUykK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2FwQWNjZXNza2V5OgorI2VuZGlmCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGE6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpblN0YXJ0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CkluZGV4
OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiA0MzY4MSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2NiwxMiBAQAogI2luY2x1ZGUgIldNTE5hbWVzLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXQ1NTKQorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNlbmRp
ZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5h
bWVzcGFjZSBVbmljb2RlOwpAQCAtOTYxLDYgKzk2NywxMTEgQEAgdm9pZCBEb2N1bWVudDo6cmVt
b3ZlRWxlbWVudEJ5SWQoY29uc3QgQQogICAgICAgICBtX2R1cGxpY2F0ZUlkcy5yZW1vdmUoZWxl
bWVudElkLmltcGwoKSk7CiB9CiAKKyNpZiBFTkFCTEUoV0NTUykKK3N0YXRpYyBTdHJpbmcgYWNj
ZXNza2V5c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvciogc3R5
bGVTZWxlY3RvcikKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsgCisgCisgICAgU3RyaW5nIGFjY2Vzc0tleXM7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiog
c3R5bGUgPSBlbGVtZW50LT5zdHlsZSgpOworICAgIC8vMSwgVHJ5IHRvIGdldCBhY2NlY2NrZXlz
IGZyb20gaW5saW5lIFdDU1MgCisgICAgaWYgKHN0eWxlKQorICAgICAgICBhY2Nlc3NLZXlzID0g
c3R5bGUtPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlXYXBBY2Nlc3NrZXkpOworIAorICAg
IC8vMiwgVHJ5IHRvIGdldCBhY2NlY2NrZXlzIGZyb20gaW50ZXJuYWwgV0NTUyBhbmQgZXh0ZXJu
YWwgV0NTUyBpbiB0dXJuCisgICAgaWYgKGFjY2Vzc0tleXMuaXNFbXB0eSgpICYmIHN0eWxlU2Vs
ZWN0b3IpIHsKKyAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBydWxlcyA9IHN0eWxlU2VsZWN0
b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIGZhbHNlKTsKKyAgICAgICAgaWYgKHJ1
bGVzICYmIHJ1bGVzLT5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgIENTU1J1bGUqIHJ1bGUg
PSAwOworICAgICAgICAgICAgU3RyaW5nIGNzc1RleHQ7CisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHJ1bGVzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgcnVsZSA9
IHJ1bGVzLT5pdGVtKGkpOworICAgICAgICAgICAgICAgIGNzc1RleHQgPSBydWxlLT5jc3NUZXh0
KCk7CisgCisgICAgICAgICAgICAgICAgaW50IGlkeCA9IGNzc1RleHQuZmluZCgiLXdhcC1hY2Nl
c3NrZXkiKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKSB7CisgICAgICAgICAgICAg
ICAgICAgIGludCBwb3MgPSBjc3NUZXh0LmZpbmQoJzonLCBpZHgpOworICAgICAgICAgICAgICAg
ICAgICBhY2Nlc3NLZXlzID0gY3NzVGV4dC5zdWJzdHJpbmcocG9zICsgMSk7CisgCisgICAgICAg
ICAgICAgICAgICAgIHBvcyA9IGFjY2Vzc0tleXMuZmluZCgnOycpOworICAgICAgICAgICAgICAg
ICAgICBpZiAocG9zID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gYWNjZXNz
S2V5cy5maW5kKCd9Jyk7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc0tleXMudHJ1bmNhdGUo
cG9zKTsKKyAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAgICAgaWYgKCFhY2Nlc3NL
ZXlzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgCisgICAgLy8zLCBUcnkgdG8gZ2V0IGFjY2VjY2tleXMgZnJv
bSB0aGUgYWNjZXNza2V5IGF0dHJpYnV0ZSBvZiBlbGVtZW50CisgICAgaWYgKGFjY2Vzc0tleXMu
aXNFbXB0eSgpKQorICAgICAgICBhY2Nlc3NLZXlzID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGFj
Y2Vzc2tleUF0dHIpOworIAorICAgIGlmICghYWNjZXNzS2V5cy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgYWNjZXNzS2V5cy5yZXBsYWNlKCdcJycsICIiKTsKKyAgICAgICAgYWNjZXNzS2V5cyA9IGFj
Y2Vzc0tleXMuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgfQorIAorICAgIHJldHVybiBhY2Nl
c3NLZXlzOworfQorCitFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdAoreworICAgIGlmIChrZXkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGlmICghbV9hY2Nlc3NLZXlNYXBWYWxpZCkgeworICAgICAgICBm
b3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkp
IHsKKyAgICAgICAgICAgIGlmICghbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG4pOworICAgICAgICAgICAgU3RyaW5nIGFjY2Vzc0tleVN0cmluZyA9IGFjY2Vz
c2tleXNGb3JFbGVtZW50KGVsZW1lbnQsIG1fc3R5bGVTZWxlY3Rvcik7CisKKyAgICAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IHZLZXlzOworICAgICAgICAgICAgYWNjZXNzS2V5U3RyaW5nLnNwbGl0
KCIsIiwgdktleXMpOworCisgICAgICAgICAgICBTdHJpbmcgYWNjZXNzS2V5OworICAgICAgICAg
ICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gdktleXMuYmVnaW4oKTsKKyAgICAgICAg
ICAgIHdoaWxlIChpdCAhPSB2S2V5cy5lbmQoKSkgeworICAgICAgICAgICAgICAgIGFjY2Vzc0tl
eSA9ICppdCsrOworICAgICAgICAgICAgICAgIGFjY2Vzc0tleSA9IGFjY2Vzc0tleS5zdHJpcFdo
aXRlU3BhY2UoKTsKKworICAgICAgICAgICAgICAgIGludCBrZXlMZW4gPSBhY2Nlc3NLZXkubGVu
Z3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGtleUxlbiA9PSAxKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghbV9lbGVtZW50c0J5QWNjZXNzS2V5LmNvbnRhaW5zKGFjY2Vzc0tleSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5zZXQoYWNjZXNz
S2V5LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gQXMgcGVyIHRoZSBzcGVjaWZpY2F0aW9uIFdBUC0yMzktV0NTUy0yMDAxMTAyNi1hLnBk
ZiwgCisgICAgICAgICAgICAgICAgICAgIC8vIEluIGEgc3BhY2UgIiAiIHNlcGFyYXRlZCBsaXN0
IG9mIGFjY2VzcyBrZXlzIHRoZSB1c2VyIAorICAgICAgICAgICAgICAgICAgICAvLyBhZ2VudCBN
VVNUIHNlbGVjdCBhbGwgYXZhaWxhYmxlIGFjY2VzcyBrZXlzIGZvciBhc3NpZ25tZW50CisgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNGb3VuZFZhbGlkS2V5ID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwga2V5TGVuOyArK2spIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyBrZXk7CisgICAgICAgICAgICAgICAgICAgICAgICBrZXkuYXBw
ZW5kKGFjY2Vzc0tleVtrXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzc3BhY2Uo
c3RhdGljX2Nhc3Q8Y2hhcj4oYWNjZXNzS2V5W2tdKSkgJiYgIW1fZWxlbWVudHNCeUFjY2Vzc0tl
eS5jb250YWlucyhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lbGVtZW50
c0J5QWNjZXNzS2V5LnNldChrZXksIGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzRm91bmRWYWxpZEtleSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoaXNGb3VuZFZh
bGlkS2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fYWNjZXNzS2V5TWFwVmFsaWQg
PSB0cnVlOworICAgIH0KKworICAgIHJldHVybiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuZ2V0KGtl
eSk7Cit9CisKKyNlbHNlCiBFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogewogICAgIGlmIChrZXkuaXNFbXB0eSgpKQpAQCAt
OTc4LDYgKzEwODksNyBAQCBFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5
CiAgICAgfQogICAgIHJldHVybiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuZ2V0KGtleS5pbXBsKCkp
OwogfQorI2VuZGlmCiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKCkKIHsKSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAkocmV2aXNpb24gNDM2ODEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDQzLDcgKzEwNDMsMTEgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqPiBtX2VsZW1lbnRzQnlJZDsKICAgICBtdXRhYmxl
IEhhc2hDb3VudGVkU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBtX2R1cGxpY2F0ZUlkczsKICAgICAK
KyNpZiBFTkFCTEUoV0NTUykKKyAgICBtdXRhYmxlIEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50Kiwg
Q2FzZUZvbGRpbmdIYXNoPiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXk7CisjZWxzZQogICAgIG11dGFi
bGUgSGFzaE1hcDxTdHJpbmdJbXBsKiwgRWxlbWVudCosIENhc2VGb2xkaW5nSGFzaD4gbV9lbGVt
ZW50c0J5QWNjZXNzS2V5OworI2VuZGlmCiAgICAgCiAgICAgSW5oZXJpdGVkQm9vbCBtX2Rlc2ln
bk1vZGU7CiAgICAgCkluZGV4OiBXZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHJldmlzaW9u
IDQzNjgxKQorKysgV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDcgKzEzMiwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVs
ZWFzZUV2ZW50CiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkK
IHsKKyAgICAvLyBGSVhNRTogRm9yIFF0LCB0aGUgdGV4dCBjaGFyYWN0ZXIgd29uJ3QgYmUgcGFz
c2VkIHRvIFdlYkNvcmUgd2hlbiBpdCBpcworICAgIC8vIGlucHV0ZWQgZm9sbG93aW5nIHRoZSBD
dHJsIEtleS4gV2UnZCBiZXR0ZXIgdXNlIEFsdCBrZXkgYXMgYWNjZXNza2V5IG1vZGlmaWVyIAor
I2lmIEVOQUJMRShXQ1NTKQorICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtl
eTsKKyNlbHNlCiAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleTsKKyNl
bmRpZgogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30445</attachid>
            <date>2009-05-18 02:02:20 -0700</date>
            <delta_ts>2009-05-22 19:41:32 -0700</delta_ts>
            <desc>Latest Updated patch for code changes</desc>
            <filename>WCSSAccesskeyChange.patch</filename>
            <type>text/plain</type>
            <size>14650</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzgxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDUtMTggIFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNo
bW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgV0NTUyBhY2Nlc3NrZXkgZXh0ZW5zaW9uIHN1cHBvcnQgdG8gV2Via2l0Cisg
ICAgICAgIHJlZmVyIHRvOiBXQVAtMjM5LVdDU1MtMjAwMTEwMjYtYS5wZGYKKworICAgICAgICBU
ZXN0czogZmFzdC93Y3NzL2ZpcnN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd2Nzcy9zZWNv
bmQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93Y3NzL3RoaXJkLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC54aHRtbAorICAgICAgICAgICAg
ICAgZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS54aHRtbAorICAgICAgICAgICAgICAg
ZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLnhodG1sCisKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlV0NTU0FjY2Vzc0tleSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAq
IGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphY2Nlc3Nr
ZXlzRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0RWxlbWVudEJ5
QWNjZXNzS2V5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL3F0
L0V2ZW50SGFuZGxlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNj
ZXNzS2V5TW9kaWZpZXJzKToKKwogMjAwOS0wNS0xNyAgR2VvcmdlIFN0YWlrb3MgIDxnZW9yZ2Uu
c3RhaWtvc0B0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkIC0gYnVpbGQg
Zml4LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUucHJvCShyZXZpc2lvbiA0MzY4MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtp
bmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQCBDT05GSUcoUVRESVJfYnVpbGQpIHsKICFjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ9Lik6IERFRklORVMgKz0gRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUPTAKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWFBBVEg9
Lik6IERFRklORVMgKz0gRU5BQkxFX1hQQVRIPTEKICMhY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1hCTD0uKTogREVGSU5FUyArPSBFTkFCTEVfWEJMPTEKKyFjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfV0NTUz0uKTogREVGSU5FUyArPSBFTkFCTEVfV0NTUz0wCiAhY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1dNTD0uKTogREVGSU5FUyArPSBFTkFCTEVfV01MPTAKICFjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfV09SS0VSUz0uKTogREVGSU5FUyArPSBFTkFCTEVfV09SS0VSUz0xCiAKQEAgLTE0
NzYsNiArMTQ3NywxMSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEJMPTEpIHsKICAgICBG
RUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfWEJMPTEKIH0KIAorY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1dDU1M9MSkgeworICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBU
ICs9IEVOQUJMRV9XQ1NTPTEKKyAgICAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hIVE1MTVA9
Lik6IERFRklORVMgKz0gRU5BQkxFX1hIVE1MTVA9MQorfQorCiBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV01MPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgd21sL1dNTEFFbGVtZW50
LmNwcCBcCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDQzNjgxKQorKysgV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTmljaG9sYXMgU2hhbmtzIDx3ZWJraXRA
bmlja3NoYW5rcy5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNA
d2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0xNjE0LDYgKzE2MTUsMTQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYgogICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZUNvbG9yIH07CiAgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRp
ZXMsIDIsIGltcG9ydGFudCk7CiAgICAgfQorI2lmIEVOQUJMRShXQ1NTKQorICAgIGNhc2UgQ1NT
UHJvcGVydHlXYXBBY2Nlc3NrZXk6CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCisg
ICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlV0NTU0FjY2Vzc0tleSgpOworICAgICAgICBicmVhazsK
KyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246CiAgICAgICAgIHJl
dHVybiBwYXJzZUFuaW1hdGlvblNob3J0aGFuZChpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uOgpAQCAtMTY1Myw2ICsxNjYyLDU4IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNp
ZiBFTkFCTEUoV0NTUykgICAgICAgCitQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2Vy
OjpwYXJzZVdDU1NBY2Nlc3NLZXkoKQoreworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgQ1NTUGFyc2VyVmFs
dWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKyAgICBDU1NQYXJzZXJWYWx1ZSog
bmV4dFZhbHVlID0gMDsgCisgICAgYm9vbCBuZXh0SXNWYWxpZFNlcGFyYXRvciA9IGZhbHNlOyAK
KyAgICBib29sIG5leHRJc1ZhbGlkVmFsdWUgPSBmYWxzZTsgCisgICAgU3RyaW5nIGtleXM7Cisg
ICAgd2hpbGUgKHZhbHVlKSB7CisgICAgICAgIG5leHRWYWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0
KCk7CisgICAgICAgIG5leHRJc1ZhbGlkU2VwYXJhdG9yID0gIW5leHRWYWx1ZSB8fCAobmV4dFZh
bHVlLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiBuZXh0VmFsdWUtPmlWYWx1
ZSA9PSAnLCcpOworICAgICAgICBuZXh0SXNWYWxpZFZhbHVlID0gbmV4dFZhbHVlICYmIChuZXh0
VmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIgfHwgbmV4dFZhbHVl
LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpOworIAorICAgICAgICBpZiAo
dmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKKyAgICAgICAg
ICAgIGludCB2YWwgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlLT5mVmFsdWUpOworICAgICAgICAg
ICAgLy8gSGVyZSB3ZSBqdXN0IGFsbG93IHRoZSBpbnB1dGVkIGFjY2Vzc2tleSBudW1iZXIgaW4g
dGhpcyBzY29wZSBbMCw5XQorICAgICAgICAgICAgaWYgKHZhbCA+PSAwICYmIHZhbCA8IDEwKSB7
CisgICAgICAgICAgICAgICAga2V5cyArPSAiICI7CisgICAgICAgICAgICAgICAga2V5cyArPSBT
dHJpbmc6Om51bWJlcih2YWx1ZS0+ZlZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAKKyAgICAgICAg
fSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7
CisgICAgICAgICAgICBTdHJpbmcgc3RyID0gU3RyaW5nKHZhbHVlLT5zdHJpbmcpOworICAgICAg
ICAgICAgLy9IZXJlIHdlIGp1c3QgYWNjZXB0IHRoZSBpbnB1dGVkIGNoYXJhY3RlciBpbiB0aGlz
IHNldDogWyAqIHwgIyBdCisgICAgICAgICAgICBpZiAoc3RyID09ICIqIiB8fCBzdHIgPT0gIiMi
KSB7CisgICAgICAgICAgICAgICAga2V5cyArPSAiICI7CisgICAgICAgICAgICAgICAga2V5cyAr
PSBzdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAKKyAgICAgICAgaWYgKG5leHRJc1Zh
bGlkU2VwYXJhdG9yICYmICFrZXlzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoa2V5cywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpKTsKKyAgICAgICAgICAgIGtleXMgPSAiIjsKKyAgICAgICAgfQorIAorICAgICAg
ICBpZiAoIW5leHRWYWx1ZSkKKyAgICAgICAgICAgIGJyZWFrOworIAorICAgICAgICBpZiAobmV4
dElzVmFsaWRWYWx1ZSkKKyAgICAgICAgICAgIHZhbHVlID0gbmV4dFZhbHVlOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgfQorIAor
ICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCisgICAgICAgIGxpc3QgPSAwOworIAorICAgIHJldHVy
biBsaXN0LnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCiB2b2lkIENTU1BhcnNlcjo6YWRkRmlsbFZh
bHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpCiB7
CiAgICAgaWYgKGx2YWwpIHsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiA0MzY4MSkKKysrIFdlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MTM0LDYgKzEzNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHBhcnNlU1ZHU3Ryb2tlRGFzaGFycmF5KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXQ1NTKQorICAgICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VXQ1NTQWNjZXNz
S2V5KCk7CisjZW5kaWYKKwogICAgICAgICAvLyBDU1MzIFBhcnNpbmcgUm91dGluZXMgKGZvciBw
cm9wZXJ0aWVzIHNwZWNpZmljIHRvIENTUzMpCiAgICAgICAgIGJvb2wgcGFyc2VTaGFkb3coaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBhcnNlQm9yZGVySW1hZ2Uo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlOYW1lcy5pbgkocmV2aXNpb24gNDM2ODEpCisrKyBXZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcgQEAgd29yZC1z
cGFjaW5nCiB3b3JkLXdyYXAKIHotaW5kZXgKIHpvb20KKy13YXAtYWNjZXNza2V5CiAtd2Via2l0
LWFuaW1hdGlvbgogLXdlYmtpdC1hbmltYXRpb24tZGVsYXkKIC13ZWJraXQtYW5pbWF0aW9uLWRp
cmVjdGlvbgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDQzNjgxKQor
KysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
OTUsNiArNTE5NSw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZVdpZHRoOgorI2lmIEVOQUJMRShXQ1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBBY2Nlc3Nr
ZXk6CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YToKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBhZGRpbmdTdGFydDoKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDQzNjgxKQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAog
ICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNoIE1v
YmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNv
bS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqIENvcHlyaWdo
dCAoQykgMjAwOCBEYXZpZCBMZXZpbiAobGV2aW5AY2hyb21pdW0ub3JnKQogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
QEAgLTE2Niw2ICsxNjYsMTIgQEAKICNpbmNsdWRlICJXTUxOYW1lcy5oIgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoV0NTUykKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAi
Q1NTUnVsZS5oIgorI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCisjZW5kaWYKKwogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29k
ZTsKQEAgLTk2MSw2ICs5NjcsMTExIEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZUVsZW1lbnRCeUlk
KGNvbnN0IEEKICAgICAgICAgbV9kdXBsaWNhdGVJZHMucmVtb3ZlKGVsZW1lbnRJZC5pbXBsKCkp
OwogfQogCisjaWYgRU5BQkxFKFdDU1MpCitzdGF0aWMgU3RyaW5nIGFjY2Vzc2tleXNGb3JFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQsIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IpCit7
CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAorIAorICAgIFN0
cmluZyBhY2Nlc3NLZXlzOworICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gZWxlbWVu
dC0+c3R5bGUoKTsKKyAgICAvLzEsIFRyeSB0byBnZXQgYWNjZWNja2V5cyBmcm9tIGlubGluZSBX
Q1NTIAorICAgIGlmIChzdHlsZSkKKyAgICAgICAgYWNjZXNzS2V5cyA9IHN0eWxlLT5nZXRQcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5V2FwQWNjZXNza2V5KTsKKyAKKyAgICAvLzIsIFRyeSB0byBn
ZXQgYWNjZWNja2V5cyBmcm9tIGludGVybmFsIFdDU1MgYW5kIGV4dGVybmFsIFdDU1MgaW4gdHVy
bgorICAgIGlmIChhY2Nlc3NLZXlzLmlzRW1wdHkoKSAmJiBzdHlsZVNlbGVjdG9yKSB7CisgICAg
ICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMgPSBzdHlsZVNlbGVjdG9yLT5zdHlsZVJ1bGVz
Rm9yRWxlbWVudChlbGVtZW50LCBmYWxzZSk7CisgICAgICAgIGlmIChydWxlcyAmJiBydWxlcy0+
bGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICBDU1NSdWxlKiBydWxlID0gMDsKKyAgICAgICAg
ICAgIFN0cmluZyBjc3NUZXh0OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydWxl
cy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgICAgIHJ1bGUgPSBydWxlcy0+aXRlbShp
KTsKKyAgICAgICAgICAgICAgICBjc3NUZXh0ID0gcnVsZS0+Y3NzVGV4dCgpOworIAorICAgICAg
ICAgICAgICAgIGludCBpZHggPSBjc3NUZXh0LmZpbmQoIi13YXAtYWNjZXNza2V5Iik7CisgICAg
ICAgICAgICAgICAgaWYgKGlkeCAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgcG9z
ID0gY3NzVGV4dC5maW5kKCc6JywgaWR4KTsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzS2V5
cyA9IGNzc1RleHQuc3Vic3RyaW5nKHBvcyArIDEpOworIAorICAgICAgICAgICAgICAgICAgICBw
b3MgPSBhY2Nlc3NLZXlzLmZpbmQoJzsnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA9
PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGFjY2Vzc0tleXMuZmluZCgnfScp
OworICAgICAgICAgICAgICAgICAgICBhY2Nlc3NLZXlzLnRydW5jYXRlKHBvcyk7CisgICAgICAg
ICAgICAgICAgfQorIAorICAgICAgICAgICAgICAgIGlmICghYWNjZXNzS2V5cy5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorIAorICAgIC8vMywgVHJ5IHRvIGdldCBhY2NlY2NrZXlzIGZyb20gdGhlIGFjY2Vzc2tl
eSBhdHRyaWJ1dGUgb2YgZWxlbWVudAorICAgIGlmIChhY2Nlc3NLZXlzLmlzRW1wdHkoKSkKKyAg
ICAgICAgYWNjZXNzS2V5cyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShhY2Nlc3NrZXlBdHRyKTsK
KyAKKyAgICBpZiAoIWFjY2Vzc0tleXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGFjY2Vzc0tleXMu
cmVwbGFjZSgnXCcnLCAiIik7CisgICAgICAgIGFjY2Vzc0tleXMgPSBhY2Nlc3NLZXlzLnNpbXBs
aWZ5V2hpdGVTcGFjZSgpOworICAgIH0KKyAKKyAgICByZXR1cm4gYWNjZXNzS2V5czsKK30KKwor
RWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtl
eSkgY29uc3QKK3sKKyAgICBpZiAoa2V5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoIW1fYWNjZXNzS2V5TWFwVmFsaWQpIHsKKyAgICAgICAgZm9yIChOb2RlKiBuID0g
Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsK
KyAgICAgICAgICAgIFN0cmluZyBhY2Nlc3NLZXlTdHJpbmcgPSBhY2Nlc3NrZXlzRm9yRWxlbWVu
dChlbGVtZW50LCBtX3N0eWxlU2VsZWN0b3IpOworCisgICAgICAgICAgICBWZWN0b3I8U3RyaW5n
PiB2S2V5czsKKyAgICAgICAgICAgIGFjY2Vzc0tleVN0cmluZy5zcGxpdCgiLCIsIHZLZXlzKTsK
KworICAgICAgICAgICAgU3RyaW5nIGFjY2Vzc0tleTsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJp
bmc+OjppdGVyYXRvciBpdCA9IHZLZXlzLmJlZ2luKCk7CisgICAgICAgICAgICB3aGlsZSAoaXQg
IT0gdktleXMuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhY2Nlc3NLZXkgPSAqaXQrKzsKKyAg
ICAgICAgICAgICAgICBhY2Nlc3NLZXkgPSBhY2Nlc3NLZXkuc3RyaXBXaGl0ZVNwYWNlKCk7CisK
KyAgICAgICAgICAgICAgICBpbnQga2V5TGVuID0gYWNjZXNzS2V5Lmxlbmd0aCgpOworICAgICAg
ICAgICAgICAgIGlmIChrZXlMZW4gPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1f
ZWxlbWVudHNCeUFjY2Vzc0tleS5jb250YWlucyhhY2Nlc3NLZXkpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuc2V0KGFjY2Vzc0tleSwgZWxlbWVudCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEFzIHBlciB0
aGUgc3BlY2lmaWNhdGlvbiBXQVAtMjM5LVdDU1MtMjAwMTEwMjYtYS5wZGYsIAorICAgICAgICAg
ICAgICAgICAgICAvLyBJbiBhIHNwYWNlICIgIiBzZXBhcmF0ZWQgbGlzdCBvZiBhY2Nlc3Mga2V5
cyB0aGUgdXNlciAKKyAgICAgICAgICAgICAgICAgICAgLy8gYWdlbnQgTVVTVCBzZWxlY3QgYWxs
IGF2YWlsYWJsZSBhY2Nlc3Mga2V5cyBmb3IgYXNzaWdubWVudAorICAgICAgICAgICAgICAgICAg
ICBib29sIGlzRm91bmRWYWxpZEtleSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBmb3Ig
KGludCBrID0gMDsgayA8IGtleUxlbjsgKytrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBT
dHJpbmcga2V5OworICAgICAgICAgICAgICAgICAgICAgICAga2V5LmFwcGVuZChhY2Nlc3NLZXlb
a10pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3NwYWNlKHN0YXRpY19jYXN0PGNo
YXI+KGFjY2Vzc0tleVtrXSkpICYmICFtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuY29udGFpbnMoa2V5
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5z
ZXQoa2V5LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvdW5kVmFs
aWRLZXkgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzRm91bmRWYWxpZEtleSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBtX2FjY2Vzc0tleU1hcFZhbGlkID0gdHJ1ZTsKKyAgICB9
CisKKyAgICByZXR1cm4gbV9lbGVtZW50c0J5QWNjZXNzS2V5LmdldChrZXkpOworfQorCisjZWxz
ZQogRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vzc0tleShjb25zdCBTdHJpbmcm
IGtleSkgY29uc3QKIHsKICAgICBpZiAoa2V5LmlzRW1wdHkoKSkKQEAgLTk3OCw2ICsxMDg5LDcg
QEAgRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vzc0tleQogICAgIH0KICAgICBy
ZXR1cm4gbV9lbGVtZW50c0J5QWNjZXNzS2V5LmdldChrZXkuaW1wbCgpKTsKIH0KKyNlbmRpZgog
CiB2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZSgpCiB7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDQz
NjgxKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0
LDcgQEAKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQu
b3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTEwNDMsNyArMTA0MywxMSBAQCBwcml2YXRlOgogICAgIG11dGFi
bGUgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgRWxlbWVudCo+IG1fZWxlbWVudHNCeUlkOwog
ICAgIG11dGFibGUgSGFzaENvdW50ZWRTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1fZHVwbGljYXRl
SWRzOwogICAgIAorI2lmIEVOQUJMRShXQ1NTKQorICAgIG11dGFibGUgSGFzaE1hcDxTdHJpbmcs
IEVsZW1lbnQqLCBDYXNlRm9sZGluZ0hhc2g+IG1fZWxlbWVudHNCeUFjY2Vzc0tleTsKKyNlbHNl
CiAgICAgbXV0YWJsZSBIYXNoTWFwPFN0cmluZ0ltcGwqLCBFbGVtZW50KiwgQ2FzZUZvbGRpbmdI
YXNoPiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXk7CisjZW5kaWYKICAgICAKICAgICBJbmhlcml0ZWRC
b29sIG1fZGVzaWduTW9kZTsKICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRs
ZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNw
cAkocmV2aXNpb24gNDM2ODEpCisrKyBXZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2IFph
Y2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cu
dG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMy
LDcgKzEzMywxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50CiAK
IHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKKyAgICAvLyBG
SVhNRTogRm9yIFF0LCB0aGUgdGV4dCBjaGFyYWN0ZXIgd29uJ3QgYmUgcGFzc2VkIHRvIFdlYkNv
cmUgd2hlbiBpdCBpcworICAgIC8vIGlucHV0ZWQgZm9sbG93aW5nIHRoZSBDdHJsIEtleS4gV2Un
ZCBiZXR0ZXIgdXNlIEFsdCBrZXkgYXMgYWNjZXNza2V5IG1vZGlmaWVyIAorI2lmIEVOQUJMRShX
Q1NTKQorICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyNlbHNlCiAg
ICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleTsKKyNlbmRpZgogfQogCiB9
Cg==
</data>
<flag name="review"
          id="15359"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33151</attachid>
            <date>2009-07-21 00:44:08 -0700</date>
            <delta_ts>2009-08-04 19:38:21 -0700</delta_ts>
            <desc>This is for -wap-accesskey support , contains both the code change and the test cases as per request from last review </desc>
            <filename>wap-accesskey-support-code-change-and-testcase-update.patch</filename>
            <type>text/plain</type>
            <size>23121</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IHRydW5rL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRydW5rL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjE1NikKKysrIHRydW5rL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDktMDctMjEgIGNoYXJsZXMgd2Vp
ICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC13YXAtYWNjZXNza2V5IHN1cHBvcnQgZm9yIFdD
U1MKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4
OQorCisgICAgICAgIFRlc3RzOiBmYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktZXh0ZXJuYWwuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW50ZXJuYWwuaHRtbAorCisg
ICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZVdDU1NBY2Nlc3NLZXkpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
aDoKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjph
cHBseVByb3BlcnR5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YWNjZXNza2V5c0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmdldEVsZW1lbnRCeUFjY2Vzc0tleSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisKKwogMjAwOS0wNy0yMCAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJh
Y2xvdWdoLgpJbmRleDogdHJ1bmsvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
cnVuay9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA0NjEzNSkKKysrIHRydW5rL1dlYkNv
cmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsNyBAQCBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfU0lOR0xFX1RIUkVBREVECiAhY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX1hQQVRIPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YUEFUSD0xCiAhY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1hTTFQ9Lik6IERFRklORVMgKz0gRU5BQkxFX1hTTFQ9MAogIyFjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YQkw9MQorIWNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9XQ1NTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9XQ1NTPTEKICFjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfV01MPS4pOiBERUZJTkVTICs9IEVOQUJMRV9XTUw9MAogIWNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9TSEFSRURfV09SS0VSUz0uKTogREVGSU5FUyArPSBFTkFC
TEVfU0hBUkVEX1dPUktFUlM9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XT1JLRVJTPS4p
OiBERUZJTkVTICs9IEVOQUJMRV9XT1JLRVJTPTEKQEAgLTI1MTAsNiArMjUxMSwxMSBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfRklMVEVSUz0xKSB7CiAgICAgRkVBVFVSRV9ERUZJTkVTX0pB
VkFTQ1JJUFQgKz0gRU5BQkxFX0ZJTFRFUlM9MQogfQogCitjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfV0NTUz0xKSB7CisgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dD
U1M9MQorICAgICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEhUTUxNUD0uKTogREVGSU5FUyAr
PSBFTkFCTEVfWEhUTUxNUD0xCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XTUw9MSkg
ewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICB3bWwvV01MQUVsZW1lbnQuY3BwIFwKSW5kZXg6
IHRydW5rL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gNDYxMzUpCisrKyB0cnVuay9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFu
a3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmls
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8p
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2MjEsNiArMTYyMiwxNCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlQ29sb3IgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJ
ZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKICAgICB9CisjaWYgRU5BQkxFKFdDU1MpCisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdhcEFjY2Vzc2tleToKKyAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTm9uZSkKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VXQ1NTQWNjZXNzS2V5KCk7CisgICAg
ICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoK
ICAgICAgICAgcmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBAIC0xNjYyLDYgKzE2NzEsNTggQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorI2lmIEVOQUJMRShXQ1NTKSAgICAgICAKK1Bhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBDU1NQYXJzZXI6OnBhcnNlV0NTU0FjY2Vzc0tleSgpCit7CisgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBD
U1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOworICAgIENTU1Bh
cnNlclZhbHVlKiBuZXh0VmFsdWUgPSAwOyAKKyAgICBib29sIG5leHRJc1ZhbGlkU2VwYXJhdG9y
ID0gZmFsc2U7IAorICAgIGJvb2wgbmV4dElzVmFsaWRWYWx1ZSA9IGZhbHNlOyAKKyAgICBTdHJp
bmcga2V5czsKKyAgICB3aGlsZSAodmFsdWUpIHsKKyAgICAgICAgbmV4dFZhbHVlID0gbV92YWx1
ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgbmV4dElzVmFsaWRTZXBhcmF0b3IgPSAhbmV4dFZhbHVl
IHx8IChuZXh0VmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIG5leHRW
YWx1ZS0+aVZhbHVlID09ICcsJyk7CisgICAgICAgIG5leHRJc1ZhbGlkVmFsdWUgPSBuZXh0VmFs
dWUgJiYgKG5leHRWYWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiB8
fCBuZXh0VmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCk7CisgCisg
ICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikg
eworICAgICAgICAgICAgaW50IHZhbCA9IHN0YXRpY19jYXN0PGludD4odmFsdWUtPmZWYWx1ZSk7
CisgICAgICAgICAgICAvLyBIZXJlIHdlIGp1c3QgYWxsb3cgdGhlIGlucHV0ZWQgYWNjZXNza2V5
IG51bWJlciBpbiB0aGlzIHNjb3BlIFswLDldCisgICAgICAgICAgICBpZiAodmFsID49IDAgJiYg
dmFsIDwgMTApIHsKKyAgICAgICAgICAgICAgICBrZXlzICs9ICIgIjsKKyAgICAgICAgICAgICAg
ICBrZXlzICs9IFN0cmluZzo6bnVtYmVyKHZhbHVlLT5mVmFsdWUpOworICAgICAgICAgICAgfQor
IAorICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfSURFTlQpIHsKKyAgICAgICAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmcodmFsdWUtPnN0cmlu
Zyk7CisgICAgICAgICAgICAvL0hlcmUgd2UganVzdCBhY2NlcHQgdGhlIGlucHV0ZWQgY2hhcmFj
dGVyIGluIHRoaXMgc2V0OiBbICogfCAjIF0KKyAgICAgICAgICAgIGlmIChzdHIgPT0gIioiIHx8
IHN0ciA9PSAiIyIpIHsKKyAgICAgICAgICAgICAgICBrZXlzICs9ICIgIjsKKyAgICAgICAgICAg
ICAgICBrZXlzICs9IHN0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorIAorICAgICAgICBp
ZiAobmV4dElzVmFsaWRTZXBhcmF0b3IgJiYgIWtleXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShrZXlzLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykpOworICAgICAgICAgICAga2V5cyA9ICIiOworICAgICAgICB9
CisgCisgICAgICAgIGlmICghbmV4dFZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisgCisgICAg
ICAgIGlmIChuZXh0SXNWYWxpZFZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBuZXh0VmFsdWU7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsK
KyAgICB9CisgCisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgbGlzdCA9IDA7Cisg
CisgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworfQorI2VuZGlmCisKIHZvaWQgQ1NTUGFyc2Vy
OjphZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gcnZhbCkKIHsKICAgICBpZiAobHZhbCkgewpJbmRleDogdHJ1bmsvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHJl
dmlzaW9uIDQ2MTM1KQorKysgdHJ1bmsvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMzYsNiArMTM3LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTVkdTdHJva2VEYXNo
YXJyYXkoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdDU1MpCisgICAgICAgIFBhc3NSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBwYXJzZVdDU1NBY2Nlc3NLZXkoKTsKKyNlbmRpZgorCiAgICAgICAgIC8v
IENTUzMgUGFyc2luZyBSb3V0aW5lcyAoZm9yIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gQ1NTMykK
ICAgICAgICAgYm9vbCBwYXJzZVNoYWRvdyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAg
ICAgICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCwg
UmVmUHRyPENTU1ZhbHVlPiYpOwpJbmRleDogdHJ1bmsvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlO
YW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0cnVuay9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluCShyZXZpc2lvbiA0NjEzNSkKKysrIHRydW5rL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFt
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQCB3b3JkLXNwYWNpbmcKIHdv
cmQtd3JhcAogei1pbmRleAogem9vbQorLXdhcC1hY2Nlc3NrZXkKIC13ZWJraXQtYW5pbWF0aW9u
CiAtd2Via2l0LWFuaW1hdGlvbi1kZWxheQogLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uCklu
ZGV4OiB0cnVuay9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0cnVuay9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNDYxMzUp
CisrKyB0cnVuay9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEyMSw2ICs1MTIxLDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnR5KGludAogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZToKICAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
VW5kZXJsaW5lV2lkdGg6CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdh
cEFjY2Vzc2tleToKKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURl
bHRhOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0OgpJbmRleDogdHJ1bmsvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRydW5rL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
cmV2aXNpb24gNDYxMzUpCisrKyB0cnVuay9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2OSw2ICsxNjksMTIgQEAKICNpbmNsdWRlICJIVE1MTm9TY3JpcHRFbGVt
ZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXQ1NTKQorI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIK
KyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVz
aW5nIG5hbWVzcGFjZSBVbmljb2RlOwpAQCAtOTcwLDYgKzk3NiwxMTEgQEAgdm9pZCBEb2N1bWVu
dDo6cmVtb3ZlRWxlbWVudEJ5SWQoY29uc3QgQQogICAgICAgICBtX2R1cGxpY2F0ZUlkcy5yZW1v
dmUoZWxlbWVudElkLmltcGwoKSk7CiB9CiAKKyNpZiBFTkFCTEUoV0NTUykKK3N0YXRpYyBTdHJp
bmcgYWNjZXNza2V5c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rv
ciogc3R5bGVTZWxlY3RvcikKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsgCisgCisgICAgU3RyaW5nIGFjY2Vzc0tleXM7CisgICAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUgPSBlbGVtZW50LT5zdHlsZSgpOworICAgIC8vMSwgVHJ5IHRvIGdldCBhY2Nl
Y2NrZXlzIGZyb20gaW5saW5lIFdDU1MgCisgICAgaWYgKHN0eWxlKQorICAgICAgICBhY2Nlc3NL
ZXlzID0gc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlXYXBBY2Nlc3NrZXkpOwor
IAorICAgIC8vMiwgVHJ5IHRvIGdldCBhY2NlY2NrZXlzIGZyb20gaW50ZXJuYWwgV0NTUyBhbmQg
ZXh0ZXJuYWwgV0NTUyBpbiB0dXJuCisgICAgaWYgKGFjY2Vzc0tleXMuaXNFbXB0eSgpICYmIHN0
eWxlU2VsZWN0b3IpIHsKKyAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBydWxlcyA9IHN0eWxl
U2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIGZhbHNlKTsKKyAgICAgICAg
aWYgKHJ1bGVzICYmIHJ1bGVzLT5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgIENTU1J1bGUq
IHJ1bGUgPSAwOworICAgICAgICAgICAgU3RyaW5nIGNzc1RleHQ7CisgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHJ1bGVzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
cnVsZSA9IHJ1bGVzLT5pdGVtKGkpOworICAgICAgICAgICAgICAgIGNzc1RleHQgPSBydWxlLT5j
c3NUZXh0KCk7CisgCisgICAgICAgICAgICAgICAgaW50IGlkeCA9IGNzc1RleHQuZmluZCgiLXdh
cC1hY2Nlc3NrZXkiKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKSB7CisgICAgICAg
ICAgICAgICAgICAgIGludCBwb3MgPSBjc3NUZXh0LmZpbmQoJzonLCBpZHgpOworICAgICAgICAg
ICAgICAgICAgICBhY2Nlc3NLZXlzID0gY3NzVGV4dC5zdWJzdHJpbmcocG9zICsgMSk7CisgCisg
ICAgICAgICAgICAgICAgICAgIHBvcyA9IGFjY2Vzc0tleXMuZmluZCgnOycpOworICAgICAgICAg
ICAgICAgICAgICBpZiAocG9zID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0g
YWNjZXNzS2V5cy5maW5kKCd9Jyk7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc0tleXMudHJ1
bmNhdGUocG9zKTsKKyAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAgICAgaWYgKCFh
Y2Nlc3NLZXlzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgCisgICAgLy8zLCBUcnkgdG8gZ2V0IGFjY2VjY2tl
eXMgZnJvbSB0aGUgYWNjZXNza2V5IGF0dHJpYnV0ZSBvZiBlbGVtZW50CisgICAgaWYgKGFjY2Vz
c0tleXMuaXNFbXB0eSgpKQorICAgICAgICBhY2Nlc3NLZXlzID0gZWxlbWVudC0+Z2V0QXR0cmli
dXRlKGFjY2Vzc2tleUF0dHIpOworIAorICAgIGlmICghYWNjZXNzS2V5cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYWNjZXNzS2V5cy5yZXBsYWNlKCdcJycsICIiKTsKKyAgICAgICAgYWNjZXNzS2V5
cyA9IGFjY2Vzc0tleXMuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgfQorIAorICAgIHJldHVy
biBhY2Nlc3NLZXlzOworfQorCitFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNz
S2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAoreworICAgIGlmIChrZXkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9hY2Nlc3NLZXlNYXBWYWxpZCkgeworICAg
ICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHRO
b2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG4pOworICAgICAgICAgICAgU3RyaW5nIGFjY2Vzc0tleVN0cmluZyA9
IGFjY2Vzc2tleXNGb3JFbGVtZW50KGVsZW1lbnQsIG1fc3R5bGVTZWxlY3Rvcik7CisKKyAgICAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHZLZXlzOworICAgICAgICAgICAgYWNjZXNzS2V5U3RyaW5n
LnNwbGl0KCIsIiwgdktleXMpOworCisgICAgICAgICAgICBTdHJpbmcgYWNjZXNzS2V5OworICAg
ICAgICAgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gdktleXMuYmVnaW4oKTsKKyAg
ICAgICAgICAgIHdoaWxlIChpdCAhPSB2S2V5cy5lbmQoKSkgeworICAgICAgICAgICAgICAgIGFj
Y2Vzc0tleSA9ICppdCsrOworICAgICAgICAgICAgICAgIGFjY2Vzc0tleSA9IGFjY2Vzc0tleS5z
dHJpcFdoaXRlU3BhY2UoKTsKKworICAgICAgICAgICAgICAgIGludCBrZXlMZW4gPSBhY2Nlc3NL
ZXkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGtleUxlbiA9PSAxKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghbV9lbGVtZW50c0J5QWNjZXNzS2V5LmNvbnRhaW5zKGFjY2Vzc0tl
eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5zZXQo
YWNjZXNzS2V5LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQXMgcGVyIHRoZSBzcGVjaWZpY2F0aW9uIFdBUC0yMzktV0NTUy0yMDAxMTAy
Ni1hLnBkZiwgCisgICAgICAgICAgICAgICAgICAgIC8vIEluIGEgc3BhY2UgIiAiIHNlcGFyYXRl
ZCBsaXN0IG9mIGFjY2VzcyBrZXlzIHRoZSB1c2VyIAorICAgICAgICAgICAgICAgICAgICAvLyBh
Z2VudCBNVVNUIHNlbGVjdCBhbGwgYXZhaWxhYmxlIGFjY2VzcyBrZXlzIGZvciBhc3NpZ25tZW50
CisgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNGb3VuZFZhbGlkS2V5ID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwga2V5TGVuOyArK2spIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZyBrZXk7CisgICAgICAgICAgICAgICAgICAgICAgICBr
ZXkuYXBwZW5kKGFjY2Vzc0tleVtrXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlz
c3BhY2Uoc3RhdGljX2Nhc3Q8Y2hhcj4oYWNjZXNzS2V5W2tdKSkgJiYgIW1fZWxlbWVudHNCeUFj
Y2Vzc0tleS5jb250YWlucyhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9l
bGVtZW50c0J5QWNjZXNzS2V5LnNldChrZXksIGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzRm91bmRWYWxpZEtleSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoaXNG
b3VuZFZhbGlkS2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fYWNjZXNzS2V5TWFw
VmFsaWQgPSB0cnVlOworICAgIH0KKworICAgIHJldHVybiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXku
Z2V0KGtleSk7Cit9CisKKyNlbHNlCiBFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNj
ZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogewogICAgIGlmIChrZXkuaXNFbXB0eSgp
KQpAQCAtOTg3LDYgKzEwOTgsNyBAQCBFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNj
ZXNzS2V5CiAgICAgfQogICAgIHJldHVybiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuZ2V0KGtleS5p
bXBsKCkpOwogfQorI2VuZGlmCiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKCkKIHsKSW5k
ZXg6IHRydW5rL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNDYxMzUpCisrKyB0cnVuay9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU4LDcgKzEwNTgsMTEgQEAgcHJpdmF0
ZToKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqPiBtX2Vs
ZW1lbnRzQnlJZDsKICAgICBtdXRhYmxlIEhhc2hDb3VudGVkU2V0PEF0b21pY1N0cmluZ0ltcGwq
PiBtX2R1cGxpY2F0ZUlkczsKICAgICAKKyNpZiBFTkFCTEUoV0NTUykKKyAgICBtdXRhYmxlIEhh
c2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQ2FzZUZvbGRpbmdIYXNoPiBtX2VsZW1lbnRzQnlBY2Nl
c3NLZXk7CisjZWxzZQogICAgIG11dGFibGUgSGFzaE1hcDxTdHJpbmdJbXBsKiwgRWxlbWVudCos
IENhc2VGb2xkaW5nSGFzaD4gbV9lbGVtZW50c0J5QWNjZXNzS2V5OworI2VuZGlmCiAgICAgCiAg
ICAgSW5oZXJpdGVkQm9vbCBtX2Rlc2lnbk1vZGU7CiAgICAgCkluZGV4OiB0cnVuay9XZWJDb3Jl
L3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRydW5rL1dlYkNvcmUv
cGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHJldmlzaW9uIDQ2MTM1KQorKysgdHJ1bmsvV2Vi
Q29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsy
LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMiw3ICsxMzMsMTMgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVudAogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFj
Y2Vzc0tleU1vZGlmaWVycygpCiB7CisgICAgLy8gRklYTUU6IEZvciBRdCwgdGhlIHRleHQgY2hh
cmFjdGVyIHdvbid0IGJlIHBhc3NlZCB0byBXZWJDb3JlIHdoZW4gaXQgaXMKKyAgICAvLyBpbnB1
dGVkIGZvbGxvd2luZyB0aGUgQ3RybCBLZXkuIFdlJ2QgYmV0dGVyIHVzZSBBbHQga2V5IGFzIGFj
Y2Vzc2tleSBtb2RpZmllciAKKyNpZiBFTkFCTEUoV0NTUykKKyAgICByZXR1cm4gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpBbHRLZXk7CisjZWxzZQogICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OkN0cmxLZXk7CisjZW5kaWYKIH0KIAogfQpJbmRleDogdHJ1bmsvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRydW5rL0xheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNDYxNTYpCisrKyB0cnVuay9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wNy0yMSAgY2hhcmxlcyB3ZWkgIDxjaGFybGVzLndl
aUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRoZSAtd2FwLWFjY2Vzc2tleSBzdXBwb3J0IGZvciBXQ1NTCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODkKKwor
CisgICAgICAgICogZmFzdC93Y3NzL2FjY2Vzc2tleS5jc3M6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW5saW5lLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW50ZXJuYWwtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW50ZXJuYWwu
aHRtbDogQWRkZWQuCisKIDIwMDktMDctMjAgIEFkYW0gTGFuZ2xleSAgPGFnbEBnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogdHJ1bmsvTGF5b3V0
VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvTGF5b3V0
VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS5jc3MJKHJldmlzaW9uIDApCisrKyB0cnVuay9MYXlv
dXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LmNzcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
IEBACisuYWNjZXNza2V5IHsgLXdhcC1hY2Nlc3NrZXk6IDEgXDIzLCB0LCAyIFwyYSwgMzsgfQor
CkluZGV4OiB0cnVuay9MYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktZXh0ZXJu
YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRydW5rL0xheW91dFRlc3RzL2Zhc3Qvd2Nz
cy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyB0
cnVuay9MYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktZXh0ZXJuYWwtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACitTb3VyY2U6CisKKzxodG1sPjxo
ZWFkPgorPHRpdGxlPiBXQ1NTIGFjY2Vzc2tleSB0ZXN0OiBleHRlcm5hbCBDU1M8L3RpdGxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhY2Nlc3NrZXkuY3NzIiB0eXBlPSJ0ZXh0L2Nz
cyI+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgdmFyIGl0ZW0gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9CitmdW5jdGlvbiBwcmVzc0tleShrZXkp
Cit7CisgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuc2VhcmNoKC9cYk1hYyBPUyBYXGIvKSAh
PSAtMSkKKyAgICAgICAgbW9kaWZpZXJzID0gWyJjdHJsS2V5IiwgImFsdEtleSJdOworICAgIGVs
c2UKKyAgICAgICAgbW9kaWZpZXJzID0gWyJhbHRLZXkiXTsKKyAgICBldmVudFNlbmRlci5rZXlE
b3duKGtleSwgbW9kaWZpZXJzKTsKK30KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgICAgIHByZXNzS2V5KDEpOworICAgICAgICBwcmVzc0tleSgi
IyIpOworICAgICAgICBwcmVzc0tleSgyKTsKKyAgICAgICAgcHJlc3NLZXkoIioiKTsKKyAgICAg
ICAgcHJlc3NLZXkoMyk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+PGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5zaW9uIHdo
aWNoIGlzIGFwcGxpZWQgYXMgYW4gZXh0ZXJuYWwgQ1NTIDwvcD4gCis8cD4gY2xpY2sgJ0FMVCsx
JyBvciAnQUxUKyMnIGVxdWFscyB0byBjbGljayBvbiB0aGUgZmlyc3QgbGluayA8L3A+Cis8cD4g
Y2xpY2sgJ0FMVCsyJyBvciAnQUxUKyonIGVxdWFscyB0byBjbGljayBvbiB0aGUgc2Vjb25kIGxp
bmsgPC9wPgorPHA+IGNsaWNrICdBTFQrMycgZXF1YWxzIHRvIGNsaWNrIG9uIHRoZSB0aGlyZCBs
aW5rPC9wPgorPGEgaHJlZj0iIyIgY2xhc3M9ImFjY2Vzc2tleSIgb25jbGljaz0ibG9nKCdmaXJz
dCBsaW5rIGNsaWNrZWQnKSI+PC9hPgorPGEgaHJlZj0iIyIgY2xhc3M9ImFjY2Vzc2tleSIgb25j
bGljaz0ibG9nKCdzZWNvbmQgbGluayBjbGlja2VkJykiPjwvYT4KKzxhIGhyZWY9IiMiIGNsYXNz
PSJhY2Nlc3NrZXkiIG9uY2xpY2s9ImxvZygndGhpcmQgbGluayBjbGlja2VkJykiPjwvYT4KKwor
PG9sIGlkPSJjb25zb2xlIj4gPGxpPmZpcnN0IGxpbmsgY2xpY2tlZDwvbGk+PGxpPmZpcnN0IGxp
bmsgY2xpY2tlZDwvbGk+PGxpPnNlY29uZCBsaW5rIGNsaWNrZWQ8L2xpPjxsaT5zZWNvbmQgbGlu
ayBjbGlja2VkPC9saT48bGk+dGhpcmQgbGluayBjbGlja2VkPC9saT48L29sPgorCisKKzwvYm9k
eT48L2h0bWw+CitUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBp
cyBhcHBsaWVkIGFzIGFuIGV4dGVybmFsIENTUworCitjbGljayAnQUxUKzEnIG9yICdBTFQrIycg
ZXF1YWxzIHRvIGNsaWNrIG9uIHRoZSBmaXJzdCBsaW5rCisKK2NsaWNrICdBTFQrMicgb3IgJ0FM
VCsqJyBlcXVhbHMgdG8gY2xpY2sgb24gdGhlIHNlY29uZCBsaW5rCisKK2NsaWNrICdBTFQrMycg
ZXF1YWxzIHRvIGNsaWNrIG9uIHRoZSB0aGlyZCBsaW5rCisKK2ZpcnN0IGxpbmsgY2xpY2tlZAor
Zmlyc3QgbGluayBjbGlja2VkCitzZWNvbmQgbGluayBjbGlja2VkCitzZWNvbmQgbGluayBjbGlj
a2VkCit0aGlyZCBsaW5rIGNsaWNrZWQKSW5kZXg6IHRydW5rL0xheW91dFRlc3RzL2Zhc3Qvd2Nz
cy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRydW5rL0xheW91
dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC5odG1sCShyZXZpc2lvbiAw
KQorKysgdHJ1bmsvTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWV4dGVybmFs
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPiAKKzxoZWFkPgorPHRp
dGxlPiBXQ1NTIGFjY2Vzc2tleSB0ZXN0OiBleHRlcm5hbCBDU1M8L3RpdGxlPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJhY2Nlc3NrZXkuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIvPgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHZhciBpdGVtID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rpb24gcHJlc3NLZXkoa2V5KQoreworICAg
IGlmIChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykgIT0gLTEpCisg
ICAgICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIsICJhbHRLZXkiXTsKKyAgICBlbHNlCisgICAg
ICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXks
IG1vZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgICAgICBwcmVzc0tleSgxKTsKKyAgICAgICAgcHJlc3NLZXkoIiMiKTsKKyAg
ICAgICAgcHJlc3NLZXkoMik7CisgICAgICAgIHByZXNzS2V5KCIqIik7CisgICAgICAgIHByZXNz
S2V5KDMpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8cD4gVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2gg
aXMgYXBwbGllZCBhcyBhbiBleHRlcm5hbCBDU1MgPC9wPiAKKzxwPiBjbGljayAnQUxUKzEnIG9y
ICdBTFQrIycgZXF1YWxzIHRvIGNsaWNrIG9uIHRoZSBmaXJzdCBsaW5rIDwvcD4KKzxwPiBjbGlj
ayAnQUxUKzInIG9yICdBTFQrKicgZXF1YWxzIHRvIGNsaWNrIG9uIHRoZSBzZWNvbmQgbGluayA8
L3A+Cis8cD4gY2xpY2sgJ0FMVCszJyBlcXVhbHMgdG8gY2xpY2sgb24gdGhlIHRoaXJkIGxpbms8
L3A+Cis8YSBocmVmPSIjIiBjbGFzcz0iYWNjZXNza2V5IiBvbmNsaWNrPSJsb2coJ2ZpcnN0IGxp
bmsgY2xpY2tlZCcpIj48L2E+Cis8YSBocmVmPSIjIiBjbGFzcz0iYWNjZXNza2V5IiBvbmNsaWNr
PSJsb2coJ3NlY29uZCBsaW5rIGNsaWNrZWQnKSI+PC9hPgorPGEgaHJlZj0iIyIgY2xhc3M9ImFj
Y2Vzc2tleSIgb25jbGljaz0ibG9nKCd0aGlyZCBsaW5rIGNsaWNrZWQnKSI+PC9hPgorCis8b2wg
aWQ9ImNvbnNvbGUiPiA8L29sPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogdHJ1bmsvTGF5b3V0
VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdHJ1bmsvTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGlu
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyB0cnVuay9MYXlvdXRUZXN0cy9mYXN0L3dj
c3Mvd2Nzcy1hY2Nlc3NrZXktaW5saW5lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNiBAQAorVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2gg
aXMgdXNlZCBhcyBhbiBpbmxpbmUgQ1NTCisKK2NsaWNrICdBTFQrMScgaXMgZXF1YWwgdG8gY2xp
Y2tpbmcgb24gdGhlIGJ1dHRvbgorCitjbGljayAnQUxUKzInIGlzIGVxdWFsIHRvIGNsaWNraW5n
IG9uIHRoZSBmaXJzdCBsaW5rCisKK2NsaWNrICdBTFQrMycgb3IgJ0FMVCsqJyBpcyBlcXVhbCB0
byBjbGlja2luZyBvbiB0aGUgMm5kIGxpbmsKKworCitmaXJzdCBpbiBmb2N1cworZmlyc3QgY2xp
Y2tlZAorbGluayBjbGlja2VkCitsaW5rIHdpdGggYWNjZXNza2V5IDN8KiBjbGlja2VkCitsaW5r
IHdpdGggYWNjZXNza2V5IDN8KiBjbGlja2VkCkluZGV4OiB0cnVuay9MYXlvdXRUZXN0cy9mYXN0
L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW5saW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvTGF5
b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS5odG1sCShyZXZpc2lvbiAw
KQorKysgdHJ1bmsvTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT4gV0NTUyBhY2Nlc3NrZXkgdGVz
dDogaW5saW5lIENTUzwvdGl0bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7
CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0ZW0u
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9CitmdW5j
dGlvbiBwcmVzc0tleShrZXkpCit7CisgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuc2VhcmNo
KC9cYk1hYyBPUyBYXGIvKSAhPSAtMSkKKyAgICAgICAgbW9kaWZpZXJzID0gWyJjdHJsS2V5Iiwg
ImFsdEtleSJdOworICAgIGVsc2UKKyAgICAgICAgbW9kaWZpZXJzID0gWyJhbHRLZXkiXTsKKyAg
ICBldmVudFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHByZXNzS2V5KCIxIik7
CisgICAgICAgIHByZXNzS2V5KCIyIik7CisgICAgICAgIHByZXNzS2V5KCIzIik7CisgICAgICAg
IHByZXNzS2V5KCIqIik7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzwvaGVhZD4K
KworPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBD
U1MgZXh0ZW5zaW9uIHdoaWNoIGlzIHVzZWQgYXMgYW4gaW5saW5lIENTUyA8L3A+IAorPHA+IGNs
aWNrICdBTFQrMScgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIGJ1dHRvbiAgPC9wPgorPHA+
IGNsaWNrICdBTFQrMicgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIGZpcnN0IGxpbmsgPC9w
PgorPHA+IGNsaWNrICdBTFQrMycgb3IgJ0FMVCsqJyBpcyBlcXVhbCB0byBjbGlja2luZyBvbiB0
aGUgMm5kIGxpbmsgPC9wPgorCis8YnV0dG9uIHN0eWxlPSItd2FwLWFjY2Vzc2tleToxIiBvbmZv
Y3VzPSJsb2coJ2ZpcnN0IGluIGZvY3VzJykiIG9uY2xpY2s9ImxvZygnZmlyc3QgY2xpY2tlZCcp
Ij48L2J1dHRvbj4KKzxhIGhyZWY9IiMiIHN0eWxlPSItd2FwLWFjY2Vzc2tleTogMiAiIG9uZm9j
dXM9ImxvZygnbGluayBpbiBmb2N1cycpIiBvbmNsaWNrPSJsb2coJ2xpbmsgY2xpY2tlZCcpIj48
L2E+Cis8YSBocmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IDMgXDJhIiBvbmZvY3VzPSJs
b2coJ2xpbmsgd2l0aCBhY2Nlc3Mga2V5IDN8KiBpbiBmb2N1cycpIiBvbmNsaWNrPSJsb2coJ2xp
bmsgd2l0aCBhY2Nlc3NrZXkgM3wqIGNsaWNrZWQnKSI+PC9hPgorPG9sIGlkPSJjb25zb2xlIj48
L29sPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogdHJ1bmsvTGF5b3V0VGVzdHMvZmFzdC93Y3Nz
L3djc3MtYWNjZXNza2V5LWludGVybmFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0cnVu
ay9MYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW50ZXJuYWwtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgdHJ1bmsvTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNj
ZXNza2V5LWludGVybmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBA
CitUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIGFz
IGFuIGludGVybmFsIENTUworCitmaXJzdCBbMV0gCitmaXJzdCBsaW5rIGNsaWNrZWQKK2J1dHRv
biBvbmZvY3VzCitidXR0b24gY2xpY2tlZApJbmRleDogdHJ1bmsvTGF5b3V0VGVzdHMvZmFzdC93
Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvTGF5
b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLmh0bWwJKHJldmlzaW9u
IDApCisrKyB0cnVuay9MYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXktaW50ZXJu
YWwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorPGh0bWwgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+V0NTUyBhY2Nlc3NrZXkg
dGVzdDogaW50ZXJuYWwgQ1NTPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CithIHsg
LXdhcC1hY2Nlc3NrZXk6IDF9CisjYnV0dG9uIHsgLXdhcC1hY2Nlc3NrZXk6IDJ9Cis8L3N0eWxl
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHZhciBpdGVtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rpb24gcHJlc3NLZXkoa2V5KQor
eworICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykgIT0g
LTEpCisgICAgICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIsICJhbHRLZXkiXTsKKyAgICBlbHNl
CisgICAgICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAgZXZlbnRTZW5kZXIua2V5RG93
bihrZXksIG1vZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworICAgICAgICBwcmVzc0tleSgxKTsKKyAgICAgICAgcHJlc3NLZXkoMik7
CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0idGVzdCgpIj4K
KzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1c2Vk
IGFzIGFuIGludGVybmFsIENTUyA8L3A+IAorPGEgaHJlZj0iIyIgb25mb2N1cz0ibG9nKCdmaXJz
dCBsaW5rIG9uZm9jdXMnKSIgb25jbGljaz0ibG9nKCdmaXJzdCBsaW5rIGNsaWNrZWQnKSI+Zmly
c3QgWzFdPC9hPgorPGJ1dHRvbiAgaWQ9ImJ1dHRvbiIgb25mb2N1cz0ibG9nKCdidXR0b24gb25m
b2N1cycpIiBvbmNsaWNrPSJsb2coJ2J1dHRvbiBjbGlja2VkJykiPjwvYnV0dG9uPgorPG9sIGlk
PSJjb25zb2xlIj4gPC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="17473"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34197</attachid>
            <date>2009-08-05 19:28:23 -0700</date>
            <delta_ts>2009-08-07 10:34:48 -0700</delta_ts>
            <desc>resubmit the patch with a more descriptive ChangeLog following the review comments    </desc>
            <filename>wap-accesskey-9589.patch</filename>
            <type>text/plain</type>
            <size>22906</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjgyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDgtMDUgIGNoYXJsZXMgd2VpICA8Y2hhcmxlcy53ZWlAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBXQ1NTIGFjY2Vzc2tleSBleHRlbnNpb24gc3VwcG9ydCB0byBXZWJLaXQs
IHJlZmVyIHRvIDogV0FQLTIzOS1XQ1NTLTIwMDExMDI2LWEucGRmCisgICAgICAgIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zz9jZ2k9OTU4OT4KKworICAgICAgICBUZXN0czogZmFz
dC93Y3NzL3djc3MtYWNjZXNza2V5LWV4dGVybmFsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
d2Nzcy93Y3NzLWFjY2Vzc2tleS1pbmxpbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93Y3Nz
L3djc3MtYWNjZXNza2V5LWludGVybmFsLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUucHJvOgor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VXQ1NTQWNj
ZXNzS2V5KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NTU1By
b3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2tleXNGb3JFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRFbGVtZW50QnlBY2Nlc3NLZXkp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIHBhZ2UvcXQvRXZlbnRIYW5k
bGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMpOgorCiAyMDA5LTA4LTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
LnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA0Njc5NSkK
KysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsNyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU0lOR0xFX1RIUkVBREVECiAhY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1hQQVRIPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YUEFUSD0xCiAhY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1hTTFQ9Lik6IERFRklORVMgKz0gRU5BQkxFX1hTTFQ9MAogIyFj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YQkw9MQor
IWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XQ1NTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9XQ1NT
PTAKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV01MPS4pOiBERUZJTkVTICs9IEVOQUJMRV9X
TUw9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSEFSRURfV09SS0VSUz0uKTogREVGSU5F
UyArPSBFTkFCTEVfU0hBUkVEX1dPUktFUlM9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9X
T1JLRVJTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9XT1JLRVJTPTEKQEAgLTI1NDEsNiArMjU0Miwx
MSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMVEVSUz0xKSB7CiAgICAgRkVBVFVSRV9E
RUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX0ZJTFRFUlM9MQogfQogCitjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfV0NTUz0xKSB7CisgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0g
RU5BQkxFX1dDU1M9MQorICAgICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEhUTUxNUD0uKTog
REVGSU5FUyArPSBFTkFCTEVfWEhUTUxNUD0xCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XTUw9MSkgewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICB3bWwvV01MQUVsZW1lbnQuY3Bw
IFwKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gNDY3OTUpCisrKyBXZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtp
dEBuaWNrc2hhbmtzLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTE2MTgsNiArMTYxOSwxNCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlQ29sb3IgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVy
dGllcywgMiwgaW1wb3J0YW50KTsKICAgICB9CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdhcEFjY2Vzc2tleToKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkK
KyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VXQ1NTQWNjZXNzS2V5KCk7CisgICAgICAgIGJyZWFr
OworI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAg
cmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBAIC0xNjU5LDYgKzE2NjgsNTggQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
I2lmIEVOQUJMRShXQ1NTKSAgICAgICAKK1Bhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJz
ZXI6OnBhcnNlV0NTU0FjY2Vzc0tleSgpCit7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBDU1NQYXJzZXJW
YWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOworICAgIENTU1BhcnNlclZhbHVl
KiBuZXh0VmFsdWUgPSAwOyAKKyAgICBib29sIG5leHRJc1ZhbGlkU2VwYXJhdG9yID0gZmFsc2U7
IAorICAgIGJvb2wgbmV4dElzVmFsaWRWYWx1ZSA9IGZhbHNlOyAKKyAgICBTdHJpbmcga2V5czsK
KyAgICB3aGlsZSAodmFsdWUpIHsKKyAgICAgICAgbmV4dFZhbHVlID0gbV92YWx1ZUxpc3QtPm5l
eHQoKTsKKyAgICAgICAgbmV4dElzVmFsaWRTZXBhcmF0b3IgPSAhbmV4dFZhbHVlIHx8IChuZXh0
VmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIG5leHRWYWx1ZS0+aVZh
bHVlID09ICcsJyk7CisgICAgICAgIG5leHRJc1ZhbGlkVmFsdWUgPSBuZXh0VmFsdWUgJiYgKG5l
eHRWYWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiB8fCBuZXh0VmFs
dWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCk7CisgCisgICAgICAgIGlm
ICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAg
ICAgICAgaW50IHZhbCA9IHN0YXRpY19jYXN0PGludD4odmFsdWUtPmZWYWx1ZSk7CisgICAgICAg
ICAgICAvLyBIZXJlIHdlIGp1c3QgYWxsb3cgdGhlIGlucHV0ZWQgYWNjZXNza2V5IG51bWJlciBp
biB0aGlzIHNjb3BlIFswLDldCisgICAgICAgICAgICBpZiAodmFsID49IDAgJiYgdmFsIDwgMTAp
IHsKKyAgICAgICAgICAgICAgICBrZXlzICs9ICIgIjsKKyAgICAgICAgICAgICAgICBrZXlzICs9
IFN0cmluZzo6bnVtYmVyKHZhbHVlLT5mVmFsdWUpOworICAgICAgICAgICAgfQorIAorICAgICAg
ICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQp
IHsKKyAgICAgICAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmcodmFsdWUtPnN0cmluZyk7CisgICAg
ICAgICAgICAvL0hlcmUgd2UganVzdCBhY2NlcHQgdGhlIGlucHV0ZWQgY2hhcmFjdGVyIGluIHRo
aXMgc2V0OiBbICogfCAjIF0KKyAgICAgICAgICAgIGlmIChzdHIgPT0gIioiIHx8IHN0ciA9PSAi
IyIpIHsKKyAgICAgICAgICAgICAgICBrZXlzICs9ICIgIjsKKyAgICAgICAgICAgICAgICBrZXlz
ICs9IHN0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorIAorICAgICAgICBpZiAobmV4dElz
VmFsaWRTZXBhcmF0b3IgJiYgIWtleXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShrZXlzLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORykpOworICAgICAgICAgICAga2V5cyA9ICIiOworICAgICAgICB9CisgCisgICAg
ICAgIGlmICghbmV4dFZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgIGlmIChu
ZXh0SXNWYWxpZFZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBuZXh0VmFsdWU7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICB9Cisg
CisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgbGlzdCA9IDA7CisgCisgICAgcmV0
dXJuIGxpc3QucmVsZWFzZSgpOworfQorI2VuZGlmCisKIHZvaWQgQ1NTUGFyc2VyOjphZGRGaWxs
VmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcnZhbCkK
IHsKICAgICBpZiAobHZhbCkgewpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHJldmlzaW9uIDQ2Nzk1KQorKysgV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0xMzcsNiArMTM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VTVkdTdHJva2VEYXNoYXJyYXkoKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKFdDU1MpCisgICAgICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZVdDU1NBY2Nl
c3NLZXkoKTsKKyNlbmRpZgorCiAgICAgICAgIC8vIENTUzMgUGFyc2luZyBSb3V0aW5lcyAoZm9y
IHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gQ1NTMykKICAgICAgICAgYm9vbCBwYXJzZVNoYWRvdyhp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFn
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCwgUmVmUHRyPENTU1ZhbHVlPiYpOwpJbmRleDog
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA0Njc5NSkKKysrIFdlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCB3b3Jk
LXNwYWNpbmcKIHdvcmQtd3JhcAogei1pbmRleAogem9vbQorLXdhcC1hY2Nlc3NrZXkKIC13ZWJr
aXQtYW5pbWF0aW9uCiAtd2Via2l0LWFuaW1hdGlvbi1kZWxheQogLXdlYmtpdC1hbmltYXRpb24t
ZGlyZWN0aW9uCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNDY3OTUp
CisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEzMyw2ICs1MTMzLDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGlu
dAogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZToKICAgICBjYXNlIENTU1By
b3BlcnR5VGV4dFVuZGVybGluZVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJs
aW5lV2lkdGg6CisjaWYgRU5BQkxFKFdDU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdhcEFjY2Vz
c2tleToKKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UGFkZGluZ1N0YXJ0OgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNDY3OTUpCisr
KyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw2ICsxNjks
MTIgQEAKICNpbmNsdWRlICJIVE1MTm9TY3JpcHRFbGVtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXQ1NTKQorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NS
dWxlLmgiCisjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwpA
QCAtOTczLDYgKzk3OSwxMTEgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlRWxlbWVudEJ5SWQoY29u
c3QgQQogICAgICAgICBtX2R1cGxpY2F0ZUlkcy5yZW1vdmUoZWxlbWVudElkLmltcGwoKSk7CiB9
CiAKKyNpZiBFTkFCTEUoV0NTUykKK3N0YXRpYyBTdHJpbmcgYWNjZXNza2V5c0ZvckVsZW1lbnQo
RWxlbWVudCogZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvcikKK3sKKyAg
ICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCisgCisgICAgU3RyaW5n
IGFjY2Vzc0tleXM7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBlbGVtZW50LT5z
dHlsZSgpOworICAgIC8vMSwgVHJ5IHRvIGdldCBhY2NlY2NrZXlzIGZyb20gaW5saW5lIFdDU1Mg
CisgICAgaWYgKHN0eWxlKQorICAgICAgICBhY2Nlc3NLZXlzID0gc3R5bGUtPmdldFByb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlXYXBBY2Nlc3NrZXkpOworIAorICAgIC8vMiwgVHJ5IHRvIGdldCBh
Y2NlY2NrZXlzIGZyb20gaW50ZXJuYWwgV0NTUyBhbmQgZXh0ZXJuYWwgV0NTUyBpbiB0dXJuCisg
ICAgaWYgKGFjY2Vzc0tleXMuaXNFbXB0eSgpICYmIHN0eWxlU2VsZWN0b3IpIHsKKyAgICAgICAg
UmVmUHRyPENTU1J1bGVMaXN0PiBydWxlcyA9IHN0eWxlU2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JF
bGVtZW50KGVsZW1lbnQsIGZhbHNlKTsKKyAgICAgICAgaWYgKHJ1bGVzICYmIHJ1bGVzLT5sZW5n
dGgoKSA+IDApIHsKKyAgICAgICAgICAgIENTU1J1bGUqIHJ1bGUgPSAwOworICAgICAgICAgICAg
U3RyaW5nIGNzc1RleHQ7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVzLT5s
ZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgcnVsZSA9IHJ1bGVzLT5pdGVtKGkpOwor
ICAgICAgICAgICAgICAgIGNzc1RleHQgPSBydWxlLT5jc3NUZXh0KCk7CisgCisgICAgICAgICAg
ICAgICAgaW50IGlkeCA9IGNzc1RleHQuZmluZCgiLXdhcC1hY2Nlc3NrZXkiKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaWR4ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBwb3MgPSBj
c3NUZXh0LmZpbmQoJzonLCBpZHgpOworICAgICAgICAgICAgICAgICAgICBhY2Nlc3NLZXlzID0g
Y3NzVGV4dC5zdWJzdHJpbmcocG9zICsgMSk7CisgCisgICAgICAgICAgICAgICAgICAgIHBvcyA9
IGFjY2Vzc0tleXMuZmluZCgnOycpOworICAgICAgICAgICAgICAgICAgICBpZiAocG9zID09IC0x
KQorICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gYWNjZXNzS2V5cy5maW5kKCd9Jyk7Cisg
ICAgICAgICAgICAgICAgICAgIGFjY2Vzc0tleXMudHJ1bmNhdGUocG9zKTsKKyAgICAgICAgICAg
ICAgICB9CisgCisgICAgICAgICAgICAgICAgaWYgKCFhY2Nlc3NLZXlzLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgCisgICAgLy8zLCBUcnkgdG8gZ2V0IGFjY2VjY2tleXMgZnJvbSB0aGUgYWNjZXNza2V5IGF0
dHJpYnV0ZSBvZiBlbGVtZW50CisgICAgaWYgKGFjY2Vzc0tleXMuaXNFbXB0eSgpKQorICAgICAg
ICBhY2Nlc3NLZXlzID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGFjY2Vzc2tleUF0dHIpOworIAor
ICAgIGlmICghYWNjZXNzS2V5cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYWNjZXNzS2V5cy5yZXBs
YWNlKCdcJycsICIiKTsKKyAgICAgICAgYWNjZXNzS2V5cyA9IGFjY2Vzc0tleXMuc2ltcGxpZnlX
aGl0ZVNwYWNlKCk7CisgICAgfQorIAorICAgIHJldHVybiBhY2Nlc3NLZXlzOworfQorCitFbGVt
ZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KSBj
b25zdAoreworICAgIGlmIChrZXkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGlmICghbV9hY2Nlc3NLZXlNYXBWYWxpZCkgeworICAgICAgICBmb3IgKE5vZGUqIG4gPSBmaXJz
dENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAgICAgICAgIGlm
ICghbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOworICAg
ICAgICAgICAgU3RyaW5nIGFjY2Vzc0tleVN0cmluZyA9IGFjY2Vzc2tleXNGb3JFbGVtZW50KGVs
ZW1lbnQsIG1fc3R5bGVTZWxlY3Rvcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZL
ZXlzOworICAgICAgICAgICAgYWNjZXNzS2V5U3RyaW5nLnNwbGl0KCIsIiwgdktleXMpOworCisg
ICAgICAgICAgICBTdHJpbmcgYWNjZXNzS2V5OworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz46
Oml0ZXJhdG9yIGl0ID0gdktleXMuYmVnaW4oKTsKKyAgICAgICAgICAgIHdoaWxlIChpdCAhPSB2
S2V5cy5lbmQoKSkgeworICAgICAgICAgICAgICAgIGFjY2Vzc0tleSA9ICppdCsrOworICAgICAg
ICAgICAgICAgIGFjY2Vzc0tleSA9IGFjY2Vzc0tleS5zdHJpcFdoaXRlU3BhY2UoKTsKKworICAg
ICAgICAgICAgICAgIGludCBrZXlMZW4gPSBhY2Nlc3NLZXkubGVuZ3RoKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGtleUxlbiA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9lbGVt
ZW50c0J5QWNjZXNzS2V5LmNvbnRhaW5zKGFjY2Vzc0tleSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5zZXQoYWNjZXNzS2V5LCBlbGVtZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQXMgcGVyIHRoZSBz
cGVjaWZpY2F0aW9uIFdBUC0yMzktV0NTUy0yMDAxMTAyNi1hLnBkZiwgCisgICAgICAgICAgICAg
ICAgICAgIC8vIEluIGEgc3BhY2UgIiAiIHNlcGFyYXRlZCBsaXN0IG9mIGFjY2VzcyBrZXlzIHRo
ZSB1c2VyIAorICAgICAgICAgICAgICAgICAgICAvLyBhZ2VudCBNVVNUIHNlbGVjdCBhbGwgYXZh
aWxhYmxlIGFjY2VzcyBrZXlzIGZvciBhc3NpZ25tZW50CisgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNGb3VuZFZhbGlkS2V5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50
IGsgPSAwOyBrIDwga2V5TGVuOyArK2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmlu
ZyBrZXk7CisgICAgICAgICAgICAgICAgICAgICAgICBrZXkuYXBwZW5kKGFjY2Vzc0tleVtrXSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzc3BhY2Uoc3RhdGljX2Nhc3Q8Y2hhcj4o
YWNjZXNzS2V5W2tdKSkgJiYgIW1fZWxlbWVudHNCeUFjY2Vzc0tleS5jb250YWlucyhrZXkpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lbGVtZW50c0J5QWNjZXNzS2V5LnNldChr
ZXksIGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm91bmRWYWxpZEtl
eSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoaXNGb3VuZFZhbGlkS2V5KQorICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIG1fYWNjZXNzS2V5TWFwVmFsaWQgPSB0cnVlOworICAgIH0KKwor
ICAgIHJldHVybiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuZ2V0KGtleSk7Cit9CisKKyNlbHNlCiBF
bGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5
KSBjb25zdAogewogICAgIGlmIChrZXkuaXNFbXB0eSgpKQpAQCAtOTkwLDYgKzExMDEsNyBAQCBF
bGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5CiAgICAgfQogICAgIHJldHVy
biBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuZ2V0KGtleS5pbXBsKCkpOwogfQorI2VuZGlmCiAKIHZv
aWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKCkKIHsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNDY3OTUp
CisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDY0LDcgKzEw
NjQsMTEgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IEVsZW1lbnQqPiBtX2VsZW1lbnRzQnlJZDsKICAgICBtdXRhYmxlIEhhc2hDb3VudGVkU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiBtX2R1cGxpY2F0ZUlkczsKICAgICAKKyNpZiBFTkFCTEUoV0NTUykK
KyAgICBtdXRhYmxlIEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQ2FzZUZvbGRpbmdIYXNoPiBt
X2VsZW1lbnRzQnlBY2Nlc3NLZXk7CisjZWxzZQogICAgIG11dGFibGUgSGFzaE1hcDxTdHJpbmdJ
bXBsKiwgRWxlbWVudCosIENhc2VGb2xkaW5nSGFzaD4gbV9lbGVtZW50c0J5QWNjZXNzS2V5Owor
I2VuZGlmCiAgICAgCiAgICAgSW5oZXJpdGVkQm9vbCBtX2Rlc2lnbk1vZGU7CiAgICAgCkluZGV4
OiBXZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHJldmlzaW9uIDQ2Nzk1KQorKysgV2ViQ29y
ZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcg
QEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMiw3ICsxMzMsMTMgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVudAogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vz
c0tleU1vZGlmaWVycygpCiB7CisgICAgLy8gRklYTUU6IEZvciBRdCwgdGhlIHRleHQgY2hhcmFj
dGVyIHdvbid0IGJlIHBhc3NlZCB0byBXZWJDb3JlIHdoZW4gaXQgaXMKKyAgICAvLyBpbnB1dGVk
IGZvbGxvd2luZyB0aGUgQ3RybCBLZXkuIFdlJ2QgYmV0dGVyIHVzZSBBbHQga2V5IGFzIGFjY2Vz
c2tleSBtb2RpZmllciAKKyNpZiBFTkFCTEUoV0NTUykKKyAgICByZXR1cm4gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpBbHRLZXk7CisjZWxzZQogICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OkN0cmxLZXk7CisjZW5kaWYKIH0KIAogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDY4MjUpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAor
MjAwOS0wOC0wNSAgY2hhcmxlcyB3ZWkgIDxjaGFybGVzLndlaUB0b3JjaG1vYmlsZS5jb20uY24+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdD
U1MgYWNjZXNza2V5IGV4dGVuc2lvbiBzdXBwb3J0IHRvIFdlYktpdCwgcmVmZXIgdG8gOiBXQVAt
MjM5LVdDU1MtMjAwMTEwMjYtYS5wZGYKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnP2NnaT05NTg5PgorCisKKyAgICAgICAgKiBmYXN0L3djc3MvYWNjZXNza2V5LmNz
czogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWV4dGVybmFsLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWV4
dGVybmFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1p
bmxpbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3djc3Mvd2Nzcy1hY2Nl
c3NrZXktaW5saW5lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy93Y3NzLWFjY2Vz
c2tleS1pbnRlcm5hbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy93
Y3NzLWFjY2Vzc2tleS1pbnRlcm5hbC5odG1sOiBBZGRlZC4KKwogMjAwOS0wOC0wNSAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5z
dGVpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXkuY3NzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXkuY3NzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS5jc3MJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMiBAQAorLmFjY2Vzc2tleSB7IC13YXAtYWNjZXNza2V5OiAxIFwyMywgdCwgMiBcMmEs
IDM7IH0KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWV4dGVy
bmFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nz
cy1hY2Nlc3NrZXktZXh0ZXJuYWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWV4dGVybmFsLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorU291cmNlOgorCis8aHRtbD48aGVhZD4KKzx0aXRs
ZT4gV0NTUyBhY2Nlc3NrZXkgdGVzdDogZXh0ZXJuYWwgQ1NTPC90aXRsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iYWNjZXNza2V5LmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rpb24gcHJlc3NLZXkoa2V5KQoreworICAgIGlm
IChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykgIT0gLTEpCisgICAg
ICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIsICJhbHRLZXkiXTsKKyAgICBlbHNlCisgICAgICAg
IG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIG1v
ZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgICAgICBwcmVzc0tleSgxKTsKKyAgICAgICAgcHJlc3NLZXkoIiMiKTsKKyAgICAg
ICAgcHJlc3NLZXkoMik7CisgICAgICAgIHByZXNzS2V5KCIqIik7CisgICAgICAgIHByZXNzS2V5
KDMpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPjxib2R5IG9ubG9hZD0idGVzdCgpIj4K
KzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyBhcHBs
aWVkIGFzIGFuIGV4dGVybmFsIENTUyA8L3A+IAorPHA+IGNsaWNrICdBTFQrMScgb3IgJ0FMVCsj
JyBlcXVhbHMgdG8gY2xpY2sgb24gdGhlIGZpcnN0IGxpbmsgPC9wPgorPHA+IGNsaWNrICdBTFQr
Micgb3IgJ0FMVCsqJyBlcXVhbHMgdG8gY2xpY2sgb24gdGhlIHNlY29uZCBsaW5rIDwvcD4KKzxw
PiBjbGljayAnQUxUKzMnIGVxdWFscyB0byBjbGljayBvbiB0aGUgdGhpcmQgbGluazwvcD4KKzxh
IGhyZWY9IiMiIGNsYXNzPSJhY2Nlc3NrZXkiIG9uY2xpY2s9ImxvZygnZmlyc3QgbGluayBjbGlj
a2VkJykiPjwvYT4KKzxhIGhyZWY9IiMiIGNsYXNzPSJhY2Nlc3NrZXkiIG9uY2xpY2s9ImxvZygn
c2Vjb25kIGxpbmsgY2xpY2tlZCcpIj48L2E+Cis8YSBocmVmPSIjIiBjbGFzcz0iYWNjZXNza2V5
IiBvbmNsaWNrPSJsb2coJ3RoaXJkIGxpbmsgY2xpY2tlZCcpIj48L2E+CisKKzxvbCBpZD0iY29u
c29sZSI+IDxsaT5maXJzdCBsaW5rIGNsaWNrZWQ8L2xpPjxsaT5maXJzdCBsaW5rIGNsaWNrZWQ8
L2xpPjxsaT5zZWNvbmQgbGluayBjbGlja2VkPC9saT48bGk+c2Vjb25kIGxpbmsgY2xpY2tlZDwv
bGk+PGxpPnRoaXJkIGxpbmsgY2xpY2tlZDwvbGk+PC9vbD4KKworCis8L2JvZHk+PC9odG1sPgor
VGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2ggaXMgYXBwbGllZCBh
cyBhbiBleHRlcm5hbCBDU1MKKworY2xpY2sgJ0FMVCsxJyBvciAnQUxUKyMnIGVxdWFscyB0byBj
bGljayBvbiB0aGUgZmlyc3QgbGluaworCitjbGljayAnQUxUKzInIG9yICdBTFQrKicgZXF1YWxz
IHRvIGNsaWNrIG9uIHRoZSBzZWNvbmQgbGluaworCitjbGljayAnQUxUKzMnIGVxdWFscyB0byBj
bGljayBvbiB0aGUgdGhpcmQgbGluaworCitmaXJzdCBsaW5rIGNsaWNrZWQKK2ZpcnN0IGxpbmsg
Y2xpY2tlZAorc2Vjb25kIGxpbmsgY2xpY2tlZAorc2Vjb25kIGxpbmsgY2xpY2tlZAordGhpcmQg
bGluayBjbGlja2VkCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1hY2Nlc3NrZXkt
ZXh0ZXJuYWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3Mvd2Nzcy1h
Y2Nlc3NrZXktZXh0ZXJuYWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
d2Nzcy93Y3NzLWFjY2Vzc2tleS1leHRlcm5hbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ2IEBACis8aHRtbD4gCis8aGVhZD4KKzx0aXRsZT4gV0NTUyBhY2Nlc3NrZXkgdGVzdDogZXh0
ZXJuYWwgQ1NTPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYWNjZXNza2V5
LmNzcyIgdHlwZT0idGV4dC9jc3MiLz4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkK
K3sKKyAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgaXRl
bS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKK30KK2Z1
bmN0aW9uIHByZXNzS2V5KGtleSkKK3sKKyAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5zZWFy
Y2goL1xiTWFjIE9TIFhcYi8pICE9IC0xKQorICAgICAgICBtb2RpZmllcnMgPSBbImN0cmxLZXki
LCAiYWx0S2V5Il07CisgICAgZWxzZQorICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJdOwor
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBtb2RpZmllcnMpOworfQorZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgcHJlc3NLZXkoMSk7
CisgICAgICAgIHByZXNzS2V5KCIjIik7CisgICAgICAgIHByZXNzS2V5KDIpOworICAgICAgICBw
cmVzc0tleSgiKiIpOworICAgICAgICBwcmVzc0tleSgzKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nl
c3MgS2V5cyBDU1MgZXh0ZW5zaW9uIHdoaWNoIGlzIGFwcGxpZWQgYXMgYW4gZXh0ZXJuYWwgQ1NT
IDwvcD4gCis8cD4gY2xpY2sgJ0FMVCsxJyBvciAnQUxUKyMnIGVxdWFscyB0byBjbGljayBvbiB0
aGUgZmlyc3QgbGluayA8L3A+Cis8cD4gY2xpY2sgJ0FMVCsyJyBvciAnQUxUKyonIGVxdWFscyB0
byBjbGljayBvbiB0aGUgc2Vjb25kIGxpbmsgPC9wPgorPHA+IGNsaWNrICdBTFQrMycgZXF1YWxz
IHRvIGNsaWNrIG9uIHRoZSB0aGlyZCBsaW5rPC9wPgorPGEgaHJlZj0iIyIgY2xhc3M9ImFjY2Vz
c2tleSIgb25jbGljaz0ibG9nKCdmaXJzdCBsaW5rIGNsaWNrZWQnKSI+PC9hPgorPGEgaHJlZj0i
IyIgY2xhc3M9ImFjY2Vzc2tleSIgb25jbGljaz0ibG9nKCdzZWNvbmQgbGluayBjbGlja2VkJyki
PjwvYT4KKzxhIGhyZWY9IiMiIGNsYXNzPSJhY2Nlc3NrZXkiIG9uY2xpY2s9ImxvZygndGhpcmQg
bGluayBjbGlja2VkJykiPjwvYT4KKworPG9sIGlkPSJjb25zb2xlIj4gPC9vbD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbmxp
bmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3Nz
LWFjY2Vzc2tleS1pbmxpbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5z
aW9uIHdoaWNoIGlzIHVzZWQgYXMgYW4gaW5saW5lIENTUworCitjbGljayAnQUxUKzEnIGlzIGVx
dWFsIHRvIGNsaWNraW5nIG9uIHRoZSBidXR0b24KKworY2xpY2sgJ0FMVCsyJyBpcyBlcXVhbCB0
byBjbGlja2luZyBvbiB0aGUgZmlyc3QgbGluaworCitjbGljayAnQUxUKzMnIG9yICdBTFQrKicg
aXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIDJuZCBsaW5rCisKKworZmlyc3QgaW4gZm9jdXMK
K2ZpcnN0IGNsaWNrZWQKK2xpbmsgY2xpY2tlZAorbGluayB3aXRoIGFjY2Vzc2tleSAzfCogY2xp
Y2tlZAorbGluayB3aXRoIGFjY2Vzc2tleSAzfCogY2xpY2tlZApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC93Y3NzL3djc3MtYWNjZXNza2V5LWlubGluZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbmxpbmUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbmxpbmUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNza2V5IHRlc3Q6IGlubGlu
ZSBDU1M8L3RpdGxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHZh
ciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rpb24gcHJl
c3NLZXkoa2V5KQoreworICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgvXGJNYWMg
T1MgWFxiLykgIT0gLTEpCisgICAgICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIsICJhbHRLZXki
XTsKKyAgICBlbHNlCisgICAgICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAgZXZlbnRT
ZW5kZXIua2V5RG93bihrZXksIG1vZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBwcmVzc0tleSgiMSIpOworICAgICAg
ICBwcmVzc0tleSgiMiIpOworICAgICAgICBwcmVzc0tleSgiMyIpOworICAgICAgICBwcmVzc0tl
eSgiKiIpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8L2hlYWQ+CisKKzxib2R5
IG9ubG9hZD0idGVzdCgpIj4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVu
c2lvbiB3aGljaCBpcyB1c2VkIGFzIGFuIGlubGluZSBDU1MgPC9wPiAKKzxwPiBjbGljayAnQUxU
KzEnIGlzIGVxdWFsIHRvIGNsaWNraW5nIG9uIHRoZSBidXR0b24gIDwvcD4KKzxwPiBjbGljayAn
QUxUKzInIGlzIGVxdWFsIHRvIGNsaWNraW5nIG9uIHRoZSBmaXJzdCBsaW5rIDwvcD4KKzxwPiBj
bGljayAnQUxUKzMnIG9yICdBTFQrKicgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIDJuZCBs
aW5rIDwvcD4KKworPGJ1dHRvbiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6MSIgb25mb2N1cz0ibG9n
KCdmaXJzdCBpbiBmb2N1cycpIiBvbmNsaWNrPSJsb2coJ2ZpcnN0IGNsaWNrZWQnKSI+PC9idXR0
b24+Cis8YSBocmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IDIgIiBvbmZvY3VzPSJsb2co
J2xpbmsgaW4gZm9jdXMnKSIgb25jbGljaz0ibG9nKCdsaW5rIGNsaWNrZWQnKSI+PC9hPgorPGEg
aHJlZj0iIyIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiAzIFwyYSIgb25mb2N1cz0ibG9nKCdsaW5r
IHdpdGggYWNjZXNzIGtleSAzfCogaW4gZm9jdXMnKSIgb25jbGljaz0ibG9nKCdsaW5rIHdpdGgg
YWNjZXNza2V5IDN8KiBjbGlja2VkJykiPjwvYT4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tl
eS1pbnRlcm5hbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93
Y3NzL3djc3MtYWNjZXNza2V5LWludGVybmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbnRlcm5hbC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlz
IENTUyBleHRlbnNpb24gd2hpY2ggaXMgdXNlZCBhcyBhbiBpbnRlcm5hbCBDU1MKKworZmlyc3Qg
WzFdIAorZmlyc3QgbGluayBjbGlja2VkCitidXR0b24gb25mb2N1cworYnV0dG9uIGNsaWNrZWQK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbnRlcm5hbC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy93Y3NzLWFjY2Vzc2tleS1pbnRl
cm5hbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL3djc3MtYWNj
ZXNza2V5LWludGVybmFsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKzxodG1s
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPldD
U1MgYWNjZXNza2V5IHRlc3Q6IGludGVybmFsIENTUzwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPgorYSB7IC13YXAtYWNjZXNza2V5OiAxfQorI2J1dHRvbiB7IC13YXAtYWNjZXNza2V5
OiAyfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICB2
YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgaXRlbS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKK30KK2Z1bmN0aW9uIHBy
ZXNzS2V5KGtleSkKK3sKKyAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5zZWFyY2goL1xiTWFj
IE9TIFhcYi8pICE9IC0xKQorICAgICAgICBtb2RpZmllcnMgPSBbImN0cmxLZXkiLCAiYWx0S2V5
Il07CisgICAgZWxzZQorICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJdOworICAgIGV2ZW50
U2VuZGVyLmtleURvd24oa2V5LCBtb2RpZmllcnMpOworfQorZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgcHJlc3NLZXkoMSk7CisgICAgICAg
IHByZXNzS2V5KDIpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+Cis8cD4gVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24g
d2hpY2ggaXMgdXNlZCBhcyBhbiBpbnRlcm5hbCBDU1MgPC9wPiAKKzxhIGhyZWY9IiMiIG9uZm9j
dXM9ImxvZygnZmlyc3QgbGluayBvbmZvY3VzJykiIG9uY2xpY2s9ImxvZygnZmlyc3QgbGluayBj
bGlja2VkJykiPmZpcnN0IFsxXTwvYT4KKzxidXR0b24gIGlkPSJidXR0b24iIG9uZm9jdXM9Imxv
ZygnYnV0dG9uIG9uZm9jdXMnKSIgb25jbGljaz0ibG9nKCdidXR0b24gY2xpY2tlZCcpIj48L2J1
dHRvbj4KKzxvbCBpZD0iY29uc29sZSI+IDwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="18350"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34971</attachid>
            <date>2009-08-17 09:02:14 -0700</date>
            <delta_ts>2009-08-27 16:26:48 -0700</delta_ts>
            <desc>patch that fixes the comments by the reviewer</desc>
            <filename>wcss-accesskey-9589.patch</filename>
            <type>text/plain</type>
            <size>32351</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzM2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMDgtMTcgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBXQ1NTIC13YXAtYWNjZXNza2V5IHN1cHBvcnQgdG8gd2Via2l0LCB3aGlj
aCBjYW4gYXNzaWduIGFuIGFjY2Vzc2tleSBmb3IgYW55IGVsZW1lbnQsIAorICAgICAgICBwcmV0
dHkgbXVjaCBsaWtlIGFjY2Vzc2tleSBhdHRyaWJ1dGUgb2YgYW4gZWxlbWVudC4KKyAgICAgICAg
Y29uc2lkZXJpbmcgZm9yIHdpcmVsZXNzIGRldmljZSwgd2UgYXJlIGxpbWl0aW5nIHRoZSBhY2Nl
c3NrZXkgdG8gMCB+IDksICMsICoKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODkKKworICAgICAgICBUZXN0czogZmFzdC93Y3NzL2Fj
Y2Vzc2tleS1leHRlcm5hbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3djc3MvYWNjZXNza2V5
LWlubGluZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3djc3MvYWNjZXNza2V5LWludGVybmFs
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd2Nzcy9hY2Nlc3NrZXktaW52YWxpZC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3djc3MvYWNjZXNza2V5LXBhcnNlci5odG1sCisKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlV0NTU0FjY2Vzc0tleSk6
CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVy
dHkpOgorICAgICAgICAqIGNzcy9XQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFj
Y2Vzc0tleSk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisKIDIwMDktMDgt
MTMgIE1pa2UgRmVudG9uICA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gVHJlYXQuCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDQ3MTgx
KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0NSw2
ICsxNjQ1LDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OwogICAgICAgICBy
ZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwog
ICAgIH0KKyNpZiBFTkFCTEUoV0NTUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwQWNjZXNza2V5
OgorICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgdmFsaWRfcHJp
bWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBw
YXJzZVdDU1NBY2Nlc3NLZXkoKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgogICAgICAgICByZXR1cm4gcGFyc2VBbmltYXRpb25T
aG9ydGhhbmQoaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlv
bjoKQEAgLTE2ODYsNiArMTY5NCw2MCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBiCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxFKFdDU1MpICAgICAg
IAorUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VXQ1NTQWNjZXNzS2V5
KCkKK3sKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOworICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVM
aXN0LT5jdXJyZW50KCk7CisgICAgQ1NTUGFyc2VyVmFsdWUqIG5leHRWYWx1ZSA9IDA7IAorICAg
IGJvb2wgbmV4dElzVmFsaWRTZXBhcmF0b3IgPSBmYWxzZTsgCisgICAgYm9vbCBuZXh0SXNWYWxp
ZFZhbHVlID0gZmFsc2U7IAorICAgIFN0cmluZyBrZXlzOworICAgIHdoaWxlICh2YWx1ZSkgewor
ICAgICAgICBuZXh0VmFsdWUgPSBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICBuZXh0SXNW
YWxpZFNlcGFyYXRvciA9ICFuZXh0VmFsdWUgfHwgKG5leHRWYWx1ZS0+dW5pdCA9PSBDU1NQYXJz
ZXJWYWx1ZTo6T3BlcmF0b3IgJiYgbmV4dFZhbHVlLT5pVmFsdWUgPT0gJywnKTsKKyAgICAgICAg
bmV4dElzVmFsaWRWYWx1ZSA9IG5leHRWYWx1ZSAmJiAobmV4dFZhbHVlLT51bml0ID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSIHx8IG5leHRWYWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lERU5UKTsKKyAKKyAgICAgICAgaWYgKHZhbHVlLT51bml0ID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAgICAgICBpbnQgdmFsID0gc3RhdGlj
X2Nhc3Q8aW50Pih2YWx1ZS0+ZlZhbHVlKTsKKyAgICAgICAgICAgIC8vIEhlcmUgd2UganVzdCBh
bGxvdyB0aGUgaW5wdXRlZCBhY2Nlc3NrZXkgbnVtYmVyIGluIHRoaXMgc2NvcGUgWzAsOV0KKyAg
ICAgICAgICAgIGlmICh2YWwgPj0gMCAmJiB2YWwgPCAxMCkgeworICAgICAgICAgICAgICAgIGlm
ICgha2V5cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGtleXMgKz0gIiAiOworICAg
ICAgICAgICAgICAgIGtleXMgKz0gU3RyaW5nOjpudW1iZXIodmFsdWUtPmZWYWx1ZSk7CisgICAg
ICAgICAgICB9CisgCisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19JREVOVCkgeworICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZyh2
YWx1ZS0+c3RyaW5nKTsKKyAgICAgICAgICAgIC8vSGVyZSB3ZSBqdXN0IGFjY2VwdCB0aGUgaW5w
dXRlZCBjaGFyYWN0ZXIgaW4gdGhpcyBzZXQ6IFsgKiB8ICMgXQorICAgICAgICAgICAgaWYgKHN0
ciA9PSAiKiIgfHwgc3RyID09ICIjIikgeworICAgICAgICAgICAgICAgIGlmICgha2V5cy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGtleXMgKz0gIiAiOworICAgICAgICAgICAgICAg
IGtleXMgKz0gc3RyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgCisgICAgICAgIGlmIChu
ZXh0SXNWYWxpZFNlcGFyYXRvciAmJiAha2V5cy5pc0VtcHR5KCkgJiYgIWxpc3QtPmxlbmd0aCgp
KSB7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShr
ZXlzLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOworICAgICAgICAgICAga2V5cyA9
ICIiOworICAgICAgICB9CisgCisgICAgICAgIGlmICghbmV4dFZhbHVlKQorICAgICAgICAgICAg
YnJlYWs7CisgCisgICAgICAgIGlmIChuZXh0SXNWYWxpZFZhbHVlKQorICAgICAgICAgICAgdmFs
dWUgPSBuZXh0VmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlID0gbV92YWx1
ZUxpc3QtPm5leHQoKTsKKyAgICB9CisgCisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAgICAg
ICAgbGlzdCA9IDA7CisgCisgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworfQorI2VuZGlmCisK
IHZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcnZhbCkKIHsKICAgICBpZiAobHZhbCkgewpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJ
KHJldmlzaW9uIDQ3MTgxKQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2Jp
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20v
KQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMzcsNiArMTM4LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTVkdTdHJva2VEYXNoYXJy
YXkoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdDU1MpCisgICAgICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBwYXJzZVdDU1NBY2Nlc3NLZXkoKTsKKyNlbmRpZgorCiAgICAgICAgIC8vIENT
UzMgUGFyc2luZyBSb3V0aW5lcyAoZm9yIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gQ1NTMykKICAg
ICAgICAgYm9vbCBwYXJzZVNoYWRvdyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAg
ICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCwgUmVm
UHRyPENTU1ZhbHVlPiYpOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9u
IDQ3MTgxKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUxODUsNiArNTE4NSw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVdpZHRoOgorI2lmIEVOQUJMRShXQ1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlX
YXBBY2Nlc3NrZXk6CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVE
ZWx0YToKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQ6CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKSW5kZXg6IFdlYkNvcmUvY3NzL1dDU1NQcm9w
ZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL1dDU1NQcm9wZXJ0eU5hbWVz
LmluCShyZXZpc2lvbiA0NzE4MSkKKysrIFdlYkNvcmUvY3NzL1dDU1NQcm9wZXJ0eU5hbWVzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDMgKzIsNCBAQAogLXdhcC1tYXJxdWVlLWxvb3AKIC13YXAt
bWFycXVlZS1zcGVlZAogLXdhcC1tYXJxdWVlLXN0eWxlCistd2FwLWFjY2Vzc2tleQpJbmRleDog
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkocmV2aXNpb24gNDcxODEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsMTIgQEAKICNpbmNsdWRlICJIVE1MTm9TY3JpcHRF
bGVtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXQ1NTKQorI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUnVsZUxpc3Qu
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsK
IHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwpAQCAtOTc0LDYgKzk4MCw3MCBAQCB2b2lkIERvY3Vt
ZW50OjpyZW1vdmVFbGVtZW50QnlJZChjb25zdCBBCiAgICAgICAgIG1fZHVwbGljYXRlSWRzLnJl
bW92ZShlbGVtZW50SWQuaW1wbCgpKTsKIH0KIAorI2lmIEVOQUJMRShXQ1NTKQorRWxlbWVudCog
RG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QK
K3sKKyAgICBpZiAoa2V5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3Ig
KE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsK
KyAgICAgICAgaWYgKCFuLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwor
ICAgICAgICBTdHJpbmcgYWNjZXNzS2V5cyA7IC8vYWNjZXNza2V5c0ZvckVsZW1lbnQoZWxlbWVu
dCwgbV9zdHlsZVNlbGVjdG9yKTsKKworICAgICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZSA9IGVsZW1lbnQtPnN0eWxlKCk7CisgICAgICAgIC8vMSwgVHJ5IHRvIGdldCBhY2NlY2NrZXlz
IGZyb20gaW5saW5lIFdDU1MKKyAgICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgYWNjZXNz
S2V5cyA9IHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5V2FwQWNjZXNza2V5KTsK
KworICAgICAgICAvLzIsIFRyeSB0byBnZXQgYWNjZWNja2V5cyBmcm9tIGludGVybmFsIFdDU1Mg
YW5kIGV4dGVybmFsIFdDU1MgaW4gdHVybgorICAgICAgICBpZiAoYWNjZXNzS2V5cy5pc0VtcHR5
KCkgJiYgbV9zdHlsZVNlbGVjdG9yKSB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+
IHJ1bGVzID0gbV9zdHlsZVNlbGVjdG9yLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBm
YWxzZSk7CisgICAgICAgICAgICBpZiAocnVsZXMgJiYgcnVsZXMtPmxlbmd0aCgpID4gMCkgewor
ICAgICAgICAgICAgICAgIENTU1J1bGUqIHJ1bGUgPSAwOworICAgICAgICAgICAgICAgIFN0cmlu
ZyBjc3NUZXh0OworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVsZXMtPmxl
bmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgcnVsZSA9IHJ1bGVzLT5pdGVtKGkp
OworICAgICAgICAgICAgICAgICAgICBjc3NUZXh0ID0gcnVsZS0+Y3NzVGV4dCgpOworCisgICAg
ICAgICAgICAgICAgICAgIGludCBpZHggPSBjc3NUZXh0LmZpbmQoIi13YXAtYWNjZXNza2V5Iik7
CisgICAgICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBwb3MgPSBjc3NUZXh0LmZpbmQoJzonLCBpZHgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYWNjZXNzS2V5cyA9IGNzc1RleHQuc3Vic3RyaW5nKHBvcyArIDEpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICBwb3MgPSBhY2Nlc3NLZXlzLmZpbmQoJzsnKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9zID0gYWNjZXNzS2V5cy5maW5kKCd9Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
Y2Nlc3NLZXlzLnRydW5jYXRlKHBvcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBpZiAoIWFjY2Vzc0tleXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIC8vMywgVHJ5IHRvIGdldCBhY2NlY2NrZXlzIGZyb20gdGhlIGFjY2Vzc2tl
eSBhdHRyaWJ1dGUgb2YgZWxlbWVudAorICAgICAgICBpZiAoYWNjZXNzS2V5cy5pc0VtcHR5KCkp
CisgICAgICAgICAgICBhY2Nlc3NLZXlzID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGFjY2Vzc2tl
eUF0dHIpOworCisgICAgICAgIGlmICghYWNjZXNzS2V5cy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIGFjY2Vzc0tleXMucmVwbGFjZSgnXCcnLCAiIik7CisgICAgICAgICAgICBhY2Nlc3NLZXlz
ID0gYWNjZXNzS2V5cy5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICAgICAgfQorICAgICAKKyAg
ICAgICAvLzQsIHdlJ3ZlIGdvdCB0aGUgYWNjZXNza2V5IHN0cmluZywgZGVjaWRlIGlmIGl0IGNv
bnRhaW5zIHRoZSBrZXkKKworICAgICAgICBpZiAoYWNjZXNzS2V5cy5jb250YWlucyhrZXkpKSB7
CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBy
ZXR1cm4gMCB3aGVuIHRoZXJlJ3Mgbm8gZWxlbWVudCBmb3VuZCB3aXRoIHRoaXMga2V5IAorICAg
IHJldHVybiAwOworfQorCisjZWxzZQogRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFj
Y2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKIHsKICAgICBpZiAoa2V5LmlzRW1wdHko
KSkKQEAgLTk5MSw2ICsxMDYxLDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFj
Y2Vzc0tleQogICAgIH0KICAgICByZXR1cm4gbV9lbGVtZW50c0J5QWNjZXNzS2V5LmdldChrZXku
aW1wbCgpKTsKIH0KKyNlbmRpZgogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZSgpCiB7Cklu
ZGV4OiBXZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHJldmlzaW9uIDQ3MTgxKQorKysgV2Vi
Q29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsy
LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMiw3ICsxMzMsMTMgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVudAogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFj
Y2Vzc0tleU1vZGlmaWVycygpCiB7CisgICAgLy8gRklYTUU6IEZvciBRdCwgdGhlIHRleHQgY2hh
cmFjdGVyIHdvbid0IGJlIHBhc3NlZCB0byBXZWJDb3JlIHdoZW4gaXQgaXMKKyAgICAvLyBpbnB1
dGVkIGZvbGxvd2luZyB0aGUgQ3RybCBLZXkuIFdlJ2QgYmV0dGVyIHVzZSBBbHQga2V5IGFzIGFj
Y2Vzc2tleSBtb2RpZmllciAKKyNpZiBFTkFCTEUoV0NTUykKKyAgICByZXR1cm4gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpBbHRLZXk7CisjZWxzZQogICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OkN0cmxLZXk7CisjZW5kaWYKIH0KIAogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDczNjAp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBA
QAorMjAwOS0wOC0xNyAgQ2hhcmxlcyBXZWkgIDxjaGFybGVzLndlaUB0b3JjaG1vYmlsZS5jb20u
Y24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IFdDU1MgLXdhcC1hY2Nlc3NrZXkgc3VwcG9ydCBmb3IgV2ViS2l0IC4KKyAgICAgICAgQ29uc2lk
ZXJpbmcgaXQncyBhIGZlYXR1cmUgZm9yIG1vYmlsZSBkZXZpY2VzLCB3ZSBhcmUgbGltaXRpbmcg
dmFsaWQgYWNjZXNza2V5cyB0byAwfjksIyBhbmQgKgorCisgICAgICAgIGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODkKKworICAgICAgICAqIGZhc3Qvd2Nzcy9hY2Nl
c3NrZXktZXh0ZXJuYWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3djc3Mv
YWNjZXNza2V5LWV4dGVybmFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy9hY2Nl
c3NrZXktaW5saW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2Fj
Y2Vzc2tleS1pbmxpbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2FjY2Vzc2tl
eS1pbnRlcm5hbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy9hY2Nl
c3NrZXktaW50ZXJuYWwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2FjY2Vzc2tl
eS1pbnZhbGlkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2FjY2Vz
c2tleS1pbnZhbGlkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy9hY2Nlc3NrZXkt
cGFyc2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2FjY2Vzc2tl
eS1wYXJzZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2FjY2Vzc2tleS5jc3M6
IEFkZGVkLgorCiAyMDA5LTA4LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC93Y3NzL2FjY2Vzc2tleS1leHRlcm5hbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1leHRlcm5hbC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWV4dGVybmFsLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorU291cmNlOgorCis8aHRtbD48
aGVhZD4KKzx0aXRsZT4gV0NTUyBhY2Nlc3NrZXkgdGVzdDogZXh0ZXJuYWwgQ1NTPC90aXRsZT4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYWNjZXNza2V5LmNzcyIgdHlwZT0idGV4dC9j
c3MiPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHZhciBpdGVtID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rpb24gcHJlc3NLZXkoa2V5
KQoreworICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykg
IT0gLTEpCisgICAgICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIsICJhbHRLZXkiXTsKKyAgICBl
bHNlCisgICAgICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAgZXZlbnRTZW5kZXIua2V5
RG93bihrZXksIG1vZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworICAgICAgICBwcmVzc0tleSgxKTsKKyAgICAgICAgcHJlc3NLZXko
IiMiKTsKKyAgICAgICAgcHJlc3NLZXkoMik7CisgICAgICAgIHByZXNzS2V5KCIqIik7CisgICAg
ICAgIHByZXNzS2V5KDMpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPjxib2R5IG9ubG9h
ZD0idGVzdCgpIj4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3
aGljaCBpcyBhcHBsaWVkIGFzIGFuIGV4dGVybmFsIENTUyA8L3A+IAorPHA+IGNsaWNrICdBTFQr
MScgb3IgJ0FMVCsjJyBlcXVhbHMgdG8gY2xpY2sgb24gdGhlIGZpcnN0IGxpbmsgPC9wPgorPHA+
IGNsaWNrICdBTFQrMicgb3IgJ0FMVCsqJyBlcXVhbHMgdG8gY2xpY2sgb24gdGhlIHNlY29uZCBs
aW5rIDwvcD4KKzxwPiBjbGljayAnQUxUKzMnIGVxdWFscyB0byBjbGljayBvbiB0aGUgdGhpcmQg
bGluazwvcD4KKzxhIGhyZWY9IiMiIGlkPSJmaXJzdCIgb25jbGljaz0ibG9nKCdmaXJzdCBsaW5r
IGNsaWNrZWQnKSI+PC9hPgorPGEgaHJlZj0iIyIgaWQ9InNlY29uZCIgb25jbGljaz0ibG9nKCdz
ZWNvbmQgbGluayBjbGlja2VkJykiPjwvYT4KKzxhIGhyZWY9IiMiIGlkPSJ0aGlyZCIgb25jbGlj
az0ibG9nKCd0aGlyZCBsaW5rIGNsaWNrZWQnKSI+PC9hPgorCis8b2wgaWQ9ImNvbnNvbGUiPiA8
bGk+Zmlyc3QgbGluayBjbGlja2VkPC9saT48bGk+Zmlyc3QgbGluayBjbGlja2VkPC9saT48bGk+
c2Vjb25kIGxpbmsgY2xpY2tlZDwvbGk+PGxpPnNlY29uZCBsaW5rIGNsaWNrZWQ8L2xpPjxsaT50
aGlyZCBsaW5rIGNsaWNrZWQ8L2xpPjwvb2w+CisKKworPC9ib2R5PjwvaHRtbD4KK1Rlc3QgZm9y
IFdBUCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5zaW9uIHdoaWNoIGlzIGFwcGxpZWQgYXMgYW4gZXh0
ZXJuYWwgQ1NTCisKK2NsaWNrICdBTFQrMScgb3IgJ0FMVCsjJyBlcXVhbHMgdG8gY2xpY2sgb24g
dGhlIGZpcnN0IGxpbmsKKworY2xpY2sgJ0FMVCsyJyBvciAnQUxUKyonIGVxdWFscyB0byBjbGlj
ayBvbiB0aGUgc2Vjb25kIGxpbmsKKworY2xpY2sgJ0FMVCszJyBlcXVhbHMgdG8gY2xpY2sgb24g
dGhlIHRoaXJkIGxpbmsKKworZmlyc3QgbGluayBjbGlja2VkCitmaXJzdCBsaW5rIGNsaWNrZWQK
K3NlY29uZCBsaW5rIGNsaWNrZWQKK3NlY29uZCBsaW5rIGNsaWNrZWQKK3RoaXJkIGxpbmsgY2xp
Y2tlZAorI0VPRgorI0VPRgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1l
eHRlcm5hbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3Nr
ZXktZXh0ZXJuYWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9h
Y2Nlc3NrZXktZXh0ZXJuYWwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorPGh0
bWw+IAorPGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNza2V5IHRlc3Q6IGV4dGVybmFsIENTUzwv
dGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFjY2Vzc2tleS5jc3MiIHR5cGU9
InRleHQvY3NzIi8+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgdmFy
IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9CitmdW5jdGlvbiBwcmVz
c0tleShrZXkpCit7CisgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuc2VhcmNoKC9cYk1hYyBP
UyBYXGIvKSAhPSAtMSkKKyAgICAgICAgbW9kaWZpZXJzID0gWyJjdHJsS2V5IiwgImFsdEtleSJd
OworICAgIGVsc2UKKyAgICAgICAgbW9kaWZpZXJzID0gWyJhbHRLZXkiXTsKKyAgICBldmVudFNl
bmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHByZXNzS2V5KDEpOworICAgICAgICBw
cmVzc0tleSgiIyIpOworICAgICAgICBwcmVzc0tleSgyKTsKKyAgICAgICAgcHJlc3NLZXkoIioi
KTsKKyAgICAgICAgcHJlc3NLZXkoMyk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisK
Kzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NT
IGV4dGVuc2lvbiB3aGljaCBpcyBhcHBsaWVkIGFzIGFuIGV4dGVybmFsIENTUyA8L3A+IAorPHA+
IGNsaWNrICdBTFQrMScgb3IgJ0FMVCsjJyBlcXVhbHMgdG8gY2xpY2sgb24gdGhlIGZpcnN0IGxp
bmsgPC9wPgorPHA+IGNsaWNrICdBTFQrMicgb3IgJ0FMVCsqJyBlcXVhbHMgdG8gY2xpY2sgb24g
dGhlIHNlY29uZCBsaW5rIDwvcD4KKzxwPiBjbGljayAnQUxUKzMnIGVxdWFscyB0byBjbGljayBv
biB0aGUgdGhpcmQgbGluazwvcD4KKzxhIGhyZWY9IiMiIGlkPSJmaXJzdCIgb25jbGljaz0ibG9n
KCdmaXJzdCBsaW5rIGNsaWNrZWQnKSI+PC9hPgorPGEgaHJlZj0iIyIgaWQ9InNlY29uZCIgb25j
bGljaz0ibG9nKCdzZWNvbmQgbGluayBjbGlja2VkJykiPjwvYT4KKzxhIGhyZWY9IiMiIGlkPSJ0
aGlyZCIgb25jbGljaz0ibG9nKCd0aGlyZCBsaW5rIGNsaWNrZWQnKSI+PC9hPgorCis8b2wgaWQ9
ImNvbnNvbGUiPiA8L29sPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC93Y3NzL2FjY2Vzc2tleS1pbmxpbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXktaW5saW5lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXktaW5saW5lLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorU291cmNlOgorCis8aHRtbCB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNz
a2V5IHRlc3Q6IGlubGluZSBDU1M8L3RpdGxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNz
YWdlKQoreworICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAg
ICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOwor
fQorZnVuY3Rpb24gcHJlc3NLZXkoa2V5KQoreworICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50
LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykgIT0gLTEpCisgICAgICAgIG1vZGlmaWVycyA9IFsiY3Ry
bEtleSIsICJhbHRLZXkiXTsKKyAgICBlbHNlCisgICAgICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5
Il07CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIG1vZGlmaWVycyk7Cit9CitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBwcmVzc0tl
eSgiMSIpOworICAgICAgICBwcmVzc0tleSgiMiIpOworICAgICAgICBwcmVzc0tleSgiMyIpOwor
ICAgICAgICBwcmVzc0tleSgiKiIpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPjxib2R5
IG9ubG9hZD0idGVzdCgpIj4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVu
c2lvbiB3aGljaCBpcyB1c2VkIGFzIGFuIGlubGluZSBDU1MgPC9wPiAKKzxwPiBjbGljayAnQUxU
KzEnIGlzIGVxdWFsIHRvIGNsaWNraW5nIG9uIHRoZSBidXR0b24gIDwvcD4KKzxwPiBjbGljayAn
QUxUKzInIGlzIGVxdWFsIHRvIGNsaWNraW5nIG9uIHRoZSBmaXJzdCBsaW5rIDwvcD4KKzxwPiBj
bGljayAnQUxUKzMnIG9yICdBTFQrKicgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIDJuZCBs
aW5rIDwvcD4KKworPGJ1dHRvbiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6MSIgb25jbGljaz0ibG9n
KCdidXR0b24gd2l0aCBpbmxpbmUgc3R5bGUgLXdhcC1hY2Nlc3NrZXk6MTsgY2xpY2tlZCAnKSI+
PC9idXR0b24+Cis8YSBocmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IDIgIiBvbmNsaWNr
PSJsb2coJ2xpbmsgd2l0aCBpbmxpbmUgc3R5bGUgLXdhcC1hY2Nlc3NrZXk6MiBjbGlja2VkJyki
PjwvYT4KKzxhIGhyZWY9IiMiIHN0eWxlPSItd2FwLWFjY2Vzc2tleTogMyBcMmEgIiBvbmNsaWNr
PSJsb2coJ2xpbmsgd2l0aCBpbmxpbmUgc3R5bGUgYWNjZXNza2V5IDN8KiBjbGlja2VkJykiPjwv
YT4KKzxvbCBpZD0iY29uc29sZSI+PGxpPmJ1dHRvbiB3aXRoIGlubGluZSBzdHlsZSAtd2FwLWFj
Y2Vzc2tleToxOyBjbGlja2VkIDwvbGk+PGxpPmxpbmsgd2l0aCBpbmxpbmUgc3R5bGUgLXdhcC1h
Y2Nlc3NrZXk6MiBjbGlja2VkPC9saT48bGk+bGluayB3aXRoIGlubGluZSBzdHlsZSBhY2Nlc3Nr
ZXkgM3wqIGNsaWNrZWQ8L2xpPjxsaT5saW5rIHdpdGggaW5saW5lIHN0eWxlIGFjY2Vzc2tleSAz
fCogY2xpY2tlZDwvbGk+PC9vbD4KKworCis8L2JvZHk+PC9odG1sPgorVGVzdCBmb3IgV0FQIEFj
Y2VzcyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2ggaXMgdXNlZCBhcyBhbiBpbmxpbmUgQ1NTCisK
K2NsaWNrICdBTFQrMScgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIGJ1dHRvbgorCitjbGlj
ayAnQUxUKzInIGlzIGVxdWFsIHRvIGNsaWNraW5nIG9uIHRoZSBmaXJzdCBsaW5rCisKK2NsaWNr
ICdBTFQrMycgb3IgJ0FMVCsqJyBpcyBlcXVhbCB0byBjbGlja2luZyBvbiB0aGUgMm5kIGxpbmsK
KworCitidXR0b24gd2l0aCBpbmxpbmUgc3R5bGUgLXdhcC1hY2Nlc3NrZXk6MTsgY2xpY2tlZAor
bGluayB3aXRoIGlubGluZSBzdHlsZSAtd2FwLWFjY2Vzc2tleToyIGNsaWNrZWQKK2xpbmsgd2l0
aCBpbmxpbmUgc3R5bGUgYWNjZXNza2V5IDN8KiBjbGlja2VkCitsaW5rIHdpdGggaW5saW5lIHN0
eWxlIGFjY2Vzc2tleSAzfCogY2xpY2tlZAorI0VPRgorI0VPRgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC93Y3NzL2FjY2Vzc2tleS1pbmxpbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3djc3MvYWNjZXNza2V5LWlubGluZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1pbmxpbmUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NiBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgor
PGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNza2V5IHRlc3Q6IGlubGluZSBDU1M8L3RpdGxlPgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHZhciBpdGVtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rpb24gcHJlc3NLZXkoa2V5KQorewor
ICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykgIT0gLTEp
CisgICAgICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIsICJhbHRLZXkiXTsKKyAgICBlbHNlCisg
ICAgICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihr
ZXksIG1vZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgICAgICBwcmVzc0tleSgiMSIpOworICAgICAgICBwcmVzc0tleSgiMiIp
OworICAgICAgICBwcmVzc0tleSgiMyIpOworICAgICAgICBwcmVzc0tleSgiKiIpOworICAgIH0K
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0idGVzdCgp
Ij4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1
c2VkIGFzIGFuIGlubGluZSBDU1MgPC9wPiAKKzxwPiBjbGljayAnQUxUKzEnIGlzIGVxdWFsIHRv
IGNsaWNraW5nIG9uIHRoZSBidXR0b24gIDwvcD4KKzxwPiBjbGljayAnQUxUKzInIGlzIGVxdWFs
IHRvIGNsaWNraW5nIG9uIHRoZSBmaXJzdCBsaW5rIDwvcD4KKzxwPiBjbGljayAnQUxUKzMnIG9y
ICdBTFQrKicgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIDJuZCBsaW5rIDwvcD4KKworPGJ1
dHRvbiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6MSIgIG9uY2xpY2s9ImxvZygnYnV0dG9uIHdpdGgg
aW5saW5lIHN0eWxlIC13YXAtYWNjZXNza2V5OjE7IGNsaWNrZWQgJykiPjwvYnV0dG9uPgorPGEg
aHJlZj0iIyIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiAyICIgIG9uY2xpY2s9ImxvZygnbGluayB3
aXRoIGlubGluZSBzdHlsZSAtd2FwLWFjY2Vzc2tleToyIGNsaWNrZWQnKSI+PC9hPgorPGEgaHJl
Zj0iIyIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiAzIFwyYSAiICBvbmNsaWNrPSJsb2coJ2xpbmsg
d2l0aCBpbmxpbmUgc3R5bGUgYWNjZXNza2V5IDN8KiBjbGlja2VkJykiPjwvYT4KKzxvbCBpZD0i
Y29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
d2Nzcy9hY2Nlc3NrZXktaW50ZXJuYWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXktaW50ZXJuYWwtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1pbnRlcm5hbC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKK1NvdXJjZToKKworPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPgorPHRpdGxlPldDU1MgYWNj
ZXNza2V5IHRlc3Q6IGludGVybmFsIENTUzwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorYSB7IC13YXAtYWNjZXNza2V5OiAxfQorI2J1dHRvbiB7IC13YXAtYWNjZXNza2V5OiAyfQor
PC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICB2YXIgaXRl
bSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgaXRlbS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKK30KK2Z1bmN0aW9uIHByZXNzS2V5
KGtleSkKK3sKKyAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5zZWFyY2goL1xiTWFjIE9TIFhc
Yi8pICE9IC0xKQorICAgICAgICBtb2RpZmllcnMgPSBbImN0cmxLZXkiLCAiYWx0S2V5Il07Cisg
ICAgZWxzZQorICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJdOworICAgIGV2ZW50U2VuZGVy
LmtleURvd24oa2V5LCBtb2RpZmllcnMpOworfQorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgcHJlc3NLZXkoMSk7CisgICAgICAgIHByZXNz
S2V5KDIpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPjxib2R5IG9ubG9hZD0idGVzdCgp
Ij4KKzxwPiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1
c2VkIGFzIGFuIGludGVybmFsIENTUyA8L3A+IAorPGEgaHJlZj0iIyIgb25mb2N1cz0ibG9nKCdm
aXJzdCBsaW5rIG9uZm9jdXMnKSIgb25jbGljaz0ibG9nKCdmaXJzdCBsaW5rIGNsaWNrZWQnKSI+
Zmlyc3QgWzFdPC9hPgorPGJ1dHRvbiBpZD0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2J1dHRvbiBv
bmZvY3VzJykiIG9uY2xpY2s9ImxvZygnYnV0dG9uIGNsaWNrZWQnKSI+PC9idXR0b24+Cis8b2wg
aWQ9ImNvbnNvbGUiPiA8bGk+Zmlyc3QgbGluayBjbGlja2VkPC9saT48bGk+YnV0dG9uIG9uZm9j
dXM8L2xpPjxsaT5idXR0b24gY2xpY2tlZDwvbGk+PC9vbD4KKworCis8L2JvZHk+PC9odG1sPgor
VGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2ggaXMgdXNlZCBhcyBh
biBpbnRlcm5hbCBDU1MKKworZmlyc3QgWzFdIAorZmlyc3QgbGluayBjbGlja2VkCitidXR0b24g
b25mb2N1cworYnV0dG9uIGNsaWNrZWQKKyNFT0YKKyNFT0YKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3Qvd2Nzcy9hY2Nlc3NrZXktaW50ZXJuYWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3djc3MvYWNjZXNza2V5LWludGVybmFsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWludGVybmFsLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDEgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
Ij4KKzxoZWFkPgorPHRpdGxlPldDU1MgYWNjZXNza2V5IHRlc3Q6IGludGVybmFsIENTUzwvdGl0
bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorYSB7IC13YXAtYWNjZXNza2V5OiAxfQorI2J1
dHRvbiB7IC13YXAtYWNjZXNza2V5OiAyfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBs
b2cobWVzc2FnZSkKK3sKKyAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxp
Iik7CisgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdl
KSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChp
dGVtKTsKK30KK2Z1bmN0aW9uIHByZXNzS2V5KGtleSkKK3sKKyAgICBpZiAobmF2aWdhdG9yLnVz
ZXJBZ2VudC5zZWFyY2goL1xiTWFjIE9TIFhcYi8pICE9IC0xKQorICAgICAgICBtb2RpZmllcnMg
PSBbImN0cmxLZXkiLCAiYWx0S2V5Il07CisgICAgZWxzZQorICAgICAgICBtb2RpZmllcnMgPSBb
ImFsdEtleSJdOworICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBtb2RpZmllcnMpOworfQor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAg
cHJlc3NLZXkoMSk7CisgICAgICAgIHByZXNzS2V5KDIpOworICAgIH0KK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD4gVGVzdCBmb3IgV0FQIEFjY2Vz
cyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2ggaXMgdXNlZCBhcyBhbiBpbnRlcm5hbCBDU1MgPC9w
PiAKKzxhIGhyZWY9IiMiIG9uZm9jdXM9ImxvZygnZmlyc3QgbGluayBvbmZvY3VzJykiIG9uY2xp
Y2s9ImxvZygnZmlyc3QgbGluayBjbGlja2VkJykiPmZpcnN0IFsxXTwvYT4KKzxidXR0b24gIGlk
PSJidXR0b24iIG9uZm9jdXM9ImxvZygnYnV0dG9uIG9uZm9jdXMnKSIgb25jbGljaz0ibG9nKCdi
dXR0b24gY2xpY2tlZCcpIj48L2J1dHRvbj4KKzxvbCBpZD0iY29uc29sZSI+IDwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWludmFs
aWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nl
c3NrZXktaW52YWxpZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3djc3MvYWNjZXNza2V5LWludmFsaWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY3IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjg6IFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBwcmVzc2tleQorU291cmNlOgorCis8aHRtbCB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNza2V5
IHRlc3Q6IGlubGluZSBDU1M8L3RpdGxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KQoreworICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBp
dGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQor
ZnVuY3Rpb24gcHJlc3NLZXkoa2V5KQoreworICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LnNl
YXJjaCgvXGJNYWMgT1MgWFxiLykgIT0gLTEpCisgICAgICAgIG1vZGlmaWVycyA9IFsiY3RybEtl
eSIsICJhbHRLZXkiXTsKKyAgICBlbHNlCisgICAgICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5Il07
CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIG1vZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBwcmVzc0tleSgi
MCIpOworICAgICAgICBwcmVzc0tleSgiMSIpOworICAgICAgICBwcmVzc0tleSgiYSIpOworICAg
ICAgICBwcmVzc0tleSgiYiIpOworICAgICAgICBwcmVzc2tleSgiYyIpOworICAgICAgICBwcmVz
c2tleSgiZCIpOworICAgICAgICBwcmVzc2tleSgiZSIpOworICAgICAgICBwcmVzc2tleSgiZiIp
OworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPjxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxw
PiBUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIGFz
IGFuIGlubGluZSBDU1MgPC9wPiAKKzxwPiAtd2FwLWFjY2Vzc2tleTphIDA7IG9ubHkgMCB3aWxs
IGJlIGFzc2lnbmVkIGFzIGFjY2Vzc2tleSAgPC9wPgorPHA+IC13YXAtYWNjZXNza2V5OmIsMTsg
b25seSAxIHdpbGwgYmUgYXNzaWduZWQgYXMgYWNjZXNza2V5ICA8L3A+Cis8cD4gLXdhcC1hY2Nl
c3NrZXk6YyBkOyBubyBhY2Nlc3NrZXkgYXNzaWduZWQgc2luY2Ugb25seSAwfjksIyAqIGFyZSB2
YWxpZCBhY2Nlc3NrZXlzIDwvcD4KKzxwPiAtd2FwLWFjY2Vzc2tleTplLGY7IG5vIGFjY2Vzc2tl
eSBhc3NpZ25lZCBzaW5jZSBvbmx5IDB+OSwjLCogYXJlIHZhbGlkIGFjY2Vzc2tleXMgPC9wPgor
Cis8YnV0dG9uIHN0eWxlPSItd2FwLWFjY2Vzc2tleTphIDA7IiBvbmZvY3VzPSJsb2coJ2J1dHRv
biB3aXRoIGFjY2Vzc2tleSBhIDAgaW4gZm9jdXMnKSIgb25jbGljaz0ibG9nKCdidXR0b24gd2l0
aCBhY2Nlc3NrZXkgYSAwIGxpY2tlZCcpIj48L2J1dHRvbj4KKzxhIGhyZWY9IiMiIHN0eWxlPSIt
d2FwLWFjY2Vzc2tleTogYiwxICIgb25mb2N1cz0ibG9nKCdsaW5rIHdpdGggYWNjZXNza2V5IGIs
MSBpbiBmb2N1cycpIiBvbmNsaWNrPSJsb2coJ2xpbmsgd2l0aCBhY2Nlc3NrZXkgYiwxIGNsaWNr
ZWQnKSI+PC9hPgorPGEgaHJlZj0iIyIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiBjIGQgIiBvbmNs
aWNrPSJsb2coJ2lmIHRoaXMgZ290IGludm9rZWQgdmlhIGFjY2Vzc2tleSBjIG9yIGQsIG9yIGFu
eSAgb3RoZXIga2V5IHN0cm9rZSwgaXQgZmFpbHMnKSI+PC9hPgorPGEgaHJlZj0iIyIgc3R5bGU9
Ii13YXAtYWNjZXNza2V5OiBlLGYgIiBvbmNsaWNrPSJsb2coJ2lmIHRoaXMgZ290IGludm9rZWQg
dmlhIGFjY2Vzc2tleSBlIG9yIGYsIG9yIGFueSAgb3RoZXIga2V5IHN0cm9rZSwgaXQgZmFpbHMn
KSI+PC9hPgorPG9sIGlkPSJjb25zb2xlIj48bGk+YnV0dG9uIHdpdGggYWNjZXNza2V5IGEgMCBp
biBmb2N1czwvbGk+PGxpPmJ1dHRvbiB3aXRoIGFjY2Vzc2tleSBhIDAgbGlja2VkPC9saT48bGk+
bGluayB3aXRoIGFjY2Vzc2tleSBiLDEgY2xpY2tlZDwvbGk+PC9vbD4KKworCis8L2JvZHk+PC9o
dG1sPgorVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2ggaXMgdXNl
ZCBhcyBhbiBpbmxpbmUgQ1NTCisKKy13YXAtYWNjZXNza2V5OmEgMDsgb25seSAwIHdpbGwgYmUg
YXNzaWduZWQgYXMgYWNjZXNza2V5CisKKy13YXAtYWNjZXNza2V5OmIsMTsgb25seSAxIHdpbGwg
YmUgYXNzaWduZWQgYXMgYWNjZXNza2V5CisKKy13YXAtYWNjZXNza2V5OmMgZDsgbm8gYWNjZXNz
a2V5IGFzc2lnbmVkIHNpbmNlIG9ubHkgMH45LCMgKiBhcmUgdmFsaWQgYWNjZXNza2V5cworCist
d2FwLWFjY2Vzc2tleTplLGY7IG5vIGFjY2Vzc2tleSBhc3NpZ25lZCBzaW5jZSBvbmx5IDB+OSwj
LCogYXJlIHZhbGlkIGFjY2Vzc2tleXMKKworCitidXR0b24gd2l0aCBhY2Nlc3NrZXkgYSAwIGlu
IGZvY3VzCitidXR0b24gd2l0aCBhY2Nlc3NrZXkgYSAwIGxpY2tlZAorbGluayB3aXRoIGFjY2Vz
c2tleSBiLDEgY2xpY2tlZAorI0VPRgorI0VPRgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93Y3Nz
L2FjY2Vzc2tleS1pbnZhbGlkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93
Y3NzL2FjY2Vzc2tleS1pbnZhbGlkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3djc3MvYWNjZXNza2V5LWludmFsaWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MiBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+
Cis8dGl0bGU+IFdDU1MgYWNjZXNza2V5IHRlc3Q6IGlubGluZSBDU1M8L3RpdGxlPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rpb24gcHJlc3NLZXkoa2V5KQoreworICAgIGlm
IChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykgIT0gLTEpCisgICAg
ICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIsICJhbHRLZXkiXTsKKyAgICBlbHNlCisgICAgICAg
IG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIG1v
ZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgICAgICBwcmVzc0tleSgiMCIpOworICAgICAgICBwcmVzc0tleSgiMSIpOworICAg
ICAgICBwcmVzc0tleSgiYSIpOworICAgICAgICBwcmVzc0tleSgiYiIpOworICAgICAgICBwcmVz
c2tleSgiYyIpOworICAgICAgICBwcmVzc2tleSgiZCIpOworICAgICAgICBwcmVzc2tleSgiZSIp
OworICAgICAgICBwcmVzc2tleSgiZiIpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPiBUZXN0IGZvciBXQVAgQWNj
ZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIGFzIGFuIGlubGluZSBDU1MgPC9w
PiAKKzxwPiAtd2FwLWFjY2Vzc2tleTphIDA7IG9ubHkgMCB3aWxsIGJlIGFzc2lnbmVkIGFzIGFj
Y2Vzc2tleSAgPC9wPgorPHA+IC13YXAtYWNjZXNza2V5OmIsMTsgb25seSAxIHdpbGwgYmUgYXNz
aWduZWQgYXMgYWNjZXNza2V5ICA8L3A+Cis8cD4gLXdhcC1hY2Nlc3NrZXk6YyBkOyBubyBhY2Nl
c3NrZXkgYXNzaWduZWQgc2luY2Ugb25seSAwfjksIyAqIGFyZSB2YWxpZCBhY2Nlc3NrZXlzIDwv
cD4KKzxwPiAtd2FwLWFjY2Vzc2tleTplLGY7IG5vIGFjY2Vzc2tleSBhc3NpZ25lZCBzaW5jZSBv
bmx5IDB+OSwjLCogYXJlIHZhbGlkIGFjY2Vzc2tleXMgPC9wPgorCis8YnV0dG9uIHN0eWxlPSIt
d2FwLWFjY2Vzc2tleTphIDA7IiBvbmZvY3VzPSJsb2coJ2J1dHRvbiB3aXRoIGFjY2Vzc2tleSBh
IDAgaW4gZm9jdXMnKSIgb25jbGljaz0ibG9nKCdidXR0b24gd2l0aCBhY2Nlc3NrZXkgYSAwIGxp
Y2tlZCcpIj48L2J1dHRvbj4KKzxhIGhyZWY9IiMiIHN0eWxlPSItd2FwLWFjY2Vzc2tleTogYiwx
ICIgb25mb2N1cz0ibG9nKCdsaW5rIHdpdGggYWNjZXNza2V5IGIsMSBpbiBmb2N1cycpIiBvbmNs
aWNrPSJsb2coJ2xpbmsgd2l0aCBhY2Nlc3NrZXkgYiwxIGNsaWNrZWQnKSI+PC9hPgorPGEgaHJl
Zj0iIyIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiBjIGQgIiAgb25jbGljaz0ibG9nKCdpZiB0aGlz
IGdvdCBpbnZva2VkIHZpYSBhY2Nlc3NrZXkgYyBvciBkLCBvciBhbnkgIG90aGVyIGtleSBzdHJv
a2UsIGl0IGZhaWxzJykiPjwvYT4KKzxhIGhyZWY9IiMiIHN0eWxlPSItd2FwLWFjY2Vzc2tleTog
ZSxmICIgIG9uY2xpY2s9ImxvZygnaWYgdGhpcyBnb3QgaW52b2tlZCB2aWEgYWNjZXNza2V5IGUg
b3IgZiwgb3IgYW55ICBvdGhlciBrZXkgc3Ryb2tlLCBpdCBmYWlscycpIj48L2E+Cis8b2wgaWQ9
ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3djc3MvYWNjZXNza2V5LXBhcnNlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1wYXJzZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1wYXJzZXItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACitTb3VyY2U6CisKKzxodG1sIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD4KKzx0aXRsZT4gV0NTUyBhY2Nlc3Nr
ZXkgdGVzdDogaW5saW5lIENTUzwvdGl0bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCit7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAg
IGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9
CitmdW5jdGlvbiBwcmVzc0tleShrZXkpCit7CisgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQu
c2VhcmNoKC9cYk1hYyBPUyBYXGIvKSAhPSAtMSkKKyAgICAgICAgbW9kaWZpZXJzID0gWyJjdHJs
S2V5IiwgImFsdEtleSJdOworICAgIGVsc2UKKyAgICAgICAgbW9kaWZpZXJzID0gWyJhbHRLZXki
XTsKKyAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHByZXNzS2V5
KCIxIik7CisgICAgICAgIHByZXNzS2V5KCIyIik7CisgICAgICAgIHByZXNzS2V5KCIzIik7Cisg
ICAgICAgIHByZXNzS2V5KCIqIik7CisgICAgICAgIHByZXNzS2V5KCIjIik7CisgICAgfQorfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdB
UCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5zaW9uIHdoaWNoIGlzIHVzZWQgYXMgYW4gaW5saW5lIENT
UyA8L3A+IAorPHA+IC13YXAtYWNjZXNza2V5OjEsXDJhIDsgb25seSAxIHdpbGwgYmUgYXNzaWdu
ZWQgYXMgYWNjZXNza2V5ICA8L3A+Cis8cD4gLXdhcC1hY2Nlc3NrZXk6IGEsIFwyYTsgc2luY2Ug
YSBpcyBub3QgYSB2YWxpZCBhY2Nlc3NrZXkgZm9yIHdlYmtpdCAoMCB+IDksICosICMpLCBcMmEg
KCopIHdpbGwgYmUgYXNzaWduZWQgYXMgdGhlIGFjY2Vzc2tleSAKKzwvcD48cD4gLXdhcC1hY2Nl
c3NrZXk6MyBcMjMgOyBib3RoIDMgYW5kICMgYXJlIHZhbGlkIGFjY2Vzc2tleXM8L3A+CisKKzxi
dXR0b24gc3R5bGU9Ii13YXAtYWNjZXNza2V5OjEsXDJhIiBvbmZvY3VzPSJsb2coJ2J1dHRvbiB3
aXRoIGFjY2Vzc2tleSAxLCogaW4gZm9jdXMnKSIgb25jbGljaz0ibG9nKCdidXR0b24gd2l0aCBh
Y2Nlc3NrZXkgMSwqIGxpY2tlZCcpIj48L2J1dHRvbj4KKzxhIGhyZWY9IiMiIHN0eWxlPSItd2Fw
LWFjY2Vzc2tleTogYSxcMmEgIiBvbmZvY3VzPSJsb2coJ2xpbmsgd2l0aCBhY2Nlc3NrZXkgYSwq
IGluIGZvY3VzJykiIG9uY2xpY2s9ImxvZygnbGluayB3aXRoIGFjY2Vzc2tleSBhLCogY2xpY2tl
ZCcpIj48L2E+Cis8YSBocmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IDMgXDIzICIgb25m
b2N1cz0ibG9nKCdsaW5rIHdpdGggYWNjZXNzIGtleSAzICMgaW4gZm9jdXMnKSIgb25jbGljaz0i
bG9nKCdsaW5rIHdpdGggYWNjZXNza2V5IDMgIyBjbGlja2VkJykiPjwvYT4KKzxvbCBpZD0iY29u
c29sZSI+PGxpPmJ1dHRvbiB3aXRoIGFjY2Vzc2tleSAxLCogaW4gZm9jdXM8L2xpPjxsaT5idXR0
b24gd2l0aCBhY2Nlc3NrZXkgMSwqIGxpY2tlZDwvbGk+PGxpPmxpbmsgd2l0aCBhY2Nlc3NrZXkg
MyAjIGNsaWNrZWQ8L2xpPjxsaT5saW5rIHdpdGggYWNjZXNza2V5IGEsKiBjbGlja2VkPC9saT48
bGk+bGluayB3aXRoIGFjY2Vzc2tleSAzICMgY2xpY2tlZDwvbGk+PC9vbD4KKworCis8L2JvZHk+
PC9odG1sPgorVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2ggaXMg
dXNlZCBhcyBhbiBpbmxpbmUgQ1NTCisKKy13YXAtYWNjZXNza2V5OjEsXDJhIDsgb25seSAxIHdp
bGwgYmUgYXNzaWduZWQgYXMgYWNjZXNza2V5CisKKy13YXAtYWNjZXNza2V5OiBhLCBcMmE7IHNp
bmNlIGEgaXMgbm90IGEgdmFsaWQgYWNjZXNza2V5IGZvciB3ZWJraXQgKDAgfiA5LCAqLCAjKSwg
XDJhICgqKSB3aWxsIGJlIGFzc2lnbmVkIGFzIHRoZSBhY2Nlc3NrZXkKKworLXdhcC1hY2Nlc3Nr
ZXk6MyBcMjMgOyBib3RoIDMgYW5kICMgYXJlIHZhbGlkIGFjY2Vzc2tleXMKKworCitidXR0b24g
d2l0aCBhY2Nlc3NrZXkgMSwqIGluIGZvY3VzCitidXR0b24gd2l0aCBhY2Nlc3NrZXkgMSwqIGxp
Y2tlZAorbGluayB3aXRoIGFjY2Vzc2tleSAzICMgY2xpY2tlZAorbGluayB3aXRoIGFjY2Vzc2tl
eSBhLCogY2xpY2tlZAorbGluayB3aXRoIGFjY2Vzc2tleSAzICMgY2xpY2tlZAorI0VPRgorI0VP
RgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1wYXJzZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LXBhcnNlci5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1wYXJzZXIuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+IFdDU1MgYWNjZXNza2V5IHRlc3Q6
IGlubGluZSBDU1M8L3RpdGxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQorewor
ICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rp
b24gcHJlc3NLZXkoa2V5KQoreworICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgv
XGJNYWMgT1MgWFxiLykgIT0gLTEpCisgICAgICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIsICJh
bHRLZXkiXTsKKyAgICBlbHNlCisgICAgICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAg
ZXZlbnRTZW5kZXIua2V5RG93bihrZXksIG1vZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBwcmVzc0tleSgiMSIpOwor
ICAgICAgICBwcmVzc0tleSgiMiIpOworICAgICAgICBwcmVzc0tleSgiMyIpOworICAgICAgICBw
cmVzc0tleSgiKiIpOworICAgICAgICBwcmVzc0tleSgiIyIpOworICAgIH0KK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPiBUZXN0
IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIGFzIGFuIGlu
bGluZSBDU1MgPC9wPiAKKzxwPiAtd2FwLWFjY2Vzc2tleToxLFwyYSA7IG9ubHkgMSB3aWxsIGJl
IGFzc2lnbmVkIGFzIGFjY2Vzc2tleSAgPC9wPgorPHA+IC13YXAtYWNjZXNza2V5OiBhLCBcMmE7
IHNpbmNlIGEgaXMgbm90IGEgdmFsaWQgYWNjZXNza2V5IGZvciB3ZWJraXQgKDAgfiA5LCAqLCAj
KSwgXDJhICgqKSB3aWxsIGJlIGFzc2lnbmVkIGFzIHRoZSBhY2Nlc3NrZXkgCis8cD4gLXdhcC1h
Y2Nlc3NrZXk6MyBcMjMgOyBib3RoIDMgYW5kICMgYXJlIHZhbGlkIGFjY2Vzc2tleXM8L3A+CisK
KzxidXR0b24gc3R5bGU9Ii13YXAtYWNjZXNza2V5OjEsXDJhIiBvbmZvY3VzPSJsb2coJ2J1dHRv
biB3aXRoIGFjY2Vzc2tleSAxLCogaW4gZm9jdXMnKSIgb25jbGljaz0ibG9nKCdidXR0b24gd2l0
aCBhY2Nlc3NrZXkgMSwqIGxpY2tlZCcpIj48L2J1dHRvbj4KKzxhIGhyZWY9IiMiIHN0eWxlPSIt
d2FwLWFjY2Vzc2tleTogYSxcMmEgIiBvbmZvY3VzPSJsb2coJ2xpbmsgd2l0aCBhY2Nlc3NrZXkg
YSwqIGluIGZvY3VzJykiIG9uY2xpY2s9ImxvZygnbGluayB3aXRoIGFjY2Vzc2tleSBhLCogY2xp
Y2tlZCcpIj48L2E+Cis8YSBocmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IDMgXDIzICIg
b25mb2N1cz0ibG9nKCdsaW5rIHdpdGggYWNjZXNzIGtleSAzICMgaW4gZm9jdXMnKSIgb25jbGlj
az0ibG9nKCdsaW5rIHdpdGggYWNjZXNza2V5IDMgIyBjbGlja2VkJykiPjwvYT4KKzxvbCBpZD0i
Y29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
d2Nzcy9hY2Nlc3NrZXkuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9h
Y2Nlc3NrZXkuY3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vz
c2tleS5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2ZpcnN0IHsgLXdhcC1hY2Nl
c3NrZXk6IDEgXDIzIDsgfQorI3NlY29uZCB7IC13YXAtYWNjZXNza2V5OiAgMiBcMmEgOyB9Cisj
dGhpcmQgeyAtd2FwLWFjY2Vzc2tleTogIDM7IH0KKwo=
</data>
<flag name="review"
          id="19145"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38919</attachid>
            <date>2009-09-02 02:59:29 -0700</date>
            <delta_ts>2010-01-19 14:40:16 -0800</delta_ts>
            <desc>new patch address reviewer&apos;s comments</desc>
            <filename>wcss-accesskey-9589.patch</filename>
            <type>text/plain</type>
            <size>34189</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Nzk1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMDktMDktMDIgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBXQ1NTIC13YXAtYWNjZXNza2V5IHN1cHBvcnQgZm9yIHdlYmtpdCwgd2hp
Y2ggY2FuIGFzc2lnbiBhbgorICAgICAgICBhY2Nlc3NrZXkgZm9yIGFueSBlbGVtZW50LCBwcmV0
dHkgbXVjaCBsaWtlIGFjY2Vzc2tleSBhdHRyaWJ1dGUgb2YgYW4gZWxlbWVudAorICAgICAgICBX
ZSBhcmUgbGltaXRpbmcgdGhlIGFjY2Vzc2tleSB0byAwfjksJyMnLCcqJyBzaW5jZSB0aGlzIGZl
YXR1cmUgaXMgZGVzaWduZWQKKyAgICAgICAgZm9yIHJlc291cmNlLWxpbWl0ZWQgbW9iaWxlIGRl
dmljZXMgCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1ODkKKworICAgICAgICBUZXN0czogZmFzdC93Y3NzL2FjY2Vzc2tleS1leHRlcm5hbC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3djc3MvYWNjZXNza2V5LWlubGluZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3djc3MvYWNjZXNza2V5LWludGVybmFsLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3Qvd2Nzcy9hY2Nlc3NrZXktaW52YWxpZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dj
c3MvYWNjZXNza2V5LXBhcnNlci5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlV0NTU0FjY2Vzc0tleSk6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5oOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9X
Q1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vzc0tleSk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisKIDIw
MDktMDktMDEgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9u
IDQ3OTU0KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY1MCw2ICsxNjUwLDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGIKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OwogICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRh
bnQpOwogICAgIH0KKyNpZiBFTkFCTEUoV0NTUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2FwQWNj
ZXNza2V5OgorICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgdmFs
aWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VkVmFs
dWUgPSBwYXJzZVdDU1NBY2Nlc3NLZXkoKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgogICAgICAgICByZXR1cm4gcGFyc2VBbmlt
YXRpb25TaG9ydGhhbmQoaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvbjoKQEAgLTE2OTEsNiArMTY5OSw2MCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1
ZShpbnQgcHJvcElkLCBiCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxFKFdDU1Mp
ICAgICAgIAorUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VXQ1NTQWNj
ZXNzS2V5KCkKK3sKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1f
dmFsdWVMaXN0LT5jdXJyZW50KCk7CisgICAgQ1NTUGFyc2VyVmFsdWUqIG5leHRWYWx1ZSA9IDA7
IAorICAgIGJvb2wgbmV4dElzVmFsaWRTZXBhcmF0b3IgPSBmYWxzZTsgCisgICAgYm9vbCBuZXh0
SXNWYWxpZFZhbHVlID0gZmFsc2U7IAorICAgIFN0cmluZyBrZXlzOworICAgIHdoaWxlICh2YWx1
ZSkgeworICAgICAgICBuZXh0VmFsdWUgPSBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICBu
ZXh0SXNWYWxpZFNlcGFyYXRvciA9ICFuZXh0VmFsdWUgfHwgKG5leHRWYWx1ZS0+dW5pdCA9PSBD
U1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgbmV4dFZhbHVlLT5pVmFsdWUgPT0gJywnKTsKKyAg
ICAgICAgbmV4dElzVmFsaWRWYWx1ZSA9IG5leHRWYWx1ZSAmJiAobmV4dFZhbHVlLT51bml0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSIHx8IG5leHRWYWx1ZS0+dW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKTsKKyAKKyAgICAgICAgaWYgKHZhbHVlLT51bml0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAgICAgICBpbnQgdmFsID0g
c3RhdGljX2Nhc3Q8aW50Pih2YWx1ZS0+ZlZhbHVlKTsKKyAgICAgICAgICAgIC8vIEhlcmUgd2Ug
anVzdCBhbGxvdyB0aGUgaW5wdXRlZCBhY2Nlc3NrZXkgbnVtYmVyIGluIHRoaXMgc2NvcGUgWzAs
OV0KKyAgICAgICAgICAgIGlmICh2YWwgPj0gMCAmJiB2YWwgPCAxMCkgeworICAgICAgICAgICAg
ICAgIGlmICgha2V5cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGtleXMgKz0gIiAi
OworICAgICAgICAgICAgICAgIGtleXMgKz0gU3RyaW5nOjpudW1iZXIodmFsdWUtPmZWYWx1ZSk7
CisgICAgICAgICAgICB9CisgCisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgeworICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFN0
cmluZyh2YWx1ZS0+c3RyaW5nKTsKKyAgICAgICAgICAgIC8vSGVyZSB3ZSBqdXN0IGFjY2VwdCB0
aGUgaW5wdXRlZCBjaGFyYWN0ZXIgaW4gdGhpcyBzZXQ6IFsgKiB8ICMgXQorICAgICAgICAgICAg
aWYgKHN0ciA9PSAiKiIgfHwgc3RyID09ICIjIikgeworICAgICAgICAgICAgICAgIGlmICgha2V5
cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGtleXMgKz0gIiAiOworICAgICAgICAg
ICAgICAgIGtleXMgKz0gc3RyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgCisgICAgICAg
IGlmIChuZXh0SXNWYWxpZFNlcGFyYXRvciAmJiAha2V5cy5pc0VtcHR5KCkgJiYgIWxpc3QtPmxl
bmd0aCgpKSB7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShrZXlzLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOworICAgICAgICAgICAg
a2V5cyA9ICIiOworICAgICAgICB9CisgCisgICAgICAgIGlmICghbmV4dFZhbHVlKQorICAgICAg
ICAgICAgYnJlYWs7CisgCisgICAgICAgIGlmIChuZXh0SXNWYWxpZFZhbHVlKQorICAgICAgICAg
ICAgdmFsdWUgPSBuZXh0VmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlID0g
bV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICB9CisgCisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkK
KyAgICAgICAgbGlzdCA9IDA7CisgCisgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworfQorI2Vu
ZGlmCisKIHZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZh
bCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcnZhbCkKIHsKICAgICBpZiAobHZhbCkgewpJbmRleDog
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmgJKHJldmlzaW9uIDQ3OTU0KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3Jj
aCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmls
ZS5jb20vKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMzgsNiArMTM5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTVkdTdHJva2VE
YXNoYXJyYXkoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdDU1MpCisgICAgICAgIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBwYXJzZVdDU1NBY2Nlc3NLZXkoKTsKKyNlbmRpZgorCiAgICAgICAg
IC8vIENTUzMgUGFyc2luZyBSb3V0aW5lcyAoZm9yIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gQ1NT
MykKICAgICAgICAgYm9vbCBwYXJzZVNoYWRvdyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7
CiAgICAgICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFu
dCwgUmVmUHRyPENTU1ZhbHVlPiYpOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDQ3OTU0KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyMTcsNiArNTIxNyw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKICAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dFVuZGVybGluZVdpZHRoOgorI2lmIEVOQUJMRShXQ1NTKQorICAgIGNhc2UgQ1NTUHJv
cGVydHlXYXBBY2Nlc3NrZXk6CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9u
dFNpemVEZWx0YToKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQ6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKSW5kZXg6IFdlYkNvcmUvY3NzL1dD
U1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL1dDU1NQcm9wZXJ0
eU5hbWVzLmluCShyZXZpc2lvbiA0Nzk1NCkKKysrIFdlYkNvcmUvY3NzL1dDU1NQcm9wZXJ0eU5h
bWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yLDMgKzIsNCBAQAogLXdhcC1tYXJxdWVlLWxvb3AK
IC13YXAtbWFycXVlZS1zcGVlZAogLXdhcC1tYXJxdWVlLXN0eWxlCistd2FwLWFjY2Vzc2tleQpJ
bmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAkocmV2aXNpb24gNDc5NTQpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsMTIgQEAKICNpbmNsdWRlICJIVE1MTm9T
Y3JpcHRFbGVtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXQ1NTKQorI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUnVs
ZUxpc3QuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNl
IFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwpAQCAtOTc2LDYgKzk4Miw3NSBAQCB2b2lk
IERvY3VtZW50OjpyZW1vdmVFbGVtZW50QnlJZChjb25zdCBBCiAgICAgICAgIG1fZHVwbGljYXRl
SWRzLnJlbW92ZShlbGVtZW50SWQuaW1wbCgpKTsKIH0KIAorI2lmIEVOQUJMRShXQ1NTKQorRWxl
bWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkg
Y29uc3QKK3sKKyAgICBpZiAoa2V5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBpZiAoIW1fYWNjZXNzS2V5TWFwVmFsaWQpIHsKKyAgICAgICAgZm9yIChOb2RlKiBuID0gZmly
c3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICBp
ZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKKyAg
ICAgICAgICAgIFN0cmluZyBhY2Nlc3NLZXlTdHJpbmc7IAorCisgICAgICAgICAgICBDU1NTdHls
ZURlY2xhcmF0aW9uKiBzdHlsZSA9IGVsZW1lbnQtPnN0eWxlKCk7CisgICAgICAgICAgICAvLzEs
IFRyeSB0byBnZXQgYWNjZXNza2V5cyBmcm9tIGlubGluZSBXQ1NTCisgICAgICAgICAgICBpZiAo
c3R5bGUpCisgICAgICAgICAgICAgICAgYWNjZXNzS2V5U3RyaW5nID0gc3R5bGUtPmdldFByb3Bl
cnR5VmFsdWUoQ1NTUHJvcGVydHlXYXBBY2Nlc3NrZXkpOworCisgICAgICAgICAgICAvLzIsIFRy
eSB0byBnZXQgYWNjZXNza2V5cyBmcm9tIGludGVybmFsIFdDU1MgYW5kIGV4dGVybmFsIFdDU1Mg
aW4gdHVybgorICAgICAgICAgICAgaWYgKGFjY2Vzc0tleVN0cmluZy5pc0VtcHR5KCkgJiYgbV9z
dHlsZVNlbGVjdG9yKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBydWxl
cyA9IG1fc3R5bGVTZWxlY3Rvci0+c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGlmIChydWxlcyAmJiBydWxlcy0+bGVuZ3RoKCkgPiAwKSB7Cisg
ICAgICAgICAgICAgICAgICAgIENTU1J1bGUqIHJ1bGUgPSAwOworICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcgY3NzVGV4dDsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBydWxlcy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcnVsZSA9
IHJ1bGVzLT5pdGVtKGkpOworICAgICAgICAgICAgICAgICAgICAgICAgY3NzVGV4dCA9IHJ1bGUt
PmNzc1RleHQoKTsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZHggPSBjc3NU
ZXh0LmZpbmQoIi13YXAtYWNjZXNza2V5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aWR4ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcyA9IGNzc1Rl
eHQuZmluZCgnOicsIGlkeCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzS2V5
U3RyaW5nID0gY3NzVGV4dC5zdWJzdHJpbmcocG9zICsgMSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwb3MgPSBhY2Nlc3NLZXlTdHJpbmcuZmluZCgnOycpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBvcyA9IGFjY2Vzc0tleVN0cmluZy5maW5kKCd9Jyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjZXNzS2V5U3RyaW5nLnRydW5jYXRlKHBvcyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYWNjZXNzS2V5U3Ry
aW5nLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIC8vMywgVHJ5IHRvIGdldCBhY2Nlc3NrZXlzIGZyb20gdGhlIGFjY2Vzc2tleSBhdHRy
aWJ1dGUgb2YgZWxlbWVudAorICAgICAgICAgICAgaWYgKGFjY2Vzc0tleVN0cmluZy5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgYWNjZXNzS2V5U3RyaW5nID0gZWxlbWVudC0+Z2V0QXR0cmli
dXRlKGFjY2Vzc2tleUF0dHIpOworCisgICAgICAgICAgICBpZiAoIWFjY2Vzc0tleVN0cmluZy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBhY2Nlc3NLZXlTdHJpbmcucmVwbGFjZSgnXCcn
LCAiIik7CisgICAgICAgICAgICAgICAgYWNjZXNzS2V5U3RyaW5nID0gYWNjZXNzS2V5U3RyaW5n
LnNpbXBsaWZ5V2hpdGVTcGFjZSgpOworICAgICAgICAgICAgfQorICAgICAKKyAgICAgICAgICAg
Ly80LCB3ZSd2ZSBnb3QgdGhlIGFjY2Vzc2tleSBzdHJpbmcsaWYgaXQncyBub3QgZW1wdHksIHNw
bGl0IGl0IGFuZCBzdG9yZSBpdCAKKworICAgICAgICAgICAgaWYgKCFhY2Nlc3NLZXlTdHJpbmcu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gYWNjZXNzS2V5czsK
KyAgICAgICAgICAgICAgICBhY2Nlc3NLZXlTdHJpbmcuc3BsaXQoU3RyaW5nKCIgIiksIGFjY2Vz
c0tleXMpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWNjZXNzS2V5cy5z
aXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgbV9lbGVtZW50c0J5QWNjZXNzS2V5LnNl
dChhY2Nlc3NLZXlzW2ldLCBlbGVtZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBtX2FjY2Vzc0tleU1hcFZhbGlkID0gdHJ1ZTsgCisgICAgfQorICAgIHJldHVybiBtX2Vs
ZW1lbnRzQnlBY2Nlc3NLZXkuZ2V0KGtleSk7Cit9CisKKyNlbHNlCiBFbGVtZW50KiBEb2N1bWVu
dDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogewogICAg
IGlmIChrZXkuaXNFbXB0eSgpKQpAQCAtOTg3LDEyICsxMDYyLDEzIEBAIEVsZW1lbnQqIERvY3Vt
ZW50OjpnZXRFbGVtZW50QnlBY2Nlc3NLZXkKICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGFjY2Vzc0tleSA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShhY2Nlc3NrZXlBdHRyKTsKICAg
ICAgICAgICAgIGlmICghYWNjZXNzS2V5LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtX2Vs
ZW1lbnRzQnlBY2Nlc3NLZXkuc2V0KGFjY2Vzc0tleS5pbXBsKCksIGVsZW1lbnQpOworICAgICAg
ICAgICAgICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5zZXQoYWNjZXNzS2V5LCBlbGVtZW50KTsK
ICAgICAgICAgfQogICAgICAgICBtX2FjY2Vzc0tleU1hcFZhbGlkID0gdHJ1ZTsKICAgICB9Ci0g
ICAgcmV0dXJuIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5nZXQoa2V5LmltcGwoKSk7CisgICAgcmV0
dXJuIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5nZXQoa2V5KTsKIH0KKyNlbmRpZgogCiB2b2lkIERv
Y3VtZW50Ojp1cGRhdGVUaXRsZSgpCiB7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDQ3OTU0KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1OCw3ICsxMDU4LDEx
IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBFbGVt
ZW50Kj4gbV9lbGVtZW50c0J5SWQ7CiAgICAgbXV0YWJsZSBIYXNoQ291bnRlZFNldDxBdG9taWNT
dHJpbmdJbXBsKj4gbV9kdXBsaWNhdGVJZHM7CiAgICAgCi0gICAgbXV0YWJsZSBIYXNoTWFwPFN0
cmluZ0ltcGwqLCBFbGVtZW50KiwgQ2FzZUZvbGRpbmdIYXNoPiBtX2VsZW1lbnRzQnlBY2Nlc3NL
ZXk7CisgICAgLy8gVGhlIGluZGV4IG9mIG1fZWxlbWVudHNCeUFjY2Vzc0tleSBpcyBjaGFuZ2Vk
IGZyb20gQXRvbWljU3RyaW5nKiB0byBTdHJpbmcsIAorICAgIC8vIEJlY2F1c2Ugd2l0aCAtd2Fw
LWFjY2Vzc2tleSwgd2UgY2FuJ3QgZ2V0IGEgcG9pbnRlciBvZiBBdG9taWNTdHJpbmcgdG8gcmVm
ZXJlbmNlIGEgZWxlbWVudAorICAgIC8vIHdlIGNhbiBvbmx5IHJlZmVyY2UgaXQgd2l0aCBhIHRl
bXBvcmFyeSBTdHJpbmcgLCB3aGljaCByZXByZXNlbnRzIHRoZSBhY2Nlc3NrZXkgYXR0cmlidXRl
ICwKKyAgICAvLyBvciBhIGFjY2Vzc2tleSBkZWZpbmVkIGluIC13YXAtYWNjZXNza2V5CisgICAg
bXV0YWJsZSBIYXNoTWFwPFN0cmluZywgRWxlbWVudCosIENhc2VGb2xkaW5nSGFzaD4gbV9lbGVt
ZW50c0J5QWNjZXNzS2V5OwogICAgIAogICAgIEluaGVyaXRlZEJvb2wgbV9kZXNpZ25Nb2RlOwog
ICAgIApJbmRleDogV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCShyZXZpc2lvbiA0Nzk1NCkK
KysrIFdlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzIsNyArMTMzLDEzIEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnQKIAogdW5zaWduZWQgRXZlbnRIYW5k
bGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogeworICAgIC8vIEZJWE1FOiBGb3IgUXQsIHRoZSB0
ZXh0IGNoYXJhY3RlciB3b24ndCBiZSBwYXNzZWQgdG8gV2ViQ29yZSB3aGVuIGl0IGlzCisgICAg
Ly8gaW5wdXRlZCBmb2xsb3dpbmcgdGhlIEN0cmwgS2V5LiBXZSdkIGJldHRlciB1c2UgQWx0IGtl
eSBhcyBhY2Nlc3NrZXkgbW9kaWZpZXIgCisjaWYgRU5BQkxFKFdDU1MpCisgICAgcmV0dXJuIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworI2Vsc2UKICAgICByZXR1cm4gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpDdHJsS2V5OworI2VuZGlmCiB9CiAKIH0KSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDQ3OTU2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMDktMDktMDIgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2Jp
bGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBXQ1NTIC13YXAtYWNjZXNza2V5IHN1cHBvcnQgZm9yIFdlYktpdCAgCisgICAgICAg
IENvbnNpZGVyaW5nIGl0J3MgZmVhdHVyZSBmb3IgbW9iaWxlIGRldmljZXMsIHdlIGFyZSBsaW1p
dGluZyB2YWxpZCBhY2Nlc3NrZXlzIHRvIDB+OSwnIycsJyoiCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODkKKworICAgICAgICAqIGZhc3Qvd2Nz
cy9hY2Nlc3NrZXktZXh0ZXJuYWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3djc3MvYWNjZXNza2V5LWV4dGVybmFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nz
cy9hY2Nlc3NrZXktaW5saW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93
Y3NzL2FjY2Vzc2tleS1pbmxpbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2Fj
Y2Vzc2tleS1pbnRlcm5hbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nz
cy9hY2Nlc3NrZXktaW50ZXJuYWwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2Fj
Y2Vzc2tleS1pbnZhbGlkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3Nz
L2FjY2Vzc2tleS1pbnZhbGlkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy9hY2Nl
c3NrZXktcGFyc2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2Fj
Y2Vzc2tleS1wYXJzZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC93Y3NzL2FjY2Vzc2tl
eS5jc3M6IEFkZGVkLgorCiAyMDA5LTA5LTAyICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWV4dGVybmFsLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWV4dGVybmFsLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXkt
ZXh0ZXJuYWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACitTb3Vy
Y2U6CisKKzxodG1sPjxoZWFkPgorPHRpdGxlPiBXQ1NTIGFjY2Vzc2tleSB0ZXN0OiBleHRlcm5h
bCBDU1M8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhY2Nlc3NrZXkuY3Nz
IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7Cisg
ICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0ZW0uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9CitmdW5jdGlv
biBwcmVzc0tleShrZXkpCit7CisgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuc2VhcmNoKC9c
Yk1hYyBPUyBYXGIvKSAhPSAtMSkKKyAgICAgICAgbW9kaWZpZXJzID0gWyJjdHJsS2V5IiwgImFs
dEtleSJdOworICAgIGVsc2UKKyAgICAgICAgbW9kaWZpZXJzID0gWyJhbHRLZXkiXTsKKyAgICBl
dmVudFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHByZXNzS2V5KDEpOworICAg
ICAgICBwcmVzc0tleSgiIyIpOworICAgICAgICBwcmVzc0tleSgyKTsKKyAgICAgICAgcHJlc3NL
ZXkoIioiKTsKKyAgICAgICAgcHJlc3NLZXkoMyk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBD
U1MgZXh0ZW5zaW9uIHdoaWNoIGlzIGFwcGxpZWQgYXMgYW4gZXh0ZXJuYWwgQ1NTIDwvcD4gCis8
cD4gY2xpY2sgJ0FMVCsxJyBvciAnQUxUKyMnIGVxdWFscyB0byBjbGljayBvbiB0aGUgZmlyc3Qg
bGluayA8L3A+Cis8cD4gY2xpY2sgJ0FMVCsyJyBvciAnQUxUKyonIGVxdWFscyB0byBjbGljayBv
biB0aGUgc2Vjb25kIGxpbmsgPC9wPgorPHA+IGNsaWNrICdBTFQrMycgZXF1YWxzIHRvIGNsaWNr
IG9uIHRoZSB0aGlyZCBsaW5rPC9wPgorPGEgaHJlZj0iIyIgaWQ9ImZpcnN0IiBvbmNsaWNrPSJs
b2coJ2ZpcnN0IGxpbmsgY2xpY2tlZCcpIj48L2E+Cis8YSBocmVmPSIjIiBpZD0ic2Vjb25kIiBv
bmNsaWNrPSJsb2coJ3NlY29uZCBsaW5rIGNsaWNrZWQnKSI+PC9hPgorPGEgaHJlZj0iIyIgaWQ9
InRoaXJkIiBvbmNsaWNrPSJsb2coJ3RoaXJkIGxpbmsgY2xpY2tlZCcpIj48L2E+CisKKzxvbCBp
ZD0iY29uc29sZSI+IDxsaT5maXJzdCBsaW5rIGNsaWNrZWQ8L2xpPjxsaT5maXJzdCBsaW5rIGNs
aWNrZWQ8L2xpPjxsaT5zZWNvbmQgbGluayBjbGlja2VkPC9saT48bGk+c2Vjb25kIGxpbmsgY2xp
Y2tlZDwvbGk+PGxpPnRoaXJkIGxpbmsgY2xpY2tlZDwvbGk+PC9vbD4KKworCis8L2JvZHk+PC9o
dG1sPgorVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2ggaXMgYXBw
bGllZCBhcyBhbiBleHRlcm5hbCBDU1MKKworY2xpY2sgJ0FMVCsxJyBvciAnQUxUKyMnIGVxdWFs
cyB0byBjbGljayBvbiB0aGUgZmlyc3QgbGluaworCitjbGljayAnQUxUKzInIG9yICdBTFQrKicg
ZXF1YWxzIHRvIGNsaWNrIG9uIHRoZSBzZWNvbmQgbGluaworCitjbGljayAnQUxUKzMnIGVxdWFs
cyB0byBjbGljayBvbiB0aGUgdGhpcmQgbGluaworCitmaXJzdCBsaW5rIGNsaWNrZWQKK2ZpcnN0
IGxpbmsgY2xpY2tlZAorc2Vjb25kIGxpbmsgY2xpY2tlZAorc2Vjb25kIGxpbmsgY2xpY2tlZAor
dGhpcmQgbGluayBjbGlja2VkCisjRU9GCisjRU9GCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dj
c3MvYWNjZXNza2V5LWV4dGVybmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC93Y3NzL2FjY2Vzc2tleS1leHRlcm5hbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1leHRlcm5hbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ2IEBACis8aHRtbD4gCis8aGVhZD4KKzx0aXRsZT4gV0NTUyBhY2Nlc3NrZXkgdGVzdDog
ZXh0ZXJuYWwgQ1NTPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYWNjZXNz
a2V5LmNzcyIgdHlwZT0idGV4dC9jc3MiLz4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAg
aXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKK30K
K2Z1bmN0aW9uIHByZXNzS2V5KGtleSkKK3sKKyAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5z
ZWFyY2goL1xiTWFjIE9TIFhcYi8pICE9IC0xKQorICAgICAgICBtb2RpZmllcnMgPSBbImN0cmxL
ZXkiLCAiYWx0S2V5Il07CisgICAgZWxzZQorICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJd
OworICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBtb2RpZmllcnMpOworfQorZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgcHJlc3NLZXko
MSk7CisgICAgICAgIHByZXNzS2V5KCIjIik7CisgICAgICAgIHByZXNzS2V5KDIpOworICAgICAg
ICBwcmVzc0tleSgiKiIpOworICAgICAgICBwcmVzc0tleSgzKTsKKyAgICB9Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBB
Y2Nlc3MgS2V5cyBDU1MgZXh0ZW5zaW9uIHdoaWNoIGlzIGFwcGxpZWQgYXMgYW4gZXh0ZXJuYWwg
Q1NTIDwvcD4gCis8cD4gY2xpY2sgJ0FMVCsxJyBvciAnQUxUKyMnIGVxdWFscyB0byBjbGljayBv
biB0aGUgZmlyc3QgbGluayA8L3A+Cis8cD4gY2xpY2sgJ0FMVCsyJyBvciAnQUxUKyonIGVxdWFs
cyB0byBjbGljayBvbiB0aGUgc2Vjb25kIGxpbmsgPC9wPgorPHA+IGNsaWNrICdBTFQrMycgZXF1
YWxzIHRvIGNsaWNrIG9uIHRoZSB0aGlyZCBsaW5rPC9wPgorPGEgaHJlZj0iIyIgaWQ9ImZpcnN0
IiBvbmNsaWNrPSJsb2coJ2ZpcnN0IGxpbmsgY2xpY2tlZCcpIj48L2E+Cis8YSBocmVmPSIjIiBp
ZD0ic2Vjb25kIiBvbmNsaWNrPSJsb2coJ3NlY29uZCBsaW5rIGNsaWNrZWQnKSI+PC9hPgorPGEg
aHJlZj0iIyIgaWQ9InRoaXJkIiBvbmNsaWNrPSJsb2coJ3RoaXJkIGxpbmsgY2xpY2tlZCcpIj48
L2E+CisKKzxvbCBpZD0iY29uc29sZSI+IDwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWlubGluZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1pbmxpbmUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1pbmxp
bmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACitTb3VyY2U6CisK
KzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD4KKzx0aXRs
ZT4gV0NTUyBhY2Nlc3NrZXkgdGVzdDogaW5saW5lIENTUzwvdGl0bGU+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQoaXRlbSk7Cit9CitmdW5jdGlvbiBwcmVzc0tleShrZXkpCit7CisgICAgaWYgKG5hdmln
YXRvci51c2VyQWdlbnQuc2VhcmNoKC9cYk1hYyBPUyBYXGIvKSAhPSAtMSkKKyAgICAgICAgbW9k
aWZpZXJzID0gWyJjdHJsS2V5IiwgImFsdEtleSJdOworICAgIGVsc2UKKyAgICAgICAgbW9kaWZp
ZXJzID0gWyJhbHRLZXkiXTsKKyAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJz
KTsKK30KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgICAgIHByZXNzS2V5KCIxIik7CisgICAgICAgIHByZXNzS2V5KCIyIik7CisgICAgICAgIHBy
ZXNzS2V5KCIzIik7CisgICAgICAgIHByZXNzS2V5KCIqIik7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nlc3Mg
S2V5cyBDU1MgZXh0ZW5zaW9uIHdoaWNoIGlzIHVzZWQgYXMgYW4gaW5saW5lIENTUyA8L3A+IAor
PHA+IGNsaWNrICdBTFQrMScgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIGJ1dHRvbiAgPC9w
PgorPHA+IGNsaWNrICdBTFQrMicgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIGZpcnN0IGxp
bmsgPC9wPgorPHA+IGNsaWNrICdBTFQrMycgb3IgJ0FMVCsqJyBpcyBlcXVhbCB0byBjbGlja2lu
ZyBvbiB0aGUgMm5kIGxpbmsgPC9wPgorCis8YnV0dG9uIHN0eWxlPSItd2FwLWFjY2Vzc2tleTox
IiBvbmNsaWNrPSJsb2coJ2J1dHRvbiB3aXRoIGlubGluZSBzdHlsZSAtd2FwLWFjY2Vzc2tleTox
OyBjbGlja2VkICcpIj48L2J1dHRvbj4KKzxhIGhyZWY9IiMiIHN0eWxlPSItd2FwLWFjY2Vzc2tl
eTogMiAiIG9uY2xpY2s9ImxvZygnbGluayB3aXRoIGlubGluZSBzdHlsZSAtd2FwLWFjY2Vzc2tl
eToyIGNsaWNrZWQnKSI+PC9hPgorPGEgaHJlZj0iIyIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiAz
IFwyYSAiIG9uY2xpY2s9ImxvZygnbGluayB3aXRoIGlubGluZSBzdHlsZSBhY2Nlc3NrZXkgM3wq
IGNsaWNrZWQnKSI+PC9hPgorPG9sIGlkPSJjb25zb2xlIj48bGk+YnV0dG9uIHdpdGggaW5saW5l
IHN0eWxlIC13YXAtYWNjZXNza2V5OjE7IGNsaWNrZWQgPC9saT48bGk+bGluayB3aXRoIGlubGlu
ZSBzdHlsZSAtd2FwLWFjY2Vzc2tleToyIGNsaWNrZWQ8L2xpPjxsaT5saW5rIHdpdGggaW5saW5l
IHN0eWxlIGFjY2Vzc2tleSAzfCogY2xpY2tlZDwvbGk+PGxpPmxpbmsgd2l0aCBpbmxpbmUgc3R5
bGUgYWNjZXNza2V5IDN8KiBjbGlja2VkPC9saT48L29sPgorCisKKzwvYm9keT48L2h0bWw+CitU
ZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIGFzIGFu
IGlubGluZSBDU1MKKworY2xpY2sgJ0FMVCsxJyBpcyBlcXVhbCB0byBjbGlja2luZyBvbiB0aGUg
YnV0dG9uCisKK2NsaWNrICdBTFQrMicgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIGZpcnN0
IGxpbmsKKworY2xpY2sgJ0FMVCszJyBvciAnQUxUKyonIGlzIGVxdWFsIHRvIGNsaWNraW5nIG9u
IHRoZSAybmQgbGluaworCisKK2J1dHRvbiB3aXRoIGlubGluZSBzdHlsZSAtd2FwLWFjY2Vzc2tl
eToxOyBjbGlja2VkCitsaW5rIHdpdGggaW5saW5lIHN0eWxlIC13YXAtYWNjZXNza2V5OjIgY2xp
Y2tlZAorbGluayB3aXRoIGlubGluZSBzdHlsZSBhY2Nlc3NrZXkgM3wqIGNsaWNrZWQKK2xpbmsg
d2l0aCBpbmxpbmUgc3R5bGUgYWNjZXNza2V5IDN8KiBjbGlja2VkCisjRU9GCisjRU9GCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWlubGluZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXktaW5saW5lLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWlubGluZS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT4gV0NTUyBhY2Nlc3NrZXkgdGVzdDogaW5saW5l
IENTUzwvdGl0bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgdmFy
IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9CitmdW5jdGlvbiBwcmVz
c0tleShrZXkpCit7CisgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuc2VhcmNoKC9cYk1hYyBP
UyBYXGIvKSAhPSAtMSkKKyAgICAgICAgbW9kaWZpZXJzID0gWyJjdHJsS2V5IiwgImFsdEtleSJd
OworICAgIGVsc2UKKyAgICAgICAgbW9kaWZpZXJzID0gWyJhbHRLZXkiXTsKKyAgICBldmVudFNl
bmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHByZXNzS2V5KCIxIik7CisgICAgICAg
IHByZXNzS2V5KCIyIik7CisgICAgICAgIHByZXNzS2V5KCIzIik7CisgICAgICAgIHByZXNzS2V5
KCIqIik7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5z
aW9uIHdoaWNoIGlzIHVzZWQgYXMgYW4gaW5saW5lIENTUyA8L3A+IAorPHA+IGNsaWNrICdBTFQr
MScgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIGJ1dHRvbiAgPC9wPgorPHA+IGNsaWNrICdB
TFQrMicgaXMgZXF1YWwgdG8gY2xpY2tpbmcgb24gdGhlIGZpcnN0IGxpbmsgPC9wPgorPHA+IGNs
aWNrICdBTFQrMycgb3IgJ0FMVCsqJyBpcyBlcXVhbCB0byBjbGlja2luZyBvbiB0aGUgMm5kIGxp
bmsgPC9wPgorCis8YnV0dG9uIHN0eWxlPSItd2FwLWFjY2Vzc2tleToxIiAgb25jbGljaz0ibG9n
KCdidXR0b24gd2l0aCBpbmxpbmUgc3R5bGUgLXdhcC1hY2Nlc3NrZXk6MTsgY2xpY2tlZCAnKSI+
PC9idXR0b24+Cis8YSBocmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IDIgIiAgb25jbGlj
az0ibG9nKCdsaW5rIHdpdGggaW5saW5lIHN0eWxlIC13YXAtYWNjZXNza2V5OjIgY2xpY2tlZCcp
Ij48L2E+Cis8YSBocmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IDMgXDJhICIgIG9uY2xp
Y2s9ImxvZygnbGluayB3aXRoIGlubGluZSBzdHlsZSBhY2Nlc3NrZXkgM3wqIGNsaWNrZWQnKSI+
PC9hPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1pbnRlcm5hbC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1pbnRlcm5hbC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWlu
dGVybmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorU291cmNl
OgorCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PGhlYWQ+Cis8
dGl0bGU+V0NTUyBhY2Nlc3NrZXkgdGVzdDogaW50ZXJuYWwgQ1NTPC90aXRsZT4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CithIHsgLXdhcC1hY2Nlc3NrZXk6IDF9CisjYnV0dG9uIHsgLXdhcC1h
Y2Nlc3NrZXk6IDJ9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQor
eworICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVt
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVu
Y3Rpb24gcHJlc3NLZXkoa2V5KQoreworICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJj
aCgvXGJNYWMgT1MgWFxiLykgIT0gLTEpCisgICAgICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIs
ICJhbHRLZXkiXTsKKyAgICBlbHNlCisgICAgICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5Il07Cisg
ICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIG1vZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBwcmVzc0tleSgxKTsK
KyAgICAgICAgcHJlc3NLZXkoMik7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+PGJvZHkg
b25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5z
aW9uIHdoaWNoIGlzIHVzZWQgYXMgYW4gaW50ZXJuYWwgQ1NTIDwvcD4gCis8YSBocmVmPSIjIiBv
bmZvY3VzPSJsb2coJ2ZpcnN0IGxpbmsgb25mb2N1cycpIiBvbmNsaWNrPSJsb2coJ2ZpcnN0IGxp
bmsgY2xpY2tlZCcpIj5maXJzdCBbMV08L2E+Cis8YnV0dG9uIGlkPSJidXR0b24iIG9uZm9jdXM9
ImxvZygnYnV0dG9uIG9uZm9jdXMnKSIgb25jbGljaz0ibG9nKCdidXR0b24gY2xpY2tlZCcpIj48
L2J1dHRvbj4KKzxvbCBpZD0iY29uc29sZSI+IDxsaT5maXJzdCBsaW5rIGNsaWNrZWQ8L2xpPjxs
aT5idXR0b24gb25mb2N1czwvbGk+PGxpPmJ1dHRvbiBjbGlja2VkPC9saT48L29sPgorCisKKzwv
Ym9keT48L2h0bWw+CitUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGlj
aCBpcyB1c2VkIGFzIGFuIGludGVybmFsIENTUworCitmaXJzdCBbMV0gCitmaXJzdCBsaW5rIGNs
aWNrZWQKK2J1dHRvbiBvbmZvY3VzCitidXR0b24gY2xpY2tlZAorI0VPRgorI0VPRgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS1pbnRlcm5hbC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXktaW50ZXJuYWwuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXktaW50ZXJuYWwuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+V0NTUyBhY2Nlc3NrZXkgdGVzdDogaW50
ZXJuYWwgQ1NTPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CithIHsgLXdhcC1hY2Nl
c3NrZXk6IDF9CisjYnV0dG9uIHsgLXdhcC1hY2Nlc3NrZXk6IDJ9Cis8L3N0eWxlPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rpb24gcHJlc3NLZXkoa2V5KQoreworICAgIGlm
IChuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykgIT0gLTEpCisgICAg
ICAgIG1vZGlmaWVycyA9IFsiY3RybEtleSIsICJhbHRLZXkiXTsKKyAgICBlbHNlCisgICAgICAg
IG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIG1v
ZGlmaWVycyk7Cit9CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgICAgICBwcmVzc0tleSgxKTsKKyAgICAgICAgcHJlc3NLZXkoMik7CisgICAgfQor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPiBUZXN0
IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIGFzIGFuIGlu
dGVybmFsIENTUyA8L3A+IAorPGEgaHJlZj0iIyIgb25mb2N1cz0ibG9nKCdmaXJzdCBsaW5rIG9u
Zm9jdXMnKSIgb25jbGljaz0ibG9nKCdmaXJzdCBsaW5rIGNsaWNrZWQnKSI+Zmlyc3QgWzFdPC9h
PgorPGJ1dHRvbiAgaWQ9ImJ1dHRvbiIgb25mb2N1cz0ibG9nKCdidXR0b24gb25mb2N1cycpIiBv
bmNsaWNrPSJsb2coJ2J1dHRvbiBjbGlja2VkJykiPjwvYnV0dG9uPgorPG9sIGlkPSJjb25zb2xl
Ij4gPC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9h
Y2Nlc3NrZXktaW52YWxpZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC93Y3NzL2FjY2Vzc2tleS1pbnZhbGlkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXktaW52YWxpZC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyODogUmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IHByZXNza2V5CitTb3VyY2U6CisKKzxo
dG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD4KKzx0aXRsZT4g
V0NTUyBhY2Nlc3NrZXkgdGVzdDogaW5saW5lIENTUzwvdGl0bGU+Cis8c2NyaXB0PgorZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCit7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVz
c2FnZSkpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hp
bGQoaXRlbSk7Cit9CitmdW5jdGlvbiBwcmVzc0tleShrZXkpCit7CisgICAgaWYgKG5hdmlnYXRv
ci51c2VyQWdlbnQuc2VhcmNoKC9cYk1hYyBPUyBYXGIvKSAhPSAtMSkKKyAgICAgICAgbW9kaWZp
ZXJzID0gWyJjdHJsS2V5IiwgImFsdEtleSJdOworICAgIGVsc2UKKyAgICAgICAgbW9kaWZpZXJz
ID0gWyJhbHRLZXkiXTsKKyAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsK
K30KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ICAgIHByZXNzS2V5KCIwIik7CisgICAgICAgIHByZXNzS2V5KCIxIik7CisgICAgICAgIHByZXNz
S2V5KCJhIik7CisgICAgICAgIHByZXNzS2V5KCJiIik7CisgICAgICAgIHByZXNza2V5KCJjIik7
CisgICAgICAgIHByZXNza2V5KCJkIik7CisgICAgICAgIHByZXNza2V5KCJlIik7CisgICAgICAg
IHByZXNza2V5KCJmIik7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+PGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5zaW9uIHdo
aWNoIGlzIHVzZWQgYXMgYW4gaW5saW5lIENTUyA8L3A+IAorPHA+IC13YXAtYWNjZXNza2V5OmEg
MDsgb25seSAwIHdpbGwgYmUgYXNzaWduZWQgYXMgYWNjZXNza2V5ICA8L3A+Cis8cD4gLXdhcC1h
Y2Nlc3NrZXk6YiwxOyBvbmx5IDEgd2lsbCBiZSBhc3NpZ25lZCBhcyBhY2Nlc3NrZXkgIDwvcD4K
KzxwPiAtd2FwLWFjY2Vzc2tleTpjIGQ7IG5vIGFjY2Vzc2tleSBhc3NpZ25lZCBzaW5jZSBvbmx5
IDB+OSwjICogYXJlIHZhbGlkIGFjY2Vzc2tleXMgPC9wPgorPHA+IC13YXAtYWNjZXNza2V5OmUs
Zjsgbm8gYWNjZXNza2V5IGFzc2lnbmVkIHNpbmNlIG9ubHkgMH45LCMsKiBhcmUgdmFsaWQgYWNj
ZXNza2V5cyA8L3A+CisKKzxidXR0b24gc3R5bGU9Ii13YXAtYWNjZXNza2V5OmEgMDsiIG9uZm9j
dXM9ImxvZygnYnV0dG9uIHdpdGggYWNjZXNza2V5IGEgMCBpbiBmb2N1cycpIiBvbmNsaWNrPSJs
b2coJ2J1dHRvbiB3aXRoIGFjY2Vzc2tleSBhIDAgbGlja2VkJykiPjwvYnV0dG9uPgorPGEgaHJl
Zj0iIyIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiBiLDEgIiBvbmZvY3VzPSJsb2coJ2xpbmsgd2l0
aCBhY2Nlc3NrZXkgYiwxIGluIGZvY3VzJykiIG9uY2xpY2s9ImxvZygnbGluayB3aXRoIGFjY2Vz
c2tleSBiLDEgY2xpY2tlZCcpIj48L2E+Cis8YSBocmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3Nr
ZXk6IGMgZCAiIG9uY2xpY2s9ImxvZygnaWYgdGhpcyBnb3QgaW52b2tlZCB2aWEgYWNjZXNza2V5
IGMgb3IgZCwgb3IgYW55ICBvdGhlciBrZXkgc3Ryb2tlLCBpdCBmYWlscycpIj48L2E+Cis8YSBo
cmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IGUsZiAiIG9uY2xpY2s9ImxvZygnaWYgdGhp
cyBnb3QgaW52b2tlZCB2aWEgYWNjZXNza2V5IGUgb3IgZiwgb3IgYW55ICBvdGhlciBrZXkgc3Ry
b2tlLCBpdCBmYWlscycpIj48L2E+Cis8b2wgaWQ9ImNvbnNvbGUiPjxsaT5idXR0b24gd2l0aCBh
Y2Nlc3NrZXkgYSAwIGluIGZvY3VzPC9saT48bGk+YnV0dG9uIHdpdGggYWNjZXNza2V5IGEgMCBs
aWNrZWQ8L2xpPjxsaT5saW5rIHdpdGggYWNjZXNza2V5IGIsMSBjbGlja2VkPC9saT48L29sPgor
CisKKzwvYm9keT48L2h0bWw+CitUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVuc2lv
biB3aGljaCBpcyB1c2VkIGFzIGFuIGlubGluZSBDU1MKKworLXdhcC1hY2Nlc3NrZXk6YSAwOyBv
bmx5IDAgd2lsbCBiZSBhc3NpZ25lZCBhcyBhY2Nlc3NrZXkKKworLXdhcC1hY2Nlc3NrZXk6Yiwx
OyBvbmx5IDEgd2lsbCBiZSBhc3NpZ25lZCBhcyBhY2Nlc3NrZXkKKworLXdhcC1hY2Nlc3NrZXk6
YyBkOyBubyBhY2Nlc3NrZXkgYXNzaWduZWQgc2luY2Ugb25seSAwfjksIyAqIGFyZSB2YWxpZCBh
Y2Nlc3NrZXlzCisKKy13YXAtYWNjZXNza2V5OmUsZjsgbm8gYWNjZXNza2V5IGFzc2lnbmVkIHNp
bmNlIG9ubHkgMH45LCMsKiBhcmUgdmFsaWQgYWNjZXNza2V5cworCisKK2J1dHRvbiB3aXRoIGFj
Y2Vzc2tleSBhIDAgaW4gZm9jdXMKK2J1dHRvbiB3aXRoIGFjY2Vzc2tleSBhIDAgbGlja2VkCits
aW5rIHdpdGggYWNjZXNza2V5IGIsMSBjbGlja2VkCisjRU9GCisjRU9GCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWludmFsaWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LWludmFsaWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXktaW52YWxpZC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUyIEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT4gV0NTUyBhY2Nlc3NrZXkgdGVzdDogaW5saW5lIENTUzwv
dGl0bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgdmFyIGl0ZW0g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9CitmdW5jdGlvbiBwcmVzc0tleShr
ZXkpCit7CisgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuc2VhcmNoKC9cYk1hYyBPUyBYXGIv
KSAhPSAtMSkKKyAgICAgICAgbW9kaWZpZXJzID0gWyJjdHJsS2V5IiwgImFsdEtleSJdOworICAg
IGVsc2UKKyAgICAgICAgbW9kaWZpZXJzID0gWyJhbHRLZXkiXTsKKyAgICBldmVudFNlbmRlci5r
ZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHByZXNzS2V5KCIwIik7CisgICAgICAgIHByZXNz
S2V5KCIxIik7CisgICAgICAgIHByZXNzS2V5KCJhIik7CisgICAgICAgIHByZXNzS2V5KCJiIik7
CisgICAgICAgIHByZXNza2V5KCJjIik7CisgICAgICAgIHByZXNza2V5KCJkIik7CisgICAgICAg
IHByZXNza2V5KCJlIik7CisgICAgICAgIHByZXNza2V5KCJmIik7CisgICAgfQorfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRl
c3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5zaW9uIHdoaWNoIGlzIHVzZWQgYXMgYW4g
aW5saW5lIENTUyA8L3A+IAorPHA+IC13YXAtYWNjZXNza2V5OmEgMDsgb25seSAwIHdpbGwgYmUg
YXNzaWduZWQgYXMgYWNjZXNza2V5ICA8L3A+Cis8cD4gLXdhcC1hY2Nlc3NrZXk6YiwxOyBvbmx5
IDEgd2lsbCBiZSBhc3NpZ25lZCBhcyBhY2Nlc3NrZXkgIDwvcD4KKzxwPiAtd2FwLWFjY2Vzc2tl
eTpjIGQ7IG5vIGFjY2Vzc2tleSBhc3NpZ25lZCBzaW5jZSBvbmx5IDB+OSwjICogYXJlIHZhbGlk
IGFjY2Vzc2tleXMgPC9wPgorPHA+IC13YXAtYWNjZXNza2V5OmUsZjsgbm8gYWNjZXNza2V5IGFz
c2lnbmVkIHNpbmNlIG9ubHkgMH45LCMsKiBhcmUgdmFsaWQgYWNjZXNza2V5cyA8L3A+CisKKzxi
dXR0b24gc3R5bGU9Ii13YXAtYWNjZXNza2V5OmEgMDsiIG9uZm9jdXM9ImxvZygnYnV0dG9uIHdp
dGggYWNjZXNza2V5IGEgMCBpbiBmb2N1cycpIiBvbmNsaWNrPSJsb2coJ2J1dHRvbiB3aXRoIGFj
Y2Vzc2tleSBhIDAgbGlja2VkJykiPjwvYnV0dG9uPgorPGEgaHJlZj0iIyIgc3R5bGU9Ii13YXAt
YWNjZXNza2V5OiBiLDEgIiBvbmZvY3VzPSJsb2coJ2xpbmsgd2l0aCBhY2Nlc3NrZXkgYiwxIGlu
IGZvY3VzJykiIG9uY2xpY2s9ImxvZygnbGluayB3aXRoIGFjY2Vzc2tleSBiLDEgY2xpY2tlZCcp
Ij48L2E+Cis8YSBocmVmPSIjIiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6IGMgZCAiICBvbmNsaWNr
PSJsb2coJ2lmIHRoaXMgZ290IGludm9rZWQgdmlhIGFjY2Vzc2tleSBjIG9yIGQsIG9yIGFueSAg
b3RoZXIga2V5IHN0cm9rZSwgaXQgZmFpbHMnKSI+PC9hPgorPGEgaHJlZj0iIyIgc3R5bGU9Ii13
YXAtYWNjZXNza2V5OiBlLGYgIiAgb25jbGljaz0ibG9nKCdpZiB0aGlzIGdvdCBpbnZva2VkIHZp
YSBhY2Nlc3NrZXkgZSBvciBmLCBvciBhbnkgIG90aGVyIGtleSBzdHJva2UsIGl0IGZhaWxzJyki
PjwvYT4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXktcGFyc2VyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LXBhcnNlci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LXBhcnNl
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKK1NvdXJjZToKKwor
PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPgorPHRpdGxl
PiBXQ1NTIGFjY2Vzc2tleSB0ZXN0OiBpbmxpbmUgQ1NTPC90aXRsZT4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImxpIik7CisgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRD
aGlsZChpdGVtKTsKK30KK2Z1bmN0aW9uIHByZXNzS2V5KGtleSkKK3sKKyAgICBpZiAobmF2aWdh
dG9yLnVzZXJBZ2VudC5zZWFyY2goL1xiTWFjIE9TIFhcYi8pICE9IC0xKQorICAgICAgICBtb2Rp
ZmllcnMgPSBbImN0cmxLZXkiLCAiYWx0S2V5Il07CisgICAgZWxzZQorICAgICAgICBtb2RpZmll
cnMgPSBbImFsdEtleSJdOworICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBtb2RpZmllcnMp
OworfQorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICAgICAgcHJlc3NLZXkoIjEiKTsKKyAgICAgICAgcHJlc3NLZXkoIjIiKTsKKyAgICAgICAgcHJl
c3NLZXkoIjMiKTsKKyAgICAgICAgcHJlc3NLZXkoIioiKTsKKyAgICAgICAgcHJlc3NLZXkoIiMi
KTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD48Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8
cD4gVGVzdCBmb3IgV0FQIEFjY2VzcyBLZXlzIENTUyBleHRlbnNpb24gd2hpY2ggaXMgdXNlZCBh
cyBhbiBpbmxpbmUgQ1NTIDwvcD4gCis8cD4gLXdhcC1hY2Nlc3NrZXk6MSxcMmEgOyBvbmx5IDEg
d2lsbCBiZSBhc3NpZ25lZCBhcyBhY2Nlc3NrZXkgIDwvcD4KKzxwPiAtd2FwLWFjY2Vzc2tleTog
YSwgXDJhOyBzaW5jZSBhIGlzIG5vdCBhIHZhbGlkIGFjY2Vzc2tleSBmb3Igd2Via2l0ICgwIH4g
OSwgKiwgIyksIFwyYSAoKikgd2lsbCBiZSBhc3NpZ25lZCBhcyB0aGUgYWNjZXNza2V5IAorPC9w
PjxwPiAtd2FwLWFjY2Vzc2tleTozIFwyMyA7IGJvdGggMyBhbmQgIyBhcmUgdmFsaWQgYWNjZXNz
a2V5czwvcD4KKworPGJ1dHRvbiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6MSxcMmEiIG9uZm9jdXM9
ImxvZygnYnV0dG9uIHdpdGggYWNjZXNza2V5IDEsKiBpbiBmb2N1cycpIiBvbmNsaWNrPSJsb2co
J2J1dHRvbiB3aXRoIGFjY2Vzc2tleSAxLCogbGlja2VkJykiPjwvYnV0dG9uPgorPGEgaHJlZj0i
IyIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiBhLFwyYSAiIG9uZm9jdXM9ImxvZygnbGluayB3aXRo
IGFjY2Vzc2tleSBhLCogaW4gZm9jdXMnKSIgb25jbGljaz0ibG9nKCdsaW5rIHdpdGggYWNjZXNz
a2V5IGEsKiBjbGlja2VkJykiPjwvYT4KKzxhIGhyZWY9IiMiIHN0eWxlPSItd2FwLWFjY2Vzc2tl
eTogMyBcMjMgIiBvbmZvY3VzPSJsb2coJ2xpbmsgd2l0aCBhY2Nlc3Mga2V5IDMgIyBpbiBmb2N1
cycpIiBvbmNsaWNrPSJsb2coJ2xpbmsgd2l0aCBhY2Nlc3NrZXkgMyAjIGNsaWNrZWQnKSI+PC9h
PgorPG9sIGlkPSJjb25zb2xlIj48bGk+YnV0dG9uIHdpdGggYWNjZXNza2V5IDEsKiBpbiBmb2N1
czwvbGk+PGxpPmJ1dHRvbiB3aXRoIGFjY2Vzc2tleSAxLCogbGlja2VkPC9saT48bGk+bGluayB3
aXRoIGFjY2Vzc2tleSAzICMgY2xpY2tlZDwvbGk+PGxpPmxpbmsgd2l0aCBhY2Nlc3NrZXkgYSwq
IGNsaWNrZWQ8L2xpPjxsaT5saW5rIHdpdGggYWNjZXNza2V5IDMgIyBjbGlja2VkPC9saT48L29s
PgorCisKKzwvYm9keT48L2h0bWw+CitUZXN0IGZvciBXQVAgQWNjZXNzIEtleXMgQ1NTIGV4dGVu
c2lvbiB3aGljaCBpcyB1c2VkIGFzIGFuIGlubGluZSBDU1MKKworLXdhcC1hY2Nlc3NrZXk6MSxc
MmEgOyBvbmx5IDEgd2lsbCBiZSBhc3NpZ25lZCBhcyBhY2Nlc3NrZXkKKworLXdhcC1hY2Nlc3Nr
ZXk6IGEsIFwyYTsgc2luY2UgYSBpcyBub3QgYSB2YWxpZCBhY2Nlc3NrZXkgZm9yIHdlYmtpdCAo
MCB+IDksICosICMpLCBcMmEgKCopIHdpbGwgYmUgYXNzaWduZWQgYXMgdGhlIGFjY2Vzc2tleQor
Cistd2FwLWFjY2Vzc2tleTozIFwyMyA7IGJvdGggMyBhbmQgIyBhcmUgdmFsaWQgYWNjZXNza2V5
cworCisKK2J1dHRvbiB3aXRoIGFjY2Vzc2tleSAxLCogaW4gZm9jdXMKK2J1dHRvbiB3aXRoIGFj
Y2Vzc2tleSAxLCogbGlja2VkCitsaW5rIHdpdGggYWNjZXNza2V5IDMgIyBjbGlja2VkCitsaW5r
IHdpdGggYWNjZXNza2V5IGEsKiBjbGlja2VkCitsaW5rIHdpdGggYWNjZXNza2V5IDMgIyBjbGlj
a2VkCisjRU9GCisjRU9GCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNza2V5LXBh
cnNlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd2Nzcy9hY2Nlc3NrZXkt
cGFyc2VyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3djc3MvYWNjZXNz
a2V5LXBhcnNlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACis8aHRtbCB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT4gV0NTUyBh
Y2Nlc3NrZXkgdGVzdDogaW5saW5lIENTUzwvdGl0bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9n
KG1lc3NhZ2UpCit7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIp
OworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkp
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRl
bSk7Cit9CitmdW5jdGlvbiBwcmVzc0tleShrZXkpCit7CisgICAgaWYgKG5hdmlnYXRvci51c2Vy
QWdlbnQuc2VhcmNoKC9cYk1hYyBPUyBYXGIvKSAhPSAtMSkKKyAgICAgICAgbW9kaWZpZXJzID0g
WyJjdHJsS2V5IiwgImFsdEtleSJdOworICAgIGVsc2UKKyAgICAgICAgbW9kaWZpZXJzID0gWyJh
bHRLZXkiXTsKKyAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHBy
ZXNzS2V5KCIxIik7CisgICAgICAgIHByZXNzS2V5KCIyIik7CisgICAgICAgIHByZXNzS2V5KCIz
Iik7CisgICAgICAgIHByZXNzS2V5KCIqIik7CisgICAgICAgIHByZXNzS2V5KCIjIik7CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJ0ZXN0
KCkiPgorPHA+IFRlc3QgZm9yIFdBUCBBY2Nlc3MgS2V5cyBDU1MgZXh0ZW5zaW9uIHdoaWNoIGlz
IHVzZWQgYXMgYW4gaW5saW5lIENTUyA8L3A+IAorPHA+IC13YXAtYWNjZXNza2V5OjEsXDJhIDsg
b25seSAxIHdpbGwgYmUgYXNzaWduZWQgYXMgYWNjZXNza2V5ICA8L3A+Cis8cD4gLXdhcC1hY2Nl
c3NrZXk6IGEsIFwyYTsgc2luY2UgYSBpcyBub3QgYSB2YWxpZCBhY2Nlc3NrZXkgZm9yIHdlYmtp
dCAoMCB+IDksICosICMpLCBcMmEgKCopIHdpbGwgYmUgYXNzaWduZWQgYXMgdGhlIGFjY2Vzc2tl
eSAKKzxwPiAtd2FwLWFjY2Vzc2tleTozIFwyMyA7IGJvdGggMyBhbmQgIyBhcmUgdmFsaWQgYWNj
ZXNza2V5czwvcD4KKworPGJ1dHRvbiBzdHlsZT0iLXdhcC1hY2Nlc3NrZXk6MSxcMmEiIG9uZm9j
dXM9ImxvZygnYnV0dG9uIHdpdGggYWNjZXNza2V5IDEsKiBpbiBmb2N1cycpIiBvbmNsaWNrPSJs
b2coJ2J1dHRvbiB3aXRoIGFjY2Vzc2tleSAxLCogbGlja2VkJykiPjwvYnV0dG9uPgorPGEgaHJl
Zj0iIyIgc3R5bGU9Ii13YXAtYWNjZXNza2V5OiBhLFwyYSAiIG9uZm9jdXM9ImxvZygnbGluayB3
aXRoIGFjY2Vzc2tleSBhLCogaW4gZm9jdXMnKSIgb25jbGljaz0ibG9nKCdsaW5rIHdpdGggYWNj
ZXNza2V5IGEsKiBjbGlja2VkJykiPjwvYT4KKzxhIGhyZWY9IiMiIHN0eWxlPSItd2FwLWFjY2Vz
c2tleTogMyBcMjMgIiBvbmZvY3VzPSJsb2coJ2xpbmsgd2l0aCBhY2Nlc3Mga2V5IDMgIyBpbiBm
b2N1cycpIiBvbmNsaWNrPSJsb2coJ2xpbmsgd2l0aCBhY2Nlc3NrZXkgMyAjIGNsaWNrZWQnKSI+
PC9hPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC93Y3NzL2FjY2Vzc2tleS5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC93Y3NzL2FjY2Vzc2tleS5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3djc3MvYWNjZXNza2V5LmNzcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjZmly
c3QgeyAtd2FwLWFjY2Vzc2tleTogMSBcMjMgOyB9Cisjc2Vjb25kIHsgLXdhcC1hY2Nlc3NrZXk6
ICAyIFwyYSA7IH0KKyN0aGlyZCB7IC13YXAtYWNjZXNza2V5OiAgMzsgfQorCg==
</data>
<flag name="review"
          id="19915"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>