<?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>166880</bug_id>
          
          <creation_ts>2017-01-09 23:56:46 -0800</creation_ts>
          <short_desc>Add support for MediaKeys.generateRequest().</short_desc>
          <delta_ts>2017-01-11 01:47:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>166796</dependson>
          
          <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>1265304</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-09 23:56:46 -0800</bug_when>
    <thetext>Add support for MediaKeys.generateRequest().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265305</commentid>
    <comment_count>1</comment_count>
      <attachid>298448</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-10 00:06:52 -0800</bug_when>
    <thetext>Created attachment 298448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265352</commentid>
    <comment_count>2</comment_count>
      <attachid>298448</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2017-01-10 06:38:53 -0800</bug_when>
    <thetext>Comment on attachment 298448
Patch

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

I see this patch mostly ok that&apos;s why I r+. I don&apos;t mind another pair of eyes though.

&gt; Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp:85
&gt; +    auto object = InspectorObject::create();
&gt; +    auto kidsArray = InspectorArray::create();

I usually don&apos;t like the auto for plain variables, I would type the object explicitly.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:93
&gt; +    auto certificate = SharedBuffer::create(serverCertificate.data(), serverCertificate.length());

Specify the type, please.

Yes, I hate autos :)

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:5720
&gt; +		CD063F821E23FA8900812BE3 /* InitDataRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD063F801E23FA8900812BE3 /* InitDataRegistry.cpp */; };
&gt; +		CD063F831E23FA8900812BE3 /* InitDataRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = CD063F811E23FA8900812BE3 /* InitDataRegistry.h */; };

When will you move to CMake? Seven lines vs 1 in cmake ;-p

&gt; Source/WebCore/testing/MockCDMFactory.cpp:246
&gt; +    auto keyIDs = InitDataRegistry::shared().extractKeyIDs(initDataType, initData);

Please specify the type.

&gt; LayoutTests/media/encrypted-media/mock-MediaKeySession-generateRequest.html:60
&gt; +    function shouldResolve(promise) {
&gt; +        promise.then(mediaKeySystemAccess =&gt; {
&gt; +            logResult(Success, &apos;Promise resolved&apos;);
&gt; +            next();
&gt; +        }, () =&gt; {
&gt; +            logResult(Failed, &apos;Promise rejected&apos;);
&gt; +            next();
&gt; +        });
&gt; +    }
&gt; +
&gt; +    function shouldReject(promise) {
&gt; +        promise.then(() =&gt; {
&gt; +            logResult(Failed, &apos;Promise resolved incorrectly&apos;);
&gt; +            next();
&gt; +        }, exceptionCode =&gt; {
&gt; +            logResult(Success, &apos;Promise rejected correctly&apos;);
&gt; +            next();
&gt; +        });
&gt; +    }

It would be nice to have these in a different file cause I am sure they will be needed somewhere else too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265365</commentid>
    <comment_count>3</comment_count>
      <attachid>298448</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-10 08:35:15 -0800</bug_when>
    <thetext>Comment on attachment 298448
Patch

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

Thanks! Comments below.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp:85
&gt;&gt; +    auto kidsArray = InspectorArray::create();
&gt; 
&gt; I usually don&apos;t like the auto for plain variables, I would type the object explicitly.

I&apos;ve received precisely the opposite review feedback from Darin.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:93
&gt;&gt; +    auto certificate = SharedBuffer::create(serverCertificate.data(), serverCertificate.length());
&gt; 
&gt; Specify the type, please.
&gt; 
&gt; Yes, I hate autos :)

I see. :)

But auto is the future, and in situations where the type is immediately inferable (like in SharedBuffer::create()), appropriate..

&gt;&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:5720
&gt;&gt; +		CD063F831E23FA8900812BE3 /* InitDataRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = CD063F811E23FA8900812BE3 /* InitDataRegistry.h */; };
&gt; 
&gt; When will you move to CMake? Seven lines vs 1 in cmake ;-p

Xcode makes this automatic from File-&gt;New File. It&apos;s only for other build systems that I have to explicitly edit a build file.

&gt;&gt; LayoutTests/media/encrypted-media/mock-MediaKeySession-generateRequest.html:60
&gt;&gt; +    }
&gt; 
&gt; It would be nice to have these in a different file cause I am sure they will be needed somewhere else too.

Sure, i&apos;m using them a lot in these mock EME tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265379</commentid>
    <comment_count>4</comment_count>
      <attachid>298448</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-10 09:07:12 -0800</bug_when>
    <thetext>Comment on attachment 298448
Patch

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

&gt;&gt; Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp:85
&gt;&gt; +    auto kidsArray = InspectorArray::create();
&gt; 
&gt; I usually don&apos;t like the auto for plain variables, I would type the object explicitly.

While I am not in the &quot;always use auto&quot; camp, I think it makes sense in cases like this where the type is clear from the context.

&gt; Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp:91
&gt; +    String json = object-&gt;toJSONString();
&gt; +    CString jsonData = json.utf8();

Nit: do you need these local variables?

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:224
&gt; +            m_taskQueue.enqueueTask([this, weakThis, promise = WTFMove(promise), message = WTFMove(message), messageType, sessionId, succeeded] () mutable {

Looks like you don&apos;t use weakThis.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:93
&gt;&gt; +    auto certificate = SharedBuffer::create(serverCertificate.data(), serverCertificate.length());
&gt; 
&gt; Specify the type, please.
&gt; 
&gt; Yes, I hate autos :)

I disagree in this case, &quot;SharedBuffer::create&quot; makes the type obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265385</commentid>
    <comment_count>5</comment_count>
      <attachid>298448</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-10 09:17:11 -0800</bug_when>
    <thetext>Comment on attachment 298448
Patch

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

&gt;&gt; Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp:91
&gt;&gt; +    CString jsonData = json.utf8();
&gt; 
&gt; Nit: do you need these local variables?

I can probably drop the &quot;json&quot; variable.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:224
&gt;&gt; +            m_taskQueue.enqueueTask([this, weakThis, promise = WTFMove(promise), message = WTFMove(message), messageType, sessionId, succeeded] () mutable {
&gt; 
&gt; Looks like you don&apos;t use weakThis.

Oh you know, since it&apos;s a task, it&apos;ll never be run after the this object is destroyed; so yeah, I don&apos;t need weakThis. Good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265426</commentid>
    <comment_count>6</comment_count>
      <attachid>298481</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-10 10:45:40 -0800</bug_when>
    <thetext>Created attachment 298481
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265454</commentid>
    <comment_count>7</comment_count>
      <attachid>298481</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 11:26:30 -0800</bug_when>
    <thetext>Comment on attachment 298481
Patch for landing

Rejecting attachment 298481 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 298481, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/2865310</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265463</commentid>
    <comment_count>8</comment_count>
      <attachid>298493</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-10 11:33:55 -0800</bug_when>
    <thetext>Created attachment 298493
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265484</commentid>
    <comment_count>9</comment_count>
      <attachid>298493</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 12:10:25 -0800</bug_when>
    <thetext>Comment on attachment 298493
Patch for landing

Clearing flags on attachment: 298493

Committed r210555: &lt;http://trac.webkit.org/changeset/210555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265711</commentid>
    <comment_count>10</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2017-01-11 01:47:25 -0800</bug_when>
    <thetext>Closing the bug as patch has landed.

(In reply to comment #3)
&gt; &gt;&gt; Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp:85
&gt; &gt;&gt; +    auto kidsArray = InspectorArray::create();
&gt; &gt; 
&gt; &gt; I usually don&apos;t like the auto for plain variables, I would type the object explicitly.
&gt; 
&gt; I&apos;ve received precisely the opposite review feedback from Darin.
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:93
&gt; &gt;&gt; +    auto certificate = SharedBuffer::create(serverCertificate.data(), serverCertificate.length());
&gt; &gt; 
&gt; &gt; Specify the type, please.
&gt; &gt; 
&gt; &gt; Yes, I hate autos :)
&gt; 
&gt; I see. :)
&gt; 
&gt; But auto is the future, and in situations where the type is immediately
&gt; inferable (like in SharedBuffer::create()), appropriate..

(In reply to comment #4)
&gt; &gt;&gt; Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp:85
&gt; &gt;&gt; +    auto kidsArray = InspectorArray::create();
&gt; &gt; 
&gt; &gt; I usually don&apos;t like the auto for plain variables, I would type the object explicitly.
&gt; 
&gt; While I am not in the &quot;always use auto&quot; camp, I think it makes sense in
&gt; cases like this where the type is clear from the context.

Well, I guess it is a matter of taste/readability thing and that&apos;s why I opened the discussion, cause I think we need consensus or guidelines on how to write it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298448</attachid>
            <date>2017-01-10 00:06:52 -0800</date>
            <delta_ts>2017-01-10 06:38:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166880-20170110000516.patch</filename>
            <type>text/plain</type>
            <size>57943</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg1Yjc4YjJjYzM0MGUz
OTQyNTBjY2JjYjNkYTFiNGQ0Y2U0MzdkNS4uY2E2NTliZGQxYWQ5NGNjMDYzNGE5NjIwZTAzZjkz
NDRjNWE3NDU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE3LTAxLTA5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBN
ZWRpYUtleXMuZ2VuZXJhdGVSZXF1ZXN0KCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRp
YUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwKKworICAgICAgICBJbXBsZW1lbnQgTWVk
aWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoKS4gVGhpcyByZXF1aXJlcyBzb21lIGFkZGl0
aW9ucworICAgICAgICB0byBDRE0sIENETVByaXZhdGUsIGFuZCBDRE1JbnN0YW5jZSB0byBzdXBw
b3J0IHBsYXRmb3JtIGFkb3B0aW9uIGFuZCB0bworICAgICAgICBpbXBsZW1lbnQgbW9jayBzdXBw
b3J0IGZvciB0ZXN0aW5nLiBBZGRpdGlvbmFsbHksIGFkZCBhbiBJbml0RGF0YVJlZ2lzdHJ5Cisg
ICAgICAgIG9iamVjdCB3aGljaCBjYW4gc2FuaXRpemUgYW5kIGV4dHJhY3Qga2V5IGRhdGEgZnJv
bSB2YXJpb3VzIGluaXREYXRhIHR5cGVzLgorICAgICAgICAoQXQgdGhlIG1vbWVudCwgb25seSB0
aGUgImtleWlkcyIgaW5pdERhdGEgdHlwZSBpcyBpbXBsZW1lbnRlZC4pCisKKyAgICAgICAgRHJp
dmUtYnkgZml4ZXM6IENoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGluaXREYXRhVHlwZSBmcm9tIFN0
cmluZyAtPiBBdG9taWNTdHJpbmcuCisgICAgICAgIEFkZCAiY29uc3QiIGZsYWdzIHRvIGFsbCBD
RE1Qcml2YXRlIG1ldGhvZHMgdGhhdCBtaWdodCBiZSBjYWxsZWQgZnJvbSBhIGNvbnN0CisgICAg
ICAgIHJlZmVyZW5jZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6c3Vw
cG9ydHNJbml0RGF0YVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZUluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5
aWRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNhbml0aXplQ2VuYyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzQ2VuYyk6
CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleUlEc1dlYk0pOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2hh
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0
cnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OnJlZ2lzdGVySW5pdERhdGFUeXBl
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjptZXNzYWdlRXZlbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5
U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZERhdGFUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVy
T3JpZ2luQW5kQ2xlYXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRz
SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnJlcXVlc3RM
aWNlbnNlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydGVkRGF0YVR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpoYXNTZXNzaW9uV2l0aElEKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uV2l0aElEKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWREYXRhVHlwZXMpOiBEZWxldGVkLgorCiAy
MDE3LTAxLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBNZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigpLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA2ZWIzMTQ2OTlhYmQ1MTQ5YTlkNGI1ZmY5ZTkxNjg1ODY1NDk4MTNkLi40ODE5N2Iy
ZGIyOTUzZjYzNWRkYmM5YmIwYTA1NTMzNWFjYTkyNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMjk4Miw2ICsyOTgyLDcgQEAgZW5kaWYgKCkKIGlmIChFTkFCTEVfRU5DUllQVEVEX01FRElB
KQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKyAgICAgICAgTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcAogICAgICAgICBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVz
c2FnZUV2ZW50LmNwcAogICAgICAgICBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKICAgICAgICAgTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApp
bmRleCA4Y2I4MzRlYzUyMmVhY2NmYjU4NDJkZjAxYmZjMTg2NTk3YTU4OTlkLi4zMzEwNDU5Njcw
M2FhMmI1NWRiOTBlMDA4NDRhN2I0MmJmNzIwMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJbml0RGF0
YVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzUmVzdHJpY3Rpb25zLmgiCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNjM0LDYg
KzYzNSwyMSBAQCBib29sIENETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAorYm9vbCBD
RE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBl
KSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0lu
aXREYXRhVHlwZShpbml0RGF0YVR5cGUpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06
OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCit7CisgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6
OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7Cit9CisK
K2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQoreworICAgIHJldHVybiBtX3ByaXZh
dGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEp
OworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKaW5kZXggZTU2Y2NjNjYzMmQ3NjQ0MzUwNzQzZmFlZTFmYTYzYzY0NGM3OWYwNS4u
N2MxNTkzNDlhNzBlNjE1MDUxZTEwYTM2NzZjYWYyZmQ5M2FkZTdmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIk1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmLmg+CkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIENETUluc3RhbmNlOwogY2xhc3MgQ0RNUHJp
dmF0ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9uczsKIApAQCAt
NzMsNiArNzUsMTAgQEAgcHVibGljOgogICAgIFJlZlB0cjxDRE1JbnN0YW5jZT4gY3JlYXRlSW5z
dGFuY2UoKTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Q7CiAg
ICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0luaXRE
YXRhVHlwZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKIHByaXZh
dGU6CiAgICAgQ0RNKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmlu
ZGV4IDcyZmY1NWNmMjJkY2FkYjNjYmM4YzVlNGQ2ZTUxM2JjNWI2YmY3NGEuLmZkNDhkZjEzYzQ0
YjkzZDVlOGYyYzgxMzA2ZmU2MmE3ZjVhZjFlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTMwLDEzICszMCwxMCBA
QAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLX0KLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDRE1JbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPENETUlu
c3RhbmNlPiB7CiBwdWJsaWM6CkBAIC01MCw3ICs0NywxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXRE
aXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCBTdWNj
ZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSA9IDA7Ci0gICAgdmlydHVh
bCBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoSlNDOjpBcnJheUJ1ZmZlciYpID0g
MDsKKyAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIExpY2Vuc2VUeXBlIHsKKyAgICAg
ICAgVGVtcG9yYXJ5LAorICAgICAgICBQZXJzaXN0YWJsZSwKKyAgICAgICAgVXNhZ2VSZWNvcmQs
CisgICAgfTsKKworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBu
ZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IDYwYjZmY2EyZjVkNThmOTk5YmI1NTJiYTU0YzU3
NDMyYmE2YjAzODMuLjc5M2M1NDA0ZDQ2YzI5M2E0ZWI1Y2Y1MTcyNzlhYzRlYTNkNDc1OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5oCkBAIC00MSwxOCArNDEsMTkgQEAgY2xhc3MgQ0RNUHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+Q0RNUHJpdmF0ZSgpIHsgfQogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5p
dERhdGFUeXBlKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHND
b25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25z
dCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlv
bnMmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmln
dXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3Qg
U3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3Rp
dmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpID0gMDsKLSAgICB2aXJ0dWFsIE1lZGlh
S2V5c1JlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdp
bkFuZENsZWFyYWJsZShjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihNZWRpYUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3Qg
U3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlz
dGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIE1lZGlhS2V5c1JlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNv
bnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0
aW9ucyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2U+IGNy
ZWF0ZUluc3RhbmNlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiwgY29u
c3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDIzNDVlYjNhODE2Y2UyNTJiNzE5ZDk0OGQxZmVjODIwM2VjNDY4ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgorCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
IgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RLZXlJRHNLZXlp
ZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgLy8gMS4gRm9ybWF0CisgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpIH07CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVl
OworICAgIGlmICghSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihqc29uLCB2YWx1ZSkpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7Cisg
ICAgaWYgKCF2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4ga2lkc0FycmF5OworICAgIGlmICghb2JqZWN0LT5n
ZXRBcnJheSgia2lkcyIsIGtpZHNBcnJheSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDog
KmtpZHNBcnJheSkgeworICAgICAgICBTdHJpbmcga2V5SUQ7CisgICAgICAgIGlmICghdmFsdWUt
PmFzU3RyaW5nKGtleUlEKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFZlY3Rv
cjxjaGFyPiBrZXlJRERhdGE7CisgICAgICAgIGlmICghV1RGOjpiYXNlNjREZWNvZGUoa2V5SUQs
IHsga2V5SUREYXRhIH0pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4ga2V5SURCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGtleUlE
RGF0YSk7CisgICAgICAgIGtleUlEcy5hcHBlbmQoV1RGTW92ZShrZXlJREJ1ZmZlcikpOworICAg
IH0KKworICAgIHJldHVybiBrZXlJRHM7Cit9CisKK3N0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICAvLyAx
LiBGb3JtYXQKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zv
cm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKKyAgICBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGtleUlEQnVmZmVyID0gZXh0cmFjdEtleUlEc0tleWlkcyhidWZmZXIp
OworICAgIGlmIChrZXlJREJ1ZmZlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgYXV0byBvYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIGF1
dG8ga2lkc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAoYXV0byYg
YnVmZmVyIDoga2V5SURCdWZmZXIpCisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNl
NjRFbmNvZGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgb2JqZWN0LT5z
ZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CisKKyAgICBTdHJpbmcganNvbiA9
IG9iamVjdC0+dG9KU09OU3RyaW5nKCk7CisgICAgQ1N0cmluZyBqc29uRGF0YSA9IGpzb24udXRm
OCgpOworCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwg
anNvbkRhdGEubGVuZ3RoKCkpOworfQorCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIC8vIDQuIENvbW1v
biBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2Nv
bW1vbi1zeXN0ZW0KKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBidWZmZXIuY29w
eSgpOworfQorCitzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0S2V5SURz
Q2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICAvLyA0LiBDb21tb24gU3lz
dGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAorICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9l
bmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24t
c3lzdGVtCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQoreworICAgIC8vIDEuIEZvcm1hdAorICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL3dlYm0uaHRtbCNmb3Jt
YXQKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBidWZmZXIuY29weSgpOworfQor
CitzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0S2V5SURzV2ViTShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICAvLyAxLiBGb3JtYXQKKyAgICAvLyBodHRw
czovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0
YS93ZWJtLmh0bWwjZm9ybWF0CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9
OworfQorCitJbml0RGF0YVJlZ2lzdHJ5JiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFyZWQoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbml0RGF0YVJlZ2lzdHJ5PiByZWdpc3RyeTsKKyAg
ICByZXR1cm4gcmVnaXN0cnkuZ2V0KCk7Cit9CisKK0luaXREYXRhUmVnaXN0cnk6OkluaXREYXRh
UmVnaXN0cnkoKQoreworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJrZXlpZHMiLCB7ICZzYW5p
dGl6ZUtleWlkcywgJmV4dHJhY3RLZXlJRHNLZXlpZHMgfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0
YVR5cGUoImNlbmMiLCB7ICZzYW5pdGl6ZUNlbmMsICZleHRyYWN0S2V5SURzQ2VuYyB9KTsKKyAg
ICByZWdpc3RlckluaXREYXRhVHlwZSgid2VibSIsIHsgJnNhbml0aXplV2ViTSwgJmV4dHJhY3RL
ZXlJRHNXZWJNIH0pOworfQorCitJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgp
ID0gZGVmYXVsdDsKKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2Fu
aXRpemVJbml0RGF0YShjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXRE
YXRhVHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUu
c2FuaXRpemVJbml0RGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGl0
ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVyKTsKK30KKworVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21pY1N0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBh
dXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKKyAgICBpZiAoaXRlciA9PSBt
X3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIHJldHVybiBpdGVyLT52YWx1ZS5leHRyYWN0S2V5SURzKGJ1ZmZlcik7
Cit9CisKK3ZvaWQgSW5pdERhdGFSZWdpc3RyeTo6cmVnaXN0ZXJJbml0RGF0YVR5cGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIEluaXREYXRhVHlwZUNhbGxiYWNrcyYmIGNhbGxi
YWNrcykKK3sKKyAgICBBU1NFUlQoIW1fdHlwZXMuY29udGFpbnMoaW5pdERhdGFUeXBlKSk7Cisg
ICAgbV90eXBlcy5zZXQoaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGNhbGxiYWNrcykpOworfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zOWJmYTA0NTM1NDZkYTU3N2JhM2Q5ZjhmMWE0OTQ4OTFiODY4MTc0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFz
aC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xh
c3MgSW5pdERhdGFSZWdpc3RyeSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IEluaXREYXRhUmVnaXN0cnkmIHNoYXJlZCgpOworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ry
b3llZDxJbml0RGF0YVJlZ2lzdHJ5PjsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0
aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4g
ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJik7CisKKyAgICBzdHJ1Y3QgSW5pdERhdGFUeXBlQ2FsbGJhY2tzIHsKKyAgICAg
ICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBFeHRyYWN0S2V5
SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpPjsKKworICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRp
emVJbml0RGF0YTsKKyAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7
CisgICAgfTsKKyAgICB2b2lkIHJlZ2lzdGVySW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW5pdERhdGFUeXBlLCBJbml0RGF0YVR5cGVDYWxsYmFja3MmJik7CisKK3ByaXZhdGU6Cisg
ICAgSW5pdERhdGFSZWdpc3RyeSgpOworICAgIH5Jbml0RGF0YVJlZ2lzdHJ5KCk7CisKKyAgICBI
YXNoTWFwPEF0b21pY1N0cmluZywgSW5pdERhdGFUeXBlQ2FsbGJhY2tzPiBtX3R5cGVzOworfTsK
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNw
cAppbmRleCAwY2Q3M2Y5ZTBjZTM1NjBlZjNmYzE2NDBlNmZmMTdjN2NkYTY0N2E2Li5hMTVjMDc5
ZDE4ZmI5NmFlYWViMWM2NzI4NTc2NmNiMzZhNGMxN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBA
IC0zMywxMSArMzMsMjEgQEAKIAogI2luY2x1ZGUgIkNETS5oIgogI2luY2x1ZGUgIkNETUluc3Rh
bmNlLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRp
YUtleU1lc3NhZ2VUeXBlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlTdGF0dXNNYXAuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyBBdG9taWNTdHJpbmcmIG1lc3NhZ2VFdmVudE5hbWUoKQoreworICAgIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbWVzc2FnZSB7ICJtZXNzYWdlIiB9OworICAgIHJldHVybiBtZXNzYWdl
LmdldCgpOworfQorCiBSZWY8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYUtleVNlc3Npb25UeXBlIHNl
c3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBs
ZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNlPiYmIGluc3RhbmNlKQogewogICAgIGF1dG8gc2Vz
c2lvbiA9IGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQsIHNlc3Npb25UeXBl
LCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZN
b3ZlKGluc3RhbmNlKSkpOwpAQCAtNTMsNiArNjMsOCBAQCBNZWRpYUtleVNlc3Npb246Ok1lZGlh
S2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYUtleVNlc3Np
bwogICAgICwgbV9zZXNzaW9uVHlwZShzZXNzaW9uVHlwZSkKICAgICAsIG1faW1wbGVtZW50YXRp
b24oV1RGTW92ZShpbXBsZW1lbnRhdGlvbikpCiAgICAgLCBtX2luc3RhbmNlKFdURk1vdmUoaW5z
dGFuY2UpKQorICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV93ZWFrUHRyRmFjdG9y
eSh0aGlzKQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEv
I2RvbS1tZWRpYWtleXMtc2V0c2VydmVyY2VydGlmaWNhdGUKICAgICAvLyBXM0MgRWRpdG9yJ3Mg
RHJhZnQgMDkgTm92ZW1iZXIgMjAxNgpAQCAtOTQsOSArMTA2LDE0MyBAQCBSZWY8TWVkaWFLZXlT
dGF0dXNNYXA+IE1lZGlhS2V5U2Vzc2lvbjo6a2V5U3RhdHVzZXMoKSBjb25zdAogICAgIHJldHVy
biBtX2tleVN0YXR1c2VzLmNvcHlSZWYoKTsKIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246Omdl
bmVyYXRlUmVxdWVzdChjb25zdCBTdHJpbmcmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKQordm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChj
b25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBpbml0
RGF0YSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9t
LW1lZGlha2V5c2Vzc2lvbi1nZW5lcmF0ZXJlcXVlc3QKKyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJh
ZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2Vk
LCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDEu
IElmIHRoaXMgb2JqZWN0IGlzIGNsb3NlZCwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRo
IGFuIEludmFsaWRTdGF0ZUVycm9yLgorICAgIC8vIDIuIElmIHRoaXMgb2JqZWN0J3MgdW5pbml0
aWFsaXplZCB2YWx1ZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFu
IEludmFsaWRTdGF0ZUVycm9yLgorICAgIGlmIChtX2Nsb3NlZCB8fCAhbV91bmluaXRpYWxpemVk
KSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyAzLiBMZXQgdGhpcyBvYmplY3QncyB1bmluaXRpYWxp
emVkIHZhbHVlIGJlIGZhbHNlLgorICAgIG1fdW5pbml0aWFsaXplZCA9IGZhbHNlOworCisgICAg
Ly8gNC4gSWYgaW5pdERhdGFUeXBlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJldHVybiBhIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgorICAgIC8vIDUuIElm
IGluaXREYXRhIGlzIGFuIGVtcHR5IGFycmF5LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdp
dGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KKyAgICBpZiAoaW5pdERhdGFUeXBlLmlzRW1w
dHkoKSB8fCAhaW5pdERhdGEubGVuZ3RoKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5
cGVFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA2LiBJZiB0aGUgS2V5
IFN5c3RlbSBpbXBsZW1lbnRhdGlvbiByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBp
bXBsZW1lbnRhdGlvbiB2YWx1ZSBkb2VzIG5vdCBzdXBwb3J0CisgICAgLy8gICAgaW5pdERhdGFU
eXBlIGFzIGFuIEluaXRpYWxpemF0aW9uIERhdGEgVHlwZSwgcmV0dXJuIGEgcHJvbWlzZSByZWpl
Y3RlZCB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IuIFN0cmluZworICAgIC8vICAgIGNvbXBhcmlz
b24gaXMgY2FzZS1zZW5zaXRpdmUuCisgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0
c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChO
T1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA3LiBM
ZXQgaW5pdCBkYXRhIGJlIGEgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIGluaXREYXRhIHBh
cmFtZXRlci4KKyAgICAvLyA4LiBMZXQgc2Vzc2lvbiB0eXBlIGJlIHRoaXMgb2JqZWN0J3Mgc2Vz
c2lvbiB0eXBlLgorICAgIC8vIDkuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCisgICAg
Ly8gMTAuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgorICAgIG1fdGFza1F1
ZXVlLmVucXVldWVUYXNrKFt0aGlzLCBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGlu
aXREYXRhLmRhdGEoKSwgaW5pdERhdGEubGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgLy8gMTAuMS4gSWYgdGhl
IGluaXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHByb21pc2Ug
d2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgorICAgICAgICAvLyAxMC4yLiBMZXQgc2Fu
aXRpemVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNpb24gb2Yg
aW5pdCBkYXRhLgorICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0
YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0
RGF0YSk7CisKKyAgICAgICAgLy8gMTAuMy4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwg
cmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgorICAgICAgICBp
ZiAoIXNhbml0aXplZEluaXREYXRhKSB7CisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlw
ZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDEw
LjQuIElmIHNhbml0aXplZCBpbml0IGRhdGEgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGgg
YSBOb3RTdXBwb3J0ZWRFcnJvci4KKyAgICAgICAgaWYgKHNhbml0aXplZEluaXREYXRhLT5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOT1RfU1VQUE9SVEVEX0VSUik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyAxMC41LiBMZXQg
c2Vzc2lvbiBpZCBiZSB0aGUgZW1wdHkgc3RyaW5nLgorICAgICAgICAvLyAxMC42LiBMZXQgbWVz
c2FnZSBiZSBudWxsLgorICAgICAgICAvLyAxMC43LiBMZXQgbWVzc2FnZSB0eXBlIGJlIG51bGwu
CisgICAgICAgIC8vIDEwLjguIExldCBjZG0gYmUgdGhlIENETSBpbnN0YW5jZSByZXByZXNlbnRl
ZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KKyAgICAgICAgLy8gMTAuOS4g
VXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAvLyAx
MC45LjEuIElmIHRoZSBzYW5pdGl6ZWQgaW5pdCBkYXRhIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhl
IGNkbSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yLgorICAgICAgICBp
ZiAoIW1faW1wbGVtZW50YXRpb24tPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCAqc2Fu
aXRpemVkSW5pdERhdGEpKSB7CisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTk9UX1NVUFBP
UlRFRF9FUlIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8g
MTAuOS4yIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSB2YWx1ZSBvZiBzZXNzaW9uIHR5cGUgZnJv
bSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgICAgIENETUluc3RhbmNlOjpMaWNlbnNlVHlwZSBy
ZXF1ZXN0ZWRMaWNlbnNlVHlwZTsKKyAgICAgICAgc3dpdGNoIChtX3Nlc3Npb25UeXBlKSB7Cisg
ICAgICAgIGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6VGVtcG9yYXJ5OgorICAgICAgICAgICAg
Ly8g4oazICJ0ZW1wb3JhcnkiCisgICAgICAgICAgICAvLyBMZXQgcmVxdWVzdGVkIGxpY2Vuc2Ug
dHlwZSBiZSBhIHRlbXBvcmFyeSBub24tcGVyc2lzdGFibGUgbGljZW5zZS4KKyAgICAgICAgICAg
IHJlcXVlc3RlZExpY2Vuc2VUeXBlID0gQ0RNSW5zdGFuY2U6OkxpY2Vuc2VUeXBlOjpUZW1wb3Jh
cnk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYUtleVNlc3Npb25UeXBl
OjpQZXJzaXN0ZW50TGljZW5zZToKKyAgICAgICAgICAgIC8vIOKGsyAicGVyc2lzdGVudC1saWNl
bnNlIgorICAgICAgICAgICAgLy8gTGV0IHJlcXVlc3RlZCBsaWNlbnNlIHR5cGUgYmUgYSBwZXJz
aXN0YWJsZSBsaWNlbnNlLgorICAgICAgICAgICAgcmVxdWVzdGVkTGljZW5zZVR5cGUgPSBDRE1J
bnN0YW5jZTo6TGljZW5zZVR5cGU6OlBlcnNpc3RhYmxlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVjb3JkOgor
ICAgICAgICAgICAgLy8g4oazICJwZXJzaXN0ZW50LXVzYWdlLXJlY29yZCIKKyAgICAgICAgICAg
IC8vIDEuIEluaXRpYWxpemUgdGhpcyBvYmplY3QncyByZWNvcmQgb2Yga2V5IHVzYWdlIGFzIGZv
bGxvd3MuCisgICAgICAgICAgICAvLyAgICBTZXQgdGhlIGxpc3Qgb2Yga2V5IElEcyBrbm93biB0
byB0aGUgc2Vzc2lvbiB0byBhbiBlbXB0eSBsaXN0LgorICAgICAgICAgICAgbV9yZWNvcmRPZktl
eVVzYWdlLmNsZWFyKCk7CisKKyAgICAgICAgICAgIC8vICAgIFNldCB0aGUgZmlyc3QgZGVjcnlw
dCB0aW1lIHRvIG51bGwuCisgICAgICAgICAgICBtX2ZpcnN0RGVjcnlwdFRpbWUgPSAwOworCisg
ICAgICAgICAgICAvLyAgICBTZXQgdGhlIGxhdGVzdCBkZWNyeXB0IHRpbWUgdG8gbnVsbC4KKyAg
ICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOworCisgICAgICAgICAgICAvLyAyLiBM
ZXQgcmVxdWVzdGVkIGxpY2Vuc2UgdHlwZSBiZSBhIG5vbi1wZXJzaXN0YWJsZSBsaWNlbnNlIHRo
YXQgd2lsbAorICAgICAgICAgICAgLy8gICAgcGVyc2lzdCBhIHJlY29yZCBvZiBrZXkgdXNhZ2Uu
CisgICAgICAgICAgICByZXF1ZXN0ZWRMaWNlbnNlVHlwZSA9IENETUluc3RhbmNlOjpMaWNlbnNl
VHlwZTo6VXNhZ2VSZWNvcmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIG1faW5zdGFuY2UtPnJlcXVlc3RMaWNlbnNlKHJlcXVlc3RlZExpY2Vuc2VUeXBlLCBpbml0
RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpLCBbdGhpcywgd2Vha1RoaXMgPSBtX3dlYWtQdHJG
YWN0b3J5LmNyZWF0ZVdlYWtQdHIoKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChSZWY8
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5l
ZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVk
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAvLyAxMC45LjMuIExldCBzZXNzaW9uIGlkIGJlIGEgdW5p
cXVlIFNlc3Npb24gSUQgc3RyaW5nLgorCisgICAgICAgICAgICBNZWRpYUtleU1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlOworICAgICAgICAgICAgaWYgKCFuZWVkc0luZGl2aWR1YWxpemF0aW9uKSB7
CisgICAgICAgICAgICAgICAgLy8gMTAuOS40LiBJZiBhIGxpY2Vuc2UgcmVxdWVzdCBmb3IgdGhl
IHJlcXVlc3RlZCBsaWNlbnNlIHR5cGUgY2FuIGJlIGdlbmVyYXRlZCBiYXNlZCBvbiB0aGUgc2Fu
aXRpemVkIGluaXQgZGF0YToKKyAgICAgICAgICAgICAgICAvLyAxMC45LjQuMS4gTGV0IG1lc3Nh
Z2UgYmUgYSBsaWNlbnNlIHJlcXVlc3QgZm9yIHRoZSByZXF1ZXN0ZWQgbGljZW5zZSB0eXBlIGdl
bmVyYXRlZCBiYXNlZCBvbiB0aGUgc2FuaXRpemVkIGluaXQgZGF0YSBpbnRlcnByZXRlZCBwZXIg
aW5pdERhdGFUeXBlLgorICAgICAgICAgICAgICAgIC8vIDEwLjkuNC4yLiBMZXQgbWVzc2FnZSB0
eXBlIGJlICJsaWNlbnNlLXJlcXVlc3QiLgorICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlID0g
TWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3Q7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIC8vIDEwLjkuNS4gT3RoZXJ3aXNlOgorICAgICAgICAgICAgICAg
IC8vIDEwLjkuNS4xLiBMZXQgbWVzc2FnZSBiZSB0aGUgcmVxdWVzdCB0aGF0IG5lZWRzIHRvIGJl
IHByb2Nlc3NlZCBiZWZvcmUgYSBsaWNlbnNlIHJlcXVlc3QgcmVxdWVzdCBmb3IgdGhlIHJlcXVl
c3RlZCBsaWNlbnNlCisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgIHR5cGUgY2FuIGJlIGdl
bmVyYXRlZCBiYXNlZCBvbiB0aGUgc2FuaXRpemVkIGluaXQgZGF0YS4KKyAgICAgICAgICAgICAg
ICAvLyAxMC45LjUuMi4gTGV0IG1lc3NhZ2UgdHlwZSByZWZsZWN0IHRoZSB0eXBlIG9mIG1lc3Nh
Z2UsIGVpdGhlciAibGljZW5zZS1yZXF1ZXN0IiBvciAiaW5kaXZpZHVhbGl6YXRpb24tcmVxdWVz
dCIuCisgICAgICAgICAgICAgICAgbWVzc2FnZVR5cGUgPSBNZWRpYUtleU1lc3NhZ2VUeXBlOjpJ
bmRpdmlkdWFsaXphdGlvblJlcXVlc3Q7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IDEwLjEwLiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAg
ICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgbWVzc2FnZVR5cGUs
IHNlc3Npb25JZCwgc3VjY2VlZGVkXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAvLyAx
MC4xMC4xLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWlsZWQsIHJlamVjdCBwcm9t
aXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRl
IGVycm9yIG5hbWUuCisgICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5j
ZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyAxMC4xMC4yLiBTZXQgdGhlIHNl
c3Npb25JZCBhdHRyaWJ1dGUgdG8gc2Vzc2lvbiBpZC4KKyAgICAgICAgICAgICAgICBtX3Nlc3Np
b25JZCA9IHNlc3Npb25JZDsKKworICAgICAgICAgICAgICAgIC8vIDEwLjkuMy4gTGV0IHRoaXMg
b2JqZWN0J3MgY2FsbGFibGUgdmFsdWUgYmUgdHJ1ZS4KKyAgICAgICAgICAgICAgICBtX2NhbGxh
YmxlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8vIDEwLjkuMy4gUnVuIHRoZSBRdWV1ZSBh
ICJtZXNzYWdlIiBFdmVudCBhbGdvcml0aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBtZXNz
YWdlIHR5cGUgYW5kIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVz
c2FnZVR5cGUsIG1lc3NhZ2UpOworCisgICAgICAgICAgICAgICAgLy8gMTAuOS4zLiBSZXNvbHZl
IHByb21pc2UuCisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgLy8gMTEuIFJldHVybiBwcm9taXNl
LgogfQogCiB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKQpAQCAtMTE5LDYgKzI2NSwyMSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2Fn
ZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKK3sKKyAgICAv
LyA2LjQuMSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudAorICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3F1ZXVlLW1lc3NhZ2UKKyAgICAvLyBXM0MgRWRpdG9yJ3Mg
RHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gVGhlIGZvbGxvd2luZyBzdGVwcyBhcmUg
cnVuOgorICAgIC8vIDEuIExldCB0aGUgc2Vzc2lvbiBiZSB0aGUgc3BlY2lmaWVkIE1lZGlhS2V5
U2Vzc2lvbiBvYmplY3QuCisgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGNyZWF0ZSBhbiBldmVu
dCBuYW1lZCBtZXNzYWdlIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QgY2FuY2VsbGFi
bGUgdXNpbmcgdGhlIE1lZGlhS2V5TWVzc2FnZUV2ZW50CisgICAgLy8gICAgaW50ZXJmYWNlIHdp
dGggaXRzIHR5cGUgYXR0cmlidXRlIHNldCB0byBtZXNzYWdlIGFuZCBpdHMgaXNUcnVzdGVkIGF0
dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0cnVlLCBhbmQgZGlzcGF0Y2ggaXQgYXQgdGhlCisgICAg
Ly8gICAgc2Vzc2lvbi4KKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2
ZW50OjpjcmVhdGUobWVzc2FnZUV2ZW50TmFtZSgpLCB7bWVzc2FnZVR5cGUsIG1lc3NhZ2UuY3Jl
YXRlQXJyYXlCdWZmZXIoKX0sIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgbV9ldmVudFF1
ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOworfQorCiBib29sIE1lZGlh
S2V5U2Vzc2lvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggNTgyOGIwODA4Mjg2MTYzNTU1MjRkODRjMDk1N2Qw
MzY1ZjIwYTc2Zi4uZWIzNmJlZTEyMjJjNDcyOTAwYTExMTAyNDA2YWZiMjg5MzU4NDExYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oCkBAIC0zMyw5ICszMywxMyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVl
dWUuaCIKKyNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9t
aXNlLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5oIgogI2luY2x1ZGUgIk1lZGlh
S2V5U2Vzc2lvblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw2ICs0OSw3IEBA
IGNsYXNzIENETTsKIGNsYXNzIENETUluc3RhbmNlOwogY2xhc3MgTWVkaWFLZXlTdGF0dXNNYXA7
CiBjbGFzcyBNZWRpYUtleXM7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5
U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1
YmxpYzoKQEAgLTU4LDcgKzYzLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBleHBpcmF0aW9uKCkg
Y29uc3Q7CiAgICAgUmVmPE1lZGlhS2V5U3RhdHVzTWFwPiBrZXlTdGF0dXNlcygpIGNvbnN0Owog
Ci0gICAgdm9pZCBnZW5lcmF0ZVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgQnVmZmVyU291
cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBnZW5lcmF0ZVJlcXVlc3Qo
Y29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgQnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJik7CiAgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYpOwogICAgIHZvaWQgdXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYpOwogICAgIHZvaWQgY2xvc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CkBA
IC02Niw2ICs3MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlz
dGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOworICAg
IHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVkaWFLZXlTZXNz
aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CkBAIC04OSw2ICs5NSwxMiBAQCBwcml2YXRl
OgogICAgIE1lZGlhS2V5U2Vzc2lvblR5cGUgbV9zZXNzaW9uVHlwZTsKICAgICBSZWY8Q0RNPiBt
X2ltcGxlbWVudGF0aW9uOwogICAgIFJlZjxDRE1JbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBH
ZW5lcmljRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7CisgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1l
cj4gbV90YXNrUXVldWU7CisgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9m
S2V5VXNhZ2U7CisgICAgZG91YmxlIG1fZmlyc3REZWNyeXB0VGltZSB7IDAgfTsKKyAgICBkb3Vi
bGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsKKyAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYUtl
eVNlc3Npb24+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAKaW5kZXggZjU1ZDc3NTZlNGYzM2QzZGE1MzExNmIwNDJkMGUzYmQ4ZjBkMWUzMy4uZTFj
Yzc0MTA2NGYzZmQ1OTVhNTMzOGE3YzQzYzhiNWNmMzRiYWYxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMzUsNyAr
MzUsNyBAQAogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDxydW50aW1lL0Fy
cmF5QnVmZmVyLmg+CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtOTAsMTQgKzkwLDE0IEBAIHZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8CiAgICAg
fQogCiAgICAgLy8gMy4gTGV0IGNlcnRpZmljYXRlIGJlIGEgY29weSBvZiB0aGUgY29udGVudHMg
b2YgdGhlIHNlcnZlckNlcnRpZmljYXRlIHBhcmFtZXRlci4KLSAgICBhdXRvIGNlcnRpZmljYXRl
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzZXJ2ZXJDZXJ0aWZpY2F0ZS5kYXRhKCksIHNlcnZlckNl
cnRpZmljYXRlLmxlbmd0aCgpKTsKKyAgICBhdXRvIGNlcnRpZmljYXRlID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VydmVyQ2VydGlmaWNhdGUuZGF0YSgpLCBzZXJ2ZXJDZXJ0aWZpY2F0ZS5sZW5n
dGgoKSk7CiAKICAgICAvLyA0LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8v
IDUuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogCiAgICAgbV90YXNrUXVl
dWUuZW5xdWV1ZVRhc2soW3RoaXMsIGNlcnRpZmljYXRlID0gV1RGTW92ZShjZXJ0aWZpY2F0ZSks
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gNS4x
LiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZpY2F0ZS4K
LSAgICAgICAgaWYgKG1faW5zdGFuY2UtPnNldFNlcnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRl
KSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7CisgICAgICAgIGlmIChtX2luc3RhbmNlLT5zZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmljYXRlKSkgPT0gQ0RNSW5zdGFuY2U6OkZh
aWxlZCkgewogICAgICAgICAgICAgLy8gNS4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVk
LCByZXNvbHZlIHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0
aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChJ
TlZBTElEX1NUQVRFX0VSUik7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmY5MmNmMTM5MjBm
MzZhNWM5NGQ5MjU4NTFlZGFlZTZmNjEyNTNkMC4uOTEyNDcxNjQ5OTcyYWMzMjMxYjllMzhhODZh
YzdkOTQ2NzZmMDI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTcxNiw2ICs1NzE2LDggQEAKIAkJQ0NDMkI1MTQxNUY2MTMw
NjAwNDhDREQ2IC8qIERldmljZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTAxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUND
QzJCNTE1MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTExMTVGNjEzMDYwMDQ4
Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0NDMkI1MTYxNUY2MTMwNjAw
NDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQ0QwNjNGODIxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwNjNGODAxRTIzRkE4
OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwICovOyB9OworCQlDRDA2M0Y4MzFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwNjNGODExRTIzRkE4OTAwODEyQkUzIC8qIEluaXRE
YXRhUmVnaXN0cnkuaCAqLzsgfTsKIAkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlv
RGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1Mu
Y3BwICovOyB9OwogCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0g
Ki87IH07CiAJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldp
bmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qx
MjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNjQxLDYgKzEz
NjQzLDggQEAKIAkJQ0NDMkI1MTAxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0NDMkI1MTExNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGV2aWNl
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNDQzJCNTEyMTVG
NjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERldmljZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0QwNjNGODAxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdERhdGFSZWdpc3RyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMDYzRjgxMUUyM0ZBODkwMDgxMkJFMyAv
KiBJbml0RGF0YVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
aXREYXRhUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwRUVFMEEx
NDc0M0UzNDAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbklPUy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb0Rlc3Rp
bmF0aW9uSU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMjdERUExNEYz
MDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMjc2MCw2ICsyMjc2NCw4IEBACiAJCQkJQ0RGNEI3MTQxRTAw
QjdFNTAwRTIzNUEyIC8qIENETS5oICovLAogCQkJCUNEOUQwNTQyMUUxRUZBMTIwMDNCNEM0RiAv
KiBDRE1JbnN0YW5jZS5oICovLAogCQkJCUNERjRCNzI1MUUwM0MxNUIwMEUyMzVBMiAvKiBDRE1Q
cml2YXRlLmggKi8sCisJCQkJQ0QwNjNGODAxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVn
aXN0cnkuY3BwICovLAorCQkJCUNEMDYzRjgxMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJl
Z2lzdHJ5LmggKi8sCiAJCQkJMkQ5QkY3MkYxREJGREMwRjAwN0E3RDk5IC8qIE1lZGlhS2V5TWVz
c2FnZUV2ZW50LmNwcCAqLywKIAkJCQkyRDlCRjczMDFEQkZEQzBGMDA3QTdEOTkgLyogTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuaCAqLywKIAkJCQkyRDlCRjZGNTFEQkZCNzFGMDA3QTdEOTkgLyogTWVk
aWFLZXlNZXNzYWdlRXZlbnQuaWRsICovLApAQCAtMjc4NTMsNiArMjc4NTksNyBAQAogCQkJCTdD
RTU4RDUwMURENjlBMUUwMDEyODU1MiAvKiBTVkdOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3QTUxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRDA2M0Y4MzFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1QUYwIC8q
IFNWR1BhcnNpbmdFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRDNjc4NEQxMjE0ODE0NzAw
QTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDc2QzlFQjEx
REY2QTI5MDA1NTVCMDIgLyogU1ZHUGF0aEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzA4
MDYsNiArMzA4MTMsNyBAQAogCQkJCUIyNzUzNTYzMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoQ0cu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4REQ0ODkwQjQ2MjlCMDAwQzAyOTkwIC8qIFBhdGhU
cmF2ZXJzYWxTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDUwMDJGQjFCNTZENzk5MDAy
MEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDA2M0Y4MjFF
MjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEZBNkU1RTBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODBBMzhGRTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBOEE2NDZDMUQxOUZGODcwMEQwRTAwRiAvKiBQYXltZW50Q29jb2EubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5k
ZXggZTAyODJiYmZjZDU3MzA1ZWE0OTZmOWQ3ZGVjYmE2NmRkZDcxZTE4ZC4uNTk2NTgzYzIwNDdh
MzZlY2FlMGNlMTU2Zjg2N2Y0ZDkwZmJmMDcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTI4LDcgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQogCisjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlVV
SUQuaCIKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNiArNjEsMjQgQEAgYm9vbCBNb2NrQ0RNRmFjdG9yeTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0dXJuIGVx
dWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtpdC5tb2NrIik7CiB9CiAK
K3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtleXMpCit7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92ZShrZXlzKSk7CisgICAgaWYgKGFkZFJl
c3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiB2YWx1ZSA9IGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKQorICAg
ICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShrZXkpKTsKK30KKwordm9pZCBNb2NrQ0RNRmFjdG9y
eTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYgdHlwZXMpCit7CisgICAg
bV9zdXBwb3J0ZWREYXRhVHlwZXMuY2xlYXIoKTsKKyAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBl
cykKKyAgICAgICAgbV9zdXBwb3J0ZWREYXRhVHlwZXMuYXBwZW5kKHR5cGUpOworfQorCiBzdGQ6
OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShDRE0mKQog
ewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE0+KG1fd2Vha1B0ckZhY3Rvcnku
Y3JlYXRlV2Vha1B0cigpKTsKQEAgLTY5LDI3ICs5MCwyNyBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdl
YWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3Vw
cG9ydHNJbml0RGF0YVR5cGUoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUpCitib29sIE1vY2tD
RE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBl
KSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCiAgICAgICAgIHJldHVybiBtX2ZhY3Rvcnkt
PnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKQorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKIHsKICAg
ICAvLyBOT1RFOiBJbXBsZW1lbnQ7CiAgICAgcmV0dXJuIHRydWU7CiAKIH0KIAotYm9vbCBNb2Nr
Q0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpCitib29s
IE1vY2tDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikg
Y29uc3QKIHsKICAgICAvLyBOT1RFOiBJbXBsZW1lbnQ7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlh
S2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKQorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24oTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9y
eS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkuY29udGFpbnMoc2Vzc2lvblR5cGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05OCwyOCArMTE5LDI4IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Np
b25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNSb2J1c3Ru
ZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNSb2J1
c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29uc3QKIHsKICAgICBpZiAobV9mYWN0
b3J5KQogICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCkuY29u
dGFpbnMocm9idXN0bmVzcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NZWRpYUtleXNSZXF1
aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25z
JikKK01lZGlhS2V5c1JlcXVpcmVtZW50IE1vY2tDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNS
ZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRp
YUtleXNSZXN0cmljdGlvbnMmKSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCiAgICAgICAg
IHJldHVybiBtX2ZhY3RvcnktPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCgpOwog
ICAgIHJldHVybiBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWw7CiB9CiAKLU1lZGlhS2V5
c1JlcXVpcmVtZW50IE1vY2tDRE06OnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IE1l
ZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYp
CitNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVu
dChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0
cmljdGlvbnMmKSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCiAgICAgICAgIHJldHVybiBt
X2ZhY3RvcnktPnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KCk7CiAgICAgcmV0dXJuIE1lZGlh
S2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbDsKIH0KIAotYm9vbCBNb2NrQ0RNOjpkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYpCitib29sIE1vY2tDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmll
cnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBJbXBsZW1lbnQ7CiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xNDcsNiArMTY4LDE1IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9u
cygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vz
c2lvbnMoKTsKIH0KIAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21p
Y1N0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25z
dAoreworICAgIGlmICghc3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgVU5VU0VEX1BBUkFNKGluaXREYXRhKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogTW9ja0NETUluc3RhbmNlOjpNb2NrQ0RNSW5zdGFuY2UoV2Vha1B0cjxN
b2NrQ0RNPiBjZG0pCiAgICAgOiBtX2NkbShjZG0pCiB7CkBAIC0xODgsMTUgKzIxOCw0NCBAQCBD
RE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIE1vY2tDRE1JbnN0YW5jZTo6c2V0UGVyc2lzdGVudFN0
YXRlQWxsb3dlZChib29sIHBlcnNpcwogICAgIHJldHVybiBTdWNjZWVkZWQ7CiB9CiAKLUNETUlu
c3RhbmNlOjpTdWNjZXNzVmFsdWUgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShBcnJheUJ1ZmZlciYgY2VydGlmaWNhdGUpCitDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIE1v
Y2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBj
ZXJ0aWZpY2F0ZSkKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhzdGF0
aWNfY2FzdDxjb25zdCBMQ2hhcio+KGNlcnRpZmljYXRlLmRhdGEoKSksIGNlcnRpZmljYXRlLmJ5
dGVMZW5ndGgoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNlcnRpZmljYXRlLT5kYXRhKCkpLCBjZXJ0aWZpY2F0
ZS0+c2l6ZSgpKTsKIAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRl
U3RyaW5nVmlldywgInZhbGlkIikpCiAgICAgICAgIHJldHVybiBTdWNjZWVkZWQ7CiAgICAgcmV0
dXJuIEZhaWxlZDsKIH0KIAordm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrIGNhbGxiYWNrKQor
eworICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgp
IDogbnVsbHB0cjsKKyAgICBpZiAoIWZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlBdG9tLCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKChsaWNlbnNlVHlwZSA9PSBMaWNl
bnNlVHlwZTo6VGVtcG9yYXJ5ICYmICFmYWN0b3J5LT5zdXBwb3J0ZWRTZXNzaW9uVHlwZXMoKS5j
b250YWlucyhNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkpKQorICAgICAgICB8fCAobGlj
ZW5zZVR5cGUgPT0gTGljZW5zZVR5cGU6OlBlcnNpc3RhYmxlICYmICFmYWN0b3J5LT5zdXBwb3J0
ZWRTZXNzaW9uVHlwZXMoKS5jb250YWlucyhNZWRpYUtleVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50
TGljZW5zZSkpCisgICAgICAgIHx8IChsaWNlbnNlVHlwZSA9PSBMaWNlbnNlVHlwZTo6VXNhZ2VS
ZWNvcmQgJiYgIWZhY3RvcnktPnN1cHBvcnRlZFNlc3Npb25UeXBlcygpLmNvbnRhaW5zKE1lZGlh
S2V5U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZCkpCisgICAgICAgIHx8ICFmYWN0
b3J5LT5zdXBwb3J0ZWREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKSB7CisgICAg
ICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNl
LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIGtleUlEcyA9IEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLmV4dHJhY3RLZXlJRHMoaW5p
dERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2Us
IFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0
cmluZyBzZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgZmFjdG9y
eS0+YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChzZXNzaW9uSUQsIFdURk1vdmUoa2V5SURzKSk7CisK
KyAgICBDU3RyaW5nIGxpY2Vuc2UgeyAibGljZW5zZSIgfTsKKyAgICBjYWxsYmFjayhTaGFyZWRC
dWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25J
RCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKK30KKwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAzMTkyMjk0MDdkYzAwY2Q4
ZDgzYjhmNmM4MzlmYzg1ZTMyOTc4YWQ2Li5mNzYxODBjY2U1M2JhMWI3MzM3ZmM1NjJmMWU1OGQy
NWZlMGZjMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNpbmNsdWRlICJDRE1Qcml2
YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00Miw4ICs0Myw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPE1vY2tDRE1GYWN0b3J5PiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IE1vY2tDRE1GYWN0b3J5KTsgfQogICAgIH5Nb2NrQ0RNRmFjdG9yeSgpOwogCi0g
ICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZERhdGFUeXBlcygpIGNvbnN0IHsgcmV0
dXJuIG1fc3VwcG9ydGVkRGF0YVR5cGVzOyB9Ci0gICAgdm9pZCBzZXRTdXBwb3J0ZWREYXRhVHlw
ZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykgeyBtX3N1cHBvcnRlZERhdGFUeXBlcyA9IFdURk1v
dmUodHlwZXMpOyB9CisgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHN1cHBvcnRlZERh
dGFUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkRGF0YVR5cGVzOyB9CisgICAgdm9p
ZCBzZXRTdXBwb3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJik7CiAKICAgICBjb25zdCBW
ZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mIHN1cHBvcnRlZFNlc3Npb25UeXBlcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0
ZWRTZXNzaW9uVHlwZXMoVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiYgdHlwZXMpIHsgbV9z
dXBwb3J0ZWRTZXNzaW9uVHlwZXMgPSBXVEZNb3ZlKHR5cGVzKTsgfQpAQCAtNjgsNiArNjksMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCB1bnJlZ2lzdGVyKCk7CiAKKyAgICBib29sIGhhc1Nlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gbV9zZXNzaW9ucy5jb250YWlucyhp
ZCk7IH0KKyAgICB2b2lkIHJlbW92ZVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyBt
X3Nlc3Npb25zLnJlbW92ZShpZCk7IH0KKyAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmKTsKKwogcHJpdmF0
ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRl
PiBjcmVhdGVDRE0oQ0RNJikgZmluYWw7CkBAIC03NSw3ICs4MCw3IEBAIHByaXZhdGU6CiAKICAg
ICBNZWRpYUtleXNSZXF1aXJlbWVudCBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dCB7IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbCB9OwogICAgIE1lZGlhS2V5c1JlcXVp
cmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRpYUtleXNSZXF1aXJlbWVu
dDo6T3B0aW9uYWwgfTsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3N1cHBvcnRlZERhdGFUeXBlczsK
KyAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBtX3N1cHBvcnRlZERhdGFUeXBlczsKICAgICBWZWN0
b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7CiAgICAgVmVj
dG9yPFN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwogICAgIGJvb2wgbV9yZWdpc3RlcmVk
IHsgdHJ1ZSB9OwpAQCAtODMsNiArODgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9u
cyB7IHRydWUgfTsKICAgICBXZWFrUHRyRmFjdG9yeTxNb2NrQ0RNRmFjdG9yeT4gbV93ZWFrUHRy
RmFjdG9yeTsKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
bV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CkBA
IC05NCwxOCArMTAwLDE5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1v
Y2tDRE1JbnN0YW5jZTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgU3Ry
aW5nJikgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3Vy
YXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNT
ZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzUm9i
dXN0bmVzcyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgZmluYWw7Ci0gICAgTWVk
aWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgZmlu
YWw7Ci0gICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5k
Q2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgZmlu
YWw7CisgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRp
b25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25z
dCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1
cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYUtl
eXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikg
Y29uc3QgZmluYWw7CisgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFL
ZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZT4gY3Jl
YXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBm
aW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKICAgICBXZWFr
UHRyRmFjdG9yeTxNb2NrQ0RNPiBtX3dlYWtQdHJGYWN0b3J5OwpAQCAtMTE5LDcgKzEyNiw4IEBA
IHByaXZhdGU6CiAgICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKICAgICBTdWNjZXNzVmFs
dWUgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7CiAgICAgU3Vj
Y2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3Vj
Y2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKEpTQzo6QXJyYXlCdWZmZXImKSBmaW5hbDsK
KyAgICBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjaykgZmluYWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE0+IG1fY2RtOwogICAg
IGJvb2wgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCB7IHRydWUgfTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBh
ZGViOGQzNmVkYjQ0ZWYwOWE0ZjU3ZTM4YjM3ODVkOGI2MDUwYmRhLi5iZDI2NDYxZjkwNWNjY2Y1
ZjVlYTUxYTE3MWZlMTM4NWRiNTQ1YWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDEt
MDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIE1lZGlhS2V5cy5nZW5lcmF0ZVJlcXVlc3QoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njg4MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2st
TWVkaWFLZXlTZXNzaW9uLWdlbmVyYXRlUmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi1nZW5lcmF0
ZVJlcXVlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTctMDEtMDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCkuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNl
c3Npb24tZ2VuZXJhdGVSZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi1nZW5lcmF0ZVJlcXVlc3QtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUzNTYwY2FkNzQ0NzI0N2ZjOWFlNTFlYmViNzY4MzJiNmYxNWYy
YWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
bW9jay1NZWRpYUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQxIEBACitSVU4oaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKSkKK1JV
Tihtb2NrID0gaW50ZXJuYWxzLnJlZ2lzdGVyTW9ja0NETSgpKQorUlVOKG1vY2suc3VwcG9ydGVk
RGF0YVR5cGVzID0gWyJrZXlpZHMiXSkKK1JVTihjYXBhYmlsaXRpZXMuaW5pdERhdGFUeXBlcyA9
IFsia2V5aWRzIl0pCitSVU4oY2FwYWJpbGl0aWVzLnZpZGVvQ2FwYWJpbGl0aWVzID0gW3sgY29u
dGVudFR5cGU6ICd2aWRlby9tb2NrOyBjb2RlY3M9Im1vY2siJyB9XSApCitSVU4ocHJvbWlzZSA9
IG5hdmlnYXRvci5yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoIm9yZy53ZWJraXQubW9jayIs
IFtjYXBhYmlsaXRpZXNdKSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKKworUlVOKHByb21pc2UgPSBt
ZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKSkKK1Byb21pc2UgcmVzb2x2ZWQg
T0sKKworVXNpbmcgYW4gaW52YWxpZCBpbml0RGF0YVR5cGUgc3RyaW5nIHNob3VsZCByZWplY3Qu
CitSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRlbXBvcmFy
eSIpKQorRVhQRUNURUQgKHR5cGVvZiBtZWRpYUtleVNlc3Npb24gPT0gJ29iamVjdCcpIE9LCitS
VU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImludmFsaWQiLCBz
dHJpbmdUb1VJbnQ4QXJyYXkoImludmFsaWQiKSkpCitQcm9taXNlIHJlamVjdGVkIGNvcnJlY3Rs
eSBPSworCitSZS11c2luZyBhIGZhaWxlZCBtZWRpYUtleVNlc3Npb24gc2hvdWxkIHJlamVjdC4K
K1JVTihraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIgXSB9KSkKK1JV
Tihwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgc3Ry
aW5nVG9VSW50OEFycmF5KGtpZHMpKSkKK1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5IE9LCisK
K1VzaW5nIGEgbmV3IG1lZGlhS2V5U2Vzc2lvbiBzaG91bGQgcmVzb2x2ZS4KK1JVTihraWRzID0g
SlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIgXSB9KSkKK1JVTihtZWRpYUtleVNl
c3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IikpCitSVU4ocHJvbWlz
ZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmluZ1RvVUlu
dDhBcnJheShraWRzKSkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKK1VzaW5nIGludmFsaWQgaW5p
dERhdGEgc2hvdWxkIHJlamVjdC4KK1JVTihraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBpbnZhbGlk
OiAiaW52YWxpZCIgfSkpCitSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNl
c3Npb24oInRlbXBvcmFyeSIpKQorUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJh
dGVSZXF1ZXN0KCJrZXlpZHMiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykpKQorUHJvbWlzZSBy
ZWplY3RlZCBjb3JyZWN0bHkgT0sKKworVXNpbmcgaW5pdERhdGEgd2l0aCBleHRyYW5lb3VzIGlu
Zm9ybWF0aW9uIHNob3VsZCByZXNvbHZlLgorUlVOKGtpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtp
ZHM6IFsgIk1USXpORFU9Il0sIGludmFsaWQ6ICJpbnZhbGlkIiB9KSkKK1JVTihtZWRpYUtleVNl
c3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IikpCitSVU4ocHJvbWlz
ZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmluZ1RvVUlu
dDhBcnJheShraWRzKSkpCitQcm9taXNlIHJlc29sdmVkIE9LCitFTkQgT0YgVEVTVAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNl
c3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWVhNDY1ZjBjMGJjNmVhNWM0NDM1OTUwNzI4YWM1MDNlNDRiY2Y4ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vz
c2lvbi1nZW5lcmF0ZVJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDEzMSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZhciBtb2Nr
OworICAgIHZhciBwcm9taXNlOworICAgIHZhciBtZWRpYUtleVN5c3RlbUFjY2VzczsKKyAgICB2
YXIgbWVkaWFLZXlzOworICAgIHZhciBtZWRpYUtleVNlc3Npb247CisgICAgdmFyIGNhcGFiaWxp
dGllcyA9IHt9OworICAgIHZhciBraWRzOworCisgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICB7
CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgZmFpbFRlc3Qo
IkludGVybmFscyBpcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBydW4oJ2ludGVybmFscy5pbml0aWFsaXplTW9ja01l
ZGlhU291cmNlKCknKTsKKyAgICAgICAgcnVuKCdtb2NrID0gaW50ZXJuYWxzLnJlZ2lzdGVyTW9j
a0NETSgpJyk7CisgICAgICAgIHJ1bignbW9jay5zdXBwb3J0ZWREYXRhVHlwZXMgPSBbImtleWlk
cyJdJyk7CisgICAgICAgIHJ1bignY2FwYWJpbGl0aWVzLmluaXREYXRhVHlwZXMgPSBbImtleWlk
cyJdJyk7CisgICAgICAgIHJ1bihgY2FwYWJpbGl0aWVzLnZpZGVvQ2FwYWJpbGl0aWVzID0gW3sg
Y29udGVudFR5cGU6ICd2aWRlby9tb2NrOyBjb2RlY3M9Im1vY2siJyB9XSBgKTsKKyAgICAgICAg
cnVuKCdwcm9taXNlID0gbmF2aWdhdG9yLnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcygib3Jn
LndlYmtpdC5tb2NrIiwgW2NhcGFiaWxpdGllc10pJyk7CisgICAgICAgIHByb21pc2UudGhlbihn
b3RNZWRpYUtleVN5c3RlbUFjY2VzcykuY2F0Y2goZmFpbFRlc3QpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIG5leHQoKSB7CisgICAgICAgIGlmICghdGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAg
ICBtb2NrLnVucmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG5leHRUZXN0ID0gdGVzdHMuc2hpZnQo
KTsKKyAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKKyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBzaG91bGRSZXNvbHZlKHByb21pc2UpIHsKKyAgICAgICAgcHJvbWlz
ZS50aGVuKG1lZGlhS2V5U3lzdGVtQWNjZXNzID0+IHsKKyAgICAgICAgICAgIGxvZ1Jlc3VsdChT
dWNjZXNzLCAnUHJvbWlzZSByZXNvbHZlZCcpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAg
ICB9LCAoKSA9PiB7CisgICAgICAgICAgICBsb2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZWpl
Y3RlZCcpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzaG91bGRSZWplY3QocHJvbWlzZSkgeworICAgICAgICBwcm9taXNlLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgbG9nUmVzdWx0KEZhaWxlZCwgJ1Byb21pc2UgcmVzb2x2ZWQgaW5j
b3JyZWN0bHknKTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgfSwgZXhjZXB0aW9uQ29k
ZSA9PiB7CisgICAgICAgICAgICBsb2dSZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVqZWN0ZWQg
Y29ycmVjdGx5Jyk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGdvdE1lZGlhS2V5U3lzdGVtQWNjZXNzKHJlc3VsdCkgeworICAgICAgICBs
b2dSZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVzb2x2ZWQnKTsKKyAgICAgICAgbWVkaWFLZXlT
eXN0ZW1BY2Nlc3MgPSByZXN1bHQ7CisgICAgICAgIG5leHQoKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBnb3RNZWRpYUtleXMocmVzdWx0KSB7CisgICAgICAgIGxvZ1Jlc3VsdChTdWNjZXNzLCAn
UHJvbWlzZSByZXNvbHZlZCcpOworICAgICAgICBtZWRpYUtleXMgPSByZXN1bHQ7CisgICAgICAg
IG5leHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdHJpbmdUb1VJbnQ4QXJyYXkoc3RyKQor
ICAgIHsKKyAgICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoKTsKKyAg
ICAgICBmb3IgKHZhciBpPTA7IGk8c3RyLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgYXJyYXlb
aV0gPSBzdHIuY2hhckNvZGVBdChpKTsKKyAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorCisg
ICAgdGVzdHMgPSBbCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcnVuKCdwcm9t
aXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCknKTsKKyAgICAgICAg
ICAgIHByb21pc2UudGhlbihnb3RNZWRpYUtleXMpLmNhdGNoKGZhaWxUZXN0KTsKKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVXNp
bmcgYW4gaW52YWxpZCBpbml0RGF0YVR5cGUgc3RyaW5nIHNob3VsZCByZWplY3QuJykKKyAgICAg
ICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRl
bXBvcmFyeSIpJyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleVNl
c3Npb24nLCAnb2JqZWN0JykKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vz
c2lvbi5nZW5lcmF0ZVJlcXVlc3QoImludmFsaWQiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoImludmFs
aWQiKSknKTsKKyAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKTsKKyAgICAgICAgfSwK
KworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnUmUtdXNp
bmcgYSBmYWlsZWQgbWVkaWFLZXlTZXNzaW9uIHNob3VsZCByZWplY3QuJykKKyAgICAgICAgICAg
IHJ1bigna2lkcyA9IEpTT04uc3RyaW5naWZ5KHsga2lkczogWyAiTVRJek5EVT0iIF0gfSknKTsK
KyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVl
c3QoImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSknKTsKKyAgICAgICAgICAgIHNo
b3VsZFJlamVjdChwcm9taXNlKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVXNpbmcgYSBuZXcgbWVkaWFLZXlTZXNzaW9uIHNo
b3VsZCByZXNvbHZlLicpCisgICAgICAgICAgICBydW4oJ2tpZHMgPSBKU09OLnN0cmluZ2lmeSh7
IGtpZHM6IFsgIk1USXpORFU9IiBdIH0pJyk7CisgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vz
c2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKScpOworICAgICAgICAg
ICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRz
Iiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMpKScpOworICAgICAgICAgICAgc2hvdWxkUmVzb2x2
ZShwcm9taXNlKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnVXNpbmcgaW52YWxpZCBpbml0RGF0YSBzaG91bGQgcmVqZWN0Licp
CisgICAgICAgICAgICBydW4oJ2tpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGludmFsaWQ6ICJpbnZh
bGlkIiB9KScpOworICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMu
Y3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IiknKTsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9
IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmluZ1RvVUludDhB
cnJheShraWRzKSknKTsKKyAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKTsKKyAgICAg
ICAgfSwKKworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgn
VXNpbmcgaW5pdERhdGEgd2l0aCBleHRyYW5lb3VzIGluZm9ybWF0aW9uIHNob3VsZCByZXNvbHZl
LicpCisgICAgICAgICAgICBydW4oJ2tpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtpZHM6IFsgIk1U
SXpORFU9Il0sIGludmFsaWQ6ICJpbnZhbGlkIiB9KScpOworICAgICAgICAgICAgcnVuKCdtZWRp
YUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IiknKTsKKyAg
ICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3Qo
ImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSknKTsKKyAgICAgICAgICAgIHNob3Vs
ZFJlc29sdmUocHJvbWlzZSk7CisgICAgICAgIH0sCisgICAgXTsKKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkNDFhYmNlNzE3Zjg5ZGJi
YzkwMmRhOTQ0NTM2NGFjMTE4ZDJkNjA2Li4yMzQ4YTIxZTgyOTZmYzQ5M2EzZmUzOTlmMjE5MDM5
YmE4Y2JkMWRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTQ2OCw2ICsxNDY4LDcgQEAgbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stbmF2aWdhdG9y
LXJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1sIFsgU2tpcCBdCiBtZWRpYS9lbmNyeXB0
ZWQtbWVkaWEvbW9jay1NZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1sIFsgU2tpcCBdCiBtZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleXMtc2V0U2VydmVyQ2VydGlmaWNhdGUuaHRtbCBb
IFNraXAgXQogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlzLWNyZWF0ZVNlc3Np
b24uaHRtbCBbIFNraXAgXQorbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNz
aW9uLWdlbmVyYXRlUmVxdWVzdC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xNjYwMjUg
aHR0cC90ZXN0cy9mZXRjaC9mZXRjaGluZy1zYW1lLXJlc291cmNlLXdpdGgtZGlmZmZlcmVudC1v
cHRpb25zLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCg==
</data>
<flag name="review"
          id="320603"
          type_id="1"
          status="+"
          setter="calvaris"
    />
    <flag name="commit-queue"
          id="320615"
          type_id="3"
          status="-"
          setter="calvaris"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298481</attachid>
            <date>2017-01-10 10:45:40 -0800</date>
            <delta_ts>2017-01-10 11:34:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-166880-20170110104402.patch</filename>
            <type>text/plain</type>
            <size>69930</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY3ZjZjZjJlNjBlMmVk
YzQ4YTRmMDBhZDBjYTBkNmZlMzhlNGJjYi4uNmY5Yzc3YjNjNTRhYTIzZWVjYWU0NTAyYTJmMmE0
ZjQ1ODc0OTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE3LTAxLTA5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBN
ZWRpYUtleXMuZ2VuZXJhdGVSZXF1ZXN0KCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIg
Um9kcmlndWV6LUNhbHZhci4KKworICAgICAgICBUZXN0OiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
bW9jay1NZWRpYUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwKKworICAgICAgICBJbXBs
ZW1lbnQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoKS4gVGhpcyByZXF1aXJlcyBz
b21lIGFkZGl0aW9ucworICAgICAgICB0byBDRE0sIENETVByaXZhdGUsIGFuZCBDRE1JbnN0YW5j
ZSB0byBzdXBwb3J0IHBsYXRmb3JtIGFkb3B0aW9uIGFuZCB0bworICAgICAgICBpbXBsZW1lbnQg
bW9jayBzdXBwb3J0IGZvciB0ZXN0aW5nLiBBZGRpdGlvbmFsbHksIGFkZCBhbiBJbml0RGF0YVJl
Z2lzdHJ5CisgICAgICAgIG9iamVjdCB3aGljaCBjYW4gc2FuaXRpemUgYW5kIGV4dHJhY3Qga2V5
IGRhdGEgZnJvbSB2YXJpb3VzIGluaXREYXRhIHR5cGVzLgorICAgICAgICAoQXQgdGhlIG1vbWVu
dCwgb25seSB0aGUgImtleWlkcyIgaW5pdERhdGEgdHlwZSBpcyBpbXBsZW1lbnRlZC4pCisKKyAg
ICAgICAgRHJpdmUtYnkgZml4ZXM6IENoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGluaXREYXRhVHlw
ZSBmcm9tIFN0cmluZyAtPiBBdG9taWNTdHJpbmcuCisgICAgICAgIEFkZCAiY29uc3QiIGZsYWdz
IHRvIGFsbCBDRE1Qcml2YXRlIG1ldGhvZHMgdGhhdCBtaWdodCBiZSBjYWxsZWQgZnJvbSBhIGNv
bnN0CisgICAgICAgIHJlZmVyZW5jZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5p
dGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6c3VwcG9ydHNJbml0RGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplQ2VuYyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
SURzQ2VuYyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZVdlYk0pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc1dlYk0pOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdp
c3RyeTo6c2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OkluaXRE
YXRhUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0
S2V5SURzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OnJlZ2lzdGVySW5p
dERhdGFUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlRXZlbnROYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZERhdGFUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06
OnN1cHBvcnRzSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6
OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydGVkRGF0YVR5cGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpoYXNTZXNzaW9uV2l0aElEKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uV2l0aElEKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWREYXRhVHlwZXMpOiBEZWxl
dGVkLgorCiAyMDE3LTAxLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA2ZWIzMTQ2OTlhYmQ1MTQ5YTlkNGI1ZmY5ZTkxNjg1ODY1NDk4MTNk
Li40ODE5N2IyZGIyOTUzZjYzNWRkYmM5YmIwYTA1NTMzNWFjYTkyNTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjk4Miw2ICsyOTgyLDcgQEAgZW5kaWYgKCkKIGlmIChFTkFCTEVfRU5DUllQ
VEVEX01FRElBKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKyAgICAgICAgTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAogICAgICAgICBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5TWVzc2FnZUV2ZW50LmNwcAogICAgICAgICBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAKICAgICAgICAgTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmNwcAppbmRleCA4Y2I4MzRlYzUyMmVhY2NmYjU4NDJkZjAxYmZjMTg2NTk3YTU4OTlkLi4z
MzEwNDU5NjcwM2FhMmI1NWRiOTBlMDA4NDRhN2I0MmJmNzIwMzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJJbml0RGF0YVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzUmVzdHJpY3Rpb25zLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpA
QCAtNjM0LDYgKzYzNSwyMSBAQCBib29sIENETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0K
IAorYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5p
dERhdGFUeXBlKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5z
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpOworfQorCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCit7CisgICAgcmV0dXJuIEluaXREYXRh
UmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0
YSk7Cit9CisKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQoreworICAgIHJldHVy
biBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlwZSwg
aW5pdERhdGEpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggZTU2Y2NjNjYzMmQ3NjQ0MzUwNzQzZmFlZTFmYTYzYzY0
NGM3OWYwNS4uN2MxNTkzNDlhNzBlNjE1MDUxZTEwYTM2NzZjYWYyZmQ5M2FkZTdmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUg
Ik1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmLmg+CkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIENETUluc3RhbmNlOwogY2xh
c3MgQ0RNUHJpdmF0ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9u
czsKIApAQCAtNzMsNiArNzUsMTAgQEAgcHVibGljOgogICAgIFJlZlB0cjxDRE1JbnN0YW5jZT4g
Y3JlYXRlSW5zdGFuY2UoKTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkg
Y29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Q7CisgICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7
CiAKIHByaXZhdGU6CiAgICAgQ0RNKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oCmluZGV4IDcyZmY1NWNmMjJkY2FkYjNjYmM4YzVlNGQ2ZTUxM2JjNWI2YmY3NGEuLmZk
NDhkZjEzYzQ0YjkzZDVlOGYyYzgxMzA2ZmU2MmE3ZjVhZjFlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTMwLDEz
ICszMCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLX0KLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1JbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENETUluc3RhbmNlPiB7CiBwdWJsaWM6CkBAIC01MCw3ICs0NywxNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIFN1Y2Nlc3NW
YWx1ZSBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSA9IDA7Ci0g
ICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoSlNDOjpBcnJheUJ1
ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIExpY2Vuc2VUeXBl
IHsKKyAgICAgICAgVGVtcG9yYXJ5LAorICAgICAgICBQZXJzaXN0YWJsZSwKKyAgICAgICAgVXNh
Z2VSZWNvcmQsCisgICAgfTsKKworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IDYwYjZmY2EyZjVkNThmOTk5YmI1
NTJiYTU0YzU3NDMyYmE2YjAzODMuLjc5M2M1NDA0ZDQ2YzI5M2E0ZWI1Y2Y1MTcyNzlhYzRlYTNk
NDc1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oCkBAIC00MSwxOCArNDEsMTkgQEAgY2xhc3MgQ0RNUHJpdmF0ZSB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpIHsgfQogCi0gICAgdmlydHVhbCBib29sIHN1
cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0
aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNS
ZXN0cmljdGlvbnMmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5l
c3MoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgTWVkaWFLZXlzUmVxdWlyZW1lbnQg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpID0gMDsKLSAgICB2aXJ0
dWFsIE1lZGlhS2V5c1JlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9u
cyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1
ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
KSA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMm
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29u
ZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5l
c3MoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTWVkaWFLZXlzUmVxdWly
ZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIE1lZGlhS2V5c1JlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVp
cmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5
c1Jlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5z
dGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkQW5kSW5p
dGlhbGl6ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbWljU3Ry
aW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU4MWI0ZjdmYzk4OWQ4MzNlZjFiMDlmYzhkM2U1ZjdiZTIw
ODAyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RL
ZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgLy8gMS4gRm9y
bWF0CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQt
cmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IHZhbHVlOworICAgIGlmICghSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihqc29uLCB2YWx1
ZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBv
YmplY3Q7CisgICAgaWYgKCF2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4ga2lkc0FycmF5OworICAgIGlmICgh
b2JqZWN0LT5nZXRBcnJheSgia2lkcyIsIGtpZHNBcnJheSkpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBmb3IgKGF1dG8m
IHZhbHVlIDogKmtpZHNBcnJheSkgeworICAgICAgICBTdHJpbmcga2V5SUQ7CisgICAgICAgIGlm
ICghdmFsdWUtPmFzU3RyaW5nKGtleUlEKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIFZlY3RvcjxjaGFyPiBrZXlJRERhdGE7CisgICAgICAgIGlmICghV1RGOjpiYXNlNjREZWNv
ZGUoa2V5SUQsIHsga2V5SUREYXRhIH0pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SURCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVj
dG9yKGtleUlERGF0YSk7CisgICAgICAgIGtleUlEcy5hcHBlbmQoV1RGTW92ZShrZXlJREJ1ZmZl
cikpOworICAgIH0KKworICAgIHJldHVybiBrZXlJRHM7Cit9CisKK3N0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sK
KyAgICAvLyAxLiBGb3JtYXQKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVk
LW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKKyAgICBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEQnVmZmVyID0gZXh0cmFjdEtleUlEc0tleWlk
cyhidWZmZXIpOworICAgIGlmIChrZXlJREJ1ZmZlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBvYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OworICAgIGF1dG8ga2lkc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZv
ciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIpCisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRFbmNvZGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CisKKyAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkp
OworfQorCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNT
SCBCb3ggRm9ybWF0CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBidWZmZXIuY29weSgpOworfQorCitzdGF0aWMg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRC
dWZmZXImKQoreworICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0
CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3N0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgLy8gMS4gRm9y
bWF0CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQt
cmVnaXN0cnkvaW5pdGRhdGEvd2VibS5odG1sI2Zvcm1hdAorICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7Cit9CisKK3N0YXRpYyBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCit7CisgICAg
Ly8gMS4gRm9ybWF0CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvd2VibS5odG1sI2Zvcm1hdAorICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworSW5pdERhdGFSZWdpc3RyeSYgSW5pdERh
dGFSZWdpc3RyeTo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW5pdERh
dGFSZWdpc3RyeT4gcmVnaXN0cnk7CisgICAgcmV0dXJuIHJlZ2lzdHJ5LmdldCgpOworfQorCitJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KCkKK3sKKyAgICByZWdpc3RlckluaXRE
YXRhVHlwZSgia2V5aWRzIiwgeyAmc2FuaXRpemVLZXlpZHMsICZleHRyYWN0S2V5SURzS2V5aWRz
IH0pOworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJjZW5jIiwgeyAmc2FuaXRpemVDZW5jLCAm
ZXh0cmFjdEtleUlEc0NlbmMgfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoIndlYm0iLCB7
ICZzYW5pdGl6ZVdlYk0sICZleHRyYWN0S2V5SURzV2ViTSB9KTsKK30KKworSW5pdERhdGFSZWdp
c3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CisKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGF1dG8g
aXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOworICAgIGlmIChpdGVyID09IG1fdHlw
ZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZl
cik7Cit9CisKK1ZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdEtleUlEcyhjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCit7CisgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRh
VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2Fu
aXRpemVJbml0RGF0YSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gaXRlci0+dmFs
dWUuZXh0cmFjdEtleUlEcyhidWZmZXIpOworfQorCit2b2lkIEluaXREYXRhUmVnaXN0cnk6OnJl
Z2lzdGVySW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBJbml0
RGF0YVR5cGVDYWxsYmFja3MmJiBjYWxsYmFja3MpCit7CisgICAgQVNTRVJUKCFtX3R5cGVzLmNv
bnRhaW5zKGluaXREYXRhVHlwZSkpOworICAgIG1fdHlwZXMuc2V0KGluaXREYXRhVHlwZSwgV1RG
TW92ZShjYWxsYmFja3MpKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzliZmEwNDUzNTQ2ZGE1NzdiYTNkOWY4
ZjFhNDk0ODkxYjg2ODE3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisK
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIEluaXREYXRhUmVnaXN0cnkgeworcHVibGljOgor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKKyAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CisKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworCisgICAgc3RydWN0IEluaXRE
YXRhVHlwZUNhbGxiYWNrcyB7CisgICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFj
ayA9IEZ1bmN0aW9uPFJlZlB0cjxTaGFyZWRCdWZmZXI+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsK
KyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248VmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+Pihjb25zdCBTaGFyZWRCdWZmZXImKT47CisKKyAgICAgICAgU2FuaXRp
emVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CisgICAgICAgIEV4dHJhY3RLZXlJ
RHNDYWxsYmFjayBleHRyYWN0S2V5SURzOworICAgIH07CisgICAgdm9pZCByZWdpc3RlckluaXRE
YXRhVHlwZShjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgSW5pdERhdGFUeXBlQ2Fs
bGJhY2tzJiYpOworCitwcml2YXRlOgorICAgIEluaXREYXRhUmVnaXN0cnkoKTsKKyAgICB+SW5p
dERhdGFSZWdpc3RyeSgpOworCisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEluaXREYXRhVHlw
ZUNhbGxiYWNrcz4gbV90eXBlczsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggMGNkNzNmOWUwY2UzNTYwZWYzZmMxNjQw
ZTZmZjE3YzdjZGE2NDdhNi4uNDU1MTk0NGQ5NDRkZTU3MWExMzVlMWM1NTU1NTYxOThjMTUzYjE4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMzMsMTEgKzMzLDIxIEBACiAKICNpbmNsdWRlICJD
RE0uaCIKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5oIgogI2luY2x1ZGUgIk1l
ZGlhS2V5U3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgQXRvbWljU3RyaW5nJiBtZXNzYWdlRXZlbnROYW1l
KCkKK3sKKyAgICBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1lc3NhZ2UgeyAibWVzc2Fn
ZSIgfTsKKyAgICByZXR1cm4gbWVzc2FnZS5nZXQoKTsKK30KKwogUmVmPE1lZGlhS2V5U2Vzc2lv
bj4gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlk
ZW50aWZpZXIsIFJlZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZT4mJiBp
bnN0YW5jZSkKIHsKICAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhS2V5U2Vz
c2lvbihjb250ZXh0LCBzZXNzaW9uVHlwZSwgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBXVEZN
b3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShpbnN0YW5jZSkpKTsKQEAgLTUzLDYgKzYzLDgg
QEAgTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgTWVkaWFLZXlTZXNzaW8KICAgICAsIG1fc2Vzc2lvblR5cGUoc2Vzc2lvblR5
cGUpCiAgICAgLCBtX2ltcGxlbWVudGF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pKQogICAg
ICwgbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKKyAgICAsIG1fZXZlbnRRdWV1ZSgqdGhp
cykKKyAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKIHsKICAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzLXNldHNlcnZlcmNlcnRpZmlj
YXRlCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKQEAgLTk0LDkg
KzEwNiwxNDMgQEAgUmVmPE1lZGlhS2V5U3RhdHVzTWFwPiBNZWRpYUtleVNlc3Npb246OmtleVN0
YXR1c2VzKCkgY29uc3QKICAgICByZXR1cm4gbV9rZXlTdGF0dXNlcy5jb3B5UmVmKCk7CiB9CiAK
LXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29u
c3QgQnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikKK3ZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEJ1ZmZlclNvdXJjZSYgaW5pdERhdGEsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXNlc3Npb24tZ2VuZXJhdGVyZXF1ZXN0
CisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKworICAgIC8vIFdo
ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZv
bGxvd2luZyBzdGVwczoKKyAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9zZWQsIHJldHVy
biBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KKyAgICAvLyAy
LiBJZiB0aGlzIG9iamVjdCdzIHVuaW5pdGlhbGl6ZWQgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBh
IHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KKyAgICBpZiAobV9j
bG9zZWQgfHwgIW1fdW5pbml0aWFsaXplZCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoSU5W
QUxJRF9TVEFURV9FUlIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMy4gTGV0
IHRoaXMgb2JqZWN0J3MgdW5pbml0aWFsaXplZCB2YWx1ZSBiZSBmYWxzZS4KKyAgICBtX3VuaW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIC8vIDQuIElmIGluaXREYXRhVHlwZSBpcyB0aGUgZW1w
dHkgc3RyaW5nLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KKyAgICAvLyA1LiBJZiBpbml0RGF0YSBpcyBhbiBlbXB0eSBhcnJheSwgcmV0
dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCisg
ICAgaWYgKGluaXREYXRhVHlwZS5pc0VtcHR5KCkgfHwgIWluaXREYXRhLmxlbmd0aCgpKSB7Cisg
ICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gNi4gSWYgdGhlIEtleSBTeXN0ZW0gaW1wbGVtZW50YXRpb24gcmVwcmVzZW50
ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgZG9lcyBub3Qgc3Vw
cG9ydAorICAgIC8vICAgIGluaXREYXRhVHlwZSBhcyBhbiBJbml0aWFsaXphdGlvbiBEYXRhIFR5
cGUsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yLiBT
dHJpbmcKKyAgICAvLyAgICBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgorICAgIGlmICgh
bV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkgewor
ICAgICAgICBwcm9taXNlLT5yZWplY3QoTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gNy4gTGV0IGluaXQgZGF0YSBiZSBhIGNvcHkgb2YgdGhlIGNv
bnRlbnRzIG9mIHRoZSBpbml0RGF0YSBwYXJhbWV0ZXIuCisgICAgLy8gOC4gTGV0IHNlc3Npb24g
dHlwZSBiZSB0aGlzIG9iamVjdCdzIHNlc3Npb24gdHlwZS4KKyAgICAvLyA5LiBMZXQgcHJvbWlz
ZSBiZSBhIG5ldyBwcm9taXNlLgorICAgIC8vIDEwLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBp
biBwYXJhbGxlbDoKKyAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgaW5pdERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgp
KSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7
CisgICAgICAgIC8vIDEwLjEuIElmIHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0
RGF0YVR5cGUsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4K
KyAgICAgICAgLy8gMTAuMi4gTGV0IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQg
YW5kIHNhbml0aXplZCB2ZXJzaW9uIG9mIGluaXQgZGF0YS4KKyAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUlu
aXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOworCisgICAgICAgIC8vIDEwLjMuIElmIHRo
ZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVh
dGVkIFR5cGVFcnJvci4KKyAgICAgICAgaWYgKCFzYW5pdGl6ZWRJbml0RGF0YSkgeworICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICAvLyAxMC40LiBJZiBzYW5pdGl6ZWQgaW5pdCBkYXRhIGlzIGVt
cHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IuCisgICAgICAgIGlm
IChzYW5pdGl6ZWRJbml0RGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBwcm9taXNlLT5y
ZWplY3QoTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgLy8gMTAuNS4gTGV0IHNlc3Npb24gaWQgYmUgdGhlIGVtcHR5IHN0cmluZy4K
KyAgICAgICAgLy8gMTAuNi4gTGV0IG1lc3NhZ2UgYmUgbnVsbC4KKyAgICAgICAgLy8gMTAuNy4g
TGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgorICAgICAgICAvLyAxMC44LiBMZXQgY2RtIGJlIHRo
ZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2Ug
dmFsdWUuCisgICAgICAgIC8vIDEwLjkuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxv
d2luZyBzdGVwczoKKyAgICAgICAgLy8gMTAuOS4xLiBJZiB0aGUgc2FuaXRpemVkIGluaXQgZGF0
YSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjZG0sIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RT
dXBwb3J0ZWRFcnJvci4KKyAgICAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c0lu
aXREYXRhKGluaXREYXRhVHlwZSwgKnNhbml0aXplZEluaXREYXRhKSkgeworICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIDEwLjkuMiBGb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUg
dmFsdWUgb2Ygc2Vzc2lvbiB0eXBlIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgICAgICBD
RE1JbnN0YW5jZTo6TGljZW5zZVR5cGUgcmVxdWVzdGVkTGljZW5zZVR5cGU7CisgICAgICAgIHN3
aXRjaCAobV9zZXNzaW9uVHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhS2V5U2Vzc2lvblR5cGU6
OlRlbXBvcmFyeToKKyAgICAgICAgICAgIC8vIOKGsyAidGVtcG9yYXJ5IgorICAgICAgICAgICAg
Ly8gTGV0IHJlcXVlc3RlZCBsaWNlbnNlIHR5cGUgYmUgYSB0ZW1wb3Jhcnkgbm9uLXBlcnNpc3Rh
YmxlIGxpY2Vuc2UuCisgICAgICAgICAgICByZXF1ZXN0ZWRMaWNlbnNlVHlwZSA9IENETUluc3Rh
bmNlOjpMaWNlbnNlVHlwZTo6VGVtcG9yYXJ5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2U6CisgICAgICAgICAg
ICAvLyDihrMgInBlcnNpc3RlbnQtbGljZW5zZSIKKyAgICAgICAgICAgIC8vIExldCByZXF1ZXN0
ZWQgbGljZW5zZSB0eXBlIGJlIGEgcGVyc2lzdGFibGUgbGljZW5zZS4KKyAgICAgICAgICAgIHJl
cXVlc3RlZExpY2Vuc2VUeXBlID0gQ0RNSW5zdGFuY2U6OkxpY2Vuc2VUeXBlOjpQZXJzaXN0YWJs
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhS2V5U2Vzc2lvblR5cGU6
OlBlcnNpc3RlbnRVc2FnZVJlY29yZDoKKyAgICAgICAgICAgIC8vIOKGsyAicGVyc2lzdGVudC11
c2FnZS1yZWNvcmQiCisgICAgICAgICAgICAvLyAxLiBJbml0aWFsaXplIHRoaXMgb2JqZWN0J3Mg
cmVjb3JkIG9mIGtleSB1c2FnZSBhcyBmb2xsb3dzLgorICAgICAgICAgICAgLy8gICAgU2V0IHRo
ZSBsaXN0IG9mIGtleSBJRHMga25vd24gdG8gdGhlIHNlc3Npb24gdG8gYW4gZW1wdHkgbGlzdC4K
KyAgICAgICAgICAgIG1fcmVjb3JkT2ZLZXlVc2FnZS5jbGVhcigpOworCisgICAgICAgICAgICAv
LyAgICBTZXQgdGhlIGZpcnN0IGRlY3J5cHQgdGltZSB0byBudWxsLgorICAgICAgICAgICAgbV9m
aXJzdERlY3J5cHRUaW1lID0gMDsKKworICAgICAgICAgICAgLy8gICAgU2V0IHRoZSBsYXRlc3Qg
ZGVjcnlwdCB0aW1lIHRvIG51bGwuCisgICAgICAgICAgICBtX2xhdGVzdERlY3J5cHRUaW1lID0g
MDsKKworICAgICAgICAgICAgLy8gMi4gTGV0IHJlcXVlc3RlZCBsaWNlbnNlIHR5cGUgYmUgYSBu
b24tcGVyc2lzdGFibGUgbGljZW5zZSB0aGF0IHdpbGwKKyAgICAgICAgICAgIC8vICAgIHBlcnNp
c3QgYSByZWNvcmQgb2Yga2V5IHVzYWdlLgorICAgICAgICAgICAgcmVxdWVzdGVkTGljZW5zZVR5
cGUgPSBDRE1JbnN0YW5jZTo6TGljZW5zZVR5cGU6OlVzYWdlUmVjb3JkOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX2luc3RhbmNlLT5yZXF1ZXN0TGljZW5zZShy
ZXF1ZXN0ZWRMaWNlbnNlVHlwZSwgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSwgW3Ro
aXMsIHdlYWtUaGlzID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5j
ZTo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8gMTAuOS4z
LiBMZXQgc2Vzc2lvbiBpZCBiZSBhIHVuaXF1ZSBTZXNzaW9uIElEIHN0cmluZy4KKworICAgICAg
ICAgICAgTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZTsKKyAgICAgICAgICAgIGlmICgh
bmVlZHNJbmRpdmlkdWFsaXphdGlvbikgeworICAgICAgICAgICAgICAgIC8vIDEwLjkuNC4gSWYg
YSBsaWNlbnNlIHJlcXVlc3QgZm9yIHRoZSByZXF1ZXN0ZWQgbGljZW5zZSB0eXBlIGNhbiBiZSBn
ZW5lcmF0ZWQgYmFzZWQgb24gdGhlIHNhbml0aXplZCBpbml0IGRhdGE6CisgICAgICAgICAgICAg
ICAgLy8gMTAuOS40LjEuIExldCBtZXNzYWdlIGJlIGEgbGljZW5zZSByZXF1ZXN0IGZvciB0aGUg
cmVxdWVzdGVkIGxpY2Vuc2UgdHlwZSBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIHNhbml0aXplZCBp
bml0IGRhdGEgaW50ZXJwcmV0ZWQgcGVyIGluaXREYXRhVHlwZS4KKyAgICAgICAgICAgICAgICAv
LyAxMC45LjQuMi4gTGV0IG1lc3NhZ2UgdHlwZSBiZSAibGljZW5zZS1yZXF1ZXN0Ii4KKyAgICAg
ICAgICAgICAgICBtZXNzYWdlVHlwZSA9IE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1
ZXN0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAxMC45LjUuIE90
aGVyd2lzZToKKyAgICAgICAgICAgICAgICAvLyAxMC45LjUuMS4gTGV0IG1lc3NhZ2UgYmUgdGhl
IHJlcXVlc3QgdGhhdCBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYmVmb3JlIGEgbGljZW5zZSByZXF1
ZXN0IHJlcXVlc3QgZm9yIHRoZSByZXF1ZXN0ZWQgbGljZW5zZQorICAgICAgICAgICAgICAgIC8v
ICAgICAgICAgICB0eXBlIGNhbiBiZSBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIHNhbml0aXplZCBp
bml0IGRhdGEuCisgICAgICAgICAgICAgICAgLy8gMTAuOS41LjIuIExldCBtZXNzYWdlIHR5cGUg
cmVmbGVjdCB0aGUgdHlwZSBvZiBtZXNzYWdlLCBlaXRoZXIgImxpY2Vuc2UtcmVxdWVzdCIgb3Ig
ImluZGl2aWR1YWxpemF0aW9uLXJlcXVlc3QiLgorICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBl
ID0gTWVkaWFLZXlNZXNzYWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRpb25SZXF1ZXN0OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyAxMC4xMC4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUg
Zm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3Ro
aXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdl
KSwgbWVzc2FnZVR5cGUsIHNlc3Npb25JZCwgc3VjY2VlZGVkXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICAvLyAxMC4xMC4xLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWls
ZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMg
dGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCisgICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyAxMC4x
MC4yLiBTZXQgdGhlIHNlc3Npb25JZCBhdHRyaWJ1dGUgdG8gc2Vzc2lvbiBpZC4KKyAgICAgICAg
ICAgICAgICBtX3Nlc3Npb25JZCA9IHNlc3Npb25JZDsKKworICAgICAgICAgICAgICAgIC8vIDEw
LjkuMy4gTGV0IHRoaXMgb2JqZWN0J3MgY2FsbGFibGUgdmFsdWUgYmUgdHJ1ZS4KKyAgICAgICAg
ICAgICAgICBtX2NhbGxhYmxlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8vIDEwLjkuMy4g
UnVuIHRoZSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudCBhbGdvcml0aG0gb24gdGhlIHNlc3Npb24s
IHByb3ZpZGluZyBtZXNzYWdlIHR5cGUgYW5kIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgZW5x
dWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOworCisgICAgICAgICAgICAgICAgLy8g
MTAuOS4zLiBSZXNvbHZlIHByb21pc2UuCisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgLy8gMTEu
IFJldHVybiBwcm9taXNlLgogfQogCiB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBT
dHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKQpAQCAtMTE5LDYgKzI2NSwyMSBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdl
KE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVz
c2FnZSkKK3sKKyAgICAvLyA2LjQuMSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudAorICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3F1ZXVlLW1lc3NhZ2UKKyAgICAv
LyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gVGhlIGZvbGxv
d2luZyBzdGVwcyBhcmUgcnVuOgorICAgIC8vIDEuIExldCB0aGUgc2Vzc2lvbiBiZSB0aGUgc3Bl
Y2lmaWVkIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRv
IGNyZWF0ZSBhbiBldmVudCBuYW1lZCBtZXNzYWdlIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBp
cyBub3QgY2FuY2VsbGFibGUgdXNpbmcgdGhlIE1lZGlhS2V5TWVzc2FnZUV2ZW50CisgICAgLy8g
ICAgaW50ZXJmYWNlIHdpdGggaXRzIHR5cGUgYXR0cmlidXRlIHNldCB0byBtZXNzYWdlIGFuZCBp
dHMgaXNUcnVzdGVkIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0cnVlLCBhbmQgZGlzcGF0Y2gg
aXQgYXQgdGhlCisgICAgLy8gICAgc2Vzc2lvbi4KKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1l
ZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUobWVzc2FnZUV2ZW50TmFtZSgpLCB7bWVzc2FnZVR5
cGUsIG1lc3NhZ2UuY3JlYXRlQXJyYXlCdWZmZXIoKX0sIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7
CisgICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwor
fQorCiBib29sIE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggNTgyOGIwODA4Mjg2MTYz
NTU1MjRkODRjMDk1N2QwMzY1ZjIwYTc2Zi4uZWIzNmJlZTEyMjJjNDcyOTAwYTExMTAyNDA2YWZi
Mjg5MzU4NDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0zMyw5ICszMywxMyBAQAogI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAi
R2VuZXJpY0V2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5oIgog
I2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00NSw2ICs0OSw3IEBAIGNsYXNzIENETTsKIGNsYXNzIENETUluc3RhbmNlOwogY2xhc3MgTWVk
aWFLZXlTdGF0dXNNYXA7CiBjbGFzcyBNZWRpYUtleXM7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIE1lZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5
U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTU4LDcgKzYzLDcgQEAgcHVibGljOgogICAgIGRvdWJs
ZSBleHBpcmF0aW9uKCkgY29uc3Q7CiAgICAgUmVmPE1lZGlhS2V5U3RhdHVzTWFwPiBrZXlTdGF0
dXNlcygpIGNvbnN0OwogCi0gICAgdm9pZCBnZW5lcmF0ZVJlcXVlc3QoY29uc3QgU3RyaW5nJiwg
Y29uc3QgQnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBn
ZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgQnVmZmVyU291cmNlJiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgdXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJj
ZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgY2xvc2UoUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CkBAIC02Niw2ICs3MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBN
ZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhS2V5U2Vzc2lvblR5
cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5z
dGFuY2U+JiYpOworICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gTWVkaWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CkBAIC04OSw2ICs5
NSwxMiBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvblR5cGUgbV9zZXNzaW9uVHlwZTsK
ICAgICBSZWY8Q0RNPiBtX2ltcGxlbWVudGF0aW9uOwogICAgIFJlZjxDRE1JbnN0YW5jZT4gbV9p
bnN0YW5jZTsKKyAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7CisgICAgR2VuZXJp
Y1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7CisgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgZG91YmxlIG1fZmlyc3REZWNyeXB0VGltZSB7
IDAgfTsKKyAgICBkb3VibGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsKKyAgICBXZWFrUHRy
RmFjdG9yeTxNZWRpYUtleVNlc3Npb24+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggZjU1ZDc3NTZlNGYzM2QzZGE1MzExNmIwNDJkMGUz
YmQ4ZjBkMWUzMy4uZTFjYzc0MTA2NGYzZmQ1OTVhNTMzOGE3YzQzYzhiNWNmMzRiYWYxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCiAjaW5jbHVk
ZSAiTWVkaWFLZXlTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTAsMTQgKzkwLDE0IEBAIHZvaWQgTWVkaWFLZXlz
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmlj
YXRlLCBSZWY8CiAgICAgfQogCiAgICAgLy8gMy4gTGV0IGNlcnRpZmljYXRlIGJlIGEgY29weSBv
ZiB0aGUgY29udGVudHMgb2YgdGhlIHNlcnZlckNlcnRpZmljYXRlIHBhcmFtZXRlci4KLSAgICBh
dXRvIGNlcnRpZmljYXRlID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzZXJ2ZXJDZXJ0aWZpY2F0ZS5k
YXRhKCksIHNlcnZlckNlcnRpZmljYXRlLmxlbmd0aCgpKTsKKyAgICBhdXRvIGNlcnRpZmljYXRl
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VydmVyQ2VydGlmaWNhdGUuZGF0YSgpLCBzZXJ2ZXJD
ZXJ0aWZpY2F0ZS5sZW5ndGgoKSk7CiAKICAgICAvLyA0LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBw
cm9taXNlLgogICAgIC8vIDUuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgog
CiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIGNlcnRpZmljYXRlID0gV1RGTW92
ZShjZXJ0aWZpY2F0ZSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgLy8gNS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2Vz
cyBjZXJ0aWZpY2F0ZS4KLSAgICAgICAgaWYgKG1faW5zdGFuY2UtPnNldFNlcnZlckNlcnRpZmlj
YXRlKGNlcnRpZmljYXRlKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7CisgICAgICAgIGlmICht
X2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmljYXRlKSkgPT0g
Q0RNSW5zdGFuY2U6OkZhaWxlZCkgewogICAgICAgICAgICAgLy8gNS4yLiBJZiB0aGUgcHJlY2Vk
aW5nIHN0ZXAgZmFpbGVkLCByZXNvbHZlIHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24g
d2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KICAgICAgICAgICAgIHBy
b21pc2UtPnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMTMzNmZjZTNhOGNjNDU2YzZhODE0YmYzMzEwZmNhY2NhMzBmNGQyOC4uMzNjOTVhMmFlNDRm
YjdhOTAzMzcyOTZkNzdiYjMxMjM4MDBiODEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcxNyw2ICs1NzE3LDggQEAKIAkJ
Q0NDMkI1MTQxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTAxNUY2MTMwNjAwNDhDREQ2
IC8qIERldmljZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNDQzJCNTE1MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJC
NTExMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0ND
MkI1MTYxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RE
NiAvKiBEZXZpY2VDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQ0QwNjNGODIxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVn
aXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QwNjNGODAxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwICovOyB9Owor
CQlDRDA2M0Y4MzFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwNjNGODExRTIzRkE4OTAw
ODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLzsgfTsKIAkJQ0QwRUVFMEUxNDc0M0YzOTAw
M0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlv
RGVzdGluYXRpb25JT1MuY3BwICovOyB9OwogCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cubW0gKi87IH07CiAJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJD
b3JlRnVsbFNjcmVlbldpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVu
V2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEzNjQzLDYgKzEzNjQ1LDggQEAKIAkJQ0NDMkI1MTAxNUY2MTMwNjAwNDhDREQ2IC8qIERl
dmljZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0NDMkI1MTExNUY2MTMwNjAwNDhD
REQ2IC8qIERldmljZUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGV2aWNlQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZUNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QwNjNGODAxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRh
UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdERh
dGFSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMDYzRjgxMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluaXREYXRhUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QwRUVFMEExNDc0M0UzNDAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbklPUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyog
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjc3Myw2ICsyMjc3Nyw4IEBACiAJ
CQkJQ0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovLAogCQkJCUNEOUQwNTQyMUUx
RUZBMTIwMDNCNEM0RiAvKiBDRE1JbnN0YW5jZS5oICovLAogCQkJCUNERjRCNzI1MUUwM0MxNUIw
MEUyMzVBMiAvKiBDRE1Qcml2YXRlLmggKi8sCisJCQkJQ0QwNjNGODAxRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuY3BwICovLAorCQkJCUNEMDYzRjgxMUUyM0ZBODkwMDgxMkJF
MyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggKi8sCiAJCQkJMkQ5QkY3MkYxREJGREMwRjAwN0E3RDk5
IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLywKIAkJCQkyRDlCRjczMDFEQkZEQzBGMDA3
QTdEOTkgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLywKIAkJCQkyRDlCRjZGNTFEQkZCNzFG
MDA3QTdEOTkgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsICovLApAQCAtMjc4NjcsNiArMjc4
NzMsNyBAQAogCQkJCTdDRTU4RDUwMURENjlBMUUwMDEyODU1MiAvKiBTVkdOdW1iZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTUxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFy
c2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDA2M0Y4MzFFMjNGQTg5MDA4MTJC
RTMgLyogSW5pdERhdGFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzQTBFMzYxM0E3
RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRD
Njc4NEQxMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NDc2QzlFQjExREY2QTI5MDA1NTVCMDIgLyogU1ZHUGF0aEJ1aWxkZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzA4MjAsNiArMzA4MjcsNyBAQAogCQkJCUIyNzUzNTYzMEIwNTM4MTQwMDJD
RTY0RiAvKiBQYXRoQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4REQ0ODkwQjQ2MjlCMDAw
QzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDUw
MDJGQjFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEZBNkU1RTBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODBBMzhGRTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNH
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEE2NDZDMUQxOUZGODcwMEQwRTAwRiAvKiBQYXlt
ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKaW5kZXggZTAyODJiYmZjZDU3MzA1ZWE0OTZmOWQ3ZGVjYmE2NmRkZDcxZTE4
ZC4uNTk2NTgzYzIwNDdhMzZlY2FlMGNlMTU2Zjg2N2Y0ZDkwZmJmMDcxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTI4LDcgKzI4LDEwIEBACiAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5o
IgorI2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNiArNjEsMjQgQEAgYm9vbCBN
b2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
CiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtp
dC5tb2NrIik7CiB9CiAKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtleXMpCit7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92ZShrZXlzKSk7
CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiB2YWx1ZSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgZm9yIChhdXRvJiBr
ZXkgOiBrZXlzKQorICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShrZXkpKTsKK30KKwordm9p
ZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYg
dHlwZXMpCit7CisgICAgbV9zdXBwb3J0ZWREYXRhVHlwZXMuY2xlYXIoKTsKKyAgICBmb3IgKGF1
dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgbV9zdXBwb3J0ZWREYXRhVHlwZXMuYXBwZW5kKHR5
cGUpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNy
ZWF0ZUNETShDRE0mKQogewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE0+KG1f
d2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpKTsKQEAgLTY5LDI3ICs5MCwyNyBAQCBNb2Nr
Q0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7CiB9CiAKLWJv
b2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5
cGUpCitib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCiAgICAgICAgIHJl
dHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlw
ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzQ29uZmln
dXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKQorYm9vbCBNb2NrQ0RN
OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBJbXBsZW1lbnQ7CiAgICAgcmV0dXJuIHRydWU7CiAK
IH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25z
KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3Ry
aWN0aW9ucyYpCitib29sIE1vY2tDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmlj
dGlvbnMoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlz
UmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBJbXBsZW1lbnQ7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25m
aWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKQorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZhY3Rv
cnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkuY29udGFpbnMoc2Vzc2lv
blR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OCwyOCArMTE5LDI4IEBAIGJvb2wg
TW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vz
c2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6
c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykKK2Jvb2wgTW9ja0NE
TTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29uc3QKIHsK
ICAgICBpZiAobV9mYWN0b3J5KQogICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRS
b2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1NZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFL
ZXlzUmVzdHJpY3Rpb25zJikKK01lZGlhS2V5c1JlcXVpcmVtZW50IE1vY2tDRE06OmRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdAogewogICAgIGlmIChtX2Zh
Y3RvcnkpCiAgICAgICAgIHJldHVybiBtX2ZhY3RvcnktPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNS
ZXF1aXJlbWVudCgpOwogICAgIHJldHVybiBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWw7
CiB9CiAKLU1lZGlhS2V5c1JlcXVpcmVtZW50IE1vY2tDRE06OnBlcnNpc3RlbnRTdGF0ZVJlcXVp
cmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5
c1Jlc3RyaWN0aW9ucyYpCitNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpwZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCiAg
ICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KCk7CiAg
ICAgcmV0dXJuIE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbDsKIH0KIAotYm9vbCBNb2Nr
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpCitib29sIE1vY2tDRE06OmRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBJbXBsZW1l
bnQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDcsNiArMTY4LDE1IEBAIGJvb2wgTW9ja0NETTo6
c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3Rv
cnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXREYXRhKSBjb25zdAoreworICAgIGlmICghc3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERh
dGFUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVU5VU0VEX1BBUkFNKGluaXRE
YXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogTW9ja0NETUluc3RhbmNlOjpNb2NrQ0RNSW5z
dGFuY2UoV2Vha1B0cjxNb2NrQ0RNPiBjZG0pCiAgICAgOiBtX2NkbShjZG0pCiB7CkBAIC0xODgs
MTUgKzIxOCw0NCBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIE1vY2tDRE1JbnN0YW5jZTo6
c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIHBlcnNpcwogICAgIHJldHVybiBTdWNjZWVk
ZWQ7CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgTW9ja0NETUluc3RhbmNlOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShBcnJheUJ1ZmZlciYgY2VydGlmaWNhdGUpCitDRE1JbnN0YW5jZTo6
U3VjY2Vzc1ZhbHVlIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSkKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRl
U3RyaW5nVmlldyhzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KGNlcnRpZmljYXRlLmRhdGEoKSks
IGNlcnRpZmljYXRlLmJ5dGVMZW5ndGgoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0
cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNlcnRpZmljYXRlLT5kYXRh
KCkpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikpCiAgICAgICAgIHJldHVybiBTdWNj
ZWVkZWQ7CiAgICAgcmV0dXJuIEZhaWxlZDsKIH0KIAordm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrIGNhbGxiYWNrKQoreworICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBt
X2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIWZhY3RvcnkpIHsKKyAgICAgICAg
Y2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlBdG9tLCBmYWxzZSwgU3VjY2Vz
c1ZhbHVlOjpGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKChsaWNl
bnNlVHlwZSA9PSBMaWNlbnNlVHlwZTo6VGVtcG9yYXJ5ICYmICFmYWN0b3J5LT5zdXBwb3J0ZWRT
ZXNzaW9uVHlwZXMoKS5jb250YWlucyhNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkpKQor
ICAgICAgICB8fCAobGljZW5zZVR5cGUgPT0gTGljZW5zZVR5cGU6OlBlcnNpc3RhYmxlICYmICFm
YWN0b3J5LT5zdXBwb3J0ZWRTZXNzaW9uVHlwZXMoKS5jb250YWlucyhNZWRpYUtleVNlc3Npb25U
eXBlOjpQZXJzaXN0ZW50TGljZW5zZSkpCisgICAgICAgIHx8IChsaWNlbnNlVHlwZSA9PSBMaWNl
bnNlVHlwZTo6VXNhZ2VSZWNvcmQgJiYgIWZhY3RvcnktPnN1cHBvcnRlZFNlc3Npb25UeXBlcygp
LmNvbnRhaW5zKE1lZGlhS2V5U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZCkpCisg
ICAgICAgIHx8ICFmYWN0b3J5LT5zdXBwb3J0ZWREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0
YVR5cGUpKSB7CisgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5
U3RyaW5nKCksIGZhbHNlLCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIGtleUlEcyA9IEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLmV4
dHJhY3RLZXlJRHMoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgaWYgKGtleUlEcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlT
dHJpbmcoKSwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFN0cmluZyBzZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCk7CisgICAgZmFjdG9yeS0+YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChzZXNzaW9uSUQsIFdURk1v
dmUoa2V5SURzKSk7CisKKyAgICBDU3RyaW5nIGxpY2Vuc2UgeyAibGljZW5zZSIgfTsKKyAgICBj
YWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5n
dGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKK30KKwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAz
MTkyMjk0MDdkYzAwY2Q4ZDgzYjhmNmM4MzlmYzg1ZTMyOTc4YWQ2Li5mNzYxODBjY2U1M2JhMWI3
MzM3ZmM1NjJmMWU1OGQyNWZlMGZjMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNp
bmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzUmVxdWlyZW1lbnQuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00Miw4
ICs0Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1vY2tDRE1GYWN0b3J5PiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tDRE1GYWN0b3J5KTsgfQogICAgIH5Nb2NrQ0RN
RmFjdG9yeSgpOwogCi0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZERhdGFUeXBl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkRGF0YVR5cGVzOyB9Ci0gICAgdm9pZCBzZXRT
dXBwb3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykgeyBtX3N1cHBvcnRlZERh
dGFUeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CisgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmlu
Zz4mIHN1cHBvcnRlZERhdGFUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkRGF0YVR5
cGVzOyB9CisgICAgdm9pZCBzZXRTdXBwb3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJik7
CiAKICAgICBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mIHN1cHBvcnRlZFNlc3Np
b25UeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzOyB9CiAgICAg
dm9pZCBzZXRTdXBwb3J0ZWRTZXNzaW9uVHlwZXMoVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+
JiYgdHlwZXMpIHsgbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXMgPSBXVEZNb3ZlKHR5cGVzKTsgfQpA
QCAtNjgsNiArNjksMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCB1bnJlZ2lzdGVyKCk7CiAKKyAg
ICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gbV9zZXNz
aW9ucy5jb250YWlucyhpZCk7IH0KKyAgICB2b2lkIHJlbW92ZVNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShpZCk7IH0KKyAgICB2b2lkIGFkZEtleXNU
b1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiYmKTsKKwogcHJpdmF0ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDRE1Qcml2YXRlPiBjcmVhdGVDRE0oQ0RNJikgZmluYWw7CkBAIC03NSw3ICs4MCw3IEBA
IHByaXZhdGU6CiAKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBtX2Rpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudCB7IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbCB9OwogICAg
IE1lZGlhS2V5c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRp
YUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3N1cHBv
cnRlZERhdGFUeXBlczsKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBtX3N1cHBvcnRlZERhdGFU
eXBlczsKICAgICBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gbV9zdXBwb3J0ZWRTZXNzaW9u
VHlwZXM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwogICAgIGJv
b2wgbV9yZWdpc3RlcmVkIHsgdHJ1ZSB9OwpAQCAtODMsNiArODgsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAgICBib29sIG1f
c3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKICAgICBXZWFrUHRyRmFjdG9yeTxNb2NrQ0RNRmFj
dG9yeT4gbV93ZWFrUHRyRmFjdG9yeTsKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMg
Q0RNUHJpdmF0ZSB7CkBAIC05NCwxOCArMTAwLDE5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIE1vY2tDRE1JbnN0YW5jZTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAgYm9vbCBz
dXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGZpbmFsOwotICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lv
blR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKLSAgICBi
b29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBNZWRpYUtl
eXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikg
ZmluYWw7Ci0gICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1l
bnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVz
dHJpY3Rpb25zJikgZmluYWw7Ci0gICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5p
cXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbWljU3Ry
aW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBw
b3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vz
c2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKKyAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWly
ZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlz
UmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVy
c2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0
aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFj
dG9yeTsKICAgICBXZWFrUHRyRmFjdG9yeTxNb2NrQ0RNPiBtX3dlYWtQdHJGYWN0b3J5OwpAQCAt
MTE5LDcgKzEyNiw4IEBAIHByaXZhdGU6CiAgICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsK
ICAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkg
ZmluYWw7CiAgICAgU3VjY2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkg
ZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKEpTQzo6QXJyYXlC
dWZmZXImKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjaykgZmluYWw7CiAKICAgICBXZWFrUHRyPE1vY2tD
RE0+IG1fY2RtOwogICAgIGJvb2wgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCB7IHRy
dWUgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA2YjI3ZDZhZmE0ZjE5Mjk3MWNlNTM1NTlhOGM1ZmM5ZDg1MzJmODI2Li5m
MjA5ZGRhNjQzOTk2YzllNjhkMTFiMTVjYTc3ZGVhZDViMGY3MGE5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzUgQEAKKzIwMTctMDEtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIE1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc2hvdWxkUmVzb2x2
ZSgpIGFuZCBzaG91bGRSZWplY3QoKSB0byB2aWRlby10ZXN0LmpzIGFuZCB1cGRhdGUgZXhpc3Rp
bmcKKyAgICAgICAgdGVzdHMgdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbnMuCisKKyAgICAgICAg
KiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleXMtY3JlYXRlU2Vzc2lvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1l
ZGlhS2V5cy1jcmVhdGVTZXNzaW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL2VuY3J5
cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5cy1zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZS5odG1sOgorICAg
ICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi1nZW5lcmF0
ZVJlcXVlc3QuaHRtbDoKKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRp
YUtleVN5c3RlbUFjY2Vzcy5odG1sOgorICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9t
b2NrLW5hdmlnYXRvci1yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbDoKKyAgICAgICAg
KiBtZWRpYS92aWRlby10ZXN0LmpzOgorICAgICAgICAoc2hvdWxkUmVzb2x2ZSk6CisgICAgICAg
IChzaG91bGRSZWplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
OgorCisyMDE3LTAxLTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYUtleXMuZ2VuZXJhdGVSZXF1ZXN0KCkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL2VuY3J5cHRl
ZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi1nZW5lcmF0ZVJlcXVlc3QtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNl
c3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE3LTAxLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYUtleXMuY3JlYXRlU2Vz
c2lvbigpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21v
Y2stTWVkaWFLZXlTZXNzaW9uLWdlbmVyYXRlUmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24tZ2VuZXJhdGVS
ZXF1ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzU2MGNhZDc0NDcyNDdmYzlhZTUxZWJl
Yjc2ODMyYjZmMTVmMmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5j
cnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLWdlbmVyYXRlUmVxdWVzdC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0MSBAQAorUlVOKGludGVybmFscy5pbml0aWFsaXplTW9ja01lZGlh
U291cmNlKCkpCitSVU4obW9jayA9IGludGVybmFscy5yZWdpc3Rlck1vY2tDRE0oKSkKK1JVTiht
b2NrLnN1cHBvcnRlZERhdGFUeXBlcyA9IFsia2V5aWRzIl0pCitSVU4oY2FwYWJpbGl0aWVzLmlu
aXREYXRhVHlwZXMgPSBbImtleWlkcyJdKQorUlVOKGNhcGFiaWxpdGllcy52aWRlb0NhcGFiaWxp
dGllcyA9IFt7IGNvbnRlbnRUeXBlOiAndmlkZW8vbW9jazsgY29kZWNzPSJtb2NrIicgfV0gKQor
UlVOKHByb21pc2UgPSBuYXZpZ2F0b3IucmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKCJvcmcu
d2Via2l0Lm1vY2siLCBbY2FwYWJpbGl0aWVzXSkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKK1JV
Tihwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCkpCitQcm9t
aXNlIHJlc29sdmVkIE9LCisKK1VzaW5nIGFuIGludmFsaWQgaW5pdERhdGFUeXBlIHN0cmluZyBz
aG91bGQgcmVqZWN0LgorUlVOKG1lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNz
aW9uKCJ0ZW1wb3JhcnkiKSkKK0VYUEVDVEVEICh0eXBlb2YgbWVkaWFLZXlTZXNzaW9uID09ICdv
YmplY3QnKSBPSworUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0
KCJpbnZhbGlkIiwgc3RyaW5nVG9VSW50OEFycmF5KCJpbnZhbGlkIikpKQorUHJvbWlzZSByZWpl
Y3RlZCBjb3JyZWN0bHkgT0sKKworUmUtdXNpbmcgYSBmYWlsZWQgbWVkaWFLZXlTZXNzaW9uIHNo
b3VsZCByZWplY3QuCitSVU4oa2lkcyA9IEpTT04uc3RyaW5naWZ5KHsga2lkczogWyAiTVRJek5E
VT0iIF0gfSkpCitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3Qo
ImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSkpCitQcm9taXNlIHJlamVjdGVkIGNv
cnJlY3RseSBPSworCitVc2luZyBhIG5ldyBtZWRpYUtleVNlc3Npb24gc2hvdWxkIHJlc29sdmUu
CitSVU4oa2lkcyA9IEpTT04uc3RyaW5naWZ5KHsga2lkczogWyAiTVRJek5EVT0iIF0gfSkpCitS
VU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRlbXBvcmFyeSIp
KQorUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMi
LCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykpKQorUHJvbWlzZSByZXNvbHZlZCBPSworCitVc2lu
ZyBpbnZhbGlkIGluaXREYXRhIHNob3VsZCByZWplY3QuCitSVU4oa2lkcyA9IEpTT04uc3RyaW5n
aWZ5KHsgaW52YWxpZDogImludmFsaWQiIH0pKQorUlVOKG1lZGlhS2V5U2Vzc2lvbiA9IG1lZGlh
S2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKSkKK1JVTihwcm9taXNlID0gbWVkaWFLZXlT
ZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMp
KSkKK1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5IE9LCisKK1VzaW5nIGluaXREYXRhIHdpdGgg
ZXh0cmFuZW91cyBpbmZvcm1hdGlvbiBzaG91bGQgcmVzb2x2ZS4KK1JVTihraWRzID0gSlNPTi5z
dHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSJdLCBpbnZhbGlkOiAiaW52YWxpZCIgfSkpCitS
VU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRlbXBvcmFyeSIp
KQorUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMi
LCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykpKQorUHJvbWlzZSByZXNvbHZlZCBPSworRU5EIE9G
IFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21v
Y2stTWVkaWFLZXlTZXNzaW9uLWdlbmVyYXRlUmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLWdlbmVyYXRlUmVxdWVzdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM3N2ZjYTRkN2RmZmU3M2VlMDJlOGFmM2I3MDM5ZmE2ZDI5N2Y0ZmMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9j
ay1NZWRpYUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0uLi92aWRl
by10ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KyAgICB2YXIgbW9jazsKKyAgICB2YXIgcHJvbWlzZTsKKyAgICB2YXIgbWVkaWFLZXlTeXN0ZW1B
Y2Nlc3M7CisgICAgdmFyIG1lZGlhS2V5czsKKyAgICB2YXIgbWVkaWFLZXlTZXNzaW9uOworICAg
IHZhciBjYXBhYmlsaXRpZXMgPSB7fTsKKyAgICB2YXIga2lkczsKKworICAgIGZ1bmN0aW9uIGRv
VGVzdCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAg
ICAgIGZhaWxUZXN0KCJJbnRlcm5hbHMgaXMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMuaW5p
dGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpJyk7CisgICAgICAgIHJ1bignbW9jayA9IGludGVybmFs
cy5yZWdpc3Rlck1vY2tDRE0oKScpOworICAgICAgICBydW4oJ21vY2suc3VwcG9ydGVkRGF0YVR5
cGVzID0gWyJrZXlpZHMiXScpOworICAgICAgICBydW4oJ2NhcGFiaWxpdGllcy5pbml0RGF0YVR5
cGVzID0gWyJrZXlpZHMiXScpOworICAgICAgICBydW4oYGNhcGFiaWxpdGllcy52aWRlb0NhcGFi
aWxpdGllcyA9IFt7IGNvbnRlbnRUeXBlOiAndmlkZW8vbW9jazsgY29kZWNzPSJtb2NrIicgfV0g
YCk7CisgICAgICAgIHJ1bigncHJvbWlzZSA9IG5hdmlnYXRvci5yZXF1ZXN0TWVkaWFLZXlTeXN0
ZW1BY2Nlc3MoIm9yZy53ZWJraXQubW9jayIsIFtjYXBhYmlsaXRpZXNdKScpOworICAgICAgICBz
aG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oZ290TWVkaWFLZXlTeXN0ZW1BY2Nlc3MsIGZhaWxU
ZXN0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBuZXh0KCkgeworICAgICAgICBpZiAoIXRlc3Rz
Lmxlbmd0aCkgeworICAgICAgICAgICAgbW9jay51bnJlZ2lzdGVyKCk7CisgICAgICAgICAgICBl
bmRUZXN0KCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBu
ZXh0VGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CisgICAg
ICAgIG5leHRUZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ290TWVkaWFLZXlTeXN0ZW1B
Y2Nlc3MocmVzdWx0KSB7CisgICAgICAgIG1lZGlhS2V5U3lzdGVtQWNjZXNzID0gcmVzdWx0Owor
ICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ290TWVkaWFLZXlzKHJlc3Vs
dCkgeworICAgICAgICBtZWRpYUtleXMgPSByZXN1bHQ7CisgICAgICAgIG5leHQoKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBzdHJpbmdUb1VJbnQ4QXJyYXkoc3RyKQorICAgIHsKKyAgICAgICB2
YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoKTsKKyAgICAgICBmb3IgKHZhciBp
PTA7IGk8c3RyLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgYXJyYXlbaV0gPSBzdHIuY2hhckNv
ZGVBdChpKTsKKyAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorCisgICAgdGVzdHMgPSBbCisg
ICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlT
eXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCknKTsKKyAgICAgICAgICAgIHNob3VsZFJlc29s
dmUocHJvbWlzZSkudGhlbihnb3RNZWRpYUtleXMsIGZhaWxUZXN0KTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVXNpbmcgYW4g
aW52YWxpZCBpbml0RGF0YVR5cGUgc3RyaW5nIHNob3VsZCByZWplY3QuJykKKyAgICAgICAgICAg
IHJ1bignbWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRlbXBvcmFy
eSIpJyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleVNlc3Npb24n
LCAnb2JqZWN0JykKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5n
ZW5lcmF0ZVJlcXVlc3QoImludmFsaWQiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoImludmFsaWQiKSkn
KTsKKyAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOwor
ICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29uc29sZVdy
aXRlKCdSZS11c2luZyBhIGZhaWxlZCBtZWRpYUtleVNlc3Npb24gc2hvdWxkIHJlamVjdC4nKQor
ICAgICAgICAgICAgcnVuKCdraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRV
PSIgXSB9KScpOworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdl
bmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMpKScpOworICAg
ICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpLnRoZW4obmV4dCwgbmV4dCk7CisgICAgICAg
IH0sCisKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Vz
aW5nIGEgbmV3IG1lZGlhS2V5U2Vzc2lvbiBzaG91bGQgcmVzb2x2ZS4nKQorICAgICAgICAgICAg
cnVuKCdraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIgXSB9KScpOwor
ICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lv
bigidGVtcG9yYXJ5IiknKTsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vz
c2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSkn
KTsKKyAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsK
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgnVXNpbmcgaW52YWxpZCBpbml0RGF0YSBzaG91bGQgcmVqZWN0LicpCisgICAgICAgICAg
ICBydW4oJ2tpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGludmFsaWQ6ICJpbnZhbGlkIiB9KScpOwor
ICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lv
bigidGVtcG9yYXJ5IiknKTsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vz
c2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSkn
KTsKKyAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOwor
ICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29uc29sZVdy
aXRlKCdVc2luZyBpbml0RGF0YSB3aXRoIGV4dHJhbmVvdXMgaW5mb3JtYXRpb24gc2hvdWxkIHJl
c29sdmUuJykKKyAgICAgICAgICAgIHJ1bigna2lkcyA9IEpTT04uc3RyaW5naWZ5KHsga2lkczog
WyAiTVRJek5EVT0iXSwgaW52YWxpZDogImludmFsaWQiIH0pJyk7CisgICAgICAgICAgICBydW4o
J21lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKScp
OworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVx
dWVzdCgia2V5aWRzIiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMpKScpOworICAgICAgICAgICAg
c2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOworICAgICAgICB9LAorICAg
IF07CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1t
ZWRpYS9tb2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1sCmluZGV4IDM0NDIy
ZGI4OTE0MjY5NDI4ZDlmZjBlYzgwMjYxNjFkMmYzYjY2N2MuLjQ3OTZmMThjMjAxZjE3NDZkN2Rm
NDMyNzQyZDk3NWM3NWVlNGJhNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5
cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbApA
QCAtMzQsMjggKzM0LDcgQEAKICAgICAgICAgbmV4dFRlc3QoKTsKICAgICB9CiAKLSAgICBmdW5j
dGlvbiBzaG91bGRSZXNvbHZlKHByb21pc2UpIHsKLSAgICAgICAgcHJvbWlzZS50aGVuKG1lZGlh
S2V5U3lzdGVtQWNjZXNzID0+IHsKLSAgICAgICAgICAgIGxvZ1Jlc3VsdChTdWNjZXNzLCAnUHJv
bWlzZSByZXNvbHZlZCcpOwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9LCAoKSA9PiB7
Ci0gICAgICAgICAgICBsb2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZWplY3RlZCcpOwotICAg
ICAgICAgICAgbmV4dCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzaG91
bGRSZWplY3QocHJvbWlzZSkgewotICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgbG9nUmVzdWx0KEZhaWxlZCwgJ1Byb21pc2UgcmVzb2x2ZWQgaW5jb3JyZWN0bHknKTsK
LSAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgfSwgZXhjZXB0aW9uQ29kZSA9PiB7Ci0gICAg
ICAgICAgICBsb2dSZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5Jyk7
Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogICAgIGZ1bmN0aW9u
IGdvdE1lZGlhS2V5U3lzdGVtQWNjZXNzKHJlc3VsdCkgewotICAgICAgICBsb2dSZXN1bHQoU3Vj
Y2VzcywgJ1Byb21pc2UgcmVzb2x2ZWQnKTsKICAgICAgICAgbWVkaWFLZXlTeXN0ZW1BY2Nlc3Mg
PSByZXN1bHQ7CiAgICAgICAgIG5leHQoKTsKICAgICB9CkBAIC02NSw1NCArNDQsNTQgQEAKICAg
ICAgICAgICAgIHJ1bignY2FwYWJpbGl0aWVzLmluaXREYXRhVHlwZXMgPSBbIm1vY2siXScpOwog
ICAgICAgICAgICAgcnVuKGBjYXBhYmlsaXRpZXMudmlkZW9DYXBhYmlsaXRpZXMgPSBbeyBjb250
ZW50VHlwZTogJ3ZpZGVvL21vY2s7IGNvZGVjcz0ibW9jayInIH1dIGApOwogICAgICAgICAgICAg
cnVuKCdwcm9taXNlID0gbmF2aWdhdG9yLnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcygib3Jn
LndlYmtpdC5tb2NrIiwgW2NhcGFiaWxpdGllc10pJyk7Ci0gICAgICAgICAgICBwcm9taXNlLnRo
ZW4oZ290TWVkaWFLZXlTeXN0ZW1BY2Nlc3MpLmNhdGNoKGZhaWxUZXN0KTsKKyAgICAgICAgICAg
IHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbihnb3RNZWRpYUtleVN5c3RlbUFjY2VzcywgZmFp
bFRlc3QpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
cnVuKCdwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCknKTsK
LSAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSk7CisgICAgICAgICAgICBzaG91bGRS
ZXNvbHZlKHByb21pc2UpLnRoZW4obmV4dCwgbmV4dCk7CiAgICAgICAgIH0sCiAKICAgICAgICAg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBydW4oJ21vY2suY2FuQ3JlYXRlSW5zdGFuY2VzID0g
ZmFsc2UnKTsKICAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNz
LmNyZWF0ZU1lZGlhS2V5cygpJyk7Ci0gICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSk7
CisgICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsKICAg
ICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJ1bignbW9jay5j
YW5DcmVhdGVJbnN0YW5jZXMgPSB0cnVlJyk7CiAgICAgICAgICAgICBydW4oJ2NhcGFiaWxpdGll
cy5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPSAibm90LWFsbG93ZWQiJyk7CiAgICAgICAgICAgICBy
dW4oJ3Byb21pc2UgPSBuYXZpZ2F0b3IucmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKCJvcmcu
d2Via2l0Lm1vY2siLCBbY2FwYWJpbGl0aWVzXSknKTsKLSAgICAgICAgICAgIHByb21pc2UudGhl
bihnb3RNZWRpYUtleVN5c3RlbUFjY2VzcykuY2F0Y2goZmFpbFRlc3QpOworICAgICAgICAgICAg
c2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKGdvdE1lZGlhS2V5U3lzdGVtQWNjZXNzLCBmYWls
VGVzdCk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBy
dW4oJ3Byb21pc2UgPSBtZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKScpOwot
ICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKTsKKyAgICAgICAgICAgIHNob3VsZFJl
c29sdmUocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsKICAgICAgICAgfSwKIAogICAgICAgICBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIHJ1bignbW9jay5kaXN0aW5jdGl2ZUlkZW50aWZpZXJz
UmVxdWlyZW1lbnQgPSAicmVxdWlyZWQiJyk7CiAgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBt
ZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKScpOwotICAgICAgICAgICAgc2hv
dWxkUmVqZWN0KHByb21pc2UpOworICAgICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpLnRo
ZW4obmV4dCwgbmV4dCk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICBydW4oJ21vY2suZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50ID0gIm9w
dGlvbmFsIicpOwogICAgICAgICAgICAgcnVuKCdjYXBhYmlsaXRpZXMucGVyc2lzdGVudFN0YXRl
ID0gIm5vdC1hbGxvd2VkIicpOwogICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbmF2aWdhdG9y
LnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcygib3JnLndlYmtpdC5tb2NrIiwgW2NhcGFiaWxp
dGllc10pJyk7Ci0gICAgICAgICAgICBwcm9taXNlLnRoZW4oZ290TWVkaWFLZXlTeXN0ZW1BY2Nl
c3MpLmNhdGNoKGZhaWxUZXN0KTsKKyAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSku
dGhlbihnb3RNZWRpYUtleVN5c3RlbUFjY2VzcywgZmFpbFRlc3QpOwogICAgICAgICB9LAogCiAg
ICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlT
eXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCknKTsKLSAgICAgICAgICAgIHNob3VsZFJlc29s
dmUocHJvbWlzZSk7CisgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4obmV4
dCwgbmV4dCk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICBydW4oJ21vY2sucGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgPSAicmVxdWlyZWQiJyk7CiAg
ICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRp
YUtleXMoKScpOwotICAgICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpOworICAgICAgICAg
ICAgc2hvdWxkUmVqZWN0KHByb21pc2UpLnRoZW4obmV4dCwgbmV4dCk7CiAgICAgICAgIH0sCiAg
ICAgXTsKICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5
cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5cy1jcmVhdGVTZXNzaW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleXMtY3JlYXRlU2Vzc2lvbi5odG1s
CmluZGV4IDdmYjhhMzAyODNmOTBkODhmMzljM2FhNjA5NzRjNGQ0NWZhMWMzNzAuLmE1ZmViMjk5
MzdmOTY1YTRmZDY0YTVhNzg4ZmFjMDlkZWE5OGNhYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5cy1jcmVhdGVTZXNzaW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlzLWNy
ZWF0ZVNlc3Npb24uaHRtbApAQCAtMjMsNyArMjMsNyBAQAogICAgICAgICBydW4oJ2NhcGFiaWxp
dGllcy5pbml0RGF0YVR5cGVzID0gWyJtb2NrIl0nKTsKICAgICAgICAgcnVuKGBjYXBhYmlsaXRp
ZXMudmlkZW9DYXBhYmlsaXRpZXMgPSBbeyBjb250ZW50VHlwZTogJ3ZpZGVvL21vY2s7IGNvZGVj
cz0ibW9jayInIH1dIGApOwogICAgICAgICBydW4oJ3Byb21pc2UgPSBuYXZpZ2F0b3IucmVxdWVz
dE1lZGlhS2V5U3lzdGVtQWNjZXNzKCJvcmcud2Via2l0Lm1vY2siLCBbY2FwYWJpbGl0aWVzXSkn
KTsKLSAgICAgICAgcHJvbWlzZS50aGVuKGdvdE1lZGlhS2V5U3lzdGVtQWNjZXNzKS5jYXRjaChm
YWlsVGVzdCk7CisgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbihnb3RNZWRpYUtl
eVN5c3RlbUFjY2VzcywgZmFpbFRlc3QpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIG5leHQoKSB7
CkBAIC0zOCwzNCArMzgsMTIgQEAKICAgICAgICAgbmV4dFRlc3QoKTsKICAgICB9CiAKLSAgICBm
dW5jdGlvbiBzaG91bGRSZXNvbHZlKHByb21pc2UpIHsKLSAgICAgICAgcHJvbWlzZS50aGVuKG1l
ZGlhS2V5U3lzdGVtQWNjZXNzID0+IHsKLSAgICAgICAgICAgIGxvZ1Jlc3VsdChTdWNjZXNzLCAn
UHJvbWlzZSByZXNvbHZlZCcpOwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9LCAoKSA9
PiB7Ci0gICAgICAgICAgICBsb2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZWplY3RlZCcpOwot
ICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBz
aG91bGRSZWplY3QocHJvbWlzZSkgewotICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4gewotICAg
ICAgICAgICAgbG9nUmVzdWx0KEZhaWxlZCwgJ1Byb21pc2UgcmVzb2x2ZWQgaW5jb3JyZWN0bHkn
KTsKLSAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgfSwgZXhjZXB0aW9uQ29kZSA9PiB7Ci0g
ICAgICAgICAgICBsb2dSZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5
Jyk7Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogICAgIGZ1bmN0
aW9uIGdvdE1lZGlhS2V5U3lzdGVtQWNjZXNzKHJlc3VsdCkgewotICAgICAgICBsb2dSZXN1bHQo
U3VjY2VzcywgJ1Byb21pc2UgcmVzb2x2ZWQnKTsKICAgICAgICAgbWVkaWFLZXlTeXN0ZW1BY2Nl
c3MgPSByZXN1bHQ7CiAgICAgICAgIG5leHQoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBnb3RN
ZWRpYUtleXMocmVzdWx0KSB7Ci0gICAgICAgIGxvZ1Jlc3VsdChTdWNjZXNzLCAnUHJvbWlzZSBy
ZXNvbHZlZCcpOwogICAgICAgICBtZWRpYUtleXMgPSByZXN1bHQ7CiAgICAgICAgIG5leHQoKTsK
ICAgICB9CkBAIC04MSw3ICs1OSw3IEBACiAgICAgdGVzdHMgPSBbCiAgICAgICAgIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3Jl
YXRlTWVkaWFLZXlzKCknKTsKLSAgICAgICAgICAgIHByb21pc2UudGhlbihnb3RNZWRpYUtleXMp
LmNhdGNoKGZhaWxUZXN0KTsKKyAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhl
bihnb3RNZWRpYUtleXMsIGZhaWxUZXN0KTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlv
bigpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2Nr
LU1lZGlhS2V5cy1zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlzLXNldFNlcnZlckNlcnRpZmljYXRlLmh0bWwK
aW5kZXggYTZhYTMxYWJmMjM2YTlhMDIzMDA2MDk5MmYxODgxZDJmZTlkMjJmNS4uM2M2NmJhYWU5
NWI1NzBjMTdiZjNiOGVjYTIzMzcwNTllZGMyYjc0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
bWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlzLXNldFNlcnZlckNlcnRpZmljYXRl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFL
ZXlzLXNldFNlcnZlckNlcnRpZmljYXRlLmh0bWwKQEAgLTIyLDcgKzIyLDcgQEAKICAgICAgICAg
cnVuKCdjYXBhYmlsaXRpZXMuaW5pdERhdGFUeXBlcyA9IFsibW9jayJdJyk7CiAgICAgICAgIHJ1
bihgY2FwYWJpbGl0aWVzLnZpZGVvQ2FwYWJpbGl0aWVzID0gW3sgY29udGVudFR5cGU6ICd2aWRl
by9tb2NrOyBjb2RlY3M9Im1vY2siJyB9XSBgKTsKICAgICAgICAgcnVuKCdwcm9taXNlID0gbmF2
aWdhdG9yLnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcygib3JnLndlYmtpdC5tb2NrIiwgW2Nh
cGFiaWxpdGllc10pJyk7Ci0gICAgICAgIHByb21pc2UudGhlbihnb3RNZWRpYUtleVN5c3RlbUFj
Y2VzcykuY2F0Y2goZmFpbFRlc3QpOworICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRo
ZW4oZ290TWVkaWFLZXlTeXN0ZW1BY2Nlc3MsIGZhaWxUZXN0KTsKICAgICB9CiAKICAgICBmdW5j
dGlvbiBuZXh0KCkgewpAQCAtMzcsMzQgKzM3LDEyIEBACiAgICAgICAgIG5leHRUZXN0KCk7CiAg
ICAgfQogCi0gICAgZnVuY3Rpb24gc2hvdWxkUmVzb2x2ZShwcm9taXNlKSB7Ci0gICAgICAgIHBy
b21pc2UudGhlbihtZWRpYUtleVN5c3RlbUFjY2VzcyA9PiB7Ci0gICAgICAgICAgICBsb2dSZXN1
bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVzb2x2ZWQnKTsKLSAgICAgICAgICAgIG5leHQoKTsKLSAg
ICAgICAgfSwgKCkgPT4gewotICAgICAgICAgICAgbG9nUmVzdWx0KEZhaWxlZCwgJ1Byb21pc2Ug
cmVqZWN0ZWQnKTsKLSAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gc2hvdWxkUmVqZWN0KHByb21pc2UpIHsKLSAgICAgICAgcHJvbWlzZS50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgIGxvZ1Jlc3VsdChGYWlsZWQsICdQcm9taXNlIHJlc29sdmVk
IGluY29ycmVjdGx5Jyk7Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0sIGV4Y2VwdGlv
bkNvZGUgPT4gewotICAgICAgICAgICAgbG9nUmVzdWx0KFN1Y2Nlc3MsICdQcm9taXNlIHJlamVj
dGVkIGNvcnJlY3RseScpOwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9KTsKLSAgICB9
Ci0KICAgICBmdW5jdGlvbiBnb3RNZWRpYUtleVN5c3RlbUFjY2VzcyhyZXN1bHQpIHsKLSAgICAg
ICAgbG9nUmVzdWx0KFN1Y2Nlc3MsICdQcm9taXNlIHJlc29sdmVkJyk7CiAgICAgICAgIG1lZGlh
S2V5U3lzdGVtQWNjZXNzID0gcmVzdWx0OwogICAgICAgICBuZXh0KCk7CiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gZ290TWVkaWFLZXlzKHJlc3VsdCkgewotICAgICAgICBsb2dSZXN1bHQoU3VjY2Vz
cywgJ1Byb21pc2UgcmVzb2x2ZWQnKTsKICAgICAgICAgbWVkaWFLZXlzID0gcmVzdWx0OwogICAg
ICAgICBuZXh0KCk7CiAgICAgfQpAQCAtODAsMjggKzU4LDI4IEBACiAgICAgdGVzdHMgPSBbCiAg
ICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlT
eXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCknKTsKLSAgICAgICAgICAgIHByb21pc2UudGhl
bihnb3RNZWRpYUtleXMpLmNhdGNoKGZhaWxUZXN0KTsKKyAgICAgICAgICAgIHNob3VsZFJlc29s
dmUocHJvbWlzZSkudGhlbihnb3RNZWRpYUtleXMsIGZhaWxUZXN0KTsKICAgICAgICAgfSwKIAog
ICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5
cy5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShuZXcgQXJyYXlCdWZmZXIoKSknKTsKLSAgICAgICAgICAg
IHNob3VsZFJlamVjdChwcm9taXNlKTsKKyAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNl
KS50aGVuKG5leHQsIG5leHQpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlzLnNldFNlcnZlckNlcnRpZmljYXRl
KHN0cmluZ1RvVUludDhBcnJheSgiaW52YWxpZCIpKScpOwotICAgICAgICAgICAgc2hvdWxkUmVq
ZWN0KHByb21pc2UpOworICAgICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpLnRoZW4obmV4
dCwgbmV4dCk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleXMuc2V0U2VydmVyQ2VydGlmaWNhdGUoc3RyaW5nVG9V
SW50OEFycmF5KCJ2YWxpZCIpKScpOwotICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNl
KTsKKyAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsK
ICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJ1bignbW9j
ay5zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyA9IGZhbHNlJyk7CiAgICAgICAgICAgICBydW4o
J3Byb21pc2UgPSBtZWRpYUtleXMuc2V0U2VydmVyQ2VydGlmaWNhdGUoc3RyaW5nVG9VSW50OEFy
cmF5KCJ2YWxpZCIpKScpOwotICAgICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpOworICAg
ICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpLnRoZW4obmV4dCwgbmV4dCk7CiAgICAgICAg
IH0sCiAgICAgXTsKICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9tb2NrLW5hdmlnYXRvci1yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nl
c3MuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLW5hdmlnYXRv
ci1yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbAppbmRleCA2ODcyY2U2N2RlM2YyMjhk
Y2Q4MjIyYTExNWFlNTVlZWQ5NWFlNWYzLi42YjBiYmU0MTZiNDc1Zjc1ODVmYWFjYzdlMDk4ZmU1
ZDkzYTk1N2NjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
bW9jay1uYXZpZ2F0b3ItcmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stbmF2aWdhdG9yLXJlcXVlc3RNZWRp
YUtleVN5c3RlbUFjY2Vzcy5odG1sCkBAIC0zNCwzMyArMzQsMTggQEAKICAgICB9CiAKICAgICBm
dW5jdGlvbiBwYXNzaW5nVGVzdFdpdGhDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzLCBzdWNjZXNz
KSB7Ci0gICAgICAgIHRlc3RXaXRoQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcyk7Ci0gICAgICAg
IHByb21pc2UudGhlbihtZWRpYUtleVN5c3RlbUFjY2VzcyA9PiB7Ci0gICAgICAgICAgICBsb2dS
ZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVzb2x2ZWQnKTsKLSAgICAgICAgICAgIHN1Y2Nlc3Mo
bWVkaWFLZXlTeXN0ZW1BY2Nlc3MpOwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9LCAo
KSA9PiB7Ci0gICAgICAgICAgICBsb2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZWplY3RlZCcp
OwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9KTsKKyAgICAgICAgc2hvdWxkUmVzb2x2
ZSh0ZXN0V2l0aENhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpKS50aGVuKHN1Y2Nlc3MpLnRoZW4o
bmV4dCwgbmV4dCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZmFpbGluZ1Rlc3RXaXRoQ2FwYWJp
bGl0aWVzKGNhcGFiaWxpdGllcywgZmFpbHVyZSkgewotICAgICAgICB0ZXN0V2l0aENhcGFiaWxp
dGllcyhjYXBhYmlsaXRpZXMpOwotICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgbG9nUmVzdWx0KEZhaWxlZCwgJ1Byb21pc2UgcmVzb2x2ZWQgaW5jb3JyZWN0bHknKTsK
LSAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgfSwgZXhjZXB0aW9uQ29kZSA9PiB7Ci0gICAg
ICAgICAgICBsb2dSZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5Jyk7
Ci0gICAgICAgICAgICBmYWlsdXJlKGV4Y2VwdGlvbkNvZGUpCi0gICAgICAgICAgICBuZXh0KCk7
Ci0gICAgICAgIH0pOworICAgICAgICBzaG91bGRSZWplY3QodGVzdFdpdGhDYXBhYmlsaXRpZXMo
Y2FwYWJpbGl0aWVzKSkudGhlbihmYWlsdXJlKS50aGVuKG5leHQsIG5leHQpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHRlc3RXaXRoQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykgewogICAgICAg
ICB3aW5kb3cuY2FwYWJpbGl0aWVzID0gY2FwYWJpbGl0aWVzOwogICAgICAgICBjb25zb2xlV3Jp
dGUoYFNFVCBjYXBhYmlsaXRpZXMgPSAnJHsgSlNPTi5zdHJpbmdpZnkoY2FwYWJpbGl0aWVzLCBu
dWxsLCAxKSB9J2ApOwogICAgICAgICBydW4oJ3Byb21pc2UgID0gbmF2aWdhdG9yLnJlcXVlc3RN
ZWRpYUtleVN5c3RlbUFjY2Vzcygib3JnLndlYmtpdC5tb2NrIiwgY2FwYWJpbGl0aWVzKScpOwor
ICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICB9CiAKICAgICB0ZXN0cyA9IFsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9tZWRpYS92
aWRlby10ZXN0LmpzCmluZGV4IDE5YTdmNjJkYTRmMmNiYzYyNGNiYTVmMGNkMGZiYzgwYzNmOTYx
ZDAuLjYwYjFlMzA2MGUwN2MxYzIxMTY5YzM3ZDQ1MGQ4OGZiNzM2MTcwNWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tdGVzdC5qcwpAQCAtNDE2LDMgKzQxNiwyOCBAQCBmdW5jdGlvbiBydW5XaXRoS2V5RG93
bihmbikKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwogICAgIH0KIH0KKwor
ZnVuY3Rpb24gc2hvdWxkUmVzb2x2ZShwcm9taXNlKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgcHJvbWlzZS50aGVuKHJlc3VsdCA9PiB7
CisgICAgICAgICAgICBsb2dSZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVzb2x2ZWQnKTsKKyAg
ICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7
CisgICAgICAgICAgICBsb2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZWplY3RlZCcpOworICAg
ICAgICAgICAgcmVqZWN0KGVycm9yKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZFJlamVjdChwcm9taXNlKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgcHJvbWlzZS50aGVuKHJlc3VsdCA9PiB7CisgICAg
ICAgICAgICBsb2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZXNvbHZlZCBpbmNvcnJlY3RseScp
OworICAgICAgICAgICAgcmVqZWN0KHJlc3VsdCk7CisgICAgICAgIH0pLmNhdGNoKChlcnJvcikg
PT4geworICAgICAgICAgICAgbG9nUmVzdWx0KFN1Y2Nlc3MsICdQcm9taXNlIHJlamVjdGVkIGNv
cnJlY3RseScpOworICAgICAgICAgICAgcmVzb2x2ZShlcnJvcik7CisgICAgICAgIH0pOworICAg
IH0pOworCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGFlYjFkYzBlYzgxNjk3ZDdiM2MyMTFkZTNlYTBkNjI1YWI2NTJmODMuLjA5YmQ0YjU0NWRmZTM0
ZDdkMWVmMDMxOWI3Mzg2YjZhM2JlYmM0N2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xNDY5LDYgKzE0NjksNyBAQCBtZWRpYS9lbmNyeXB0ZWQtbWVk
aWEvbW9jay1uYXZpZ2F0b3ItcmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwgWyBTa2lw
IF0KIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwg
WyBTa2lwIF0KIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5cy1zZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZS5odG1sIFsgU2tpcCBdCiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRp
YUtleXMtY3JlYXRlU2Vzc2lvbi5odG1sIFsgU2tpcCBdCittZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
bW9jay1NZWRpYUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwgWyBTa2lwIF0KIAogd2Vi
a2l0Lm9yZy9iLzE2NjAyNSBodHRwL3Rlc3RzL2ZldGNoL2ZldGNoaW5nLXNhbWUtcmVzb3VyY2Ut
d2l0aC1kaWZmZmVyZW50LW9wdGlvbnMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
</data>
<flag name="commit-queue"
          id="320636"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298493</attachid>
            <date>2017-01-10 11:33:55 -0800</date>
            <delta_ts>2017-01-10 12:10:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-166880-20170110113218.patch</filename>
            <type>text/plain</type>
            <size>69524</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY3ZjZjZjJlNjBlMmVk
YzQ4YTRmMDBhZDBjYTBkNmZlMzhlNGJjYi4uNmY5Yzc3YjNjNTRhYTIzZWVjYWU0NTAyYTJmMmE0
ZjQ1ODc0OTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE3LTAxLTA5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBN
ZWRpYUtleXMuZ2VuZXJhdGVSZXF1ZXN0KCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIg
Um9kcmlndWV6LUNhbHZhci4KKworICAgICAgICBUZXN0OiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
bW9jay1NZWRpYUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwKKworICAgICAgICBJbXBs
ZW1lbnQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoKS4gVGhpcyByZXF1aXJlcyBz
b21lIGFkZGl0aW9ucworICAgICAgICB0byBDRE0sIENETVByaXZhdGUsIGFuZCBDRE1JbnN0YW5j
ZSB0byBzdXBwb3J0IHBsYXRmb3JtIGFkb3B0aW9uIGFuZCB0bworICAgICAgICBpbXBsZW1lbnQg
bW9jayBzdXBwb3J0IGZvciB0ZXN0aW5nLiBBZGRpdGlvbmFsbHksIGFkZCBhbiBJbml0RGF0YVJl
Z2lzdHJ5CisgICAgICAgIG9iamVjdCB3aGljaCBjYW4gc2FuaXRpemUgYW5kIGV4dHJhY3Qga2V5
IGRhdGEgZnJvbSB2YXJpb3VzIGluaXREYXRhIHR5cGVzLgorICAgICAgICAoQXQgdGhlIG1vbWVu
dCwgb25seSB0aGUgImtleWlkcyIgaW5pdERhdGEgdHlwZSBpcyBpbXBsZW1lbnRlZC4pCisKKyAg
ICAgICAgRHJpdmUtYnkgZml4ZXM6IENoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGluaXREYXRhVHlw
ZSBmcm9tIFN0cmluZyAtPiBBdG9taWNTdHJpbmcuCisgICAgICAgIEFkZCAiY29uc3QiIGZsYWdz
IHRvIGFsbCBDRE1Qcml2YXRlIG1ldGhvZHMgdGhhdCBtaWdodCBiZSBjYWxsZWQgZnJvbSBhIGNv
bnN0CisgICAgICAgIHJlZmVyZW5jZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5p
dGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6c3VwcG9ydHNJbml0RGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplQ2VuYyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
SURzQ2VuYyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZVdlYk0pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc1dlYk0pOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdp
c3RyeTo6c2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OkluaXRE
YXRhUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0
S2V5SURzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OnJlZ2lzdGVySW5p
dERhdGFUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlRXZlbnROYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZERhdGFUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06
OnN1cHBvcnRzSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6
OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydGVkRGF0YVR5cGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpoYXNTZXNzaW9uV2l0aElEKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uV2l0aElEKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWREYXRhVHlwZXMpOiBEZWxl
dGVkLgorCiAyMDE3LTAxLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA2ZWIzMTQ2OTlhYmQ1MTQ5YTlkNGI1ZmY5ZTkxNjg1ODY1NDk4MTNk
Li40ODE5N2IyZGIyOTUzZjYzNWRkYmM5YmIwYTA1NTMzNWFjYTkyNTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjk4Miw2ICsyOTgyLDcgQEAgZW5kaWYgKCkKIGlmIChFTkFCTEVfRU5DUllQ
VEVEX01FRElBKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKyAgICAgICAgTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAogICAgICAgICBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5TWVzc2FnZUV2ZW50LmNwcAogICAgICAgICBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAKICAgICAgICAgTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmNwcAppbmRleCA4Y2I4MzRlYzUyMmVhY2NmYjU4NDJkZjAxYmZjMTg2NTk3YTU4OTlkLi4z
MzEwNDU5NjcwM2FhMmI1NWRiOTBlMDA4NDRhN2I0MmJmNzIwMzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJJbml0RGF0YVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzUmVzdHJpY3Rpb25zLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpA
QCAtNjM0LDYgKzYzNSwyMSBAQCBib29sIENETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0K
IAorYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5p
dERhdGFUeXBlKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5z
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpOworfQorCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCit7CisgICAgcmV0dXJuIEluaXREYXRh
UmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0
YSk7Cit9CisKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQoreworICAgIHJldHVy
biBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlwZSwg
aW5pdERhdGEpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggZTU2Y2NjNjYzMmQ3NjQ0MzUwNzQzZmFlZTFmYTYzYzY0
NGM3OWYwNS4uN2MxNTkzNDlhNzBlNjE1MDUxZTEwYTM2NzZjYWYyZmQ5M2FkZTdmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUg
Ik1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmLmg+CkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIENETUluc3RhbmNlOwogY2xh
c3MgQ0RNUHJpdmF0ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9u
czsKIApAQCAtNzMsNiArNzUsMTAgQEAgcHVibGljOgogICAgIFJlZlB0cjxDRE1JbnN0YW5jZT4g
Y3JlYXRlSW5zdGFuY2UoKTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkg
Y29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Q7CisgICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7
CiAKIHByaXZhdGU6CiAgICAgQ0RNKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oCmluZGV4IDcyZmY1NWNmMjJkY2FkYjNjYmM4YzVlNGQ2ZTUxM2JjNWI2YmY3NGEuLmZk
NDhkZjEzYzQ0YjkzZDVlOGYyYzgxMzA2ZmU2MmE3ZjVhZjFlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTMwLDEz
ICszMCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLX0KLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1JbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENETUluc3RhbmNlPiB7CiBwdWJsaWM6CkBAIC01MCw3ICs0NywxNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIFN1Y2Nlc3NW
YWx1ZSBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSA9IDA7Ci0g
ICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoSlNDOjpBcnJheUJ1
ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIExpY2Vuc2VUeXBl
IHsKKyAgICAgICAgVGVtcG9yYXJ5LAorICAgICAgICBQZXJzaXN0YWJsZSwKKyAgICAgICAgVXNh
Z2VSZWNvcmQsCisgICAgfTsKKworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IDYwYjZmY2EyZjVkNThmOTk5YmI1
NTJiYTU0YzU3NDMyYmE2YjAzODMuLjc5M2M1NDA0ZDQ2YzI5M2E0ZWI1Y2Y1MTcyNzlhYzRlYTNk
NDc1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oCkBAIC00MSwxOCArNDEsMTkgQEAgY2xhc3MgQ0RNUHJpdmF0ZSB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpIHsgfQogCi0gICAgdmlydHVhbCBib29sIHN1
cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0
aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNS
ZXN0cmljdGlvbnMmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5l
c3MoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgTWVkaWFLZXlzUmVxdWlyZW1lbnQg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpID0gMDsKLSAgICB2aXJ0
dWFsIE1lZGlhS2V5c1JlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9u
cyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1
ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
KSA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMm
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29u
ZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5l
c3MoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTWVkaWFLZXlzUmVxdWly
ZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIE1lZGlhS2V5c1JlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVp
cmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5
c1Jlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5z
dGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkQW5kSW5p
dGlhbGl6ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbWljU3Ry
aW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU4MWI0ZjdmYzk4OWQ4MzNlZjFiMDlmYzhkM2U1ZjdiZTIw
ODAyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RL
ZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgLy8gMS4gRm9y
bWF0CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQt
cmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IHZhbHVlOworICAgIGlmICghSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihqc29uLCB2YWx1
ZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBv
YmplY3Q7CisgICAgaWYgKCF2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4ga2lkc0FycmF5OworICAgIGlmICgh
b2JqZWN0LT5nZXRBcnJheSgia2lkcyIsIGtpZHNBcnJheSkpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBmb3IgKGF1dG8m
IHZhbHVlIDogKmtpZHNBcnJheSkgeworICAgICAgICBTdHJpbmcga2V5SUQ7CisgICAgICAgIGlm
ICghdmFsdWUtPmFzU3RyaW5nKGtleUlEKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIFZlY3RvcjxjaGFyPiBrZXlJRERhdGE7CisgICAgICAgIGlmICghV1RGOjpiYXNlNjREZWNv
ZGUoa2V5SUQsIHsga2V5SUREYXRhIH0pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SURCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVj
dG9yKGtleUlERGF0YSk7CisgICAgICAgIGtleUlEcy5hcHBlbmQoV1RGTW92ZShrZXlJREJ1ZmZl
cikpOworICAgIH0KKworICAgIHJldHVybiBrZXlJRHM7Cit9CisKK3N0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sK
KyAgICAvLyAxLiBGb3JtYXQKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVk
LW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKKyAgICBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEQnVmZmVyID0gZXh0cmFjdEtleUlEc0tleWlk
cyhidWZmZXIpOworICAgIGlmIChrZXlJREJ1ZmZlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBvYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OworICAgIGF1dG8ga2lkc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZv
ciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIpCisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRFbmNvZGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CisKKyAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkp
OworfQorCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNT
SCBCb3ggRm9ybWF0CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBidWZmZXIuY29weSgpOworfQorCitzdGF0aWMg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRC
dWZmZXImKQoreworICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0
CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3N0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgLy8gMS4gRm9y
bWF0CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQt
cmVnaXN0cnkvaW5pdGRhdGEvd2VibS5odG1sI2Zvcm1hdAorICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7Cit9CisKK3N0YXRpYyBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCit7CisgICAg
Ly8gMS4gRm9ybWF0CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvd2VibS5odG1sI2Zvcm1hdAorICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworSW5pdERhdGFSZWdpc3RyeSYgSW5pdERh
dGFSZWdpc3RyeTo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW5pdERh
dGFSZWdpc3RyeT4gcmVnaXN0cnk7CisgICAgcmV0dXJuIHJlZ2lzdHJ5LmdldCgpOworfQorCitJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KCkKK3sKKyAgICByZWdpc3RlckluaXRE
YXRhVHlwZSgia2V5aWRzIiwgeyAmc2FuaXRpemVLZXlpZHMsICZleHRyYWN0S2V5SURzS2V5aWRz
IH0pOworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJjZW5jIiwgeyAmc2FuaXRpemVDZW5jLCAm
ZXh0cmFjdEtleUlEc0NlbmMgfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoIndlYm0iLCB7
ICZzYW5pdGl6ZVdlYk0sICZleHRyYWN0S2V5SURzV2ViTSB9KTsKK30KKworSW5pdERhdGFSZWdp
c3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CisKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGF1dG8g
aXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOworICAgIGlmIChpdGVyID09IG1fdHlw
ZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZl
cik7Cit9CisKK1ZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdEtleUlEcyhjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCit7CisgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRh
VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2Fu
aXRpemVJbml0RGF0YSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gaXRlci0+dmFs
dWUuZXh0cmFjdEtleUlEcyhidWZmZXIpOworfQorCit2b2lkIEluaXREYXRhUmVnaXN0cnk6OnJl
Z2lzdGVySW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBJbml0
RGF0YVR5cGVDYWxsYmFja3MmJiBjYWxsYmFja3MpCit7CisgICAgQVNTRVJUKCFtX3R5cGVzLmNv
bnRhaW5zKGluaXREYXRhVHlwZSkpOworICAgIG1fdHlwZXMuc2V0KGluaXREYXRhVHlwZSwgV1RG
TW92ZShjYWxsYmFja3MpKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzliZmEwNDUzNTQ2ZGE1NzdiYTNkOWY4
ZjFhNDk0ODkxYjg2ODE3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisK
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIEluaXREYXRhUmVnaXN0cnkgeworcHVibGljOgor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKKyAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CisKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworCisgICAgc3RydWN0IEluaXRE
YXRhVHlwZUNhbGxiYWNrcyB7CisgICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFj
ayA9IEZ1bmN0aW9uPFJlZlB0cjxTaGFyZWRCdWZmZXI+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsK
KyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248VmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+Pihjb25zdCBTaGFyZWRCdWZmZXImKT47CisKKyAgICAgICAgU2FuaXRp
emVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CisgICAgICAgIEV4dHJhY3RLZXlJ
RHNDYWxsYmFjayBleHRyYWN0S2V5SURzOworICAgIH07CisgICAgdm9pZCByZWdpc3RlckluaXRE
YXRhVHlwZShjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgSW5pdERhdGFUeXBlQ2Fs
bGJhY2tzJiYpOworCitwcml2YXRlOgorICAgIEluaXREYXRhUmVnaXN0cnkoKTsKKyAgICB+SW5p
dERhdGFSZWdpc3RyeSgpOworCisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEluaXREYXRhVHlw
ZUNhbGxiYWNrcz4gbV90eXBlczsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggMGNkNzNmOWUwY2UzNTYwZWYzZmMxNjQw
ZTZmZjE3YzdjZGE2NDdhNi4uNDU1MTk0NGQ5NDRkZTU3MWExMzVlMWM1NTU1NTYxOThjMTUzYjE4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMzMsMTEgKzMzLDIxIEBACiAKICNpbmNsdWRlICJD
RE0uaCIKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5oIgogI2luY2x1ZGUgIk1l
ZGlhS2V5U3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgQXRvbWljU3RyaW5nJiBtZXNzYWdlRXZlbnROYW1l
KCkKK3sKKyAgICBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1lc3NhZ2UgeyAibWVzc2Fn
ZSIgfTsKKyAgICByZXR1cm4gbWVzc2FnZS5nZXQoKTsKK30KKwogUmVmPE1lZGlhS2V5U2Vzc2lv
bj4gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlk
ZW50aWZpZXIsIFJlZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZT4mJiBp
bnN0YW5jZSkKIHsKICAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhS2V5U2Vz
c2lvbihjb250ZXh0LCBzZXNzaW9uVHlwZSwgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBXVEZN
b3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShpbnN0YW5jZSkpKTsKQEAgLTUzLDYgKzYzLDgg
QEAgTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgTWVkaWFLZXlTZXNzaW8KICAgICAsIG1fc2Vzc2lvblR5cGUoc2Vzc2lvblR5
cGUpCiAgICAgLCBtX2ltcGxlbWVudGF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pKQogICAg
ICwgbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKKyAgICAsIG1fZXZlbnRRdWV1ZSgqdGhp
cykKKyAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKIHsKICAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzLXNldHNlcnZlcmNlcnRpZmlj
YXRlCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKQEAgLTk0LDkg
KzEwNiwxNDMgQEAgUmVmPE1lZGlhS2V5U3RhdHVzTWFwPiBNZWRpYUtleVNlc3Npb246OmtleVN0
YXR1c2VzKCkgY29uc3QKICAgICByZXR1cm4gbV9rZXlTdGF0dXNlcy5jb3B5UmVmKCk7CiB9CiAK
LXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29u
c3QgQnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikKK3ZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEJ1ZmZlclNvdXJjZSYgaW5pdERhdGEsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXNlc3Npb24tZ2VuZXJhdGVyZXF1ZXN0
CisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKworICAgIC8vIFdo
ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZv
bGxvd2luZyBzdGVwczoKKyAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9zZWQsIHJldHVy
biBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KKyAgICAvLyAy
LiBJZiB0aGlzIG9iamVjdCdzIHVuaW5pdGlhbGl6ZWQgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBh
IHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KKyAgICBpZiAobV9j
bG9zZWQgfHwgIW1fdW5pbml0aWFsaXplZCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoSU5W
QUxJRF9TVEFURV9FUlIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMy4gTGV0
IHRoaXMgb2JqZWN0J3MgdW5pbml0aWFsaXplZCB2YWx1ZSBiZSBmYWxzZS4KKyAgICBtX3VuaW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIC8vIDQuIElmIGluaXREYXRhVHlwZSBpcyB0aGUgZW1w
dHkgc3RyaW5nLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KKyAgICAvLyA1LiBJZiBpbml0RGF0YSBpcyBhbiBlbXB0eSBhcnJheSwgcmV0
dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCisg
ICAgaWYgKGluaXREYXRhVHlwZS5pc0VtcHR5KCkgfHwgIWluaXREYXRhLmxlbmd0aCgpKSB7Cisg
ICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gNi4gSWYgdGhlIEtleSBTeXN0ZW0gaW1wbGVtZW50YXRpb24gcmVwcmVzZW50
ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgZG9lcyBub3Qgc3Vw
cG9ydAorICAgIC8vICAgIGluaXREYXRhVHlwZSBhcyBhbiBJbml0aWFsaXphdGlvbiBEYXRhIFR5
cGUsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yLiBT
dHJpbmcKKyAgICAvLyAgICBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgorICAgIGlmICgh
bV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkgewor
ICAgICAgICBwcm9taXNlLT5yZWplY3QoTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gNy4gTGV0IGluaXQgZGF0YSBiZSBhIGNvcHkgb2YgdGhlIGNv
bnRlbnRzIG9mIHRoZSBpbml0RGF0YSBwYXJhbWV0ZXIuCisgICAgLy8gOC4gTGV0IHNlc3Npb24g
dHlwZSBiZSB0aGlzIG9iamVjdCdzIHNlc3Npb24gdHlwZS4KKyAgICAvLyA5LiBMZXQgcHJvbWlz
ZSBiZSBhIG5ldyBwcm9taXNlLgorICAgIC8vIDEwLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBp
biBwYXJhbGxlbDoKKyAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgaW5pdERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgp
KSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7
CisgICAgICAgIC8vIDEwLjEuIElmIHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0
RGF0YVR5cGUsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4K
KyAgICAgICAgLy8gMTAuMi4gTGV0IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQg
YW5kIHNhbml0aXplZCB2ZXJzaW9uIG9mIGluaXQgZGF0YS4KKyAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUlu
aXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOworCisgICAgICAgIC8vIDEwLjMuIElmIHRo
ZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVh
dGVkIFR5cGVFcnJvci4KKyAgICAgICAgaWYgKCFzYW5pdGl6ZWRJbml0RGF0YSkgeworICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICAvLyAxMC40LiBJZiBzYW5pdGl6ZWQgaW5pdCBkYXRhIGlzIGVt
cHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IuCisgICAgICAgIGlm
IChzYW5pdGl6ZWRJbml0RGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBwcm9taXNlLT5y
ZWplY3QoTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgLy8gMTAuNS4gTGV0IHNlc3Npb24gaWQgYmUgdGhlIGVtcHR5IHN0cmluZy4K
KyAgICAgICAgLy8gMTAuNi4gTGV0IG1lc3NhZ2UgYmUgbnVsbC4KKyAgICAgICAgLy8gMTAuNy4g
TGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgorICAgICAgICAvLyAxMC44LiBMZXQgY2RtIGJlIHRo
ZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2Ug
dmFsdWUuCisgICAgICAgIC8vIDEwLjkuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxv
d2luZyBzdGVwczoKKyAgICAgICAgLy8gMTAuOS4xLiBJZiB0aGUgc2FuaXRpemVkIGluaXQgZGF0
YSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjZG0sIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RT
dXBwb3J0ZWRFcnJvci4KKyAgICAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c0lu
aXREYXRhKGluaXREYXRhVHlwZSwgKnNhbml0aXplZEluaXREYXRhKSkgeworICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIDEwLjkuMiBGb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUg
dmFsdWUgb2Ygc2Vzc2lvbiB0eXBlIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgICAgICBD
RE1JbnN0YW5jZTo6TGljZW5zZVR5cGUgcmVxdWVzdGVkTGljZW5zZVR5cGU7CisgICAgICAgIHN3
aXRjaCAobV9zZXNzaW9uVHlwZSkgeworICAgICAgICBjYXNlIE1lZGlhS2V5U2Vzc2lvblR5cGU6
OlRlbXBvcmFyeToKKyAgICAgICAgICAgIC8vIOKGsyAidGVtcG9yYXJ5IgorICAgICAgICAgICAg
Ly8gTGV0IHJlcXVlc3RlZCBsaWNlbnNlIHR5cGUgYmUgYSB0ZW1wb3Jhcnkgbm9uLXBlcnNpc3Rh
YmxlIGxpY2Vuc2UuCisgICAgICAgICAgICByZXF1ZXN0ZWRMaWNlbnNlVHlwZSA9IENETUluc3Rh
bmNlOjpMaWNlbnNlVHlwZTo6VGVtcG9yYXJ5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2U6CisgICAgICAgICAg
ICAvLyDihrMgInBlcnNpc3RlbnQtbGljZW5zZSIKKyAgICAgICAgICAgIC8vIExldCByZXF1ZXN0
ZWQgbGljZW5zZSB0eXBlIGJlIGEgcGVyc2lzdGFibGUgbGljZW5zZS4KKyAgICAgICAgICAgIHJl
cXVlc3RlZExpY2Vuc2VUeXBlID0gQ0RNSW5zdGFuY2U6OkxpY2Vuc2VUeXBlOjpQZXJzaXN0YWJs
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lZGlhS2V5U2Vzc2lvblR5cGU6
OlBlcnNpc3RlbnRVc2FnZVJlY29yZDoKKyAgICAgICAgICAgIC8vIOKGsyAicGVyc2lzdGVudC11
c2FnZS1yZWNvcmQiCisgICAgICAgICAgICAvLyAxLiBJbml0aWFsaXplIHRoaXMgb2JqZWN0J3Mg
cmVjb3JkIG9mIGtleSB1c2FnZSBhcyBmb2xsb3dzLgorICAgICAgICAgICAgLy8gICAgU2V0IHRo
ZSBsaXN0IG9mIGtleSBJRHMga25vd24gdG8gdGhlIHNlc3Npb24gdG8gYW4gZW1wdHkgbGlzdC4K
KyAgICAgICAgICAgIG1fcmVjb3JkT2ZLZXlVc2FnZS5jbGVhcigpOworCisgICAgICAgICAgICAv
LyAgICBTZXQgdGhlIGZpcnN0IGRlY3J5cHQgdGltZSB0byBudWxsLgorICAgICAgICAgICAgbV9m
aXJzdERlY3J5cHRUaW1lID0gMDsKKworICAgICAgICAgICAgLy8gICAgU2V0IHRoZSBsYXRlc3Qg
ZGVjcnlwdCB0aW1lIHRvIG51bGwuCisgICAgICAgICAgICBtX2xhdGVzdERlY3J5cHRUaW1lID0g
MDsKKworICAgICAgICAgICAgLy8gMi4gTGV0IHJlcXVlc3RlZCBsaWNlbnNlIHR5cGUgYmUgYSBu
b24tcGVyc2lzdGFibGUgbGljZW5zZSB0aGF0IHdpbGwKKyAgICAgICAgICAgIC8vICAgIHBlcnNp
c3QgYSByZWNvcmQgb2Yga2V5IHVzYWdlLgorICAgICAgICAgICAgcmVxdWVzdGVkTGljZW5zZVR5
cGUgPSBDRE1JbnN0YW5jZTo6TGljZW5zZVR5cGU6OlVzYWdlUmVjb3JkOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX2luc3RhbmNlLT5yZXF1ZXN0TGljZW5zZShy
ZXF1ZXN0ZWRMaWNlbnNlVHlwZSwgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSwgW3Ro
aXMsIHdlYWtUaGlzID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5j
ZTo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8gMTAuOS4z
LiBMZXQgc2Vzc2lvbiBpZCBiZSBhIHVuaXF1ZSBTZXNzaW9uIElEIHN0cmluZy4KKworICAgICAg
ICAgICAgTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZTsKKyAgICAgICAgICAgIGlmICgh
bmVlZHNJbmRpdmlkdWFsaXphdGlvbikgeworICAgICAgICAgICAgICAgIC8vIDEwLjkuNC4gSWYg
YSBsaWNlbnNlIHJlcXVlc3QgZm9yIHRoZSByZXF1ZXN0ZWQgbGljZW5zZSB0eXBlIGNhbiBiZSBn
ZW5lcmF0ZWQgYmFzZWQgb24gdGhlIHNhbml0aXplZCBpbml0IGRhdGE6CisgICAgICAgICAgICAg
ICAgLy8gMTAuOS40LjEuIExldCBtZXNzYWdlIGJlIGEgbGljZW5zZSByZXF1ZXN0IGZvciB0aGUg
cmVxdWVzdGVkIGxpY2Vuc2UgdHlwZSBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIHNhbml0aXplZCBp
bml0IGRhdGEgaW50ZXJwcmV0ZWQgcGVyIGluaXREYXRhVHlwZS4KKyAgICAgICAgICAgICAgICAv
LyAxMC45LjQuMi4gTGV0IG1lc3NhZ2UgdHlwZSBiZSAibGljZW5zZS1yZXF1ZXN0Ii4KKyAgICAg
ICAgICAgICAgICBtZXNzYWdlVHlwZSA9IE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1
ZXN0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAxMC45LjUuIE90
aGVyd2lzZToKKyAgICAgICAgICAgICAgICAvLyAxMC45LjUuMS4gTGV0IG1lc3NhZ2UgYmUgdGhl
IHJlcXVlc3QgdGhhdCBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYmVmb3JlIGEgbGljZW5zZSByZXF1
ZXN0IHJlcXVlc3QgZm9yIHRoZSByZXF1ZXN0ZWQgbGljZW5zZQorICAgICAgICAgICAgICAgIC8v
ICAgICAgICAgICB0eXBlIGNhbiBiZSBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIHNhbml0aXplZCBp
bml0IGRhdGEuCisgICAgICAgICAgICAgICAgLy8gMTAuOS41LjIuIExldCBtZXNzYWdlIHR5cGUg
cmVmbGVjdCB0aGUgdHlwZSBvZiBtZXNzYWdlLCBlaXRoZXIgImxpY2Vuc2UtcmVxdWVzdCIgb3Ig
ImluZGl2aWR1YWxpemF0aW9uLXJlcXVlc3QiLgorICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBl
ID0gTWVkaWFLZXlNZXNzYWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRpb25SZXF1ZXN0OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyAxMC4xMC4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUg
Zm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3Ro
aXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdl
KSwgbWVzc2FnZVR5cGUsIHNlc3Npb25JZCwgc3VjY2VlZGVkXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICAvLyAxMC4xMC4xLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWls
ZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMg
dGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCisgICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyAxMC4x
MC4yLiBTZXQgdGhlIHNlc3Npb25JZCBhdHRyaWJ1dGUgdG8gc2Vzc2lvbiBpZC4KKyAgICAgICAg
ICAgICAgICBtX3Nlc3Npb25JZCA9IHNlc3Npb25JZDsKKworICAgICAgICAgICAgICAgIC8vIDEw
LjkuMy4gTGV0IHRoaXMgb2JqZWN0J3MgY2FsbGFibGUgdmFsdWUgYmUgdHJ1ZS4KKyAgICAgICAg
ICAgICAgICBtX2NhbGxhYmxlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8vIDEwLjkuMy4g
UnVuIHRoZSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudCBhbGdvcml0aG0gb24gdGhlIHNlc3Npb24s
IHByb3ZpZGluZyBtZXNzYWdlIHR5cGUgYW5kIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgZW5x
dWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOworCisgICAgICAgICAgICAgICAgLy8g
MTAuOS4zLiBSZXNvbHZlIHByb21pc2UuCisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgLy8gMTEu
IFJldHVybiBwcm9taXNlLgogfQogCiB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBT
dHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKQpAQCAtMTE5LDYgKzI2NSwyMSBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdl
KE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVz
c2FnZSkKK3sKKyAgICAvLyA2LjQuMSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudAorICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3F1ZXVlLW1lc3NhZ2UKKyAgICAv
LyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gVGhlIGZvbGxv
d2luZyBzdGVwcyBhcmUgcnVuOgorICAgIC8vIDEuIExldCB0aGUgc2Vzc2lvbiBiZSB0aGUgc3Bl
Y2lmaWVkIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRv
IGNyZWF0ZSBhbiBldmVudCBuYW1lZCBtZXNzYWdlIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBp
cyBub3QgY2FuY2VsbGFibGUgdXNpbmcgdGhlIE1lZGlhS2V5TWVzc2FnZUV2ZW50CisgICAgLy8g
ICAgaW50ZXJmYWNlIHdpdGggaXRzIHR5cGUgYXR0cmlidXRlIHNldCB0byBtZXNzYWdlIGFuZCBp
dHMgaXNUcnVzdGVkIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0cnVlLCBhbmQgZGlzcGF0Y2gg
aXQgYXQgdGhlCisgICAgLy8gICAgc2Vzc2lvbi4KKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1l
ZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUobWVzc2FnZUV2ZW50TmFtZSgpLCB7bWVzc2FnZVR5
cGUsIG1lc3NhZ2UuY3JlYXRlQXJyYXlCdWZmZXIoKX0sIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7
CisgICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwor
fQorCiBib29sIE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggNTgyOGIwODA4Mjg2MTYz
NTU1MjRkODRjMDk1N2QwMzY1ZjIwYTc2Zi4uZWIzNmJlZTEyMjJjNDcyOTAwYTExMTAyNDA2YWZi
Mjg5MzU4NDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0zMyw5ICszMywxMyBAQAogI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAi
R2VuZXJpY0V2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5oIgog
I2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00NSw2ICs0OSw3IEBAIGNsYXNzIENETTsKIGNsYXNzIENETUluc3RhbmNlOwogY2xhc3MgTWVk
aWFLZXlTdGF0dXNNYXA7CiBjbGFzcyBNZWRpYUtleXM7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIE1lZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5
U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTU4LDcgKzYzLDcgQEAgcHVibGljOgogICAgIGRvdWJs
ZSBleHBpcmF0aW9uKCkgY29uc3Q7CiAgICAgUmVmPE1lZGlhS2V5U3RhdHVzTWFwPiBrZXlTdGF0
dXNlcygpIGNvbnN0OwogCi0gICAgdm9pZCBnZW5lcmF0ZVJlcXVlc3QoY29uc3QgU3RyaW5nJiwg
Y29uc3QgQnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBn
ZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgQnVmZmVyU291cmNlJiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgdXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJj
ZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgY2xvc2UoUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CkBAIC02Niw2ICs3MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBN
ZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhS2V5U2Vzc2lvblR5
cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5z
dGFuY2U+JiYpOworICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gTWVkaWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CkBAIC04OSw2ICs5
NSwxMiBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvblR5cGUgbV9zZXNzaW9uVHlwZTsK
ICAgICBSZWY8Q0RNPiBtX2ltcGxlbWVudGF0aW9uOwogICAgIFJlZjxDRE1JbnN0YW5jZT4gbV9p
bnN0YW5jZTsKKyAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7CisgICAgR2VuZXJp
Y1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7CisgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgZG91YmxlIG1fZmlyc3REZWNyeXB0VGltZSB7
IDAgfTsKKyAgICBkb3VibGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsKKyAgICBXZWFrUHRy
RmFjdG9yeTxNZWRpYUtleVNlc3Npb24+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggZjU1ZDc3NTZlNGYzM2QzZGE1MzExNmIwNDJkMGUz
YmQ4ZjBkMWUzMy4uZTFjYzc0MTA2NGYzZmQ1OTVhNTMzOGE3YzQzYzhiNWNmMzRiYWYxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCiAjaW5jbHVk
ZSAiTWVkaWFLZXlTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTAsMTQgKzkwLDE0IEBAIHZvaWQgTWVkaWFLZXlz
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmlj
YXRlLCBSZWY8CiAgICAgfQogCiAgICAgLy8gMy4gTGV0IGNlcnRpZmljYXRlIGJlIGEgY29weSBv
ZiB0aGUgY29udGVudHMgb2YgdGhlIHNlcnZlckNlcnRpZmljYXRlIHBhcmFtZXRlci4KLSAgICBh
dXRvIGNlcnRpZmljYXRlID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzZXJ2ZXJDZXJ0aWZpY2F0ZS5k
YXRhKCksIHNlcnZlckNlcnRpZmljYXRlLmxlbmd0aCgpKTsKKyAgICBhdXRvIGNlcnRpZmljYXRl
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VydmVyQ2VydGlmaWNhdGUuZGF0YSgpLCBzZXJ2ZXJD
ZXJ0aWZpY2F0ZS5sZW5ndGgoKSk7CiAKICAgICAvLyA0LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBw
cm9taXNlLgogICAgIC8vIDUuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgog
CiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIGNlcnRpZmljYXRlID0gV1RGTW92
ZShjZXJ0aWZpY2F0ZSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgLy8gNS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2Vz
cyBjZXJ0aWZpY2F0ZS4KLSAgICAgICAgaWYgKG1faW5zdGFuY2UtPnNldFNlcnZlckNlcnRpZmlj
YXRlKGNlcnRpZmljYXRlKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7CisgICAgICAgIGlmICht
X2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmljYXRlKSkgPT0g
Q0RNSW5zdGFuY2U6OkZhaWxlZCkgewogICAgICAgICAgICAgLy8gNS4yLiBJZiB0aGUgcHJlY2Vk
aW5nIHN0ZXAgZmFpbGVkLCByZXNvbHZlIHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24g
d2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KICAgICAgICAgICAgIHBy
b21pc2UtPnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMTMzNmZjZTNhOGNjNDU2YzZhODE0YmYzMzEwZmNhY2NhMzBmNGQyOC4uMzNjOTVhMmFlNDRm
YjdhOTAzMzcyOTZkNzdiYjMxMjM4MDBiODEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcxNyw2ICs1NzE3LDggQEAKIAkJ
Q0NDMkI1MTQxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTAxNUY2MTMwNjAwNDhDREQ2
IC8qIERldmljZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNDQzJCNTE1MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJC
NTExMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0ND
MkI1MTYxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RE
NiAvKiBEZXZpY2VDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQ0QwNjNGODIxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVn
aXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QwNjNGODAxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwICovOyB9Owor
CQlDRDA2M0Y4MzFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwNjNGODExRTIzRkE4OTAw
ODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLzsgfTsKIAkJQ0QwRUVFMEUxNDc0M0YzOTAw
M0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlv
RGVzdGluYXRpb25JT1MuY3BwICovOyB9OwogCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cubW0gKi87IH07CiAJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJD
b3JlRnVsbFNjcmVlbldpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVu
V2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEzNjQzLDYgKzEzNjQ1LDggQEAKIAkJQ0NDMkI1MTAxNUY2MTMwNjAwNDhDREQ2IC8qIERl
dmljZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0NDMkI1MTExNUY2MTMwNjAwNDhD
REQ2IC8qIERldmljZUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGV2aWNlQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZUNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QwNjNGODAxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRh
UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdERh
dGFSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMDYzRjgxMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluaXREYXRhUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QwRUVFMEExNDc0M0UzNDAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbklPUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyog
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjc3Myw2ICsyMjc3Nyw4IEBACiAJ
CQkJQ0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovLAogCQkJCUNEOUQwNTQyMUUx
RUZBMTIwMDNCNEM0RiAvKiBDRE1JbnN0YW5jZS5oICovLAogCQkJCUNERjRCNzI1MUUwM0MxNUIw
MEUyMzVBMiAvKiBDRE1Qcml2YXRlLmggKi8sCisJCQkJQ0QwNjNGODAxRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuY3BwICovLAorCQkJCUNEMDYzRjgxMUUyM0ZBODkwMDgxMkJF
MyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggKi8sCiAJCQkJMkQ5QkY3MkYxREJGREMwRjAwN0E3RDk5
IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLywKIAkJCQkyRDlCRjczMDFEQkZEQzBGMDA3
QTdEOTkgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLywKIAkJCQkyRDlCRjZGNTFEQkZCNzFG
MDA3QTdEOTkgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsICovLApAQCAtMjc4NjcsNiArMjc4
NzMsNyBAQAogCQkJCTdDRTU4RDUwMURENjlBMUUwMDEyODU1MiAvKiBTVkdOdW1iZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTUxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFy
c2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDA2M0Y4MzFFMjNGQTg5MDA4MTJC
RTMgLyogSW5pdERhdGFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzQTBFMzYxM0E3
RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRD
Njc4NEQxMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NDc2QzlFQjExREY2QTI5MDA1NTVCMDIgLyogU1ZHUGF0aEJ1aWxkZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzA4MjAsNiArMzA4MjcsNyBAQAogCQkJCUIyNzUzNTYzMEIwNTM4MTQwMDJD
RTY0RiAvKiBQYXRoQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4REQ0ODkwQjQ2MjlCMDAw
QzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDUw
MDJGQjFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEZBNkU1RTBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODBBMzhGRTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNH
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEE2NDZDMUQxOUZGODcwMEQwRTAwRiAvKiBQYXlt
ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKaW5kZXggZTAyODJiYmZjZDU3MzA1ZWE0OTZmOWQ3ZGVjYmE2NmRkZDcxZTE4
ZC4uNTk2NTgzYzIwNDdhMzZlY2FlMGNlMTU2Zjg2N2Y0ZDkwZmJmMDcxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTI4LDcgKzI4LDEwIEBACiAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5o
IgorI2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNiArNjEsMjQgQEAgYm9vbCBN
b2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
CiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtp
dC5tb2NrIik7CiB9CiAKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtleXMpCit7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92ZShrZXlzKSk7
CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiB2YWx1ZSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgZm9yIChhdXRvJiBr
ZXkgOiBrZXlzKQorICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShrZXkpKTsKK30KKwordm9p
ZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYg
dHlwZXMpCit7CisgICAgbV9zdXBwb3J0ZWREYXRhVHlwZXMuY2xlYXIoKTsKKyAgICBmb3IgKGF1
dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgbV9zdXBwb3J0ZWREYXRhVHlwZXMuYXBwZW5kKHR5
cGUpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNy
ZWF0ZUNETShDRE0mKQogewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE0+KG1f
d2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpKTsKQEAgLTY5LDI3ICs5MCwyNyBAQCBNb2Nr
Q0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7CiB9CiAKLWJv
b2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5
cGUpCitib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCiAgICAgICAgIHJl
dHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlw
ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzQ29uZmln
dXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKQorYm9vbCBNb2NrQ0RN
OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBJbXBsZW1lbnQ7CiAgICAgcmV0dXJuIHRydWU7CiAK
IH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25z
KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3Ry
aWN0aW9ucyYpCitib29sIE1vY2tDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmlj
dGlvbnMoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlz
UmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBJbXBsZW1lbnQ7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25m
aWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKQorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZhY3Rv
cnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkuY29udGFpbnMoc2Vzc2lv
blR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OCwyOCArMTE5LDI4IEBAIGJvb2wg
TW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vz
c2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6
c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykKK2Jvb2wgTW9ja0NE
TTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29uc3QKIHsK
ICAgICBpZiAobV9mYWN0b3J5KQogICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRS
b2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1NZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFL
ZXlzUmVzdHJpY3Rpb25zJikKK01lZGlhS2V5c1JlcXVpcmVtZW50IE1vY2tDRE06OmRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdAogewogICAgIGlmIChtX2Zh
Y3RvcnkpCiAgICAgICAgIHJldHVybiBtX2ZhY3RvcnktPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNS
ZXF1aXJlbWVudCgpOwogICAgIHJldHVybiBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWw7
CiB9CiAKLU1lZGlhS2V5c1JlcXVpcmVtZW50IE1vY2tDRE06OnBlcnNpc3RlbnRTdGF0ZVJlcXVp
cmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5
c1Jlc3RyaWN0aW9ucyYpCitNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpwZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCiAg
ICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KCk7CiAg
ICAgcmV0dXJuIE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbDsKIH0KIAotYm9vbCBNb2Nr
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpCitib29sIE1vY2tDRE06OmRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBJbXBsZW1l
bnQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDcsNiArMTY4LDE1IEBAIGJvb2wgTW9ja0NETTo6
c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3Rv
cnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXREYXRhKSBjb25zdAoreworICAgIGlmICghc3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERh
dGFUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVU5VU0VEX1BBUkFNKGluaXRE
YXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogTW9ja0NETUluc3RhbmNlOjpNb2NrQ0RNSW5z
dGFuY2UoV2Vha1B0cjxNb2NrQ0RNPiBjZG0pCiAgICAgOiBtX2NkbShjZG0pCiB7CkBAIC0xODgs
MTUgKzIxOCw0NCBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIE1vY2tDRE1JbnN0YW5jZTo6
c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIHBlcnNpcwogICAgIHJldHVybiBTdWNjZWVk
ZWQ7CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgTW9ja0NETUluc3RhbmNlOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShBcnJheUJ1ZmZlciYgY2VydGlmaWNhdGUpCitDRE1JbnN0YW5jZTo6
U3VjY2Vzc1ZhbHVlIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSkKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRl
U3RyaW5nVmlldyhzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KGNlcnRpZmljYXRlLmRhdGEoKSks
IGNlcnRpZmljYXRlLmJ5dGVMZW5ndGgoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0
cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNlcnRpZmljYXRlLT5kYXRh
KCkpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikpCiAgICAgICAgIHJldHVybiBTdWNj
ZWVkZWQ7CiAgICAgcmV0dXJuIEZhaWxlZDsKIH0KIAordm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrIGNhbGxiYWNrKQoreworICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBt
X2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIWZhY3RvcnkpIHsKKyAgICAgICAg
Y2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlBdG9tLCBmYWxzZSwgU3VjY2Vz
c1ZhbHVlOjpGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKChsaWNl
bnNlVHlwZSA9PSBMaWNlbnNlVHlwZTo6VGVtcG9yYXJ5ICYmICFmYWN0b3J5LT5zdXBwb3J0ZWRT
ZXNzaW9uVHlwZXMoKS5jb250YWlucyhNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkpKQor
ICAgICAgICB8fCAobGljZW5zZVR5cGUgPT0gTGljZW5zZVR5cGU6OlBlcnNpc3RhYmxlICYmICFm
YWN0b3J5LT5zdXBwb3J0ZWRTZXNzaW9uVHlwZXMoKS5jb250YWlucyhNZWRpYUtleVNlc3Npb25U
eXBlOjpQZXJzaXN0ZW50TGljZW5zZSkpCisgICAgICAgIHx8IChsaWNlbnNlVHlwZSA9PSBMaWNl
bnNlVHlwZTo6VXNhZ2VSZWNvcmQgJiYgIWZhY3RvcnktPnN1cHBvcnRlZFNlc3Npb25UeXBlcygp
LmNvbnRhaW5zKE1lZGlhS2V5U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZCkpCisg
ICAgICAgIHx8ICFmYWN0b3J5LT5zdXBwb3J0ZWREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0
YVR5cGUpKSB7CisgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5
U3RyaW5nKCksIGZhbHNlLCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIGtleUlEcyA9IEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLmV4
dHJhY3RLZXlJRHMoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgaWYgKGtleUlEcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlT
dHJpbmcoKSwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFN0cmluZyBzZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCk7CisgICAgZmFjdG9yeS0+YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChzZXNzaW9uSUQsIFdURk1v
dmUoa2V5SURzKSk7CisKKyAgICBDU3RyaW5nIGxpY2Vuc2UgeyAibGljZW5zZSIgfTsKKyAgICBj
YWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5n
dGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKK30KKwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAz
MTkyMjk0MDdkYzAwY2Q4ZDgzYjhmNmM4MzlmYzg1ZTMyOTc4YWQ2Li5mNzYxODBjY2U1M2JhMWI3
MzM3ZmM1NjJmMWU1OGQyNWZlMGZjMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNp
bmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzUmVxdWlyZW1lbnQuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00Miw4
ICs0Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1vY2tDRE1GYWN0b3J5PiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tDRE1GYWN0b3J5KTsgfQogICAgIH5Nb2NrQ0RN
RmFjdG9yeSgpOwogCi0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZERhdGFUeXBl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkRGF0YVR5cGVzOyB9Ci0gICAgdm9pZCBzZXRT
dXBwb3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykgeyBtX3N1cHBvcnRlZERh
dGFUeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CisgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmlu
Zz4mIHN1cHBvcnRlZERhdGFUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkRGF0YVR5
cGVzOyB9CisgICAgdm9pZCBzZXRTdXBwb3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJik7
CiAKICAgICBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mIHN1cHBvcnRlZFNlc3Np
b25UeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzOyB9CiAgICAg
dm9pZCBzZXRTdXBwb3J0ZWRTZXNzaW9uVHlwZXMoVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+
JiYgdHlwZXMpIHsgbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXMgPSBXVEZNb3ZlKHR5cGVzKTsgfQpA
QCAtNjgsNiArNjksMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCB1bnJlZ2lzdGVyKCk7CiAKKyAg
ICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gbV9zZXNz
aW9ucy5jb250YWlucyhpZCk7IH0KKyAgICB2b2lkIHJlbW92ZVNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShpZCk7IH0KKyAgICB2b2lkIGFkZEtleXNU
b1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiYmKTsKKwogcHJpdmF0ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDRE1Qcml2YXRlPiBjcmVhdGVDRE0oQ0RNJikgZmluYWw7CkBAIC03NSw3ICs4MCw3IEBA
IHByaXZhdGU6CiAKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBtX2Rpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudCB7IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbCB9OwogICAg
IE1lZGlhS2V5c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRp
YUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3N1cHBv
cnRlZERhdGFUeXBlczsKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBtX3N1cHBvcnRlZERhdGFU
eXBlczsKICAgICBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gbV9zdXBwb3J0ZWRTZXNzaW9u
VHlwZXM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwogICAgIGJv
b2wgbV9yZWdpc3RlcmVkIHsgdHJ1ZSB9OwpAQCAtODMsNiArODgsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAgICBib29sIG1f
c3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKICAgICBXZWFrUHRyRmFjdG9yeTxNb2NrQ0RNRmFj
dG9yeT4gbV93ZWFrUHRyRmFjdG9yeTsKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMg
Q0RNUHJpdmF0ZSB7CkBAIC05NCwxOCArMTAwLDE5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIE1vY2tDRE1JbnN0YW5jZTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAgYm9vbCBz
dXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGZpbmFsOwotICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lv
blR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKLSAgICBi
b29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBNZWRpYUtl
eXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikg
ZmluYWw7Ci0gICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1l
bnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVz
dHJpY3Rpb25zJikgZmluYWw7Ci0gICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5p
cXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbWljU3Ry
aW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBw
b3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vz
c2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKKyAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWly
ZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlz
UmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVy
c2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0
aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFj
dG9yeTsKICAgICBXZWFrUHRyRmFjdG9yeTxNb2NrQ0RNPiBtX3dlYWtQdHJGYWN0b3J5OwpAQCAt
MTE5LDcgKzEyNiw4IEBAIHByaXZhdGU6CiAgICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsK
ICAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkg
ZmluYWw7CiAgICAgU3VjY2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkg
ZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKEpTQzo6QXJyYXlC
dWZmZXImKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjaykgZmluYWw7CiAKICAgICBXZWFrUHRyPE1vY2tD
RE0+IG1fY2RtOwogICAgIGJvb2wgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCB7IHRy
dWUgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA2YjI3ZDZhZmE0ZjE5Mjk3MWNlNTM1NTlhOGM1ZmM5ZDg1MzJmODI2Li5j
YjRiODE1ZDRjNzlkNjc2Y2RhY2FkOWVlYzEwNzM0YjAyOGIzOTRlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMTctMDEtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIE1lZGlhS2V5cy5nZW5lcmF0ZVJlcXVlc3QoKS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njg4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IFhhYmllciBSb2RyaWd1ZXotQ2FsdmFyLgorCisgICAgICAgIEFkZCBz
aG91bGRSZXNvbHZlKCkgYW5kIHNob3VsZFJlamVjdCgpIHRvIHZpZGVvLXRlc3QuanMgYW5kIHVw
ZGF0ZSBleGlzdGluZworICAgICAgICB0ZXN0cyB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4K
KworICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5cy1jcmVhdGVT
ZXNzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL21vY2stTWVkaWFLZXlzLWNyZWF0ZVNlc3Npb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
bWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlzLXNldFNlcnZlckNlcnRpZmljYXRl
Lmh0bWw6CisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNz
aW9uLWdlbmVyYXRlUmVxdWVzdC5odG1sOgorICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRp
YS9tb2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWw6CisgICAgICAgICogbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL21vY2stbmF2aWdhdG9yLXJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1s
OgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXRlc3QuanM6CisgICAgICAgIChzaG91bGRSZXNvbHZl
KToKKyAgICAgICAgKHNob3VsZFJlamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMTctMDEtMDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRp
YUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21l
ZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi1nZW5lcmF0ZVJlcXVlc3Qt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzNTYwY2FkNzQ0NzI0N2ZjOWFlNTFlYmViNzY4MzJi
NmYxNWYyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQxIEBACitSVU4oaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2Uo
KSkKK1JVTihtb2NrID0gaW50ZXJuYWxzLnJlZ2lzdGVyTW9ja0NETSgpKQorUlVOKG1vY2suc3Vw
cG9ydGVkRGF0YVR5cGVzID0gWyJrZXlpZHMiXSkKK1JVTihjYXBhYmlsaXRpZXMuaW5pdERhdGFU
eXBlcyA9IFsia2V5aWRzIl0pCitSVU4oY2FwYWJpbGl0aWVzLnZpZGVvQ2FwYWJpbGl0aWVzID0g
W3sgY29udGVudFR5cGU6ICd2aWRlby9tb2NrOyBjb2RlY3M9Im1vY2siJyB9XSApCitSVU4ocHJv
bWlzZSA9IG5hdmlnYXRvci5yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoIm9yZy53ZWJraXQu
bW9jayIsIFtjYXBhYmlsaXRpZXNdKSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKKworUlVOKHByb21p
c2UgPSBtZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKSkKK1Byb21pc2UgcmVz
b2x2ZWQgT0sKKworVXNpbmcgYW4gaW52YWxpZCBpbml0RGF0YVR5cGUgc3RyaW5nIHNob3VsZCBy
ZWplY3QuCitSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRl
bXBvcmFyeSIpKQorRVhQRUNURUQgKHR5cGVvZiBtZWRpYUtleVNlc3Npb24gPT0gJ29iamVjdCcp
IE9LCitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImludmFs
aWQiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoImludmFsaWQiKSkpCitQcm9taXNlIHJlamVjdGVkIGNv
cnJlY3RseSBPSworCitSZS11c2luZyBhIGZhaWxlZCBtZWRpYUtleVNlc3Npb24gc2hvdWxkIHJl
amVjdC4KK1JVTihraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIgXSB9
KSkKK1JVTihwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRz
Iiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMpKSkKK1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5
IE9LCisKK1VzaW5nIGEgbmV3IG1lZGlhS2V5U2Vzc2lvbiBzaG91bGQgcmVzb2x2ZS4KK1JVTihr
aWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIgXSB9KSkKK1JVTihtZWRp
YUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IikpCitSVU4o
cHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmlu
Z1RvVUludDhBcnJheShraWRzKSkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKK1VzaW5nIGludmFs
aWQgaW5pdERhdGEgc2hvdWxkIHJlamVjdC4KK1JVTihraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBp
bnZhbGlkOiAiaW52YWxpZCIgfSkpCitSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNy
ZWF0ZVNlc3Npb24oInRlbXBvcmFyeSIpKQorUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24u
Z2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykpKQorUHJv
bWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKKworVXNpbmcgaW5pdERhdGEgd2l0aCBleHRyYW5l
b3VzIGluZm9ybWF0aW9uIHNob3VsZCByZXNvbHZlLgorUlVOKGtpZHMgPSBKU09OLnN0cmluZ2lm
eSh7IGtpZHM6IFsgIk1USXpORFU9Il0sIGludmFsaWQ6ICJpbnZhbGlkIiB9KSkKK1JVTihtZWRp
YUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IikpCitSVU4o
cHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmlu
Z1RvVUludDhBcnJheShraWRzKSkpCitQcm9taXNlIHJlc29sdmVkIE9LCitFTkQgT0YgVEVTVAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRp
YUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24tZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzc3ZmNhNGQ3ZGZmZTczZWUwMmU4YWYzYjcwMzlmYTZkMjk3ZjRmYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlh
S2V5U2Vzc2lvbi1nZW5lcmF0ZVJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3Qu
anM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZh
ciBtb2NrOworICAgIHZhciBwcm9taXNlOworICAgIHZhciBtZWRpYUtleVN5c3RlbUFjY2VzczsK
KyAgICB2YXIgbWVkaWFLZXlzOworICAgIHZhciBtZWRpYUtleVNlc3Npb247CisgICAgdmFyIGNh
cGFiaWxpdGllcyA9IHt9OworICAgIHZhciBraWRzOworCisgICAgZnVuY3Rpb24gZG9UZXN0KCkK
KyAgICB7CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgZmFp
bFRlc3QoIkludGVybmFscyBpcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBydW4oJ2ludGVybmFscy5pbml0aWFsaXpl
TW9ja01lZGlhU291cmNlKCknKTsKKyAgICAgICAgcnVuKCdtb2NrID0gaW50ZXJuYWxzLnJlZ2lz
dGVyTW9ja0NETSgpJyk7CisgICAgICAgIHJ1bignbW9jay5zdXBwb3J0ZWREYXRhVHlwZXMgPSBb
ImtleWlkcyJdJyk7CisgICAgICAgIHJ1bignY2FwYWJpbGl0aWVzLmluaXREYXRhVHlwZXMgPSBb
ImtleWlkcyJdJyk7CisgICAgICAgIHJ1bihgY2FwYWJpbGl0aWVzLnZpZGVvQ2FwYWJpbGl0aWVz
ID0gW3sgY29udGVudFR5cGU6ICd2aWRlby9tb2NrOyBjb2RlY3M9Im1vY2siJyB9XSBgKTsKKyAg
ICAgICAgcnVuKCdwcm9taXNlID0gbmF2aWdhdG9yLnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vz
cygib3JnLndlYmtpdC5tb2NrIiwgW2NhcGFiaWxpdGllc10pJyk7CisgICAgICAgIHNob3VsZFJl
c29sdmUocHJvbWlzZSkudGhlbihnb3RNZWRpYUtleVN5c3RlbUFjY2VzcywgZmFpbFRlc3QpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIG5leHQoKSB7CisgICAgICAgIGlmICghdGVzdHMubGVuZ3Ro
KSB7CisgICAgICAgICAgICBtb2NrLnVucmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIGVuZFRlc3Qo
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG5leHRUZXN0
ID0gdGVzdHMuc2hpZnQoKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKKyAgICAgICAgbmV4
dFRlc3QoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnb3RNZWRpYUtleVN5c3RlbUFjY2Vzcyhy
ZXN1bHQpIHsKKyAgICAgICAgbWVkaWFLZXlTeXN0ZW1BY2Nlc3MgPSByZXN1bHQ7CisgICAgICAg
IG5leHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnb3RNZWRpYUtleXMocmVzdWx0KSB7Cisg
ICAgICAgIG1lZGlhS2V5cyA9IHJlc3VsdDsKKyAgICAgICAgbmV4dCgpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHN0cmluZ1RvVUludDhBcnJheShzdHIpCisgICAgeworICAgICAgIHZhciBhcnJh
eSA9IG5ldyBVaW50OEFycmF5KHN0ci5sZW5ndGgpOworICAgICAgIGZvciAodmFyIGk9MDsgaTxz
dHIubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBhcnJheVtpXSA9IHN0ci5jaGFyQ29kZUF0KGkp
OworICAgICAgIHJldHVybiBhcnJheTsKKyAgICB9CisKKyAgICB0ZXN0cyA9IFsKKyAgICAgICAg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcmVhdGVNZWRpYUtleXMoKScpOworICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9t
aXNlKS50aGVuKGdvdE1lZGlhS2V5cywgZmFpbFRlc3QpOworICAgICAgICB9LAorCisgICAgICAg
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdVc2luZyBhbiBpbnZhbGlk
IGluaXREYXRhVHlwZSBzdHJpbmcgc2hvdWxkIHJlamVjdC4nKQorICAgICAgICAgICAgcnVuKCdt
ZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IiknKTsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9mIG1lZGlhS2V5U2Vzc2lvbicsICdvYmpl
Y3QnKQorICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRl
UmVxdWVzdCgiaW52YWxpZCIsIHN0cmluZ1RvVUludDhBcnJheSgiaW52YWxpZCIpKScpOworICAg
ICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpLnRoZW4obmV4dCwgbmV4dCk7CisgICAgICAg
IH0sCisKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Jl
LXVzaW5nIGEgZmFpbGVkIG1lZGlhS2V5U2Vzc2lvbiBzaG91bGQgcmVqZWN0LicpCisgICAgICAg
ICAgICBydW4oJ2tpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtpZHM6IFsgIk1USXpORFU9IiBdIH0p
Jyk7CisgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVS
ZXF1ZXN0KCJrZXlpZHMiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykpJyk7CisgICAgICAgICAg
ICBzaG91bGRSZWplY3QocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVXNpbmcgYSBu
ZXcgbWVkaWFLZXlTZXNzaW9uIHNob3VsZCByZXNvbHZlLicpCisgICAgICAgICAgICBydW4oJ2tp
ZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtpZHM6IFsgIk1USXpORFU9IiBdIH0pJyk7CisgICAgICAg
ICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1w
b3JhcnkiKScpOworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdl
bmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMpKScpOworICAg
ICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOworICAgICAg
ICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdV
c2luZyBpbnZhbGlkIGluaXREYXRhIHNob3VsZCByZWplY3QuJykKKyAgICAgICAgICAgIHJ1bign
a2lkcyA9IEpTT04uc3RyaW5naWZ5KHsgaW52YWxpZDogImludmFsaWQiIH0pJyk7CisgICAgICAg
ICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1w
b3JhcnkiKScpOworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdl
bmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMpKScpOworICAg
ICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpLnRoZW4obmV4dCwgbmV4dCk7CisgICAgICAg
IH0sCisKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Vz
aW5nIGluaXREYXRhIHdpdGggZXh0cmFuZW91cyBpbmZvcm1hdGlvbiBzaG91bGQgcmVzb2x2ZS4n
KQorICAgICAgICAgICAgcnVuKCdraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6
TkRVPSJdLCBpbnZhbGlkOiAiaW52YWxpZCIgfSknKTsKKyAgICAgICAgICAgIHJ1bignbWVkaWFL
ZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRlbXBvcmFyeSIpJyk7CisgICAg
ICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJr
ZXlpZHMiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykpJyk7CisgICAgICAgICAgICBzaG91bGRS
ZXNvbHZlKHByb21pc2UpLnRoZW4obmV4dCwgbmV4dCk7CisgICAgICAgIH0sCisgICAgXTsKKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21v
Y2stTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRl
ZC1tZWRpYS9tb2NrLU1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwKaW5kZXggMzQ0MjJkYjg5MTQy
Njk0MjhkOWZmMGVjODAyNjE2MWQyZjNiNjY3Yy4uNDc5NmYxOGMyMDFmMTc0NmQ3ZGY0MzI3NDJk
OTc1Yzc1ZWU0YmE3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL21vY2stTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1sCkBAIC0zNCwy
OCArMzQsNyBAQAogICAgICAgICBuZXh0VGVzdCgpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHNo
b3VsZFJlc29sdmUocHJvbWlzZSkgewotICAgICAgICBwcm9taXNlLnRoZW4obWVkaWFLZXlTeXN0
ZW1BY2Nlc3MgPT4gewotICAgICAgICAgICAgbG9nUmVzdWx0KFN1Y2Nlc3MsICdQcm9taXNlIHJl
c29sdmVkJyk7Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0sICgpID0+IHsKLSAgICAg
ICAgICAgIGxvZ1Jlc3VsdChGYWlsZWQsICdQcm9taXNlIHJlamVjdGVkJyk7Ci0gICAgICAgICAg
ICBuZXh0KCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNob3VsZFJlamVj
dChwcm9taXNlKSB7Ci0gICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICBs
b2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZXNvbHZlZCBpbmNvcnJlY3RseScpOwotICAgICAg
ICAgICAgbmV4dCgpOwotICAgICAgICB9LCBleGNlcHRpb25Db2RlID0+IHsKLSAgICAgICAgICAg
IGxvZ1Jlc3VsdChTdWNjZXNzLCAnUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHknKTsKLSAgICAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gZ290TWVk
aWFLZXlTeXN0ZW1BY2Nlc3MocmVzdWx0KSB7Ci0gICAgICAgIGxvZ1Jlc3VsdChTdWNjZXNzLCAn
UHJvbWlzZSByZXNvbHZlZCcpOwogICAgICAgICBtZWRpYUtleVN5c3RlbUFjY2VzcyA9IHJlc3Vs
dDsKICAgICAgICAgbmV4dCgpOwogICAgIH0KQEAgLTY1LDU0ICs0NCw1NCBAQAogICAgICAgICAg
ICAgcnVuKCdjYXBhYmlsaXRpZXMuaW5pdERhdGFUeXBlcyA9IFsibW9jayJdJyk7CiAgICAgICAg
ICAgICBydW4oYGNhcGFiaWxpdGllcy52aWRlb0NhcGFiaWxpdGllcyA9IFt7IGNvbnRlbnRUeXBl
OiAndmlkZW8vbW9jazsgY29kZWNzPSJtb2NrIicgfV0gYCk7CiAgICAgICAgICAgICBydW4oJ3By
b21pc2UgPSBuYXZpZ2F0b3IucmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKCJvcmcud2Via2l0
Lm1vY2siLCBbY2FwYWJpbGl0aWVzXSknKTsKLSAgICAgICAgICAgIHByb21pc2UudGhlbihnb3RN
ZWRpYUtleVN5c3RlbUFjY2VzcykuY2F0Y2goZmFpbFRlc3QpOworICAgICAgICAgICAgc2hvdWxk
UmVzb2x2ZShwcm9taXNlKS50aGVuKGdvdE1lZGlhS2V5U3lzdGVtQWNjZXNzLCBmYWlsVGVzdCk7
CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBydW4oJ3By
b21pc2UgPSBtZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRpYUtleXMoKScpOwotICAgICAg
ICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKTsKKyAgICAgICAgICAgIHNob3VsZFJlc29sdmUo
cHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgIHJ1bignbW9jay5jYW5DcmVhdGVJbnN0YW5jZXMgPSBmYWxzZScp
OwogICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRl
TWVkaWFLZXlzKCknKTsKLSAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKTsKKyAgICAg
ICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOwogICAgICAgICB9
LAogCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcnVuKCdtb2NrLmNhbkNyZWF0
ZUluc3RhbmNlcyA9IHRydWUnKTsKICAgICAgICAgICAgIHJ1bignY2FwYWJpbGl0aWVzLmRpc3Rp
bmN0aXZlSWRlbnRpZmllciA9ICJub3QtYWxsb3dlZCInKTsKICAgICAgICAgICAgIHJ1bigncHJv
bWlzZSA9IG5hdmlnYXRvci5yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoIm9yZy53ZWJraXQu
bW9jayIsIFtjYXBhYmlsaXRpZXNdKScpOwotICAgICAgICAgICAgcHJvbWlzZS50aGVuKGdvdE1l
ZGlhS2V5U3lzdGVtQWNjZXNzKS5jYXRjaChmYWlsVGVzdCk7CisgICAgICAgICAgICBzaG91bGRS
ZXNvbHZlKHByb21pc2UpLnRoZW4oZ290TWVkaWFLZXlTeXN0ZW1BY2Nlc3MsIGZhaWxUZXN0KTsK
ICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJ1bigncHJv
bWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5cygpJyk7Ci0gICAgICAg
ICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpOworICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShw
cm9taXNlKS50aGVuKG5leHQsIG5leHQpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgcnVuKCdtb2NrLmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJl
bWVudCA9ICJyZXF1aXJlZCInKTsKICAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5
U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5cygpJyk7Ci0gICAgICAgICAgICBzaG91bGRSZWpl
Y3QocHJvbWlzZSk7CisgICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSkudGhlbihuZXh0
LCBuZXh0KTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
IHJ1bignbW9jay5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQgPSAib3B0aW9uYWwi
Jyk7CiAgICAgICAgICAgICBydW4oJ2NhcGFiaWxpdGllcy5wZXJzaXN0ZW50U3RhdGUgPSAibm90
LWFsbG93ZWQiJyk7CiAgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBuYXZpZ2F0b3IucmVxdWVz
dE1lZGlhS2V5U3lzdGVtQWNjZXNzKCJvcmcud2Via2l0Lm1vY2siLCBbY2FwYWJpbGl0aWVzXSkn
KTsKLSAgICAgICAgICAgIHByb21pc2UudGhlbihnb3RNZWRpYUtleVN5c3RlbUFjY2VzcykuY2F0
Y2goZmFpbFRlc3QpOworICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKGdv
dE1lZGlhS2V5U3lzdGVtQWNjZXNzLCBmYWlsVGVzdCk7CiAgICAgICAgIH0sCiAKICAgICAgICAg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcmVhdGVNZWRpYUtleXMoKScpOwotICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9t
aXNlKTsKKyAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0
KTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJ1bign
bW9jay5wZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCA9ICJyZXF1aXJlZCInKTsKICAgICAgICAg
ICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5cygp
Jyk7Ci0gICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSk7CisgICAgICAgICAgICBzaG91
bGRSZWplY3QocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsKICAgICAgICAgfSwKICAgICBdOwog
ICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL21vY2stTWVkaWFLZXlzLWNyZWF0ZVNlc3Npb24uaHRtbCBiL0xheW91dFRlc3RzL21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5cy1jcmVhdGVTZXNzaW9uLmh0bWwKaW5kZXgg
N2ZiOGEzMDI4M2Y5MGQ4OGYzOWMzYWE2MDk3NGM0ZDQ1ZmExYzM3MC4uYTVmZWIyOTkzN2Y5NjVh
NGZkNjRhNWE3ODhmYWMwOWRlYTk4Y2FiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlzLWNyZWF0ZVNlc3Npb24uaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleXMtY3JlYXRlU2Vz
c2lvbi5odG1sCkBAIC0yMyw3ICsyMyw3IEBACiAgICAgICAgIHJ1bignY2FwYWJpbGl0aWVzLmlu
aXREYXRhVHlwZXMgPSBbIm1vY2siXScpOwogICAgICAgICBydW4oYGNhcGFiaWxpdGllcy52aWRl
b0NhcGFiaWxpdGllcyA9IFt7IGNvbnRlbnRUeXBlOiAndmlkZW8vbW9jazsgY29kZWNzPSJtb2Nr
IicgfV0gYCk7CiAgICAgICAgIHJ1bigncHJvbWlzZSA9IG5hdmlnYXRvci5yZXF1ZXN0TWVkaWFL
ZXlTeXN0ZW1BY2Nlc3MoIm9yZy53ZWJraXQubW9jayIsIFtjYXBhYmlsaXRpZXNdKScpOwotICAg
ICAgICBwcm9taXNlLnRoZW4oZ290TWVkaWFLZXlTeXN0ZW1BY2Nlc3MpLmNhdGNoKGZhaWxUZXN0
KTsKKyAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKGdvdE1lZGlhS2V5U3lzdGVt
QWNjZXNzLCBmYWlsVGVzdCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gbmV4dCgpIHsKQEAgLTM4
LDM0ICszOCwxMiBAQAogICAgICAgICBuZXh0VGVzdCgpOwogICAgIH0KIAotICAgIGZ1bmN0aW9u
IHNob3VsZFJlc29sdmUocHJvbWlzZSkgewotICAgICAgICBwcm9taXNlLnRoZW4obWVkaWFLZXlT
eXN0ZW1BY2Nlc3MgPT4gewotICAgICAgICAgICAgbG9nUmVzdWx0KFN1Y2Nlc3MsICdQcm9taXNl
IHJlc29sdmVkJyk7Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0sICgpID0+IHsKLSAg
ICAgICAgICAgIGxvZ1Jlc3VsdChGYWlsZWQsICdQcm9taXNlIHJlamVjdGVkJyk7Ci0gICAgICAg
ICAgICBuZXh0KCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNob3VsZFJl
amVjdChwcm9taXNlKSB7Ci0gICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICAgICAg
ICBsb2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZXNvbHZlZCBpbmNvcnJlY3RseScpOwotICAg
ICAgICAgICAgbmV4dCgpOwotICAgICAgICB9LCBleGNlcHRpb25Db2RlID0+IHsKLSAgICAgICAg
ICAgIGxvZ1Jlc3VsdChTdWNjZXNzLCAnUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHknKTsKLSAg
ICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gZ290
TWVkaWFLZXlTeXN0ZW1BY2Nlc3MocmVzdWx0KSB7Ci0gICAgICAgIGxvZ1Jlc3VsdChTdWNjZXNz
LCAnUHJvbWlzZSByZXNvbHZlZCcpOwogICAgICAgICBtZWRpYUtleVN5c3RlbUFjY2VzcyA9IHJl
c3VsdDsKICAgICAgICAgbmV4dCgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGdvdE1lZGlhS2V5
cyhyZXN1bHQpIHsKLSAgICAgICAgbG9nUmVzdWx0KFN1Y2Nlc3MsICdQcm9taXNlIHJlc29sdmVk
Jyk7CiAgICAgICAgIG1lZGlhS2V5cyA9IHJlc3VsdDsKICAgICAgICAgbmV4dCgpOwogICAgIH0K
QEAgLTgxLDcgKzU5LDcgQEAKICAgICB0ZXN0cyA9IFsKICAgICAgICAgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVN5c3RlbUFjY2Vzcy5jcmVhdGVNZWRp
YUtleXMoKScpOwotICAgICAgICAgICAgcHJvbWlzZS50aGVuKGdvdE1lZGlhS2V5cykuY2F0Y2go
ZmFpbFRlc3QpOworICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKGdvdE1l
ZGlhS2V5cywgZmFpbFRlc3QpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKCkgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFL
ZXlzLXNldFNlcnZlckNlcnRpZmljYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEvbW9jay1NZWRpYUtleXMtc2V0U2VydmVyQ2VydGlmaWNhdGUuaHRtbAppbmRleCBh
NmFhMzFhYmYyMzZhOWEwMjMwMDYwOTkyZjE4ODFkMmZlOWQyMmY1Li4zYzY2YmFhZTk1YjU3MGMx
N2JmM2I4ZWNhMjMzNzA1OWVkYzJiNzRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleXMtc2V0U2VydmVyQ2VydGlmaWNhdGUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleXMtc2V0
U2VydmVyQ2VydGlmaWNhdGUuaHRtbApAQCAtMjIsNyArMjIsNyBAQAogICAgICAgICBydW4oJ2Nh
cGFiaWxpdGllcy5pbml0RGF0YVR5cGVzID0gWyJtb2NrIl0nKTsKICAgICAgICAgcnVuKGBjYXBh
YmlsaXRpZXMudmlkZW9DYXBhYmlsaXRpZXMgPSBbeyBjb250ZW50VHlwZTogJ3ZpZGVvL21vY2s7
IGNvZGVjcz0ibW9jayInIH1dIGApOwogICAgICAgICBydW4oJ3Byb21pc2UgPSBuYXZpZ2F0b3Iu
cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKCJvcmcud2Via2l0Lm1vY2siLCBbY2FwYWJpbGl0
aWVzXSknKTsKLSAgICAgICAgcHJvbWlzZS50aGVuKGdvdE1lZGlhS2V5U3lzdGVtQWNjZXNzKS5j
YXRjaChmYWlsVGVzdCk7CisgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbihnb3RN
ZWRpYUtleVN5c3RlbUFjY2VzcywgZmFpbFRlc3QpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIG5l
eHQoKSB7CkBAIC0zNywzNCArMzcsMTIgQEAKICAgICAgICAgbmV4dFRlc3QoKTsKICAgICB9CiAK
LSAgICBmdW5jdGlvbiBzaG91bGRSZXNvbHZlKHByb21pc2UpIHsKLSAgICAgICAgcHJvbWlzZS50
aGVuKG1lZGlhS2V5U3lzdGVtQWNjZXNzID0+IHsKLSAgICAgICAgICAgIGxvZ1Jlc3VsdChTdWNj
ZXNzLCAnUHJvbWlzZSByZXNvbHZlZCcpOwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9
LCAoKSA9PiB7Ci0gICAgICAgICAgICBsb2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZWplY3Rl
ZCcpOwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBzaG91bGRSZWplY3QocHJvbWlzZSkgewotICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4g
ewotICAgICAgICAgICAgbG9nUmVzdWx0KEZhaWxlZCwgJ1Byb21pc2UgcmVzb2x2ZWQgaW5jb3Jy
ZWN0bHknKTsKLSAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgfSwgZXhjZXB0aW9uQ29kZSA9
PiB7Ci0gICAgICAgICAgICBsb2dSZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVqZWN0ZWQgY29y
cmVjdGx5Jyk7Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogICAg
IGZ1bmN0aW9uIGdvdE1lZGlhS2V5U3lzdGVtQWNjZXNzKHJlc3VsdCkgewotICAgICAgICBsb2dS
ZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVzb2x2ZWQnKTsKICAgICAgICAgbWVkaWFLZXlTeXN0
ZW1BY2Nlc3MgPSByZXN1bHQ7CiAgICAgICAgIG5leHQoKTsKICAgICB9CiAKICAgICBmdW5jdGlv
biBnb3RNZWRpYUtleXMocmVzdWx0KSB7Ci0gICAgICAgIGxvZ1Jlc3VsdChTdWNjZXNzLCAnUHJv
bWlzZSByZXNvbHZlZCcpOwogICAgICAgICBtZWRpYUtleXMgPSByZXN1bHQ7CiAgICAgICAgIG5l
eHQoKTsKICAgICB9CkBAIC04MCwyOCArNTgsMjggQEAKICAgICB0ZXN0cyA9IFsKICAgICAgICAg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcmVhdGVNZWRpYUtleXMoKScpOwotICAgICAgICAgICAgcHJvbWlzZS50aGVuKGdvdE1l
ZGlhS2V5cykuY2F0Y2goZmFpbFRlc3QpOworICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9t
aXNlKS50aGVuKGdvdE1lZGlhS2V5cywgZmFpbFRlc3QpOwogICAgICAgICB9LAogCiAgICAgICAg
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlzLnNldFNl
cnZlckNlcnRpZmljYXRlKG5ldyBBcnJheUJ1ZmZlcigpKScpOwotICAgICAgICAgICAgc2hvdWxk
UmVqZWN0KHByb21pc2UpOworICAgICAgICAgICAgc2hvdWxkUmVqZWN0KHByb21pc2UpLnRoZW4o
bmV4dCwgbmV4dCk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleXMuc2V0U2VydmVyQ2VydGlmaWNhdGUoc3RyaW5n
VG9VSW50OEFycmF5KCJpbnZhbGlkIikpJyk7Ci0gICAgICAgICAgICBzaG91bGRSZWplY3QocHJv
bWlzZSk7CisgICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0
KTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJ1bign
cHJvbWlzZSA9IG1lZGlhS2V5cy5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShzdHJpbmdUb1VJbnQ4QXJy
YXkoInZhbGlkIikpJyk7Ci0gICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpOworICAg
ICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOwogICAgICAg
ICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcnVuKCdtb2NrLnN1cHBv
cnRzU2VydmVyQ2VydGlmaWNhdGVzID0gZmFsc2UnKTsKICAgICAgICAgICAgIHJ1bigncHJvbWlz
ZSA9IG1lZGlhS2V5cy5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShzdHJpbmdUb1VJbnQ4QXJyYXkoInZh
bGlkIikpJyk7Ci0gICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSk7CisgICAgICAgICAg
ICBzaG91bGRSZWplY3QocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsKICAgICAgICAgfSwKICAg
ICBdOwogICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL21vY2stbmF2aWdhdG9yLXJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1s
IGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stbmF2aWdhdG9yLXJlcXVl
c3RNZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1sCmluZGV4IDY4NzJjZTY3ZGUzZjIyOGRjZDgyMjJh
MTE1YWU1NWVlZDk1YWU1ZjMuLjZiMGJiZTQxNmI0NzVmNzU4NWZhYWNjN2UwOThmZTVkOTNhOTU3
Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLW5h
dmlnYXRvci1yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1uYXZpZ2F0b3ItcmVxdWVzdE1lZGlhS2V5U3lz
dGVtQWNjZXNzLmh0bWwKQEAgLTM0LDMzICszNCwxOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9u
IHBhc3NpbmdUZXN0V2l0aENhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMsIHN1Y2Nlc3MpIHsKLSAg
ICAgICAgdGVzdFdpdGhDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKTsKLSAgICAgICAgcHJvbWlz
ZS50aGVuKG1lZGlhS2V5U3lzdGVtQWNjZXNzID0+IHsKLSAgICAgICAgICAgIGxvZ1Jlc3VsdChT
dWNjZXNzLCAnUHJvbWlzZSByZXNvbHZlZCcpOwotICAgICAgICAgICAgc3VjY2VzcyhtZWRpYUtl
eVN5c3RlbUFjY2Vzcyk7Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0sICgpID0+IHsK
LSAgICAgICAgICAgIGxvZ1Jlc3VsdChGYWlsZWQsICdQcm9taXNlIHJlamVjdGVkJyk7Ci0gICAg
ICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0pOworICAgICAgICBzaG91bGRSZXNvbHZlKHRlc3RX
aXRoQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykpLnRoZW4oc3VjY2VzcykudGhlbihuZXh0LCBu
ZXh0KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBmYWlsaW5nVGVzdFdpdGhDYXBhYmlsaXRpZXMo
Y2FwYWJpbGl0aWVzLCBmYWlsdXJlKSB7Ci0gICAgICAgIHRlc3RXaXRoQ2FwYWJpbGl0aWVzKGNh
cGFiaWxpdGllcyk7Ci0gICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICBs
b2dSZXN1bHQoRmFpbGVkLCAnUHJvbWlzZSByZXNvbHZlZCBpbmNvcnJlY3RseScpOwotICAgICAg
ICAgICAgbmV4dCgpOwotICAgICAgICB9LCBleGNlcHRpb25Db2RlID0+IHsKLSAgICAgICAgICAg
IGxvZ1Jlc3VsdChTdWNjZXNzLCAnUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHknKTsKLSAgICAg
ICAgICAgIGZhaWx1cmUoZXhjZXB0aW9uQ29kZSkKLSAgICAgICAgICAgIG5leHQoKTsKLSAgICAg
ICAgfSk7CisgICAgICAgIHNob3VsZFJlamVjdCh0ZXN0V2l0aENhcGFiaWxpdGllcyhjYXBhYmls
aXRpZXMpKS50aGVuKGZhaWx1cmUpLnRoZW4obmV4dCwgbmV4dCk7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gdGVzdFdpdGhDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKSB7CiAgICAgICAgIHdpbmRv
dy5jYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXM7CiAgICAgICAgIGNvbnNvbGVXcml0ZShgU0VU
IGNhcGFiaWxpdGllcyA9ICckeyBKU09OLnN0cmluZ2lmeShjYXBhYmlsaXRpZXMsIG51bGwsIDEp
IH0nYCk7CiAgICAgICAgIHJ1bigncHJvbWlzZSAgPSBuYXZpZ2F0b3IucmVxdWVzdE1lZGlhS2V5
U3lzdGVtQWNjZXNzKCJvcmcud2Via2l0Lm1vY2siLCBjYXBhYmlsaXRpZXMpJyk7CisgICAgICAg
IHJldHVybiBwcm9taXNlOwogICAgIH0KIAogICAgIHRlc3RzID0gWwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRl
c3QuanMKaW5kZXggMTlhN2Y2MmRhNGYyY2JjNjI0Y2JhNWYwY2QwZmJjODBjM2Y5NjFkMC4uNjBi
MWUzMDYwZTA3YzFjMjExNjljMzdkNDUwZDg4ZmI3MzYxNzA1YyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby10
ZXN0LmpzCkBAIC00MTYsMyArNDE2LDI4IEBAIGZ1bmN0aW9uIHJ1bldpdGhLZXlEb3duKGZuKQog
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAgfQogfQorCitmdW5jdGlv
biBzaG91bGRSZXNvbHZlKHByb21pc2UpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICBwcm9taXNlLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAg
ICAgICAgIGxvZ1Jlc3VsdChTdWNjZXNzLCAnUHJvbWlzZSByZXNvbHZlZCcpOworICAgICAgICAg
ICAgcmVzb2x2ZShyZXN1bHQpOworICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICAg
ICAgICAgIGxvZ1Jlc3VsdChGYWlsZWQsICdQcm9taXNlIHJlamVjdGVkJyk7CisgICAgICAgICAg
ICByZWplY3QoZXJyb3IpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gc2hv
dWxkUmVqZWN0KHByb21pc2UpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICBwcm9taXNlLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgICAgICAg
IGxvZ1Jlc3VsdChGYWlsZWQsICdQcm9taXNlIHJlc29sdmVkIGluY29ycmVjdGx5Jyk7CisgICAg
ICAgICAgICByZWplY3QocmVzdWx0KTsKKyAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7Cisg
ICAgICAgICAgICBsb2dSZXN1bHQoU3VjY2VzcywgJ1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5
Jyk7CisgICAgICAgICAgICByZXNvbHZlKGVycm9yKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYWViMWRj
MGVjODE2OTdkN2IzYzIxMWRlM2VhMGQ2MjVhYjY1MmY4My4uMDliZDRiNTQ1ZGZlMzRkN2QxZWYw
MzE5YjczODZiNmEzYmViYzQ3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTE0NjksNiArMTQ2OSw3IEBAIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2Nr
LW5hdmlnYXRvci1yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbCBbIFNraXAgXQogbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbCBbIFNraXAg
XQogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlzLXNldFNlcnZlckNlcnRpZmlj
YXRlLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5cy1j
cmVhdGVTZXNzaW9uLmh0bWwgWyBTa2lwIF0KK21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1l
ZGlhS2V5U2Vzc2lvbi1nZW5lcmF0ZVJlcXVlc3QuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3Jn
L2IvMTY2MDI1IGh0dHAvdGVzdHMvZmV0Y2gvZmV0Y2hpbmctc2FtZS1yZXNvdXJjZS13aXRoLWRp
ZmZmZXJlbnQtb3B0aW9ucy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>