<?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>166749</bug_id>
          
          <creation_ts>2017-01-05 18:00:56 -0800</creation_ts>
          <short_desc>Add support for MediaKeySystemAccess.createMediaKeys()</short_desc>
          <delta_ts>2019-06-16 21:26:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1264304</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-05 18:00:56 -0800</bug_when>
    <thetext>Add support for MediaKeySystemAccess.createMediaKeys()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264306</commentid>
    <comment_count>1</comment_count>
      <attachid>298158</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-05 18:10:20 -0800</bug_when>
    <thetext>Created attachment 298158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264325</commentid>
    <comment_count>2</comment_count>
      <attachid>298158</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-05 18:42:21 -0800</bug_when>
    <thetext>Comment on attachment 298158
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/CDMInstance.h:35
&gt; +struct MediaKeysRestrictions;

Nit: &quot;MediaKeysRestrictions&quot; is unnecessary.

&gt; Source/WebCore/Modules/encryptedmedia/CDMPrivate.h:40
&gt; +

Nit: extra blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264342</commentid>
    <comment_count>3</comment_count>
      <attachid>298170</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-05 20:59:28 -0800</bug_when>
    <thetext>Created attachment 298170
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264460</commentid>
    <comment_count>4</comment_count>
      <attachid>298170</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-06 10:49:29 -0800</bug_when>
    <thetext>Comment on attachment 298170
Patch for landing

Clearing flags on attachment: 298170

Committed r210445: &lt;http://trac.webkit.org/changeset/210445&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264499</commentid>
    <comment_count>5</comment_count>
      <attachid>298170</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-06 13:50:15 -0800</bug_when>
    <thetext>Comment on attachment 298170
Patch for landing

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

Some post-landing comments.

&gt; Source/WebCore/Modules/encryptedmedia/CDMInstance.h:43
&gt; +    enum SuccessValue {
&gt; +        Failed,
&gt; +        Succeeded,
&gt; +    };

One liner maybe? I don’t see a reason to spread this over four lines.

I am not sure this idiom is great. Is there some less wordy way we could do this? I might just prefer a success boolean rather than a special type, even though it would require a comment defining the meaning of the boolean.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp:77
&gt; +        std::unique_ptr&lt;CDMInstance&gt; instance = m_implementation-&gt;createInstance();

auto would be good here

&gt; Source/WebCore/testing/MockCDMFactory.cpp:127
&gt; +    return std::unique_ptr&lt;CDMInstance&gt;(new MockCDMInstance(m_weakPtrFactory.createWeakPtr()));

Can we find a way to use make_unique instead of new here? I know there are possibly privacy reason to not do that.

&gt; Source/WebCore/testing/MockCDMFactory.cpp:167
&gt; +    MockCDMFactory* factory = m_cdm ? m_cdm-&gt;factory() : nullptr;

auto*

&gt; Source/WebCore/testing/MockCDMFactory.h:78
&gt;      MockCDM(WeakPtr&lt;MockCDMFactory&gt;);

Should take a const WeakPtr&lt;MockCDMFactory&gt;&amp; for better efficiency. Should probably be marked explicit, too.

&gt; Source/WebCore/testing/MockCDMFactory.h:102
&gt; +    MockCDMInstance(WeakPtr&lt;MockCDM&gt;);

Should take a const WeakPtr&lt;MockCDM&gt;&amp; for better efficiency. Should probably be marked explicit, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264514</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-06 14:38:07 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 298170 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298170&amp;action=review
&gt; 
&gt; Some post-landing comments.
&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDMInstance.h:43
&gt; &gt; +    enum SuccessValue {
&gt; &gt; +        Failed,
&gt; &gt; +        Succeeded,
&gt; &gt; +    };
&gt; 
&gt; One liner maybe? I don’t see a reason to spread this over four lines.
&gt; 
&gt; I am not sure this idiom is great. Is there some less wordy way we could do
&gt; this? I might just prefer a success boolean rather than a special type, even
&gt; though it would require a comment defining the meaning of the boolean.

Eh, the usefulness of this idiom is that it makes sense in the calling context. The boolean return value idiom would need a comment everywhere it&apos;s called to be as clear.

I think this is better than a boolean return, but maybe not as good as it good be.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp:77
&gt; &gt; +        std::unique_ptr&lt;CDMInstance&gt; instance = m_implementation-&gt;createInstance();
&gt; 
&gt; auto would be good here

Ok.

&gt; &gt; Source/WebCore/testing/MockCDMFactory.cpp:127
&gt; &gt; +    return std::unique_ptr&lt;CDMInstance&gt;(new MockCDMInstance(m_weakPtrFactory.createWeakPtr()));
&gt; 
&gt; Can we find a way to use make_unique instead of new here? I know there are
&gt; possibly privacy reason to not do that.

This issue is that the compiler can&apos;t find a good way to cast a unique_ptr&lt;MockCDMInstance&gt; to a unique_ptr&lt;CDMInstance&gt;.

&gt; &gt; Source/WebCore/testing/MockCDMFactory.cpp:167
&gt; &gt; +    MockCDMFactory* factory = m_cdm ? m_cdm-&gt;factory() : nullptr;
&gt; 
&gt; auto*

Ok.

&gt; &gt; Source/WebCore/testing/MockCDMFactory.h:78
&gt; &gt;      MockCDM(WeakPtr&lt;MockCDMFactory&gt;);
&gt; 
&gt; Should take a const WeakPtr&lt;MockCDMFactory&gt;&amp; for better efficiency. Should
&gt; probably be marked explicit, too.

Not a WeakPtr&lt;MockCDMFactory&gt;&amp;&amp;?

&gt; &gt; Source/WebCore/testing/MockCDMFactory.h:102
&gt; &gt; +    MockCDMInstance(WeakPtr&lt;MockCDM&gt;);
&gt; 
&gt; Should take a const WeakPtr&lt;MockCDM&gt;&amp; for better efficiency. Should probably
&gt; be marked explicit, too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298158</attachid>
            <date>2017-01-05 18:10:20 -0800</date>
            <delta_ts>2017-01-05 18:42:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166749-20170105180848.patch</filename>
            <type>text/plain</type>
            <size>32348</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlhOTI4MmVmZmQ5NmJm
MGJkOGY2NDMzNDQwZTU1Yjc3MzQ5YjZlYS4uYzJmMTgyMTA4ZDhhMjZiOTUzMjU2MDNiMmZiODQy
N2M0YWUzODY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDE3LTAxLTA1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBN
ZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvZW5jcnlwdGVkLW1lZGlh
L21vY2stTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbAorCisgICAgICAgIEltcGxlbWVudCBNZWRp
YUtleVN5c3RlbUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKCkuIFRoaXMgcmVxdWlyZXMgc29tZQor
ICAgICAgICBhZGRpdGlvbnMgdG8gQ0RNLCBDRE1Qcml2YXRlLCBhbmQgYSBuZXcgaW50ZXJmYWNl
IENETUluc3RhbmNlIHRvIHN1cHBvcnQKKyAgICAgICAgZXZlbnR1YWwgcGxhdGZvcm0gYWRvcHRp
b24gYW5kIHRvIGltcGxlbWVudCBtb2NrIHN1cHBvcnQgZm9yIHRlc3RpbmcuCisKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06
OmxvYWRBbmRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Y3JlYXRlSW5zdGFu
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2U6On5DRE1JbnN0YW5jZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5c3RlbUFj
Y2Vzczo6Y3JlYXRlTWVkaWFLZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U3lzdGVtQWNjZXNzLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpNZWRpYUtleXMp
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TmF2aWdhdG9yRU1FLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeU5leHRTdXBwb3J0ZWRDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNOjpNb2NrQ0RNKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OmxvYWRBbmRJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6TW9ja0NETUluc3RhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpz
ZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0
b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6Y2FuQ3JlYXRlSW5zdGFu
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzZXRDYW5DcmVhdGVJbnN0
YW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6ZmFjdG9yeSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGw6CisKKzIwMTctMDEtMDUgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgQ3Jhc2ggaW4gV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzaXplV2lsbENoYW5nZUF0VGltZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBGbG9hdFNpemUmKTo6YmxvY2tfaW52b2tlCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3MzgKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDE0MjkyMTk2ZGE0MDgy
ZjUzZmY1NTU2ZmIxYjM0MjM3MzJkNzgyZjUuLjE0MmJmMWVjMTQ0YWFhZDMxOGI5NjU3MzA0MmE4
NTcwMTQ3NWU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKQEAgLTYxMSw2ICs2MTEsMTkgQEAgdm9pZCBDRE06OmdldENvbnNlbnRTdGF0dXMo
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgYWNjdW11bGF0ZWRDb25maWd1cmF0aW8KICAg
ICB9KTsKIH0KIAordm9pZCBDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBpZiAobV9w
cml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPmxvYWRBbmRJbml0aWFsaXplKCk7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxDRE1JbnN0YW5jZT4gQ0RNOjpjcmVhdGVJbnN0YW5jZSgpCit7CisgICAg
aWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3By
aXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBhMTU0MGY5MTM4YjQzYTdiZDIw
MTVmYWI4ZWYzMzhiNWI1YmQxOTUzLi5hOGJlZDZhOThlNzhjNTQzZTMyMmU0YTJjNjcyNzBkZWVj
MDA5ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgK
QEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNOworY2xh
c3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNjgsNiArNjksOSBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9
CiAKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENE
TUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpOworCiBwcml2YXRlOgogICAgIENETShEb2N1bWVu
dCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkYTAyOTll
NDg4OGM0ODRlODg4ZjBkNTg1NmZmYjQxMDY5NDdhMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBNZWRpYUtl
eXNSZXN0cmljdGlvbnM7CisKK2NsYXNzIENETUluc3RhbmNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5DRE1JbnN0YW5jZSgpIHsgfQorCisgICAgZW51bSBTdWNjZXNzVmFsdWUgeworICAgICAg
ICBGYWlsZWQsCisgICAgICAgIFN1Y2NlZWRlZCwKKyAgICB9OworCisgICAgdmlydHVhbCBTdWNj
ZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5j
dGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSA9IDA7CisgICAgdmlydHVhbCBTdWNjZXNzVmFs
dWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSA9IDA7Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZh
dGUuaAppbmRleCA0M2I1NWRiZGRiZDIyMmIzMWQ1ODJkMGEzYWZiYmE2YTBiZjJiY2Y1Li4wMWE1
ZmQwNDFkMTA4YTYxZTg5MTE0ZjBhYmVkMmJkNjkwOTNlMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIkNETUluc3Rh
bmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9uVHlwZS5oIgogI2luY2x1ZGUgIk1lZGlh
S2V5c1JlcXVpcmVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM2LDkgKzM3
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb247CiBzdHJ1Y3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zOwogCisKIGNsYXNzIENETVByaXZh
dGUgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETVByaXZhdGUoKSB7IH0KKwogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldp
dGhSZXN0cmljdGlvbnMoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
TWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgPSAwOwpAQCAtNDcsNiArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFL
ZXlzUmVzdHJpY3Rpb25zJikgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFLZXlzUmVxdWlyZW1lbnQg
cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNv
bnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVt
QWNjZXNzLmNwcAppbmRleCA0YWYxOGZlZmZiZTY2ZGYxYWZjZWI0NjU1YmMxYjdkNjc2ZmE4MTFk
Li5hZjk2MDcwYjUxM2ViZWNhZmI0OWQ4NTQ1ODhhOTQzYTc1NWQwMmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3lzdGVtQWNjZXNzLmNwcApAQCAtMzIsNyArMzIsMTAgQEAKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogCiAjaW5jbHVkZSAiQ0RNLmgiCisjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKKyNp
bmNsdWRlICJKU01lZGlhS2V5cy5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDkgKzU0LDY0IEBAIE1lZGlhS2V5U3lz
dGVtQWNjZXNzOjpNZWRpYUtleVN5c3RlbUFjY2Vzcyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
TWVkaWFLZXlTeXN0CiAKIE1lZGlhS2V5U3lzdGVtQWNjZXNzOjp+TWVkaWFLZXlTeXN0ZW1BY2Nl
c3MoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgTWVkaWFLZXlTeXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlh
S2V5cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKQordm9pZCBNZWRpYUtleVN5c3RlbUFjY2Vzczo6
Y3JlYXRlTWVkaWFLZXlzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQt
bWVkaWEvI2RvbS1tZWRpYWtleXN5c3RlbWFjY2Vzcy1jcmVhdGVtZWRpYWtleXMKKyAgICAvLyBX
M0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gV2hlbiB0aGlzIG1l
dGhvZCBpcyBpbnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgorICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCisgICAgLy8gMi4g
UnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CisgICAgbV90YXNrUXVldWUuZW5x
dWV1ZVRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgLy8gMi4xLiBMZXQgY29uZmlndXJhdGlvbiBiZSB0aGUgdmFsdWUgb2YgdGhpcyBv
YmplY3QncyBjb25maWd1cmF0aW9uIHZhbHVlLgorICAgICAgICAvLyAyLjIuIExldCB1c2UgZGlz
dGluY3RpdmUgaWRlbnRpZmllciBiZSB0cnVlIGlmIHRoZSB2YWx1ZSBvZiBjb25maWd1cmF0aW9u
J3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBpcyAicmVxdWlyZWQiIGFuZCBmYWxzZSBv
dGhlcndpc2UuCisgICAgICAgIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyID0gbV9jb25m
aWd1cmF0aW9uLT5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6
OlJlcXVpcmVkOworCisgICAgICAgIC8vIDIuMy4gTGV0IHBlcnNpc3RlbnQgc3RhdGUgYWxsb3dl
ZCBiZSB0cnVlIGlmIHRoZSB2YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRl
IG1lbWJlciBpcyAicmVxdWlyZWQiIGFuZCBmYWxzZSBvdGhlcndpc2UuCisgICAgICAgIGJvb2wg
cGVyc2lzdGVudFN0YXRlQWxsb3dlZCA9IG1fY29uZmlndXJhdGlvbi0+cGVyc2lzdGVudFN0YXRl
ID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZDsKKworICAgICAgICAvLyAyLjQuIExv
YWQgYW5kIGluaXRpYWxpemUgdGhlIEtleSBTeXN0ZW0gaW1wbGVtZW50YXRpb24gcmVwcmVzZW50
ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgaWYgbmVjZXNzYXJ5
LgorICAgICAgICBtX2ltcGxlbWVudGF0aW9uLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworCisgICAg
ICAgIC8vIDIuNS4gTGV0IGluc3RhbmNlIGJlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBLZXkgU3lz
dGVtIGltcGxlbWVudGF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGltcGxl
bWVudGF0aW9uIHZhbHVlLgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNSW5zdGFuY2U+IGlu
c3RhbmNlID0gbV9pbXBsZW1lbnRhdGlvbi0+Y3JlYXRlSW5zdGFuY2UoKTsKKyAgICAgICAgaWYg
KCFpbnN0YW5jZSkgeworICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KElOVkFMSURfU1RBVEVf
RVJSKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDIuNi4g
SW5pdGlhbGl6ZSBpbnN0YW5jZSB0byBlbmFibGUsIGRpc2FibGUgYW5kL29yIHNlbGVjdCBLZXkg
U3lzdGVtIGZlYXR1cmVzIHVzaW5nIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGlmIChpbnN0YW5j
ZS0+aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKCptX2NvbmZpZ3VyYXRpb24pID09IENETUlu
c3RhbmNlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2Vk
RXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gMi43
LiBJZiB1c2UgZGlzdGluY3RpdmUgaWRlbnRpZmllciBpcyBmYWxzZSwgcHJldmVudCBpbnN0YW5j
ZSBmcm9tIHVzaW5nIERpc3RpbmN0aXZlIElkZW50aWZpZXIocykgYW5kIERpc3RpbmN0aXZlIFBl
cm1hbmVudCBJZGVudGlmaWVyKHMpLgorICAgICAgICBpZiAoIXVzZURpc3RpbmN0aXZlSWRlbnRp
ZmllciAmJiBpbnN0YW5jZS0+c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoZmFsc2Up
ID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChO
b3RBbGxvd2VkRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gMi44LiBJZiBwZXJzaXN0ZW50IHN0YXRlIGFsbG93ZWQgaXMgZmFsc2UsIHByZXZlbnQg
aW5zdGFuY2UgZnJvbSBwZXJzaXN0aW5nIGFueSBzdGF0ZSByZWxhdGVkIHRvIHRoZSBhcHBsaWNh
dGlvbiBvciBvcmlnaW4gb2YgdGhpcyBvYmplY3QncyBEb2N1bWVudC4KKyAgICAgICAgaWYgKCFw
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkICYmIGluc3RhbmNlLT5zZXRQZXJzaXN0ZW50U3RhdGVBbGxv
d2VkKGZhbHNlKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7CisgICAgICAgICAgICBwcm9taXNl
LT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIDIuOS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVk
LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRo
ZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgorICAgICAgICAvLyAyLjEwLiBMZXQgbWVkaWEga2V5
cyBiZSBhIG5ldyBNZWRpYUtleXMgb2JqZWN0LCBhbmQgaW5pdGlhbGl6ZSBpdCBhcyBmb2xsb3dz
OgorICAgICAgICAvLyAyLjEwLjEuIExldCB0aGUgdXNlIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIg
dmFsdWUgYmUgdXNlIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIuCisgICAgICAgIC8vIDIuMTAuMi4g
TGV0IHRoZSBwZXJzaXN0ZW50IHN0YXRlIGFsbG93ZWQgdmFsdWUgYmUgcGVyc2lzdGVudCBzdGF0
ZSBhbGxvd2VkLgorICAgICAgICAvLyAyLjEwLjMuIExldCB0aGUgc3VwcG9ydGVkIHNlc3Npb24g
dHlwZXMgdmFsdWUgYmUgYmUgdGhlIHZhbHVlIG9mIGNvbmZpZ3VyYXRpb24ncyBzZXNzaW9uVHlw
ZXMgbWVtYmVyLgorICAgICAgICAvLyAyLjEwLjQuIExldCB0aGUgY2RtIGltcGxlbWVudGF0aW9u
IHZhbHVlIGJlIHRoaXMgb2JqZWN0J3MgY2RtIGltcGxlbWVudGF0aW9uIHZhbHVlLgorICAgICAg
ICAvLyAyLjEwLjUuIExldCB0aGUgY2RtIGluc3RhbmNlIHZhbHVlIGJlIGluc3RhbmNlLgorICAg
ICAgICBhdXRvIG1lZGlhS2V5cyA9IE1lZGlhS2V5czo6Y3JlYXRlKHVzZURpc3RpbmN0aXZlSWRl
bnRpZmllciwgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgbV9jb25maWd1cmF0aW9uLT5zZXNzaW9u
VHlwZXMsIG1faW1wbGVtZW50YXRpb24uY29weVJlZigpLCBXVEZNb3ZlKGluc3RhbmNlKSk7CisK
KyAgICAgICAgLy8gMi4xMS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KKyAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhS2V5
cz4+KFdURk1vdmUobWVkaWFLZXlzKSk7CisgICAgfSk7CisKKyAgICAvLyAzLiBSZXR1cm4gcHJv
bWlzZS4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5o
CmluZGV4IDMzZDVhMzBjNTZjMTdiOWY2MzhjY2IwNTc2ZjkwMWE2Y2ZmODdiMzcuLmExMTNlMjYw
MTAwMWVkNjdiZjdjYmY4ZGZmNzA1YjEyMzY0MGU1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNz
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNp
bmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTU2LDYgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOwogICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CisgICAgR2VuZXJpY1Rhc2tR
dWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5j
cHAKaW5kZXggZGUyYmU4NDhmZTZhZTg0NDU2NzgxNWEyOGY1MjMwMTkzYmEzZmQ2YS4uYWI1ZTc3
MTNhMTk0ZGJjMDgwM2UxZWVhMTZjYzYxZTE2ZTMzNTdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMzEsMTIgKzMx
LDIxIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiQ0RNLmgi
CisjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNpbmNsdWRlICJNZWRpYUtleVNlc3Npb24uaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1l
ZGlhS2V5czo6TWVkaWFLZXlzKCkgPSBkZWZhdWx0OworTWVkaWFLZXlzOjpNZWRpYUtleXMoYm9v
bCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwg
Y29uc3QgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiBzdXBwb3J0ZWRTZXNzaW9uVHlwZXMs
IFJlZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxDRE1JbnN0YW5jZT4m
JiBpbnN0YW5jZSkKKyAgICA6IG1fdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyKHVzZURpc3RpbmN0
aXZlSWRlbnRpZmllcikKKyAgICAsIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZChwZXJzaXN0ZW50
U3RhdGVBbGxvd2VkKQorICAgICwgbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXMoc3VwcG9ydGVkU2Vz
c2lvblR5cGVzKQorICAgICwgbV9pbXBsZW1lbnRhdGlvbihXVEZNb3ZlKGltcGxlbWVudGF0aW9u
KSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShpbnN0YW5jZSkpCit7Cit9CiAKIE1lZGlhS2V5
czo6fk1lZGlhS2V5cygpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggOTQ5YThhNmMzNWQ2ODFjNDVlNmFj
NzAxNmQ3NzczODUwZWQ0YzFiYy4uNmU3MTc0NmEwNjM2MGRjYmU4MmE0MGM1ZmU5ZGQ0ODYwM2Zl
NDJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5oCkBAIC0zOCw2ICszOCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ0RNOworY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBjbGFzcyBN
ZWRpYUtleVNlc3Npb247CiAKQEAgLTQ1LDE5ICs0NywyNSBAQCBjbGFzcyBNZWRpYUtleXMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleXM+IHsKIHB1YmxpYzoKICAgICB1c2luZyBLZXlTZXNz
aW9uVHlwZSA9IE1lZGlhS2V5U2Vzc2lvblR5cGU7CiAKLSAgICBzdGF0aWMgUmVmPE1lZGlhS2V5
cz4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPE1lZGlhS2V5cz4gY3JlYXRlKGJvb2wgdXNlRGlz
dGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZl
Y3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzLCBSZWY8Q0RN
PiYmIGltcGxlbWVudGF0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNSW5zdGFuY2U+JiYgaW5zdGFu
Y2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUtleXMpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUtleXModXNlRGlzdGluY3RpdmVJZGVudGlm
aWVyLCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBzdXBwb3J0ZWRTZXNzaW9uVHlwZXMsIFdURk1v
dmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKGluc3RhbmNlKSkpOwogICAgIH0KIAotICAgIHZp
cnR1YWwgfk1lZGlhS2V5cygpOworICAgIH5NZWRpYUtleXMoKTsKIAogICAgIEV4Y2VwdGlvbk9y
PFJlZjxNZWRpYUtleVNlc3Npb24+PiBjcmVhdGVTZXNzaW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUp
OwogCiAgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJvdGVjdGVkOgotICAgIE1lZGlhS2V5cygpOwor
ICAgIE1lZGlhS2V5cyhib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0
ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8
Q0RNPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNSW5zdGFuY2U+JiYpOworCisgICAgYm9vbCBtX3Vz
ZURpc3RpbmN0aXZlSWRlbnRpZmllcjsKKyAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dl
ZDsKKyAgICBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlw
ZXM7CisgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q0RNSW5zdGFuY2U+IG1faW5zdGFuY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5p
ZGwKaW5kZXggZTVmMzlmMGYzODg2OWZiY2E3NWJhOTI0NDg1N2U5NGUxMWI3NWNkYy4uZjNmMjA3
NTI5YTU4YTAyY2Y3YWRmOTM3MjRjYmZhNDExYWJhMjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApAQCAtMjgsNyArMjgs
OCBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLAotICAgIEVuYWJsZWRB
dFJ1bnRpbWU9RW5jcnlwdGVkTWVkaWFBUEkKKyAgICBFbmFibGVkQXRSdW50aW1lPUVuY3J5cHRl
ZE1lZGlhQVBJLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBN
ZWRpYUtleXMgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0
ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1w
b3JhcnkiKTsKICAgICBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNv
dXJjZSBzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKaW5kZXggZWQyODlhZThhNzc5NDAy
ZTQ0YzliYjgyNTNiY2M4ZjY5MWM2ZmJhNC4uZjJlM2M0YjBmZGQ0MDVlODFiZWZmZGJmODM2OTFk
ODVmZWFlYTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCB0
cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVudGF0aW9u
LCBWZWN0b3I8TQogICAgICAgICAgICAgICAgIC8vIDYuMy4zLjEuMy4gTGV0IHRoZSBjZG0gaW1w
bGVtZW50YXRpb24gdmFsdWUgYmUgaW1wbGVtZW50YXRpb24uCiAgICAgICAgICAgICAgICAgYXV0
byBhY2Nlc3MgPSBNZWRpYUtleVN5c3RlbUFjY2Vzczo6Y3JlYXRlKGltcGxlbWVudGF0aW9uLT5r
ZXlTeXN0ZW0oKSwgV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9uLnZhbHVlKCkpLCBpbXBs
ZW1lbnRhdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgICAgICAvLyA2LjMuMy4y
LiBSZXNvbHZlIHByb21pc2Ugd2l0aCBhY2Nlc3MgYW5kIGFib3J0IHRoZSBwYXJhbGxlbCBzdGVw
cyBvZiB0aGlzIGFsZ29yaXRobS4KLSAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElE
TEludGVyZmFjZTxNZWRpYUtleVN5c3RlbUFjY2Vzcz4+KGFjY2Vzcy5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1l
ZGlhS2V5U3lzdGVtQWNjZXNzPj4oV1RGTW92ZShhY2Nlc3MpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZTk2NDU4OTM3YTk0MjFmNTY4OTA1MjJlZWFj
ZDkwODZhMGY5N2E5Li40MGVmMzUwZGQ1NDgxZjkxZTBmN2IxMGJiYjIyZDA4NTllNWQ3ZmM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzc1Miw2ICsxMzc1Miw3IEBACiAJCUNEOEI1QTQ4MTgwRTEzOEIwMDhCOEU2NSAvKiBU
ZXh0VHJhY2tNZWRpYVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0VHJhY2tNZWRpYVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhC
NUE0QTE4MEUxN0EzMDA4QjhFNjUgLyogQXVkaW9UcmFja01lZGlhU291cmNlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
dWRpb1RyYWNrTWVkaWFTb3VyY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDhCNUE0QjE4MEUxN0MwMDA4QjhFNjUgLyogQXVkaW9UcmFja01lZGlhU291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDlEMDU0MjFFMUVGQTEyMDAzQjRDNEYgLyogQ0RN
SW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNSW5zdGFuY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RDgyNzMxQzdBRTUzNTAwNkZGMDY2
IC8qIFRleHR1cmVDYWNoZUNWLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gVGV4dHVyZUNhY2hlQ1YubW07IHBhdGggPSAuLi9jdi9UZXh0dXJlQ2FjaGVDVi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RDgyNzQxQzdBRTUzNTAwNkZGMDY2IC8q
IFRleHR1cmVDYWNoZUNWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHR1
cmVDYWNoZUNWLmg7IHBhdGggPSAuLi9jdi9UZXh0dXJlQ2FjaGVDVi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDlEODI3NzFDN0I4RUUxMDA2RkYwNjYgLyogVmlkZW9UZXh0dXJl
Q29waWVyQ1YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVmlkZW9U
ZXh0dXJlQ29waWVyQ1YuY3BwOyBwYXRoID0gLi4vY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI3NzgsNiArMjI3NzksNyBAQAogCQkJ
CTJEMDYyMTQ2MURBNjM5RUMwMEE3RkIyNiAvKiBsZWdhY3kgKi8sCiAJCQkJQ0RGNEI3MTMxRTAw
QjdFNTAwRTIzNUEyIC8qIENETS5jcHAgKi8sCiAJCQkJQ0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEy
IC8qIENETS5oICovLAorCQkJCUNEOUQwNTQyMUUxRUZBMTIwMDNCNEM0RiAvKiBDRE1JbnN0YW5j
ZS5oICovLAogCQkJCUNERjRCNzI1MUUwM0MxNUIwMEUyMzVBMiAvKiBDRE1Qcml2YXRlLmggKi8s
CiAJCQkJMkQ5QkY3MkYxREJGREMwRjAwN0E3RDk5IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNw
cCAqLywKIAkJCQkyRDlCRjczMDFEQkZEQzBGMDA3QTdEOTkgLyogTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXgg
MDBhZTMzYzJhYzk1NzJkY2JhNzE5Y2YxZGNmM2JiMDg5MDJmZjNmMy4uMTBhMWRmNmNmZDIxMDc0
NjA2Y2FmYTNjMzU3MDU3NjNhMjBlZDFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKQEAgLTYzLDYgKzYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZh
dGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0oQ0RNJikKIAogTW9ja0NETTo6TW9ja0NETShX
ZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQogICAgIDogbV9mYWN0b3J5KFdURk1vdmUo
ZmFjdG9yeSkpCisgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCiB7CiB9CiAKQEAgLTExOSw2
ICsxMjAsNTkgQEAgYm9vbCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVl
UGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2UKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorc3RkOjp1bmlxdWVfcHRyPENETUluc3RhbmNlPiBNb2NrQ0RNOjpjcmVhdGVJbnN0YW5jZSgp
Cit7CisgICAgaWYgKG1fZmFjdG9yeSAmJiAhbV9mYWN0b3J5LT5jYW5DcmVhdGVJbnN0YW5jZXMo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxD
RE1JbnN0YW5jZT4obmV3IE1vY2tDRE1JbnN0YW5jZShtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdl
YWtQdHIoKSkpOworfQorCit2b2lkIE1vY2tDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAg
ICAvLyBOby1vcC4KK30KKworTW9ja0NETUluc3RhbmNlOjpNb2NrQ0RNSW5zdGFuY2UoV2Vha1B0
cjxNb2NrQ0RNPiBjZG0pCisgICAgOiBtX2NkbShjZG0pCit7Cit9CisKK0NETUluc3RhbmNlOjpT
dWNjZXNzVmFsdWUgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQoreworICAg
IGlmICghbV9jZG0gfHwgIW1fY2RtLT5zdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlv
bikpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAgICByZXR1cm4gU3VjY2VlZGVkOworfQor
CitDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIE1vY2tDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3Rp
dmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCkK
K3sKKyAgICBpZiAobV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCA9PSBkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzQWxsb3dlZCkKKyAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKworICAgIE1v
Y2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0
cjsKKworICAgIGlmICghZmFjdG9yeSB8fCAoIWRpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2Vk
ICYmIGZhY3RvcnktPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCgpID09IE1lZGlh
S2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAg
ICBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkID0gZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FsbG93ZWQ7CisgICAgcmV0dXJuIFN1Y2NlZWRlZDsKK30KKworQ0RNSW5zdGFuY2U6OlN1Y2Nl
c3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBw
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkKQoreworICAgIGlmIChtX3BlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQgPT0gcGVyc2lzdGVudFN0YXRlQWxsb3dlZCkKKyAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsK
KworICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgp
IDogbnVsbHB0cjsKKworICAgIGlmICghZmFjdG9yeSB8fCAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNS
ZXF1aXJlbWVudDo6UmVxdWlyZWQpKQorICAgICAgICByZXR1cm4gRmFpbGVkOworCisgICAgbV9w
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsKKyAgICByZXR1
cm4gU3VjY2VlZGVkOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5oCmluZGV4IDNhMDYyYTE0ZjFmMzMwYjFjMjExY2MzZDBhMjZmZjhkODFlMTc1
NGYuLmI3YjRiMTNmYThhZWQxMDgwZmEzM2Y1ODc1Njk4MzI1NTU5ZTUxNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogCiAjaW5jbHVkZSAiQ0RNLmgiCisjaW5jbHVkZSAiQ0RNSW5z
dGFuY2UuaCIKICNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzUmVx
dWlyZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTMsNiArNTQsOSBA
QCBwdWJsaWM6CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWly
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50OyB9CiAg
ICAgdm9pZCBzZXRQZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChNZWRpYUtleXNSZXF1aXJlbWVu
dCByZXF1aXJlbWVudCkgeyBtX3BlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50ID0gcmVxdWlyZW1l
bnQ7IH0KIAorICAgIGJvb2wgY2FuQ3JlYXRlSW5zdGFuY2VzKCkgY29uc3QgeyByZXR1cm4gbV9j
YW5DcmVhdGVJbnN0YW5jZXM7IH0KKyAgICB2b2lkIHNldENhbkNyZWF0ZUluc3RhbmNlcyhib29s
IGZsYWcpIHsgbV9jYW5DcmVhdGVJbnN0YW5jZXMgPSBmbGFnOyB9CisKICAgICB2b2lkIHVucmVn
aXN0ZXIoKTsKIAogcHJpdmF0ZToKQEAgLTY1LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8U3RyaW5nPiBtX3N1cHBvcnRlZERhdGFUeXBlczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3N1
cHBvcnRlZFJvYnVzdG5lc3M7CiAgICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CisgICAg
Ym9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKICAgICBXZWFrUHRyRmFjdG9yeTxN
b2NrQ0RNRmFjdG9yeT4gbV93ZWFrUHRyRmFjdG9yeTsKIH07CiAKQEAgLTcyLDcgKzc3LDExIEBA
IGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgTW9ja0NE
TShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5Pik7CiAKKyAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9y
eSgpIHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQorCiBwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBNb2NrQ0RNSW5zdGFuY2U7CisKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHND
b25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBmaW5hbDsKQEAgLTgxLDggKzkw
LDI1IEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGZpbmFsOwogICAgIE1lZGlhS2V5c1JlcXVpcmVt
ZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGZpbmFsOwogICAgIGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25z
dCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CisgICAgdm9pZCBsb2FkQW5k
SW5pdGlhbGl6ZSgpIGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gbV9mYWN0
b3J5OworICAgIFdlYWtQdHJGYWN0b3J5PE1vY2tDRE0+IG1fd2Vha1B0ckZhY3Rvcnk7Cit9Owor
CitjbGFzcyBNb2NrQ0RNSW5zdGFuY2UgOiBwdWJsaWMgQ0RNSW5zdGFuY2UgeworcHVibGljOgor
ICAgIE1vY2tDRE1JbnN0YW5jZShXZWFrUHRyPE1vY2tDRE0+KTsKKworcHJpdmF0ZToKKyAgICBT
dWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5jdGl2
ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0UGVy
c2lzdGVudFN0YXRlQWxsb3dlZChib29sKSBmaW5hbDsKKworICAgIFdlYWtQdHI8TW9ja0NETT4g
bV9jZG07CisgICAgYm9vbCBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkIHsgdHJ1ZSB9
OworICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmlkbAppbmRleCBlNTdhMzZlNjQ2
ODkyMTU5Y2JhODk5ZTMwM2YxMmRiYTdhMWZiMjMxLi43ZmQ3OTk3NDg1MDJhM2E4NWJhNzc0NDE4
ZjhmNjgxN2NkMDlkN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmlkbApAQCAtMzIsNiArMzIsNyBAQAogICAgIGF0dHJpYnV0ZSBzZXF1ZW5jZTxET01TdHJpbmc+
IHN1cHBvcnRlZFJvYnVzdG5lc3M7CiAgICAgYXR0cmlidXRlIE1lZGlhS2V5c1JlcXVpcmVtZW50
IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudDsKICAgICBhdHRyaWJ1dGUgTWVkaWFL
ZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQ7CisgICAgYXR0cmlidXRl
IGJvb2xlYW4gY2FuQ3JlYXRlSW5zdGFuY2VzOwogCiAgICAgdm9pZCB1bnJlZ2lzdGVyKCk7CiB9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGIzNTdjOWRiMjI3MDUyZTgwZjJmYTQyMDM3N2MzMzQ5NDAyNGM0MTMuLjdiZDhi
MTdiODVkNzE2OWQ4OWJlMTRkNzFhNGRlNGFjZThhMjkyODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNy0wMS0wNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njc0OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTeXN0ZW1BY2Nlc3MtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVN5c3Rl
bUFjY2Vzcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAxNy0wMS0wMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgogCiAgICAgICAgIEFYOiBFeHBvc2UgYmxvY2sgcXVvdGUgbGV2ZWwgdG8gaU9TIEFQSQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlT
eXN0ZW1BY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL21vY2stTWVkaWFLZXlTeXN0ZW1BY2Nlc3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIw
OTIzNGQ1MTE5OGYwYzEyNDhhZWQ2ZWMzYjc1NjNhMTc1MGRkYzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVN5c3RlbUFj
Y2Vzcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MSBAQAorUlVOKGludGVybmFscy5pbml0aWFs
aXplTW9ja01lZGlhU291cmNlKCkpCitSVU4obW9jayA9IGludGVybmFscy5yZWdpc3Rlck1vY2tD
RE0oKSkKK1JVTihtb2NrLnN1cHBvcnRlZERhdGFUeXBlcyA9IFsibW9jayJdKQorCitSVU4oY2Fw
YWJpbGl0aWVzLmluaXREYXRhVHlwZXMgPSBbIm1vY2siXSkKK1JVTihjYXBhYmlsaXRpZXMudmlk
ZW9DYXBhYmlsaXRpZXMgPSBbeyBjb250ZW50VHlwZTogJ3ZpZGVvL21vY2s7IGNvZGVjcz0ibW9j
ayInIH1dICkKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLnJlcXVlc3RNZWRpYUtleVN5c3RlbUFj
Y2Vzcygib3JnLndlYmtpdC5tb2NrIiwgW2NhcGFiaWxpdGllc10pKQorUHJvbWlzZSByZXNvbHZl
ZCBPSworCitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5
cygpKQorUHJvbWlzZSByZXNvbHZlZCBPSworCitSVU4obW9jay5jYW5DcmVhdGVJbnN0YW5jZXMg
PSBmYWxzZSkKK1JVTihwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFL
ZXlzKCkpCitQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSworCitSVU4obW9jay5jYW5DcmVh
dGVJbnN0YW5jZXMgPSB0cnVlKQorUlVOKGNhcGFiaWxpdGllcy5kaXN0aW5jdGl2ZUlkZW50aWZp
ZXIgPSAibm90LWFsbG93ZWQiKQorUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IucmVxdWVzdE1lZGlh
S2V5U3lzdGVtQWNjZXNzKCJvcmcud2Via2l0Lm1vY2siLCBbY2FwYWJpbGl0aWVzXSkpCitQcm9t
aXNlIHJlc29sdmVkIE9LCisKK1JVTihwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3Jl
YXRlTWVkaWFLZXlzKCkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKK1JVTihtb2NrLmRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCA9ICJyZXF1aXJlZCIpCitSVU4ocHJvbWlzZSA9IG1l
ZGlhS2V5U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5cygpKQorUHJvbWlzZSByZWplY3RlZCBj
b3JyZWN0bHkgT0sKKworUlVOKG1vY2suZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50
ID0gIm9wdGlvbmFsIikKK1JVTihjYXBhYmlsaXRpZXMucGVyc2lzdGVudFN0YXRlID0gIm5vdC1h
bGxvd2VkIikKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLnJlcXVlc3RNZWRpYUtleVN5c3RlbUFj
Y2Vzcygib3JnLndlYmtpdC5tb2NrIiwgW2NhcGFiaWxpdGllc10pKQorUHJvbWlzZSByZXNvbHZl
ZCBPSworCitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5
cygpKQorUHJvbWlzZSByZXNvbHZlZCBPSworCitSVU4obW9jay5wZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudCA9ICJyZXF1aXJlZCIpCitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNz
LmNyZWF0ZU1lZGlhS2V5cygpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKK0VORCBP
RiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9t
b2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEvbW9jay1NZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0NDIy
ZGI4OTE0MjY5NDI4ZDlmZjBlYzgwMjYxNjFkMmYzYjY2N2MKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVN5c3RlbUFjY2Vz
cy5odG1sCkBAIC0wLDAgKzEsMTIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgdmFyIG1vY2s7CisgICAgdmFyIHByb21pc2U7
CisgICAgdmFyIG1lZGlhS2V5U3lzdGVtQWNjZXNzOworICAgIHZhciBjYXBhYmlsaXRpZXMgPSB7
fTsKKworICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgICAgIC8vIGZhaWxUZXN0KCJJbnRlcm5hbHMgaXMgcmVxdWly
ZWQgZm9yIHRoaXMgdGVzdC4iKQorICAgICAgICAgICAgLy8gcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgcnVuKCdpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpJyk7Cisg
ICAgICAgIHJ1bignbW9jayA9IGludGVybmFscy5yZWdpc3Rlck1vY2tDRE0oKScpOworICAgICAg
ICBydW4oJ21vY2suc3VwcG9ydGVkRGF0YVR5cGVzID0gWyJtb2NrIl0nKTsKKworICAgICAgICBu
ZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbmV4dCgpIHsKKyAgICAgICAgaWYgKCF0ZXN0
cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIG1vY2sudW5yZWdpc3RlcigpOworICAgICAgICAgICAg
ZW5kVGVzdCgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIg
bmV4dFRlc3QgPSB0ZXN0cy5zaGlmdCgpOworICAgICAgICBjb25zb2xlV3JpdGUoJycpOworICAg
ICAgICBuZXh0VGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNob3VsZFJlc29sdmUocHJv
bWlzZSkgeworICAgICAgICBwcm9taXNlLnRoZW4obWVkaWFLZXlTeXN0ZW1BY2Nlc3MgPT4gewor
ICAgICAgICAgICAgbG9nUmVzdWx0KFN1Y2Nlc3MsICdQcm9taXNlIHJlc29sdmVkJyk7CisgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sICgpID0+IHsKKyAgICAgICAgICAgIGxvZ1Jlc3Vs
dChGYWlsZWQsICdQcm9taXNlIHJlamVjdGVkJyk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNob3VsZFJlamVjdChwcm9taXNlKSB7Cisg
ICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAgICAgICBsb2dSZXN1bHQoRmFpbGVk
LCAnUHJvbWlzZSByZXNvbHZlZCBpbmNvcnJlY3RseScpOworICAgICAgICAgICAgbmV4dCgpOwor
ICAgICAgICB9LCBleGNlcHRpb25Db2RlID0+IHsKKyAgICAgICAgICAgIGxvZ1Jlc3VsdChTdWNj
ZXNzLCAnUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHknKTsKKyAgICAgICAgICAgIG5leHQoKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ290TWVkaWFLZXlTeXN0ZW1BY2Nl
c3MocmVzdWx0KSB7CisgICAgICAgIGxvZ1Jlc3VsdChTdWNjZXNzLCAnUHJvbWlzZSByZXNvbHZl
ZCcpOworICAgICAgICBtZWRpYUtleVN5c3RlbUFjY2VzcyA9IHJlc3VsdDsKKyAgICAgICAgbmV4
dCgpOworICAgIH0KKworICAgIHRlc3RzID0gWworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHJ1bignY2FwYWJpbGl0aWVzLmluaXREYXRhVHlwZXMgPSBbIm1vY2siXScpOworICAg
ICAgICAgICAgcnVuKGBjYXBhYmlsaXRpZXMudmlkZW9DYXBhYmlsaXRpZXMgPSBbeyBjb250ZW50
VHlwZTogJ3ZpZGVvL21vY2s7IGNvZGVjcz0ibW9jayInIH1dIGApOworICAgICAgICAgICAgcnVu
KCdwcm9taXNlID0gbmF2aWdhdG9yLnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcygib3JnLndl
YmtpdC5tb2NrIiwgW2NhcGFiaWxpdGllc10pJyk7CisgICAgICAgICAgICBwcm9taXNlLnRoZW4o
Z290TWVkaWFLZXlTeXN0ZW1BY2Nlc3MpLmNhdGNoKGZhaWxUZXN0KTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5
U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5cygpJyk7CisgICAgICAgICAgICBzaG91bGRSZXNv
bHZlKHByb21pc2UpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgcnVuKCdtb2NrLmNhbkNyZWF0ZUluc3RhbmNlcyA9IGZhbHNlJyk7CisgICAgICAgICAg
ICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKScp
OworICAgICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcnVuKCdtb2NrLmNhbkNyZWF0ZUluc3RhbmNl
cyA9IHRydWUnKTsKKyAgICAgICAgICAgIHJ1bignY2FwYWJpbGl0aWVzLmRpc3RpbmN0aXZlSWRl
bnRpZmllciA9ICJub3QtYWxsb3dlZCInKTsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG5h
dmlnYXRvci5yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoIm9yZy53ZWJraXQubW9jayIsIFtj
YXBhYmlsaXRpZXNdKScpOworICAgICAgICAgICAgcHJvbWlzZS50aGVuKGdvdE1lZGlhS2V5U3lz
dGVtQWNjZXNzKS5jYXRjaChmYWlsVGVzdCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVN5c3RlbUFjY2Vzcy5j
cmVhdGVNZWRpYUtleXMoKScpOworICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKTsK
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJ1bignbW9j
ay5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQgPSAicmVxdWlyZWQiJyk7CisgICAg
ICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtl
eXMoKScpOworICAgICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpOworICAgICAgICB9LAor
CisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcnVuKCdtb2NrLmRpc3RpbmN0aXZl
SWRlbnRpZmllcnNSZXF1aXJlbWVudCA9ICJvcHRpb25hbCInKTsKKyAgICAgICAgICAgIHJ1bign
Y2FwYWJpbGl0aWVzLnBlcnNpc3RlbnRTdGF0ZSA9ICJub3QtYWxsb3dlZCInKTsKKyAgICAgICAg
ICAgIHJ1bigncHJvbWlzZSA9IG5hdmlnYXRvci5yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3Mo
Im9yZy53ZWJraXQubW9jayIsIFtjYXBhYmlsaXRpZXNdKScpOworICAgICAgICAgICAgcHJvbWlz
ZS50aGVuKGdvdE1lZGlhS2V5U3lzdGVtQWNjZXNzKS5jYXRjaChmYWlsVGVzdCk7CisgICAgICAg
IH0sCisKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBt
ZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKScpOworICAgICAgICAgICAgc2hv
dWxkUmVzb2x2ZShwcm9taXNlKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHJ1bignbW9jay5wZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCA9ICJyZXF1
aXJlZCInKTsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNz
LmNyZWF0ZU1lZGlhS2V5cygpJyk7CisgICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSk7
CisgICAgICAgIH0sCisgICAgXTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0iZG9UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBlMTM4NTZhOThlNWNkOTgxMzg2YzNhOGUzNjExMDUyZmMz
ZmRkM2EyLi40NzIwY2VmZTRiZTNhMjA5OTI0M2EzNThiODM2MTVhYjQ4NTU1NzJiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQ3MCw1ICsxNDcwLDYg
QEAgd2Via2l0Lm9yZy9iLzE2NTg3NCBbIERlYnVnIF0gc3RyZWFtcy9waXBlLXRvLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCiAjIE5ldyBFbmNyeXB0ZWQgTWVkaWEgQVBJIG5vdCBlbmFibGVkIG9u
IE1hYwogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stbmF2aWdhdG9yLXJlcXVlc3RNZWRpYUtl
eVN5c3RlbUFjY2Vzcy5odG1sIFsgU2tpcCBdCittZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1N
ZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xNjYwMjUg
aHR0cC90ZXN0cy9mZXRjaC9mZXRjaGluZy1zYW1lLXJlc291cmNlLXdpdGgtZGlmZmZlcmVudC1v
cHRpb25zLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQo=
</data>
<flag name="review"
          id="320393"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298170</attachid>
            <date>2017-01-05 20:59:28 -0800</date>
            <delta_ts>2017-01-06 10:49:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-166749-20170105205759.patch</filename>
            <type>text/plain</type>
            <size>32254</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlhOTI4MmVmZmQ5NmJm
MGJkOGY2NDMzNDQwZTU1Yjc3MzQ5YjZlYS4uYzJmMTgyMTA4ZDhhMjZiOTUzMjU2MDNiMmZiODQy
N2M0YWUzODY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDE3LTAxLTA1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBN
ZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvZW5jcnlwdGVkLW1lZGlh
L21vY2stTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbAorCisgICAgICAgIEltcGxlbWVudCBNZWRp
YUtleVN5c3RlbUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKCkuIFRoaXMgcmVxdWlyZXMgc29tZQor
ICAgICAgICBhZGRpdGlvbnMgdG8gQ0RNLCBDRE1Qcml2YXRlLCBhbmQgYSBuZXcgaW50ZXJmYWNl
IENETUluc3RhbmNlIHRvIHN1cHBvcnQKKyAgICAgICAgZXZlbnR1YWwgcGxhdGZvcm0gYWRvcHRp
b24gYW5kIHRvIGltcGxlbWVudCBtb2NrIHN1cHBvcnQgZm9yIHRlc3RpbmcuCisKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06
OmxvYWRBbmRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Y3JlYXRlSW5zdGFu
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2U6On5DRE1JbnN0YW5jZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5c3RlbUFj
Y2Vzczo6Y3JlYXRlTWVkaWFLZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U3lzdGVtQWNjZXNzLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpNZWRpYUtleXMp
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TmF2aWdhdG9yRU1FLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeU5leHRTdXBwb3J0ZWRDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNOjpNb2NrQ0RNKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OmxvYWRBbmRJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6TW9ja0NETUluc3RhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpz
ZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0
b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6Y2FuQ3JlYXRlSW5zdGFu
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzZXRDYW5DcmVhdGVJbnN0
YW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6ZmFjdG9yeSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGw6CisKKzIwMTctMDEtMDUgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgQ3Jhc2ggaW4gV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzaXplV2lsbENoYW5nZUF0VGltZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBGbG9hdFNpemUmKTo6YmxvY2tfaW52b2tlCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3MzgKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDE0MjkyMTk2ZGE0MDgy
ZjUzZmY1NTU2ZmIxYjM0MjM3MzJkNzgyZjUuLjE0MmJmMWVjMTQ0YWFhZDMxOGI5NjU3MzA0MmE4
NTcwMTQ3NWU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKQEAgLTYxMSw2ICs2MTEsMTkgQEAgdm9pZCBDRE06OmdldENvbnNlbnRTdGF0dXMo
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgYWNjdW11bGF0ZWRDb25maWd1cmF0aW8KICAg
ICB9KTsKIH0KIAordm9pZCBDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBpZiAobV9w
cml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPmxvYWRBbmRJbml0aWFsaXplKCk7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxDRE1JbnN0YW5jZT4gQ0RNOjpjcmVhdGVJbnN0YW5jZSgpCit7CisgICAg
aWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3By
aXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBhMTU0MGY5MTM4YjQzYTdiZDIw
MTVmYWI4ZWYzMzhiNWI1YmQxOTUzLi5hOGJlZDZhOThlNzhjNTQzZTMyMmU0YTJjNjcyNzBkZWVj
MDA5ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgK
QEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNOworY2xh
c3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNjgsNiArNjksOSBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9
CiAKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENE
TUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpOworCiBwcml2YXRlOgogICAgIENETShEb2N1bWVu
dCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NmU3OGU4
MDAwZGUxYmFiM2I0NjQ4YzcyMzMwZGM3ZWY4NzI0NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKKworY2xhc3MgQ0RNSW5z
dGFuY2UgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNETUluc3RhbmNlKCkgeyB9CisKKyAgICBl
bnVtIFN1Y2Nlc3NWYWx1ZSB7CisgICAgICAgIEZhaWxlZCwKKyAgICAgICAgU3VjY2VlZGVkLAor
ICAgIH07CisKKyAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgPSAwOworICAgIHZpcnR1
YWwgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpID0g
MDsKKyAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJv
b2wpID0gMDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IDQzYjU1ZGJkZGJkMjIyYjMxZDU4
MmQwYTNhZmJiYTZhMGJmMmJjZjUuLjFjZDFkYmI2N2UyODk0ZDU0YzBiZDA2ZjE5MmNmYTA1ZWQ4
OTU2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogCisjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNpbmNsdWRlICJNZWRpYUtleVNlc3Np
b25UeXBlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzUmVxdWlyZW1lbnQuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgpAQCAtMzksNiArNDAsNyBAQCBzdHJ1Y3QgTWVkaWFLZXlzUmVzdHJpY3Rp
b25zOwogY2xhc3MgQ0RNUHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0
ZSgpIHsgfQorCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IFN0
cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSA9IDA7CkBAIC00Nyw2
ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhS2V5c1JlcXVpcmVtZW50IGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBN
ZWRpYUtleXNSZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJP
cmlnaW5BbmRDbGVhcmFibGUoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgPSAw
OworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5j
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9IDA7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3lzdGVtQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwCmluZGV4IDRhZjE4ZmVmZmJlNjZkZjFhZmNl
YjQ2NTViYzFiN2Q2NzZmYTgxMWQuLmFmOTYwNzBiNTEzZWJlY2FmYjQ5ZDg1NDU4OGE5NDNhNzU1
ZDAyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwCkBAIC0zMiw3ICszMiwxMCBAQAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKICNpbmNsdWRlICJDRE0uaCIKKyNpbmNsdWRl
ICJDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIkpTTWVkaWFLZXlzLmgiCiAjaW5jbHVkZSAiTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsOSAr
NTQsNjQgQEAgTWVkaWFLZXlTeXN0ZW1BY2Nlc3M6Ok1lZGlhS2V5U3lzdGVtQWNjZXNzKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBNZWRpYUtleVN5c3QKIAogTWVkaWFLZXlTeXN0ZW1BY2Nlc3M6
On5NZWRpYUtleVN5c3RlbUFjY2VzcygpID0gZGVmYXVsdDsKIAotdm9pZCBNZWRpYUtleVN5c3Rl
bUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpCit2b2lkIE1l
ZGlhS2V5U3lzdGVtQWNjZXNzOjpjcmVhdGVNZWRpYUtleXMoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5c3lzdGVtYWNjZXNzLWNyZWF0
ZW1lZGlha2V5cworICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CisK
KyAgICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3Qg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gMS4gTGV0IHByb21pc2UgYmUgYSBuZXcg
cHJvbWlzZS4KKyAgICAvLyAyLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoK
KyAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldICgpIG11dGFibGUgeworICAgICAgICAvLyAyLjEuIExldCBjb25maWd1cmF0aW9uIGJl
IHRoZSB2YWx1ZSBvZiB0aGlzIG9iamVjdCdzIGNvbmZpZ3VyYXRpb24gdmFsdWUuCisgICAgICAg
IC8vIDIuMi4gTGV0IHVzZSBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIGJlIHRydWUgaWYgdGhlIHZh
bHVlIG9mIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIGlzICJy
ZXF1aXJlZCIgYW5kIGZhbHNlIG90aGVyd2lzZS4KKyAgICAgICAgYm9vbCB1c2VEaXN0aW5jdGl2
ZUlkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc3RpbmN0aXZlSWRlbnRpZmllciA9PSBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQ7CisKKyAgICAgICAgLy8gMi4zLiBMZXQgcGVy
c2lzdGVudCBzdGF0ZSBhbGxvd2VkIGJlIHRydWUgaWYgdGhlIHZhbHVlIG9mIGNvbmZpZ3VyYXRp
b24ncyBwZXJzaXN0ZW50U3RhdGUgbWVtYmVyIGlzICJyZXF1aXJlZCIgYW5kIGZhbHNlIG90aGVy
d2lzZS4KKyAgICAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gbV9jb25maWd1cmF0
aW9uLT5wZXJzaXN0ZW50U3RhdGUgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOwor
CisgICAgICAgIC8vIDIuNC4gTG9hZCBhbmQgaW5pdGlhbGl6ZSB0aGUgS2V5IFN5c3RlbSBpbXBs
ZW1lbnRhdGlvbiByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbXBsZW1lbnRhdGlv
biB2YWx1ZSBpZiBuZWNlc3NhcnkuCisgICAgICAgIG1faW1wbGVtZW50YXRpb24tPmxvYWRBbmRJ
bml0aWFsaXplKCk7CisKKyAgICAgICAgLy8gMi41LiBMZXQgaW5zdGFuY2UgYmUgYSBuZXcgaW5z
dGFuY2Ugb2YgdGhlIEtleSBTeXN0ZW0gaW1wbGVtZW50YXRpb24gcmVwcmVzZW50ZWQgYnkgdGhp
cyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUuCisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxDRE1JbnN0YW5jZT4gaW5zdGFuY2UgPSBtX2ltcGxlbWVudGF0aW9uLT5jcmVhdGVJbnN0
YW5jZSgpOworICAgICAgICBpZiAoIWluc3RhbmNlKSB7CisgICAgICAgICAgICBwcm9taXNlLT5y
ZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgLy8gMi42LiBJbml0aWFsaXplIGluc3RhbmNlIHRvIGVuYWJsZSwgZGlzYWJs
ZSBhbmQvb3Igc2VsZWN0IEtleSBTeXN0ZW0gZmVhdHVyZXMgdXNpbmcgY29uZmlndXJhdGlvbi4K
KyAgICAgICAgaWYgKGluc3RhbmNlLT5pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oKm1fY29u
ZmlndXJhdGlvbikgPT0gQ0RNSW5zdGFuY2U6OkZhaWxlZCkgeworICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyAyLjcuIElmIHVzZSBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIGlzIGZh
bHNlLCBwcmV2ZW50IGluc3RhbmNlIGZyb20gdXNpbmcgRGlzdGluY3RpdmUgSWRlbnRpZmllcihz
KSBhbmQgRGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykuCisgICAgICAgIGlmICgh
dXNlRGlzdGluY3RpdmVJZGVudGlmaWVyICYmIGluc3RhbmNlLT5zZXREaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQWxsb3dlZChmYWxzZSkgPT0gQ0RNSW5zdGFuY2U6OkZhaWxlZCkgeworICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICAvLyAyLjguIElmIHBlcnNpc3RlbnQgc3RhdGUgYWxsb3dl
ZCBpcyBmYWxzZSwgcHJldmVudCBpbnN0YW5jZSBmcm9tIHBlcnNpc3RpbmcgYW55IHN0YXRlIHJl
bGF0ZWQgdG8gdGhlIGFwcGxpY2F0aW9uIG9yIG9yaWdpbiBvZiB0aGlzIG9iamVjdCdzIERvY3Vt
ZW50LgorICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgaW5zdGFuY2UtPnNl
dFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoZmFsc2UpID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsK
KyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gMi45LiBJZiBhbnkgb2YgdGhlIHBy
ZWNlZGluZyBzdGVwcyBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0
aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCisgICAgICAgIC8v
IDIuMTAuIExldCBtZWRpYSBrZXlzIGJlIGEgbmV3IE1lZGlhS2V5cyBvYmplY3QsIGFuZCBpbml0
aWFsaXplIGl0IGFzIGZvbGxvd3M6CisgICAgICAgIC8vIDIuMTAuMS4gTGV0IHRoZSB1c2UgZGlz
dGluY3RpdmUgaWRlbnRpZmllciB2YWx1ZSBiZSB1c2UgZGlzdGluY3RpdmUgaWRlbnRpZmllci4K
KyAgICAgICAgLy8gMi4xMC4yLiBMZXQgdGhlIHBlcnNpc3RlbnQgc3RhdGUgYWxsb3dlZCB2YWx1
ZSBiZSBwZXJzaXN0ZW50IHN0YXRlIGFsbG93ZWQuCisgICAgICAgIC8vIDIuMTAuMy4gTGV0IHRo
ZSBzdXBwb3J0ZWQgc2Vzc2lvbiB0eXBlcyB2YWx1ZSBiZSBiZSB0aGUgdmFsdWUgb2YgY29uZmln
dXJhdGlvbidzIHNlc3Npb25UeXBlcyBtZW1iZXIuCisgICAgICAgIC8vIDIuMTAuNC4gTGV0IHRo
ZSBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgYmUgdGhpcyBvYmplY3QncyBjZG0gaW1wbGVtZW50
YXRpb24gdmFsdWUuCisgICAgICAgIC8vIDIuMTAuNS4gTGV0IHRoZSBjZG0gaW5zdGFuY2UgdmFs
dWUgYmUgaW5zdGFuY2UuCisgICAgICAgIGF1dG8gbWVkaWFLZXlzID0gTWVkaWFLZXlzOjpjcmVh
dGUodXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBtX2Nv
bmZpZ3VyYXRpb24tPnNlc3Npb25UeXBlcywgbV9pbXBsZW1lbnRhdGlvbi5jb3B5UmVmKCksIFdU
Rk1vdmUoaW5zdGFuY2UpKTsKKworICAgICAgICAvLyAyLjExLiBSZXNvbHZlIHByb21pc2Ugd2l0
aCBtZWRpYSBrZXlzLgorICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJ
RExJbnRlcmZhY2U8TWVkaWFLZXlzPj4oV1RGTW92ZShtZWRpYUtleXMpKTsKKyAgICB9KTsKKwor
ICAgIC8vIDMuIFJldHVybiBwcm9taXNlLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3lzdGVtQWNjZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3lzdGVtQWNjZXNzLmgKaW5kZXggMzNkNWEzMGM1NmMxN2I5ZjYzOGNjYjA1NzZmOTAx
YTZjZmY4N2IzNy4uYTExM2UyNjAxMDAxZWQ2N2JmN2NiZjhkZmY3MDViMTIzNjQwZTVjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5
c3RlbUFjY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKICNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTYsNiArNTcsNyBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBtX2tleVN5c3RlbTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247CiAgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlv
bjsKKyAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3Rhc2tRdWV1ZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCBkZTJiZTg0OGZlNmFlODQ0NTY3ODE1YTI4ZjUy
MzAxOTNiYTNmZDZhLi5hYjVlNzcxM2ExOTRkYmMwODAzZTFlZWExNmNjNjFlMTZlMzM1N2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwCkBAIC0zMSwxMiArMzEsMjEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAKKyNpbmNsdWRlICJDRE0uaCIKKyNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2luY2x1ZGUg
Ik1lZGlhS2V5U2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotTWVkaWFLZXlzOjpNZWRpYUtleXMoKSA9IGRlZmF1bHQ7CitNZWRp
YUtleXM6Ok1lZGlhS2V5cyhib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJz
aXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mIHN1
cHBvcnRlZFNlc3Npb25UeXBlcywgUmVmPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgc3RkOjp1bmlx
dWVfcHRyPENETUluc3RhbmNlPiYmIGluc3RhbmNlKQorICAgIDogbV91c2VEaXN0aW5jdGl2ZUlk
ZW50aWZpZXIodXNlRGlzdGluY3RpdmVJZGVudGlmaWVyKQorICAgICwgbV9wZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpCisgICAgLCBtX3N1cHBvcnRlZFNlc3Np
b25UeXBlcyhzdXBwb3J0ZWRTZXNzaW9uVHlwZXMpCisgICAgLCBtX2ltcGxlbWVudGF0aW9uKFdU
Rk1vdmUoaW1wbGVtZW50YXRpb24pKQorICAgICwgbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNl
KSkKK3sKK30KIAogTWVkaWFLZXlzOjp+TWVkaWFLZXlzKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA5
NDlhOGE2YzM1ZDY4MWM0NWU2YWM3MDE2ZDc3NzM4NTBlZDRjMWJjLi42ZTcxNzQ2YTA2MzYwZGNi
ZTgyYTQwYzVmZTlkZDQ4NjAzZmU0MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTM4LDYgKzM4LDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBDRE07CitjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNzIEJ1
ZmZlclNvdXJjZTsKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKIApAQCAtNDUsMTkgKzQ3LDI1IEBA
IGNsYXNzIE1lZGlhS2V5cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5cz4gewogcHVibGlj
OgogICAgIHVzaW5nIEtleVNlc3Npb25UeXBlID0gTWVkaWFLZXlTZXNzaW9uVHlwZTsKIAotICAg
IHN0YXRpYyBSZWY8TWVkaWFLZXlzPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8TWVkaWFLZXlz
PiBjcmVhdGUoYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0
YXRlQWxsb3dlZCwgY29uc3QgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiBzdXBwb3J0ZWRT
ZXNzaW9uVHlwZXMsIFJlZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxD
RE1JbnN0YW5jZT4mJiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhS2V5cyk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhS2V5cyh1
c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIHN1cHBvcnRl
ZFNlc3Npb25UeXBlcywgV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoaW5zdGFuY2Up
KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TWVkaWFLZXlzKCk7CisgICAgfk1lZGlhS2V5cygp
OwogCiAgICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IGNyZWF0ZVNlc3Npb24o
TWVkaWFLZXlTZXNzaW9uVHlwZSk7CiAKICAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKGNv
bnN0IEJ1ZmZlclNvdXJjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgTWVkaWFLZXlzKCk7CisgICAgTWVkaWFLZXlzKGJvb2wgdXNlRGlzdGluY3RpdmVJZGVu
dGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRpYUtl
eVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+JiYsIHN0ZDo6dW5pcXVlX3B0cjxDRE1JbnN0YW5jZT4m
Jik7CisKKyAgICBib29sIG1fdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgIGJvb2wgbV9w
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkOworICAgIFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiBt
X3N1cHBvcnRlZFNlc3Npb25UeXBlczsKKyAgICBSZWY8Q0RNPiBtX2ltcGxlbWVudGF0aW9uOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1JbnN0YW5jZT4gbV9pbnN0YW5jZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmlkbAppbmRleCBlNWYzOWYwZjM4ODY5ZmJjYTc1YmE5MjQ0ODU3
ZTk0ZTExYjc1Y2RjLi5mM2YyMDc1MjlhNThhMDJjZjdhZGY5MzcyNGNiZmE0MTFhYmEyNTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuaWRsCkBAIC0yOCw3ICsyOCw4IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUEsCi0gICAgRW5hYmxlZEF0UnVudGltZT1FbmNyeXB0ZWRNZWRpYUFQSQorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9RW5jcnlwdGVkTWVkaWFBUEksCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKIF0gaW50ZXJmYWNlIE1lZGlhS2V5cyB7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBN
ZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihvcHRpb25hbCBNZWRpYUtleVNlc3Npb25UeXBl
IHNlc3Npb25UeXBlID0gInRlbXBvcmFyeSIpOwogICAgIFByb21pc2U8Ym9vbD4gc2V0U2VydmVy
Q2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRpZmljYXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcApp
bmRleCBlZDI4OWFlOGE3Nzk0MDJlNDRjOWJiODI1M2JjYzhmNjkxYzZmYmE0Li5mMmUzYzRiMGZk
ZDQwNWU4MWJlZmZkYmY4MzY5MWQ4NWZlYWVhODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCkBAIC05MCw3ICs5
MCw3IEBAIHN0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxD
RE0+JiYgaW1wbGVtZW50YXRpb24sIFZlY3RvcjxNCiAgICAgICAgICAgICAgICAgLy8gNi4zLjMu
MS4zLiBMZXQgdGhlIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBiZSBpbXBsZW1lbnRhdGlvbi4K
ICAgICAgICAgICAgICAgICBhdXRvIGFjY2VzcyA9IE1lZGlhS2V5U3lzdGVtQWNjZXNzOjpjcmVh
dGUoaW1wbGVtZW50YXRpb24tPmtleVN5c3RlbSgpLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3Vy
YXRpb24udmFsdWUoKSksIGltcGxlbWVudGF0aW9uLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAg
ICAgICAgICAgIC8vIDYuMy4zLjIuIFJlc29sdmUgcHJvbWlzZSB3aXRoIGFjY2VzcyBhbmQgYWJv
cnQgdGhlIHBhcmFsbGVsIHN0ZXBzIG9mIHRoaXMgYWxnb3JpdGhtLgotICAgICAgICAgICAgICAg
IHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPE1lZGlhS2V5U3lzdGVtQWNjZXNzPj4oYWNj
ZXNzLmdldCgpKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3Jl
YXRlZDxJRExJbnRlcmZhY2U8TWVkaWFLZXlTeXN0ZW1BY2Nlc3M+PihXVEZNb3ZlKGFjY2Vzcykp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJlOTY0NTg5
MzdhOTQyMWY1Njg5MDUyMmVlYWNkOTA4NmEwZjk3YTkuLjQwZWYzNTBkZDU0ODFmOTFlMGY3YjEw
YmJiMjJkMDg1OWU1ZDdmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNzUyLDYgKzEzNzUyLDcgQEAKIAkJQ0Q4QjVBNDgx
ODBFMTM4QjAwOEI4RTY1IC8qIFRleHRUcmFja01lZGlhU291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja01lZGlhU291cmNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEOEI1QTRBMTgwRTE3QTMwMDhCOEU2NSAvKiBBdWRpb1RyYWNrTWVk
aWFTb3VyY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOEI1QTRCMTgwRTE3QzAwMDhCOEU2NSAvKiBBdWRpb1RyYWNr
TWVkaWFTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFj
a01lZGlhU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOUQwNTQyMUUx
RUZBMTIwMDNCNEM0RiAvKiBDRE1JbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDRE1JbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDlE
ODI3MzFDN0FFNTM1MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXh0dXJlQ2FjaGVDVi5tbTsgcGF0aCA9IC4uL2N2
L1RleHR1cmVDYWNoZUNWLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDlEODI3
NDFDN0FFNTM1MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gVGV4dHVyZUNhY2hlQ1YuaDsgcGF0aCA9IC4uL2N2L1RleHR1cmVDYWNo
ZUNWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOUQ4Mjc3MUM3QjhFRTEwMDZG
RjA2NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBWaWRlb1RleHR1cmVDb3BpZXJDVi5jcHA7IHBhdGggPSAuLi9jdi9WaWRl
b1RleHR1cmVDb3BpZXJDVi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjc3
OCw2ICsyMjc3OSw3IEBACiAJCQkJMkQwNjIxNDYxREE2MzlFQzAwQTdGQjI2IC8qIGxlZ2FjeSAq
LywKIAkJCQlDREY0QjcxMzFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmNwcCAqLywKIAkJCQlDREY0
QjcxNDFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggKi8sCisJCQkJQ0Q5RDA1NDIxRTFFRkExMjAw
M0I0QzRGIC8qIENETUluc3RhbmNlLmggKi8sCiAJCQkJQ0RGNEI3MjUxRTAzQzE1QjAwRTIzNUEy
IC8qIENETVByaXZhdGUuaCAqLywKIAkJCQkyRDlCRjcyRjFEQkZEQzBGMDA3QTdEOTkgLyogTWVk
aWFLZXlNZXNzYWdlRXZlbnQuY3BwICovLAogCQkJCTJEOUJGNzMwMURCRkRDMEYwMDdBN0Q5OSAv
KiBNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAppbmRleCAwMGFlMzNjMmFjOTU3MmRjYmE3MTljZjFkY2YzYmIwODkwMmZm
M2YzLi4xMGExZGY2Y2ZkMjEwNzQ2MDZjYWZhM2MzNTcwNTc2M2EyMGVkMWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMsNiArNjMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShDRE0mKQog
CiBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiAgICAg
OiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhp
cykKIHsKIH0KIApAQCAtMTE5LDYgKzEyMCw1OSBAQCBib29sIE1vY2tDRE06OmRpc3RpbmN0aXZl
SWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgTWVkaWFLZQog
ICAgIHJldHVybiB0cnVlOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNSW5zdGFuY2U+IE1vY2tD
RE06OmNyZWF0ZUluc3RhbmNlKCkKK3sKKyAgICBpZiAobV9mYWN0b3J5ICYmICFtX2ZhY3Rvcnkt
PmNhbkNyZWF0ZUluc3RhbmNlcygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPENETUluc3RhbmNlPihuZXcgTW9ja0NETUluc3RhbmNlKG1fd2Vh
a1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpKSk7Cit9CisKK3ZvaWQgTW9ja0NETTo6bG9hZEFu
ZEluaXRpYWxpemUoKQoreworICAgIC8vIE5vLW9wLgorfQorCitNb2NrQ0RNSW5zdGFuY2U6Ok1v
Y2tDRE1JbnN0YW5jZShXZWFrUHRyPE1vY2tDRE0+IGNkbSkKKyAgICA6IG1fY2RtKGNkbSkKK3sK
K30KKworQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgaWYgKCFtX2NkbSB8fCAhbV9jZG0tPnN1cHBvcnRzQ29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIHJl
dHVybiBTdWNjZWVkZWQ7Cit9CisKK0NETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgTW9ja0NETUlu
c3RhbmNlOjpzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sIGRpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKQoreworICAgIGlmIChtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNB
bGxvd2VkID09IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKQorICAgICAgICByZXR1cm4g
U3VjY2VlZGVkOworCisgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2NkbSA/IG1fY2Rt
LT5mYWN0b3J5KCkgOiBudWxscHRyOworCisgICAgaWYgKCFmYWN0b3J5IHx8ICghZGlzdGluY3Rp
dmVJZGVudGlmaWVyc0FsbG93ZWQgJiYgZmFjdG9yeS0+ZGlzdGluY3RpdmVJZGVudGlmaWVyc1Jl
cXVpcmVtZW50KCkgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSkKKyAgICAgICAg
cmV0dXJuIEZhaWxlZDsKKworICAgIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgPSBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZDsKKyAgICByZXR1cm4gU3VjY2VlZGVkOworfQor
CitDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIE1vY2tDRE1JbnN0YW5jZTo6c2V0UGVyc2lzdGVu
dFN0YXRlQWxsb3dlZChib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpCit7CisgICAgaWYgKG1f
cGVyc2lzdGVudFN0YXRlQWxsb3dlZCA9PSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKQorICAgICAg
ICByZXR1cm4gU3VjY2VlZGVkOworCisgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2Nk
bSA/IG1fY2RtLT5mYWN0b3J5KCkgOiBudWxscHRyOworCisgICAgaWYgKCFmYWN0b3J5IHx8ICgh
cGVyc2lzdGVudFN0YXRlQWxsb3dlZCAmJiBmYWN0b3J5LT5wZXJzaXN0ZW50U3RhdGVSZXF1aXJl
bWVudCgpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkpCisgICAgICAgIHJldHVy
biBGYWlsZWQ7CisKKyAgICBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkOworICAgIHJldHVybiBTdWNjZWVkZWQ7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggM2EwNjJhMTRmMWYzMzBiMWMy
MTFjYzNkMGEyNmZmOGQ4MWUxNzU0Zi4uYjdiNGIxM2ZhOGFlZDEwODBmYTMzZjU4NzU2OTgzMjU1
NTllNTE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKICNpbmNsdWRlICJDRE0u
aCIKKyNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKICNp
bmNsdWRlICJNZWRpYUtleXNSZXF1aXJlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CkBAIC01Myw2ICs1NCw5IEBAIHB1YmxpYzoKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBw
ZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQ7IH0KICAgICB2b2lkIHNldFBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50
KE1lZGlhS2V5c1JlcXVpcmVtZW50IHJlcXVpcmVtZW50KSB7IG1fcGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQgPSByZXF1aXJlbWVudDsgfQogCisgICAgYm9vbCBjYW5DcmVhdGVJbnN0YW5jZXMo
KSBjb25zdCB7IHJldHVybiBtX2NhbkNyZWF0ZUluc3RhbmNlczsgfQorICAgIHZvaWQgc2V0Q2Fu
Q3JlYXRlSW5zdGFuY2VzKGJvb2wgZmxhZykgeyBtX2NhbkNyZWF0ZUluc3RhbmNlcyA9IGZsYWc7
IH0KKwogICAgIHZvaWQgdW5yZWdpc3RlcigpOwogCiBwcml2YXRlOgpAQCAtNjUsNiArNjksNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkRGF0YVR5cGVzOwogICAg
IFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0bmVzczsKICAgICBib29sIG1fcmVnaXN0
ZXJlZCB7IHRydWUgfTsKKyAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9Owog
ICAgIFdlYWtQdHJGYWN0b3J5PE1vY2tDRE1GYWN0b3J5PiBtX3dlYWtQdHJGYWN0b3J5OwogfTsK
IApAQCAtNzIsNyArNzcsMTEgQEAgY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsK
IHB1YmxpYzoKICAgICBNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+KTsKIAorICAgIE1v
Y2tDRE1GYWN0b3J5KiBmYWN0b3J5KCkgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKIHBy
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1vY2tDRE1JbnN0YW5jZTsKKwogICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YVR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0
c0NvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1l
ZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYp
IGZpbmFsOwpAQCAtODEsOCArOTAsMjUgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleXNSZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgZmluYWw7CiAg
ICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25z
JikgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3Jp
Z2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGZpbmFs
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5h
bDsKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAKICAgICBXZWFrUHRyPE1v
Y2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgV2Vha1B0ckZhY3Rvcnk8TW9ja0NETT4gbV93
ZWFrUHRyRmFjdG9yeTsKK307CisKK2NsYXNzIE1vY2tDRE1JbnN0YW5jZSA6IHB1YmxpYyBDRE1J
bnN0YW5jZSB7CitwdWJsaWM6CisgICAgTW9ja0NETUluc3RhbmNlKFdlYWtQdHI8TW9ja0NETT4p
OworCitwcml2YXRlOgorICAgIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7CisgICAgU3VjY2Vz
c1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIGZpbmFsOworICAg
IFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIGZpbmFsOworCisg
ICAgV2Vha1B0cjxNb2NrQ0RNPiBtX2NkbTsKKyAgICBib29sIG1fZGlzdGluY3RpdmVJZGVudGlm
aWVyc0FsbG93ZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQg
eyB0cnVlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
aWRsCmluZGV4IGU1N2EzNmU2NDY4OTIxNTljYmE4OTllMzAzZjEyZGJhN2ExZmIyMzEuLjdmZDc5
OTc0ODUwMmEzYTg1YmE3NzQ0MThmOGY2ODE3Y2QwOWQ3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuaWRsCkBAIC0zMiw2ICszMiw3IEBACiAgICAgYXR0cmlidXRl
IHNlcXVlbmNlPERPTVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzczsKICAgICBhdHRyaWJ1dGUg
TWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50Owog
ICAgIGF0dHJpYnV0ZSBNZWRpYUtleXNSZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJl
bWVudDsKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBjYW5DcmVhdGVJbnN0YW5jZXM7CiAKICAgICB2
b2lkIHVucmVnaXN0ZXIoKTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjM1N2M5ZGIyMjcwNTJlODBmMmZhNDIwMzc3
YzMzNDk0MDI0YzQxMy4uN2JkOGIxN2I4NWQ3MTY5ZDg5YmUxNGQ3MWE0ZGU0YWNlOGEyOTI4MCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAxLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYUtleVN5c3RlbUFjY2Vz
cy5jcmVhdGVNZWRpYUtleXMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY2NzQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVN5c3RlbUFj
Y2Vzcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRp
YS9tb2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE3LTAxLTAyICBDaHJpcyBGbGVpemFjaCAg
PGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEV4cG9zZSBibG9jayBxdW90ZSBs
ZXZlbCB0byBpT1MgQVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEvbW9jay1NZWRpYUtleVN5c3RlbUFjY2Vzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVN5c3RlbUFjY2Vzcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjA5MjM0ZDUxMTk4ZjBjMTI0OGFlZDZlYzNiNzU2M2ExNzUwZGRj
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9t
b2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQxIEBACitS
VU4oaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKSkKK1JVTihtb2NrID0gaW50
ZXJuYWxzLnJlZ2lzdGVyTW9ja0NETSgpKQorUlVOKG1vY2suc3VwcG9ydGVkRGF0YVR5cGVzID0g
WyJtb2NrIl0pCisKK1JVTihjYXBhYmlsaXRpZXMuaW5pdERhdGFUeXBlcyA9IFsibW9jayJdKQor
UlVOKGNhcGFiaWxpdGllcy52aWRlb0NhcGFiaWxpdGllcyA9IFt7IGNvbnRlbnRUeXBlOiAndmlk
ZW8vbW9jazsgY29kZWNzPSJtb2NrIicgfV0gKQorUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IucmVx
dWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKCJvcmcud2Via2l0Lm1vY2siLCBbY2FwYWJpbGl0aWVz
XSkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKK1JVTihwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1B
Y2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKK1JVTihtb2Nr
LmNhbkNyZWF0ZUluc3RhbmNlcyA9IGZhbHNlKQorUlVOKHByb21pc2UgPSBtZWRpYUtleVN5c3Rl
bUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKSkKK1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5IE9L
CisKK1JVTihtb2NrLmNhbkNyZWF0ZUluc3RhbmNlcyA9IHRydWUpCitSVU4oY2FwYWJpbGl0aWVz
LmRpc3RpbmN0aXZlSWRlbnRpZmllciA9ICJub3QtYWxsb3dlZCIpCitSVU4ocHJvbWlzZSA9IG5h
dmlnYXRvci5yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoIm9yZy53ZWJraXQubW9jayIsIFtj
YXBhYmlsaXRpZXNdKSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKKworUlVOKHByb21pc2UgPSBtZWRp
YUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sK
KworUlVOKG1vY2suZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50ID0gInJlcXVpcmVk
IikKK1JVTihwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCkp
CitQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSworCitSVU4obW9jay5kaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQgPSAib3B0aW9uYWwiKQorUlVOKGNhcGFiaWxpdGllcy5wZXJz
aXN0ZW50U3RhdGUgPSAibm90LWFsbG93ZWQiKQorUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IucmVx
dWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKCJvcmcud2Via2l0Lm1vY2siLCBbY2FwYWJpbGl0aWVz
XSkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKK1JVTihwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1B
Y2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKK1JVTihtb2Nr
LnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50ID0gInJlcXVpcmVkIikKK1JVTihwcm9taXNlID0g
bWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCkpCitQcm9taXNlIHJlamVjdGVk
IGNvcnJlY3RseSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbCBiL0xheW91
dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzQ0MjJkYjg5MTQyNjk0MjhkOWZmMGVjODAyNjE2MWQyZjNiNjY3Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2Nr
LU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwKQEAgLTAsMCArMSwxMjIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICB2YXIgbW9j
azsKKyAgICB2YXIgcHJvbWlzZTsKKyAgICB2YXIgbWVkaWFLZXlTeXN0ZW1BY2Nlc3M7CisgICAg
dmFyIGNhcGFiaWxpdGllcyA9IHt9OworCisgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICB7Cisg
ICAgICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgLy8gZmFpbFRlc3Qo
IkludGVybmFscyBpcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisgICAgICAgICAgICAvLyBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBydW4oJ2ludGVybmFscy5pbml0aWFsaXplTW9j
a01lZGlhU291cmNlKCknKTsKKyAgICAgICAgcnVuKCdtb2NrID0gaW50ZXJuYWxzLnJlZ2lzdGVy
TW9ja0NETSgpJyk7CisgICAgICAgIHJ1bignbW9jay5zdXBwb3J0ZWREYXRhVHlwZXMgPSBbIm1v
Y2siXScpOworCisgICAgICAgIG5leHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBuZXh0KCkg
eworICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgbW9jay51bnJlZ2lz
dGVyKCk7CisgICAgICAgICAgICBlbmRUZXN0KCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhciBuZXh0VGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGNv
bnNvbGVXcml0ZSgnJyk7CisgICAgICAgIG5leHRUZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc2hvdWxkUmVzb2x2ZShwcm9taXNlKSB7CisgICAgICAgIHByb21pc2UudGhlbihtZWRpYUtl
eVN5c3RlbUFjY2VzcyA9PiB7CisgICAgICAgICAgICBsb2dSZXN1bHQoU3VjY2VzcywgJ1Byb21p
c2UgcmVzb2x2ZWQnKTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgfSwgKCkgPT4gewor
ICAgICAgICAgICAgbG9nUmVzdWx0KEZhaWxlZCwgJ1Byb21pc2UgcmVqZWN0ZWQnKTsKKyAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2hvdWxk
UmVqZWN0KHByb21pc2UpIHsKKyAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIGxvZ1Jlc3VsdChGYWlsZWQsICdQcm9taXNlIHJlc29sdmVkIGluY29ycmVjdGx5Jyk7Cisg
ICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sIGV4Y2VwdGlvbkNvZGUgPT4geworICAgICAg
ICAgICAgbG9nUmVzdWx0KFN1Y2Nlc3MsICdQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseScpOwor
ICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBn
b3RNZWRpYUtleVN5c3RlbUFjY2VzcyhyZXN1bHQpIHsKKyAgICAgICAgbG9nUmVzdWx0KFN1Y2Nl
c3MsICdQcm9taXNlIHJlc29sdmVkJyk7CisgICAgICAgIG1lZGlhS2V5U3lzdGVtQWNjZXNzID0g
cmVzdWx0OworICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAgdGVzdHMgPSBbCisgICAgICAg
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcnVuKCdjYXBhYmlsaXRpZXMuaW5pdERhdGFUeXBl
cyA9IFsibW9jayJdJyk7CisgICAgICAgICAgICBydW4oYGNhcGFiaWxpdGllcy52aWRlb0NhcGFi
aWxpdGllcyA9IFt7IGNvbnRlbnRUeXBlOiAndmlkZW8vbW9jazsgY29kZWNzPSJtb2NrIicgfV0g
YCk7CisgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBuYXZpZ2F0b3IucmVxdWVzdE1lZGlhS2V5
U3lzdGVtQWNjZXNzKCJvcmcud2Via2l0Lm1vY2siLCBbY2FwYWJpbGl0aWVzXSknKTsKKyAgICAg
ICAgICAgIHByb21pc2UudGhlbihnb3RNZWRpYUtleVN5c3RlbUFjY2VzcykuY2F0Y2goZmFpbFRl
c3QpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcnVu
KCdwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCknKTsKKyAg
ICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSk7CisgICAgICAgIH0sCisKKyAgICAgICAg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBydW4oJ21vY2suY2FuQ3JlYXRlSW5zdGFuY2VzID0g
ZmFsc2UnKTsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNz
LmNyZWF0ZU1lZGlhS2V5cygpJyk7CisgICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSk7
CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBydW4oJ21v
Y2suY2FuQ3JlYXRlSW5zdGFuY2VzID0gdHJ1ZScpOworICAgICAgICAgICAgcnVuKCdjYXBhYmls
aXRpZXMuZGlzdGluY3RpdmVJZGVudGlmaWVyID0gIm5vdC1hbGxvd2VkIicpOworICAgICAgICAg
ICAgcnVuKCdwcm9taXNlID0gbmF2aWdhdG9yLnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcygi
b3JnLndlYmtpdC5tb2NrIiwgW2NhcGFiaWxpdGllc10pJyk7CisgICAgICAgICAgICBwcm9taXNl
LnRoZW4oZ290TWVkaWFLZXlTeXN0ZW1BY2Nlc3MpLmNhdGNoKGZhaWxUZXN0KTsKKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1l
ZGlhS2V5U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5cygpJyk7CisgICAgICAgICAgICBzaG91
bGRSZXNvbHZlKHByb21pc2UpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgcnVuKCdtb2NrLmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCA9
ICJyZXF1aXJlZCInKTsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U3lzdGVt
QWNjZXNzLmNyZWF0ZU1lZGlhS2V5cygpJyk7CisgICAgICAgICAgICBzaG91bGRSZWplY3QocHJv
bWlzZSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBy
dW4oJ21vY2suZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50ID0gIm9wdGlvbmFsIicp
OworICAgICAgICAgICAgcnVuKCdjYXBhYmlsaXRpZXMucGVyc2lzdGVudFN0YXRlID0gIm5vdC1h
bGxvd2VkIicpOworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbmF2aWdhdG9yLnJlcXVlc3RN
ZWRpYUtleVN5c3RlbUFjY2Vzcygib3JnLndlYmtpdC5tb2NrIiwgW2NhcGFiaWxpdGllc10pJyk7
CisgICAgICAgICAgICBwcm9taXNlLnRoZW4oZ290TWVkaWFLZXlTeXN0ZW1BY2Nlc3MpLmNhdGNo
KGZhaWxUZXN0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5cygp
Jyk7CisgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpOworICAgICAgICB9LAorCisg
ICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcnVuKCdtb2NrLnBlcnNpc3RlbnRTdGF0
ZVJlcXVpcmVtZW50ID0gInJlcXVpcmVkIicpOworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0g
bWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCknKTsKKyAgICAgICAgICAgIHNo
b3VsZFJlamVjdChwcm9taXNlKTsKKyAgICAgICAgfSwKKyAgICBdOworICAgIDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGUxMzg1NmE5OGU1Y2Q5
ODEzODZjM2E4ZTM2MTEwNTJmYzNmZGQzYTIuLjQ3MjBjZWZlNGJlM2EyMDk5MjQzYTM1OGI4MzYx
NWFiNDg1NTU3MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xNDcwLDUgKzE0NzAsNiBAQCB3ZWJraXQub3JnL2IvMTY1ODc0IFsgRGVidWcgXSBzdHJl
YW1zL3BpcGUtdG8uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgTmV3IEVuY3J5cHRlZCBNZWRp
YSBBUEkgbm90IGVuYWJsZWQgb24gTWFjCiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1uYXZp
Z2F0b3ItcmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwgWyBTa2lwIF0KK21lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwgWyBTa2lwIF0KIAog
d2Via2l0Lm9yZy9iLzE2NjAyNSBodHRwL3Rlc3RzL2ZldGNoL2ZldGNoaW5nLXNhbWUtcmVzb3Vy
Y2Utd2l0aC1kaWZmZmVyZW50LW9wdGlvbnMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>