<?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>139732</bug_id>
          
          <creation_ts>2014-12-17 09:30:49 -0800</creation_ts>
          <short_desc>CSSKeyframesRule::findRule() and deleteRule() should delete the last matching rule, not the first</short_desc>
          <delta_ts>2015-01-27 12:15:37 -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>Animations</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Sylvain Galineau">galineau</assigned_to>
          <cc>dino</cc>
    
    <cc>galineau</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1056344</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-12-17 09:30:49 -0800</bug_when>
    <thetext>css-wg resolved that findRule and deleteRule should match the last rule, not the first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056345</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-12-17 09:35:48 -0800</bug_when>
    <thetext>Also need to make sure we normalize whitespace, and allow &quot;100.0%&quot; to match &quot;100%&quot; etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061010</commentid>
    <comment_count>2</comment_count>
      <attachid>244565</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2015-01-13 17:27:31 -0800</bug_when>
    <thetext>Created attachment 244565
fix.patch

This patch:
- Changes the stored representation of StyleKeyframe key values from a String to a Vector&lt;double&gt; (per FIXME comment)
- Makes sure findRule/deleteRule apply to the last specified rule with a matching keyframe selector

I would also note the following: I made StyleKeyframe::parseKeyString() a public static since StyleRuleKeyframes::findKeyframeIndex() also needs to parse the findRule/deleteRule String argument into a Vector&lt;double&gt;. It feels like the wrong place for this parsing helper though. On the Blink side, they have moved this to CSSParser. Thoughts on doing this here as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061218</commentid>
    <comment_count>3</comment_count>
      <attachid>244565</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-01-14 10:40:36 -0800</bug_when>
    <thetext>Comment on attachment 244565
fix.patch

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

&gt; Source/WebCore/css/CSSKeyframeRule.cpp:81
&gt; +String StyleKeyframe::keyText() const

I agree that this could be moved to CSSParser.

&gt; Source/WebCore/css/CSSKeyframeRule.cpp:99
&gt; +}
&gt; +    
&gt; +
&gt; +    

Nit: few extra blank lines here

&gt; Source/WebCore/css/CSSKeyframesRule.cpp:81
&gt; +    for (size_t i = m_keyframes.size(); i--; ) {

Nit: space after the i--;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061219</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-01-14 10:41:11 -0800</bug_when>
    <thetext>All good. If you have time to make the changes and upload a patch before you disappear, I&apos;ll mark it cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061384</commentid>
    <comment_count>5</comment_count>
      <attachid>244565</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-14 16:06:44 -0800</bug_when>
    <thetext>Comment on attachment 244565
fix.patch

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

&gt; Source/WebCore/css/CSSKeyframeRule.cpp:64
&gt; +        if (equalIgnoringCase(cur, &quot;from&quot;))

It would be better if this used an equalIgnoringASCIICase function. The standard equalIgnoringCase function is overkill since it implements the entire Unicode case folding algorithm.

Is this bug fix covered by new tests? I didn’t see any new testing for this, nor was there any mention of this fix in the bug title.

&gt; Source/WebCore/css/CSSKeyframeRule.cpp:66
&gt; +        else if (equalIgnoringCase(cur, &quot;to&quot;))

Same comments as above.

&gt; Source/WebCore/css/CSSKeyframeRule.cpp:83
&gt; +    ASSERT(!m_keys.isEmpty());

Do we really need this assertion? Would it be bad to have a function that returns an empty string if m_keys is empty?

&gt; Source/WebCore/css/CSSKeyframeRule.h:48
&gt; +    void setKeyText(const String&amp; s) { parseKeyString(s, m_keys); }

Better to use the word “text” rather than “s” for this argument name.

&gt; Source/WebCore/css/CSSKeyframeRule.h:57
&gt; +    static void parseKeyString(const String&amp;, Vector&lt;double&gt;&amp; keys);

This should be changed to just use a return value, not an out argument. We used to think we needed out arguments for things like this before we better understood the return value optimization and move semantics. Now it’s just peculiar that this is an out argument.

&gt; Source/WebCore/css/CSSKeyframeRule.h:63
&gt; +    Vector&lt;double&gt; m_keys;

Seems like we should consider some inline capacity to save memory here. Maybe not use a Vector at all, since it has additional overhead to support resizing.

&gt; Source/WebCore/css/CSSKeyframesRule.cpp:79
&gt; +    if (!keys.size())
&gt; +        return -1;

No need for this extra code. The function would work fine without it.

&gt;&gt; Source/WebCore/css/CSSKeyframesRule.cpp:81
&gt;&gt; +    for (size_t i = m_keyframes.size(); i--; ) {
&gt; 
&gt; Nit: space after the i--;

I think that space is good formatting; helps point out there is no third clause in the for loop.

&gt; Source/WebCore/css/StyleResolver.cpp:902
&gt; +        const Vector&lt;double&gt;&amp; keys = keyframe-&gt;keys();
&gt;          for (size_t keyIndex = 0; keyIndex &lt; keys.size(); ++keyIndex) {
&gt;              keyframeValue.setKey(keys[keyIndex]);

This should be a modern for loop:

    for (auto&amp; key : keyframe-&gt;keys()) {
        keyframeValue.setKey(key);

Way nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061611</commentid>
    <comment_count>6</comment_count>
      <attachid>244708</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2015-01-15 13:06:44 -0800</bug_when>
    <thetext>Created attachment 244708
fix.patch

Patch updated per feedback. Some comments:

- I moved the StyleKeyframe::parseKeyString() static to CSSParser::parseKeyframeSelector; per Darin&apos;s suggestion I made it return a Vector&lt;double&gt; instead of modifying an out argument. I&apos;d note this causes a copy in StyleKeyframe::setKeyText() that we did not have before. StyleRuleKeyframes::findKeyframeIndex is able to use rvalue ref &amp; move semantics though.
- Regarding adding an inline capacity for this Vector&lt;double&gt; I must admit I do not know what a good size is. Personal experience suggests most keyframe selectors rarely have more than a handful of values but tool/dynamically-generated rules may go past this and I have no data to judge how often this happens in the wild. I have left this unspecified in this patch.
- Last, regarding equalIgnoringASCIICase; I assume we are talking about the SelectorChecker helpers and pulled that into CSSParser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064583</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-01-27 11:39:35 -0800</bug_when>
    <thetext>Committed r179197: &lt;http://trac.webkit.org/changeset/179197&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064584</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-01-27 11:40:26 -0800</bug_when>
    <thetext>There were a few things that Darin mentioned that had not been updated in the latest patch - I fixed them manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064602</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-01-27 12:15:37 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r179197: &lt;http://trac.webkit.org/changeset/179197&gt;

It broke the Windows build:
https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/66961</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244565</attachid>
            <date>2015-01-13 17:27:31 -0800</date>
            <delta_ts>2015-01-15 13:06:44 -0800</delta_ts>
            <desc>fix.patch</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>18500</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOWE5N2FjLi5lZDAyZjliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDEt
MTMgIHN5bHZhaW4tZ2FsaW5lYXUgIDxnYWxpbmVhdUBhZG9iZS5jb20+CisKKyAgICAgICAgQ1NT
S2V5ZnJhbWVzUnVsZTo6ZmluZFJ1bGUoKSBhbmQgZGVsZXRlUnVsZSgpIHNob3VsZCBkZWxldGUg
dGhlIGxhc3QgbWF0Y2hpbmcgcnVsZSwgbm90IHRoZSBmaXJzdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NzMyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIGtleWZyYW1lcyBP
TSB0ZXN0cyB0byBjaGVjayBmb3IgZmluZFJ1bGUvZGVsZXRlUnVsZSBtYXRjaGluZyBvcmRlciBp
LmUuIGZpbmQvZGVsZXRlIGxhc3Qgc3BlY2lmaWVkIHJ1bGUuCisKKyAgICAgICAgKiBhbmltYXRp
b25zL2tleWZyYW1lcy1ydWxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL2tl
eWZyYW1lcy1ydWxlLmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy91bnByZWZpeGVkLWtleWZy
YW1lcy1ydWxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL3VucHJlZml4ZWQt
a2V5ZnJhbWVzLXJ1bGUuaHRtbDoKKwogMjAxNS0wMS0xMyAgQW5kcnplaiBCYWRvd3NraSAgPGEu
YmFkb3dza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgQVg6IFtBVEtdIE1hcmsgYWNjZXNzaWJp
bGl0eS90YWJsZS13aXRoLWZvb3Rlci1zZWN0aW9uLWFib3ZlLWJvZHkuaHRtbCBhcyBhIHN1aXRh
YmxlIHRlc3QgZm9yIEVGTCBhbmQgR1RLCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL2tleWZyYW1lcy1ydWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
a2V5ZnJhbWVzLXJ1bGUtZXhwZWN0ZWQudHh0CmluZGV4IGZjOTQ5ZTEuLmNmMDAwNjcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXJ1bGUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXJ1bGUtZXhwZWN0ZWQudHh0
CkBAIC03NSw2ICs3NSw0MSBAQCBQQVNTIHJ1bGVzMi5pdGVtKDApLnR5cGUgaXMgd2luZG93LkNT
U1J1bGUuS0VZRlJBTUVfUlVMRQogUEFTUyBydWxlczIuaXRlbSgwKS5rZXlUZXh0IGlzICcwJScK
IFBBU1MgcnVsZXMyLml0ZW0oMSkua2V5VGV4dCBpcyAnMTAwJScKIAorZmluZFJ1bGUgbWF0Y2hp
bmcgb3JkZXI6IGZyb20gbGFzdCB0byBmaXJzdCBzcGVjaWZpZWQKK1BBU1Mga2V5ZnJhbWVzRmlu
ZExhc3QudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRVNfUlVMRQorUEFTUyBrZXlmcmFt
ZXNGaW5kTGFzdC5uYW1lIGlzICd0ZXN0LWZpbmQtbGFzdCcKK1BBU1MgcnVsZS50eXBlIGlzIHdp
bmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NUZXh0IGlzICcxMCUgeyBs
ZWZ0OiAxMHB4OyB9JworUEFTUyBydWxlLnR5cGUgaXMgd2luZG93LkNTU1J1bGUuS0VZRlJBTUVf
UlVMRQorUEFTUyBydWxlLmNzc1RleHQgaXMgJzEwJSB7IGxlZnQ6IDEwcHg7IH0nCitQQVNTIHJ1
bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitGQUlMIHJ1bGUuY3NzVGV4
dCBzaG91bGQgYmUgMTAlLDIwJSAgeyBsZWZ0OiAxMHB4OyB9LiBXYXMgMTAlLDIwJSB7IGxlZnQ6
IDEwMjBweDsgfS4KK1BBU1MgcnVsZS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JV
TEUKK0ZBSUwgcnVsZS5jc3NUZXh0IHNob3VsZCBiZSAxMCUsMjAlICB7IGxlZnQ6IDEwcHg7IH0u
IFdhcyAxMCUsMjAlIHsgbGVmdDogMTAyMHB4OyB9LgorUEFTUyBydWxlIGlzIG51bGwKK1BBU1Mg
cnVsZS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NU
ZXh0IGlzICcwJSB7IGxlZnQ6IDBweDsgfScKK1BBU1MgcnVsZS50eXBlIGlzIHdpbmRvdy5DU1NS
dWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NUZXh0IGlzICcxMDAlIHsgbGVmdDogMTAw
cHg7IH0nCisKK2RlbGV0ZVJ1bGUgbWF0Y2hpbmcgb3JkZXI6IGZyb20gbGFzdCB0byBmaXJzdCBz
cGVjaWZpZWQKK1BBU1Mga2V5ZnJhbWVzRGVsZXRlTGFzdC50eXBlIGlzIHdpbmRvdy5DU1NSdWxl
LktFWUZSQU1FU19SVUxFCitQQVNTIGtleWZyYW1lc0RlbGV0ZUxhc3QubmFtZSBpcyAndGVzdC1k
ZWxldGUtbGFzdCcKK1BBU1MgcnVsZXNEZWxldGVMYXN0Lmxlbmd0aCBpcyA4CitQQVNTIHJ1bGVz
RGVsZXRlTGFzdC5sZW5ndGggaXMgNworUEFTUyBydWxlLnR5cGUgaXMgd2luZG93LkNTU1J1bGUu
S0VZRlJBTUVfUlVMRQorUEFTUyBydWxlLmNzc1RleHQgaXMgJzEwJSB7IGxlZnQ6IDEwcHg7IH0n
CitQQVNTIHJ1bGVzRGVsZXRlTGFzdC5sZW5ndGggaXMgNgorUEFTUyBydWxlLnR5cGUgaXMgd2lu
ZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRQorUEFTUyBydWxlLmNzc1RleHQgaXMgJzEwJSwyMCUg
eyBsZWZ0OiAxMDIwcHg7IH0nCitQQVNTIHJ1bGVzRGVsZXRlTGFzdC5sZW5ndGggaXMgNgorUEFT
UyBydWxlc0RlbGV0ZUxhc3QubGVuZ3RoIGlzIDUKK1BBU1MgcnVsZS50eXBlIGlzIHdpbmRvdy5D
U1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NUZXh0IGlzICcwJSB7IGxlZnQ6IDBw
eDsgfScKK1BBU1MgcnVsZXNEZWxldGVMYXN0Lmxlbmd0aCBpcyA0CitQQVNTIHJ1bGUudHlwZSBp
cyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitQQVNTIHJ1bGUuY3NzVGV4dCBpcyAnMTAw
JSB7IGxlZnQ6IDEwMHB4OyB9JworCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJh
bWVzLXJ1bGUuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXJ1bGUuaHRt
bAppbmRleCA5YTY1ZTkxLi42Mjk5ZGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL2tleWZyYW1lcy1ydWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlm
cmFtZXMtcnVsZS5odG1sCkBAIC0xNSw2ICsxNSwyNyBAQAogICAgIDUwJSB7IGxlZnQ6IDMwcHg7
IH0KICAgICB0byB7IGxlZnQ6IDIwcHg7IH0KICAgfQorICBALXdlYmtpdC1rZXlmcmFtZXMgdGVz
dC1maW5kLWxhc3QgeworICAgIGZyb20geyBsZWZ0OiAtMXB4OyAgfQorICAgIDAlIHsgbGVmdDog
MHB4OyB9CisgICAgMTAlIHsgbGVmdDogLTFweDsgfQorICAgIDEwJSB7IGxlZnQ6IDEwcHg7fQor
ICAgIDEwJSwgMjAlIHsgbGVmdDogLTFweDsgICB9CisgICAgMTAlLDIwJSB7IGxlZnQ6IDEwMjBw
eDsgfQorICAgIDEwMCUgeyBsZWZ0OiAtMXB4OyB9CisgICAgdG8geyBsZWZ0OiAxMDBweDsgfQor
ICB9CisgIEAtd2Via2l0LWtleWZyYW1lcyB0ZXN0LWRlbGV0ZS1sYXN0IHsKKyAgICBmcm9tIHsg
bGVmdDogMHB4OyAgfQorICAgIDAlIHsgbGVmdDogLTFweDsgfQorICAgIDEwJSB7IGxlZnQ6IDEw
cHg7IH0KKyAgICAxMCUgeyBsZWZ0OiAtMXB4O30KKyAgICAxMCUsIDIwJSB7IGxlZnQ6IDEwMjBw
eDsgICB9CisgICAgMTAlLDIwJSB7IGxlZnQ6IC0xcHg7IH0KKyAgICAxMDAlIHsgbGVmdDogMTAw
cHg7IH0KKyAgICB0byB7IGxlZnQ6IC0xcHg7IH0KKyAgfQorCiA8L3N0eWxlPgogPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CkBAIC0x
NjgsNiArMTg5LDY4IEBAIHNob3VsZEJlKCJydWxlczIuaXRlbSgwKS5rZXlUZXh0IiwgIicwJSci
KTsKIHNob3VsZEJlKCJydWxlczIuaXRlbSgxKS5rZXlUZXh0IiwgIicxMDAlJyIpOwogCiBkZWJ1
ZygiIik7CitkZWJ1ZygiZmluZFJ1bGUgbWF0Y2hpbmcgb3JkZXI6IGZyb20gbGFzdCB0byBmaXJz
dCBzcGVjaWZpZWQiKTsKKwordmFyIGtleWZyYW1lc0ZpbmRMYXN0ID0gZG9jdW1lbnQuc3R5bGVT
aGVldHMuaXRlbSgwKS5jc3NSdWxlcy5pdGVtKDMpOworc2hvdWxkQmUoImtleWZyYW1lc0ZpbmRM
YXN0LnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVTX1JVTEUiKTsKK3Nob3VsZEJlKCJr
ZXlmcmFtZXNGaW5kTGFzdC5uYW1lIiwgIid0ZXN0LWZpbmQtbGFzdCciKTsKKworCitydWxlID0g
a2V5ZnJhbWVzRmluZExhc3QuZmluZFJ1bGUoIjEwJSIpOworc2hvdWxkQmUoInJ1bGUudHlwZSIs
ICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NUZXh0
IiwgIicxMCUgeyBsZWZ0OiAxMHB4OyB9JyIpOworcnVsZSA9IGtleWZyYW1lc0ZpbmRMYXN0LmZp
bmRSdWxlKCIxMC4wJSIpOworc2hvdWxkQmUoInJ1bGUudHlwZSIsICJ3aW5kb3cuQ1NTUnVsZS5L
RVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NUZXh0IiwgIicxMCUgeyBsZWZ0OiAx
MHB4OyB9JyIpOworcnVsZSA9IGtleWZyYW1lc0ZpbmRMYXN0LmZpbmRSdWxlKCIxMCUsMjAlIik7
CitzaG91bGRCZSgicnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsK
K3Nob3VsZEJlKCJydWxlLmNzc1RleHQiLCAiJzEwJSwyMCUgIHsgbGVmdDogMTBweDsgfSciKTsK
K3J1bGUgPSBrZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiICAgMTAlLCAyMCUgIik7CitzaG91
bGRCZSgicnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3Vs
ZEJlKCJydWxlLmNzc1RleHQiLCAiJzEwJSwyMCUgIHsgbGVmdDogMTBweDsgfSciKTsKK3J1bGUg
PSBrZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiMjAlLCAxMCUgIik7CitzaG91bGRCZSgicnVs
ZSIsICJudWxsIik7CitydWxlID0ga2V5ZnJhbWVzRmluZExhc3QuZmluZFJ1bGUoImZyb20iKTsK
K3Nob3VsZEJlKCJydWxlLnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOwor
c2hvdWxkQmUoInJ1bGUuY3NzVGV4dCIsICInMCUgeyBsZWZ0OiAwcHg7IH0nIik7CitydWxlID0g
a2V5ZnJhbWVzRmluZExhc3QuZmluZFJ1bGUoIjEwMCUiKTsKK3Nob3VsZEJlKCJydWxlLnR5cGUi
LCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOworc2hvdWxkQmUoInJ1bGUuY3NzVGV4
dCIsICInMTAwJSB7IGxlZnQ6IDEwMHB4OyB9JyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiZGVs
ZXRlUnVsZSBtYXRjaGluZyBvcmRlcjogZnJvbSBsYXN0IHRvIGZpcnN0IHNwZWNpZmllZCIpOwor
Cit2YXIga2V5ZnJhbWVzRGVsZXRlTGFzdCA9IGRvY3VtZW50LnN0eWxlU2hlZXRzLml0ZW0oMCku
Y3NzUnVsZXMuaXRlbSg0KTsKK3Nob3VsZEJlKCJrZXlmcmFtZXNEZWxldGVMYXN0LnR5cGUiLCAi
d2luZG93LkNTU1J1bGUuS0VZRlJBTUVTX1JVTEUiKTsKK3Nob3VsZEJlKCJrZXlmcmFtZXNEZWxl
dGVMYXN0Lm5hbWUiLCAiJ3Rlc3QtZGVsZXRlLWxhc3QnIik7CisKK3ZhciBydWxlc0RlbGV0ZUxh
c3QgPSBrZXlmcmFtZXNEZWxldGVMYXN0LmNzc1J1bGVzOworc2hvdWxkQmUoInJ1bGVzRGVsZXRl
TGFzdC5sZW5ndGgiLCAiOCIpOworCitrZXlmcmFtZXNEZWxldGVMYXN0LmRlbGV0ZVJ1bGUoIjEw
JSIpOworc2hvdWxkQmUoInJ1bGVzRGVsZXRlTGFzdC5sZW5ndGgiLCAiNyIpOworcnVsZSA9IGtl
eWZyYW1lc0RlbGV0ZUxhc3QuZmluZFJ1bGUoIjEwJSIpOworc2hvdWxkQmUoInJ1bGUudHlwZSIs
ICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NUZXh0
IiwgIicxMCUgeyBsZWZ0OiAxMHB4OyB9JyIpOwora2V5ZnJhbWVzRGVsZXRlTGFzdC5kZWxldGVS
dWxlKCIxMCUsMjAlIik7CitzaG91bGRCZSgicnVsZXNEZWxldGVMYXN0Lmxlbmd0aCIsICI2Iik7
CitydWxlID0ga2V5ZnJhbWVzRGVsZXRlTGFzdC5maW5kUnVsZSgiMTAlLDIwJSIpOworc2hvdWxk
QmUoInJ1bGUudHlwZSIsICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRC
ZSgicnVsZS5jc3NUZXh0IiwgIicxMCUsMjAlIHsgbGVmdDogMTAyMHB4OyB9JyIpOwora2V5ZnJh
bWVzRGVsZXRlTGFzdC5kZWxldGVSdWxlKCIyMCUsIDEwJSAiKTsKK3Nob3VsZEJlKCJydWxlc0Rl
bGV0ZUxhc3QubGVuZ3RoIiwgIjYiKTsKK2tleWZyYW1lc0RlbGV0ZUxhc3QuZGVsZXRlUnVsZSgi
ZnJvbSIpOworc2hvdWxkQmUoInJ1bGVzRGVsZXRlTGFzdC5sZW5ndGgiLCAiNSIpOworcnVsZSA9
IGtleWZyYW1lc0RlbGV0ZUxhc3QuZmluZFJ1bGUoImZyb20iKTsKK3Nob3VsZEJlKCJydWxlLnR5
cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOworc2hvdWxkQmUoInJ1bGUuY3Nz
VGV4dCIsICInMCUgeyBsZWZ0OiAwcHg7IH0nIik7CitrZXlmcmFtZXNEZWxldGVMYXN0LmRlbGV0
ZVJ1bGUoIjEwMCUiKTsKK3Nob3VsZEJlKCJydWxlc0RlbGV0ZUxhc3QubGVuZ3RoIiwgIjQiKTsK
K3J1bGUgPSBrZXlmcmFtZXNEZWxldGVMYXN0LmZpbmRSdWxlKCIxMDAlIik7CitzaG91bGRCZSgi
cnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJlKCJy
dWxlLmNzc1RleHQiLCAiJzEwMCUgeyBsZWZ0OiAxMDBweDsgfSciKTsKKworZGVidWcoIiIpOwog
CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdW5wcmVmaXhlZC1r
ZXlmcmFtZXMtcnVsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3VucHJl
Zml4ZWQta2V5ZnJhbWVzLXJ1bGUtZXhwZWN0ZWQudHh0CmluZGV4IGNhMGY1NDguLmQ4OGYxMGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdW5wcmVmaXhlZC1rZXlmcmFtZXMt
cnVsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy91bnByZWZpeGVk
LWtleWZyYW1lcy1ydWxlLWV4cGVjdGVkLnR4dApAQCAtNzUsNiArNzUsNDEgQEAgUEFTUyBydWxl
czIuaXRlbSgwKS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKIFBBU1MgcnVs
ZXMyLml0ZW0oMCkua2V5VGV4dCBpcyAnMCUnCiBQQVNTIHJ1bGVzMi5pdGVtKDEpLmtleVRleHQg
aXMgJzEwMCUnCiAKK2ZpbmRSdWxlIG1hdGNoaW5nIG9yZGVyOiBmcm9tIGxhc3QgdG8gZmlyc3Qg
c3BlY2lmaWVkCitQQVNTIGtleWZyYW1lc0ZpbmRMYXN0LnR5cGUgaXMgd2luZG93LkNTU1J1bGUu
S0VZRlJBTUVTX1JVTEUKK1BBU1Mga2V5ZnJhbWVzRmluZExhc3QubmFtZSBpcyAndGVzdC1maW5k
LWxhc3QnCitQQVNTIHJ1bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitQ
QVNTIHJ1bGUuY3NzVGV4dCBpcyAnMTAlIHsgbGVmdDogMTBweDsgfScKK1BBU1MgcnVsZS50eXBl
IGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NUZXh0IGlzICcx
MCUgeyBsZWZ0OiAxMHB4OyB9JworUEFTUyBydWxlLnR5cGUgaXMgd2luZG93LkNTU1J1bGUuS0VZ
RlJBTUVfUlVMRQorRkFJTCBydWxlLmNzc1RleHQgc2hvdWxkIGJlIDEwJSwyMCUgIHsgbGVmdDog
MTBweDsgfS4gV2FzIDEwJSwyMCUgeyBsZWZ0OiAxMDIwcHg7IH0uCitQQVNTIHJ1bGUudHlwZSBp
cyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitGQUlMIHJ1bGUuY3NzVGV4dCBzaG91bGQg
YmUgMTAlLDIwJSAgeyBsZWZ0OiAxMHB4OyB9LiBXYXMgMTAlLDIwJSB7IGxlZnQ6IDEwMjBweDsg
fS4KK1BBU1MgcnVsZSBpcyBudWxsCitQQVNTIHJ1bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5L
RVlGUkFNRV9SVUxFCitQQVNTIHJ1bGUuY3NzVGV4dCBpcyAnMCUgeyBsZWZ0OiAwcHg7IH0nCitQ
QVNTIHJ1bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitQQVNTIHJ1bGUu
Y3NzVGV4dCBpcyAnMTAwJSB7IGxlZnQ6IDEwMHB4OyB9JworCitkZWxldGVSdWxlIG1hdGNoaW5n
IG9yZGVyOiBmcm9tIGxhc3QgdG8gZmlyc3Qgc3BlY2lmaWVkCitQQVNTIGtleWZyYW1lc0RlbGV0
ZUxhc3QudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRVNfUlVMRQorUEFTUyBrZXlmcmFt
ZXNEZWxldGVMYXN0Lm5hbWUgaXMgJ3Rlc3QtZGVsZXRlLWxhc3QnCitQQVNTIHJ1bGVzRGVsZXRl
TGFzdC5sZW5ndGggaXMgOAorUEFTUyBydWxlc0RlbGV0ZUxhc3QubGVuZ3RoIGlzIDcKK1BBU1Mg
cnVsZS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NU
ZXh0IGlzICcxMCUgeyBsZWZ0OiAxMHB4OyB9JworUEFTUyBydWxlc0RlbGV0ZUxhc3QubGVuZ3Ro
IGlzIDYKK1BBU1MgcnVsZS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BB
U1MgcnVsZS5jc3NUZXh0IGlzICcxMCUsMjAlIHsgbGVmdDogMTAyMHB4OyB9JworUEFTUyBydWxl
c0RlbGV0ZUxhc3QubGVuZ3RoIGlzIDYKK1BBU1MgcnVsZXNEZWxldGVMYXN0Lmxlbmd0aCBpcyA1
CitQQVNTIHJ1bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitQQVNTIHJ1
bGUuY3NzVGV4dCBpcyAnMCUgeyBsZWZ0OiAwcHg7IH0nCitQQVNTIHJ1bGVzRGVsZXRlTGFzdC5s
ZW5ndGggaXMgNAorUEFTUyBydWxlLnR5cGUgaXMgd2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVM
RQorUEFTUyBydWxlLmNzc1RleHQgaXMgJzEwMCUgeyBsZWZ0OiAxMDBweDsgfScKKwogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL3VucHJlZml4ZWQta2V5ZnJhbWVzLXJ1bGUuaHRtbCBiL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvdW5wcmVmaXhlZC1rZXlmcmFtZXMtcnVsZS5odG1sCmluZGV4
IDUwYTBiNjcuLjE2ODZlYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdW5w
cmVmaXhlZC1rZXlmcmFtZXMtcnVsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
dW5wcmVmaXhlZC1rZXlmcmFtZXMtcnVsZS5odG1sCkBAIC0xNSw2ICsxNSwyNyBAQAogICAgIDUw
JSB7IGxlZnQ6IDMwcHg7IH0KICAgICB0byB7IGxlZnQ6IDIwcHg7IH0KICAgfQorICBAa2V5ZnJh
bWVzIHRlc3QtZmluZC1sYXN0IHsKKyAgICBmcm9tIHsgbGVmdDogLTFweDsgIH0KKyAgICAwJSB7
IGxlZnQ6IDBweDsgfQorICAgIDEwJSB7IGxlZnQ6IC0xcHg7IH0KKyAgICAxMCUgeyBsZWZ0OiAx
MHB4O30KKyAgICAxMCUsIDIwJSB7IGxlZnQ6IC0xcHg7ICAgfQorICAgIDEwJSwyMCUgeyBsZWZ0
OiAxMDIwcHg7IH0KKyAgICAxMDAlIHsgbGVmdDogLTFweDsgfQorICAgIHRvIHsgbGVmdDogMTAw
cHg7IH0KKyAgfQorICBAa2V5ZnJhbWVzIHRlc3QtZGVsZXRlLWxhc3QgeworICAgIGZyb20geyBs
ZWZ0OiAwcHg7ICB9CisgICAgMCUgeyBsZWZ0OiAtMXB4OyB9CisgICAgMTAlIHsgbGVmdDogMTBw
eDsgfQorICAgIDEwJSB7IGxlZnQ6IC0xcHg7fQorICAgIDEwJSwgMjAlIHsgbGVmdDogMTAyMHB4
OyAgIH0KKyAgICAxMCUsMjAlIHsgbGVmdDogLTFweDsgfQorICAgIDEwMCUgeyBsZWZ0OiAxMDBw
eDsgfQorICAgIHRvIHsgbGVmdDogLTFweDsgfQorICB9CisKIDwvc3R5bGU+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTE2
OCw2ICsxODksNjggQEAgc2hvdWxkQmUoInJ1bGVzMi5pdGVtKDApLmtleVRleHQiLCAiJzAlJyIp
Owogc2hvdWxkQmUoInJ1bGVzMi5pdGVtKDEpLmtleVRleHQiLCAiJzEwMCUnIik7CiAKIGRlYnVn
KCIiKTsKK2RlYnVnKCJmaW5kUnVsZSBtYXRjaGluZyBvcmRlcjogZnJvbSBsYXN0IHRvIGZpcnN0
IHNwZWNpZmllZCIpOworCit2YXIga2V5ZnJhbWVzRmluZExhc3QgPSBkb2N1bWVudC5zdHlsZVNo
ZWV0cy5pdGVtKDApLmNzc1J1bGVzLml0ZW0oMyk7CitzaG91bGRCZSgia2V5ZnJhbWVzRmluZExh
c3QudHlwZSIsICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRVNfUlVMRSIpOworc2hvdWxkQmUoImtl
eWZyYW1lc0ZpbmRMYXN0Lm5hbWUiLCAiJ3Rlc3QtZmluZC1sYXN0JyIpOworCisKK3J1bGUgPSBr
ZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiMTAlIik7CitzaG91bGRCZSgicnVsZS50eXBlIiwg
IndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJlKCJydWxlLmNzc1RleHQi
LCAiJzEwJSB7IGxlZnQ6IDEwcHg7IH0nIik7CitydWxlID0ga2V5ZnJhbWVzRmluZExhc3QuZmlu
ZFJ1bGUoIjEwLjAlIik7CitzaG91bGRCZSgicnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktF
WUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJlKCJydWxlLmNzc1RleHQiLCAiJzEwJSB7IGxlZnQ6IDEw
cHg7IH0nIik7CitydWxlID0ga2V5ZnJhbWVzRmluZExhc3QuZmluZFJ1bGUoIjEwJSwyMCUiKTsK
K3Nob3VsZEJlKCJydWxlLnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOwor
c2hvdWxkQmUoInJ1bGUuY3NzVGV4dCIsICInMTAlLDIwJSAgeyBsZWZ0OiAxMHB4OyB9JyIpOwor
cnVsZSA9IGtleWZyYW1lc0ZpbmRMYXN0LmZpbmRSdWxlKCIgICAxMCUsIDIwJSAiKTsKK3Nob3Vs
ZEJlKCJydWxlLnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOworc2hvdWxk
QmUoInJ1bGUuY3NzVGV4dCIsICInMTAlLDIwJSAgeyBsZWZ0OiAxMHB4OyB9JyIpOworcnVsZSA9
IGtleWZyYW1lc0ZpbmRMYXN0LmZpbmRSdWxlKCIyMCUsIDEwJSAiKTsKK3Nob3VsZEJlKCJydWxl
IiwgIm51bGwiKTsKK3J1bGUgPSBrZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiZnJvbSIpOwor
c2hvdWxkQmUoInJ1bGUudHlwZSIsICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7Citz
aG91bGRCZSgicnVsZS5jc3NUZXh0IiwgIicwJSB7IGxlZnQ6IDBweDsgfSciKTsKK3J1bGUgPSBr
ZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiMTAwJSIpOworc2hvdWxkQmUoInJ1bGUudHlwZSIs
ICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NUZXh0
IiwgIicxMDAlIHsgbGVmdDogMTAwcHg7IH0nIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJkZWxl
dGVSdWxlIG1hdGNoaW5nIG9yZGVyOiBmcm9tIGxhc3QgdG8gZmlyc3Qgc3BlY2lmaWVkIik7CisK
K3ZhciBrZXlmcmFtZXNEZWxldGVMYXN0ID0gZG9jdW1lbnQuc3R5bGVTaGVldHMuaXRlbSgwKS5j
c3NSdWxlcy5pdGVtKDQpOworc2hvdWxkQmUoImtleWZyYW1lc0RlbGV0ZUxhc3QudHlwZSIsICJ3
aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRVNfUlVMRSIpOworc2hvdWxkQmUoImtleWZyYW1lc0RlbGV0
ZUxhc3QubmFtZSIsICIndGVzdC1kZWxldGUtbGFzdCciKTsKKwordmFyIHJ1bGVzRGVsZXRlTGFz
dCA9IGtleWZyYW1lc0RlbGV0ZUxhc3QuY3NzUnVsZXM7CitzaG91bGRCZSgicnVsZXNEZWxldGVM
YXN0Lmxlbmd0aCIsICI4Iik7CisKK2tleWZyYW1lc0RlbGV0ZUxhc3QuZGVsZXRlUnVsZSgiMTAl
Iik7CitzaG91bGRCZSgicnVsZXNEZWxldGVMYXN0Lmxlbmd0aCIsICI3Iik7CitydWxlID0ga2V5
ZnJhbWVzRGVsZXRlTGFzdC5maW5kUnVsZSgiMTAlIik7CitzaG91bGRCZSgicnVsZS50eXBlIiwg
IndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJlKCJydWxlLmNzc1RleHQi
LCAiJzEwJSB7IGxlZnQ6IDEwcHg7IH0nIik7CitrZXlmcmFtZXNEZWxldGVMYXN0LmRlbGV0ZVJ1
bGUoIjEwJSwyMCUiKTsKK3Nob3VsZEJlKCJydWxlc0RlbGV0ZUxhc3QubGVuZ3RoIiwgIjYiKTsK
K3J1bGUgPSBrZXlmcmFtZXNEZWxldGVMYXN0LmZpbmRSdWxlKCIxMCUsMjAlIik7CitzaG91bGRC
ZSgicnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJl
KCJydWxlLmNzc1RleHQiLCAiJzEwJSwyMCUgeyBsZWZ0OiAxMDIwcHg7IH0nIik7CitrZXlmcmFt
ZXNEZWxldGVMYXN0LmRlbGV0ZVJ1bGUoIjIwJSwgMTAlICIpOworc2hvdWxkQmUoInJ1bGVzRGVs
ZXRlTGFzdC5sZW5ndGgiLCAiNiIpOwora2V5ZnJhbWVzRGVsZXRlTGFzdC5kZWxldGVSdWxlKCJm
cm9tIik7CitzaG91bGRCZSgicnVsZXNEZWxldGVMYXN0Lmxlbmd0aCIsICI1Iik7CitydWxlID0g
a2V5ZnJhbWVzRGVsZXRlTGFzdC5maW5kUnVsZSgiZnJvbSIpOworc2hvdWxkQmUoInJ1bGUudHlw
ZSIsICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NU
ZXh0IiwgIicwJSB7IGxlZnQ6IDBweDsgfSciKTsKK2tleWZyYW1lc0RlbGV0ZUxhc3QuZGVsZXRl
UnVsZSgiMTAwJSIpOworc2hvdWxkQmUoInJ1bGVzRGVsZXRlTGFzdC5sZW5ndGgiLCAiNCIpOwor
cnVsZSA9IGtleWZyYW1lc0RlbGV0ZUxhc3QuZmluZFJ1bGUoIjEwMCUiKTsKK3Nob3VsZEJlKCJy
dWxlLnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOworc2hvdWxkQmUoInJ1
bGUuY3NzVGV4dCIsICInMTAwJSB7IGxlZnQ6IDEwMHB4OyB9JyIpOworCitkZWJ1ZygiIik7CiAK
IDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDljYzE0YmMuLmExNTUxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxNS0wMS0xMyAgc3lsdmFpbi1nYWxpbmVhdSAgPGdhbGluZWF1QGFkb2Jl
LmNvbT4KKworICAgICAgICBDU1NLZXlmcmFtZXNSdWxlOjpmaW5kUnVsZSgpIGFuZCBkZWxldGVS
dWxlKCkgc2hvdWxkIGRlbGV0ZSB0aGUgbGFzdCBtYXRjaGluZyBydWxlLCBub3QgdGhlIGZpcnN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk3MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSBleGlzdGluZyB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byB2ZXJpZnkg
dGhpcyBiZWhhdmlvci4KKworICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZVJ1bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6OmdldEtleXMpOiBEZWxldGVkLgorICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKTogdXNlIFN0eWxlS2V5ZnJhbWU6OmtleXMoKSAK
KyAgICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlS2V5ZnJhbWU6OnBhcnNlS2V5U3RyaW5nKTogbm93IGEgcHVibGljIHN0YXRpYyBoZWxwZXIK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6OmtleVRleHQpOiBCdWlsZCBrZXlmcmFt
ZSBzZWxlY3RvciBmcm9tIFZlY3Rvcjxkb3VibGU+IHJlcHJlc2VudGF0aW9uCisgICAgICAgICog
Y3NzL0NTU0tleWZyYW1lUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVLZXlmcmFtZTo6
c2V0S2V5VGV4dCk6IHBhcnNlIGtleWZyYW1lIHNlbGVjdG9yIGludG8gVmVjdG9yPGRvdWJsZT4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6OmtleXMpOiBBZGRlZDsgcmV0dXJucyB2
ZWN0b3IgcmVwcmVzZW50YXRpb24gb2Ygc2VsZWN0b3Iga2V5cworICAgICAgICAoV2ViQ29yZTo6
U3R5bGVLZXlmcmFtZTo6Z2V0S2V5cyk6IERlbGV0ZWQuIE5vdyBrZXlzKCkKKyAgICAgICAgKiBj
c3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVLZXlm
cmFtZXM6OmZpbmRLZXlmcmFtZUluZGV4KTogUmV0dXJuIGxhc3QgbWF0Y2hpbmcgcnVsZQorIAog
MjAxNS0wMS0xMyAgU2hpdmFrdW1hciBKTSAgPHNoaXZhLmptQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIEZpeCBEZWJ1ZyBCdWlsZCBFcnJvciBpbiBXZWJjb3JlIG1vZHVsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0tleWZyYW1lUnVsZS5jcHAKaW5kZXggODI5ZjA4NC4uMTRmNzYzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgdm9pZCBTdHls
ZUtleWZyYW1lOjpwYXJzZUtleVN0cmluZyhjb25zdCBTdHJpbmcmIHMsIFZlY3Rvcjxkb3VibGU+
JiBrZXlzKQogICAgICAgICBTdHJpbmcgY3VyID0gc3RyaW5nc1tpXS5zdHJpcFdoaXRlU3BhY2Uo
KTsKIAogICAgICAgICAvLyBGb3Igbm93IHRoZSBzeW50YXggTVVTVCBiZSAneHh4JScgb3IgJ2Zy
b20nIG9yICd0bycsIHdoZXJlIHh4eCBpcyBhIGxlZ2FsIGZsb2F0aW5nIHBvaW50IG51bWJlcgot
ICAgICAgICBpZiAoY3VyID09ICJmcm9tIikKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGN1ciwgImZyb20iKSkKICAgICAgICAgICAgIGtleSA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKGN1
ciA9PSAidG8iKQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjdXIsICJ0byIp
KQogICAgICAgICAgICAga2V5ID0gMTsKICAgICAgICAgZWxzZSBpZiAoY3VyLmVuZHNXaXRoKCcl
JykpIHsKICAgICAgICAgICAgIGRvdWJsZSBrID0gY3VyLnN1YnN0cmluZygwLCBjdXIubGVuZ3Ro
KCkgLSAxKS50b0RvdWJsZSgpOwpAQCAtNzgsNiArNzgsMjUgQEAgdm9pZCBTdHlsZUtleWZyYW1l
OjpwYXJzZUtleVN0cmluZyhjb25zdCBTdHJpbmcmIHMsIFZlY3Rvcjxkb3VibGU+JiBrZXlzKQog
ICAgIH0KIH0KIAorU3RyaW5nIFN0eWxlS2V5ZnJhbWU6OmtleVRleHQoKSBjb25zdAoreworICAg
IEFTU0VSVCghbV9rZXlzLmlzRW1wdHkoKSk7CisgICAgCisgICAgU3RyaW5nQnVpbGRlciBrZXlU
ZXh0OworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9rZXlzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChpKSB7CisgICAgICAgICAgICBrZXlUZXh0LmFwcGVuZCgnLCcpOwor
ICAgICAgICB9CisgICAgICAgIGtleVRleHQuYXBwZW5kTnVtYmVyKG1fa2V5cy5hdChpKSAqIDEw
MCk7CisgICAgICAgIGtleVRleHQuYXBwZW5kKCclJyk7CisgICAgfQorICAgIAorICAgIHJldHVy
biBrZXlUZXh0LnRvU3RyaW5nKCk7Cit9CisgICAgCisKKyAgICAKIFN0cmluZyBTdHlsZUtleWZy
YW1lOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuaAppbmRleCA0MzAzYzBmLi5hN2VjMzE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5oCkBAIC00NCwyNSArNDQsMjMgQEAgcHVibGljOgog
ICAgIH0KICAgICB+U3R5bGVLZXlmcmFtZSgpOwogCi0gICAgU3RyaW5nIGtleVRleHQoKSBjb25z
dCB7IHJldHVybiBtX2tleTsgfQotICAgIHZvaWQgc2V0S2V5VGV4dChjb25zdCBTdHJpbmcmIHMp
IHsgbV9rZXkgPSBzOyB9CisgICAgU3RyaW5nIGtleVRleHQoKSBjb25zdDsKKyAgICB2b2lkIHNl
dEtleVRleHQoY29uc3QgU3RyaW5nJiBzKSB7IHBhcnNlS2V5U3RyaW5nKHMsIG1fa2V5cyk7IH0K
IAotICAgIHZvaWQgZ2V0S2V5cyhWZWN0b3I8ZG91YmxlPiYga2V5cykgY29uc3QgICB7IHBhcnNl
S2V5U3RyaW5nKG1fa2V5LCBrZXlzKTsgfQorICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBrZXlz
KCkgY29uc3QgeyByZXR1cm4gbV9rZXlzOyB9OwogICAgIAogICAgIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllczsgfQogICAgIE11
dGFibGVTdHlsZVByb3BlcnRpZXMmIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgCiAgICAgU3Ry
aW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBwYXJzZUtleVN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8ZG91YmxlPiYga2V5cyk7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgU3R5bGVLZXlmcmFtZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmKTsKICAgICAKLSAg
ICBzdGF0aWMgdm9pZCBwYXJzZUtleVN0cmluZyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8ZG91Ymxl
PiYga2V5cyk7Ci0gICAgCiAgICAgUmVmPFN0eWxlUHJvcGVydGllcz4gbV9wcm9wZXJ0aWVzOwot
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIHBhcnNlZCB2ZWN0b3Igb2YgZmxvYXRzLgot
ICAgIC8vIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGtleXMKLSAgICBTdHJpbmcgbV9rZXk7Cisg
ICAgVmVjdG9yPGRvdWJsZT4gbV9rZXlzOwogfTsKIAogY2xhc3MgQ1NTS2V5ZnJhbWVSdWxlIGZp
bmFsIDogcHVibGljIENTU1J1bGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUu
Y3BwCmluZGV4IDc3OWNlM2IuLjZmNzgyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHAKQEAgLTcyLDE4ICs3MiwxNyBAQCB2b2lkIFN0eWxlUnVsZUtleWZyYW1lczo6
d3JhcHBlclJlbW92ZUtleWZyYW1lKHVuc2lnbmVkIGluZGV4KQogCiBpbnQgU3R5bGVSdWxlS2V5
ZnJhbWVzOjpmaW5kS2V5ZnJhbWVJbmRleChjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKIHsKLSAg
ICBTdHJpbmcgcGVyY2VudGFnZVN0cmluZzsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5
LCAiZnJvbSIpKQotICAgICAgICBwZXJjZW50YWdlU3RyaW5nID0gQVNDSUlMaXRlcmFsKCIwJSIp
OwotICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtleSwgInRvIikpCi0gICAgICAgIHBl
cmNlbnRhZ2VTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIjEwMCUiKTsKLSAgICBlbHNlCi0gICAgICAg
IHBlcmNlbnRhZ2VTdHJpbmcgPSBrZXk7CisgICAgVmVjdG9yPGRvdWJsZT4ga2V5czsKICAgICAK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9rZXlmcmFtZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgaWYgKG1fa2V5ZnJhbWVzW2ldLT5rZXlUZXh0KCkgPT0gcGVyY2VudGFnZVN0cmlu
ZykKKyAgICBTdHlsZUtleWZyYW1lOjpwYXJzZUtleVN0cmluZyhrZXksIGtleXMpOworICAgIGlm
ICgha2V5cy5zaXplKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICAKKyAgICBmb3IgKHNpemVf
dCBpID0gbV9rZXlmcmFtZXMuc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBpZiAobV9rZXlmcmFt
ZXNbaV0tPmtleXMoKSA9PSBrZXlzKQogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgfQorICAg
IAogICAgIHJldHVybiAtMTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmlu
ZGV4IGQyMDI0ZWIuLmNmMWRkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
QEAgLTg5Nyw4ICs4OTcsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9y
QW5pbWF0aW9uKEVsZW1lbnQqIGUsIGNvbnN0IFJlbmRlclN0eWxlKiBlbAogICAgICAgICBrZXlm
cmFtZVZhbHVlLnNldFN0eWxlKHN0eWxlRm9yS2V5ZnJhbWUoZWxlbWVudFN0eWxlLCBrZXlmcmFt
ZSwga2V5ZnJhbWVWYWx1ZSkpOwogCiAgICAgICAgIC8vIEFkZCB0aGlzIGtleWZyYW1lIHN0eWxl
IHRvIGFsbCB0aGUgaW5kaWNhdGVkIGtleSB0aW1lcwotICAgICAgICBWZWN0b3I8ZG91YmxlPiBr
ZXlzOwotICAgICAgICBrZXlmcmFtZS0+Z2V0S2V5cyhrZXlzKTsKKyAgICAgICAgY29uc3QgVmVj
dG9yPGRvdWJsZT4mIGtleXMgPSBrZXlmcmFtZS0+a2V5cygpOwogICAgICAgICBmb3IgKHNpemVf
dCBrZXlJbmRleCA9IDA7IGtleUluZGV4IDwga2V5cy5zaXplKCk7ICsra2V5SW5kZXgpIHsKICAg
ICAgICAgICAgIGtleWZyYW1lVmFsdWUuc2V0S2V5KGtleXNba2V5SW5kZXhdKTsKICAgICAgICAg
ICAgIGxpc3QuaW5zZXJ0KGtleWZyYW1lVmFsdWUpOwo=
</data>
<flag name="review"
          id="269560"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244708</attachid>
            <date>2015-01-15 13:06:44 -0800</date>
            <delta_ts>2015-01-15 13:06:44 -0800</delta_ts>
            <desc>fix.patch</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>21788</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOWE5N2FjLi5lZDAyZjliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDEt
MTMgIHN5bHZhaW4tZ2FsaW5lYXUgIDxnYWxpbmVhdUBhZG9iZS5jb20+CisKKyAgICAgICAgQ1NT
S2V5ZnJhbWVzUnVsZTo6ZmluZFJ1bGUoKSBhbmQgZGVsZXRlUnVsZSgpIHNob3VsZCBkZWxldGUg
dGhlIGxhc3QgbWF0Y2hpbmcgcnVsZSwgbm90IHRoZSBmaXJzdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NzMyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIGtleWZyYW1lcyBP
TSB0ZXN0cyB0byBjaGVjayBmb3IgZmluZFJ1bGUvZGVsZXRlUnVsZSBtYXRjaGluZyBvcmRlciBp
LmUuIGZpbmQvZGVsZXRlIGxhc3Qgc3BlY2lmaWVkIHJ1bGUuCisKKyAgICAgICAgKiBhbmltYXRp
b25zL2tleWZyYW1lcy1ydWxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL2tl
eWZyYW1lcy1ydWxlLmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy91bnByZWZpeGVkLWtleWZy
YW1lcy1ydWxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL3VucHJlZml4ZWQt
a2V5ZnJhbWVzLXJ1bGUuaHRtbDoKKwogMjAxNS0wMS0xMyAgQW5kcnplaiBCYWRvd3NraSAgPGEu
YmFkb3dza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgQVg6IFtBVEtdIE1hcmsgYWNjZXNzaWJp
bGl0eS90YWJsZS13aXRoLWZvb3Rlci1zZWN0aW9uLWFib3ZlLWJvZHkuaHRtbCBhcyBhIHN1aXRh
YmxlIHRlc3QgZm9yIEVGTCBhbmQgR1RLCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL2tleWZyYW1lcy1ydWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
a2V5ZnJhbWVzLXJ1bGUtZXhwZWN0ZWQudHh0CmluZGV4IGZjOTQ5ZTEuLmNmMDAwNjcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXJ1bGUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXJ1bGUtZXhwZWN0ZWQudHh0
CkBAIC03NSw2ICs3NSw0MSBAQCBQQVNTIHJ1bGVzMi5pdGVtKDApLnR5cGUgaXMgd2luZG93LkNT
U1J1bGUuS0VZRlJBTUVfUlVMRQogUEFTUyBydWxlczIuaXRlbSgwKS5rZXlUZXh0IGlzICcwJScK
IFBBU1MgcnVsZXMyLml0ZW0oMSkua2V5VGV4dCBpcyAnMTAwJScKIAorZmluZFJ1bGUgbWF0Y2hp
bmcgb3JkZXI6IGZyb20gbGFzdCB0byBmaXJzdCBzcGVjaWZpZWQKK1BBU1Mga2V5ZnJhbWVzRmlu
ZExhc3QudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRVNfUlVMRQorUEFTUyBrZXlmcmFt
ZXNGaW5kTGFzdC5uYW1lIGlzICd0ZXN0LWZpbmQtbGFzdCcKK1BBU1MgcnVsZS50eXBlIGlzIHdp
bmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NUZXh0IGlzICcxMCUgeyBs
ZWZ0OiAxMHB4OyB9JworUEFTUyBydWxlLnR5cGUgaXMgd2luZG93LkNTU1J1bGUuS0VZRlJBTUVf
UlVMRQorUEFTUyBydWxlLmNzc1RleHQgaXMgJzEwJSB7IGxlZnQ6IDEwcHg7IH0nCitQQVNTIHJ1
bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitGQUlMIHJ1bGUuY3NzVGV4
dCBzaG91bGQgYmUgMTAlLDIwJSAgeyBsZWZ0OiAxMHB4OyB9LiBXYXMgMTAlLDIwJSB7IGxlZnQ6
IDEwMjBweDsgfS4KK1BBU1MgcnVsZS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JV
TEUKK0ZBSUwgcnVsZS5jc3NUZXh0IHNob3VsZCBiZSAxMCUsMjAlICB7IGxlZnQ6IDEwcHg7IH0u
IFdhcyAxMCUsMjAlIHsgbGVmdDogMTAyMHB4OyB9LgorUEFTUyBydWxlIGlzIG51bGwKK1BBU1Mg
cnVsZS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NU
ZXh0IGlzICcwJSB7IGxlZnQ6IDBweDsgfScKK1BBU1MgcnVsZS50eXBlIGlzIHdpbmRvdy5DU1NS
dWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NUZXh0IGlzICcxMDAlIHsgbGVmdDogMTAw
cHg7IH0nCisKK2RlbGV0ZVJ1bGUgbWF0Y2hpbmcgb3JkZXI6IGZyb20gbGFzdCB0byBmaXJzdCBz
cGVjaWZpZWQKK1BBU1Mga2V5ZnJhbWVzRGVsZXRlTGFzdC50eXBlIGlzIHdpbmRvdy5DU1NSdWxl
LktFWUZSQU1FU19SVUxFCitQQVNTIGtleWZyYW1lc0RlbGV0ZUxhc3QubmFtZSBpcyAndGVzdC1k
ZWxldGUtbGFzdCcKK1BBU1MgcnVsZXNEZWxldGVMYXN0Lmxlbmd0aCBpcyA4CitQQVNTIHJ1bGVz
RGVsZXRlTGFzdC5sZW5ndGggaXMgNworUEFTUyBydWxlLnR5cGUgaXMgd2luZG93LkNTU1J1bGUu
S0VZRlJBTUVfUlVMRQorUEFTUyBydWxlLmNzc1RleHQgaXMgJzEwJSB7IGxlZnQ6IDEwcHg7IH0n
CitQQVNTIHJ1bGVzRGVsZXRlTGFzdC5sZW5ndGggaXMgNgorUEFTUyBydWxlLnR5cGUgaXMgd2lu
ZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRQorUEFTUyBydWxlLmNzc1RleHQgaXMgJzEwJSwyMCUg
eyBsZWZ0OiAxMDIwcHg7IH0nCitQQVNTIHJ1bGVzRGVsZXRlTGFzdC5sZW5ndGggaXMgNgorUEFT
UyBydWxlc0RlbGV0ZUxhc3QubGVuZ3RoIGlzIDUKK1BBU1MgcnVsZS50eXBlIGlzIHdpbmRvdy5D
U1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NUZXh0IGlzICcwJSB7IGxlZnQ6IDBw
eDsgfScKK1BBU1MgcnVsZXNEZWxldGVMYXN0Lmxlbmd0aCBpcyA0CitQQVNTIHJ1bGUudHlwZSBp
cyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitQQVNTIHJ1bGUuY3NzVGV4dCBpcyAnMTAw
JSB7IGxlZnQ6IDEwMHB4OyB9JworCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJh
bWVzLXJ1bGUuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXJ1bGUuaHRt
bAppbmRleCA5YTY1ZTkxLi42Mjk5ZGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL2tleWZyYW1lcy1ydWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlm
cmFtZXMtcnVsZS5odG1sCkBAIC0xNSw2ICsxNSwyNyBAQAogICAgIDUwJSB7IGxlZnQ6IDMwcHg7
IH0KICAgICB0byB7IGxlZnQ6IDIwcHg7IH0KICAgfQorICBALXdlYmtpdC1rZXlmcmFtZXMgdGVz
dC1maW5kLWxhc3QgeworICAgIGZyb20geyBsZWZ0OiAtMXB4OyAgfQorICAgIDAlIHsgbGVmdDog
MHB4OyB9CisgICAgMTAlIHsgbGVmdDogLTFweDsgfQorICAgIDEwJSB7IGxlZnQ6IDEwcHg7fQor
ICAgIDEwJSwgMjAlIHsgbGVmdDogLTFweDsgICB9CisgICAgMTAlLDIwJSB7IGxlZnQ6IDEwMjBw
eDsgfQorICAgIDEwMCUgeyBsZWZ0OiAtMXB4OyB9CisgICAgdG8geyBsZWZ0OiAxMDBweDsgfQor
ICB9CisgIEAtd2Via2l0LWtleWZyYW1lcyB0ZXN0LWRlbGV0ZS1sYXN0IHsKKyAgICBmcm9tIHsg
bGVmdDogMHB4OyAgfQorICAgIDAlIHsgbGVmdDogLTFweDsgfQorICAgIDEwJSB7IGxlZnQ6IDEw
cHg7IH0KKyAgICAxMCUgeyBsZWZ0OiAtMXB4O30KKyAgICAxMCUsIDIwJSB7IGxlZnQ6IDEwMjBw
eDsgICB9CisgICAgMTAlLDIwJSB7IGxlZnQ6IC0xcHg7IH0KKyAgICAxMDAlIHsgbGVmdDogMTAw
cHg7IH0KKyAgICB0byB7IGxlZnQ6IC0xcHg7IH0KKyAgfQorCiA8L3N0eWxlPgogPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CkBAIC0x
NjgsNiArMTg5LDY4IEBAIHNob3VsZEJlKCJydWxlczIuaXRlbSgwKS5rZXlUZXh0IiwgIicwJSci
KTsKIHNob3VsZEJlKCJydWxlczIuaXRlbSgxKS5rZXlUZXh0IiwgIicxMDAlJyIpOwogCiBkZWJ1
ZygiIik7CitkZWJ1ZygiZmluZFJ1bGUgbWF0Y2hpbmcgb3JkZXI6IGZyb20gbGFzdCB0byBmaXJz
dCBzcGVjaWZpZWQiKTsKKwordmFyIGtleWZyYW1lc0ZpbmRMYXN0ID0gZG9jdW1lbnQuc3R5bGVT
aGVldHMuaXRlbSgwKS5jc3NSdWxlcy5pdGVtKDMpOworc2hvdWxkQmUoImtleWZyYW1lc0ZpbmRM
YXN0LnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVTX1JVTEUiKTsKK3Nob3VsZEJlKCJr
ZXlmcmFtZXNGaW5kTGFzdC5uYW1lIiwgIid0ZXN0LWZpbmQtbGFzdCciKTsKKworCitydWxlID0g
a2V5ZnJhbWVzRmluZExhc3QuZmluZFJ1bGUoIjEwJSIpOworc2hvdWxkQmUoInJ1bGUudHlwZSIs
ICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NUZXh0
IiwgIicxMCUgeyBsZWZ0OiAxMHB4OyB9JyIpOworcnVsZSA9IGtleWZyYW1lc0ZpbmRMYXN0LmZp
bmRSdWxlKCIxMC4wJSIpOworc2hvdWxkQmUoInJ1bGUudHlwZSIsICJ3aW5kb3cuQ1NTUnVsZS5L
RVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NUZXh0IiwgIicxMCUgeyBsZWZ0OiAx
MHB4OyB9JyIpOworcnVsZSA9IGtleWZyYW1lc0ZpbmRMYXN0LmZpbmRSdWxlKCIxMCUsMjAlIik7
CitzaG91bGRCZSgicnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsK
K3Nob3VsZEJlKCJydWxlLmNzc1RleHQiLCAiJzEwJSwyMCUgIHsgbGVmdDogMTBweDsgfSciKTsK
K3J1bGUgPSBrZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiICAgMTAlLCAyMCUgIik7CitzaG91
bGRCZSgicnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3Vs
ZEJlKCJydWxlLmNzc1RleHQiLCAiJzEwJSwyMCUgIHsgbGVmdDogMTBweDsgfSciKTsKK3J1bGUg
PSBrZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiMjAlLCAxMCUgIik7CitzaG91bGRCZSgicnVs
ZSIsICJudWxsIik7CitydWxlID0ga2V5ZnJhbWVzRmluZExhc3QuZmluZFJ1bGUoImZyb20iKTsK
K3Nob3VsZEJlKCJydWxlLnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOwor
c2hvdWxkQmUoInJ1bGUuY3NzVGV4dCIsICInMCUgeyBsZWZ0OiAwcHg7IH0nIik7CitydWxlID0g
a2V5ZnJhbWVzRmluZExhc3QuZmluZFJ1bGUoIjEwMCUiKTsKK3Nob3VsZEJlKCJydWxlLnR5cGUi
LCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOworc2hvdWxkQmUoInJ1bGUuY3NzVGV4
dCIsICInMTAwJSB7IGxlZnQ6IDEwMHB4OyB9JyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiZGVs
ZXRlUnVsZSBtYXRjaGluZyBvcmRlcjogZnJvbSBsYXN0IHRvIGZpcnN0IHNwZWNpZmllZCIpOwor
Cit2YXIga2V5ZnJhbWVzRGVsZXRlTGFzdCA9IGRvY3VtZW50LnN0eWxlU2hlZXRzLml0ZW0oMCku
Y3NzUnVsZXMuaXRlbSg0KTsKK3Nob3VsZEJlKCJrZXlmcmFtZXNEZWxldGVMYXN0LnR5cGUiLCAi
d2luZG93LkNTU1J1bGUuS0VZRlJBTUVTX1JVTEUiKTsKK3Nob3VsZEJlKCJrZXlmcmFtZXNEZWxl
dGVMYXN0Lm5hbWUiLCAiJ3Rlc3QtZGVsZXRlLWxhc3QnIik7CisKK3ZhciBydWxlc0RlbGV0ZUxh
c3QgPSBrZXlmcmFtZXNEZWxldGVMYXN0LmNzc1J1bGVzOworc2hvdWxkQmUoInJ1bGVzRGVsZXRl
TGFzdC5sZW5ndGgiLCAiOCIpOworCitrZXlmcmFtZXNEZWxldGVMYXN0LmRlbGV0ZVJ1bGUoIjEw
JSIpOworc2hvdWxkQmUoInJ1bGVzRGVsZXRlTGFzdC5sZW5ndGgiLCAiNyIpOworcnVsZSA9IGtl
eWZyYW1lc0RlbGV0ZUxhc3QuZmluZFJ1bGUoIjEwJSIpOworc2hvdWxkQmUoInJ1bGUudHlwZSIs
ICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NUZXh0
IiwgIicxMCUgeyBsZWZ0OiAxMHB4OyB9JyIpOwora2V5ZnJhbWVzRGVsZXRlTGFzdC5kZWxldGVS
dWxlKCIxMCUsMjAlIik7CitzaG91bGRCZSgicnVsZXNEZWxldGVMYXN0Lmxlbmd0aCIsICI2Iik7
CitydWxlID0ga2V5ZnJhbWVzRGVsZXRlTGFzdC5maW5kUnVsZSgiMTAlLDIwJSIpOworc2hvdWxk
QmUoInJ1bGUudHlwZSIsICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRC
ZSgicnVsZS5jc3NUZXh0IiwgIicxMCUsMjAlIHsgbGVmdDogMTAyMHB4OyB9JyIpOwora2V5ZnJh
bWVzRGVsZXRlTGFzdC5kZWxldGVSdWxlKCIyMCUsIDEwJSAiKTsKK3Nob3VsZEJlKCJydWxlc0Rl
bGV0ZUxhc3QubGVuZ3RoIiwgIjYiKTsKK2tleWZyYW1lc0RlbGV0ZUxhc3QuZGVsZXRlUnVsZSgi
ZnJvbSIpOworc2hvdWxkQmUoInJ1bGVzRGVsZXRlTGFzdC5sZW5ndGgiLCAiNSIpOworcnVsZSA9
IGtleWZyYW1lc0RlbGV0ZUxhc3QuZmluZFJ1bGUoImZyb20iKTsKK3Nob3VsZEJlKCJydWxlLnR5
cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOworc2hvdWxkQmUoInJ1bGUuY3Nz
VGV4dCIsICInMCUgeyBsZWZ0OiAwcHg7IH0nIik7CitrZXlmcmFtZXNEZWxldGVMYXN0LmRlbGV0
ZVJ1bGUoIjEwMCUiKTsKK3Nob3VsZEJlKCJydWxlc0RlbGV0ZUxhc3QubGVuZ3RoIiwgIjQiKTsK
K3J1bGUgPSBrZXlmcmFtZXNEZWxldGVMYXN0LmZpbmRSdWxlKCIxMDAlIik7CitzaG91bGRCZSgi
cnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJlKCJy
dWxlLmNzc1RleHQiLCAiJzEwMCUgeyBsZWZ0OiAxMDBweDsgfSciKTsKKworZGVidWcoIiIpOwog
CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdW5wcmVmaXhlZC1r
ZXlmcmFtZXMtcnVsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3VucHJl
Zml4ZWQta2V5ZnJhbWVzLXJ1bGUtZXhwZWN0ZWQudHh0CmluZGV4IGNhMGY1NDguLmQ4OGYxMGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdW5wcmVmaXhlZC1rZXlmcmFtZXMt
cnVsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy91bnByZWZpeGVk
LWtleWZyYW1lcy1ydWxlLWV4cGVjdGVkLnR4dApAQCAtNzUsNiArNzUsNDEgQEAgUEFTUyBydWxl
czIuaXRlbSgwKS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKIFBBU1MgcnVs
ZXMyLml0ZW0oMCkua2V5VGV4dCBpcyAnMCUnCiBQQVNTIHJ1bGVzMi5pdGVtKDEpLmtleVRleHQg
aXMgJzEwMCUnCiAKK2ZpbmRSdWxlIG1hdGNoaW5nIG9yZGVyOiBmcm9tIGxhc3QgdG8gZmlyc3Qg
c3BlY2lmaWVkCitQQVNTIGtleWZyYW1lc0ZpbmRMYXN0LnR5cGUgaXMgd2luZG93LkNTU1J1bGUu
S0VZRlJBTUVTX1JVTEUKK1BBU1Mga2V5ZnJhbWVzRmluZExhc3QubmFtZSBpcyAndGVzdC1maW5k
LWxhc3QnCitQQVNTIHJ1bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitQ
QVNTIHJ1bGUuY3NzVGV4dCBpcyAnMTAlIHsgbGVmdDogMTBweDsgfScKK1BBU1MgcnVsZS50eXBl
IGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NUZXh0IGlzICcx
MCUgeyBsZWZ0OiAxMHB4OyB9JworUEFTUyBydWxlLnR5cGUgaXMgd2luZG93LkNTU1J1bGUuS0VZ
RlJBTUVfUlVMRQorRkFJTCBydWxlLmNzc1RleHQgc2hvdWxkIGJlIDEwJSwyMCUgIHsgbGVmdDog
MTBweDsgfS4gV2FzIDEwJSwyMCUgeyBsZWZ0OiAxMDIwcHg7IH0uCitQQVNTIHJ1bGUudHlwZSBp
cyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitGQUlMIHJ1bGUuY3NzVGV4dCBzaG91bGQg
YmUgMTAlLDIwJSAgeyBsZWZ0OiAxMHB4OyB9LiBXYXMgMTAlLDIwJSB7IGxlZnQ6IDEwMjBweDsg
fS4KK1BBU1MgcnVsZSBpcyBudWxsCitQQVNTIHJ1bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5L
RVlGUkFNRV9SVUxFCitQQVNTIHJ1bGUuY3NzVGV4dCBpcyAnMCUgeyBsZWZ0OiAwcHg7IH0nCitQ
QVNTIHJ1bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitQQVNTIHJ1bGUu
Y3NzVGV4dCBpcyAnMTAwJSB7IGxlZnQ6IDEwMHB4OyB9JworCitkZWxldGVSdWxlIG1hdGNoaW5n
IG9yZGVyOiBmcm9tIGxhc3QgdG8gZmlyc3Qgc3BlY2lmaWVkCitQQVNTIGtleWZyYW1lc0RlbGV0
ZUxhc3QudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRVNfUlVMRQorUEFTUyBrZXlmcmFt
ZXNEZWxldGVMYXN0Lm5hbWUgaXMgJ3Rlc3QtZGVsZXRlLWxhc3QnCitQQVNTIHJ1bGVzRGVsZXRl
TGFzdC5sZW5ndGggaXMgOAorUEFTUyBydWxlc0RlbGV0ZUxhc3QubGVuZ3RoIGlzIDcKK1BBU1Mg
cnVsZS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BBU1MgcnVsZS5jc3NU
ZXh0IGlzICcxMCUgeyBsZWZ0OiAxMHB4OyB9JworUEFTUyBydWxlc0RlbGV0ZUxhc3QubGVuZ3Ro
IGlzIDYKK1BBU1MgcnVsZS50eXBlIGlzIHdpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUKK1BB
U1MgcnVsZS5jc3NUZXh0IGlzICcxMCUsMjAlIHsgbGVmdDogMTAyMHB4OyB9JworUEFTUyBydWxl
c0RlbGV0ZUxhc3QubGVuZ3RoIGlzIDYKK1BBU1MgcnVsZXNEZWxldGVMYXN0Lmxlbmd0aCBpcyA1
CitQQVNTIHJ1bGUudHlwZSBpcyB3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFCitQQVNTIHJ1
bGUuY3NzVGV4dCBpcyAnMCUgeyBsZWZ0OiAwcHg7IH0nCitQQVNTIHJ1bGVzRGVsZXRlTGFzdC5s
ZW5ndGggaXMgNAorUEFTUyBydWxlLnR5cGUgaXMgd2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVM
RQorUEFTUyBydWxlLmNzc1RleHQgaXMgJzEwMCUgeyBsZWZ0OiAxMDBweDsgfScKKwogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL3VucHJlZml4ZWQta2V5ZnJhbWVzLXJ1bGUuaHRtbCBiL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvdW5wcmVmaXhlZC1rZXlmcmFtZXMtcnVsZS5odG1sCmluZGV4
IDUwYTBiNjcuLjE2ODZlYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdW5w
cmVmaXhlZC1rZXlmcmFtZXMtcnVsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
dW5wcmVmaXhlZC1rZXlmcmFtZXMtcnVsZS5odG1sCkBAIC0xNSw2ICsxNSwyNyBAQAogICAgIDUw
JSB7IGxlZnQ6IDMwcHg7IH0KICAgICB0byB7IGxlZnQ6IDIwcHg7IH0KICAgfQorICBAa2V5ZnJh
bWVzIHRlc3QtZmluZC1sYXN0IHsKKyAgICBmcm9tIHsgbGVmdDogLTFweDsgIH0KKyAgICAwJSB7
IGxlZnQ6IDBweDsgfQorICAgIDEwJSB7IGxlZnQ6IC0xcHg7IH0KKyAgICAxMCUgeyBsZWZ0OiAx
MHB4O30KKyAgICAxMCUsIDIwJSB7IGxlZnQ6IC0xcHg7ICAgfQorICAgIDEwJSwyMCUgeyBsZWZ0
OiAxMDIwcHg7IH0KKyAgICAxMDAlIHsgbGVmdDogLTFweDsgfQorICAgIHRvIHsgbGVmdDogMTAw
cHg7IH0KKyAgfQorICBAa2V5ZnJhbWVzIHRlc3QtZGVsZXRlLWxhc3QgeworICAgIGZyb20geyBs
ZWZ0OiAwcHg7ICB9CisgICAgMCUgeyBsZWZ0OiAtMXB4OyB9CisgICAgMTAlIHsgbGVmdDogMTBw
eDsgfQorICAgIDEwJSB7IGxlZnQ6IC0xcHg7fQorICAgIDEwJSwgMjAlIHsgbGVmdDogMTAyMHB4
OyAgIH0KKyAgICAxMCUsMjAlIHsgbGVmdDogLTFweDsgfQorICAgIDEwMCUgeyBsZWZ0OiAxMDBw
eDsgfQorICAgIHRvIHsgbGVmdDogLTFweDsgfQorICB9CisKIDwvc3R5bGU+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTE2
OCw2ICsxODksNjggQEAgc2hvdWxkQmUoInJ1bGVzMi5pdGVtKDApLmtleVRleHQiLCAiJzAlJyIp
Owogc2hvdWxkQmUoInJ1bGVzMi5pdGVtKDEpLmtleVRleHQiLCAiJzEwMCUnIik7CiAKIGRlYnVn
KCIiKTsKK2RlYnVnKCJmaW5kUnVsZSBtYXRjaGluZyBvcmRlcjogZnJvbSBsYXN0IHRvIGZpcnN0
IHNwZWNpZmllZCIpOworCit2YXIga2V5ZnJhbWVzRmluZExhc3QgPSBkb2N1bWVudC5zdHlsZVNo
ZWV0cy5pdGVtKDApLmNzc1J1bGVzLml0ZW0oMyk7CitzaG91bGRCZSgia2V5ZnJhbWVzRmluZExh
c3QudHlwZSIsICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRVNfUlVMRSIpOworc2hvdWxkQmUoImtl
eWZyYW1lc0ZpbmRMYXN0Lm5hbWUiLCAiJ3Rlc3QtZmluZC1sYXN0JyIpOworCisKK3J1bGUgPSBr
ZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiMTAlIik7CitzaG91bGRCZSgicnVsZS50eXBlIiwg
IndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJlKCJydWxlLmNzc1RleHQi
LCAiJzEwJSB7IGxlZnQ6IDEwcHg7IH0nIik7CitydWxlID0ga2V5ZnJhbWVzRmluZExhc3QuZmlu
ZFJ1bGUoIjEwLjAlIik7CitzaG91bGRCZSgicnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktF
WUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJlKCJydWxlLmNzc1RleHQiLCAiJzEwJSB7IGxlZnQ6IDEw
cHg7IH0nIik7CitydWxlID0ga2V5ZnJhbWVzRmluZExhc3QuZmluZFJ1bGUoIjEwJSwyMCUiKTsK
K3Nob3VsZEJlKCJydWxlLnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOwor
c2hvdWxkQmUoInJ1bGUuY3NzVGV4dCIsICInMTAlLDIwJSAgeyBsZWZ0OiAxMHB4OyB9JyIpOwor
cnVsZSA9IGtleWZyYW1lc0ZpbmRMYXN0LmZpbmRSdWxlKCIgICAxMCUsIDIwJSAiKTsKK3Nob3Vs
ZEJlKCJydWxlLnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOworc2hvdWxk
QmUoInJ1bGUuY3NzVGV4dCIsICInMTAlLDIwJSAgeyBsZWZ0OiAxMHB4OyB9JyIpOworcnVsZSA9
IGtleWZyYW1lc0ZpbmRMYXN0LmZpbmRSdWxlKCIyMCUsIDEwJSAiKTsKK3Nob3VsZEJlKCJydWxl
IiwgIm51bGwiKTsKK3J1bGUgPSBrZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiZnJvbSIpOwor
c2hvdWxkQmUoInJ1bGUudHlwZSIsICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7Citz
aG91bGRCZSgicnVsZS5jc3NUZXh0IiwgIicwJSB7IGxlZnQ6IDBweDsgfSciKTsKK3J1bGUgPSBr
ZXlmcmFtZXNGaW5kTGFzdC5maW5kUnVsZSgiMTAwJSIpOworc2hvdWxkQmUoInJ1bGUudHlwZSIs
ICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NUZXh0
IiwgIicxMDAlIHsgbGVmdDogMTAwcHg7IH0nIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJkZWxl
dGVSdWxlIG1hdGNoaW5nIG9yZGVyOiBmcm9tIGxhc3QgdG8gZmlyc3Qgc3BlY2lmaWVkIik7CisK
K3ZhciBrZXlmcmFtZXNEZWxldGVMYXN0ID0gZG9jdW1lbnQuc3R5bGVTaGVldHMuaXRlbSgwKS5j
c3NSdWxlcy5pdGVtKDQpOworc2hvdWxkQmUoImtleWZyYW1lc0RlbGV0ZUxhc3QudHlwZSIsICJ3
aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRVNfUlVMRSIpOworc2hvdWxkQmUoImtleWZyYW1lc0RlbGV0
ZUxhc3QubmFtZSIsICIndGVzdC1kZWxldGUtbGFzdCciKTsKKwordmFyIHJ1bGVzRGVsZXRlTGFz
dCA9IGtleWZyYW1lc0RlbGV0ZUxhc3QuY3NzUnVsZXM7CitzaG91bGRCZSgicnVsZXNEZWxldGVM
YXN0Lmxlbmd0aCIsICI4Iik7CisKK2tleWZyYW1lc0RlbGV0ZUxhc3QuZGVsZXRlUnVsZSgiMTAl
Iik7CitzaG91bGRCZSgicnVsZXNEZWxldGVMYXN0Lmxlbmd0aCIsICI3Iik7CitydWxlID0ga2V5
ZnJhbWVzRGVsZXRlTGFzdC5maW5kUnVsZSgiMTAlIik7CitzaG91bGRCZSgicnVsZS50eXBlIiwg
IndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJlKCJydWxlLmNzc1RleHQi
LCAiJzEwJSB7IGxlZnQ6IDEwcHg7IH0nIik7CitrZXlmcmFtZXNEZWxldGVMYXN0LmRlbGV0ZVJ1
bGUoIjEwJSwyMCUiKTsKK3Nob3VsZEJlKCJydWxlc0RlbGV0ZUxhc3QubGVuZ3RoIiwgIjYiKTsK
K3J1bGUgPSBrZXlmcmFtZXNEZWxldGVMYXN0LmZpbmRSdWxlKCIxMCUsMjAlIik7CitzaG91bGRC
ZSgicnVsZS50eXBlIiwgIndpbmRvdy5DU1NSdWxlLktFWUZSQU1FX1JVTEUiKTsKK3Nob3VsZEJl
KCJydWxlLmNzc1RleHQiLCAiJzEwJSwyMCUgeyBsZWZ0OiAxMDIwcHg7IH0nIik7CitrZXlmcmFt
ZXNEZWxldGVMYXN0LmRlbGV0ZVJ1bGUoIjIwJSwgMTAlICIpOworc2hvdWxkQmUoInJ1bGVzRGVs
ZXRlTGFzdC5sZW5ndGgiLCAiNiIpOwora2V5ZnJhbWVzRGVsZXRlTGFzdC5kZWxldGVSdWxlKCJm
cm9tIik7CitzaG91bGRCZSgicnVsZXNEZWxldGVMYXN0Lmxlbmd0aCIsICI1Iik7CitydWxlID0g
a2V5ZnJhbWVzRGVsZXRlTGFzdC5maW5kUnVsZSgiZnJvbSIpOworc2hvdWxkQmUoInJ1bGUudHlw
ZSIsICJ3aW5kb3cuQ1NTUnVsZS5LRVlGUkFNRV9SVUxFIik7CitzaG91bGRCZSgicnVsZS5jc3NU
ZXh0IiwgIicwJSB7IGxlZnQ6IDBweDsgfSciKTsKK2tleWZyYW1lc0RlbGV0ZUxhc3QuZGVsZXRl
UnVsZSgiMTAwJSIpOworc2hvdWxkQmUoInJ1bGVzRGVsZXRlTGFzdC5sZW5ndGgiLCAiNCIpOwor
cnVsZSA9IGtleWZyYW1lc0RlbGV0ZUxhc3QuZmluZFJ1bGUoIjEwMCUiKTsKK3Nob3VsZEJlKCJy
dWxlLnR5cGUiLCAid2luZG93LkNTU1J1bGUuS0VZRlJBTUVfUlVMRSIpOworc2hvdWxkQmUoInJ1
bGUuY3NzVGV4dCIsICInMTAwJSB7IGxlZnQ6IDEwMHB4OyB9JyIpOworCitkZWJ1ZygiIik7CiAK
IDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDljYzE0YmMuLjdmNWQwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0wMS0xNSAgc3lsdmFpbi1nYWxpbmVhdSAgPGdhbGluZWF1QGFkb2Jl
LmNvbT4KKworICAgICAgICBDU1NLZXlmcmFtZXNSdWxlOjpmaW5kUnVsZSgpIGFuZCBkZWxldGVS
dWxlKCkgc2hvdWxkIGRlbGV0ZSB0aGUgbGFzdCBtYXRjaGluZyBydWxlLCBub3QgdGhlIGZpcnN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk3MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSBleGlzdGluZyB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZCB0byB2ZXJpZnkg
dGhpcyBiZWhhdmlvci4KKworICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZVJ1bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6OmdldEtleXMpOiBEZWxldGVkLgorICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKTogdXNlIFN0eWxlS2V5ZnJhbWU6OmtleXMoKS4g
CisgICAgICAgICogY3NzL0NTU0tleWZyYW1lUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUtleWZyYW1lOjpwYXJzZUtleVN0cmluZyk6IERlbGV0ZWQuIE1vdmVkIHRvIENTU1BhcnNl
ci4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6OmtleVRleHQpOiBCdWlsZCBrZXlm
cmFtZSBzZWxlY3RvciBmcm9tIFZlY3Rvcjxkb3VibGU+IHJlcHJlc2VudGF0aW9uLgorICAgICAg
ICAqIGNzcy9DU1NLZXlmcmFtZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJh
bWU6OnNldEtleVRleHQpOiBwYXJzZSBrZXlmcmFtZSBzZWxlY3RvciBpbnRvIFZlY3Rvcjxkb3Vi
bGU+LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVLZXlmcmFtZTo6a2V5cyk6IEFkZGVkLiBSZXR1
cm5zIHZlY3RvciByZXByZXNlbnRhdGlvbiBvZiBzZWxlY3RvciBrZXlzLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVLZXlmcmFtZTo6Z2V0S2V5cyk6IERlbGV0ZWQuIE5vdyBrZXlzKCkuCisgICAg
ICAgICogY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
dWxlS2V5ZnJhbWVzOjpmaW5kS2V5ZnJhbWVJbmRleCk6IFJldHVybiBsYXN0IG1hdGNoaW5nIHJ1
bGUuCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlS2V5ZnJhbWVTZWxlY3Rvcik6IEFkZGVkLiBNb3ZlZCBmcm9tIFN0eWxlS2V5
ZnJhbWUuCisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZUtleWZyYW1lU2VsZWN0b3IpOiBBZGRlZC4gTW92ZWQgZnJvbSBTdHlsZUtl
eWZyYW1lLgorICAgICAgICAKKyAKIDIwMTUtMDEtMTMgIFNoaXZha3VtYXIgSk0gIDxzaGl2YS5q
bUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBGaXggRGVidWcgQnVpbGQgRXJyb3IgaW4gV2ViY29y
ZSBtb2R1bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCmluZGV4IDgyOWYw
ODQuLjQ3MzE2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCkBAIC00
OSwzNSArNDksMjEgQEAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgU3R5bGVLZXlmcmFtZTo6bXV0
YWJsZVByb3BlcnRpZXMoKQogICAgIHJldHVybiBkb3duY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPihtX3Byb3BlcnRpZXMuZ2V0KCkpOwogfQogCi0vKiBzdGF0aWMgKi8KLXZvaWQgU3R5bGVL
ZXlmcmFtZTo6cGFyc2VLZXlTdHJpbmcoY29uc3QgU3RyaW5nJiBzLCBWZWN0b3I8ZG91YmxlPiYg
a2V5cykKK1N0cmluZyBTdHlsZUtleWZyYW1lOjprZXlUZXh0KCkgY29uc3QKIHsKLSAgICBrZXlz
LmNsZWFyKCk7Ci0gICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nczsKLSAgICBzLnNwbGl0KCcsJywg
c3RyaW5ncyk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmluZ3Muc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgZG91YmxlIGtleSA9IC0xOwotICAgICAgICBTdHJpbmcgY3VyID0gc3Ry
aW5nc1tpXS5zdHJpcFdoaXRlU3BhY2UoKTsKLQotICAgICAgICAvLyBGb3Igbm93IHRoZSBzeW50
YXggTVVTVCBiZSAneHh4JScgb3IgJ2Zyb20nIG9yICd0bycsIHdoZXJlIHh4eCBpcyBhIGxlZ2Fs
IGZsb2F0aW5nIHBvaW50IG51bWJlcgotICAgICAgICBpZiAoY3VyID09ICJmcm9tIikKLSAgICAg
ICAgICAgIGtleSA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKGN1ciA9PSAidG8iKQotICAgICAgICAg
ICAga2V5ID0gMTsKLSAgICAgICAgZWxzZSBpZiAoY3VyLmVuZHNXaXRoKCclJykpIHsKLSAgICAg
ICAgICAgIGRvdWJsZSBrID0gY3VyLnN1YnN0cmluZygwLCBjdXIubGVuZ3RoKCkgLSAxKS50b0Rv
dWJsZSgpOwotICAgICAgICAgICAgaWYgKGsgPj0gMCAmJiBrIDw9IDEwMCkKLSAgICAgICAgICAg
ICAgICBrZXkgPSBrIC8gMTAwOworICAgIFN0cmluZ0J1aWxkZXIga2V5VGV4dDsKKyAgICAKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fa2V5cy5zaXplKCk7ICsraSkgeworICAgICAgICBp
ZiAoaSkgeworICAgICAgICAgICAga2V5VGV4dC5hcHBlbmQoJywnKTsKICAgICAgICAgfQotICAg
ICAgICBpZiAoa2V5IDwgMCkgewotICAgICAgICAgICAga2V5cy5jbGVhcigpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGtleXMuYXBwZW5kKGtleSk7CisgICAgICAg
IGtleVRleHQuYXBwZW5kTnVtYmVyKG1fa2V5cy5hdChpKSAqIDEwMCk7CisgICAgICAgIGtleVRl
eHQuYXBwZW5kKCclJyk7CiAgICAgfQorICAgIAorICAgIHJldHVybiBrZXlUZXh0LnRvU3RyaW5n
KCk7CiB9Ci0KKyAgICAKIFN0cmluZyBTdHlsZUtleWZyYW1lOjpjc3NUZXh0KCkgY29uc3QKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NLZXlmcmFtZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUu
aAppbmRleCA0MzAzYzBmLi5hYjNlZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTS2V5ZnJhbWVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVs
ZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENTU0tleWZyYW1lUnVsZV9oCiAjZGVmaW5l
IENTU0tleWZyYW1lUnVsZV9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJD
U1NSdWxlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAKQEAgLTQ0LDI1ICs0NSwy
MSBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5TdHlsZUtleWZyYW1lKCk7CiAKLSAgICBTdHJpbmcg
a2V5VGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9Ci0gICAgdm9pZCBzZXRLZXlUZXh0KGNv
bnN0IFN0cmluZyYgcykgeyBtX2tleSA9IHM7IH0KKyAgICBTdHJpbmcga2V5VGV4dCgpIGNvbnN0
OworICAgIHZvaWQgc2V0S2V5VGV4dChjb25zdCBTdHJpbmcmIHMpIHsgbV9rZXlzID0gQ1NTUGFy
c2VyOjpwYXJzZUtleWZyYW1lU2VsZWN0b3Iocyk7IH0KIAotICAgIHZvaWQgZ2V0S2V5cyhWZWN0
b3I8ZG91YmxlPiYga2V5cykgY29uc3QgICB7IHBhcnNlS2V5U3RyaW5nKG1fa2V5LCBrZXlzKTsg
fQorICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBrZXlzKCkgY29uc3QgeyByZXR1cm4gbV9rZXlz
OyB9OwogICAgIAogICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVydGllcygpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvcGVydGllczsgfQogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIG11
dGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgCiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLQor
ICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTdHlsZUtleWZyYW1lKFJlZjxTdHlsZVByb3Bl
cnRpZXM+JiYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHBhcnNlS2V5U3RyaW5nKGNvbnN0IFN0
cmluZyYsIFZlY3Rvcjxkb3VibGU+JiBrZXlzKTsKLSAgICAKICAgICBSZWY8U3R5bGVQcm9wZXJ0
aWVzPiBtX3Byb3BlcnRpZXM7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgcGFyc2Vk
IHZlY3RvciBvZiBmbG9hdHMuCi0gICAgLy8gY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2Yga2V5cwot
ICAgIFN0cmluZyBtX2tleTsKKyAgICBWZWN0b3I8ZG91YmxlPiBtX2tleXM7CiB9OwogCiBjbGFz
cyBDU1NLZXlmcmFtZVJ1bGUgZmluYWwgOiBwdWJsaWMgQ1NTUnVsZSB7CkBAIC03Myw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIG92
ZXJyaWRlOwogCiAgICAgU3RyaW5nIGtleVRleHQoKSBjb25zdCB7IHJldHVybiBtX2tleWZyYW1l
LT5rZXlUZXh0KCk7IH0KLSAgICB2b2lkIHNldEtleVRleHQoY29uc3QgU3RyaW5nJiBzKSB7IG1f
a2V5ZnJhbWUtPnNldEtleVRleHQocyk7IH0KKyAgICB2b2lkIHNldEtleVRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0KSB7IG1fa2V5ZnJhbWUtPnNldEtleVRleHQodGV4dCk7IH0KIAogICAgIENTU1N0
eWxlRGVjbGFyYXRpb24mIHN0eWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNS
dWxlLmNwcAppbmRleCA3NzljZTNiLi41ZjEzNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwCkBAIC03MiwxOCArNzIsMTYgQEAgdm9pZCBTdHlsZVJ1bGVLZXlmcmFt
ZXM6OndyYXBwZXJSZW1vdmVLZXlmcmFtZSh1bnNpZ25lZCBpbmRleCkKIAogaW50IFN0eWxlUnVs
ZUtleWZyYW1lczo6ZmluZEtleWZyYW1lSW5kZXgoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiB7
Ci0gICAgU3RyaW5nIHBlcmNlbnRhZ2VTdHJpbmc7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGtleSwgImZyb20iKSkKLSAgICAgICAgcGVyY2VudGFnZVN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
MCUiKTsKLSAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShrZXksICJ0byIpKQotICAgICAg
ICBwZXJjZW50YWdlU3RyaW5nID0gQVNDSUlMaXRlcmFsKCIxMDAlIik7Ci0gICAgZWxzZQotICAg
ICAgICBwZXJjZW50YWdlU3RyaW5nID0ga2V5OworICAgIFZlY3Rvcjxkb3VibGU+JiYga2V5cyA9
IENTU1BhcnNlcjo6cGFyc2VLZXlmcmFtZVNlbGVjdG9yKGtleSk7CiAgICAgCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChtX2tleWZyYW1lc1tpXS0+a2V5VGV4dCgpID09IHBlcmNlbnRhZ2VTdHJpbmcpCisgICAgaWYg
KCFrZXlzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIAorICAgIGZvciAoc2l6ZV90
IGkgPSBtX2tleWZyYW1lcy5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGlmIChtX2tleWZyYW1l
c1tpXS0+a2V5cygpID09IGtleXMpCiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICB9CisgICAg
CiAgICAgcmV0dXJuIC0xOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGM5ZGM0
YzYuLjQ3NzZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC03NCw2ICs3NCw4IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU2VsZWN0
b3JDaGVja2VyLmgiCisjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgpAQCAtNDY4MCw2ICs0NjgyLDM2IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25Qcm9wZXJ0eShBbmlt
YXRpb25QYXJzZUNvbnRleHQmIGNvCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKKy8qIHN0YXRp
YyAqLworVmVjdG9yPGRvdWJsZT4gQ1NTUGFyc2VyOjpwYXJzZUtleWZyYW1lU2VsZWN0b3IoY29u
c3QgU3RyaW5nJiBzKSB7CisgICAgVmVjdG9yPGRvdWJsZT4ga2V5czsKKyAgICBWZWN0b3I8U3Ry
aW5nPiBzdHJpbmdzOworICAgIHMuc3BsaXQoJywnLCBzdHJpbmdzKTsKKyAgICAKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHN0cmluZ3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZG91Ymxl
IGtleSA9IC0xOworICAgICAgICBTdHJpbmcgY3VyID0gc3RyaW5nc1tpXS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEZvciBub3cgdGhlIHN5bnRheCBNVVNUIGJlICd4
eHglJyBvciAnZnJvbScgb3IgJ3RvJywgd2hlcmUgeHh4IGlzIGEgbGVnYWwgZmxvYXRpbmcgcG9p
bnQgbnVtYmVyCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGN1ciwgImZyb20i
KSkKKyAgICAgICAgICAgIGtleSA9IDA7CisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UoY3VyLCAidG8iKSkKKyAgICAgICAgICAgIGtleSA9IDE7CisgICAgICAgIGVsc2Ug
aWYgKGN1ci5lbmRzV2l0aCgnJScpKSB7CisgICAgICAgICAgICBkb3VibGUgayA9IGN1ci5zdWJz
dHJpbmcoMCwgY3VyLmxlbmd0aCgpIC0gMSkudG9Eb3VibGUoKTsKKyAgICAgICAgICAgIGlmIChr
ID49IDAgJiYgayA8PSAxMDApCisgICAgICAgICAgICAgICAga2V5ID0gayAvIDEwMDsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoa2V5IDwgMCkgeworICAgICAgICAgICAga2V5cy5jbGVhcigpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAga2V5cy5hcHBlbmQoa2V5KTsK
KyAgICB9CisKKyAgICByZXR1cm4ga2V5czsKK30KKwogYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJh
bnNmb3JtT3JpZ2luU2hvcnRoYW5kKFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVmUHRyPENT
U1ZhbHVlPiYgdmFsdWUyLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTMpCiB7CiAgICAgcGFyc2Uy
VmFsdWVzRmlsbFBvc2l0aW9uKCptX3ZhbHVlTGlzdCwgdmFsdWUxLCB2YWx1ZTIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCmluZGV4IDQ3YzY5MDkuLjE4YTAyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VBbmltYXRpb25QbGF5U3RhdGUoKTsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvblBhcnNlQ29udGV4dCYpOwogICAgIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKTsKKyAgICBzdGF0aWMg
VmVjdG9yPGRvdWJsZT4gcGFyc2VLZXlmcmFtZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgYm9vbCBwYXJzZVRyYW5zZm9ybU9yaWdpblNob3J0aGFuZChSZWZQdHI8Q1NTVmFsdWU+Jiwg
UmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICBib29sIHBhcnNlQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncywgZG91
YmxlJiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGQyMDI0
ZWIuLjBhZGMxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTg5Nywx
MCArODk3LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlv
bihFbGVtZW50KiBlLCBjb25zdCBSZW5kZXJTdHlsZSogZWwKICAgICAgICAga2V5ZnJhbWVWYWx1
ZS5zZXRTdHlsZShzdHlsZUZvcktleWZyYW1lKGVsZW1lbnRTdHlsZSwga2V5ZnJhbWUsIGtleWZy
YW1lVmFsdWUpKTsKIAogICAgICAgICAvLyBBZGQgdGhpcyBrZXlmcmFtZSBzdHlsZSB0byBhbGwg
dGhlIGluZGljYXRlZCBrZXkgdGltZXMKLSAgICAgICAgVmVjdG9yPGRvdWJsZT4ga2V5czsKLSAg
ICAgICAga2V5ZnJhbWUtPmdldEtleXMoa2V5cyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGtleUlu
ZGV4ID0gMDsga2V5SW5kZXggPCBrZXlzLnNpemUoKTsgKytrZXlJbmRleCkgewotICAgICAgICAg
ICAga2V5ZnJhbWVWYWx1ZS5zZXRLZXkoa2V5c1trZXlJbmRleF0pOworICAgICAgICBmb3IgKGF1
dG8gJmtleToga2V5ZnJhbWUtPmtleXMoKSkgeworICAgICAgICAgICAga2V5ZnJhbWVWYWx1ZS5z
ZXRLZXkoa2V5KTsKICAgICAgICAgICAgIGxpc3QuaW5zZXJ0KGtleWZyYW1lVmFsdWUpOwogICAg
ICAgICB9CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>