<?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>72462</bug_id>
          
          <creation_ts>2011-11-15 22:08:33 -0800</creation_ts>
          <short_desc>&lt;style scoped&gt;: Implement scoped @keyframes</short_desc>
          <delta_ts>2014-02-06 11:11:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>73113</dependson>
    
    <dependson>101312</dependson>
          <blocked>49142</blocked>
    
    <blocked>93545</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Takashi Sakamoto">tasak</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>morrita</cc>
    
    <cc>sorvell</cc>
    
    <cc>tasak</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>503590</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-11-15 22:08:33 -0800</bug_when>
    <thetext>Change implementation such that @keyframes within &lt;style scoped&gt; are limited to the scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757073</commentid>
    <comment_count>1</comment_count>
      <attachid>172030</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-02 03:51:17 -0700</bug_when>
    <thetext>Created attachment 172030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757075</commentid>
    <comment_count>2</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-02 03:51:45 -0700</bug_when>
    <thetext>*** Bug 93545 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757086</commentid>
    <comment_count>3</comment_count>
      <attachid>172030</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-02 04:19:25 -0700</bug_when>
    <thetext>Comment on attachment 172030
Patch

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

&gt; Source/WebCore/css/StyleResolver.cpp:469
&gt; +#if ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM)

We don&apos;t need these ifdefs considering that scope is always null when these flags are off.

&gt; Source/WebCore/css/StyleResolver.cpp:1661
&gt; +#if ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM)

Ditto.

&gt; Source/WebCore/css/StyleResolver.cpp:1663
&gt; +    if (!keyframesRule &amp;&amp; (!e-&gt;isInShadowTree() || e-&gt;shadowRoot()-&gt;applyAuthorStyles())) {

Can we return early for these cases?
I guess extracting the keyframeRule lookup as a separate method can be a good simplification.

&gt; Source/WebCore/css/StyleScopeResolver.cpp:250
&gt; +{

I hope this function to be further clearer.
- Let&apos;s define helper function as needed. 
- Having a few extra traversal is acceptable for clarity. We can make it faster when it becomes really hot.

&gt; Source/WebCore/css/StyleScopeResolver.h:109
&gt; +    NamedScopedKeyframesRuleMap m_keyframesRuleMap;

Can we make a pair of the ContainerNode pointer and AtomicStringImpl pointer as a key,
instead of having nesting map?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758209</commentid>
    <comment_count>4</comment_count>
      <attachid>172263</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-04 20:49:08 -0800</bug_when>
    <thetext>Created attachment 172263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758211</commentid>
    <comment_count>5</comment_count>
      <attachid>172263</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-04 20:53:30 -0800</bug_when>
    <thetext>Comment on attachment 172263
Patch

Attachment 172263 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14719680</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758212</commentid>
    <comment_count>6</comment_count>
      <attachid>172263</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-04 20:55:05 -0800</bug_when>
    <thetext>Comment on attachment 172263
Patch

Attachment 172263 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14725611</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758213</commentid>
    <comment_count>7</comment_count>
      <attachid>172263</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-04 20:55:09 -0800</bug_when>
    <thetext>Comment on attachment 172263
Patch

Attachment 172263 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14722641</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758215</commentid>
    <comment_count>8</comment_count>
      <attachid>172030</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-04 20:59:16 -0800</bug_when>
    <thetext>Comment on attachment 172030
Patch

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

Thank you for reviewing.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:469
&gt;&gt; +#if ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM)
&gt; 
&gt; We don&apos;t need these ifdefs considering that scope is always null when these flags are off.

Done.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:1661
&gt;&gt; +#if ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM)
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:1663
&gt;&gt; +    if (!keyframesRule &amp;&amp; (!e-&gt;isInShadowTree() || e-&gt;shadowRoot()-&gt;applyAuthorStyles())) {
&gt; 
&gt; Can we return early for these cases?
&gt; I guess extracting the keyframeRule lookup as a separate method can be a good simplification.

I added a separate method to look up @keyframes rule.

&gt;&gt; Source/WebCore/css/StyleScopeResolver.cpp:250
&gt;&gt; +{
&gt; 
&gt; I hope this function to be further clearer.
&gt; - Let&apos;s define helper function as needed. 
&gt; - Having a few extra traversal is acceptable for clarity. We can make it faster when it becomes really hot.

I see. Done.

&gt;&gt; Source/WebCore/css/StyleScopeResolver.h:109
&gt;&gt; +    NamedScopedKeyframesRuleMap m_keyframesRuleMap;
&gt; 
&gt; Can we make a pair of the ContainerNode pointer and AtomicStringImpl pointer as a key,
&gt; instead of having nesting map?

I&apos;m afraid of performance issue. Firstly I was thinking of such a pair. However, we have to traverse a dom tree from the given node.
This means, we always have to see all ancestor nodes of the given node to know whether we have any matched @keyframes rules or not.
This is the reason why I used such nesting map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758218</commentid>
    <comment_count>9</comment_count>
      <attachid>172030</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-04 21:06:35 -0800</bug_when>
    <thetext>Comment on attachment 172030
Patch

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

&gt;&gt;&gt; Source/WebCore/css/StyleResolver.cpp:469
&gt;&gt;&gt; +#if ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM)
&gt;&gt; 
&gt;&gt; We don&apos;t need these ifdefs considering that scope is always null when these flags are off.
&gt; 
&gt; Done.

Sorry. I need this because of cq-. Since I use addKeyframeStyle here, we need an implementation of class StyleScopeResolver. But the implementation is enabled when ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM).
And I changed the logic. Unlsess ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM), check whether scope is 0 or not. If scope is not 0, just return. This is the same behavior as the original code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758219</commentid>
    <comment_count>10</comment_count>
      <attachid>172263</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-04 21:15:14 -0800</bug_when>
    <thetext>Comment on attachment 172263
Patch

Attachment 172263 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14733401</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758222</commentid>
    <comment_count>11</comment_count>
      <attachid>172266</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-04 21:26:39 -0800</bug_when>
    <thetext>Created attachment 172266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758264</commentid>
    <comment_count>12</comment_count>
      <attachid>172030</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-04 23:30:11 -0800</bug_when>
    <thetext>Comment on attachment 172030
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/css/StyleResolver.cpp:469
&gt;&gt;&gt;&gt; +#if ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM)
&gt;&gt;&gt; 
&gt;&gt;&gt; We don&apos;t need these ifdefs considering that scope is always null when these flags are off.
&gt;&gt; 
&gt;&gt; Done.
&gt; 
&gt; Sorry. I need this because of cq-. Since I use addKeyframeStyle here, we need an implementation of class StyleScopeResolver. But the implementation is enabled when ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM).
&gt; And I changed the logic. Unlsess ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM), check whether scope is 0 or not. If scope is not 0, just return. This is the same behavior as the original code.

We already have a fake implementation for dealing with these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758272</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-04 23:42:56 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I&apos;m afraid of performance issue. Firstly I was thinking of such a pair. However, we have to traverse a dom tree from the given node.
&gt; This means, we always have to see all ancestor nodes of the given node to know whether we have any matched @keyframes rules or not.
&gt; This is the reason why I used such nesting map.
Hmm. Something wrong, it seems...

I wonder why we need different maps for each scoped styles and scoped key frames.
It looks we should have a class which maintains a set of scoped style descriptions.
What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758286</commentid>
    <comment_count>14</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-05 00:11:10 -0800</bug_when>
    <thetext>(In reply to comment #13)

&gt; I wonder why we need different maps for each scoped styles and scoped key frames.
&gt; It looks we should have a class which maintains a set of scoped style descriptions.
&gt; What do you think?

Would you mean adding a new hashmap from animation names to @keyframes rules into class RuleSet?

However, in the case, we still need our own method to find a matched @keyframes rule, because we don&apos;t need to find all matched @keyframes rules. (&quot;matched&quot; means, @keyframes rules whose animation names are the same.)
---
The @keyframes rule that is used by an animation will be the last one encountered in sorted rules order that matches the name of the animation specified by the ‘animation-name’ property. @keyframes rules do not cascade; therefore, an animation will never derive keyframes from more than one @keyframes rule.
---
(c.f. http://dev.w3.org/csswg/css3-animations/#keyframes)

So what I&apos;m trying to do is to obtain the last one encountered in document order from the inner scope to the outer scope. If any @keyframes rule is found, quickly return the rule and apply the rule to some CSS animation.

If we move such a hashmap into class RuleSet, we will always have to see all ancestor nodes for each animation names.
For examples,

   document()
       |
       +--A
              |
              +--B
                     |
                     +--C
                            |
                            +--D

If the given element is D, we have to check:
 (1) whether D has a @keyframes rule whose animation name matches the given name. If any @keyframes rule is found, return the rule.
 (2) C, ditto. 
 (3) B, ditto. 
 (4) A, ditto. 
 (5) When we reach document(), we can know the animation name is not defined in the given scope.

If we have a few number of animations / shadow roots / scoped styles, we can ignore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759761</commentid>
    <comment_count>15</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-06 09:22:53 -0800</bug_when>
    <thetext>Just some observations/intuitions, hopefully will aid you in finding the right approach:

* scoped stylesheets and shadow tree style scoping feel like two different things. If we only look at the latter, it&apos;s a lot more encapsulated and manageable as a separate chink. With the former, we definitely have to treat style resolution across all trees as one thing.

* the components (and thus their shadow trees) will prefer &quot;apply-author-styles&quot; set to false, thus making style resolution inside shadow trees completely independent of the enclosing trees. We should optimize for that.

* with &quot;apply-author-styles&quot; false, the UA stylesheets are still resolved in all trees, but maybe they should be the exception, not the rule?

* points above indicate that we could consider separate StyleResolvers for each tree, rather than one to rule them all. Indeed, each ShadowRoot has a stylesheet collection already.

* chunking style resolution into separate StyleResolver per tree probably has performance benefits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763980</commentid>
    <comment_count>16</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-11 19:18:32 -0800</bug_when>
    <thetext>&gt; 
&gt; * points above indicate that we could consider separate StyleResolvers for each tree, rather than one to rule them all. Indeed, each ShadowRoot has a stylesheet collection already.
&gt; 
&gt; * chunking style resolution into separate StyleResolver per tree probably has performance benefits.

This sounds radical, but I agree that we need to go toward per-subtree style resolution.
Tasak is working on Bug 101312, which is a smaller step to that direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764161</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-12 02:07:05 -0800</bug_when>
    <thetext>Separate StyleResolvers for author shadow trees (but not ua ones) sounds like the correct way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977442</commentid>
    <comment_count>18</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-06 11:11:02 -0800</bug_when>
    <thetext>Scoped stylesheets were taken out.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172030</attachid>
            <date>2012-11-02 03:51:17 -0700</date>
            <delta_ts>2012-11-04 23:30:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72462-20121102194937.patch</filename>
            <type>text/plain</type>
            <size>18519</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJhZWVkZmEzNWE2NWMx
OGYwNjE1NWQ1ZTMzNDVmOGZhODlmYTE1Ny4uNDJhOTZhZjkyOTViNDljYWE4MGIxMWQzNmRlYjkw
ZWU2NDcxMWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTExLTAyICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICA8c3R5bGUgc2NvcGVk
PjogSW1wbGVtZW50IHNjb3BlZCBAa2V5ZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjQ2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGhhc2htYXAgdG8gbG9vayB1cCBAa2V5
ZnJhbWVzIGJ5IHVzaW5nIGFuCisgICAgICAgIGFuaW1hdGlvbiBuYW1lIGFuZCBhIHNjb3BlZCBl
bGVtZW50LiBUbyBhdm9pZCBwZXJmb3JtYW5jZQorICAgICAgICBpc3N1ZSwgZmlyc3RseSBsb29r
ZWQgdXAgdGhlIGhhc2htYXAgYnkgdXNpbmcgYSBuYW1lLgorICAgICAgICBUaGUgcmVzdWx0IG9m
IHRoZSBmaXJzdCBsb29rLXVwIGlzIGEgaGFzaG1hcCB3aGljaCBtYXBzCisgICAgICAgIGEgc2Nv
cGUgZWxlbWVudCB0byBhIGtleWZyYW1lcyBydWxlLiBJZiBhbnkgaGFzaG1hcCBpcyBmb3VuZCwK
KyAgICAgICAgdGhpcyBtZWFucywgdGhlcmUgbWlnaHQgZXhpc3QgYW55IHNjb3BlZCBAa2V5ZnJh
bWVzIHdoaWNoIHNob3VsZAorICAgICAgICBiZSBhcHBsaWVkIHRvIHRoZSBnaXZlbiBlbGVtZW50
LCB0cmF2ZXJzaW5nIGEgRE9NIHRyZWUgdG8gZmluZAorICAgICAgICB0aGUgZmlyc3QgbWF0Y2hl
ZCBzY29wZWQgQGtleWZyYW1lcy4KKworICAgICAgICBUZXN0czogZmFzdC9jc3Mvc3R5bGUtc2Nv
cGVkL3NoYWRvd3Jvb3Qta2V5ZnJhbWVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLmh0bWwKKworICAgICAgICAqIGNzcy9S
dWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0
KToKKyAgICAgICAgUmVtb3ZlZCBGSVhNRSwgYmVjYXVzZSB0aGlzIHBhdGNoIGlzIGZvciBmaXhp
bmcgdGhlIGlzc3VlIHRoYXQKKyAgICAgICAgdGhlIEZJWE1FIG1lbnRpb25lZC4KKyAgICAgICAg
KiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjphZGRLZXlmcmFtZVN0eWxlKToKKyAgICAgICAgSWYgYW55IHNjb3BlIGVsZW1lbnQgaXMgZ2l2
ZW4sIHVzZSBTdHlsZVNjb3BlUmVzb2x2ZXIgdG8gcmVnaXN0ZXIKKyAgICAgICAgdGhlIGtleWZy
YW1lcyBydWxlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHls
ZXNGb3JBbmltYXRpb24pOgorICAgICAgICBUbyBzdXBwb3J0IHNjb3BlZCBAa2V5ZnJhbWVzLCBt
b2RpZmllZCB0aGUgd2F5IHRvIGZpbmQgYSBtYXRjaGVkCisgICAgICAgIEBrZXlmcmFtZXMuIFNp
bmNlIHRoZSBAa2V5ZnJhbWVzIHdob3NlIGRvY3VtZW50IHBvc2l0aW9uIGlzICJmb2xsb3dpbmci
CisgICAgICAgIGNvbXBhcmluZyB3aXRoIG90aGVyIEBrZXlmcmFtZXMgc2hvdWxkIGJlIGFwcGxp
ZWQsIGZpcnN0bHkgY2hlY2sKKyAgICAgICAgQGtleWZyYW1lcyBpbiBzaGFkb3cgZG9tIHN1YnRy
ZWVzIG9yIHNjb3BlZCBAa2V5ZnJhbWVzLiBOZXh0LCB3ZQorICAgICAgICB3aWxsIHVzZSB0aGUg
c2FtZSBjb2RlIHRvIGZpbmQgQGtleWZyYW1lcyBkZWNsYXJlZCBpbiBkb2N1bWVudCgpLgorICAg
ICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlU2NvcGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6CisgICAgICAgIEFkZGVkIHRvIHJl
Z2lzdGVyIHRoZSBnaXZlbiBAa2V5ZnJhbWVzIHdpdGggaXRzIGFuaW1hdGlvbiBuYW1lIGFuZAor
ICAgICAgICBpdHMgc2NvcGVkIGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6ZmluZE1hdGNoZWRLZXlmcmFtZXNSdWxlKToK
KyAgICAgICAgQWRkZWQgdG8gb2J0YWluIHRoZSBmaXJzdCBtYXRjaGVkIHNjb3BlZCBAa2V5ZnJh
bWVzLiBUaGUgd2F5IHRvIGZpbmQKKyAgICAgICAgdGhlIGZpcnN0IG9uZSBpczogKDEpIGZpcnN0
bHksIGNoZWNraW5nIHRoZSBnaXZlbiBhbmltYXRpb24gbmFtZS4gSWYgbm8KKyAgICAgICAgc2Nv
cGVkIEBrZXlmcmFtZXMgd2hvc2UgYW5pbWF0aW9uIG5hbWUgaXMgdGhlIHNhbWUgYXJlIHJlZ2lz
dGVyZWQsCisgICAgICAgIGp1c3QgcmV0dXJuIDAuICgyKSBqdXN0IHdhbGtpbmcgdXAgZnJvbSB0
aGUgZ2l2ZW4gZWxlbWVudCB0bworICAgICAgICBkb2N1bWVudCByb290LiBJZiB0aGUgY3VycmVu
dCBlbGVtZW50IGhhcyBhbnkgQGtleWZyYW1lcywgcmV0dXJucyB0aGUKKyAgICAgICAgQGtleWZy
YW1lcy4gKDMpIGlmIHRoZSBnaXZlbiBlbGVtZW50IGlzIGluIHNvbWUgc2hhZG93IGRvbSBzdWJ0
cmVlLAorICAgICAgICBjaGVja2luZyBhcHBseS1hdXRob3Itc3R5bGVzIGZsYWcgb2YgZWFjaCBz
aGFkb3cgcm9vdCBkdXJpbmcgdGhlCisgICAgICAgIHRyYXZlcnNhbC4gSWYgYSBzaGFkb3cgcm9v
dCB3aG9zZSBhcHBseS1hdXRob3Itc3R5bGVzIGlzIGZvdW5kLAorICAgICAgICBzdG9wIHRoZSB0
cmF2ZXJzYWwuICg0KSBpZiB0aGUgZ2l2ZW4gZWxlbWVudCdzIHNoYWRvdyByb290IGhhcworICAg
ICAgICBhcHBseS1hdXRob3Itc3R5bGVzIHRydWUsIGdvaW5nIHVwIHRvIHRoZSBhbmNlc3RvciBu
b2RlIHdoaWNoIGlzIGluCisgICAgICAgIGRvY3VtZW50KCkgYW5kIGNoZWNraW5nIHdoZXRoZXIg
YW55IHNjb3BlZCBAa2V5ZnJhbWVzIGlzIGRlY2xhcmVkIG9yCisgICAgICAgIG5vdC4gYy5mLiBo
dHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAvc3BlYy9zaGFk
b3cvaW5kZXguaHRtbCNkZm4tYXBwbHktYXV0aG9yLXN0eWxlcworICAgICAgICAqIGNzcy9TdHls
ZVNjb3BlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVTY29w
ZVJlc29sdmVyKToKKwogMjAxMi0xMS0wMSAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBYU1MgYmxvY2tlciBmYWxzZSBwb3NpdGl2ZSB3aGVuIHBhZ2UgY29udGFp
bnMgPGlmcmFtZSBzcmM9IiI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggZjc1ZjRmNDI1YmRm
ZjEwMWNmNzY5NDFkNmEyY2M1OWVlMTIxZjJjMS4uOWZjYTVjNTI1YWU1MDM4NDgxNTZmOGE0MDNh
MmUyMTBkNTQ0NTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMzI3LDExICszMjcsNyBA
QCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyogc2hl
ZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZXItPmZvbnRTZWxlY3RvcigpLT5hZGRGb250RmFjZVJ1bGUoZm9udEZhY2VSdWxlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLT5pbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXND
YWNoZSgpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkUnVsZS0+aXNLZXlm
cmFtZXNSdWxlKCkgJiYgcmVzb2x2ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFk
ZCB0aGlzIGtleWZyYW1lIHJ1bGUgdG8gb3VyIHNldC4KLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FKEJVRyA3MjQ2Mik6IFdlIGRvbid0IGFkZCBAa2V5ZnJhbWUgcnVsZXMgb2Ygc2Nv
cGVkIHN0eWxlIHNoZWV0cyBmb3IgdGhlIG1vbWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzY29wZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRLZXlmcmFtZVN0eWxlKHN0YXRpY19jYXN0
PFN0eWxlUnVsZUtleWZyYW1lcyo+KGNoaWxkUnVsZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlS2V5ZnJh
bWVzKj4oY2hpbGRSdWxlKSwgc2NvcGUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSAvLyBmb3IgcnVsZXMKICAgICAgICAgICAgIH0gLy8gaWYgcnVsZXMKQEAgLTM0
NSw5ICszNDEsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRD
b250ZW50cyogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdQogICAgICAgICAgICAgcmVzb2x2
ZXItPmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAocnVsZS0+aXNLZXlmcmFtZXNSdWxlKCkgJiYgcmVzb2x2ZXIpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FIChCVUcgNzI0NjIpOiBXZSBkb24ndCBhZGQgQGtleWZyYW1lIHJ1bGVzIG9mIHNjb3Bl
ZCBzdHlsZSBzaGVldHMgZm9yIHRoZSBtb21lbnQuCi0gICAgICAgICAgICBpZiAoc2NvcGUpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICByZXNvbHZlci0+YWRkS2V5ZnJh
bWVTdHlsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXMqPihydWxlKSk7CisgICAgICAg
ICAgICByZXNvbHZlci0+YWRkS2V5ZnJhbWVTdHlsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVLZXlm
cmFtZXMqPihydWxlKSwgc2NvcGUpOwogICAgICAgICB9CiAjaWYgRU5BQkxFKENTU19SRUdJT05T
KQogICAgICAgICBlbHNlIGlmIChydWxlLT5pc1JlZ2lvblJ1bGUoKSAmJiByZXNvbHZlcikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGNiYmJhYmVjMmI5Y2EyNzJhMmQ4
YzY1NDY4OTU1MGY4NjIwY2E5NWQuLjNhNGVjMTMxYTgxOWMxNWFmODQ3MmU4NzNlNzM4MDAzODM3
ZThhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTQ2NCwxMCArNDY0
LDE5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cG9wUGFyZW50U2hhZG93Um9vdChjb25zdCBTaGFk
b3dSb290KiBzaGFkb3dSb290KQogfQogCiAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCBzdHlsZSBz
ZXR0aW5nIGZ1bmN0aW9uIGZvciBrZXlmcmFtZSBzdHlsZXMKLXZvaWQgU3R5bGVSZXNvbHZlcjo6
YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKK3Zv
aWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtl
eWZyYW1lcz4gcnVsZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCiB7CisjaWYgRU5BQkxF
KFNUWUxFX1NDT1BFRCkgfHwgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKHNjb3BlICYmIG1f
c2NvcGVSZXNvbHZlcikgeworICAgICAgICBtX3Njb3BlUmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5
bGUocnVsZSwgc2NvcGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgQXRv
bWljU3RyaW5nIHMocnVsZS0+bmFtZSgpKTsKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0KHMu
aW1wbCgpLCBydWxlKTsKKyNpZiAhRU5BQkxFKFNUWUxFX1NDT1BFRCkgJiYgIUVOQUJMRShTSEFE
T1dfRE9NKQorICAgIFVOVVNFRF9QQVJBTShzY29wZSk7CisjZW5kaWYKIH0KIAogU3R5bGVSZXNv
bHZlcjo6flN0eWxlUmVzb2x2ZXIoKQpAQCAtMTY0OSwxMSArMTY1OCwyMiBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqIGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBlbAogCiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLmNoZWNrQ29uc2lzdGVuY3ko
KTsKIAorI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpIHx8IEVOQUJMRShTSEFET1dfRE9NKQorICAg
IGNvbnN0IFN0eWxlUnVsZUtleWZyYW1lcyoga2V5ZnJhbWVzUnVsZSA9IG1fc2NvcGVSZXNvbHZl
ciA/IG1fc2NvcGVSZXNvbHZlci0+ZmluZE1hdGNoZWRLZXlmcmFtZXNSdWxlKGxpc3QuYW5pbWF0
aW9uTmFtZSgpLCBlKSA6IDA7CisgICAgaWYgKCFrZXlmcmFtZXNSdWxlICYmICghZS0+aXNJblNo
YWRvd1RyZWUoKSB8fCBlLT5zaGFkb3dSb290KCktPmFwcGx5QXV0aG9yU3R5bGVzKCkpKSB7Cisg
ICAgICAgIEtleWZyYW1lc1J1bGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9rZXlmcmFtZXNSdWxlTWFw
LmZpbmQobGlzdC5hbmltYXRpb25OYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
a2V5ZnJhbWVzUnVsZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIGtleWZyYW1lc1J1bGUgPSBpdC0+
dmFsdWUuZ2V0KCk7CisgICAgfQorICAgIGlmICgha2V5ZnJhbWVzUnVsZSkKKyAgICAgICAgcmV0
dXJuOworI2Vsc2UKICAgICBLZXlmcmFtZXNSdWxlTWFwOjppdGVyYXRvciBpdCA9IG1fa2V5ZnJh
bWVzUnVsZU1hcC5maW5kKGxpc3QuYW5pbWF0aW9uTmFtZSgpLmltcGwoKSk7CiAgICAgaWYgKGl0
ID09IG1fa2V5ZnJhbWVzUnVsZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29u
c3QgU3R5bGVSdWxlS2V5ZnJhbWVzKiBrZXlmcmFtZXNSdWxlID0gaXQtPnZhbHVlLmdldCgpOwor
I2VuZGlmCiAKICAgICAvLyBDb25zdHJ1Y3QgYW5kIHBvcHVsYXRlIHRoZSBzdHlsZSBmb3IgZWFj
aCBrZXlmcmFtZQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPiYga2V5
ZnJhbWVzID0ga2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAppbmRleCBmNzY5OTM0NDI1MTEzOTlmNzliYWVlNzdjNGQ3ZWQzMzc1MDYzNzUyLi42
ODY0YzRjZjAxMjliZWRiZjY1NTI1ZDZmMWNiYzMwNThhNThhN2YyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmgKQEAgLTI1Myw3ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhbGxW
aXNpdGVkU3RhdGVDaGFuZ2VkKCkgeyBtX2NoZWNrZXIuYWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgp
OyB9CiAgICAgdm9pZCB2aXNpdGVkU3RhdGVDaGFuZ2VkKExpbmtIYXNoIHZpc2l0ZWRIYXNoKSB7
IG1fY2hlY2tlci52aXNpdGVkU3RhdGVDaGFuZ2VkKHZpc2l0ZWRIYXNoKTsgfQogCi0gICAgdm9p
ZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPik7CisgICAg
dm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiwgY29u
c3QgQ29udGFpbmVyTm9kZSopOwogCiAgICAgYm9vbCBjaGVja1JlZ2lvblN0eWxlKEVsZW1lbnQq
IHJlZ2lvbkVsZW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
Y29wZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIu
Y3BwCmluZGV4IDVmZjJiM2UwYjExNTQ5OTQ0N2UyMWM4NmY1OGY2NDYxMzAxY2YwZmQuLjRiNTI2
YmVjMWY5M2QxNjQ5MDUwYTJiZTg0OWMwNzg2MDEwODU2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiUnVs
ZVNldC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgiCisj
aW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJ
bnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRh
dGlvbkhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
Lmg+CkBAIC0yMzUsNiArMjM3LDUxIEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjptYXRjaEhv
c3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8UnVsZVNldCo+CiAgICAgfQog
fQogCit2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRy
PFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCit7
CisgICAgQXRvbWljU3RyaW5nIHMocnVsZS0+bmFtZSgpKTsKKyAgICBOYW1lZFNjb3BlZEtleWZy
YW1lc1J1bGVNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2tleWZyYW1lc1J1bGVNYXAuYWRk
KHMuaW1wbCgpLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgU2NvcGVkS2V5ZnJh
bWVzUnVsZU1hcCk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2V0KHNjb3BlLCBy
dWxlKTsKK30KKworU3R5bGVSdWxlS2V5ZnJhbWVzKiBTdHlsZVNjb3BlUmVzb2x2ZXI6OmZpbmRN
YXRjaGVkS2V5ZnJhbWVzUnVsZShjb25zdCBBdG9taWNTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKG1fa2V5ZnJhbWVzUnVsZU1hcC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgTmFtZWRTY29wZWRLZXlmcmFtZXNSdWxl
TWFwOjppdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVzUnVsZU1hcC5maW5kKGFuaW1hdGlvbk5hbWUu
aW1wbCgpKTsKKyAgICBpZiAoaXQgPT0gbV9rZXlmcmFtZXNSdWxlTWFwLmVuZCgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFNjb3BlZEtleWZyYW1lc1J1bGVNYXAqIG1hcCA9IGl0LT52YWx1
ZS5nZXQoKTsKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IGVsZW1lbnQ7CisKKyAg
ICBpZiAoZWxlbWVudC0+aXNJblNoYWRvd1RyZWUoKSkgeworICAgICAgICBib29sIG5lZWRzQXV0
aG9yUnVsZXMgPSBmYWxzZTsKKyAgICAgICAgZm9yICggOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+
cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgICAgICBTY29wZWRLZXlmcmFtZXNSdWxlTWFw
OjppdGVyYXRvciBpdCA9IG1hcC0+ZmluZChzY29wZSk7CisgICAgICAgICAgICBpZiAoaXQgIT0g
bWFwLT5lbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOworICAg
ICAgICAgICAgaWYgKHNjb3BlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgICAgIGlm
ICghdG9TaGFkb3dSb290KHNjb3BlKS0+YXBwbHlBdXRob3JTdHlsZXMoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgbmVlZHNBdXRob3JSdWxlcyA9IHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFuZWVkc0F1dGhvclJ1bGVz
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGZvciAoOyBzY29wZSAmJiBzY29wZS0+
aXNJblNoYWRvd1RyZWUoKTsgc2NvcGUgPSBzY29wZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7IH0K
KyAgICB9CisgICAgZm9yICg7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5wYXJlbnRPckhvc3ROb2Rl
KCkpIHsKKyAgICAgICAgU2NvcGVkS2V5ZnJhbWVzUnVsZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAt
PmZpbmQoc2NvcGUpOworICAgICAgICBpZiAoaXQgIT0gbWFwLT5lbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiB2b2lk
IFN0eWxlU2NvcGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKaW5kZXggM2JlM2ZmNGY3MGM3Mzc1YmQwMTQyNmEw
MGJhNDI0MTI4NDYyY2MwZS4uODFiMmEwMGU2MDJjMjg2Y2JmOWMwNWNlMmVkZDE4NTg2N2JhMDNl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaApAQCAtNDEsNiArNDEs
NyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgUnVsZVNldDsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBj
bGFzcyBTdHlsZVJ1bGVIb3N0OworY2xhc3MgU3R5bGVSdWxlS2V5ZnJhbWVzOwogc3RydWN0IFJ1
bGVGZWF0dXJlU2V0OwogCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkgfHwgRU5BQkxFKFNIQURP
V19ET00pCkBAIC03OSw2ICs4MCw5IEBAIHB1YmxpYzoKICAgICBib29sIHN0eWxlU2hhcmluZ0Nh
bmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoY29uc3QgRWxlbWVudCopOwogICAgIHZvaWQgbWF0Y2hI
b3N0UnVsZXMoY29uc3QgRWxlbWVudCosIFZlY3RvcjxSdWxlU2V0Kj4mIG1hdGNoZWRSdWxlcyk7
CiAKKyAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFt
ZXM+LCBjb25zdCBDb250YWluZXJOb2RlKik7CisgICAgU3R5bGVSdWxlS2V5ZnJhbWVzKiBmaW5k
TWF0Y2hlZEtleWZyYW1lc1J1bGUoY29uc3QgQXRvbWljU3RyaW5nJiBhbmltYXRpb25OYW1lLCBj
b25zdCBFbGVtZW50Kik7CisKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTk5LDYgKzEwMywxMCBAQCBwcml2YXRlOgog
ICAgIGludCBtX3N0YWNrUGFyZW50Qm91bmRzSW5kZXg7CiAKICAgICBTY29wZWRSdWxlU2V0TWFw
IG1fYXRIb3N0UnVsZXM7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyTm9k
ZSosIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+ID4gU2NvcGVkS2V5ZnJhbWVzUnVsZU1hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIE93blB0cjxTY29wZWRLZXlm
cmFtZXNSdWxlTWFwPiA+IE5hbWVkU2NvcGVkS2V5ZnJhbWVzUnVsZU1hcDsKKyAgICBOYW1lZFNj
b3BlZEtleWZyYW1lc1J1bGVNYXAgbV9rZXlmcmFtZXNSdWxlTWFwOwogfTsKIAogaW5saW5lIGJv
b2wgU3R5bGVTY29wZVJlc29sdmVyOjplbnN1cmVTdGFja0NvbnNpc3RlbmN5KENvbnRhaW5lck5v
ZGUqIHBhcmVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA4NGZjZWNhMTcwMTlhNTEwN2E0ZThmNmJiZTNmOTdiOTY4OTFj
OTMzLi4yZDdjMzc4MmQzMjBhNjRiZTAyZTU0NjRjZWI3ZjU0MjljZWNkZWY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTItMTEtMDIgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUu
Y29tPgorCisgICAgICAgIDxzdHlsZSBzY29wZWQ+OiBJbXBsZW1lbnQgc2NvcGVkIEBrZXlmcmFt
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNDYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L2Nzcy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1rZXlmcmFtZXMu
aHRtbDogQWRkZWQuCisgICAgICAgIFNpbmNlIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50
V2l0aElkIGRvZXNuJ3Qgc3VwcG9ydCBlbGVtZW50cworICAgICAgICBpbiBzaGFkb3cgZG9tIHN1
YnRyZWVzLCB0aGUgbGF5b3V0IHRlc3RzIGNoZWNrIG9ubHkgdGhlIHJlc3VsdAorICAgICAgICBh
ZnRlciB0aGUgY3NzIGFuaW1hdGlvbnMgc3RvcC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1z
Y29wZWQvc3R5bGUtc2NvcGVkLWtleWZyYW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTExLTAxICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFhTUyBibG9ja2VyIGZhbHNlIHBvc2l0aXZlIHdoZW4gcGFnZSBjb250YWlucyA8aWZy
YW1lIHNyYz0iIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9zaGFkb3dyb290LWtleWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjljZDFmMDU1MWI3MTUwODc4NDE1NDdhZjdmY2UxMWZlMTI1NDFkYjkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1rZXlm
cmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorUEFTUyBnZXRCYWNrZ3JvdW5kQ29s
b3Ioc2hhZG93Um9vdFdpdGhLZXlmcmFtZS5nZXRFbGVtZW50QnlJZCgnYm94JykpIGlzICJyZ2Io
MCwgMCwgMjU1KSIKK1BBU1MgZ2V0QmFja2dyb3VuZENvbG9yKHNoYWRvd1Jvb3RXaXRob3V0S2V5
ZnJhbWUuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKSBpcyAicmdiKDI1NSwgMCwgMCkiCitQQVNTIGdl
dEJhY2tncm91bmRDb2xvcihzaGFkb3dSb290V2l0aEFwcGx5QXV0aG9yU3R5bGVzLmdldEVsZW1l
bnRCeUlkKCdib3gnKSkgaXMgInJnYigwLCAxMjgsIDApIgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1rZXlmcmFtZXMuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zaGFkb3dyb290LWtleWZyYW1lcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFiYTM1NmUwYzNmNWI2OWE5YmY0YTVhMjJlMjFiYTA5YTIxMjRlMTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc2hhZG93
cm9vdC1rZXlmcmFtZXMuaHRtbApAQCAtMCwwICsxLDU5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c3R5bGU+CitALXdlYmtpdC1rZXlmcmFtZXMgYW5pbSB7CisgICAgZnJv
bSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9CisgICAgdG8geworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cit9Cis8L3N0eWxlPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZDEiPjwvZGl2PgorICA8ZGl2IGlkPSJkMiI+PC9kaXY+
CisgIDxkaXYgaWQ9ImQzIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxzY3Jp
cHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKK2Z1bmN0aW9uIGdldEJhY2tncm91bmRDb2xvcihlbGVtZW50KSB7CisgICAgcmV0dXJu
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmJhY2tncm91bmRDb2xvcjsKK30KKwor
dmFyIHNoYWRvd1Jvb3RXaXRoS2V5ZnJhbWUgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZDEiKSk7CitzaGFkb3dSb290V2l0aEtleWZyYW1lLmlubmVySFRN
TCA9ICc8c3R5bGU+QC13ZWJraXQta2V5ZnJhbWVzICJhbmltIiB7JyArCisgICAgJ2Zyb20geyBi
YWNrZ3JvdW5kLWNvbG9yOnJlZDsgfSB0byB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0gfScg
KworICAgICcjYm94IHsgaGVpZ2h0OiAxMDBweDsgd2lkdGg6IDEwMHB4OyBiYWNrZ3JvdW5kOiBy
ZWQ7ICcgKworICAgICctd2Via2l0LWFuaW1hdGlvbjogImFuaW0iIDAuNXMgYm90aDsgfTwvc3R5
bGU+JyArCisgICAgJzxkaXYgaWQ9ImJveCI+PC9kaXY+JzsKKwordmFyIHNoYWRvd1Jvb3RXaXRo
b3V0S2V5ZnJhbWUgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZDIiKSk7CitzaGFkb3dSb290V2l0aG91dEtleWZyYW1lLmFwcGx5QXV0aG9yU3R5bGVzID0g
ZmFsc2U7CitzaGFkb3dSb290V2l0aG91dEtleWZyYW1lLmlubmVySFRNTCA9ICc8c3R5bGU+JyAr
CisgICAgJyNib3ggeyBoZWlnaHQ6IDEwMHB4OyB3aWR0aDogMTAwcHg7IGJhY2tncm91bmQ6IHJl
ZDsgJyArCisgICAgJy13ZWJraXQtYW5pbWF0aW9uOiAiYW5pbSIgMC41cyBib3RoOyB9PC9zdHls
ZT4nICsKKyAgICAnPGRpdiBpZD0iYm94Ij48L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdFdpdGhB
cHBseUF1dGhvclN0eWxlcyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkMyIpKTsKK3NoYWRvd1Jvb3RXaXRoQXBwbHlBdXRob3JTdHlsZXMuYXBwbHlBdXRo
b3JTdHlsZXMgPSB0cnVlOworc2hhZG93Um9vdFdpdGhBcHBseUF1dGhvclN0eWxlcy5pbm5lckhU
TUwgPSAnPHN0eWxlPicgKworICAgICcjYm94IHsgaGVpZ2h0OiAxMDBweDsgd2lkdGg6IDEwMHB4
OyBiYWNrZ3JvdW5kOiByZWQ7ICcgKworICAgICctd2Via2l0LWFuaW1hdGlvbjogImFuaW0iIDAu
NXMgYm90aDsgfTwvc3R5bGU+JyArCisgICAgJzxkaXYgaWQ9ImJveCI+PC9kaXY+JzsKKword2lu
ZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmUoImdldEJhY2tncm91bmRD
b2xvcihzaGFkb3dSb290V2l0aEtleWZyYW1lLmdldEVsZW1lbnRCeUlkKCdib3gnKSkiLCAnInJn
YigwLCAwLCAyNTUpIicpOworICAgIHNob3VsZEJlKCJnZXRCYWNrZ3JvdW5kQ29sb3Ioc2hhZG93
Um9vdFdpdGhvdXRLZXlmcmFtZS5nZXRFbGVtZW50QnlJZCgnYm94JykpIiwgJyJyZ2IoMjU1LCAw
LCAwKSInKTsKKyAgICBzaG91bGRCZSgiZ2V0QmFja2dyb3VuZENvbG9yKHNoYWRvd1Jvb3RXaXRo
QXBwbHlBdXRob3JTdHlsZXMuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKSIsICcicmdiKDAsIDEyOCwg
MCkiJyk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30sIDEwMDApOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWtl
eWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQv
c3R5bGUtc2NvcGVkLWtleWZyYW1lcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhNzRjNjlm
Mzg4ZWVlMDcwOTQ3NjYzZjk2NzZlNWE3NDM5Mjc4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gi
IGVsZW1lbnQgYXQgMC4zcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA0MDAKK1BBU1MgLSAibGVm
dCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC43cyBzYXcgc29tZXRoaW5nIGNsb3Nl
IHRvOiA1MDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVk
L3N0eWxlLXNjb3BlZC1rZXlmcmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxl
LXNjb3BlZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMyYjhmNDgx
YTc0NWQzNTRjMjZiZjBkZTE3MDZjZGM5NTRhZTU0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLmh0bWwK
QEAgLTAsMCArMSw3MyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorI2JveCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDA7CisgICAgdG9w
OiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHdpZHRoOiAxMDBweDsKKyAgICBiYWNr
Z3JvdW5kOiByZWQ7CisgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDFzOworICAgIC13
ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICAgIC13ZWJraXQtYW5p
bWF0aW9uLW5hbWU6ICJhbmltIjsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
YW5pbWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPGRpdj4KKyAgICA8ZGl2PgorICAgICAgPHN0eWxlIHNjb3BlZD4KKyAgICAgIEAtd2Via2l0
LWtleWZyYW1lcyAiYW5pbSIgeworICAgICAgICBmcm9tIHsgbGVmdDogNTBweDsgfQorICAgICAg
ICAyMCUgIHsgbGVmdDogMTAwcHg7IH0KKyAgICAgICAgNDAlICB7IGxlZnQ6IDEwMHB4OyB9Cisg
ICAgICAgIDYwJSAgeyBsZWZ0OiAyMDBweDsgfQorICAgICAgICA4MCUgIHsgbGVmdDogMjAwcHg7
IH0KKyAgICAgICAgdG8gICB7IGxlZnQ6IDMwMHB4OyB9CisgICAgICB9CisgICAgICA8L3N0eWxl
PgorICAgICAgPGRpdiBpZD0iZDEiPgorCTxzdHlsZSBzY29wZWQ+CisgICAgICAgIEAtd2Via2l0
LWtleWZyYW1lcyAiYW5pbSIgeworICAgICAgICAgIGZyb20geyBsZWZ0OiAzNTBweDsgfQorICAg
ICAgICAgIDIwJSAgeyBsZWZ0OiA0MDBweDsgfQorICAgICAgICAgIDQwJSAgeyBsZWZ0OiA0MDBw
eDsgfQorICAgICAgICAgIDYwJSAgeyBsZWZ0OiA1MDBweDsgfQorICAgICAgICAgIDgwJSAgeyBs
ZWZ0OiA1MDBweDsgfQorICAgICAgICAgIHRvICAgeyBsZWZ0OiA2MDBweDsgfQorICAgICAgICB9
CisJPC9zdHlsZT4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICAgIDxzdHlsZSBzY29wZWQ+
CisgICAgQC13ZWJraXQta2V5ZnJhbWVzICJhbmltIiB7CisgICAgICAgIGZyb20geyBsZWZ0OiA2
NTBweDsgfQorICAgICAgICAyMCUgIHsgbGVmdDogNzAwcHg7IH0KKyAgICAgICAgNDAlICB7IGxl
ZnQ6IDcwMHB4OyB9CisgICAgICAgIDYwJSAgeyBsZWZ0OiA4MDBweDsgfQorICAgICAgICA4MCUg
IHsgbGVmdDogODAwcHg7IH0KKyAgICAgICAgdG8gICB7IGxlZnQ6IDkwMHB4OyB9CisgICAgfQor
ICAgIDwvc3R5bGU+CisgIDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiPgorICA8L2Rpdj4KKzxz
Y3JpcHQ+Cit2YXIgZDEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZDEiKTsKK3ZhciBib3gg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2JveC5pZCA9ICJib3giOworZDEuYXBw
ZW5kQ2hpbGQoYm94KTsKKworY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgLy8gW2FuaW1h
dGlvbi1uYW1lLCB0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFsdWUsIHRv
bGVyYW5jZV0KKyAgICBbImFuaW0iLCAwLjMsICJib3giLCAibGVmdCIsIDQwMCwgMV0sCisgICAg
WyJhbmltIiwgMC43LCAiYm94IiwgImxlZnQiLCA1MDAsIDFdLAorXTsKKworcnVuQW5pbWF0aW9u
VGVzdChleHBlY3RlZFZhbHVlcyk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172263</attachid>
            <date>2012-11-04 20:49:08 -0800</date>
            <delta_ts>2012-11-04 21:26:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72462-20121105134723.patch</filename>
            <type>text/plain</type>
            <size>20536</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE0YTliNzE2N2ViMmFj
NWM0MDU4NTc4NTAxYWM5MmViZTcyYmU1MC4uMzMyN2I3YzAzNWQyMTMzOTkyYThmM2NlZmFmZDYw
Y2U1YjA4YjhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTExLTA0ICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICA8c3R5bGUgc2NvcGVk
PjogSW1wbGVtZW50IHNjb3BlZCBAa2V5ZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjQ2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGhhc2htYXAgdG8gbG9vayB1cCBAa2V5
ZnJhbWVzIGJ5IHVzaW5nIGFuCisgICAgICAgIGFuaW1hdGlvbiBuYW1lIGFuZCBhIHNjb3BlZCBl
bGVtZW50LiBUbyBhdm9pZCBwZXJmb3JtYW5jZQorICAgICAgICBpc3N1ZSwgZmlyc3RseSBsb29r
ZWQgdXAgdGhlIGhhc2htYXAgYnkgdXNpbmcgYSBuYW1lLgorICAgICAgICBUaGUgcmVzdWx0IG9m
IHRoZSBmaXJzdCBsb29rLXVwIGlzIGEgaGFzaG1hcCB3aGljaCBtYXBzCisgICAgICAgIGEgc2Nv
cGUgZWxlbWVudCB0byBhIGtleWZyYW1lcyBydWxlLiBJZiBhbnkgaGFzaG1hcCBpcyBmb3VuZCwK
KyAgICAgICAgdGhpcyBtZWFucywgdGhlcmUgbWlnaHQgZXhpc3QgYW55IHNjb3BlZCBAa2V5ZnJh
bWVzIHdoaWNoIHNob3VsZAorICAgICAgICBiZSBhcHBsaWVkIHRvIHRoZSBnaXZlbiBlbGVtZW50
LCB0cmF2ZXJzaW5nIGEgRE9NIHRyZWUgdG8gZmluZAorICAgICAgICB0aGUgZmlyc3QgbWF0Y2hl
ZCBzY29wZWQgQGtleWZyYW1lcy4KKworICAgICAgICBUZXN0czogZmFzdC9jc3Mvc3R5bGUtc2Nv
cGVkL3NoYWRvd3Jvb3Qta2V5ZnJhbWVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLmh0bWwKKworICAgICAgICAqIGNzcy9S
dWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0
KToKKyAgICAgICAgUmVtb3ZlZCBGSVhNRSwgYmVjYXVzZSB0aGlzIHBhdGNoIGlzIGZvciBmaXhp
bmcgdGhlIGlzc3VlIHRoYXQKKyAgICAgICAgdGhlIEZJWE1FIG1lbnRpb25lZC4KKyAgICAgICAg
KiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjphZGRLZXlmcmFtZVN0eWxlKToKKyAgICAgICAgSWYgYW55IHNjb3BlIGVsZW1lbnQgaXMgZ2l2
ZW4sIHVzZSBTdHlsZVNjb3BlUmVzb2x2ZXIgdG8gcmVnaXN0ZXIKKyAgICAgICAgdGhlIGtleWZy
YW1lcyBydWxlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6ZmluZE1hdGNoZWRL
ZXlmcmFtZXNSdWxlKToKKyAgICAgICAgRmlyc3RseSB0cnkgdG8gb2J0YWluIHRoZSBmaXJzdCBA
a2V5ZnJhbWVzIGRlY2xhcmVkIGluIGEgc2hhZG93IGRvbQorICAgICAgICBzdWJ0cmVlIG9yIGFu
IGVsZW1lbnQncyBzY29wZS4gSWYgbm8gQGtleWZyYW1lcyBydWxlIGlzIGZvdW5kLCBjaGVjawor
ICAgICAgICB3aGV0aGVyIHRoZSBnaXZlbiBlbGVtZW50IGlzIGluIGEgc2hhZG93IGRvbSBzdWJ0
cmVlIG9yIG5vdC4gSWYgdGhlCisgICAgICAgIGVsZW1lbnQgaXMgaW4gc29tZSBzaGFkb3cgZG9t
IHN1YnRyZWUsIGNoZWNrIGl0cyBzaGFkb3cgcm9vdCdzCisgICAgICAgIGFwcGx5LWF1dGhvci1z
dHlsZXMgZmxhZy4gSWYgbm8gYXBwbHktYXV0aG9yLXN0eWxlcyBmbGFnLAorICAgICAgICBubyBA
a2V5ZnJhbWVzIGluIGRvY3VtZW50KCkgc2hvdWxkIGJlIGxvb2tlZCB1cC4gSW4gdGhlIGNhc2Us
IGp1c3QKKyAgICAgICAgcmV0dXJuIDAuIElmIHRoZSBlbGVtZW50IGlzIGluIGRvY3VtZW50KCkg
b3IgaXRzIHNoYWRvdyByb290IGhhcworICAgICAgICBhcHBseS1hdXRob3Itc3R5bGVzIGZsYWcg
dHJ1ZSwgQGtleWZyYW1lcyBydWxlcyBkZWNsYXJlZCBpbiBkb2N1bWVudCgpLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24pOgorICAg
ICAgICBVc2UgZmluZE1hdGNoZWRLZXlmcmFtZXNSdWxlIHRvIG9idGFpbiBhIG1hdGNoZWQgQGtl
eWZyYW1lcyBydWxlLgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChT
dHlsZVJlc29sdmVyKToKKyAgICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6Cisg
ICAgICAgIEFkZGVkIHRvIHJlZ2lzdGVyIHRoZSBnaXZlbiBAa2V5ZnJhbWVzIHdpdGggaXRzIGFu
aW1hdGlvbiBuYW1lIGFuZAorICAgICAgICBpdHMgc2NvcGVkIGVsZW1lbnQuCisgICAgICAgIChX
ZWJDb3JlOjpmaW5kRmlyc3RBbmNlc3Rvck5vZGVJbkRvY3VtZW50KToKKyAgICAgICAgQSBoZWxw
ZXIgZnVuY3Rpb24gdG8gZmluZCB0aGUgZmlyc3QgYW5jZXN0b3Igbm9kZSBpbiBkb2N1bWVudCgp
IGJ5CisgICAgICAgIGdvaW5nIHVwIGZyb20gdGhlIGdpdmVuIGVsZW1lbnQuCisgICAgICAgIChX
ZWJDb3JlOjpwYXJlbnROb2RlRm9yU3R5bGUpOgorICAgICAgICBBIGhlbHBlciBmdW5jdGlvbiB0
byBvYnRhaW4gdGhlIGdpdmVuIG5vZGUncyBwYXJlbnQgb3IgaG9zdCBub2RlLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGFsc28gY2hlY2tzIGFwcGx5LWF1dGhvci1zdHlsZXMgZmxhZ3MgaWYgdGhl
IG5vZGUgaXMKKyAgICAgICAgYSBzaGFkb3cgcm9vdC4gSWYgbm8gYXBwbHktYXV0aG9yLXN0eWxl
cywganVzdCByZXR1cm4gMC4gVGhpcyBtZWFucywKKyAgICAgICAgbm8gbmVlZCB0byBnbyB1cC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6ZmluZE1hdGNoZWRLZXlmcmFt
ZXNSdWxlKToKKyAgICAgICAgQWRkZWQgdG8gb2J0YWluIHRoZSBmaXJzdCBtYXRjaGVkIHNjb3Bl
ZCBAa2V5ZnJhbWVzLiBUaGUgd2F5IHRvIGZpbmQKKyAgICAgICAgdGhlIGZpcnN0IG9uZSBpczog
KDEpIGZpcnN0bHksIGNoZWNraW5nIHRoZSBnaXZlbiBhbmltYXRpb24gbmFtZS4gSWYgbm8KKyAg
ICAgICAgc2NvcGVkIEBrZXlmcmFtZXMgd2hvc2UgYW5pbWF0aW9uIG5hbWUgaXMgdGhlIHNhbWUg
YXJlIHJlZ2lzdGVyZWQsCisgICAgICAgIGp1c3QgcmV0dXJuIDAuICgyKSBqdXN0IHdhbGtpbmcg
dXAgZnJvbSB0aGUgZ2l2ZW4gZWxlbWVudCB0bworICAgICAgICBkb2N1bWVudCByb290LiBJZiB0
aGUgY3VycmVudCBlbGVtZW50IGhhcyBhbnkgQGtleWZyYW1lcywgcmV0dXJucyB0aGUKKyAgICAg
ICAgQGtleWZyYW1lcy4gKDMpIGlmIHRoZSBnaXZlbiBlbGVtZW50IGlzIGluIHNvbWUgc2hhZG93
IGRvbSBzdWJ0cmVlLAorICAgICAgICBjaGVja2luZyBhcHBseS1hdXRob3Itc3R5bGVzIGZsYWcg
b2YgZWFjaCBzaGFkb3cgcm9vdCBkdXJpbmcgdGhlCisgICAgICAgIHRyYXZlcnNhbC4gSWYgYSBz
aGFkb3cgcm9vdCB3aG9zZSBhcHBseS1hdXRob3Itc3R5bGVzIGlzIGZvdW5kLAorICAgICAgICBz
dG9wIHRoZSB0cmF2ZXJzYWwuICg0KSBpZiB0aGUgZ2l2ZW4gZWxlbWVudCdzIHNoYWRvdyByb290
IGhhcworICAgICAgICBhcHBseS1hdXRob3Itc3R5bGVzIHRydWUsIGdvaW5nIHVwIHRvIHRoZSBh
bmNlc3RvciBub2RlIHdoaWNoIGlzIGluCisgICAgICAgIGRvY3VtZW50KCkgYW5kIGNoZWNraW5n
IHdoZXRoZXIgYW55IHNjb3BlZCBAa2V5ZnJhbWVzIGlzIGRlY2xhcmVkIG9yCisgICAgICAgIG5v
dC4gYy5mLiBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAv
c3BlYy9zaGFkb3cvaW5kZXguaHRtbCNkZm4tYXBwbHktYXV0aG9yLXN0eWxlcworICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTdHlsZVNjb3BlUmVzb2x2ZXIpOgorCiAyMDEyLTExLTA0ICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0
VHlwZSBzaG91bGQgaGF2ZSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZSBiZWhhdmlvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGY3NWY0ZjQyNWJkZmYxMDFjZjc2OTQxZDZhMmNjNTll
ZTEyMWYyYzEuLjlmY2E1YzUyNWFlNTAzODQ4MTU2ZjhhNDAzYTJlMjEwZDU0NDUyMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKQEAgLTMyNywxMSArMzI3LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRS
dWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5
RXZhbHUKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLT5mb250U2VsZWN0b3IoKS0+
YWRkRm9udEZhY2VSdWxlKGZvbnRGYWNlUnVsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlci0+aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChjaGlsZFJ1bGUtPmlzS2V5ZnJhbWVzUnVsZSgpICYmIHJlc29s
dmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhpcyBrZXlmcmFtZSBydWxl
IHRvIG91ciBzZXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRShCVUcgNzI0NjIp
OiBXZSBkb24ndCBhZGQgQGtleWZyYW1lIHJ1bGVzIG9mIHNjb3BlZCBzdHlsZSBzaGVldHMgZm9y
IHRoZSBtb21lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlci0+YWRkS2V5ZnJhbWVTdHlsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXMq
PihjaGlsZFJ1bGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRLZXlm
cmFtZVN0eWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZUtleWZyYW1lcyo+KGNoaWxkUnVsZSksIHNj
b3BlKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gLy8gZm9yIHJ1
bGVzCiAgICAgICAgICAgICB9IC8vIGlmIHJ1bGVzCkBAIC0zNDUsOSArMzQxLDcgQEAgdm9pZCBS
dWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25z
dCBNZWRpYVF1ZXJ5RXZhbHUKICAgICAgICAgICAgIHJlc29sdmVyLT5pbnZhbGlkYXRlTWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZSgpOwogICAgICAgICB9IGVsc2UgaWYgKHJ1bGUtPmlzS2V5ZnJhbWVz
UnVsZSgpICYmIHJlc29sdmVyKSB7CiAgICAgICAgICAgICAvLyBGSVhNRSAoQlVHIDcyNDYyKTog
V2UgZG9uJ3QgYWRkIEBrZXlmcmFtZSBydWxlcyBvZiBzY29wZWQgc3R5bGUgc2hlZXRzIGZvciB0
aGUgbW9tZW50LgotICAgICAgICAgICAgaWYgKHNjb3BlKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgcmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5bGUoc3RhdGljX2Nhc3Q8
U3R5bGVSdWxlS2V5ZnJhbWVzKj4ocnVsZSkpOworICAgICAgICAgICAgcmVzb2x2ZXItPmFkZEtl
eWZyYW1lU3R5bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlS2V5ZnJhbWVzKj4ocnVsZSksIHNjb3Bl
KTsKICAgICAgICAgfQogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICAgICAgZWxzZSBpZiAo
cnVsZS0+aXNSZWdpb25SdWxlKCkgJiYgcmVzb2x2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCBhYjE1NTNjYWUxMTlmYjEyNmQ3MTk3ODE5ZmU5OTk3Y2U0MDdlNWI3
Li4xYTZjMjVhZjg0NGRmMzFiNjBlNDBiMWJiMThlOWU1NmE2NTgwNzk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC00NjQsOCArNDY0LDEyIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6cG9wUGFyZW50U2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290KQog
fQogCiAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCBzdHlsZSBzZXR0aW5nIGZ1bmN0aW9uIGZvciBr
ZXlmcmFtZSBzdHlsZXMKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNz
UmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRk
S2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSwgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUpCiB7CisgICAgaWYgKHNjb3BlICYmIG1fc2NvcGVSZXNvbHZl
cikgeworICAgICAgICBtX3Njb3BlUmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5bGUocnVsZSwgc2Nv
cGUpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIEF0b21pY1N0cmluZyBzKHJ1bGUtPm5h
bWUoKSk7CiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLnNldChzLmltcGwoKSwgcnVsZSk7CiB9CkBA
IC0xNjM5LDYgKzE2NDMsMjEgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZl
cjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSogZWxlbWUKICAgICByZXR1cm4g
bV9zdHlsZS5yZWxlYXNlKCk7CiB9CiAKK2NvbnN0IFN0eWxlUnVsZUtleWZyYW1lcyogU3R5bGVS
ZXNvbHZlcjo6ZmluZE1hdGNoZWRLZXlmcmFtZXNSdWxlKGNvbnN0IEF0b21pY1N0cmluZyYgYW5p
bWF0aW9uTmFtZSwgRWxlbWVudCogZSkKK3sKKyAgICBpZiAobV9zY29wZVJlc29sdmVyKSB7Cisg
ICAgICAgIGlmIChjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZXMqIHJ1bGUgPSBtX3Njb3BlUmVzb2x2
ZXItPmZpbmRNYXRjaGVkS2V5ZnJhbWVzUnVsZShhbmltYXRpb25OYW1lLCBlKSkKKyAgICAgICAg
ICAgIHJldHVybiBydWxlOworICAgICAgICBpZiAoZS0+aXNJblNoYWRvd1RyZWUoKSAmJiAhZS0+
c2hhZG93Um9vdCgpLT5hcHBseUF1dGhvclN0eWxlcygpKQorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgS2V5ZnJhbWVzUnVsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2tleWZyYW1l
c1J1bGVNYXAuZmluZChhbmltYXRpb25OYW1lLmltcGwoKSk7CisgICAgaWYgKGl0ICE9IG1fa2V5
ZnJhbWVzUnVsZU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwogdm9pZCBTdHlsZVJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFu
aW1hdGlvbihFbGVtZW50KiBlLCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBLZXlm
cmFtZUxpc3QmIGxpc3QpCiB7CiAgICAgbGlzdC5jbGVhcigpOwpAQCAtMTY0OSwxMiArMTY2OCwx
MCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1l
bnQqIGUsIGNvbnN0IFJlbmRlclN0eWxlKiBlbAogCiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLmNo
ZWNrQ29uc2lzdGVuY3koKTsKIAotICAgIEtleWZyYW1lc1J1bGVNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9rZXlmcmFtZXNSdWxlTWFwLmZpbmQobGlzdC5hbmltYXRpb25OYW1lKCkuaW1wbCgpKTsKLSAg
ICBpZiAoaXQgPT0gbV9rZXlmcmFtZXNSdWxlTWFwLmVuZCgpKQorICAgIGNvbnN0IFN0eWxlUnVs
ZUtleWZyYW1lcyoga2V5ZnJhbWVzUnVsZSA9IGZpbmRNYXRjaGVkS2V5ZnJhbWVzUnVsZShsaXN0
LmFuaW1hdGlvbk5hbWUoKSwgZSk7CisgICAgaWYgKCFrZXlmcmFtZXNSdWxlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZXMqIGtleWZyYW1lc1J1bGUgPSBp
dC0+dmFsdWUuZ2V0KCk7Ci0KICAgICAvLyBDb25zdHJ1Y3QgYW5kIHBvcHVsYXRlIHRoZSBzdHls
ZSBmb3IgZWFjaCBrZXlmcmFtZQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFt
ZT4gPiYga2V5ZnJhbWVzID0ga2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGtleWZyYW1lcy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmgKaW5kZXggZjc2OTkzNDQyNTExMzk5Zjc5YmFlZTc3YzRkN2VkMzM3NTA2
Mzc1Mi4uOTViZTUxYjI1OGNlOTQ0OWZmNTY2MGVkMzI2NmUzOGJjNmRiNzE5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHVibGljOgogICAgIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlID0gMCwgU3R5bGVTaGFyaW5nQmVoYXZpb3IgPSBBbGxvd1N0eWxlU2hh
cmluZywKICAgICAgICAgUnVsZU1hdGNoaW5nQmVoYXZpb3IgPSBNYXRjaEFsbFJ1bGVzLCBSZW5k
ZXJSZWdpb24qIHJlZ2lvbkZvclN0eWxpbmcgPSAwKTsKIAorICAgIGNvbnN0IFN0eWxlUnVsZUtl
eWZyYW1lcyogZmluZE1hdGNoZWRLZXlmcmFtZXNSdWxlKGNvbnN0IEF0b21pY1N0cmluZyYsIEVs
ZW1lbnQqKTsKICAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqLCBj
b25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYpOwogCiAgICAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkLCBFbGVtZW50KiwgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlKTsKQEAgLTI1Myw3ICsyNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCkgeyBtX2NoZWNrZXIuYWxsVmlzaXRlZFN0YXRlQ2hh
bmdlZCgpOyB9CiAgICAgdm9pZCB2aXNpdGVkU3RhdGVDaGFuZ2VkKExpbmtIYXNoIHZpc2l0ZWRI
YXNoKSB7IG1fY2hlY2tlci52aXNpdGVkU3RhdGVDaGFuZ2VkKHZpc2l0ZWRIYXNoKTsgfQogCi0g
ICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPik7
CisgICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVz
PiwgY29uc3QgQ29udGFpbmVyTm9kZSopOwogCiAgICAgYm9vbCBjaGVja1JlZ2lvblN0eWxlKEVs
ZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTY29wZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVz
b2x2ZXIuY3BwCmluZGV4IDVmZjJiM2UwYjExNTQ5OTQ0N2UyMWM4NmY1OGY2NDYxMzAxY2YwZmQu
LjM5NTc5MTA4OWMxMmM0Y2IxZjQ1MTAzNGMwNjg2ZDU2NjVlNmIzZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVk
ZSAiUnVsZVNldC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJXZWJDb3Jl
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVSdWxl
LmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VmVjdG9yLmg+CkBAIC0yMzUsMTIgKzIzNyw2NSBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6
bWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgVmVjdG9yPFJ1bGVTZXQqPgog
ICAgIH0KIH0KIAordm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OmFkZEtleWZyYW1lU3R5bGUoUGFz
c1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNj
b3BlKQoreworICAgIEF0b21pY1N0cmluZyBzKHJ1bGUtPm5hbWUoKSk7CisgICAgTmFtZWRTY29w
ZWRLZXlmcmFtZXNSdWxlTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9rZXlmcmFtZXNSdWxl
TWFwLmFkZChzLmltcGwoKSwgbnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5
KQorICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IFNjb3Bl
ZEtleWZyYW1lc1J1bGVNYXApOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNldChz
Y29wZSwgcnVsZSk7Cit9CisKK2lubGluZSBjb25zdCBDb250YWluZXJOb2RlKiBmaW5kRmlyc3RB
bmNlc3Rvck5vZGVJbkRvY3VtZW50KGNvbnN0IENvbnRhaW5lck5vZGUqIG5vZGUpCit7CisgICAg
Zm9yICg7IG5vZGUgJiYgbm9kZS0+aXNJblNoYWRvd1RyZWUoKTsgbm9kZSA9IG5vZGUtPnNoYWRv
d0hvc3QoKSkgeyB9CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK2lubGluZSBjb25zdCBDb250YWlu
ZXJOb2RlKiBwYXJlbnROb2RlRm9yU3R5bGUoY29uc3QgQ29udGFpbmVyTm9kZSogbm9kZSkKK3sK
KyAgICBpZiAobm9kZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hhZG93Um9vdChub2RlKS0+YXBw
bHlBdXRob3JTdHlsZXMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5vZGUtPnBh
cmVudE9ySG9zdE5vZGUoKTsKK30KKworU3R5bGVSdWxlS2V5ZnJhbWVzKiBTdHlsZVNjb3BlUmVz
b2x2ZXI6OmZpbmRNYXRjaGVkS2V5ZnJhbWVzUnVsZShjb25zdCBBdG9taWNTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKG1fa2V5ZnJhbWVz
UnVsZU1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgTmFtZWRTY29wZWRL
ZXlmcmFtZXNSdWxlTWFwOjppdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVzUnVsZU1hcC5maW5kKGFu
aW1hdGlvbk5hbWUuaW1wbCgpKTsKKyAgICBpZiAoaXQgPT0gbV9rZXlmcmFtZXNSdWxlTWFwLmVu
ZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFNjb3BlZEtleWZyYW1lc1J1bGVNYXAqIG1h
cCA9IGl0LT52YWx1ZS5nZXQoKTsKKworICAgIGlmIChlbGVtZW50LT5pc0luU2hhZG93VHJlZSgp
KSB7CisgICAgICAgIGZvciAoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBlbGVtZW50OyBz
Y29wZSAmJiBzY29wZS0+aXNJblNoYWRvd1RyZWUoKTsgc2NvcGUgPSBwYXJlbnROb2RlRm9yU3R5
bGUoc2NvcGUpKSB7CisgICAgICAgICAgICBTY29wZWRLZXlmcmFtZXNSdWxlTWFwOjppdGVyYXRv
ciBpdCA9IG1hcC0+ZmluZChzY29wZSk7CisgICAgICAgICAgICBpZiAoaXQgIT0gbWFwLT5lbmQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOworICAgICAgICB9Cisg
ICAgICAgIGlmICghZWxlbWVudC0+c2hhZG93Um9vdCgpLT5hcHBseUF1dGhvclN0eWxlcygpKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgY29uc3QgQ29udGFpbmVyTm9kZSog
c2NvcGUgPSBmaW5kRmlyc3RBbmNlc3Rvck5vZGVJbkRvY3VtZW50KGVsZW1lbnQpOworICAgIGZv
ciAoOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAg
IFNjb3BlZEtleWZyYW1lc1J1bGVNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5maW5kKHNjb3BlKTsK
KyAgICAgICAgaWYgKGl0ICE9IG1hcC0+ZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXQtPnZh
bHVlLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBTdHlsZVNjb3BlUmVz
b2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fYXV0
aG9yU3R5bGVzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3N0YWNrKTsKICAgICBpbmZvLmFkZE1l
bWJlcihtX2F0SG9zdFJ1bGVzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2tleWZyYW1lc1J1bGVN
YXApOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKaW5kZXgg
M2JlM2ZmNGY3MGM3Mzc1YmQwMTQyNmEwMGJhNDI0MTI4NDYyY2MwZS4uODFiMmEwMGU2MDJjMjg2
Y2JmOWMwNWNlMmVkZDE4NTg2N2JhMDNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2NvcGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3Bl
UmVzb2x2ZXIuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgUnVsZVNl
dDsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBTdHlsZVJ1bGVIb3N0OworY2xhc3MgU3R5bGVS
dWxlS2V5ZnJhbWVzOwogc3RydWN0IFJ1bGVGZWF0dXJlU2V0OwogCiAjaWYgRU5BQkxFKFNUWUxF
X1NDT1BFRCkgfHwgRU5BQkxFKFNIQURPV19ET00pCkBAIC03OSw2ICs4MCw5IEBAIHB1YmxpYzoK
ICAgICBib29sIHN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoY29uc3QgRWxl
bWVudCopOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCosIFZlY3RvcjxS
dWxlU2V0Kj4mIG1hdGNoZWRSdWxlcyk7CiAKKyAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUGFz
c1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+LCBjb25zdCBDb250YWluZXJOb2RlKik7CisgICAg
U3R5bGVSdWxlS2V5ZnJhbWVzKiBmaW5kTWF0Y2hlZEtleWZyYW1lc1J1bGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBjb25zdCBFbGVtZW50Kik7CisKICAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTk5
LDYgKzEwMywxMCBAQCBwcml2YXRlOgogICAgIGludCBtX3N0YWNrUGFyZW50Qm91bmRzSW5kZXg7
CiAKICAgICBTY29wZWRSdWxlU2V0TWFwIG1fYXRIb3N0UnVsZXM7CisKKyAgICB0eXBlZGVmIEhh
c2hNYXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+ID4g
U2NvcGVkS2V5ZnJhbWVzUnVsZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5n
SW1wbCosIE93blB0cjxTY29wZWRLZXlmcmFtZXNSdWxlTWFwPiA+IE5hbWVkU2NvcGVkS2V5ZnJh
bWVzUnVsZU1hcDsKKyAgICBOYW1lZFNjb3BlZEtleWZyYW1lc1J1bGVNYXAgbV9rZXlmcmFtZXNS
dWxlTWFwOwogfTsKIAogaW5saW5lIGJvb2wgU3R5bGVTY29wZVJlc29sdmVyOjplbnN1cmVTdGFj
a0NvbnNpc3RlbmN5KENvbnRhaW5lck5vZGUqIHBhcmVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNjJmNzAyMTM1ZGUy
NzNhOWE4ZDZhMThjM2Q5NTdhMmRhMjYzMWIxLi41OWQ1MDUzZWUzNjNjZWYwMzQ4ZWNmMDk2OTE1
NDcwN2RlMjFkNmI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTEtMDQgIFRha2FzaGkg
U2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIDxzdHlsZSBzY29wZWQ+OiBJ
bXBsZW1lbnQgc2NvcGVkIEBrZXlmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyNDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1rZXlm
cmFtZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1zY29w
ZWQvc2hhZG93cm9vdC1rZXlmcmFtZXMuaHRtbDogQWRkZWQuCisgICAgICAgIFNpbmNlIHBhdXNl
QW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIGRvZXNuJ3Qgc3VwcG9ydCBlbGVtZW50cwor
ICAgICAgICBpbiBzaGFkb3cgZG9tIHN1YnRyZWVzLCB0aGUgbGF5b3V0IHRlc3RzIGNoZWNrIG9u
bHkgdGhlIHJlc3VsdAorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29w
ZWQta2V5ZnJhbWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5
bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1rZXlmcmFtZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMTEt
MDQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzM0MTYuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3NoYWRvd3Jvb3Qta2V5ZnJhbWVz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2QxZjA1NTFiNzE1MDg3ODQxNTQ3YWY3ZmNlMTFm
ZTEyNTQxZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUt
c2NvcGVkL3NoYWRvd3Jvb3Qta2V5ZnJhbWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1BBU1MgZ2V0QmFja2dyb3VuZENvbG9yKHNoYWRvd1Jvb3RXaXRoS2V5ZnJhbWUuZ2V0RWxlbWVu
dEJ5SWQoJ2JveCcpKSBpcyAicmdiKDAsIDAsIDI1NSkiCitQQVNTIGdldEJhY2tncm91bmRDb2xv
cihzaGFkb3dSb290V2l0aG91dEtleWZyYW1lLmdldEVsZW1lbnRCeUlkKCdib3gnKSkgaXMgInJn
YigyNTUsIDAsIDApIgorUEFTUyBnZXRCYWNrZ3JvdW5kQ29sb3Ioc2hhZG93Um9vdFdpdGhBcHBs
eUF1dGhvclN0eWxlcy5nZXRFbGVtZW50QnlJZCgnYm94JykpIGlzICJyZ2IoMCwgMTI4LCAwKSIK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3NoYWRvd3Jv
b3Qta2V5ZnJhbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc2hh
ZG93cm9vdC1rZXlmcmFtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmEzNTZlMGMzZjViNjlhOWJmNGE1
YTIyZTIxYmEwOWEyMTI0ZTExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGUtc2NvcGVkL3NoYWRvd3Jvb3Qta2V5ZnJhbWVzLmh0bWwKQEAgLTAsMCArMSw1OSBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorQC13ZWJraXQta2V5
ZnJhbWVzIGFuaW0geworICAgIGZyb20geworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
CisgICAgfQorICAgIHRvIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAg
fQorfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImQxIj48L2Rpdj4K
KyAgPGRpdiBpZD0iZDIiPjwvZGl2PgorICA8ZGl2IGlkPSJkMyI+PC9kaXY+CisgIDxkaXYgaWQ9
InJlc3VsdCI+PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBnZXRCYWNrZ3JvdW5kQ29sb3Io
ZWxlbWVudCkgeworICAgIHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5i
YWNrZ3JvdW5kQ29sb3I7Cit9CisKK3ZhciBzaGFkb3dSb290V2l0aEtleWZyYW1lID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImQxIikpOworc2hhZG93Um9v
dFdpdGhLZXlmcmFtZS5pbm5lckhUTUwgPSAnPHN0eWxlPkAtd2Via2l0LWtleWZyYW1lcyAiYW5p
bSIgeycgKworICAgICdmcm9tIHsgYmFja2dyb3VuZC1jb2xvcjpyZWQ7IH0gdG8geyBiYWNrZ3Jv
dW5kLWNvbG9yOiBibHVlOyB9IH0nICsKKyAgICAnI2JveCB7IGhlaWdodDogMTAwcHg7IHdpZHRo
OiAxMDBweDsgYmFja2dyb3VuZDogcmVkOyAnICsKKyAgICAnLXdlYmtpdC1hbmltYXRpb246ICJh
bmltIiAwLjVzIGJvdGg7IH08L3N0eWxlPicgKworICAgICc8ZGl2IGlkPSJib3giPjwvZGl2Pic7
CisKK3ZhciBzaGFkb3dSb290V2l0aG91dEtleWZyYW1lID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImQyIikpOworc2hhZG93Um9vdFdpdGhvdXRLZXlmcmFt
ZS5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworc2hhZG93Um9vdFdpdGhvdXRLZXlmcmFtZS5p
bm5lckhUTUwgPSAnPHN0eWxlPicgKworICAgICcjYm94IHsgaGVpZ2h0OiAxMDBweDsgd2lkdGg6
IDEwMHB4OyBiYWNrZ3JvdW5kOiByZWQ7ICcgKworICAgICctd2Via2l0LWFuaW1hdGlvbjogImFu
aW0iIDAuNXMgYm90aDsgfTwvc3R5bGU+JyArCisgICAgJzxkaXYgaWQ9ImJveCI+PC9kaXY+JzsK
KwordmFyIHNoYWRvd1Jvb3RXaXRoQXBwbHlBdXRob3JTdHlsZXMgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZDMiKSk7CitzaGFkb3dSb290V2l0aEFwcGx5
QXV0aG9yU3R5bGVzLmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKK3NoYWRvd1Jvb3RXaXRoQXBw
bHlBdXRob3JTdHlsZXMuaW5uZXJIVE1MID0gJzxzdHlsZT4nICsKKyAgICAnI2JveCB7IGhlaWdo
dDogMTAwcHg7IHdpZHRoOiAxMDBweDsgYmFja2dyb3VuZDogcmVkOyAnICsKKyAgICAnLXdlYmtp
dC1hbmltYXRpb246ICJhbmltIiAwLjVzIGJvdGg7IH08L3N0eWxlPicgKworICAgICc8ZGl2IGlk
PSJib3giPjwvZGl2Pic7CisKK3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIHNo
b3VsZEJlKCJnZXRCYWNrZ3JvdW5kQ29sb3Ioc2hhZG93Um9vdFdpdGhLZXlmcmFtZS5nZXRFbGVt
ZW50QnlJZCgnYm94JykpIiwgJyJyZ2IoMCwgMCwgMjU1KSInKTsKKyAgICBzaG91bGRCZSgiZ2V0
QmFja2dyb3VuZENvbG9yKHNoYWRvd1Jvb3RXaXRob3V0S2V5ZnJhbWUuZ2V0RWxlbWVudEJ5SWQo
J2JveCcpKSIsICcicmdiKDI1NSwgMCwgMCkiJyk7CisgICAgc2hvdWxkQmUoImdldEJhY2tncm91
bmRDb2xvcihzaGFkb3dSb290V2l0aEFwcGx5QXV0aG9yU3R5bGVzLmdldEVsZW1lbnRCeUlkKCdi
b3gnKSkiLCAnInJnYigwLCAxMjgsIDApIicpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCAxMDAwKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUt
c2NvcGVkL3N0eWxlLXNjb3BlZC1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU0YTc0YzY5ZjM4OGVlZTA3MDk0NzY2M2Y5Njc2ZTVhNzQzOTI3ODUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUt
c2NvcGVkLWtleWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTIC0gImxl
ZnQiIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAuM3Mgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogNDAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAu
N3Mgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogNTAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWtleWZyYW1lcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjljMmI4ZjQ4MWE3NDVkMzU0YzI2YmYwZGUxNzA2Y2RjOTU0YWU1NDcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUt
c2NvcGVkLWtleWZyYW1lcy5odG1sCkBAIC0wLDAgKzEsNzMgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyNib3ggeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICBsZWZ0OiAwOworICAgIHRvcDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB3
aWR0aDogMTAwcHg7CisgICAgYmFja2dyb3VuZDogcmVkOworICAgIC13ZWJraXQtYW5pbWF0aW9u
LWR1cmF0aW9uOiAxczsKKyAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxp
bmVhcjsKKyAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiAiYW5pbSI7Cit9Cis8L3N0eWxlPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2FuaW1hdGlvbnMvcmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0
LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXY+CisgICAgPGRpdj4KKyAgICAgIDxzdHlsZSBz
Y29wZWQ+CisgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgImFuaW0iIHsKKyAgICAgICAgZnJvbSB7
IGxlZnQ6IDUwcHg7IH0KKyAgICAgICAgMjAlICB7IGxlZnQ6IDEwMHB4OyB9CisgICAgICAgIDQw
JSAgeyBsZWZ0OiAxMDBweDsgfQorICAgICAgICA2MCUgIHsgbGVmdDogMjAwcHg7IH0KKyAgICAg
ICAgODAlICB7IGxlZnQ6IDIwMHB4OyB9CisgICAgICAgIHRvICAgeyBsZWZ0OiAzMDBweDsgfQor
ICAgICAgfQorICAgICAgPC9zdHlsZT4KKyAgICAgIDxkaXYgaWQ9ImQxIj4KKwk8c3R5bGUgc2Nv
cGVkPgorICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgImFuaW0iIHsKKyAgICAgICAgICBmcm9t
IHsgbGVmdDogMzUwcHg7IH0KKyAgICAgICAgICAyMCUgIHsgbGVmdDogNDAwcHg7IH0KKyAgICAg
ICAgICA0MCUgIHsgbGVmdDogNDAwcHg7IH0KKyAgICAgICAgICA2MCUgIHsgbGVmdDogNTAwcHg7
IH0KKyAgICAgICAgICA4MCUgIHsgbGVmdDogNTAwcHg7IH0KKyAgICAgICAgICB0byAgIHsgbGVm
dDogNjAwcHg7IH0KKyAgICAgICAgfQorCTwvc3R5bGU+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgICA8c3R5bGUgc2NvcGVkPgorICAgIEAtd2Via2l0LWtleWZyYW1lcyAiYW5pbSIgewor
ICAgICAgICBmcm9tIHsgbGVmdDogNjUwcHg7IH0KKyAgICAgICAgMjAlICB7IGxlZnQ6IDcwMHB4
OyB9CisgICAgICAgIDQwJSAgeyBsZWZ0OiA3MDBweDsgfQorICAgICAgICA2MCUgIHsgbGVmdDog
ODAwcHg7IH0KKyAgICAgICAgODAlICB7IGxlZnQ6IDgwMHB4OyB9CisgICAgICAgIHRvICAgeyBs
ZWZ0OiA5MDBweDsgfQorICAgIH0KKyAgICA8L3N0eWxlPgorICA8L2Rpdj4KKyAgPGRpdiBpZD0i
cmVzdWx0Ij4KKyAgPC9kaXY+Cis8c2NyaXB0PgordmFyIGQxID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiI2QxIik7Cit2YXIgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citi
b3guaWQgPSAiYm94IjsKK2QxLmFwcGVuZENoaWxkKGJveCk7CisKK2NvbnN0IGV4cGVjdGVkVmFs
dWVzID0gWworICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVy
dHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgWyJhbmltIiwgMC4zLCAiYm94Iiwg
ImxlZnQiLCA0MDAsIDFdLAorICAgIFsiYW5pbSIsIDAuNywgImJveCIsICJsZWZ0IiwgNTAwLCAx
XSwKK107CisKK3J1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172266</attachid>
            <date>2012-11-04 21:26:39 -0800</date>
            <delta_ts>2012-11-04 21:26:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72462-20121105142453.patch</filename>
            <type>text/plain</type>
            <size>20715</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE0YTliNzE2N2ViMmFj
NWM0MDU4NTc4NTAxYWM5MmViZTcyYmU1MC4uMzMyN2I3YzAzNWQyMTMzOTkyYThmM2NlZmFmZDYw
Y2U1YjA4YjhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTExLTA0ICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICA8c3R5bGUgc2NvcGVk
PjogSW1wbGVtZW50IHNjb3BlZCBAa2V5ZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjQ2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGhhc2htYXAgdG8gbG9vayB1cCBAa2V5
ZnJhbWVzIGJ5IHVzaW5nIGFuCisgICAgICAgIGFuaW1hdGlvbiBuYW1lIGFuZCBhIHNjb3BlZCBl
bGVtZW50LiBUbyBhdm9pZCBwZXJmb3JtYW5jZQorICAgICAgICBpc3N1ZSwgZmlyc3RseSBsb29r
ZWQgdXAgdGhlIGhhc2htYXAgYnkgdXNpbmcgYSBuYW1lLgorICAgICAgICBUaGUgcmVzdWx0IG9m
IHRoZSBmaXJzdCBsb29rLXVwIGlzIGEgaGFzaG1hcCB3aGljaCBtYXBzCisgICAgICAgIGEgc2Nv
cGUgZWxlbWVudCB0byBhIGtleWZyYW1lcyBydWxlLiBJZiBhbnkgaGFzaG1hcCBpcyBmb3VuZCwK
KyAgICAgICAgdGhpcyBtZWFucywgdGhlcmUgbWlnaHQgZXhpc3QgYW55IHNjb3BlZCBAa2V5ZnJh
bWVzIHdoaWNoIHNob3VsZAorICAgICAgICBiZSBhcHBsaWVkIHRvIHRoZSBnaXZlbiBlbGVtZW50
LCB0cmF2ZXJzaW5nIGEgRE9NIHRyZWUgdG8gZmluZAorICAgICAgICB0aGUgZmlyc3QgbWF0Y2hl
ZCBzY29wZWQgQGtleWZyYW1lcy4KKworICAgICAgICBUZXN0czogZmFzdC9jc3Mvc3R5bGUtc2Nv
cGVkL3NoYWRvd3Jvb3Qta2V5ZnJhbWVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLmh0bWwKKworICAgICAgICAqIGNzcy9S
dWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0
KToKKyAgICAgICAgUmVtb3ZlZCBGSVhNRSwgYmVjYXVzZSB0aGlzIHBhdGNoIGlzIGZvciBmaXhp
bmcgdGhlIGlzc3VlIHRoYXQKKyAgICAgICAgdGhlIEZJWE1FIG1lbnRpb25lZC4KKyAgICAgICAg
KiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjphZGRLZXlmcmFtZVN0eWxlKToKKyAgICAgICAgSWYgYW55IHNjb3BlIGVsZW1lbnQgaXMgZ2l2
ZW4sIHVzZSBTdHlsZVNjb3BlUmVzb2x2ZXIgdG8gcmVnaXN0ZXIKKyAgICAgICAgdGhlIGtleWZy
YW1lcyBydWxlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6ZmluZE1hdGNoZWRL
ZXlmcmFtZXNSdWxlKToKKyAgICAgICAgRmlyc3RseSB0cnkgdG8gb2J0YWluIHRoZSBmaXJzdCBA
a2V5ZnJhbWVzIGRlY2xhcmVkIGluIGEgc2hhZG93IGRvbQorICAgICAgICBzdWJ0cmVlIG9yIGFu
IGVsZW1lbnQncyBzY29wZS4gSWYgbm8gQGtleWZyYW1lcyBydWxlIGlzIGZvdW5kLCBjaGVjawor
ICAgICAgICB3aGV0aGVyIHRoZSBnaXZlbiBlbGVtZW50IGlzIGluIGEgc2hhZG93IGRvbSBzdWJ0
cmVlIG9yIG5vdC4gSWYgdGhlCisgICAgICAgIGVsZW1lbnQgaXMgaW4gc29tZSBzaGFkb3cgZG9t
IHN1YnRyZWUsIGNoZWNrIGl0cyBzaGFkb3cgcm9vdCdzCisgICAgICAgIGFwcGx5LWF1dGhvci1z
dHlsZXMgZmxhZy4gSWYgbm8gYXBwbHktYXV0aG9yLXN0eWxlcyBmbGFnLAorICAgICAgICBubyBA
a2V5ZnJhbWVzIGluIGRvY3VtZW50KCkgc2hvdWxkIGJlIGxvb2tlZCB1cC4gSW4gdGhlIGNhc2Us
IGp1c3QKKyAgICAgICAgcmV0dXJuIDAuIElmIHRoZSBlbGVtZW50IGlzIGluIGRvY3VtZW50KCkg
b3IgaXRzIHNoYWRvdyByb290IGhhcworICAgICAgICBhcHBseS1hdXRob3Itc3R5bGVzIGZsYWcg
dHJ1ZSwgQGtleWZyYW1lcyBydWxlcyBkZWNsYXJlZCBpbiBkb2N1bWVudCgpLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24pOgorICAg
ICAgICBVc2UgZmluZE1hdGNoZWRLZXlmcmFtZXNSdWxlIHRvIG9idGFpbiBhIG1hdGNoZWQgQGtl
eWZyYW1lcyBydWxlLgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChT
dHlsZVJlc29sdmVyKToKKyAgICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6Cisg
ICAgICAgIEFkZGVkIHRvIHJlZ2lzdGVyIHRoZSBnaXZlbiBAa2V5ZnJhbWVzIHdpdGggaXRzIGFu
aW1hdGlvbiBuYW1lIGFuZAorICAgICAgICBpdHMgc2NvcGVkIGVsZW1lbnQuCisgICAgICAgIChX
ZWJDb3JlOjpmaW5kRmlyc3RBbmNlc3Rvck5vZGVJbkRvY3VtZW50KToKKyAgICAgICAgQSBoZWxw
ZXIgZnVuY3Rpb24gdG8gZmluZCB0aGUgZmlyc3QgYW5jZXN0b3Igbm9kZSBpbiBkb2N1bWVudCgp
IGJ5CisgICAgICAgIGdvaW5nIHVwIGZyb20gdGhlIGdpdmVuIGVsZW1lbnQuCisgICAgICAgIChX
ZWJDb3JlOjpwYXJlbnROb2RlRm9yU3R5bGUpOgorICAgICAgICBBIGhlbHBlciBmdW5jdGlvbiB0
byBvYnRhaW4gdGhlIGdpdmVuIG5vZGUncyBwYXJlbnQgb3IgaG9zdCBub2RlLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGFsc28gY2hlY2tzIGFwcGx5LWF1dGhvci1zdHlsZXMgZmxhZ3MgaWYgdGhl
IG5vZGUgaXMKKyAgICAgICAgYSBzaGFkb3cgcm9vdC4gSWYgbm8gYXBwbHktYXV0aG9yLXN0eWxl
cywganVzdCByZXR1cm4gMC4gVGhpcyBtZWFucywKKyAgICAgICAgbm8gbmVlZCB0byBnbyB1cC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6ZmluZE1hdGNoZWRLZXlmcmFt
ZXNSdWxlKToKKyAgICAgICAgQWRkZWQgdG8gb2J0YWluIHRoZSBmaXJzdCBtYXRjaGVkIHNjb3Bl
ZCBAa2V5ZnJhbWVzLiBUaGUgd2F5IHRvIGZpbmQKKyAgICAgICAgdGhlIGZpcnN0IG9uZSBpczog
KDEpIGZpcnN0bHksIGNoZWNraW5nIHRoZSBnaXZlbiBhbmltYXRpb24gbmFtZS4gSWYgbm8KKyAg
ICAgICAgc2NvcGVkIEBrZXlmcmFtZXMgd2hvc2UgYW5pbWF0aW9uIG5hbWUgaXMgdGhlIHNhbWUg
YXJlIHJlZ2lzdGVyZWQsCisgICAgICAgIGp1c3QgcmV0dXJuIDAuICgyKSBqdXN0IHdhbGtpbmcg
dXAgZnJvbSB0aGUgZ2l2ZW4gZWxlbWVudCB0bworICAgICAgICBkb2N1bWVudCByb290LiBJZiB0
aGUgY3VycmVudCBlbGVtZW50IGhhcyBhbnkgQGtleWZyYW1lcywgcmV0dXJucyB0aGUKKyAgICAg
ICAgQGtleWZyYW1lcy4gKDMpIGlmIHRoZSBnaXZlbiBlbGVtZW50IGlzIGluIHNvbWUgc2hhZG93
IGRvbSBzdWJ0cmVlLAorICAgICAgICBjaGVja2luZyBhcHBseS1hdXRob3Itc3R5bGVzIGZsYWcg
b2YgZWFjaCBzaGFkb3cgcm9vdCBkdXJpbmcgdGhlCisgICAgICAgIHRyYXZlcnNhbC4gSWYgYSBz
aGFkb3cgcm9vdCB3aG9zZSBhcHBseS1hdXRob3Itc3R5bGVzIGlzIGZvdW5kLAorICAgICAgICBz
dG9wIHRoZSB0cmF2ZXJzYWwuICg0KSBpZiB0aGUgZ2l2ZW4gZWxlbWVudCdzIHNoYWRvdyByb290
IGhhcworICAgICAgICBhcHBseS1hdXRob3Itc3R5bGVzIHRydWUsIGdvaW5nIHVwIHRvIHRoZSBh
bmNlc3RvciBub2RlIHdoaWNoIGlzIGluCisgICAgICAgIGRvY3VtZW50KCkgYW5kIGNoZWNraW5n
IHdoZXRoZXIgYW55IHNjb3BlZCBAa2V5ZnJhbWVzIGlzIGRlY2xhcmVkIG9yCisgICAgICAgIG5v
dC4gYy5mLiBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAv
c3BlYy9zaGFkb3cvaW5kZXguaHRtbCNkZm4tYXBwbHktYXV0aG9yLXN0eWxlcworICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTdHlsZVNjb3BlUmVzb2x2ZXIpOgorCiAyMDEyLTExLTA0ICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0
VHlwZSBzaG91bGQgaGF2ZSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZSBiZWhhdmlvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGY3NWY0ZjQyNWJkZmYxMDFjZjc2OTQxZDZhMmNjNTll
ZTEyMWYyYzEuLjlmY2E1YzUyNWFlNTAzODQ4MTU2ZjhhNDAzYTJlMjEwZDU0NDUyMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKQEAgLTMyNywxMSArMzI3LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRS
dWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5
RXZhbHUKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLT5mb250U2VsZWN0b3IoKS0+
YWRkRm9udEZhY2VSdWxlKGZvbnRGYWNlUnVsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlci0+aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChjaGlsZFJ1bGUtPmlzS2V5ZnJhbWVzUnVsZSgpICYmIHJlc29s
dmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhpcyBrZXlmcmFtZSBydWxl
IHRvIG91ciBzZXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRShCVUcgNzI0NjIp
OiBXZSBkb24ndCBhZGQgQGtleWZyYW1lIHJ1bGVzIG9mIHNjb3BlZCBzdHlsZSBzaGVldHMgZm9y
IHRoZSBtb21lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlci0+YWRkS2V5ZnJhbWVTdHlsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXMq
PihjaGlsZFJ1bGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRLZXlm
cmFtZVN0eWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZUtleWZyYW1lcyo+KGNoaWxkUnVsZSksIHNj
b3BlKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gLy8gZm9yIHJ1
bGVzCiAgICAgICAgICAgICB9IC8vIGlmIHJ1bGVzCkBAIC0zNDUsOSArMzQxLDcgQEAgdm9pZCBS
dWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25z
dCBNZWRpYVF1ZXJ5RXZhbHUKICAgICAgICAgICAgIHJlc29sdmVyLT5pbnZhbGlkYXRlTWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZSgpOwogICAgICAgICB9IGVsc2UgaWYgKHJ1bGUtPmlzS2V5ZnJhbWVz
UnVsZSgpICYmIHJlc29sdmVyKSB7CiAgICAgICAgICAgICAvLyBGSVhNRSAoQlVHIDcyNDYyKTog
V2UgZG9uJ3QgYWRkIEBrZXlmcmFtZSBydWxlcyBvZiBzY29wZWQgc3R5bGUgc2hlZXRzIGZvciB0
aGUgbW9tZW50LgotICAgICAgICAgICAgaWYgKHNjb3BlKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgcmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5bGUoc3RhdGljX2Nhc3Q8
U3R5bGVSdWxlS2V5ZnJhbWVzKj4ocnVsZSkpOworICAgICAgICAgICAgcmVzb2x2ZXItPmFkZEtl
eWZyYW1lU3R5bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlS2V5ZnJhbWVzKj4ocnVsZSksIHNjb3Bl
KTsKICAgICAgICAgfQogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICAgICAgZWxzZSBpZiAo
cnVsZS0+aXNSZWdpb25SdWxlKCkgJiYgcmVzb2x2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCBhYjE1NTNjYWUxMTlmYjEyNmQ3MTk3ODE5ZmU5OTk3Y2U0MDdlNWI3
Li40OTMwMjNjNDgyODYzZjU3MGQ4NzQzMmFkZGMxMTU0MGE4ZDFmMGZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC00NjQsOCArNDY0LDE3IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6cG9wUGFyZW50U2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290KQog
fQogCiAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCBzdHlsZSBzZXR0aW5nIGZ1bmN0aW9uIGZvciBr
ZXlmcmFtZSBzdHlsZXMKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNz
UmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRk
S2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSwgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUpCiB7CisjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkgfHwgRU5B
QkxFKFNIQURPV19ET00pCisgICAgaWYgKHNjb3BlICYmIG1fc2NvcGVSZXNvbHZlcikgeworICAg
ICAgICBtX3Njb3BlUmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5bGUocnVsZSwgc2NvcGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBpZiAoc2NvcGUpCisgICAgICAgIHJldHVy
bjsKKyNlbmRpZgogICAgIEF0b21pY1N0cmluZyBzKHJ1bGUtPm5hbWUoKSk7CiAgICAgbV9rZXlm
cmFtZXNSdWxlTWFwLnNldChzLmltcGwoKSwgcnVsZSk7CiB9CkBAIC0xNjM5LDYgKzE2NDgsMjQg
QEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFt
ZShjb25zdCBSZW5kZXJTdHlsZSogZWxlbWUKICAgICByZXR1cm4gbV9zdHlsZS5yZWxlYXNlKCk7
CiB9CiAKK2NvbnN0IFN0eWxlUnVsZUtleWZyYW1lcyogU3R5bGVSZXNvbHZlcjo6ZmluZE1hdGNo
ZWRLZXlmcmFtZXNSdWxlKGNvbnN0IEF0b21pY1N0cmluZyYgYW5pbWF0aW9uTmFtZSwgRWxlbWVu
dCogZSkKK3sKKyNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKSB8fCBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICBpZiAobV9zY29wZVJlc29sdmVyKSB7CisgICAgICAgIGlmIChjb25zdCBTdHlsZVJ1bGVL
ZXlmcmFtZXMqIHJ1bGUgPSBtX3Njb3BlUmVzb2x2ZXItPmZpbmRNYXRjaGVkS2V5ZnJhbWVzUnVs
ZShhbmltYXRpb25OYW1lLCBlKSkKKyAgICAgICAgICAgIHJldHVybiBydWxlOworICAgICAgICBp
ZiAoZS0+aXNJblNoYWRvd1RyZWUoKSAmJiAhZS0+c2hhZG93Um9vdCgpLT5hcHBseUF1dGhvclN0
eWxlcygpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oZSk7CisjZW5kaWYKKyAgICBLZXlmcmFtZXNSdWxlTWFwOjppdGVyYXRvciBpdCA9IG1f
a2V5ZnJhbWVzUnVsZU1hcC5maW5kKGFuaW1hdGlvbk5hbWUuaW1wbCgpKTsKKyAgICBpZiAoaXQg
IT0gbV9rZXlmcmFtZXNSdWxlTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmdl
dCgpOworICAgIHJldHVybiAwOworfQorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5
bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqIGUsIGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5
bGUsIEtleWZyYW1lTGlzdCYgbGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7CkBAIC0xNjQ5LDEy
ICsxNjc2LDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRp
b24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUqIGVsCiAKICAgICBtX2tleWZyYW1lc1J1
bGVNYXAuY2hlY2tDb25zaXN0ZW5jeSgpOwogCi0gICAgS2V5ZnJhbWVzUnVsZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX2tleWZyYW1lc1J1bGVNYXAuZmluZChsaXN0LmFuaW1hdGlvbk5hbWUoKS5pbXBs
KCkpOwotICAgIGlmIChpdCA9PSBtX2tleWZyYW1lc1J1bGVNYXAuZW5kKCkpCisgICAgY29uc3Qg
U3R5bGVSdWxlS2V5ZnJhbWVzKiBrZXlmcmFtZXNSdWxlID0gZmluZE1hdGNoZWRLZXlmcmFtZXNS
dWxlKGxpc3QuYW5pbWF0aW9uTmFtZSgpLCBlKTsKKyAgICBpZiAoIWtleWZyYW1lc1J1bGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IFN0eWxlUnVsZUtleWZyYW1lcyoga2V5ZnJhbWVz
UnVsZSA9IGl0LT52YWx1ZS5nZXQoKTsKLQogICAgIC8vIENvbnN0cnVjdCBhbmQgcG9wdWxhdGUg
dGhlIHN0eWxlIGZvciBlYWNoIGtleWZyYW1lCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHls
ZUtleWZyYW1lPiA+JiBrZXlmcmFtZXMgPSBrZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5ZnJhbWVzLnNpemUoKTsgKytpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBmNzY5OTM0NDI1MTEzOTlmNzliYWVlNzdjNGQ3
ZWQzMzc1MDYzNzUyLi45NWJlNTFiMjU4Y2U5NDQ5ZmY1NjYwZWQzMjY2ZTM4YmM2ZGI3MTkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBTdHlsZVNoYXJpbmdCZWhhdmlvciA9IEFsbG93
U3R5bGVTaGFyaW5nLAogICAgICAgICBSdWxlTWF0Y2hpbmdCZWhhdmlvciA9IE1hdGNoQWxsUnVs
ZXMsIFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZyA9IDApOwogCisgICAgY29uc3QgU3R5
bGVSdWxlS2V5ZnJhbWVzKiBmaW5kTWF0Y2hlZEtleWZyYW1lc1J1bGUoY29uc3QgQXRvbWljU3Ry
aW5nJiwgRWxlbWVudCopOwogICAgIHZvaWQga2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oRWxl
bWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiwgS2V5ZnJhbWVMaXN0Jik7CiAKICAgICBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQsIEVsZW1lbnQq
LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwpAQCAtMjUzLDcgKzI1NCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoKSB7IG1fY2hlY2tlci5hbGxWaXNpdGVk
U3RhdGVDaGFuZ2VkKCk7IH0KICAgICB2b2lkIHZpc2l0ZWRTdGF0ZUNoYW5nZWQoTGlua0hhc2gg
dmlzaXRlZEhhc2gpIHsgbV9jaGVja2VyLnZpc2l0ZWRTdGF0ZUNoYW5nZWQodmlzaXRlZEhhc2gp
OyB9CiAKLSAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlm
cmFtZXM+KTsKKyAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVL
ZXlmcmFtZXM+LCBjb25zdCBDb250YWluZXJOb2RlKik7CiAKICAgICBib29sIGNoZWNrUmVnaW9u
U3R5bGUoRWxlbWVudCogcmVnaW9uRWxlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2NvcGVSZXNvbHZlci5jcHAKaW5kZXggNWZmMmIzZTBiMTE1NDk5NDQ3ZTIxYzg2ZjU4ZjY0NjEz
MDFjZjBmZC4uMzk1NzkxMDg5YzEyYzRjYjFmNDUxMDM0YzA2ODZkNTY2NWU2YjNmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKQEAgLTM5LDYgKzM5LDggQEAK
ICNpbmNsdWRlICJSdWxlU2V0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUg
IldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJXZWJLaXRDU1NLZXlm
cmFtZVJ1bGUuaCIKKyNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCiAjaW5jbHVk
ZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVt
ZW50YXRpb25WZWN0b3IuaD4KQEAgLTIzNSwxMiArMjM3LDY1IEBAIHZvaWQgU3R5bGVTY29wZVJl
c29sdmVyOjptYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8UnVs
ZVNldCo+CiAgICAgfQogfQogCit2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVT
dHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSwgY29uc3QgQ29udGFpbmVy
Tm9kZSogc2NvcGUpCit7CisgICAgQXRvbWljU3RyaW5nIHMocnVsZS0+bmFtZSgpKTsKKyAgICBO
YW1lZFNjb3BlZEtleWZyYW1lc1J1bGVNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2tleWZy
YW1lc1J1bGVNYXAuYWRkKHMuaW1wbCgpLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhZG9wdFB0cihu
ZXcgU2NvcGVkS2V5ZnJhbWVzUnVsZU1hcCk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS0+c2V0KHNjb3BlLCBydWxlKTsKK30KKworaW5saW5lIGNvbnN0IENvbnRhaW5lck5vZGUqIGZp
bmRGaXJzdEFuY2VzdG9yTm9kZUluRG9jdW1lbnQoY29uc3QgQ29udGFpbmVyTm9kZSogbm9kZSkK
K3sKKyAgICBmb3IgKDsgbm9kZSAmJiBub2RlLT5pc0luU2hhZG93VHJlZSgpOyBub2RlID0gbm9k
ZS0+c2hhZG93SG9zdCgpKSB7IH0KKyAgICByZXR1cm4gbm9kZTsKK30KKworaW5saW5lIGNvbnN0
IENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGVGb3JTdHlsZShjb25zdCBDb250YWluZXJOb2RlKiBu
b2RlKQoreworICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiAhdG9TaGFkb3dSb290KG5v
ZGUpLT5hcHBseUF1dGhvclN0eWxlcygpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworfQorCitTdHlsZVJ1bGVLZXlmcmFtZXMqIFN0eWxl
U2NvcGVSZXNvbHZlcjo6ZmluZE1hdGNoZWRLZXlmcmFtZXNSdWxlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAobV9r
ZXlmcmFtZXNSdWxlTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBOYW1l
ZFNjb3BlZEtleWZyYW1lc1J1bGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9rZXlmcmFtZXNSdWxlTWFw
LmZpbmQoYW5pbWF0aW9uTmFtZS5pbXBsKCkpOworICAgIGlmIChpdCA9PSBtX2tleWZyYW1lc1J1
bGVNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgU2NvcGVkS2V5ZnJhbWVzUnVs
ZU1hcCogbWFwID0gaXQtPnZhbHVlLmdldCgpOworCisgICAgaWYgKGVsZW1lbnQtPmlzSW5TaGFk
b3dUcmVlKCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IGVs
ZW1lbnQ7IHNjb3BlICYmIHNjb3BlLT5pc0luU2hhZG93VHJlZSgpOyBzY29wZSA9IHBhcmVudE5v
ZGVGb3JTdHlsZShzY29wZSkpIHsKKyAgICAgICAgICAgIFNjb3BlZEtleWZyYW1lc1J1bGVNYXA6
Oml0ZXJhdG9yIGl0ID0gbWFwLT5maW5kKHNjb3BlKTsKKyAgICAgICAgICAgIGlmIChpdCAhPSBt
YXAtPmVuZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFlbGVtZW50LT5zaGFkb3dSb290KCktPmFwcGx5QXV0aG9yU3R5
bGVzKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb25zdCBDb250YWlu
ZXJOb2RlKiBzY29wZSA9IGZpbmRGaXJzdEFuY2VzdG9yTm9kZUluRG9jdW1lbnQoZWxlbWVudCk7
CisgICAgZm9yICg7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsK
KyAgICAgICAgU2NvcGVkS2V5ZnJhbWVzUnVsZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmZpbmQo
c2NvcGUpOworICAgICAgICBpZiAoaXQgIT0gbWFwLT5lbmQoKSkKKyAgICAgICAgICAgIHJldHVy
biBpdC0+dmFsdWUuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiB2b2lkIFN0eWxl
U2NvcGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9hdXRob3JTdHlsZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3RhY2spOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fYXRIb3N0UnVsZXMpOworICAgIGluZm8uYWRkTWVtYmVyKG1fa2V5ZnJh
bWVzUnVsZU1hcCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNjb3BlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIu
aAppbmRleCAzYmUzZmY0ZjcwYzczNzViZDAxNDI2YTAwYmE0MjQxMjg0NjJjYzBlLi44MWIyYTAw
ZTYwMmMyODZjYmY5YzA1Y2UyZWRkMTg1ODY3YmEwM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2NvcGVSZXNvbHZlci5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBSdWxlU2V0OwogY2xhc3MgU2hhZG93Um9vdDsKIGNsYXNzIFN0eWxlUnVsZUhvc3Q7CitjbGFz
cyBTdHlsZVJ1bGVLZXlmcmFtZXM7CiBzdHJ1Y3QgUnVsZUZlYXR1cmVTZXQ7CiAKICNpZiBFTkFC
TEUoU1RZTEVfU0NPUEVEKSB8fCBFTkFCTEUoU0hBRE9XX0RPTSkKQEAgLTc5LDYgKzgwLDkgQEAg
cHVibGljOgogICAgIGJvb2wgc3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcyhj
b25zdCBFbGVtZW50Kik7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50Kiwg
VmVjdG9yPFJ1bGVTZXQqPiYgbWF0Y2hlZFJ1bGVzKTsKIAorICAgIHZvaWQgYWRkS2V5ZnJhbWVT
dHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4sIGNvbnN0IENvbnRhaW5lck5vZGUq
KTsKKyAgICBTdHlsZVJ1bGVLZXlmcmFtZXMqIGZpbmRNYXRjaGVkS2V5ZnJhbWVzUnVsZShjb25z
dCBBdG9taWNTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGNvbnN0IEVsZW1lbnQqKTsKKwogICAgIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRl
OgpAQCAtOTksNiArMTAzLDEwIEBAIHByaXZhdGU6CiAgICAgaW50IG1fc3RhY2tQYXJlbnRCb3Vu
ZHNJbmRleDsKIAogICAgIFNjb3BlZFJ1bGVTZXRNYXAgbV9hdEhvc3RSdWxlczsKKworICAgIHR5
cGVkZWYgSGFzaE1hcDxjb25zdCBDb250YWluZXJOb2RlKiwgUmVmUHRyPFN0eWxlUnVsZUtleWZy
YW1lcz4gPiBTY29wZWRLZXlmcmFtZXNSdWxlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9t
aWNTdHJpbmdJbXBsKiwgT3duUHRyPFNjb3BlZEtleWZyYW1lc1J1bGVNYXA+ID4gTmFtZWRTY29w
ZWRLZXlmcmFtZXNSdWxlTWFwOworICAgIE5hbWVkU2NvcGVkS2V5ZnJhbWVzUnVsZU1hcCBtX2tl
eWZyYW1lc1J1bGVNYXA7CiB9OwogCiBpbmxpbmUgYm9vbCBTdHlsZVNjb3BlUmVzb2x2ZXI6OmVu
c3VyZVN0YWNrQ29uc2lzdGVuY3koQ29udGFpbmVyTm9kZSogcGFyZW50KQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY2MmY3
MDIxMzVkZTI3M2E5YThkNmExOGMzZDk1N2EyZGEyNjMxYjEuLjU5ZDUwNTNlZTM2M2NlZjAzNDhl
Y2YwOTY5MTU0NzA3ZGUyMWQ2YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMS0wNCAg
VGFrYXNoaSBTYWthbW90byAgPHRhc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgPHN0eWxlIHNj
b3BlZD46IEltcGxlbWVudCBzY29wZWQgQGtleWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zaGFkb3dy
b290LWtleWZyYW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zaGFkb3dyb290LWtleWZyYW1lcy5odG1sOiBBZGRlZC4KKyAgICAgICAgU2lu
Y2UgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQgZG9lc24ndCBzdXBwb3J0IGVs
ZW1lbnRzCisgICAgICAgIGluIHNoYWRvdyBkb20gc3VidHJlZXMsIHRoZSBsYXlvdXQgdGVzdHMg
Y2hlY2sgb25seSB0aGUgcmVzdWx0CisgICAgICAgICogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0
eWxlLXNjb3BlZC1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWtleWZyYW1lcy5odG1sOiBBZGRlZC4KKwog
MjAxMi0xMS0wNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMzQxNi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zaGFkb3dyb290LWtleWZyYW1lcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1r
ZXlmcmFtZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZDFmMDU1MWI3MTUwODc4NDE1NDdh
ZjdmY2UxMWZlMTI1NDFkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorUEFTUyBnZXRCYWNrZ3JvdW5kQ29sb3Ioc2hhZG93Um9vdFdpdGhLZXlmcmFtZS5n
ZXRFbGVtZW50QnlJZCgnYm94JykpIGlzICJyZ2IoMCwgMCwgMjU1KSIKK1BBU1MgZ2V0QmFja2dy
b3VuZENvbG9yKHNoYWRvd1Jvb3RXaXRob3V0S2V5ZnJhbWUuZ2V0RWxlbWVudEJ5SWQoJ2JveCcp
KSBpcyAicmdiKDI1NSwgMCwgMCkiCitQQVNTIGdldEJhY2tncm91bmRDb2xvcihzaGFkb3dSb290
V2l0aEFwcGx5QXV0aG9yU3R5bGVzLmdldEVsZW1lbnRCeUlkKCdib3gnKSkgaXMgInJnYigwLCAx
MjgsIDApIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQv
c2hhZG93cm9vdC1rZXlmcmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNj
b3BlZC9zaGFkb3dyb290LWtleWZyYW1lcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiYTM1NmUwYzNmNWI2
OWE5YmY0YTVhMjJlMjFiYTA5YTIxMjRlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc2hhZG93cm9vdC1rZXlmcmFtZXMuaHRtbApAQCAtMCww
ICsxLDU5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitALXdl
YmtpdC1rZXlmcmFtZXMgYW5pbSB7CisgICAgZnJvbSB7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IHJlZDsKKyAgICB9CisgICAgdG8geworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsKKyAgICB9Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZDEi
PjwvZGl2PgorICA8ZGl2IGlkPSJkMiI+PC9kaXY+CisgIDxkaXYgaWQ9ImQzIj48L2Rpdj4KKyAg
PGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIGdldEJhY2tncm91
bmRDb2xvcihlbGVtZW50KSB7CisgICAgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVs
ZW1lbnQpLmJhY2tncm91bmRDb2xvcjsKK30KKwordmFyIHNoYWRvd1Jvb3RXaXRoS2V5ZnJhbWUg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZDEiKSk7Citz
aGFkb3dSb290V2l0aEtleWZyYW1lLmlubmVySFRNTCA9ICc8c3R5bGU+QC13ZWJraXQta2V5ZnJh
bWVzICJhbmltIiB7JyArCisgICAgJ2Zyb20geyBiYWNrZ3JvdW5kLWNvbG9yOnJlZDsgfSB0byB7
IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0gfScgKworICAgICcjYm94IHsgaGVpZ2h0OiAxMDBw
eDsgd2lkdGg6IDEwMHB4OyBiYWNrZ3JvdW5kOiByZWQ7ICcgKworICAgICctd2Via2l0LWFuaW1h
dGlvbjogImFuaW0iIDAuNXMgYm90aDsgfTwvc3R5bGU+JyArCisgICAgJzxkaXYgaWQ9ImJveCI+
PC9kaXY+JzsKKwordmFyIHNoYWRvd1Jvb3RXaXRob3V0S2V5ZnJhbWUgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZDIiKSk7CitzaGFkb3dSb290V2l0aG91
dEtleWZyYW1lLmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CitzaGFkb3dSb290V2l0aG91dEtl
eWZyYW1lLmlubmVySFRNTCA9ICc8c3R5bGU+JyArCisgICAgJyNib3ggeyBoZWlnaHQ6IDEwMHB4
OyB3aWR0aDogMTAwcHg7IGJhY2tncm91bmQ6IHJlZDsgJyArCisgICAgJy13ZWJraXQtYW5pbWF0
aW9uOiAiYW5pbSIgMC41cyBib3RoOyB9PC9zdHlsZT4nICsKKyAgICAnPGRpdiBpZD0iYm94Ij48
L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdFdpdGhBcHBseUF1dGhvclN0eWxlcyA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkMyIpKTsKK3NoYWRvd1Jvb3RX
aXRoQXBwbHlBdXRob3JTdHlsZXMuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworc2hhZG93Um9v
dFdpdGhBcHBseUF1dGhvclN0eWxlcy5pbm5lckhUTUwgPSAnPHN0eWxlPicgKworICAgICcjYm94
IHsgaGVpZ2h0OiAxMDBweDsgd2lkdGg6IDEwMHB4OyBiYWNrZ3JvdW5kOiByZWQ7ICcgKworICAg
ICctd2Via2l0LWFuaW1hdGlvbjogImFuaW0iIDAuNXMgYm90aDsgfTwvc3R5bGU+JyArCisgICAg
JzxkaXYgaWQ9ImJveCI+PC9kaXY+JzsKKword2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgc2hvdWxkQmUoImdldEJhY2tncm91bmRDb2xvcihzaGFkb3dSb290V2l0aEtleWZyYW1l
LmdldEVsZW1lbnRCeUlkKCdib3gnKSkiLCAnInJnYigwLCAwLCAyNTUpIicpOworICAgIHNob3Vs
ZEJlKCJnZXRCYWNrZ3JvdW5kQ29sb3Ioc2hhZG93Um9vdFdpdGhvdXRLZXlmcmFtZS5nZXRFbGVt
ZW50QnlJZCgnYm94JykpIiwgJyJyZ2IoMjU1LCAwLCAwKSInKTsKKyAgICBzaG91bGRCZSgiZ2V0
QmFja2dyb3VuZENvbG9yKHNoYWRvd1Jvb3RXaXRoQXBwbHlBdXRob3JTdHlsZXMuZ2V0RWxlbWVu
dEJ5SWQoJ2JveCcpKSIsICcicmdiKDAsIDEyOCwgMCkiJyk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIDEwMDApOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWtleWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWtleWZyYW1lcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhNzRjNjlmMzg4ZWVlMDcwOTQ3NjYzZjk2NzZlNWE3NDM5
Mjc4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BB
U1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4zcyBzYXcgc29tZXRo
aW5nIGNsb3NlIHRvOiA0MDAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1l
bnQgYXQgMC43cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA1MDAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1rZXlmcmFtZXMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQta2V5ZnJh
bWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMyYjhmNDgxYTc0NWQzNTRjMjZiZjBkZTE3MDZjZGM5NTRh
ZTU0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9zdHlsZS1zY29wZWQta2V5ZnJhbWVzLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFkb2N0eXBl
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorI2JveCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIGxlZnQ6IDA7CisgICAgdG9wOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4
OworICAgIHdpZHRoOiAxMDBweDsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7CisgICAgLXdlYmtpdC1h
bmltYXRpb24tZHVyYXRpb246IDFzOworICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5j
dGlvbjogbGluZWFyOworICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ICJhbmltIjsKK30KKzwv
c3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vYW5pbWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0
aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdj4KKyAgICA8ZGl2PgorICAgICAg
PHN0eWxlIHNjb3BlZD4KKyAgICAgIEAtd2Via2l0LWtleWZyYW1lcyAiYW5pbSIgeworICAgICAg
ICBmcm9tIHsgbGVmdDogNTBweDsgfQorICAgICAgICAyMCUgIHsgbGVmdDogMTAwcHg7IH0KKyAg
ICAgICAgNDAlICB7IGxlZnQ6IDEwMHB4OyB9CisgICAgICAgIDYwJSAgeyBsZWZ0OiAyMDBweDsg
fQorICAgICAgICA4MCUgIHsgbGVmdDogMjAwcHg7IH0KKyAgICAgICAgdG8gICB7IGxlZnQ6IDMw
MHB4OyB9CisgICAgICB9CisgICAgICA8L3N0eWxlPgorICAgICAgPGRpdiBpZD0iZDEiPgorCTxz
dHlsZSBzY29wZWQ+CisgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyAiYW5pbSIgeworICAgICAg
ICAgIGZyb20geyBsZWZ0OiAzNTBweDsgfQorICAgICAgICAgIDIwJSAgeyBsZWZ0OiA0MDBweDsg
fQorICAgICAgICAgIDQwJSAgeyBsZWZ0OiA0MDBweDsgfQorICAgICAgICAgIDYwJSAgeyBsZWZ0
OiA1MDBweDsgfQorICAgICAgICAgIDgwJSAgeyBsZWZ0OiA1MDBweDsgfQorICAgICAgICAgIHRv
ICAgeyBsZWZ0OiA2MDBweDsgfQorICAgICAgICB9CisJPC9zdHlsZT4KKyAgICAgIDwvZGl2Pgor
ICAgIDwvZGl2PgorICAgIDxzdHlsZSBzY29wZWQ+CisgICAgQC13ZWJraXQta2V5ZnJhbWVzICJh
bmltIiB7CisgICAgICAgIGZyb20geyBsZWZ0OiA2NTBweDsgfQorICAgICAgICAyMCUgIHsgbGVm
dDogNzAwcHg7IH0KKyAgICAgICAgNDAlICB7IGxlZnQ6IDcwMHB4OyB9CisgICAgICAgIDYwJSAg
eyBsZWZ0OiA4MDBweDsgfQorICAgICAgICA4MCUgIHsgbGVmdDogODAwcHg7IH0KKyAgICAgICAg
dG8gICB7IGxlZnQ6IDkwMHB4OyB9CisgICAgfQorICAgIDwvc3R5bGU+CisgIDwvZGl2PgorICA8
ZGl2IGlkPSJyZXN1bHQiPgorICA8L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZDEgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjZDEiKTsKK3ZhciBib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKK2JveC5pZCA9ICJib3giOworZDEuYXBwZW5kQ2hpbGQoYm94KTsKKworY29uc3QgZXhw
ZWN0ZWRWYWx1ZXMgPSBbCisgICAgLy8gW2FuaW1hdGlvbi1uYW1lLCB0aW1lLCBlbGVtZW50LWlk
LCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFsdWUsIHRvbGVyYW5jZV0KKyAgICBbImFuaW0iLCAwLjMs
ICJib3giLCAibGVmdCIsIDQwMCwgMV0sCisgICAgWyJhbmltIiwgMC43LCAiYm94IiwgImxlZnQi
LCA1MDAsIDFdLAorXTsKKworcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>