<?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>57416</bug_id>
          
          <creation_ts>2011-03-29 19:34:32 -0700</creation_ts>
          <short_desc>Make correspondence of file name related with event to other port.</short_desc>
          <delta_ts>2011-04-10 23:58:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="ChangSeok Oh">kevin.cs.oh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kevin.cs.oh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>376003</commentid>
    <comment_count>0</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-03-29 19:34:32 -0700</bug_when>
    <thetext>Some file names are different from other port&apos; one.
For instance, let&apos;s say about MouseEventGtk.cpp
It defines PlatformMouseEvent class for gtk port.
But the other port has same class in different form of file like PlatformMouseEventMac.mm, PlatformMouseEventEfl.cpp and PlatformMouseEventQT.cpp

I think this ruins a correspondence among ports and make user hard to find file.
In my opinion. gtk port should also follow other ports naming rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376956</commentid>
    <comment_count>1</comment_count>
      <attachid>87668</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-03-30 22:48:40 -0700</bug_when>
    <thetext>Created attachment 87668
Proposed patch

This patch just changes three file names.

KeyEventGtk.cpp -&gt; PlatformKeyboardEventGtk.cpp
MouseEventGtk.cpp -&gt; PlatformMouseEventGtk.cpp
WheelEventGtk.cpp -&gt; PlatformWheelEventGtk.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382948</commentid>
    <comment_count>2</comment_count>
      <attachid>87668</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-10 15:51:44 -0700</bug_when>
    <thetext>Comment on attachment 87668
Proposed patch

Seems fine.  I can&apos;t remember if teh cq can handle renames or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382949</commentid>
    <comment_count>3</comment_count>
      <attachid>87668</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-10 15:54:26 -0700</bug_when>
    <thetext>Comment on attachment 87668
Proposed patch

Rejecting attachment 87668 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sf&apos;, &apos;ap...&quot; exit_code: 2

Last 500 characters of output:
ects to file Source/WebCore/GNUmakefile.am.rej
patching file Source/WebCore/platform/gtk/KeyEventGtk.cpp
rm &apos;Source/WebCore/platform/gtk/KeyEventGtk.cpp&apos;
patching file Source/WebCore/platform/gtk/MouseEventGtk.cpp
rm &apos;Source/WebCore/platform/gtk/MouseEventGtk.cpp&apos;
patching file Source/WebCore/platform/gtk/WheelEventGtk.cpp
rm &apos;Source/WebCore/platform/gtk/WheelEventGtk.cpp&apos;

Failed to run &quot;[u&apos;/Projects/CommitQueue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Eric Seidel&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8374755</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383021</commentid>
    <comment_count>4</comment_count>
      <attachid>88966</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-04-10 21:21:45 -0700</bug_when>
    <thetext>Created attachment 88966
revised patch to meet latest version(r83419)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383023</commentid>
    <comment_count>5</comment_count>
      <attachid>88967</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-04-10 21:33:20 -0700</bug_when>
    <thetext>Created attachment 88967
revised patch to meet latest version(r83419)

To fix build break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383048</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-10 23:53:46 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 88967:

java/lc3/JavaObject/JavaObjectToLong-003-n.html bug 58218 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383050</commentid>
    <comment_count>7</comment_count>
      <attachid>88967</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-10 23:57:53 -0700</bug_when>
    <thetext>Comment on attachment 88967
revised patch to meet latest version(r83419)

Clearing flags on attachment: 88967

Committed r83429: &lt;http://trac.webkit.org/changeset/83429&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383051</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-10 23:58:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87668</attachid>
            <date>2011-03-30 22:48:40 -0700</date>
            <delta_ts>2011-04-10 21:21:45 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>P57416.patch</filename>
            <type>text/plain</type>
            <size>64723</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNTQ2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDMtMzAgIENoYW5nU2Vv
ayBPaCAgPHNoaXZhbWlkb3dAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgY29ycmVzcG9uZGVuY2Ugb2YgZmlsZSBuYW1lIHJl
bGF0ZWQgd2l0aCBldmVudCB0byBvdGhlciBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc0MTYKKworICAgICAgICBTb21lIGZpbGUgbmFtZXMg
YXJlIGNoYW5nZWQgdG8gbWFrZSBjb3JyZXNwb25kZW5jZSBuYW1pbmcgcnVsZS4KKyAgICAgICAg
S2V5Ym9hcmQsIG1vdXNlIGFuZCB3aGVlbCBldmVudCBmaWxlIG5hbWVzIGZvciBHVEsgcG9ydCBo
YXZlIGJlZW4gZGlmZmVyZW50IGZyb20gb3RoZXIgcG9ydHMuCisgICAgICAgIFRoaXMgaGFzIG1h
ZGUgdXNlciBoYXJkIHRvIGZpbmQgYSBzcGVjaWZpYyBmaWxlIHJlbGF0ZWQgd2l0aCBldmVudCBm
b3IgR1RLIHBvcnQuCisKKyAgICAgICAgTm8gdGVzdCByZXF1aXJlZC4gVGhpcyBwYXRjaCBqdXN0
IGNoYW5nZXMgc29tZSBmaWxlIG5hbWVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL0tleUV2ZW50R3RrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvTW91c2VFdmVudEd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHA6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwOiBSZW1vdmVkLgorCiAyMDExLTAzLTMw
ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBSb2Jlbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA4MjUyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zODE1LDcg
KzM4MTUsNiBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtQbHVnaW5XaWRnZXQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1ZlcnNpb25pbmcuYyBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNp
b25pbmcuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0tleUV2ZW50R3RrLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0tVUkxHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAgXApAQCAtMzgyMywxMSArMzgyMiwxMyBA
QCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9N
YWluRnJhbWVTY3JvbGxiYXJHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
TWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9N
SU1FVHlwZVJlZ2lzdHJ5R3RrLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01v
dXNlRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVwTWVudUd0ay5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Qb3B1cE1lbnVHdGsuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcCBcCkBAIC0zODQ1LDcgKzM4NDYsNiBA
QCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
aGFyZWRUaW1lckd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Tb3VuZEd0
ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2hlZWxFdmVudEd0ay5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmggXApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0tleUV2ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsuY3BwCShyZXZpc2lvbiA4MjUy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlFdmVudEd0ay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNjA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
NiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xs
YWJvcmEsIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJk
RXZlbnQuaCIKLQotI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKLSNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgotI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIldpbmRvd3NL
ZXlib2FyZENvZGVzLmgiCi0KLSNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0jaW5jbHVkZSA8Z2RrL2dk
a2tleXN5bXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogVGhpcyBpcyBp
bmNvbXBsZXRlLiAgV2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIG1pcnJvcgotLy8gbW9yZSBsaWtl
IHdoYXQgRmlyZWZveCBkb2VzLCBhbmQgZ2VuZXJhdGUgdGhlc2Ugc3dpdGNoIHN0YXRlbWVudHMK
LS8vIGF0IGJ1aWxkIHRpbWUuCi1TdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVu
dGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQotewotICAgIHN3aXRjaCAoa2V5
Q29kZSkgewotICAgICAgICBjYXNlIEdES19NZW51OgotICAgICAgICBjYXNlIEdES19BbHRfTDoK
LSAgICAgICAgY2FzZSBHREtfQWx0X1I6Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7Ci0gICAg
ICAgIGNhc2UgR0RLX0NsZWFyOgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7Ci0gICAgICAg
IGNhc2UgR0RLX0Rvd246Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOwotICAgICAgICAgICAg
Ly8gIkVuZCIKLSAgICAgICAgY2FzZSBHREtfRW5kOgotICAgICAgICAgICAgcmV0dXJuICJFbmQi
OwotICAgICAgICAgICAgLy8gIkVudGVyIgotICAgICAgICBjYXNlIEdES19JU09fRW50ZXI6Ci0g
ICAgICAgIGNhc2UgR0RLX0tQX0VudGVyOgotICAgICAgICBjYXNlIEdES19SZXR1cm46Ci0gICAg
ICAgICAgICByZXR1cm4gIkVudGVyIjsKLSAgICAgICAgY2FzZSBHREtfRXhlY3V0ZToKLSAgICAg
ICAgICAgIHJldHVybiAiRXhlY3V0ZSI7Ci0gICAgICAgIGNhc2UgR0RLX0YxOgotICAgICAgICAg
ICAgcmV0dXJuICJGMSI7Ci0gICAgICAgIGNhc2UgR0RLX0YyOgotICAgICAgICAgICAgcmV0dXJu
ICJGMiI7Ci0gICAgICAgIGNhc2UgR0RLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7Ci0g
ICAgICAgIGNhc2UgR0RLX0Y0OgotICAgICAgICAgICAgcmV0dXJuICJGNCI7Ci0gICAgICAgIGNh
c2UgR0RLX0Y1OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7Ci0gICAgICAgIGNhc2UgR0RLX0Y2
OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7Ci0gICAgICAgIGNhc2UgR0RLX0Y3OgotICAgICAg
ICAgICAgcmV0dXJuICJGNyI7Ci0gICAgICAgIGNhc2UgR0RLX0Y4OgotICAgICAgICAgICAgcmV0
dXJuICJGOCI7Ci0gICAgICAgIGNhc2UgR0RLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7
Ci0gICAgICAgIGNhc2UgR0RLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjEwIjsKLSAgICAg
ICAgY2FzZSBHREtfRjExOgotICAgICAgICAgICAgcmV0dXJuICJGMTEiOwotICAgICAgICBjYXNl
IEdES19GMTI6Ci0gICAgICAgICAgICByZXR1cm4gIkYxMiI7Ci0gICAgICAgIGNhc2UgR0RLX0Yx
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKLSAgICAgICAgY2FzZSBHREtfRjE0OgotICAg
ICAgICAgICAgcmV0dXJuICJGMTQiOwotICAgICAgICBjYXNlIEdES19GMTU6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYxNSI7Ci0gICAgICAgIGNhc2UgR0RLX0YxNjoKLSAgICAgICAgICAgIHJldHVy
biAiRjE2IjsKLSAgICAgICAgY2FzZSBHREtfRjE3OgotICAgICAgICAgICAgcmV0dXJuICJGMTci
OwotICAgICAgICBjYXNlIEdES19GMTg6Ci0gICAgICAgICAgICByZXR1cm4gIkYxOCI7Ci0gICAg
ICAgIGNhc2UgR0RLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKLSAgICAgICAgY2Fz
ZSBHREtfRjIwOgotICAgICAgICAgICAgcmV0dXJuICJGMjAiOwotICAgICAgICBjYXNlIEdES19G
MjE6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMSI7Ci0gICAgICAgIGNhc2UgR0RLX0YyMjoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIyIjsKLSAgICAgICAgY2FzZSBHREtfRjIzOgotICAgICAgICAg
ICAgcmV0dXJuICJGMjMiOwotICAgICAgICBjYXNlIEdES19GMjQ6Ci0gICAgICAgICAgICByZXR1
cm4gIkYyNCI7Ci0gICAgICAgIGNhc2UgR0RLX0hlbHA6Ci0gICAgICAgICAgICByZXR1cm4gIkhl
bHAiOwotICAgICAgICBjYXNlIEdES19Ib21lOgotICAgICAgICAgICAgcmV0dXJuICJIb21lIjsK
LSAgICAgICAgY2FzZSBHREtfSW5zZXJ0OgotICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiOwot
ICAgICAgICBjYXNlIEdES19MZWZ0OgotICAgICAgICAgICAgcmV0dXJuICJMZWZ0IjsKLSAgICAg
ICAgY2FzZSBHREtfUGFnZV9Eb3duOgotICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biI7Ci0g
ICAgICAgIGNhc2UgR0RLX1BhZ2VfVXA6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7Ci0g
ICAgICAgIGNhc2UgR0RLX1BhdXNlOgotICAgICAgICAgICAgcmV0dXJuICJQYXVzZSI7Ci0gICAg
ICAgIGNhc2UgR0RLXzMyNzBfUHJpbnRTY3JlZW46Ci0gICAgICAgIGNhc2UgR0RLX1ByaW50Ogot
ICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7Ci0gICAgICAgIGNhc2UgR0RLX1JpZ2h0
OgotICAgICAgICAgICAgcmV0dXJuICJSaWdodCI7Ci0gICAgICAgIGNhc2UgR0RLX1NlbGVjdDoK
LSAgICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsKLSAgICAgICAgY2FzZSBHREtfVXA6Ci0gICAg
ICAgICAgICByZXR1cm4gIlVwIjsKLSAgICAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBE
RUwgYmVjb21lcyBVKzAwN0YuCi0gICAgICAgIGNhc2UgR0RLX0RlbGV0ZToKLSAgICAgICAgICAg
IHJldHVybiAiVSswMDdGIjsKLSAgICAgICAgY2FzZSBHREtfQmFja1NwYWNlOgotICAgICAgICAg
ICAgcmV0dXJuICJVKzAwMDgiOwotICAgICAgICBjYXNlIEdES19JU09fTGVmdF9UYWI6Ci0gICAg
ICAgIGNhc2UgR0RLXzMyNzBfQmFja1RhYjoKLSAgICAgICAgY2FzZSBHREtfVGFiOgotICAgICAg
ICAgICAgcmV0dXJuICJVKzAwMDkiOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJVKyUwNFgiLCBnZGtfa2V5dmFsX3RvX3VuaWNvZGUoZ2RrX2tl
eXZhbF90b191cHBlcihrZXlDb2RlKSkpOwotICAgIH0KLX0KLQotaW50IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6d2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKHVuc2lnbmVkIGtleWNvZGUpCi17
Ci0gICAgc3dpdGNoIChrZXljb2RlKSB7Ci0gICAgICAgIGNhc2UgR0RLX0tQXzA6Ci0gICAgICAg
ICAgICByZXR1cm4gVktfTlVNUEFEMDsvLyAoNjApIE51bWVyaWMga2V5cGFkIDAga2V5Ci0gICAg
ICAgIGNhc2UgR0RLX0tQXzE6Ci0gICAgICAgICAgICByZXR1cm4gVktfTlVNUEFEMTsvLyAoNjEp
IE51bWVyaWMga2V5cGFkIDEga2V5Ci0gICAgICAgIGNhc2UgR0RLX0tQXzI6Ci0gICAgICAgICAg
ICByZXR1cm4gIFZLX05VTVBBRDI7IC8vICg2MikgTnVtZXJpYyBrZXlwYWQgMiBrZXkKLSAgICAg
ICAgY2FzZSBHREtfS1BfMzoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQzOyAvLyAoNjMp
IE51bWVyaWMga2V5cGFkIDMga2V5Ci0gICAgICAgIGNhc2UgR0RLX0tQXzQ6Ci0gICAgICAgICAg
ICByZXR1cm4gVktfTlVNUEFENDsgLy8gKDY0KSBOdW1lcmljIGtleXBhZCA0IGtleQotICAgICAg
ICBjYXNlIEdES19LUF81OgotICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDU7IC8vKDY1KSBO
dW1lcmljIGtleXBhZCA1IGtleQotICAgICAgICBjYXNlIEdES19LUF82OgotICAgICAgICAgICAg
cmV0dXJuIFZLX05VTVBBRDY7IC8vICg2NikgTnVtZXJpYyBrZXlwYWQgNiBrZXkKLSAgICAgICAg
Y2FzZSBHREtfS1BfNzoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQ3OyAvLyAoNjcpIE51
bWVyaWMga2V5cGFkIDcga2V5Ci0gICAgICAgIGNhc2UgR0RLX0tQXzg6Ci0gICAgICAgICAgICBy
ZXR1cm4gVktfTlVNUEFEODsgLy8gKDY4KSBOdW1lcmljIGtleXBhZCA4IGtleQotICAgICAgICBj
YXNlIEdES19LUF85OgotICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDk7IC8vICg2OSkgTnVt
ZXJpYyBrZXlwYWQgOSBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfTXVsdGlwbHk6Ci0gICAgICAg
ICAgICByZXR1cm4gVktfTVVMVElQTFk7IC8vICg2QSkgTXVsdGlwbHkga2V5Ci0gICAgICAgIGNh
c2UgR0RLX0tQX0FkZDoKLSAgICAgICAgICAgIHJldHVybiBWS19BREQ7IC8vICg2QikgQWRkIGtl
eQotICAgICAgICBjYXNlIEdES19LUF9TdWJ0cmFjdDoKLSAgICAgICAgICAgIHJldHVybiBWS19T
VUJUUkFDVDsgLy8gKDZEKSBTdWJ0cmFjdCBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfRGVjaW1h
bDoKLSAgICAgICAgICAgIHJldHVybiBWS19ERUNJTUFMOyAvLyAoNkUpIERlY2ltYWwga2V5Ci0g
ICAgICAgIGNhc2UgR0RLX0tQX0RpdmlkZToKLSAgICAgICAgICAgIHJldHVybiBWS19ESVZJREU7
IC8vICg2RikgRGl2aWRlIGtleQotCi0gICAgICAgIGNhc2UgR0RLX0tQX1BhZ2VfVXA6Ci0gICAg
ICAgICAgICByZXR1cm4gVktfUFJJT1I7IC8vICgyMSkgUEFHRSBVUCBrZXkKLSAgICAgICAgY2Fz
ZSBHREtfS1BfUGFnZV9Eb3duOgotICAgICAgICAgICAgcmV0dXJuIFZLX05FWFQ7IC8vICgyMikg
UEFHRSBET1dOIGtleQotICAgICAgICBjYXNlIEdES19LUF9FbmQ6Ci0gICAgICAgICAgICByZXR1
cm4gVktfRU5EOyAvLyAoMjMpIEVORCBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfSG9tZToKLSAg
ICAgICAgICAgIHJldHVybiBWS19IT01FOyAvLyAoMjQpIEhPTUUga2V5Ci0gICAgICAgIGNhc2Ug
R0RLX0tQX0xlZnQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfTEVGVDsgLy8gKDI1KSBMRUZUIEFS
Uk9XIGtleQotICAgICAgICBjYXNlIEdES19LUF9VcDoKLSAgICAgICAgICAgIHJldHVybiBWS19V
UDsgLy8gKDI2KSBVUCBBUlJPVyBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfUmlnaHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gVktfUklHSFQ7IC8vICgyNykgUklHSFQgQVJST1cga2V5Ci0gICAgICAg
IGNhc2UgR0RLX0tQX0Rvd246Ci0gICAgICAgICAgICByZXR1cm4gVktfRE9XTjsgLy8gKDI4KSBE
T1dOIEFSUk9XIGtleQotCi0gICAgICAgIGNhc2UgR0RLX0JhY2tTcGFjZToKLSAgICAgICAgICAg
IHJldHVybiBWS19CQUNLOyAvLyAoMDgpIEJBQ0tTUEFDRSBrZXkKLSAgICAgICAgY2FzZSBHREtf
SVNPX0xlZnRfVGFiOgotICAgICAgICBjYXNlIEdES18zMjcwX0JhY2tUYWI6Ci0gICAgICAgIGNh
c2UgR0RLX1RhYjoKLSAgICAgICAgICAgIHJldHVybiBWS19UQUI7IC8vICgwOSkgVEFCIGtleQot
ICAgICAgICBjYXNlIEdES19DbGVhcjoKLSAgICAgICAgICAgIHJldHVybiBWS19DTEVBUjsgLy8g
KDBDKSBDTEVBUiBrZXkKLSAgICAgICAgY2FzZSBHREtfSVNPX0VudGVyOgotICAgICAgICBjYXNl
IEdES19LUF9FbnRlcjoKLSAgICAgICAgY2FzZSBHREtfUmV0dXJuOgotICAgICAgICAgICAgcmV0
dXJuIFZLX1JFVFVSTjsgLy8oMEQpIFJldHVybiBrZXkKLSAgICAgICAgY2FzZSBHREtfU2hpZnRf
TDoKLSAgICAgICAgY2FzZSBHREtfU2hpZnRfUjoKLSAgICAgICAgICAgIHJldHVybiBWS19TSElG
VDsgLy8gKDEwKSBTSElGVCBrZXkKLSAgICAgICAgY2FzZSBHREtfQ29udHJvbF9MOgotICAgICAg
ICBjYXNlIEdES19Db250cm9sX1I6Ci0gICAgICAgICAgICByZXR1cm4gVktfQ09OVFJPTDsgLy8g
KDExKSBDVFJMIGtleQotICAgICAgICBjYXNlIEdES19NZW51OgotICAgICAgICAgICAgcmV0dXJu
IFZLX0FQUFM7ICAvLyAoNUQpIEFwcGxpY2F0aW9ucyBrZXkgKE5hdHVyYWwga2V5Ym9hcmQpCi0g
ICAgICAgIGNhc2UgR0RLX0FsdF9MOgotICAgICAgICBjYXNlIEdES19BbHRfUjoKLSAgICAgICAg
ICAgIHJldHVybiBWS19NRU5VOyAvLyAoMTIpIEFMVCBrZXkKLQotICAgICAgICBjYXNlIEdES19Q
YXVzZToKLSAgICAgICAgICAgIHJldHVybiBWS19QQVVTRTsgLy8gKDEzKSBQQVVTRSBrZXkKLSAg
ICAgICAgY2FzZSBHREtfQ2Fwc19Mb2NrOgotICAgICAgICAgICAgcmV0dXJuIFZLX0NBUElUQUw7
IC8vICgxNCkgQ0FQUyBMT0NLIGtleQotICAgICAgICBjYXNlIEdES19LYW5hX0xvY2s6Ci0gICAg
ICAgIGNhc2UgR0RLX0thbmFfU2hpZnQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfS0FOQTsgLy8g
KDE1KSBJbnB1dCBNZXRob2QgRWRpdG9yIChJTUUpIEthbmEgbW9kZQotICAgICAgICBjYXNlIEdE
S19IYW5ndWw6Ci0gICAgICAgICAgICByZXR1cm4gVktfSEFOR1VMOyAvLyBWS19IQU5HVUwgKDE1
KSBJTUUgSGFuZ3VsIG1vZGUKLSAgICAgICAgICAgIC8vIFZLX0pVTkpBICgxNykgSU1FIEp1bmph
IG1vZGUKLSAgICAgICAgICAgIC8vIFZLX0ZJTkFMICgxOCkgSU1FIGZpbmFsIG1vZGUKLSAgICAg
ICAgY2FzZSBHREtfSGFuZ3VsX0hhbmphOgotICAgICAgICAgICAgcmV0dXJuIFZLX0hBTkpBOyAv
LyAoMTkpIElNRSBIYW5qYSBtb2RlCi0gICAgICAgIGNhc2UgR0RLX0thbmppOgotICAgICAgICAg
ICAgcmV0dXJuIFZLX0tBTkpJOyAvLyAoMTkpIElNRSBLYW5qaSBtb2RlCi0gICAgICAgIGNhc2Ug
R0RLX0VzY2FwZToKLSAgICAgICAgICAgIHJldHVybiBWS19FU0NBUEU7IC8vICgxQikgRVNDIGtl
eQotICAgICAgICAgICAgLy8gVktfQ09OVkVSVCAoMUMpIElNRSBjb252ZXJ0Ci0gICAgICAgICAg
ICAvLyBWS19OT05DT05WRVJUICgxRCkgSU1FIG5vbmNvbnZlcnQKLSAgICAgICAgICAgIC8vIFZL
X0FDQ0VQVCAoMUUpIElNRSBhY2NlcHQKLSAgICAgICAgICAgIC8vIFZLX01PREVDSEFOR0UgKDFG
KSBJTUUgbW9kZSBjaGFuZ2UgcmVxdWVzdAotICAgICAgICBjYXNlIEdES19zcGFjZToKLSAgICAg
ICAgICAgIHJldHVybiBWS19TUEFDRTsgLy8gKDIwKSBTUEFDRUJBUgotICAgICAgICBjYXNlIEdE
S19QYWdlX1VwOgotICAgICAgICAgICAgcmV0dXJuIFZLX1BSSU9SOyAvLyAoMjEpIFBBR0UgVVAg
a2V5Ci0gICAgICAgIGNhc2UgR0RLX1BhZ2VfRG93bjoKLSAgICAgICAgICAgIHJldHVybiBWS19O
RVhUOyAvLyAoMjIpIFBBR0UgRE9XTiBrZXkKLSAgICAgICAgY2FzZSBHREtfRW5kOgotICAgICAg
ICAgICAgcmV0dXJuIFZLX0VORDsgLy8gKDIzKSBFTkQga2V5Ci0gICAgICAgIGNhc2UgR0RLX0hv
bWU6Ci0gICAgICAgICAgICByZXR1cm4gVktfSE9NRTsgLy8gKDI0KSBIT01FIGtleQotICAgICAg
ICBjYXNlIEdES19MZWZ0OgotICAgICAgICAgICAgcmV0dXJuIFZLX0xFRlQ7IC8vICgyNSkgTEVG
VCBBUlJPVyBrZXkKLSAgICAgICAgY2FzZSBHREtfVXA6Ci0gICAgICAgICAgICByZXR1cm4gVktf
VVA7IC8vICgyNikgVVAgQVJST1cga2V5Ci0gICAgICAgIGNhc2UgR0RLX1JpZ2h0OgotICAgICAg
ICAgICAgcmV0dXJuIFZLX1JJR0hUOyAvLyAoMjcpIFJJR0hUIEFSUk9XIGtleQotICAgICAgICBj
YXNlIEdES19Eb3duOgotICAgICAgICAgICAgcmV0dXJuIFZLX0RPV047IC8vICgyOCkgRE9XTiBB
UlJPVyBrZXkKLSAgICAgICAgY2FzZSBHREtfU2VsZWN0OgotICAgICAgICAgICAgcmV0dXJuIFZL
X1NFTEVDVDsgLy8gKDI5KSBTRUxFQ1Qga2V5Ci0gICAgICAgIGNhc2UgR0RLX1ByaW50OgotICAg
ICAgICAgICAgcmV0dXJuIFZLX1NOQVBTSE9UOyAvLyAoMkMpIFBSSU5UIFNDUkVFTiBrZXkKLSAg
ICAgICAgY2FzZSBHREtfRXhlY3V0ZToKLSAgICAgICAgICAgIHJldHVybiBWS19FWEVDVVRFOy8v
ICgyQikgRVhFQ1VURSBrZXkKLSAgICAgICAgY2FzZSBHREtfSW5zZXJ0OgotICAgICAgICBjYXNl
IEdES19LUF9JbnNlcnQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfSU5TRVJUOyAvLyAoMkQpIElO
UyBrZXkKLSAgICAgICAgY2FzZSBHREtfRGVsZXRlOgotICAgICAgICBjYXNlIEdES19LUF9EZWxl
dGU6Ci0gICAgICAgICAgICByZXR1cm4gVktfREVMRVRFOyAvLyAoMkUpIERFTCBrZXkKLSAgICAg
ICAgY2FzZSBHREtfSGVscDoKLSAgICAgICAgICAgIHJldHVybiBWS19IRUxQOyAvLyAoMkYpIEhF
TFAga2V5Ci0gICAgICAgIGNhc2UgR0RLXzA6Ci0gICAgICAgIGNhc2UgR0RLX3BhcmVucmlnaHQ6
Ci0gICAgICAgICAgICByZXR1cm4gVktfMDsgICAgLy8gICgzMCkgMCkga2V5Ci0gICAgICAgIGNh
c2UgR0RLXzE6Ci0gICAgICAgIGNhc2UgR0RLX2V4Y2xhbToKLSAgICAgICAgICAgIHJldHVybiBW
S18xOyAvLyAgKDMxKSAxICEga2V5Ci0gICAgICAgIGNhc2UgR0RLXzI6Ci0gICAgICAgIGNhc2Ug
R0RLX2F0OgotICAgICAgICAgICAgcmV0dXJuIFZLXzI7IC8vICAoMzIpIDIgJiBrZXkKLSAgICAg
ICAgY2FzZSBHREtfMzoKLSAgICAgICAgY2FzZSBHREtfbnVtYmVyc2lnbjoKLSAgICAgICAgICAg
IHJldHVybiBWS18zOyAvL2Nhc2UgJzMnOiBjYXNlICcjJzsKLSAgICAgICAgY2FzZSBHREtfNDoK
LSAgICAgICAgY2FzZSBHREtfZG9sbGFyOiAvLyAgKDM0KSA0IGtleSAnJCc7Ci0gICAgICAgICAg
ICByZXR1cm4gVktfNDsKLSAgICAgICAgY2FzZSBHREtfNToKLSAgICAgICAgY2FzZSBHREtfcGVy
Y2VudDoKLSAgICAgICAgICAgIHJldHVybiBWS181OyAvLyAgKDM1KSA1IGtleSAgJyUnCi0gICAg
ICAgIGNhc2UgR0RLXzY6Ci0gICAgICAgIGNhc2UgR0RLX2FzY2lpY2lyY3VtOgotICAgICAgICAg
ICAgcmV0dXJuIFZLXzY7IC8vICAoMzYpIDYga2V5ICAnXicKLSAgICAgICAgY2FzZSBHREtfNzoK
LSAgICAgICAgY2FzZSBHREtfYW1wZXJzYW5kOgotICAgICAgICAgICAgcmV0dXJuIFZLXzc7IC8v
ICAoMzcpIDcga2V5ICBjYXNlICcmJwotICAgICAgICBjYXNlIEdES184OgotICAgICAgICBjYXNl
IEdES19hc3RlcmlzazoKLSAgICAgICAgICAgIHJldHVybiBWS184OyAvLyAgKDM4KSA4IGtleSAg
JyonCi0gICAgICAgIGNhc2UgR0RLXzk6Ci0gICAgICAgIGNhc2UgR0RLX3BhcmVubGVmdDoKLSAg
ICAgICAgICAgIHJldHVybiBWS185OyAvLyAgKDM5KSA5IGtleSAnKCcKLSAgICAgICAgY2FzZSBH
REtfYToKLSAgICAgICAgY2FzZSBHREtfQToKLSAgICAgICAgICAgIHJldHVybiBWS19BOyAvLyAg
KDQxKSBBIGtleSBjYXNlICdhJzogY2FzZSAnQSc6IHJldHVybiAweDQxOwotICAgICAgICBjYXNl
IEdES19iOgotICAgICAgICBjYXNlIEdES19COgotICAgICAgICAgICAgcmV0dXJuIFZLX0I7IC8v
ICAoNDIpIEIga2V5IGNhc2UgJ2InOiBjYXNlICdCJzogcmV0dXJuIDB4NDI7Ci0gICAgICAgIGNh
c2UgR0RLX2M6Ci0gICAgICAgIGNhc2UgR0RLX0M6Ci0gICAgICAgICAgICByZXR1cm4gVktfQzsg
Ly8gICg0MykgQyBrZXkgY2FzZSAnYyc6IGNhc2UgJ0MnOiByZXR1cm4gMHg0MzsKLSAgICAgICAg
Y2FzZSBHREtfZDoKLSAgICAgICAgY2FzZSBHREtfRDoKLSAgICAgICAgICAgIHJldHVybiBWS19E
OyAvLyAgKDQ0KSBEIGtleSBjYXNlICdkJzogY2FzZSAnRCc6IHJldHVybiAweDQ0OwotICAgICAg
ICBjYXNlIEdES19lOgotICAgICAgICBjYXNlIEdES19FOgotICAgICAgICAgICAgcmV0dXJuIFZL
X0U7IC8vICAoNDUpIEUga2V5IGNhc2UgJ2UnOiBjYXNlICdFJzogcmV0dXJuIDB4NDU7Ci0gICAg
ICAgIGNhc2UgR0RLX2Y6Ci0gICAgICAgIGNhc2UgR0RLX0Y6Ci0gICAgICAgICAgICByZXR1cm4g
VktfRjsgLy8gICg0NikgRiBrZXkgY2FzZSAnZic6IGNhc2UgJ0YnOiByZXR1cm4gMHg0NjsKLSAg
ICAgICAgY2FzZSBHREtfZzoKLSAgICAgICAgY2FzZSBHREtfRzoKLSAgICAgICAgICAgIHJldHVy
biBWS19HOyAvLyAgKDQ3KSBHIGtleSBjYXNlICdnJzogY2FzZSAnRyc6IHJldHVybiAweDQ3Owot
ICAgICAgICBjYXNlIEdES19oOgotICAgICAgICBjYXNlIEdES19IOgotICAgICAgICAgICAgcmV0
dXJuIFZLX0g7IC8vICAoNDgpIEgga2V5IGNhc2UgJ2gnOiBjYXNlICdIJzogcmV0dXJuIDB4NDg7
Ci0gICAgICAgIGNhc2UgR0RLX2k6Ci0gICAgICAgIGNhc2UgR0RLX0k6Ci0gICAgICAgICAgICBy
ZXR1cm4gVktfSTsgLy8gICg0OSkgSSBrZXkgY2FzZSAnaSc6IGNhc2UgJ0knOiByZXR1cm4gMHg0
OTsKLSAgICAgICAgY2FzZSBHREtfajoKLSAgICAgICAgY2FzZSBHREtfSjoKLSAgICAgICAgICAg
IHJldHVybiBWS19KOyAvLyAgKDRBKSBKIGtleSBjYXNlICdqJzogY2FzZSAnSic6IHJldHVybiAw
eDRBOwotICAgICAgICBjYXNlIEdES19rOgotICAgICAgICBjYXNlIEdES19LOgotICAgICAgICAg
ICAgcmV0dXJuIFZLX0s7IC8vICAoNEIpIEsga2V5IGNhc2UgJ2snOiBjYXNlICdLJzogcmV0dXJu
IDB4NEI7Ci0gICAgICAgIGNhc2UgR0RLX2w6Ci0gICAgICAgIGNhc2UgR0RLX0w6Ci0gICAgICAg
ICAgICByZXR1cm4gVktfTDsgLy8gICg0QykgTCBrZXkgY2FzZSAnbCc6IGNhc2UgJ0wnOiByZXR1
cm4gMHg0QzsKLSAgICAgICAgY2FzZSBHREtfbToKLSAgICAgICAgY2FzZSBHREtfTToKLSAgICAg
ICAgICAgIHJldHVybiBWS19NOyAvLyAgKDREKSBNIGtleSBjYXNlICdtJzogY2FzZSAnTSc6IHJl
dHVybiAweDREOwotICAgICAgICBjYXNlIEdES19uOgotICAgICAgICBjYXNlIEdES19OOgotICAg
ICAgICAgICAgcmV0dXJuIFZLX047IC8vICAoNEUpIE4ga2V5IGNhc2UgJ24nOiBjYXNlICdOJzog
cmV0dXJuIDB4NEU7Ci0gICAgICAgIGNhc2UgR0RLX286Ci0gICAgICAgIGNhc2UgR0RLX086Ci0g
ICAgICAgICAgICByZXR1cm4gVktfTzsgLy8gICg0RikgTyBrZXkgY2FzZSAnbyc6IGNhc2UgJ08n
OiByZXR1cm4gMHg0RjsKLSAgICAgICAgY2FzZSBHREtfcDoKLSAgICAgICAgY2FzZSBHREtfUDoK
LSAgICAgICAgICAgIHJldHVybiBWS19QOyAvLyAgKDUwKSBQIGtleSBjYXNlICdwJzogY2FzZSAn
UCc6IHJldHVybiAweDUwOwotICAgICAgICBjYXNlIEdES19xOgotICAgICAgICBjYXNlIEdES19R
OgotICAgICAgICAgICAgcmV0dXJuIFZLX1E7IC8vICAoNTEpIFEga2V5IGNhc2UgJ3EnOiBjYXNl
ICdRJzogcmV0dXJuIDB4NTE7Ci0gICAgICAgIGNhc2UgR0RLX3I6Ci0gICAgICAgIGNhc2UgR0RL
X1I6Ci0gICAgICAgICAgICByZXR1cm4gVktfUjsgLy8gICg1MikgUiBrZXkgY2FzZSAncic6IGNh
c2UgJ1InOiByZXR1cm4gMHg1MjsKLSAgICAgICAgY2FzZSBHREtfczoKLSAgICAgICAgY2FzZSBH
REtfUzoKLSAgICAgICAgICAgIHJldHVybiBWS19TOyAvLyAgKDUzKSBTIGtleSBjYXNlICdzJzog
Y2FzZSAnUyc6IHJldHVybiAweDUzOwotICAgICAgICBjYXNlIEdES190OgotICAgICAgICBjYXNl
IEdES19UOgotICAgICAgICAgICAgcmV0dXJuIFZLX1Q7IC8vICAoNTQpIFQga2V5IGNhc2UgJ3Qn
OiBjYXNlICdUJzogcmV0dXJuIDB4NTQ7Ci0gICAgICAgIGNhc2UgR0RLX3U6Ci0gICAgICAgIGNh
c2UgR0RLX1U6Ci0gICAgICAgICAgICByZXR1cm4gVktfVTsgLy8gICg1NSkgVSBrZXkgY2FzZSAn
dSc6IGNhc2UgJ1UnOiByZXR1cm4gMHg1NTsKLSAgICAgICAgY2FzZSBHREtfdjoKLSAgICAgICAg
Y2FzZSBHREtfVjoKLSAgICAgICAgICAgIHJldHVybiBWS19WOyAvLyAgKDU2KSBWIGtleSBjYXNl
ICd2JzogY2FzZSAnVic6IHJldHVybiAweDU2OwotICAgICAgICBjYXNlIEdES193OgotICAgICAg
ICBjYXNlIEdES19XOgotICAgICAgICAgICAgcmV0dXJuIFZLX1c7IC8vICAoNTcpIFcga2V5IGNh
c2UgJ3cnOiBjYXNlICdXJzogcmV0dXJuIDB4NTc7Ci0gICAgICAgIGNhc2UgR0RLX3g6Ci0gICAg
ICAgIGNhc2UgR0RLX1g6Ci0gICAgICAgICAgICByZXR1cm4gVktfWDsgLy8gICg1OCkgWCBrZXkg
Y2FzZSAneCc6IGNhc2UgJ1gnOiByZXR1cm4gMHg1ODsKLSAgICAgICAgY2FzZSBHREtfeToKLSAg
ICAgICAgY2FzZSBHREtfWToKLSAgICAgICAgICAgIHJldHVybiBWS19ZOyAvLyAgKDU5KSBZIGtl
eSBjYXNlICd5JzogY2FzZSAnWSc6IHJldHVybiAweDU5OwotICAgICAgICBjYXNlIEdES196Ogot
ICAgICAgICBjYXNlIEdES19aOgotICAgICAgICAgICAgcmV0dXJuIFZLX1o7IC8vICAoNUEpIFog
a2V5IGNhc2UgJ3onOiBjYXNlICdaJzogcmV0dXJuIDB4NUE7Ci0gICAgICAgIGNhc2UgR0RLX01l
dGFfTDoKLSAgICAgICAgICAgIHJldHVybiBWS19MV0lOOyAvLyAoNUIpIExlZnQgV2luZG93cyBr
ZXkgKE1pY3Jvc29mdCBOYXR1cmFsIGtleWJvYXJkKQotICAgICAgICBjYXNlIEdES19NZXRhX1I6
Ci0gICAgICAgICAgICByZXR1cm4gVktfUldJTjsgLy8gKDVDKSBSaWdodCBXaW5kb3dzIGtleSAo
TmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAgICAgIC8vIFZLX1NMRUVQICg1RikgQ29tcHV0ZXIg
U2xlZXAga2V5Ci0gICAgICAgICAgICAvLyBWS19TRVBBUkFUT1IgKDZDKSBTZXBhcmF0b3Iga2V5
Ci0gICAgICAgICAgICAvLyBWS19TVUJUUkFDVCAoNkQpIFN1YnRyYWN0IGtleQotICAgICAgICAg
ICAgLy8gVktfREVDSU1BTCAoNkUpIERlY2ltYWwga2V5Ci0gICAgICAgICAgICAvLyBWS19ESVZJ
REUgKDZGKSBEaXZpZGUga2V5Ci0gICAgICAgICAgICAvLyBoYW5kbGVkIGJ5IGtleSBjb2RlIGFi
b3ZlCi0KLSAgICAgICAgY2FzZSBHREtfTnVtX0xvY2s6Ci0gICAgICAgICAgICByZXR1cm4gVktf
TlVNTE9DSzsgLy8gKDkwKSBOVU0gTE9DSyBrZXkKLQotICAgICAgICBjYXNlIEdES19TY3JvbGxf
TG9jazoKLSAgICAgICAgICAgIHJldHVybiBWS19TQ1JPTEw7IC8vICg5MSkgU0NST0xMIExPQ0sg
a2V5Ci0KLSAgICAgICAgICAgIC8vIFZLX0xTSElGVCAoQTApIExlZnQgU0hJRlQga2V5Ci0gICAg
ICAgICAgICAvLyBWS19SU0hJRlQgKEExKSBSaWdodCBTSElGVCBrZXkKLSAgICAgICAgICAgIC8v
IFZLX0xDT05UUk9MIChBMikgTGVmdCBDT05UUk9MIGtleQotICAgICAgICAgICAgLy8gVktfUkNP
TlRST0wgKEEzKSBSaWdodCBDT05UUk9MIGtleQotICAgICAgICAgICAgLy8gVktfTE1FTlUgKEE0
KSBMZWZ0IE1FTlUga2V5Ci0gICAgICAgICAgICAvLyBWS19STUVOVSAoQTUpIFJpZ2h0IE1FTlUg
a2V5Ci0gICAgICAgICAgICAvLyBWS19CUk9XU0VSX0JBQ0sgKEE2KSBXaW5kb3dzIDIwMDAvWFA6
IEJyb3dzZXIgQmFjayBrZXkKLSAgICAgICAgICAgIC8vIFZLX0JST1dTRVJfRk9SV0FSRCAoQTcp
IFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBGb3J3YXJkIGtleQotICAgICAgICAgICAgLy8gVktf
QlJPV1NFUl9SRUZSRVNIIChBOCkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFJlZnJlc2gga2V5
Ci0gICAgICAgICAgICAvLyBWS19CUk9XU0VSX1NUT1AgKEE5KSBXaW5kb3dzIDIwMDAvWFA6IEJy
b3dzZXIgU3RvcCBrZXkKLSAgICAgICAgICAgIC8vIFZLX0JST1dTRVJfU0VBUkNIIChBQSkgV2lu
ZG93cyAyMDAwL1hQOiBCcm93c2VyIFNlYXJjaCBrZXkKLSAgICAgICAgICAgIC8vIFZLX0JST1dT
RVJfRkFWT1JJVEVTIChBQikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEZhdm9yaXRlcyBrZXkK
LSAgICAgICAgICAgIC8vIFZLX0JST1dTRVJfSE9NRSAoQUMpIFdpbmRvd3MgMjAwMC9YUDogQnJv
d3NlciBTdGFydCBhbmQgSG9tZSBrZXkKLSAgICAgICAgICAgIC8vIFZLX1ZPTFVNRV9NVVRFIChB
RCkgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgTXV0ZSBrZXkKLSAgICAgICAgICAgIC8vIFZLX1ZP
TFVNRV9ET1dOIChBRSkgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgRG93biBrZXkKLSAgICAgICAg
ICAgIC8vIFZLX1ZPTFVNRV9VUCAoQUYpIFdpbmRvd3MgMjAwMC9YUDogVm9sdW1lIFVwIGtleQot
ICAgICAgICAgICAgLy8gVktfTUVESUFfTkVYVF9UUkFDSyAoQjApIFdpbmRvd3MgMjAwMC9YUDog
TmV4dCBUcmFjayBrZXkKLSAgICAgICAgICAgIC8vIFZLX01FRElBX1BSRVZfVFJBQ0sgKEIxKSBX
aW5kb3dzIDIwMDAvWFA6IFByZXZpb3VzIFRyYWNrIGtleQotICAgICAgICAgICAgLy8gVktfTUVE
SUFfU1RPUCAoQjIpIFdpbmRvd3MgMjAwMC9YUDogU3RvcCBNZWRpYSBrZXkKLSAgICAgICAgICAg
IC8vIFZLX01FRElBX1BMQVlfUEFVU0UgKEIzKSBXaW5kb3dzIDIwMDAvWFA6IFBsYXkvUGF1c2Ug
TWVkaWEga2V5Ci0gICAgICAgICAgICAvLyBWS19MQVVOQ0hfTUFJTCAoQjQpIFdpbmRvd3MgMjAw
MC9YUDogU3RhcnQgTWFpbCBrZXkKLSAgICAgICAgICAgIC8vIFZLX0xBVU5DSF9NRURJQV9TRUxF
Q1QgKEI1KSBXaW5kb3dzIDIwMDAvWFA6IFNlbGVjdCBNZWRpYSBrZXkKLSAgICAgICAgICAgIC8v
IFZLX0xBVU5DSF9BUFAxIChCNikgV2luZG93cyAyMDAwL1hQOiBTdGFydCBBcHBsaWNhdGlvbiAx
IGtleQotICAgICAgICAgICAgLy8gVktfTEFVTkNIX0FQUDIgKEI3KSBXaW5kb3dzIDIwMDAvWFA6
IFN0YXJ0IEFwcGxpY2F0aW9uIDIga2V5Ci0KLSAgICAgICAgICAgIC8vIFZLX09FTV8xIChCQSkg
VXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2Fy
ZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJzs6
JyBrZXkKLSAgICAgICAgY2FzZSBHREtfc2VtaWNvbG9uOgotICAgICAgICBjYXNlIEdES19jb2xv
bjoKLSAgICAgICAgICAgIHJldHVybiBWS19PRU1fMTsgLy9jYXNlICc7JzogY2FzZSAnOic6IHJl
dHVybiAweEJBOwotICAgICAgICAgICAgLy8gVktfT0VNX1BMVVMgKEJCKSBXaW5kb3dzIDIwMDAv
WFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnKycga2V5Ci0gICAgICAgIGNhc2UgR0RL
X3BsdXM6Ci0gICAgICAgIGNhc2UgR0RLX2VxdWFsOgotICAgICAgICAgICAgcmV0dXJuIFZLX09F
TV9QTFVTOyAvL2Nhc2UgJz0nOiBjYXNlICcrJzogcmV0dXJuIDB4QkI7Ci0gICAgICAgICAgICAv
LyBWS19PRU1fQ09NTUEgKEJDKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdp
b24sIHRoZSAnLCcga2V5Ci0gICAgICAgIGNhc2UgR0RLX2NvbW1hOgotICAgICAgICBjYXNlIEdE
S19sZXNzOgotICAgICAgICAgICAgcmV0dXJuIFZLX09FTV9DT01NQTsgLy9jYXNlICcsJzogY2Fz
ZSAnPCc6IHJldHVybiAweEJDOwotICAgICAgICAgICAgLy8gVktfT0VNX01JTlVTIChCRCkgV2lu
ZG93cyAyMDAwL1hQOiBGb3IgYW55IGNvdW50cnkvcmVnaW9uLCB0aGUgJy0nIGtleQotICAgICAg
ICBjYXNlIEdES19taW51czoKLSAgICAgICAgY2FzZSBHREtfdW5kZXJzY29yZToKLSAgICAgICAg
ICAgIHJldHVybiBWS19PRU1fTUlOVVM7IC8vY2FzZSAnLSc6IGNhc2UgJ18nOiByZXR1cm4gMHhC
RDsKLSAgICAgICAgICAgIC8vIFZLX09FTV9QRVJJT0QgKEJFKSBXaW5kb3dzIDIwMDAvWFA6IEZv
ciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLicga2V5Ci0gICAgICAgIGNhc2UgR0RLX3Blcmlv
ZDoKLSAgICAgICAgY2FzZSBHREtfZ3JlYXRlcjoKLSAgICAgICAgICAgIHJldHVybiBWS19PRU1f
UEVSSU9EOyAvL2Nhc2UgJy4nOiBjYXNlICc+JzogcmV0dXJuIDB4QkU7Ci0gICAgICAgICAgICAv
LyBWS19PRU1fMiAoQkYpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2Fu
IHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBr
ZXlib2FyZCwgdGhlICcvPycga2V5Ci0gICAgICAgIGNhc2UgR0RLX3NsYXNoOgotICAgICAgICBj
YXNlIEdES19xdWVzdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBWS19PRU1fMjsgLy9jYXNlICcv
JzogY2FzZSAnPyc6IHJldHVybiAweEJGOwotICAgICAgICAgICAgLy8gVktfT0VNXzMgKEMwKSBV
c2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJk
LiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnYH4n
IGtleQotICAgICAgICBjYXNlIEdES19hc2NpaXRpbGRlOgotICAgICAgICBjYXNlIEdES19xdW90
ZWxlZnQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfT0VNXzM7IC8vY2FzZSAnYCc6IGNhc2UgJ34n
OiByZXR1cm4gMHhDMDsKLSAgICAgICAgICAgIC8vIFZLX09FTV80IChEQikgVXNlZCBmb3IgbWlz
Y2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAy
MDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ1t7JyBrZXkKLSAgICAg
ICAgY2FzZSBHREtfYnJhY2tldGxlZnQ6Ci0gICAgICAgIGNhc2UgR0RLX2JyYWNlbGVmdDoKLSAg
ICAgICAgICAgIHJldHVybiBWS19PRU1fNDsgLy9jYXNlICdbJzogY2FzZSAneyc6IHJldHVybiAw
eERCOwotICAgICAgICAgICAgLy8gVktfT0VNXzUgKERDKSBVc2VkIGZvciBtaXNjZWxsYW5lb3Vz
IGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZv
ciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXHwnIGtleQotICAgICAgICBjYXNlIEdE
S19iYWNrc2xhc2g6Ci0gICAgICAgIGNhc2UgR0RLX2JhcjoKLSAgICAgICAgICAgIHJldHVybiBW
S19PRU1fNTsgLy9jYXNlICdcXCc6IGNhc2UgJ3wnOiByZXR1cm4gMHhEQzsKLSAgICAgICAgICAg
IC8vIFZLX09FTV82IChERCkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBj
YW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJk
IGtleWJvYXJkLCB0aGUgJ119JyBrZXkKLSAgICAgICAgY2FzZSBHREtfYnJhY2tldHJpZ2h0Ogot
ICAgICAgICBjYXNlIEdES19icmFjZXJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIFZLX09FTV82
OyAvLyBjYXNlICddJzogY2FzZSAnfSc6IHJldHVybiAweEREOwotICAgICAgICAgICAgLy8gVktf
T0VNXzcgKERFKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5
IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9h
cmQsIHRoZSAnc2luZ2xlLXF1b3RlL2RvdWJsZS1xdW90ZScga2V5Ci0gICAgICAgIGNhc2UgR0RL
X3F1b3RlcmlnaHQ6Ci0gICAgICAgIGNhc2UgR0RLX3F1b3RlZGJsOgotICAgICAgICAgICAgcmV0
dXJuIFZLX09FTV83OyAvLyBjYXNlICdcJyc6IGNhc2UgJyInOiByZXR1cm4gMHhERTsKLSAgICAg
ICAgICAgIC8vIFZLX09FTV84IChERikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJz
OyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4KLSAgICAgICAgICAgIC8vIFZLX09FTV8xMDIgKEUy
KSBXaW5kb3dzIDIwMDAvWFA6IEVpdGhlciB0aGUgYW5nbGUgYnJhY2tldCBrZXkgb3IgdGhlIGJh
Y2tzbGFzaCBrZXkgb24gdGhlIFJUIDEwMi1rZXkga2V5Ym9hcmQKLSAgICAgICAgICAgIC8vIFZL
X1BST0NFU1NLRVkgKEU1KSBXaW5kb3dzIDk1Lzk4L01lLCBXaW5kb3dzIE5UIDQuMCwgV2luZG93
cyAyMDAwL1hQOiBJTUUgUFJPQ0VTUyBrZXkKLSAgICAgICAgICAgIC8vIFZLX1BBQ0tFVCAoRTcp
IFdpbmRvd3MgMjAwMC9YUDogVXNlZCB0byBwYXNzIFVuaWNvZGUgY2hhcmFjdGVycyBhcyBpZiB0
aGV5IHdlcmUga2V5c3Ryb2tlcy4gVGhlIFZLX1BBQ0tFVCBrZXkgaXMgdGhlIGxvdyB3b3JkIG9m
IGEgMzItYml0IFZpcnR1YWwgS2V5IHZhbHVlIHVzZWQgZm9yIG5vbi1rZXlib2FyZCBpbnB1dCBt
ZXRob2RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFJlbWFyayBpbiBLRVlCRElOUFVULFNl
bmRJbnB1dCwgV01fS0VZRE9XTiwgYW5kIFdNX0tFWVVQCi0gICAgICAgICAgICAvLyBWS19BVFRO
IChGNikgQXR0biBrZXkKLSAgICAgICAgICAgIC8vIFZLX0NSU0VMIChGNykgQ3JTZWwga2V5Ci0g
ICAgICAgICAgICAvLyBWS19FWFNFTCAoRjgpIEV4U2VsIGtleQotICAgICAgICAgICAgLy8gVktf
RVJFT0YgKEY5KSBFcmFzZSBFT0Yga2V5Ci0gICAgICAgICAgICAvLyBWS19QTEFZIChGQSkgUGxh
eSBrZXkKLSAgICAgICAgICAgIC8vIFZLX1pPT00gKEZCKSBab29tIGtleQotICAgICAgICAgICAg
Ly8gVktfTk9OQU1FIChGQykgUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UKLSAgICAgICAgICAgIC8v
IFZLX1BBMSAoRkQpIFBBMSBrZXkKLSAgICAgICAgICAgIC8vIFZLX09FTV9DTEVBUiAoRkUpIENs
ZWFyIGtleQotICAgICAgICBjYXNlIEdES19GMToKLSAgICAgICAgY2FzZSBHREtfRjI6Ci0gICAg
ICAgIGNhc2UgR0RLX0YzOgotICAgICAgICBjYXNlIEdES19GNDoKLSAgICAgICAgY2FzZSBHREtf
RjU6Ci0gICAgICAgIGNhc2UgR0RLX0Y2OgotICAgICAgICBjYXNlIEdES19GNzoKLSAgICAgICAg
Y2FzZSBHREtfRjg6Ci0gICAgICAgIGNhc2UgR0RLX0Y5OgotICAgICAgICBjYXNlIEdES19GMTA6
Ci0gICAgICAgIGNhc2UgR0RLX0YxMToKLSAgICAgICAgY2FzZSBHREtfRjEyOgotICAgICAgICBj
YXNlIEdES19GMTM6Ci0gICAgICAgIGNhc2UgR0RLX0YxNDoKLSAgICAgICAgY2FzZSBHREtfRjE1
OgotICAgICAgICBjYXNlIEdES19GMTY6Ci0gICAgICAgIGNhc2UgR0RLX0YxNzoKLSAgICAgICAg
Y2FzZSBHREtfRjE4OgotICAgICAgICBjYXNlIEdES19GMTk6Ci0gICAgICAgIGNhc2UgR0RLX0Yy
MDoKLSAgICAgICAgY2FzZSBHREtfRjIxOgotICAgICAgICBjYXNlIEdES19GMjI6Ci0gICAgICAg
IGNhc2UgR0RLX0YyMzoKLSAgICAgICAgY2FzZSBHREtfRjI0OgotICAgICAgICAgICAgcmV0dXJu
IFZLX0YxICsgKGtleWNvZGUgLSBHREtfRjEpOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLX0KLQotU3RyaW5nIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHVuc2lnbmVkIHZhbCkKLXsKLSAgICBzd2l0Y2ggKHZh
bCkgewotICAgICAgICBjYXNlIEdES19JU09fRW50ZXI6Ci0gICAgICAgIGNhc2UgR0RLX0tQX0Vu
dGVyOgotICAgICAgICBjYXNlIEdES19SZXR1cm46Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCJcciIpOwotICAgICAgICBjYXNlIEdES19CYWNrU3BhY2U6Ci0gICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCJceDgiKTsKLSAgICAgICAgY2FzZSBHREtfVGFiOgotICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygiXHQiKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGd1bmljaGFyIGMg
PSBnZGtfa2V5dmFsX3RvX3VuaWNvZGUodmFsKTsKLSAgICAgICAgICAgIGdsb25nIG53YzsKLSAg
ICAgICAgICAgIGd1bmljaGFyMiogdWNoYXIxNiA9IGdfdWNzNF90b191dGYxNigmYywgMSwgMCwg
Jm53YywgMCk7Ci0KLSAgICAgICAgICAgIFN0cmluZyByZXRWYWw7Ci0gICAgICAgICAgICBpZiAo
dWNoYXIxNikKLSAgICAgICAgICAgICAgICByZXRWYWwgPSBTdHJpbmcoKFVDaGFyKil1Y2hhcjE2
LCBud2MpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldFZhbCA9IFN0cmlu
ZygpOwotCi0gICAgICAgICAgICBnX2ZyZWUodWNoYXIxNik7Ci0KLSAgICAgICAgICAgIHJldHVy
biByZXRWYWw7Ci0gICAgfQotfQotCi0vLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIHRoZSBvdGhl
ciBwbGF0Zm9ybSBldmVudCBjb25zdHJ1Y3RvcnMKLS8vIFRPRE86IG1fZ2RrRXZlbnRLZXkgc2hv
dWxkIGJlIHJlZmNvdW50ZWQKLVBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KEdka0V2ZW50S2V5KiBldmVudCkKLSAgICA6IG1fdHlwZSgoZXZlbnQtPnR5cGUgPT0g
R0RLX0tFWV9SRUxFQVNFKSA/IEtleVVwIDogS2V5RG93bikKLSAgICAsIG1fdGV4dChzaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoZXZlbnQtPmtleXZhbCkpCi0gICAgLCBtX3VubW9kaWZpZWRUZXh0KHNp
bmdsZUNoYXJhY3RlclN0cmluZyhldmVudC0+a2V5dmFsKSkKLSAgICAsIG1fa2V5SWRlbnRpZmll
cihrZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZShldmVudC0+a2V5dmFsKSkKLSAgICAsIG1fYXV0
b1JlcGVhdChmYWxzZSkKLSAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlD
b2RlRm9yR2RrS2V5Q29kZShldmVudC0+a2V5dmFsKSkKLSAgICAsIG1fbmF0aXZlVmlydHVhbEtl
eUNvZGUoZXZlbnQtPmtleXZhbCkKLSAgICAsIG1faXNLZXlwYWQoZXZlbnQtPmtleXZhbCA+PSBH
REtfS1BfU3BhY2UgJiYgZXZlbnQtPmtleXZhbCA8PSBHREtfS1BfOSkKLSAgICAsIG1fc2hpZnRL
ZXkoKGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLKSB8fCAoZXZlbnQtPmtleXZhbCA9PSBH
REtfMzI3MF9CYWNrVGFiKSkKLSAgICAsIG1fY3RybEtleShldmVudC0+c3RhdGUgJiBHREtfQ09O
VFJPTF9NQVNLKQotICAgICwgbV9hbHRLZXkoZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSykK
LSAgICAsIG1fbWV0YUtleShldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLKQotICAgICwgbV9n
ZGtFdmVudEtleShldmVudCkKLXsKLX0KLQotdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRp
c2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmls
aXR5TW9kZSkKLXsKLSAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8g
UmF3S2V5RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252
ZXJzaW9ucy4KLSAgICBBU1NFUlQobV90eXBlID09IEtleURvd24pOwotICAgIG1fdHlwZSA9IHR5
cGU7Ci0KLSAgICBpZiAoYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgewotICAgICAgICBtX3RleHQgPSBTdHJp
bmcoKTsKLSAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1fa2V5SWRlbnRpZmllciA9IFN0cmluZygpOwotICAgICAgICBtX3dpbmRvd3NW
aXJ0dWFsS2V5Q29kZSA9IDA7Ci0gICAgfQotfQotCi1ib29sIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6Y3VycmVudENhcHNMb2NrU3RhdGUoKQotewotICAgIHJldHVybiBnZGtfa2V5bWFwX2dldF9j
YXBzX2xvY2tfc3RhdGUoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpKTsKLX0KLQotdm9pZCBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2RpZmllclN0YXRlKGJvb2wmIHNoaWZ0S2V5
LCBib29sJiBjdHJsS2V5LCBib29sJiBhbHRLZXksIGJvb2wmIG1ldGFLZXkpCi17Ci0gICAgR2Rr
TW9kaWZpZXJUeXBlIHN0YXRlOwotICAgIGd0a19nZXRfY3VycmVudF9ldmVudF9zdGF0ZSgmc3Rh
dGUpOwotCi0gICAgc2hpZnRLZXkgPSBzdGF0ZSAmIEdES19TSElGVF9NQVNLOwotICAgIGN0cmxL
ZXkgPSBzdGF0ZSAmIEdES19DT05UUk9MX01BU0s7Ci0gICAgYWx0S2V5ID0gc3RhdGUgJiBHREtf
TU9EMV9NQVNLOwotICAgIG1ldGFLZXkgPSBzdGF0ZSAmIEdES19NRVRBX01BU0s7Ci19Ci0KLUdk
a0V2ZW50S2V5KiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Omdka0V2ZW50S2V5KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9nZGtFdmVudEtleTsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL01vdXNlRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9Nb3VzZUV2ZW50R3RrLmNwcAkocmV2aXNpb24gODI1MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTW91c2VFdmVudEd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVt
bWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCi0qIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSogYXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0qIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0KLSNpbmNsdWRlICJBc3NlcnRpb25zLmgi
Ci0KLSNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRklY
TUU6IFdvdWxkIGJlIGV2ZW4gYmV0dGVyIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbW9kaWZpZXIgaXMg
QWx0IGluc3RlYWQgb2YgYWx3YXlzIHVzaW5nIEdES19NT0QxX01BU0suCi0KLS8vIEtlZXAgdGhp
cyBpbiBzeW5jIHdpdGggdGhlIG90aGVyIHBsYXRmb3JtIGV2ZW50IGNvbnN0cnVjdG9ycwotUGxh
dGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRCdXR0b24qIGV2ZW50
KQotewotICAgIG1fdGltZXN0YW1wID0gZXZlbnQtPnRpbWU7Ci0gICAgbV9wb3NpdGlvbiA9IElu
dFBvaW50KChpbnQpZXZlbnQtPngsIChpbnQpZXZlbnQtPnkpOwotICAgIG1fZ2xvYmFsUG9zaXRp
b24gPSBJbnRQb2ludCgoaW50KWV2ZW50LT54X3Jvb3QsIChpbnQpZXZlbnQtPnlfcm9vdCk7Ci0g
ICAgbV9zaGlmdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLOwotICAgIG1fY3Ry
bEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0s7Ci0gICAgbV9hbHRLZXkgPSBl
dmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLOwotICAgIG1fbWV0YUtleSA9IGV2ZW50LT5zdGF0
ZSAmIEdES19NRVRBX01BU0s7Ci0KLSAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7Ci0gICAgY2Fz
ZSBHREtfQlVUVE9OX1BSRVNTOgotICAgIGNhc2UgR0RLXzJCVVRUT05fUFJFU1M6Ci0gICAgY2Fz
ZSBHREtfM0JVVFRPTl9QUkVTUzoKLSAgICBjYXNlIEdES19CVVRUT05fUkVMRUFTRToKLSAgICAg
ICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKLSAgICAgICAgaWYgKGV2ZW50LT50
eXBlID09IEdES19CVVRUT05fUkVMRUFTRSkgewotICAgICAgICAgICAgbV9ldmVudFR5cGUgPSBN
b3VzZUV2ZW50UmVsZWFzZWQ7Ci0gICAgICAgICAgICBtX2NsaWNrQ291bnQgPSAwOwotICAgICAg
ICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlID09IEdES19CVVRUT05fUFJFU1MpCi0gICAgICAgICAg
ICBtX2NsaWNrQ291bnQgPSAxOwotICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSA9PSBHREtf
MkJVVFRPTl9QUkVTUykKLSAgICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDI7Ci0gICAgICAgIGVs
c2UgaWYgKGV2ZW50LT50eXBlID09IEdES18zQlVUVE9OX1BSRVNTKQotICAgICAgICAgICAgbV9j
bGlja0NvdW50ID0gMzsKLQotICAgICAgICBpZiAoZXZlbnQtPmJ1dHRvbiA9PSAxKQotICAgICAg
ICAgICAgbV9idXR0b24gPSBMZWZ0QnV0dG9uOwotICAgICAgICBlbHNlIGlmIChldmVudC0+YnV0
dG9uID09IDIpCi0gICAgICAgICAgICBtX2J1dHRvbiA9IE1pZGRsZUJ1dHRvbjsKLSAgICAgICAg
ZWxzZSBpZiAoZXZlbnQtPmJ1dHRvbiA9PSAzKQotICAgICAgICAgICAgbV9idXR0b24gPSBSaWdo
dEJ1dHRvbjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICB9OwotfQotCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3Jt
TW91c2VFdmVudChHZGtFdmVudE1vdGlvbiogbW90aW9uKQotewotICAgIG1fdGltZXN0YW1wID0g
bW90aW9uLT50aW1lOwotICAgIG1fcG9zaXRpb24gPSBJbnRQb2ludCgoaW50KW1vdGlvbi0+eCwg
KGludCltb3Rpb24tPnkpOwotICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludCgoaW50KW1v
dGlvbi0+eF9yb290LCAoaW50KW1vdGlvbi0+eV9yb290KTsKLSAgICBtX3NoaWZ0S2V5ID0gbW90
aW9uLT5zdGF0ZSAmIEdES19TSElGVF9NQVNLOwotICAgIG1fY3RybEtleSA9IG1vdGlvbi0+c3Rh
dGUgJiBHREtfQ09OVFJPTF9NQVNLOwotICAgIG1fYWx0S2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdE
S19NT0QxX01BU0s7Ci0gICAgbV9tZXRhS2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19NT0QyX01B
U0s7Ci0KLSAgICBzd2l0Y2ggKG1vdGlvbi0+dHlwZSkgewotICAgIGNhc2UgR0RLX01PVElPTl9O
T1RJRlk6Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOwotICAgICAgICBt
X2J1dHRvbiA9IE5vQnV0dG9uOwotICAgICAgICBtX2NsaWNrQ291bnQgPSAwOwotICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
OwotCi0gICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfQlVUVE9OMV9NQVNLKQotICAgICAgICBt
X2J1dHRvbiA9IExlZnRCdXR0b247Ci0gICAgZWxzZSBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19C
VVRUT04yX01BU0spCi0gICAgICAgIG1fYnV0dG9uID0gTWlkZGxlQnV0dG9uOwotICAgIGVsc2Ug
aWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfQlVUVE9OM19NQVNLKQotICAgICAgICBtX2J1dHRvbiA9
IFJpZ2h0QnV0dG9uOwotfQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAJKHJldmlzaW9uIDgyNTI4
KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsuY3BwOjgyNTI4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaCIKKworI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1
ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCisKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+CisjaW5j
bHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhN
RTogVGhpcyBpcyBpbmNvbXBsZXRlLiAgV2Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIG1pcnJvcgor
Ly8gbW9yZSBsaWtlIHdoYXQgRmlyZWZveCBkb2VzLCBhbmQgZ2VuZXJhdGUgdGhlc2Ugc3dpdGNo
IHN0YXRlbWVudHMKKy8vIGF0IGJ1aWxkIHRpbWUuCitTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQoreworICAg
IHN3aXRjaCAoa2V5Q29kZSkgeworICAgICAgICBjYXNlIEdES19NZW51OgorICAgICAgICBjYXNl
IEdES19BbHRfTDoKKyAgICAgICAgY2FzZSBHREtfQWx0X1I6CisgICAgICAgICAgICByZXR1cm4g
IkFsdCI7CisgICAgICAgIGNhc2UgR0RLX0NsZWFyOgorICAgICAgICAgICAgcmV0dXJuICJDbGVh
ciI7CisgICAgICAgIGNhc2UgR0RLX0Rvd246CisgICAgICAgICAgICByZXR1cm4gIkRvd24iOwor
ICAgICAgICAgICAgLy8gIkVuZCIKKyAgICAgICAgY2FzZSBHREtfRW5kOgorICAgICAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICAgICAgLy8gIkVudGVyIgorICAgICAgICBjYXNlIEdES19J
U09fRW50ZXI6CisgICAgICAgIGNhc2UgR0RLX0tQX0VudGVyOgorICAgICAgICBjYXNlIEdES19S
ZXR1cm46CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgY2FzZSBHREtfRXhl
Y3V0ZToKKyAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgIGNhc2UgR0RLX0Yx
OgorICAgICAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAgIGNhc2UgR0RLX0YyOgorICAgICAg
ICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgIGNhc2UgR0RLX0YzOgorICAgICAgICAgICAgcmV0
dXJuICJGMyI7CisgICAgICAgIGNhc2UgR0RLX0Y0OgorICAgICAgICAgICAgcmV0dXJuICJGNCI7
CisgICAgICAgIGNhc2UgR0RLX0Y1OgorICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAg
IGNhc2UgR0RLX0Y2OgorICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIGNhc2UgR0RL
X0Y3OgorICAgICAgICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIGNhc2UgR0RLX0Y4OgorICAg
ICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgIGNhc2UgR0RLX0Y5OgorICAgICAgICAgICAg
cmV0dXJuICJGOSI7CisgICAgICAgIGNhc2UgR0RLX0YxMDoKKyAgICAgICAgICAgIHJldHVybiAi
RjEwIjsKKyAgICAgICAgY2FzZSBHREtfRjExOgorICAgICAgICAgICAgcmV0dXJuICJGMTEiOwor
ICAgICAgICBjYXNlIEdES19GMTI6CisgICAgICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAg
IGNhc2UgR0RLX0YxMzoKKyAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgY2FzZSBH
REtfRjE0OgorICAgICAgICAgICAgcmV0dXJuICJGMTQiOworICAgICAgICBjYXNlIEdES19GMTU6
CisgICAgICAgICAgICByZXR1cm4gIkYxNSI7CisgICAgICAgIGNhc2UgR0RLX0YxNjoKKyAgICAg
ICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgY2FzZSBHREtfRjE3OgorICAgICAgICAgICAg
cmV0dXJuICJGMTciOworICAgICAgICBjYXNlIEdES19GMTg6CisgICAgICAgICAgICByZXR1cm4g
IkYxOCI7CisgICAgICAgIGNhc2UgR0RLX0YxOToKKyAgICAgICAgICAgIHJldHVybiAiRjE5IjsK
KyAgICAgICAgY2FzZSBHREtfRjIwOgorICAgICAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAg
ICBjYXNlIEdES19GMjE6CisgICAgICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIGNhc2Ug
R0RLX0YyMjoKKyAgICAgICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgY2FzZSBHREtfRjIz
OgorICAgICAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICBjYXNlIEdES19GMjQ6CisgICAg
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIGNhc2UgR0RLX0hlbHA6CisgICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICBjYXNlIEdES19Ib21lOgorICAgICAgICAgICAgcmV0
dXJuICJIb21lIjsKKyAgICAgICAgY2FzZSBHREtfSW5zZXJ0OgorICAgICAgICAgICAgcmV0dXJu
ICJJbnNlcnQiOworICAgICAgICBjYXNlIEdES19MZWZ0OgorICAgICAgICAgICAgcmV0dXJuICJM
ZWZ0IjsKKyAgICAgICAgY2FzZSBHREtfUGFnZV9Eb3duOgorICAgICAgICAgICAgcmV0dXJuICJQ
YWdlRG93biI7CisgICAgICAgIGNhc2UgR0RLX1BhZ2VfVXA6CisgICAgICAgICAgICByZXR1cm4g
IlBhZ2VVcCI7CisgICAgICAgIGNhc2UgR0RLX1BhdXNlOgorICAgICAgICAgICAgcmV0dXJuICJQ
YXVzZSI7CisgICAgICAgIGNhc2UgR0RLXzMyNzBfUHJpbnRTY3JlZW46CisgICAgICAgIGNhc2Ug
R0RLX1ByaW50OgorICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIGNh
c2UgR0RLX1JpZ2h0OgorICAgICAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIGNhc2Ug
R0RLX1NlbGVjdDoKKyAgICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgY2FzZSBH
REtfVXA6CisgICAgICAgICAgICByZXR1cm4gIlVwIjsKKyAgICAgICAgICAgIC8vIFN0YW5kYXJk
IHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCisgICAgICAgIGNhc2UgR0RLX0RlbGV0ZToK
KyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgY2FzZSBHREtfQmFja1NwYWNl
OgorICAgICAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBjYXNlIEdES19JU09fTGVm
dF9UYWI6CisgICAgICAgIGNhc2UgR0RLXzMyNzBfQmFja1RhYjoKKyAgICAgICAgY2FzZSBHREtf
VGFiOgorICAgICAgICAgICAgcmV0dXJuICJVKzAwMDkiOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJVKyUwNFgiLCBnZGtfa2V5dmFsX3RvX3Vu
aWNvZGUoZ2RrX2tleXZhbF90b191cHBlcihrZXlDb2RlKSkpOworICAgIH0KK30KKworaW50IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6d2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKHVuc2lnbmVk
IGtleWNvZGUpCit7CisgICAgc3dpdGNoIChrZXljb2RlKSB7CisgICAgICAgIGNhc2UgR0RLX0tQ
XzA6CisgICAgICAgICAgICByZXR1cm4gVktfTlVNUEFEMDsvLyAoNjApIE51bWVyaWMga2V5cGFk
IDAga2V5CisgICAgICAgIGNhc2UgR0RLX0tQXzE6CisgICAgICAgICAgICByZXR1cm4gVktfTlVN
UEFEMTsvLyAoNjEpIE51bWVyaWMga2V5cGFkIDEga2V5CisgICAgICAgIGNhc2UgR0RLX0tQXzI6
CisgICAgICAgICAgICByZXR1cm4gIFZLX05VTVBBRDI7IC8vICg2MikgTnVtZXJpYyBrZXlwYWQg
MiBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfMzoKKyAgICAgICAgICAgIHJldHVybiBWS19OVU1Q
QUQzOyAvLyAoNjMpIE51bWVyaWMga2V5cGFkIDMga2V5CisgICAgICAgIGNhc2UgR0RLX0tQXzQ6
CisgICAgICAgICAgICByZXR1cm4gVktfTlVNUEFENDsgLy8gKDY0KSBOdW1lcmljIGtleXBhZCA0
IGtleQorICAgICAgICBjYXNlIEdES19LUF81OgorICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBB
RDU7IC8vKDY1KSBOdW1lcmljIGtleXBhZCA1IGtleQorICAgICAgICBjYXNlIEdES19LUF82Ogor
ICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDY7IC8vICg2NikgTnVtZXJpYyBrZXlwYWQgNiBr
ZXkKKyAgICAgICAgY2FzZSBHREtfS1BfNzoKKyAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQ3
OyAvLyAoNjcpIE51bWVyaWMga2V5cGFkIDcga2V5CisgICAgICAgIGNhc2UgR0RLX0tQXzg6Cisg
ICAgICAgICAgICByZXR1cm4gVktfTlVNUEFEODsgLy8gKDY4KSBOdW1lcmljIGtleXBhZCA4IGtl
eQorICAgICAgICBjYXNlIEdES19LUF85OgorICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDk7
IC8vICg2OSkgTnVtZXJpYyBrZXlwYWQgOSBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfTXVsdGlw
bHk6CisgICAgICAgICAgICByZXR1cm4gVktfTVVMVElQTFk7IC8vICg2QSkgTXVsdGlwbHkga2V5
CisgICAgICAgIGNhc2UgR0RLX0tQX0FkZDoKKyAgICAgICAgICAgIHJldHVybiBWS19BREQ7IC8v
ICg2QikgQWRkIGtleQorICAgICAgICBjYXNlIEdES19LUF9TdWJ0cmFjdDoKKyAgICAgICAgICAg
IHJldHVybiBWS19TVUJUUkFDVDsgLy8gKDZEKSBTdWJ0cmFjdCBrZXkKKyAgICAgICAgY2FzZSBH
REtfS1BfRGVjaW1hbDoKKyAgICAgICAgICAgIHJldHVybiBWS19ERUNJTUFMOyAvLyAoNkUpIERl
Y2ltYWwga2V5CisgICAgICAgIGNhc2UgR0RLX0tQX0RpdmlkZToKKyAgICAgICAgICAgIHJldHVy
biBWS19ESVZJREU7IC8vICg2RikgRGl2aWRlIGtleQorCisgICAgICAgIGNhc2UgR0RLX0tQX1Bh
Z2VfVXA6CisgICAgICAgICAgICByZXR1cm4gVktfUFJJT1I7IC8vICgyMSkgUEFHRSBVUCBrZXkK
KyAgICAgICAgY2FzZSBHREtfS1BfUGFnZV9Eb3duOgorICAgICAgICAgICAgcmV0dXJuIFZLX05F
WFQ7IC8vICgyMikgUEFHRSBET1dOIGtleQorICAgICAgICBjYXNlIEdES19LUF9FbmQ6CisgICAg
ICAgICAgICByZXR1cm4gVktfRU5EOyAvLyAoMjMpIEVORCBrZXkKKyAgICAgICAgY2FzZSBHREtf
S1BfSG9tZToKKyAgICAgICAgICAgIHJldHVybiBWS19IT01FOyAvLyAoMjQpIEhPTUUga2V5Cisg
ICAgICAgIGNhc2UgR0RLX0tQX0xlZnQ6CisgICAgICAgICAgICByZXR1cm4gVktfTEVGVDsgLy8g
KDI1KSBMRUZUIEFSUk9XIGtleQorICAgICAgICBjYXNlIEdES19LUF9VcDoKKyAgICAgICAgICAg
IHJldHVybiBWS19VUDsgLy8gKDI2KSBVUCBBUlJPVyBrZXkKKyAgICAgICAgY2FzZSBHREtfS1Bf
UmlnaHQ6CisgICAgICAgICAgICByZXR1cm4gVktfUklHSFQ7IC8vICgyNykgUklHSFQgQVJST1cg
a2V5CisgICAgICAgIGNhc2UgR0RLX0tQX0Rvd246CisgICAgICAgICAgICByZXR1cm4gVktfRE9X
TjsgLy8gKDI4KSBET1dOIEFSUk9XIGtleQorCisgICAgICAgIGNhc2UgR0RLX0JhY2tTcGFjZToK
KyAgICAgICAgICAgIHJldHVybiBWS19CQUNLOyAvLyAoMDgpIEJBQ0tTUEFDRSBrZXkKKyAgICAg
ICAgY2FzZSBHREtfSVNPX0xlZnRfVGFiOgorICAgICAgICBjYXNlIEdES18zMjcwX0JhY2tUYWI6
CisgICAgICAgIGNhc2UgR0RLX1RhYjoKKyAgICAgICAgICAgIHJldHVybiBWS19UQUI7IC8vICgw
OSkgVEFCIGtleQorICAgICAgICBjYXNlIEdES19DbGVhcjoKKyAgICAgICAgICAgIHJldHVybiBW
S19DTEVBUjsgLy8gKDBDKSBDTEVBUiBrZXkKKyAgICAgICAgY2FzZSBHREtfSVNPX0VudGVyOgor
ICAgICAgICBjYXNlIEdES19LUF9FbnRlcjoKKyAgICAgICAgY2FzZSBHREtfUmV0dXJuOgorICAg
ICAgICAgICAgcmV0dXJuIFZLX1JFVFVSTjsgLy8oMEQpIFJldHVybiBrZXkKKyAgICAgICAgY2Fz
ZSBHREtfU2hpZnRfTDoKKyAgICAgICAgY2FzZSBHREtfU2hpZnRfUjoKKyAgICAgICAgICAgIHJl
dHVybiBWS19TSElGVDsgLy8gKDEwKSBTSElGVCBrZXkKKyAgICAgICAgY2FzZSBHREtfQ29udHJv
bF9MOgorICAgICAgICBjYXNlIEdES19Db250cm9sX1I6CisgICAgICAgICAgICByZXR1cm4gVktf
Q09OVFJPTDsgLy8gKDExKSBDVFJMIGtleQorICAgICAgICBjYXNlIEdES19NZW51OgorICAgICAg
ICAgICAgcmV0dXJuIFZLX0FQUFM7ICAvLyAoNUQpIEFwcGxpY2F0aW9ucyBrZXkgKE5hdHVyYWwg
a2V5Ym9hcmQpCisgICAgICAgIGNhc2UgR0RLX0FsdF9MOgorICAgICAgICBjYXNlIEdES19BbHRf
UjoKKyAgICAgICAgICAgIHJldHVybiBWS19NRU5VOyAvLyAoMTIpIEFMVCBrZXkKKworICAgICAg
ICBjYXNlIEdES19QYXVzZToKKyAgICAgICAgICAgIHJldHVybiBWS19QQVVTRTsgLy8gKDEzKSBQ
QVVTRSBrZXkKKyAgICAgICAgY2FzZSBHREtfQ2Fwc19Mb2NrOgorICAgICAgICAgICAgcmV0dXJu
IFZLX0NBUElUQUw7IC8vICgxNCkgQ0FQUyBMT0NLIGtleQorICAgICAgICBjYXNlIEdES19LYW5h
X0xvY2s6CisgICAgICAgIGNhc2UgR0RLX0thbmFfU2hpZnQ6CisgICAgICAgICAgICByZXR1cm4g
VktfS0FOQTsgLy8gKDE1KSBJbnB1dCBNZXRob2QgRWRpdG9yIChJTUUpIEthbmEgbW9kZQorICAg
ICAgICBjYXNlIEdES19IYW5ndWw6CisgICAgICAgICAgICByZXR1cm4gVktfSEFOR1VMOyAvLyBW
S19IQU5HVUwgKDE1KSBJTUUgSGFuZ3VsIG1vZGUKKyAgICAgICAgICAgIC8vIFZLX0pVTkpBICgx
NykgSU1FIEp1bmphIG1vZGUKKyAgICAgICAgICAgIC8vIFZLX0ZJTkFMICgxOCkgSU1FIGZpbmFs
IG1vZGUKKyAgICAgICAgY2FzZSBHREtfSGFuZ3VsX0hhbmphOgorICAgICAgICAgICAgcmV0dXJu
IFZLX0hBTkpBOyAvLyAoMTkpIElNRSBIYW5qYSBtb2RlCisgICAgICAgIGNhc2UgR0RLX0thbmpp
OgorICAgICAgICAgICAgcmV0dXJuIFZLX0tBTkpJOyAvLyAoMTkpIElNRSBLYW5qaSBtb2RlCisg
ICAgICAgIGNhc2UgR0RLX0VzY2FwZToKKyAgICAgICAgICAgIHJldHVybiBWS19FU0NBUEU7IC8v
ICgxQikgRVNDIGtleQorICAgICAgICAgICAgLy8gVktfQ09OVkVSVCAoMUMpIElNRSBjb252ZXJ0
CisgICAgICAgICAgICAvLyBWS19OT05DT05WRVJUICgxRCkgSU1FIG5vbmNvbnZlcnQKKyAgICAg
ICAgICAgIC8vIFZLX0FDQ0VQVCAoMUUpIElNRSBhY2NlcHQKKyAgICAgICAgICAgIC8vIFZLX01P
REVDSEFOR0UgKDFGKSBJTUUgbW9kZSBjaGFuZ2UgcmVxdWVzdAorICAgICAgICBjYXNlIEdES19z
cGFjZToKKyAgICAgICAgICAgIHJldHVybiBWS19TUEFDRTsgLy8gKDIwKSBTUEFDRUJBUgorICAg
ICAgICBjYXNlIEdES19QYWdlX1VwOgorICAgICAgICAgICAgcmV0dXJuIFZLX1BSSU9SOyAvLyAo
MjEpIFBBR0UgVVAga2V5CisgICAgICAgIGNhc2UgR0RLX1BhZ2VfRG93bjoKKyAgICAgICAgICAg
IHJldHVybiBWS19ORVhUOyAvLyAoMjIpIFBBR0UgRE9XTiBrZXkKKyAgICAgICAgY2FzZSBHREtf
RW5kOgorICAgICAgICAgICAgcmV0dXJuIFZLX0VORDsgLy8gKDIzKSBFTkQga2V5CisgICAgICAg
IGNhc2UgR0RLX0hvbWU6CisgICAgICAgICAgICByZXR1cm4gVktfSE9NRTsgLy8gKDI0KSBIT01F
IGtleQorICAgICAgICBjYXNlIEdES19MZWZ0OgorICAgICAgICAgICAgcmV0dXJuIFZLX0xFRlQ7
IC8vICgyNSkgTEVGVCBBUlJPVyBrZXkKKyAgICAgICAgY2FzZSBHREtfVXA6CisgICAgICAgICAg
ICByZXR1cm4gVktfVVA7IC8vICgyNikgVVAgQVJST1cga2V5CisgICAgICAgIGNhc2UgR0RLX1Jp
Z2h0OgorICAgICAgICAgICAgcmV0dXJuIFZLX1JJR0hUOyAvLyAoMjcpIFJJR0hUIEFSUk9XIGtl
eQorICAgICAgICBjYXNlIEdES19Eb3duOgorICAgICAgICAgICAgcmV0dXJuIFZLX0RPV047IC8v
ICgyOCkgRE9XTiBBUlJPVyBrZXkKKyAgICAgICAgY2FzZSBHREtfU2VsZWN0OgorICAgICAgICAg
ICAgcmV0dXJuIFZLX1NFTEVDVDsgLy8gKDI5KSBTRUxFQ1Qga2V5CisgICAgICAgIGNhc2UgR0RL
X1ByaW50OgorICAgICAgICAgICAgcmV0dXJuIFZLX1NOQVBTSE9UOyAvLyAoMkMpIFBSSU5UIFND
UkVFTiBrZXkKKyAgICAgICAgY2FzZSBHREtfRXhlY3V0ZToKKyAgICAgICAgICAgIHJldHVybiBW
S19FWEVDVVRFOy8vICgyQikgRVhFQ1VURSBrZXkKKyAgICAgICAgY2FzZSBHREtfSW5zZXJ0Ogor
ICAgICAgICBjYXNlIEdES19LUF9JbnNlcnQ6CisgICAgICAgICAgICByZXR1cm4gVktfSU5TRVJU
OyAvLyAoMkQpIElOUyBrZXkKKyAgICAgICAgY2FzZSBHREtfRGVsZXRlOgorICAgICAgICBjYXNl
IEdES19LUF9EZWxldGU6CisgICAgICAgICAgICByZXR1cm4gVktfREVMRVRFOyAvLyAoMkUpIERF
TCBrZXkKKyAgICAgICAgY2FzZSBHREtfSGVscDoKKyAgICAgICAgICAgIHJldHVybiBWS19IRUxQ
OyAvLyAoMkYpIEhFTFAga2V5CisgICAgICAgIGNhc2UgR0RLXzA6CisgICAgICAgIGNhc2UgR0RL
X3BhcmVucmlnaHQ6CisgICAgICAgICAgICByZXR1cm4gVktfMDsgICAgLy8gICgzMCkgMCkga2V5
CisgICAgICAgIGNhc2UgR0RLXzE6CisgICAgICAgIGNhc2UgR0RLX2V4Y2xhbToKKyAgICAgICAg
ICAgIHJldHVybiBWS18xOyAvLyAgKDMxKSAxICEga2V5CisgICAgICAgIGNhc2UgR0RLXzI6Cisg
ICAgICAgIGNhc2UgR0RLX2F0OgorICAgICAgICAgICAgcmV0dXJuIFZLXzI7IC8vICAoMzIpIDIg
JiBrZXkKKyAgICAgICAgY2FzZSBHREtfMzoKKyAgICAgICAgY2FzZSBHREtfbnVtYmVyc2lnbjoK
KyAgICAgICAgICAgIHJldHVybiBWS18zOyAvL2Nhc2UgJzMnOiBjYXNlICcjJzsKKyAgICAgICAg
Y2FzZSBHREtfNDoKKyAgICAgICAgY2FzZSBHREtfZG9sbGFyOiAvLyAgKDM0KSA0IGtleSAnJCc7
CisgICAgICAgICAgICByZXR1cm4gVktfNDsKKyAgICAgICAgY2FzZSBHREtfNToKKyAgICAgICAg
Y2FzZSBHREtfcGVyY2VudDoKKyAgICAgICAgICAgIHJldHVybiBWS181OyAvLyAgKDM1KSA1IGtl
eSAgJyUnCisgICAgICAgIGNhc2UgR0RLXzY6CisgICAgICAgIGNhc2UgR0RLX2FzY2lpY2lyY3Vt
OgorICAgICAgICAgICAgcmV0dXJuIFZLXzY7IC8vICAoMzYpIDYga2V5ICAnXicKKyAgICAgICAg
Y2FzZSBHREtfNzoKKyAgICAgICAgY2FzZSBHREtfYW1wZXJzYW5kOgorICAgICAgICAgICAgcmV0
dXJuIFZLXzc7IC8vICAoMzcpIDcga2V5ICBjYXNlICcmJworICAgICAgICBjYXNlIEdES184Ogor
ICAgICAgICBjYXNlIEdES19hc3RlcmlzazoKKyAgICAgICAgICAgIHJldHVybiBWS184OyAvLyAg
KDM4KSA4IGtleSAgJyonCisgICAgICAgIGNhc2UgR0RLXzk6CisgICAgICAgIGNhc2UgR0RLX3Bh
cmVubGVmdDoKKyAgICAgICAgICAgIHJldHVybiBWS185OyAvLyAgKDM5KSA5IGtleSAnKCcKKyAg
ICAgICAgY2FzZSBHREtfYToKKyAgICAgICAgY2FzZSBHREtfQToKKyAgICAgICAgICAgIHJldHVy
biBWS19BOyAvLyAgKDQxKSBBIGtleSBjYXNlICdhJzogY2FzZSAnQSc6IHJldHVybiAweDQxOwor
ICAgICAgICBjYXNlIEdES19iOgorICAgICAgICBjYXNlIEdES19COgorICAgICAgICAgICAgcmV0
dXJuIFZLX0I7IC8vICAoNDIpIEIga2V5IGNhc2UgJ2InOiBjYXNlICdCJzogcmV0dXJuIDB4NDI7
CisgICAgICAgIGNhc2UgR0RLX2M6CisgICAgICAgIGNhc2UgR0RLX0M6CisgICAgICAgICAgICBy
ZXR1cm4gVktfQzsgLy8gICg0MykgQyBrZXkgY2FzZSAnYyc6IGNhc2UgJ0MnOiByZXR1cm4gMHg0
MzsKKyAgICAgICAgY2FzZSBHREtfZDoKKyAgICAgICAgY2FzZSBHREtfRDoKKyAgICAgICAgICAg
IHJldHVybiBWS19EOyAvLyAgKDQ0KSBEIGtleSBjYXNlICdkJzogY2FzZSAnRCc6IHJldHVybiAw
eDQ0OworICAgICAgICBjYXNlIEdES19lOgorICAgICAgICBjYXNlIEdES19FOgorICAgICAgICAg
ICAgcmV0dXJuIFZLX0U7IC8vICAoNDUpIEUga2V5IGNhc2UgJ2UnOiBjYXNlICdFJzogcmV0dXJu
IDB4NDU7CisgICAgICAgIGNhc2UgR0RLX2Y6CisgICAgICAgIGNhc2UgR0RLX0Y6CisgICAgICAg
ICAgICByZXR1cm4gVktfRjsgLy8gICg0NikgRiBrZXkgY2FzZSAnZic6IGNhc2UgJ0YnOiByZXR1
cm4gMHg0NjsKKyAgICAgICAgY2FzZSBHREtfZzoKKyAgICAgICAgY2FzZSBHREtfRzoKKyAgICAg
ICAgICAgIHJldHVybiBWS19HOyAvLyAgKDQ3KSBHIGtleSBjYXNlICdnJzogY2FzZSAnRyc6IHJl
dHVybiAweDQ3OworICAgICAgICBjYXNlIEdES19oOgorICAgICAgICBjYXNlIEdES19IOgorICAg
ICAgICAgICAgcmV0dXJuIFZLX0g7IC8vICAoNDgpIEgga2V5IGNhc2UgJ2gnOiBjYXNlICdIJzog
cmV0dXJuIDB4NDg7CisgICAgICAgIGNhc2UgR0RLX2k6CisgICAgICAgIGNhc2UgR0RLX0k6Cisg
ICAgICAgICAgICByZXR1cm4gVktfSTsgLy8gICg0OSkgSSBrZXkgY2FzZSAnaSc6IGNhc2UgJ0kn
OiByZXR1cm4gMHg0OTsKKyAgICAgICAgY2FzZSBHREtfajoKKyAgICAgICAgY2FzZSBHREtfSjoK
KyAgICAgICAgICAgIHJldHVybiBWS19KOyAvLyAgKDRBKSBKIGtleSBjYXNlICdqJzogY2FzZSAn
Sic6IHJldHVybiAweDRBOworICAgICAgICBjYXNlIEdES19rOgorICAgICAgICBjYXNlIEdES19L
OgorICAgICAgICAgICAgcmV0dXJuIFZLX0s7IC8vICAoNEIpIEsga2V5IGNhc2UgJ2snOiBjYXNl
ICdLJzogcmV0dXJuIDB4NEI7CisgICAgICAgIGNhc2UgR0RLX2w6CisgICAgICAgIGNhc2UgR0RL
X0w6CisgICAgICAgICAgICByZXR1cm4gVktfTDsgLy8gICg0QykgTCBrZXkgY2FzZSAnbCc6IGNh
c2UgJ0wnOiByZXR1cm4gMHg0QzsKKyAgICAgICAgY2FzZSBHREtfbToKKyAgICAgICAgY2FzZSBH
REtfTToKKyAgICAgICAgICAgIHJldHVybiBWS19NOyAvLyAgKDREKSBNIGtleSBjYXNlICdtJzog
Y2FzZSAnTSc6IHJldHVybiAweDREOworICAgICAgICBjYXNlIEdES19uOgorICAgICAgICBjYXNl
IEdES19OOgorICAgICAgICAgICAgcmV0dXJuIFZLX047IC8vICAoNEUpIE4ga2V5IGNhc2UgJ24n
OiBjYXNlICdOJzogcmV0dXJuIDB4NEU7CisgICAgICAgIGNhc2UgR0RLX286CisgICAgICAgIGNh
c2UgR0RLX086CisgICAgICAgICAgICByZXR1cm4gVktfTzsgLy8gICg0RikgTyBrZXkgY2FzZSAn
byc6IGNhc2UgJ08nOiByZXR1cm4gMHg0RjsKKyAgICAgICAgY2FzZSBHREtfcDoKKyAgICAgICAg
Y2FzZSBHREtfUDoKKyAgICAgICAgICAgIHJldHVybiBWS19QOyAvLyAgKDUwKSBQIGtleSBjYXNl
ICdwJzogY2FzZSAnUCc6IHJldHVybiAweDUwOworICAgICAgICBjYXNlIEdES19xOgorICAgICAg
ICBjYXNlIEdES19ROgorICAgICAgICAgICAgcmV0dXJuIFZLX1E7IC8vICAoNTEpIFEga2V5IGNh
c2UgJ3EnOiBjYXNlICdRJzogcmV0dXJuIDB4NTE7CisgICAgICAgIGNhc2UgR0RLX3I6CisgICAg
ICAgIGNhc2UgR0RLX1I6CisgICAgICAgICAgICByZXR1cm4gVktfUjsgLy8gICg1MikgUiBrZXkg
Y2FzZSAncic6IGNhc2UgJ1InOiByZXR1cm4gMHg1MjsKKyAgICAgICAgY2FzZSBHREtfczoKKyAg
ICAgICAgY2FzZSBHREtfUzoKKyAgICAgICAgICAgIHJldHVybiBWS19TOyAvLyAgKDUzKSBTIGtl
eSBjYXNlICdzJzogY2FzZSAnUyc6IHJldHVybiAweDUzOworICAgICAgICBjYXNlIEdES190Ogor
ICAgICAgICBjYXNlIEdES19UOgorICAgICAgICAgICAgcmV0dXJuIFZLX1Q7IC8vICAoNTQpIFQg
a2V5IGNhc2UgJ3QnOiBjYXNlICdUJzogcmV0dXJuIDB4NTQ7CisgICAgICAgIGNhc2UgR0RLX3U6
CisgICAgICAgIGNhc2UgR0RLX1U6CisgICAgICAgICAgICByZXR1cm4gVktfVTsgLy8gICg1NSkg
VSBrZXkgY2FzZSAndSc6IGNhc2UgJ1UnOiByZXR1cm4gMHg1NTsKKyAgICAgICAgY2FzZSBHREtf
djoKKyAgICAgICAgY2FzZSBHREtfVjoKKyAgICAgICAgICAgIHJldHVybiBWS19WOyAvLyAgKDU2
KSBWIGtleSBjYXNlICd2JzogY2FzZSAnVic6IHJldHVybiAweDU2OworICAgICAgICBjYXNlIEdE
S193OgorICAgICAgICBjYXNlIEdES19XOgorICAgICAgICAgICAgcmV0dXJuIFZLX1c7IC8vICAo
NTcpIFcga2V5IGNhc2UgJ3cnOiBjYXNlICdXJzogcmV0dXJuIDB4NTc7CisgICAgICAgIGNhc2Ug
R0RLX3g6CisgICAgICAgIGNhc2UgR0RLX1g6CisgICAgICAgICAgICByZXR1cm4gVktfWDsgLy8g
ICg1OCkgWCBrZXkgY2FzZSAneCc6IGNhc2UgJ1gnOiByZXR1cm4gMHg1ODsKKyAgICAgICAgY2Fz
ZSBHREtfeToKKyAgICAgICAgY2FzZSBHREtfWToKKyAgICAgICAgICAgIHJldHVybiBWS19ZOyAv
LyAgKDU5KSBZIGtleSBjYXNlICd5JzogY2FzZSAnWSc6IHJldHVybiAweDU5OworICAgICAgICBj
YXNlIEdES196OgorICAgICAgICBjYXNlIEdES19aOgorICAgICAgICAgICAgcmV0dXJuIFZLX1o7
IC8vICAoNUEpIFoga2V5IGNhc2UgJ3onOiBjYXNlICdaJzogcmV0dXJuIDB4NUE7CisgICAgICAg
IGNhc2UgR0RLX01ldGFfTDoKKyAgICAgICAgICAgIHJldHVybiBWS19MV0lOOyAvLyAoNUIpIExl
ZnQgV2luZG93cyBrZXkgKE1pY3Jvc29mdCBOYXR1cmFsIGtleWJvYXJkKQorICAgICAgICBjYXNl
IEdES19NZXRhX1I6CisgICAgICAgICAgICByZXR1cm4gVktfUldJTjsgLy8gKDVDKSBSaWdodCBX
aW5kb3dzIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKKyAgICAgICAgICAgIC8vIFZLX1NMRUVQICg1
RikgQ29tcHV0ZXIgU2xlZXAga2V5CisgICAgICAgICAgICAvLyBWS19TRVBBUkFUT1IgKDZDKSBT
ZXBhcmF0b3Iga2V5CisgICAgICAgICAgICAvLyBWS19TVUJUUkFDVCAoNkQpIFN1YnRyYWN0IGtl
eQorICAgICAgICAgICAgLy8gVktfREVDSU1BTCAoNkUpIERlY2ltYWwga2V5CisgICAgICAgICAg
ICAvLyBWS19ESVZJREUgKDZGKSBEaXZpZGUga2V5CisgICAgICAgICAgICAvLyBoYW5kbGVkIGJ5
IGtleSBjb2RlIGFib3ZlCisKKyAgICAgICAgY2FzZSBHREtfTnVtX0xvY2s6CisgICAgICAgICAg
ICByZXR1cm4gVktfTlVNTE9DSzsgLy8gKDkwKSBOVU0gTE9DSyBrZXkKKworICAgICAgICBjYXNl
IEdES19TY3JvbGxfTG9jazoKKyAgICAgICAgICAgIHJldHVybiBWS19TQ1JPTEw7IC8vICg5MSkg
U0NST0xMIExPQ0sga2V5CisKKyAgICAgICAgICAgIC8vIFZLX0xTSElGVCAoQTApIExlZnQgU0hJ
RlQga2V5CisgICAgICAgICAgICAvLyBWS19SU0hJRlQgKEExKSBSaWdodCBTSElGVCBrZXkKKyAg
ICAgICAgICAgIC8vIFZLX0xDT05UUk9MIChBMikgTGVmdCBDT05UUk9MIGtleQorICAgICAgICAg
ICAgLy8gVktfUkNPTlRST0wgKEEzKSBSaWdodCBDT05UUk9MIGtleQorICAgICAgICAgICAgLy8g
VktfTE1FTlUgKEE0KSBMZWZ0IE1FTlUga2V5CisgICAgICAgICAgICAvLyBWS19STUVOVSAoQTUp
IFJpZ2h0IE1FTlUga2V5CisgICAgICAgICAgICAvLyBWS19CUk9XU0VSX0JBQ0sgKEE2KSBXaW5k
b3dzIDIwMDAvWFA6IEJyb3dzZXIgQmFjayBrZXkKKyAgICAgICAgICAgIC8vIFZLX0JST1dTRVJf
Rk9SV0FSRCAoQTcpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBGb3J3YXJkIGtleQorICAgICAg
ICAgICAgLy8gVktfQlJPV1NFUl9SRUZSRVNIIChBOCkgV2luZG93cyAyMDAwL1hQOiBCcm93c2Vy
IFJlZnJlc2gga2V5CisgICAgICAgICAgICAvLyBWS19CUk9XU0VSX1NUT1AgKEE5KSBXaW5kb3dz
IDIwMDAvWFA6IEJyb3dzZXIgU3RvcCBrZXkKKyAgICAgICAgICAgIC8vIFZLX0JST1dTRVJfU0VB
UkNIIChBQSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFNlYXJjaCBrZXkKKyAgICAgICAgICAg
IC8vIFZLX0JST1dTRVJfRkFWT1JJVEVTIChBQikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEZh
dm9yaXRlcyBrZXkKKyAgICAgICAgICAgIC8vIFZLX0JST1dTRVJfSE9NRSAoQUMpIFdpbmRvd3Mg
MjAwMC9YUDogQnJvd3NlciBTdGFydCBhbmQgSG9tZSBrZXkKKyAgICAgICAgICAgIC8vIFZLX1ZP
TFVNRV9NVVRFIChBRCkgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgTXV0ZSBrZXkKKyAgICAgICAg
ICAgIC8vIFZLX1ZPTFVNRV9ET1dOIChBRSkgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgRG93biBr
ZXkKKyAgICAgICAgICAgIC8vIFZLX1ZPTFVNRV9VUCAoQUYpIFdpbmRvd3MgMjAwMC9YUDogVm9s
dW1lIFVwIGtleQorICAgICAgICAgICAgLy8gVktfTUVESUFfTkVYVF9UUkFDSyAoQjApIFdpbmRv
d3MgMjAwMC9YUDogTmV4dCBUcmFjayBrZXkKKyAgICAgICAgICAgIC8vIFZLX01FRElBX1BSRVZf
VFJBQ0sgKEIxKSBXaW5kb3dzIDIwMDAvWFA6IFByZXZpb3VzIFRyYWNrIGtleQorICAgICAgICAg
ICAgLy8gVktfTUVESUFfU1RPUCAoQjIpIFdpbmRvd3MgMjAwMC9YUDogU3RvcCBNZWRpYSBrZXkK
KyAgICAgICAgICAgIC8vIFZLX01FRElBX1BMQVlfUEFVU0UgKEIzKSBXaW5kb3dzIDIwMDAvWFA6
IFBsYXkvUGF1c2UgTWVkaWEga2V5CisgICAgICAgICAgICAvLyBWS19MQVVOQ0hfTUFJTCAoQjQp
IFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgTWFpbCBrZXkKKyAgICAgICAgICAgIC8vIFZLX0xBVU5D
SF9NRURJQV9TRUxFQ1QgKEI1KSBXaW5kb3dzIDIwMDAvWFA6IFNlbGVjdCBNZWRpYSBrZXkKKyAg
ICAgICAgICAgIC8vIFZLX0xBVU5DSF9BUFAxIChCNikgV2luZG93cyAyMDAwL1hQOiBTdGFydCBB
cHBsaWNhdGlvbiAxIGtleQorICAgICAgICAgICAgLy8gVktfTEFVTkNIX0FQUDIgKEI3KSBXaW5k
b3dzIDIwMDAvWFA6IFN0YXJ0IEFwcGxpY2F0aW9uIDIga2V5CisKKyAgICAgICAgICAgIC8vIFZL
X09FTV8xIChCQSkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFy
eSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJv
YXJkLCB0aGUgJzs6JyBrZXkKKyAgICAgICAgY2FzZSBHREtfc2VtaWNvbG9uOgorICAgICAgICBj
YXNlIEdES19jb2xvbjoKKyAgICAgICAgICAgIHJldHVybiBWS19PRU1fMTsgLy9jYXNlICc7Jzog
Y2FzZSAnOic6IHJldHVybiAweEJBOworICAgICAgICAgICAgLy8gVktfT0VNX1BMVVMgKEJCKSBX
aW5kb3dzIDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnKycga2V5CisgICAg
ICAgIGNhc2UgR0RLX3BsdXM6CisgICAgICAgIGNhc2UgR0RLX2VxdWFsOgorICAgICAgICAgICAg
cmV0dXJuIFZLX09FTV9QTFVTOyAvL2Nhc2UgJz0nOiBjYXNlICcrJzogcmV0dXJuIDB4QkI7Cisg
ICAgICAgICAgICAvLyBWS19PRU1fQ09NTUEgKEJDKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkg
Y291bnRyeS9yZWdpb24sIHRoZSAnLCcga2V5CisgICAgICAgIGNhc2UgR0RLX2NvbW1hOgorICAg
ICAgICBjYXNlIEdES19sZXNzOgorICAgICAgICAgICAgcmV0dXJuIFZLX09FTV9DT01NQTsgLy9j
YXNlICcsJzogY2FzZSAnPCc6IHJldHVybiAweEJDOworICAgICAgICAgICAgLy8gVktfT0VNX01J
TlVTIChCRCkgV2luZG93cyAyMDAwL1hQOiBGb3IgYW55IGNvdW50cnkvcmVnaW9uLCB0aGUgJy0n
IGtleQorICAgICAgICBjYXNlIEdES19taW51czoKKyAgICAgICAgY2FzZSBHREtfdW5kZXJzY29y
ZToKKyAgICAgICAgICAgIHJldHVybiBWS19PRU1fTUlOVVM7IC8vY2FzZSAnLSc6IGNhc2UgJ18n
OiByZXR1cm4gMHhCRDsKKyAgICAgICAgICAgIC8vIFZLX09FTV9QRVJJT0QgKEJFKSBXaW5kb3dz
IDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLicga2V5CisgICAgICAgIGNh
c2UgR0RLX3BlcmlvZDoKKyAgICAgICAgY2FzZSBHREtfZ3JlYXRlcjoKKyAgICAgICAgICAgIHJl
dHVybiBWS19PRU1fUEVSSU9EOyAvL2Nhc2UgJy4nOiBjYXNlICc+JzogcmV0dXJuIDB4QkU7Cisg
ICAgICAgICAgICAvLyBWS19PRU1fMiAoQkYpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFj
dGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBV
UyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICcvPycga2V5CisgICAgICAgIGNhc2UgR0RLX3NsYXNo
OgorICAgICAgICBjYXNlIEdES19xdWVzdGlvbjoKKyAgICAgICAgICAgIHJldHVybiBWS19PRU1f
MjsgLy9jYXNlICcvJzogY2FzZSAnPyc6IHJldHVybiAweEJGOworICAgICAgICAgICAgLy8gVktf
T0VNXzMgKEMwKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5
IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9h
cmQsIHRoZSAnYH4nIGtleQorICAgICAgICBjYXNlIEdES19hc2NpaXRpbGRlOgorICAgICAgICBj
YXNlIEdES19xdW90ZWxlZnQ6CisgICAgICAgICAgICByZXR1cm4gVktfT0VNXzM7IC8vY2FzZSAn
YCc6IGNhc2UgJ34nOiByZXR1cm4gMHhDMDsKKyAgICAgICAgICAgIC8vIFZLX09FTV80IChEQikg
VXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2Fy
ZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ1t7
JyBrZXkKKyAgICAgICAgY2FzZSBHREtfYnJhY2tldGxlZnQ6CisgICAgICAgIGNhc2UgR0RLX2Jy
YWNlbGVmdDoKKyAgICAgICAgICAgIHJldHVybiBWS19PRU1fNDsgLy9jYXNlICdbJzogY2FzZSAn
eyc6IHJldHVybiAweERCOworICAgICAgICAgICAgLy8gVktfT0VNXzUgKERDKSBVc2VkIGZvciBt
aXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dz
IDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXHwnIGtleQorICAg
ICAgICBjYXNlIEdES19iYWNrc2xhc2g6CisgICAgICAgIGNhc2UgR0RLX2JhcjoKKyAgICAgICAg
ICAgIHJldHVybiBWS19PRU1fNTsgLy9jYXNlICdcXCc6IGNhc2UgJ3wnOiByZXR1cm4gMHhEQzsK
KyAgICAgICAgICAgIC8vIFZLX09FTV82IChERCkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFy
YWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhl
IFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ119JyBrZXkKKyAgICAgICAgY2FzZSBHREtfYnJh
Y2tldHJpZ2h0OgorICAgICAgICBjYXNlIEdES19icmFjZXJpZ2h0OgorICAgICAgICAgICAgcmV0
dXJuIFZLX09FTV82OyAvLyBjYXNlICddJzogY2FzZSAnfSc6IHJldHVybiAweEREOworICAgICAg
ICAgICAgLy8gVktfT0VNXzcgKERFKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7
IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3Rh
bmRhcmQga2V5Ym9hcmQsIHRoZSAnc2luZ2xlLXF1b3RlL2RvdWJsZS1xdW90ZScga2V5CisgICAg
ICAgIGNhc2UgR0RLX3F1b3RlcmlnaHQ6CisgICAgICAgIGNhc2UgR0RLX3F1b3RlZGJsOgorICAg
ICAgICAgICAgcmV0dXJuIFZLX09FTV83OyAvLyBjYXNlICdcJyc6IGNhc2UgJyInOiByZXR1cm4g
MHhERTsKKyAgICAgICAgICAgIC8vIFZLX09FTV84IChERikgVXNlZCBmb3IgbWlzY2VsbGFuZW91
cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4KKyAgICAgICAgICAgIC8vIFZL
X09FTV8xMDIgKEUyKSBXaW5kb3dzIDIwMDAvWFA6IEVpdGhlciB0aGUgYW5nbGUgYnJhY2tldCBr
ZXkgb3IgdGhlIGJhY2tzbGFzaCBrZXkgb24gdGhlIFJUIDEwMi1rZXkga2V5Ym9hcmQKKyAgICAg
ICAgICAgIC8vIFZLX1BST0NFU1NLRVkgKEU1KSBXaW5kb3dzIDk1Lzk4L01lLCBXaW5kb3dzIE5U
IDQuMCwgV2luZG93cyAyMDAwL1hQOiBJTUUgUFJPQ0VTUyBrZXkKKyAgICAgICAgICAgIC8vIFZL
X1BBQ0tFVCAoRTcpIFdpbmRvd3MgMjAwMC9YUDogVXNlZCB0byBwYXNzIFVuaWNvZGUgY2hhcmFj
dGVycyBhcyBpZiB0aGV5IHdlcmUga2V5c3Ryb2tlcy4gVGhlIFZLX1BBQ0tFVCBrZXkgaXMgdGhl
IGxvdyB3b3JkIG9mIGEgMzItYml0IFZpcnR1YWwgS2V5IHZhbHVlIHVzZWQgZm9yIG5vbi1rZXli
b2FyZCBpbnB1dCBtZXRob2RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFJlbWFyayBpbiBL
RVlCRElOUFVULFNlbmRJbnB1dCwgV01fS0VZRE9XTiwgYW5kIFdNX0tFWVVQCisgICAgICAgICAg
ICAvLyBWS19BVFROIChGNikgQXR0biBrZXkKKyAgICAgICAgICAgIC8vIFZLX0NSU0VMIChGNykg
Q3JTZWwga2V5CisgICAgICAgICAgICAvLyBWS19FWFNFTCAoRjgpIEV4U2VsIGtleQorICAgICAg
ICAgICAgLy8gVktfRVJFT0YgKEY5KSBFcmFzZSBFT0Yga2V5CisgICAgICAgICAgICAvLyBWS19Q
TEFZIChGQSkgUGxheSBrZXkKKyAgICAgICAgICAgIC8vIFZLX1pPT00gKEZCKSBab29tIGtleQor
ICAgICAgICAgICAgLy8gVktfTk9OQU1FIChGQykgUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UKKyAg
ICAgICAgICAgIC8vIFZLX1BBMSAoRkQpIFBBMSBrZXkKKyAgICAgICAgICAgIC8vIFZLX09FTV9D
TEVBUiAoRkUpIENsZWFyIGtleQorICAgICAgICBjYXNlIEdES19GMToKKyAgICAgICAgY2FzZSBH
REtfRjI6CisgICAgICAgIGNhc2UgR0RLX0YzOgorICAgICAgICBjYXNlIEdES19GNDoKKyAgICAg
ICAgY2FzZSBHREtfRjU6CisgICAgICAgIGNhc2UgR0RLX0Y2OgorICAgICAgICBjYXNlIEdES19G
NzoKKyAgICAgICAgY2FzZSBHREtfRjg6CisgICAgICAgIGNhc2UgR0RLX0Y5OgorICAgICAgICBj
YXNlIEdES19GMTA6CisgICAgICAgIGNhc2UgR0RLX0YxMToKKyAgICAgICAgY2FzZSBHREtfRjEy
OgorICAgICAgICBjYXNlIEdES19GMTM6CisgICAgICAgIGNhc2UgR0RLX0YxNDoKKyAgICAgICAg
Y2FzZSBHREtfRjE1OgorICAgICAgICBjYXNlIEdES19GMTY6CisgICAgICAgIGNhc2UgR0RLX0Yx
NzoKKyAgICAgICAgY2FzZSBHREtfRjE4OgorICAgICAgICBjYXNlIEdES19GMTk6CisgICAgICAg
IGNhc2UgR0RLX0YyMDoKKyAgICAgICAgY2FzZSBHREtfRjIxOgorICAgICAgICBjYXNlIEdES19G
MjI6CisgICAgICAgIGNhc2UgR0RLX0YyMzoKKyAgICAgICAgY2FzZSBHREtfRjI0OgorICAgICAg
ICAgICAgcmV0dXJuIFZLX0YxICsgKGtleWNvZGUgLSBHREtfRjEpOworCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKK30KKworU3RyaW5nIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHVuc2lnbmVkIHZhbCkKK3sKKyAg
ICBzd2l0Y2ggKHZhbCkgeworICAgICAgICBjYXNlIEdES19JU09fRW50ZXI6CisgICAgICAgIGNh
c2UgR0RLX0tQX0VudGVyOgorICAgICAgICBjYXNlIEdES19SZXR1cm46CisgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKCJcciIpOworICAgICAgICBjYXNlIEdES19CYWNrU3BhY2U6CisgICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKCJceDgiKTsKKyAgICAgICAgY2FzZSBHREtfVGFiOgorICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygiXHQiKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGd1bmljaGFyIGMgPSBnZGtfa2V5dmFsX3RvX3VuaWNvZGUodmFsKTsKKyAgICAgICAgICAgIGds
b25nIG53YzsKKyAgICAgICAgICAgIGd1bmljaGFyMiogdWNoYXIxNiA9IGdfdWNzNF90b191dGYx
NigmYywgMSwgMCwgJm53YywgMCk7CisKKyAgICAgICAgICAgIFN0cmluZyByZXRWYWw7CisgICAg
ICAgICAgICBpZiAodWNoYXIxNikKKyAgICAgICAgICAgICAgICByZXRWYWwgPSBTdHJpbmcoKFVD
aGFyKil1Y2hhcjE2LCBud2MpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
dFZhbCA9IFN0cmluZygpOworCisgICAgICAgICAgICBnX2ZyZWUodWNoYXIxNik7CisKKyAgICAg
ICAgICAgIHJldHVybiByZXRWYWw7CisgICAgfQorfQorCisvLyBLZWVwIHRoaXMgaW4gc3luYyB3
aXRoIHRoZSBvdGhlciBwbGF0Zm9ybSBldmVudCBjb25zdHJ1Y3RvcnMKKy8vIFRPRE86IG1fZ2Rr
RXZlbnRLZXkgc2hvdWxkIGJlIHJlZmNvdW50ZWQKK1BsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxh
dGZvcm1LZXlib2FyZEV2ZW50KEdka0V2ZW50S2V5KiBldmVudCkKKyAgICA6IG1fdHlwZSgoZXZl
bnQtPnR5cGUgPT0gR0RLX0tFWV9SRUxFQVNFKSA/IEtleVVwIDogS2V5RG93bikKKyAgICAsIG1f
dGV4dChzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZXZlbnQtPmtleXZhbCkpCisgICAgLCBtX3VubW9k
aWZpZWRUZXh0KHNpbmdsZUNoYXJhY3RlclN0cmluZyhldmVudC0+a2V5dmFsKSkKKyAgICAsIG1f
a2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZShldmVudC0+a2V5dmFsKSkK
KyAgICAsIG1fYXV0b1JlcGVhdChmYWxzZSkKKyAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2Rl
KHdpbmRvd3NLZXlDb2RlRm9yR2RrS2V5Q29kZShldmVudC0+a2V5dmFsKSkKKyAgICAsIG1fbmF0
aXZlVmlydHVhbEtleUNvZGUoZXZlbnQtPmtleXZhbCkKKyAgICAsIG1faXNLZXlwYWQoZXZlbnQt
PmtleXZhbCA+PSBHREtfS1BfU3BhY2UgJiYgZXZlbnQtPmtleXZhbCA8PSBHREtfS1BfOSkKKyAg
ICAsIG1fc2hpZnRLZXkoKGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLKSB8fCAoZXZlbnQt
PmtleXZhbCA9PSBHREtfMzI3MF9CYWNrVGFiKSkKKyAgICAsIG1fY3RybEtleShldmVudC0+c3Rh
dGUgJiBHREtfQ09OVFJPTF9NQVNLKQorICAgICwgbV9hbHRLZXkoZXZlbnQtPnN0YXRlICYgR0RL
X01PRDFfTUFTSykKKyAgICAsIG1fbWV0YUtleShldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNL
KQorICAgICwgbV9nZGtFdmVudEtleShldmVudCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlIHR5cGUsIGJvb2wgYmFja3dh
cmRDb21wYXRpYmlsaXR5TW9kZSkKK3sKKyAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9t
IEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZv
ciBvdGhlciBjb252ZXJzaW9ucy4KKyAgICBBU1NFUlQobV90eXBlID09IEtleURvd24pOworICAg
IG1fdHlwZSA9IHR5cGU7CisKKyAgICBpZiAoYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgICAgICBt
X3RleHQgPSBTdHJpbmcoKTsKKyAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fa2V5SWRlbnRpZmllciA9IFN0cmluZygpOworICAgICAg
ICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9IDA7CisgICAgfQorfQorCitib29sIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Y3VycmVudENhcHNMb2NrU3RhdGUoKQoreworICAgIHJldHVybiBnZGtf
a2V5bWFwX2dldF9jYXBzX2xvY2tfc3RhdGUoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpKTsKK30K
Kwordm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2RpZmllclN0YXRlKGJv
b2wmIHNoaWZ0S2V5LCBib29sJiBjdHJsS2V5LCBib29sJiBhbHRLZXksIGJvb2wmIG1ldGFLZXkp
Cit7CisgICAgR2RrTW9kaWZpZXJUeXBlIHN0YXRlOworICAgIGd0a19nZXRfY3VycmVudF9ldmVu
dF9zdGF0ZSgmc3RhdGUpOworCisgICAgc2hpZnRLZXkgPSBzdGF0ZSAmIEdES19TSElGVF9NQVNL
OworICAgIGN0cmxLZXkgPSBzdGF0ZSAmIEdES19DT05UUk9MX01BU0s7CisgICAgYWx0S2V5ID0g
c3RhdGUgJiBHREtfTU9EMV9NQVNLOworICAgIG1ldGFLZXkgPSBzdGF0ZSAmIEdES19NRVRBX01B
U0s7Cit9CisKK0dka0V2ZW50S2V5KiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Omdka0V2ZW50S2V5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9nZGtFdmVudEtleTsKK30KKworfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0
ay5jcHAJKHJldmlzaW9uIDgyNTI4KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
TW91c2VFdmVudEd0ay5jcHA6ODI1MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNSBA
QAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFp
bC5jb20KKyogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1v
dXNlRXZlbnQuaCIKKworI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKKworI2luY2x1ZGUgPGdkay9n
ZGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTogV291bGQgYmUgZXZlbiBi
ZXR0ZXIgdG8gZmlndXJlIG91dCB3aGljaCBtb2RpZmllciBpcyBBbHQgaW5zdGVhZCBvZiBhbHdh
eXMgdXNpbmcgR0RLX01PRDFfTUFTSy4KKworLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUg
b3RoZXIgcGxhdGZvcm0gZXZlbnQgY29uc3RydWN0b3JzCitQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBs
YXRmb3JtTW91c2VFdmVudChHZGtFdmVudEJ1dHRvbiogZXZlbnQpCit7CisgICAgbV90aW1lc3Rh
bXAgPSBldmVudC0+dGltZTsKKyAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoKGludClldmVudC0+
eCwgKGludClldmVudC0+eSk7CisgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KChpbnQp
ZXZlbnQtPnhfcm9vdCwgKGludClldmVudC0+eV9yb290KTsKKyAgICBtX3NoaWZ0S2V5ID0gZXZl
bnQtPnN0YXRlICYgR0RLX1NISUZUX01BU0s7CisgICAgbV9jdHJsS2V5ID0gZXZlbnQtPnN0YXRl
ICYgR0RLX0NPTlRST0xfTUFTSzsKKyAgICBtX2FsdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19N
T0QxX01BU0s7CisgICAgbV9tZXRhS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX01FVEFfTUFTSzsK
KworICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUpIHsKKyAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6
CisgICAgY2FzZSBHREtfMkJVVFRPTl9QUkVTUzoKKyAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNT
OgorICAgIGNhc2UgR0RLX0JVVFRPTl9SRUxFQVNFOgorICAgICAgICBtX2V2ZW50VHlwZSA9IE1v
dXNlRXZlbnRQcmVzc2VkOworICAgICAgICBpZiAoZXZlbnQtPnR5cGUgPT0gR0RLX0JVVFRPTl9S
RUxFQVNFKSB7CisgICAgICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsK
KyAgICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQt
PnR5cGUgPT0gR0RLX0JVVFRPTl9QUkVTUykKKyAgICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDE7
CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlID09IEdES18yQlVUVE9OX1BSRVNTKQorICAg
ICAgICAgICAgbV9jbGlja0NvdW50ID0gMjsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUg
PT0gR0RLXzNCVVRUT05fUFJFU1MpCisgICAgICAgICAgICBtX2NsaWNrQ291bnQgPSAzOworCisg
ICAgICAgIGlmIChldmVudC0+YnV0dG9uID09IDEpCisgICAgICAgICAgICBtX2J1dHRvbiA9IExl
ZnRCdXR0b247CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT5idXR0b24gPT0gMikKKyAgICAgICAg
ICAgIG1fYnV0dG9uID0gTWlkZGxlQnV0dG9uOworICAgICAgICBlbHNlIGlmIChldmVudC0+YnV0
dG9uID09IDMpCisgICAgICAgICAgICBtX2J1dHRvbiA9IFJpZ2h0QnV0dG9uOworICAgICAgICBi
cmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH07Cit9CisKK1BsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEdka0V2ZW50
TW90aW9uKiBtb3Rpb24pCit7CisgICAgbV90aW1lc3RhbXAgPSBtb3Rpb24tPnRpbWU7CisgICAg
bV9wb3NpdGlvbiA9IEludFBvaW50KChpbnQpbW90aW9uLT54LCAoaW50KW1vdGlvbi0+eSk7Cisg
ICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KChpbnQpbW90aW9uLT54X3Jvb3QsIChpbnQp
bW90aW9uLT55X3Jvb3QpOworICAgIG1fc2hpZnRLZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX1NI
SUZUX01BU0s7CisgICAgbV9jdHJsS2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19DT05UUk9MX01B
U0s7CisgICAgbV9hbHRLZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX01PRDFfTUFTSzsKKyAgICBt
X21ldGFLZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX01PRDJfTUFTSzsKKworICAgIHN3aXRjaCAo
bW90aW9uLT50eXBlKSB7CisgICAgY2FzZSBHREtfTU9USU9OX05PVElGWToKKyAgICAgICAgbV9l
dmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIG1fYnV0dG9uID0gTm9CdXR0b247
CisgICAgICAgIG1fY2xpY2tDb3VudCA9IDA7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH07CisKKyAgICBpZiAobW90aW9u
LT5zdGF0ZSAmIEdES19CVVRUT04xX01BU0spCisgICAgICAgIG1fYnV0dG9uID0gTGVmdEJ1dHRv
bjsKKyAgICBlbHNlIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0JVVFRPTjJfTUFTSykKKyAgICAg
ICAgbV9idXR0b24gPSBNaWRkbGVCdXR0b247CisgICAgZWxzZSBpZiAobW90aW9uLT5zdGF0ZSAm
IEdES19CVVRUT04zX01BU0spCisgICAgICAgIG1fYnV0dG9uID0gUmlnaHRCdXR0b247Cit9Cit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3Rr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1X
aGVlbEV2ZW50R3RrLmNwcAkocmV2aXNpb24gODI1MjgpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcDo4MjUyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBF
bW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisj
aW5jbHVkZSAiU2Nyb2xsYmFyLmgiCisKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgb3RoZXIgcGxhdGZv
cm0gZXZlbnQgY29uc3RydWN0b3JzCitQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxF
dmVudChHZGtFdmVudFNjcm9sbCogZXZlbnQpCit7CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGRl
bHRhID0gMTsKKworICAgIG1fZGVsdGFYID0gMDsKKyAgICBtX2RlbHRhWSA9IDA7CisKKyAgICAv
LyBEb2NzIHNheSBhbiB1cHdhcmRzIHNjcm9sbCAoYXdheSBmcm9tIHRoZSB1c2VyKSBoYXMgYSBw
b3NpdGl2ZSBkZWx0YQorICAgIHN3aXRjaCAoZXZlbnQtPmRpcmVjdGlvbikgeworICAgICAgICBj
YXNlIEdES19TQ1JPTExfVVA6CisgICAgICAgICAgICBtX2RlbHRhWSA9IGRlbHRhOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0RLX1NDUk9MTF9ET1dOOgorICAgICAgICAgICAg
bV9kZWx0YVkgPSAtZGVsdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHREtf
U0NST0xMX0xFRlQ6CisgICAgICAgICAgICBtX2RlbHRhWCA9IGRlbHRhOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR0RLX1NDUk9MTF9SSUdIVDoKKyAgICAgICAgICAgIG1fZGVs
dGFYID0gLWRlbHRhOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG1fd2hlZWxUaWNr
c1ggPSBtX2RlbHRhWDsKKyAgICBtX3doZWVsVGlja3NZID0gbV9kZWx0YVk7CisKKyAgICBtX3Bv
c2l0aW9uID0gSW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50PihldmVudC0+eCksIHN0YXRpY19jYXN0
PGludD4oZXZlbnQtPnkpKTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoc3RhdGlj
X2Nhc3Q8aW50PihldmVudC0+eF9yb290KSwgc3RhdGljX2Nhc3Q8aW50PihldmVudC0+eV9yb290
KSk7CisgICAgbV9ncmFudWxhcml0eSA9IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50OworICAgIG1f
aXNBY2NlcHRlZCA9IGZhbHNlOworICAgIG1fc2hpZnRLZXkgPSBldmVudC0+c3RhdGUgJiBHREtf
U0hJRlRfTUFTSzsKKyAgICBtX2N0cmxLZXkgPSBldmVudC0+c3RhdGUgJiBHREtfQ09OVFJPTF9N
QVNLOworICAgIG1fYWx0S2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSzsKKyAgICBt
X21ldGFLZXkgPSBldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLOworCisgICAgLy8gRklYTUU6
IHJldHJpZXZlIHRoZSB1c2VyIHNldHRpbmcgZm9yIHRoZSBudW1iZXIgb2YgbGluZXMgdG8gc2Ny
b2xsIG9uIGVhY2ggd2hlZWwgZXZlbnQKKyAgICBtX2RlbHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9h
dD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKKyAgICBtX2RlbHRhWSAqPSBzdGF0
aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKK30KKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcAko
cmV2aXNpb24gODI1MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2hlZWxFdmVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCi0g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXIuaCIKLQotI2lu
Y2x1ZGUgPGdkay9nZGsuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBLZWVwIHRoaXMg
aW4gc3luYyB3aXRoIHRoZSBvdGhlciBwbGF0Zm9ybSBldmVudCBjb25zdHJ1Y3RvcnMKLVBsYXRm
b3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEdka0V2ZW50U2Nyb2xsKiBldmVudCkK
LXsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgZGVsdGEgPSAxOwotCi0gICAgbV9kZWx0YVggPSAw
OwotICAgIG1fZGVsdGFZID0gMDsKLQotICAgIC8vIERvY3Mgc2F5IGFuIHVwd2FyZHMgc2Nyb2xs
IChhd2F5IGZyb20gdGhlIHVzZXIpIGhhcyBhIHBvc2l0aXZlIGRlbHRhCi0gICAgc3dpdGNoIChl
dmVudC0+ZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgR0RLX1NDUk9MTF9VUDoKLSAgICAgICAg
ICAgIG1fZGVsdGFZID0gZGVsdGE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBH
REtfU0NST0xMX0RPV046Ci0gICAgICAgICAgICBtX2RlbHRhWSA9IC1kZWx0YTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdES19TQ1JPTExfTEVGVDoKLSAgICAgICAgICAgIG1f
ZGVsdGFYID0gZGVsdGE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHREtfU0NS
T0xMX1JJR0hUOgotICAgICAgICAgICAgbV9kZWx0YVggPSAtZGVsdGE7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFYOwotICAgIG1fd2hlZWxU
aWNrc1kgPSBtX2RlbHRhWTsKLQotICAgIG1fcG9zaXRpb24gPSBJbnRQb2ludChzdGF0aWNfY2Fz
dDxpbnQ+KGV2ZW50LT54KSwgc3RhdGljX2Nhc3Q8aW50PihldmVudC0+eSkpOwotICAgIG1fZ2xv
YmFsUG9zaXRpb24gPSBJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT54X3Jvb3QpLCBz
dGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT55X3Jvb3QpKTsKLSAgICBtX2dyYW51bGFyaXR5ID0gU2Ny
b2xsQnlQaXhlbFdoZWVsRXZlbnQ7Ci0gICAgbV9pc0FjY2VwdGVkID0gZmFsc2U7Ci0gICAgbV9z
aGlmdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLOwotICAgIG1fY3RybEtleSA9
IGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0s7Ci0gICAgbV9hbHRLZXkgPSBldmVudC0+
c3RhdGUgJiBHREtfTU9EMV9NQVNLOwotICAgIG1fbWV0YUtleSA9IGV2ZW50LT5zdGF0ZSAmIEdE
S19NRVRBX01BU0s7Ci0KLSAgICAvLyBGSVhNRTogcmV0cmlldmUgdGhlIHVzZXIgc2V0dGluZyBm
b3IgdGhlIG51bWJlciBvZiBsaW5lcyB0byBzY3JvbGwgb24gZWFjaCB3aGVlbCBldmVudAotICAg
IG1fZGVsdGFYICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVT
dGVwKCkpOwotICAgIG1fZGVsdGFZICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBp
eGVsc1BlckxpbmVTdGVwKCkpOwotfQotCi19Cg==
</data>
<flag name="review"
          id="80095"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="80096"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88966</attachid>
            <date>2011-04-10 21:21:45 -0700</date>
            <delta_ts>2011-04-10 21:36:56 -0700</delta_ts>
            <desc>revised patch to meet latest version(r83419)</desc>
            <filename>P57416.patch</filename>
            <type>text/plain</type>
            <size>64758</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNDE3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDQtMTAgIENoYW5nU2Vv
ayBPaCAgPHNoaXZhbWlkb3dAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgY29ycmVzcG9uZGVuY2Ugb2YgZmlsZSBuYW1lIHJl
bGF0ZWQgd2l0aCBldmVudCB0byBvdGhlciBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc0MTYKKworICAgICAgICBTb21lIGZpbGUgbmFtZXMg
YXJlIGNoYW5nZWQgdG8gbWFrZSBjb3JyZXNwb25kZW5jZSBuYW1pbmcgcnVsZS4KKyAgICAgICAg
S2V5Ym9hcmQsIG1vdXNlIGFuZCB3aGVlbCBldmVudCBmaWxlIG5hbWVzIGZvciBHVEsgcG9ydCBo
YXZlIGJlZW4gZGlmZmVyZW50IGZyb20gb3RoZXIgcG9ydHMuCisgICAgICAgIFRoaXMgaGFzIG1h
ZGUgdXNlciBoYXJkIHRvIGZpbmQgYSBzcGVjaWZpYyBmaWxlIHJlbGF0ZWQgd2l0aCBldmVudCBm
b3IgR1RLIHBvcnQuIAorCisgICAgICAgIE5vIHRlc3QgcmVxdWlyZWQuIFRoaXMgcGF0Y2gganVz
dCBjaGFuZ2VzIHNvbWUgZmlsZSBuYW1lcy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0tleUV2ZW50R3RrLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvTW91c2VFdmVudEd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwOiBSZW1vdmVkLgorCiAyMDEx
LTA0LTEwICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiA4MzQxNikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM3NTAsNyArMzc1MCw2IEBAIHdlYmNvcmVndGtf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdl
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvS1VSTEd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5n
dWFnZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJp
bmdzR3RrLmNwcCBcCkBAIC0zNzU4LDExICszNzU3LDEzIEBAIHdlYmNvcmVndGtfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0ay5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluRnJhbWVTY3JvbGxiYXJHdGsu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0cnlHdGsuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTW91c2VFdmVudEd0ay5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BvcHVwTWVudUd0ay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwIFwKQEAgLTM3ODAsNyArMzc4MSw2IEBAIHdlYmNvcmVndGtfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NvdW5kR3RrLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAgXAotCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1dpZGdldEd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRn
ZXRSZW5kZXJpbmdDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dp
ZGdldFJlbmRlcmluZ0NvbnRleHQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvS2V5RXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9LZXlFdmVudEd0ay5jcHAJKHJldmlzaW9uIDgzNDE2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0tleUV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2MDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5l
bW1lbEBnbWFpbC5jb20KLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgotCi0jaW5jbHVkZSAi
R3RrVmVyc2lvbmluZy5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAi
VGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKLQotI2lu
Y2x1ZGUgPGdkay9nZGsuaD4KLSNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLS8vIEZJWE1FOiBUaGlzIGlzIGluY29tcGxldGUuICBXZSBzaG91bGQg
Y2hhbmdlIHRoaXMgdG8gbWlycm9yCi0vLyBtb3JlIGxpa2Ugd2hhdCBGaXJlZm94IGRvZXMsIGFu
ZCBnZW5lcmF0ZSB0aGVzZSBzd2l0Y2ggc3RhdGVtZW50cwotLy8gYXQgYnVpbGQgdGltZS4KLVN0
cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JHZGtLZXlDb2RlKHVu
c2lnbmVkIGtleUNvZGUpCi17Ci0gICAgc3dpdGNoIChrZXlDb2RlKSB7Ci0gICAgICAgIGNhc2Ug
R0RLX01lbnU6Ci0gICAgICAgIGNhc2UgR0RLX0FsdF9MOgotICAgICAgICBjYXNlIEdES19BbHRf
UjoKLSAgICAgICAgICAgIHJldHVybiAiQWx0IjsKLSAgICAgICAgY2FzZSBHREtfQ2xlYXI6Ci0g
ICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKLSAgICAgICAgY2FzZSBHREtfRG93bjoKLSAgICAg
ICAgICAgIHJldHVybiAiRG93biI7Ci0gICAgICAgICAgICAvLyAiRW5kIgotICAgICAgICBjYXNl
IEdES19FbmQ6Ci0gICAgICAgICAgICByZXR1cm4gIkVuZCI7Ci0gICAgICAgICAgICAvLyAiRW50
ZXIiCi0gICAgICAgIGNhc2UgR0RLX0lTT19FbnRlcjoKLSAgICAgICAgY2FzZSBHREtfS1BfRW50
ZXI6Ci0gICAgICAgIGNhc2UgR0RLX1JldHVybjoKLSAgICAgICAgICAgIHJldHVybiAiRW50ZXIi
OwotICAgICAgICBjYXNlIEdES19FeGVjdXRlOgotICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRl
IjsKLSAgICAgICAgY2FzZSBHREtfRjE6Ci0gICAgICAgICAgICByZXR1cm4gIkYxIjsKLSAgICAg
ICAgY2FzZSBHREtfRjI6Ci0gICAgICAgICAgICByZXR1cm4gIkYyIjsKLSAgICAgICAgY2FzZSBH
REtfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKLSAgICAgICAgY2FzZSBHREtfRjQ6Ci0g
ICAgICAgICAgICByZXR1cm4gIkY0IjsKLSAgICAgICAgY2FzZSBHREtfRjU6Ci0gICAgICAgICAg
ICByZXR1cm4gIkY1IjsKLSAgICAgICAgY2FzZSBHREtfRjY6Ci0gICAgICAgICAgICByZXR1cm4g
IkY2IjsKLSAgICAgICAgY2FzZSBHREtfRjc6Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsKLSAg
ICAgICAgY2FzZSBHREtfRjg6Ci0gICAgICAgICAgICByZXR1cm4gIkY4IjsKLSAgICAgICAgY2Fz
ZSBHREtfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKLSAgICAgICAgY2FzZSBHREtfRjEw
OgotICAgICAgICAgICAgcmV0dXJuICJGMTAiOwotICAgICAgICBjYXNlIEdES19GMTE6Ci0gICAg
ICAgICAgICByZXR1cm4gIkYxMSI7Ci0gICAgICAgIGNhc2UgR0RLX0YxMjoKLSAgICAgICAgICAg
IHJldHVybiAiRjEyIjsKLSAgICAgICAgY2FzZSBHREtfRjEzOgotICAgICAgICAgICAgcmV0dXJu
ICJGMTMiOwotICAgICAgICBjYXNlIEdES19GMTQ6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNCI7
Ci0gICAgICAgIGNhc2UgR0RLX0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKLSAgICAg
ICAgY2FzZSBHREtfRjE2OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOwotICAgICAgICBjYXNl
IEdES19GMTc6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNyI7Ci0gICAgICAgIGNhc2UgR0RLX0Yx
ODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKLSAgICAgICAgY2FzZSBHREtfRjE5OgotICAg
ICAgICAgICAgcmV0dXJuICJGMTkiOwotICAgICAgICBjYXNlIEdES19GMjA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYyMCI7Ci0gICAgICAgIGNhc2UgR0RLX0YyMToKLSAgICAgICAgICAgIHJldHVy
biAiRjIxIjsKLSAgICAgICAgY2FzZSBHREtfRjIyOgotICAgICAgICAgICAgcmV0dXJuICJGMjIi
OwotICAgICAgICBjYXNlIEdES19GMjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMyI7Ci0gICAg
ICAgIGNhc2UgR0RLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKLSAgICAgICAgY2Fz
ZSBHREtfSGVscDoKLSAgICAgICAgICAgIHJldHVybiAiSGVscCI7Ci0gICAgICAgIGNhc2UgR0RL
X0hvbWU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOwotICAgICAgICBjYXNlIEdES19JbnNl
cnQ6Ci0gICAgICAgICAgICByZXR1cm4gIkluc2VydCI7Ci0gICAgICAgIGNhc2UgR0RLX0xlZnQ6
Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOwotICAgICAgICBjYXNlIEdES19QYWdlX0Rvd246
Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKLSAgICAgICAgY2FzZSBHREtfUGFnZV9V
cDoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKLSAgICAgICAgY2FzZSBHREtfUGF1c2U6
Ci0gICAgICAgICAgICByZXR1cm4gIlBhdXNlIjsKLSAgICAgICAgY2FzZSBHREtfMzI3MF9Qcmlu
dFNjcmVlbjoKLSAgICAgICAgY2FzZSBHREtfUHJpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBy
aW50U2NyZWVuIjsKLSAgICAgICAgY2FzZSBHREtfUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4g
IlJpZ2h0IjsKLSAgICAgICAgY2FzZSBHREtfU2VsZWN0OgotICAgICAgICAgICAgcmV0dXJuICJT
ZWxlY3QiOwotICAgICAgICBjYXNlIEdES19VcDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOwot
ICAgICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KLSAg
ICAgICAgY2FzZSBHREtfRGVsZXRlOgotICAgICAgICAgICAgcmV0dXJuICJVKzAwN0YiOwotICAg
ICAgICBjYXNlIEdES19CYWNrU3BhY2U6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDAwOCI7Ci0g
ICAgICAgIGNhc2UgR0RLX0lTT19MZWZ0X1RhYjoKLSAgICAgICAgY2FzZSBHREtfMzI3MF9CYWNr
VGFiOgotICAgICAgICBjYXNlIEdES19UYWI6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDAwOSI7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlUr
JTA0WCIsIGdka19rZXl2YWxfdG9fdW5pY29kZShnZGtfa2V5dmFsX3RvX3VwcGVyKGtleUNvZGUp
KSk7Ci0gICAgfQotfQotCi1pbnQgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojp3aW5kb3dzS2V5Q29k
ZUZvckdka0tleUNvZGUodW5zaWduZWQga2V5Y29kZSkKLXsKLSAgICBzd2l0Y2ggKGtleWNvZGUp
IHsKLSAgICAgICAgY2FzZSBHREtfS1BfMDoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQw
Oy8vICg2MCkgTnVtZXJpYyBrZXlwYWQgMCBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfMToKLSAg
ICAgICAgICAgIHJldHVybiBWS19OVU1QQUQxOy8vICg2MSkgTnVtZXJpYyBrZXlwYWQgMSBrZXkK
LSAgICAgICAgY2FzZSBHREtfS1BfMjoKLSAgICAgICAgICAgIHJldHVybiAgVktfTlVNUEFEMjsg
Ly8gKDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQotICAgICAgICBjYXNlIEdES19LUF8zOgotICAg
ICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDM7IC8vICg2MykgTnVtZXJpYyBrZXlwYWQgMyBrZXkK
LSAgICAgICAgY2FzZSBHREtfS1BfNDoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQ0OyAv
LyAoNjQpIE51bWVyaWMga2V5cGFkIDQga2V5Ci0gICAgICAgIGNhc2UgR0RLX0tQXzU6Ci0gICAg
ICAgICAgICByZXR1cm4gVktfTlVNUEFENTsgLy8oNjUpIE51bWVyaWMga2V5cGFkIDUga2V5Ci0g
ICAgICAgIGNhc2UgR0RLX0tQXzY6Ci0gICAgICAgICAgICByZXR1cm4gVktfTlVNUEFENjsgLy8g
KDY2KSBOdW1lcmljIGtleXBhZCA2IGtleQotICAgICAgICBjYXNlIEdES19LUF83OgotICAgICAg
ICAgICAgcmV0dXJuIFZLX05VTVBBRDc7IC8vICg2NykgTnVtZXJpYyBrZXlwYWQgNyBrZXkKLSAg
ICAgICAgY2FzZSBHREtfS1BfODoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQ4OyAvLyAo
NjgpIE51bWVyaWMga2V5cGFkIDgga2V5Ci0gICAgICAgIGNhc2UgR0RLX0tQXzk6Ci0gICAgICAg
ICAgICByZXR1cm4gVktfTlVNUEFEOTsgLy8gKDY5KSBOdW1lcmljIGtleXBhZCA5IGtleQotICAg
ICAgICBjYXNlIEdES19LUF9NdWx0aXBseToKLSAgICAgICAgICAgIHJldHVybiBWS19NVUxUSVBM
WTsgLy8gKDZBKSBNdWx0aXBseSBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfQWRkOgotICAgICAg
ICAgICAgcmV0dXJuIFZLX0FERDsgLy8gKDZCKSBBZGQga2V5Ci0gICAgICAgIGNhc2UgR0RLX0tQ
X1N1YnRyYWN0OgotICAgICAgICAgICAgcmV0dXJuIFZLX1NVQlRSQUNUOyAvLyAoNkQpIFN1YnRy
YWN0IGtleQotICAgICAgICBjYXNlIEdES19LUF9EZWNpbWFsOgotICAgICAgICAgICAgcmV0dXJu
IFZLX0RFQ0lNQUw7IC8vICg2RSkgRGVjaW1hbCBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfRGl2
aWRlOgotICAgICAgICAgICAgcmV0dXJuIFZLX0RJVklERTsgLy8gKDZGKSBEaXZpZGUga2V5Ci0K
LSAgICAgICAgY2FzZSBHREtfS1BfUGFnZV9VcDoKLSAgICAgICAgICAgIHJldHVybiBWS19QUklP
UjsgLy8gKDIxKSBQQUdFIFVQIGtleQotICAgICAgICBjYXNlIEdES19LUF9QYWdlX0Rvd246Ci0g
ICAgICAgICAgICByZXR1cm4gVktfTkVYVDsgLy8gKDIyKSBQQUdFIERPV04ga2V5Ci0gICAgICAg
IGNhc2UgR0RLX0tQX0VuZDoKLSAgICAgICAgICAgIHJldHVybiBWS19FTkQ7IC8vICgyMykgRU5E
IGtleQotICAgICAgICBjYXNlIEdES19LUF9Ib21lOgotICAgICAgICAgICAgcmV0dXJuIFZLX0hP
TUU7IC8vICgyNCkgSE9NRSBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfTGVmdDoKLSAgICAgICAg
ICAgIHJldHVybiBWS19MRUZUOyAvLyAoMjUpIExFRlQgQVJST1cga2V5Ci0gICAgICAgIGNhc2Ug
R0RLX0tQX1VwOgotICAgICAgICAgICAgcmV0dXJuIFZLX1VQOyAvLyAoMjYpIFVQIEFSUk9XIGtl
eQotICAgICAgICBjYXNlIEdES19LUF9SaWdodDoKLSAgICAgICAgICAgIHJldHVybiBWS19SSUdI
VDsgLy8gKDI3KSBSSUdIVCBBUlJPVyBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfRG93bjoKLSAg
ICAgICAgICAgIHJldHVybiBWS19ET1dOOyAvLyAoMjgpIERPV04gQVJST1cga2V5Ci0KLSAgICAg
ICAgY2FzZSBHREtfQmFja1NwYWNlOgotICAgICAgICAgICAgcmV0dXJuIFZLX0JBQ0s7IC8vICgw
OCkgQkFDS1NQQUNFIGtleQotICAgICAgICBjYXNlIEdES19JU09fTGVmdF9UYWI6Ci0gICAgICAg
IGNhc2UgR0RLXzMyNzBfQmFja1RhYjoKLSAgICAgICAgY2FzZSBHREtfVGFiOgotICAgICAgICAg
ICAgcmV0dXJuIFZLX1RBQjsgLy8gKDA5KSBUQUIga2V5Ci0gICAgICAgIGNhc2UgR0RLX0NsZWFy
OgotICAgICAgICAgICAgcmV0dXJuIFZLX0NMRUFSOyAvLyAoMEMpIENMRUFSIGtleQotICAgICAg
ICBjYXNlIEdES19JU09fRW50ZXI6Ci0gICAgICAgIGNhc2UgR0RLX0tQX0VudGVyOgotICAgICAg
ICBjYXNlIEdES19SZXR1cm46Ci0gICAgICAgICAgICByZXR1cm4gVktfUkVUVVJOOyAvLygwRCkg
UmV0dXJuIGtleQotICAgICAgICBjYXNlIEdES19TaGlmdF9MOgotICAgICAgICBjYXNlIEdES19T
aGlmdF9SOgotICAgICAgICAgICAgcmV0dXJuIFZLX1NISUZUOyAvLyAoMTApIFNISUZUIGtleQot
ICAgICAgICBjYXNlIEdES19Db250cm9sX0w6Ci0gICAgICAgIGNhc2UgR0RLX0NvbnRyb2xfUjoK
LSAgICAgICAgICAgIHJldHVybiBWS19DT05UUk9MOyAvLyAoMTEpIENUUkwga2V5Ci0gICAgICAg
IGNhc2UgR0RLX01lbnU6Ci0gICAgICAgICAgICByZXR1cm4gVktfQVBQUzsgIC8vICg1RCkgQXBw
bGljYXRpb25zIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAgY2FzZSBHREtfQWx0X0w6
Ci0gICAgICAgIGNhc2UgR0RLX0FsdF9SOgotICAgICAgICAgICAgcmV0dXJuIFZLX01FTlU7IC8v
ICgxMikgQUxUIGtleQotCi0gICAgICAgIGNhc2UgR0RLX1BhdXNlOgotICAgICAgICAgICAgcmV0
dXJuIFZLX1BBVVNFOyAvLyAoMTMpIFBBVVNFIGtleQotICAgICAgICBjYXNlIEdES19DYXBzX0xv
Y2s6Ci0gICAgICAgICAgICByZXR1cm4gVktfQ0FQSVRBTDsgLy8gKDE0KSBDQVBTIExPQ0sga2V5
Ci0gICAgICAgIGNhc2UgR0RLX0thbmFfTG9jazoKLSAgICAgICAgY2FzZSBHREtfS2FuYV9TaGlm
dDoKLSAgICAgICAgICAgIHJldHVybiBWS19LQU5BOyAvLyAoMTUpIElucHV0IE1ldGhvZCBFZGl0
b3IgKElNRSkgS2FuYSBtb2RlCi0gICAgICAgIGNhc2UgR0RLX0hhbmd1bDoKLSAgICAgICAgICAg
IHJldHVybiBWS19IQU5HVUw7IC8vIFZLX0hBTkdVTCAoMTUpIElNRSBIYW5ndWwgbW9kZQotICAg
ICAgICAgICAgLy8gVktfSlVOSkEgKDE3KSBJTUUgSnVuamEgbW9kZQotICAgICAgICAgICAgLy8g
VktfRklOQUwgKDE4KSBJTUUgZmluYWwgbW9kZQotICAgICAgICBjYXNlIEdES19IYW5ndWxfSGFu
amE6Ci0gICAgICAgICAgICByZXR1cm4gVktfSEFOSkE7IC8vICgxOSkgSU1FIEhhbmphIG1vZGUK
LSAgICAgICAgY2FzZSBHREtfS2Fuamk6Ci0gICAgICAgICAgICByZXR1cm4gVktfS0FOSkk7IC8v
ICgxOSkgSU1FIEthbmppIG1vZGUKLSAgICAgICAgY2FzZSBHREtfRXNjYXBlOgotICAgICAgICAg
ICAgcmV0dXJuIFZLX0VTQ0FQRTsgLy8gKDFCKSBFU0Mga2V5Ci0gICAgICAgICAgICAvLyBWS19D
T05WRVJUICgxQykgSU1FIGNvbnZlcnQKLSAgICAgICAgICAgIC8vIFZLX05PTkNPTlZFUlQgKDFE
KSBJTUUgbm9uY29udmVydAotICAgICAgICAgICAgLy8gVktfQUNDRVBUICgxRSkgSU1FIGFjY2Vw
dAotICAgICAgICAgICAgLy8gVktfTU9ERUNIQU5HRSAoMUYpIElNRSBtb2RlIGNoYW5nZSByZXF1
ZXN0Ci0gICAgICAgIGNhc2UgR0RLX3NwYWNlOgotICAgICAgICAgICAgcmV0dXJuIFZLX1NQQUNF
OyAvLyAoMjApIFNQQUNFQkFSCi0gICAgICAgIGNhc2UgR0RLX1BhZ2VfVXA6Ci0gICAgICAgICAg
ICByZXR1cm4gVktfUFJJT1I7IC8vICgyMSkgUEFHRSBVUCBrZXkKLSAgICAgICAgY2FzZSBHREtf
UGFnZV9Eb3duOgotICAgICAgICAgICAgcmV0dXJuIFZLX05FWFQ7IC8vICgyMikgUEFHRSBET1dO
IGtleQotICAgICAgICBjYXNlIEdES19FbmQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfRU5EOyAv
LyAoMjMpIEVORCBrZXkKLSAgICAgICAgY2FzZSBHREtfSG9tZToKLSAgICAgICAgICAgIHJldHVy
biBWS19IT01FOyAvLyAoMjQpIEhPTUUga2V5Ci0gICAgICAgIGNhc2UgR0RLX0xlZnQ6Ci0gICAg
ICAgICAgICByZXR1cm4gVktfTEVGVDsgLy8gKDI1KSBMRUZUIEFSUk9XIGtleQotICAgICAgICBj
YXNlIEdES19VcDoKLSAgICAgICAgICAgIHJldHVybiBWS19VUDsgLy8gKDI2KSBVUCBBUlJPVyBr
ZXkKLSAgICAgICAgY2FzZSBHREtfUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfUklHSFQ7
IC8vICgyNykgUklHSFQgQVJST1cga2V5Ci0gICAgICAgIGNhc2UgR0RLX0Rvd246Ci0gICAgICAg
ICAgICByZXR1cm4gVktfRE9XTjsgLy8gKDI4KSBET1dOIEFSUk9XIGtleQotICAgICAgICBjYXNl
IEdES19TZWxlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gVktfU0VMRUNUOyAvLyAoMjkpIFNFTEVD
VCBrZXkKLSAgICAgICAgY2FzZSBHREtfUHJpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfU05B
UFNIT1Q7IC8vICgyQykgUFJJTlQgU0NSRUVOIGtleQotICAgICAgICBjYXNlIEdES19FeGVjdXRl
OgotICAgICAgICAgICAgcmV0dXJuIFZLX0VYRUNVVEU7Ly8gKDJCKSBFWEVDVVRFIGtleQotICAg
ICAgICBjYXNlIEdES19JbnNlcnQ6Ci0gICAgICAgIGNhc2UgR0RLX0tQX0luc2VydDoKLSAgICAg
ICAgICAgIHJldHVybiBWS19JTlNFUlQ7IC8vICgyRCkgSU5TIGtleQotICAgICAgICBjYXNlIEdE
S19EZWxldGU6Ci0gICAgICAgIGNhc2UgR0RLX0tQX0RlbGV0ZToKLSAgICAgICAgICAgIHJldHVy
biBWS19ERUxFVEU7IC8vICgyRSkgREVMIGtleQotICAgICAgICBjYXNlIEdES19IZWxwOgotICAg
ICAgICAgICAgcmV0dXJuIFZLX0hFTFA7IC8vICgyRikgSEVMUCBrZXkKLSAgICAgICAgY2FzZSBH
REtfMDoKLSAgICAgICAgY2FzZSBHREtfcGFyZW5yaWdodDoKLSAgICAgICAgICAgIHJldHVybiBW
S18wOyAgICAvLyAgKDMwKSAwKSBrZXkKLSAgICAgICAgY2FzZSBHREtfMToKLSAgICAgICAgY2Fz
ZSBHREtfZXhjbGFtOgotICAgICAgICAgICAgcmV0dXJuIFZLXzE7IC8vICAoMzEpIDEgISBrZXkK
LSAgICAgICAgY2FzZSBHREtfMjoKLSAgICAgICAgY2FzZSBHREtfYXQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gVktfMjsgLy8gICgzMikgMiAmIGtleQotICAgICAgICBjYXNlIEdES18zOgotICAgICAg
ICBjYXNlIEdES19udW1iZXJzaWduOgotICAgICAgICAgICAgcmV0dXJuIFZLXzM7IC8vY2FzZSAn
Myc6IGNhc2UgJyMnOwotICAgICAgICBjYXNlIEdES180OgotICAgICAgICBjYXNlIEdES19kb2xs
YXI6IC8vICAoMzQpIDQga2V5ICckJzsKLSAgICAgICAgICAgIHJldHVybiBWS180OwotICAgICAg
ICBjYXNlIEdES181OgotICAgICAgICBjYXNlIEdES19wZXJjZW50OgotICAgICAgICAgICAgcmV0
dXJuIFZLXzU7IC8vICAoMzUpIDUga2V5ICAnJScKLSAgICAgICAgY2FzZSBHREtfNjoKLSAgICAg
ICAgY2FzZSBHREtfYXNjaWljaXJjdW06Ci0gICAgICAgICAgICByZXR1cm4gVktfNjsgLy8gICgz
NikgNiBrZXkgICdeJwotICAgICAgICBjYXNlIEdES183OgotICAgICAgICBjYXNlIEdES19hbXBl
cnNhbmQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfNzsgLy8gICgzNykgNyBrZXkgIGNhc2UgJyYn
Ci0gICAgICAgIGNhc2UgR0RLXzg6Ci0gICAgICAgIGNhc2UgR0RLX2FzdGVyaXNrOgotICAgICAg
ICAgICAgcmV0dXJuIFZLXzg7IC8vICAoMzgpIDgga2V5ICAnKicKLSAgICAgICAgY2FzZSBHREtf
OToKLSAgICAgICAgY2FzZSBHREtfcGFyZW5sZWZ0OgotICAgICAgICAgICAgcmV0dXJuIFZLXzk7
IC8vICAoMzkpIDkga2V5ICcoJwotICAgICAgICBjYXNlIEdES19hOgotICAgICAgICBjYXNlIEdE
S19BOgotICAgICAgICAgICAgcmV0dXJuIFZLX0E7IC8vICAoNDEpIEEga2V5IGNhc2UgJ2EnOiBj
YXNlICdBJzogcmV0dXJuIDB4NDE7Ci0gICAgICAgIGNhc2UgR0RLX2I6Ci0gICAgICAgIGNhc2Ug
R0RLX0I6Ci0gICAgICAgICAgICByZXR1cm4gVktfQjsgLy8gICg0MikgQiBrZXkgY2FzZSAnYic6
IGNhc2UgJ0InOiByZXR1cm4gMHg0MjsKLSAgICAgICAgY2FzZSBHREtfYzoKLSAgICAgICAgY2Fz
ZSBHREtfQzoKLSAgICAgICAgICAgIHJldHVybiBWS19DOyAvLyAgKDQzKSBDIGtleSBjYXNlICdj
JzogY2FzZSAnQyc6IHJldHVybiAweDQzOwotICAgICAgICBjYXNlIEdES19kOgotICAgICAgICBj
YXNlIEdES19EOgotICAgICAgICAgICAgcmV0dXJuIFZLX0Q7IC8vICAoNDQpIEQga2V5IGNhc2Ug
J2QnOiBjYXNlICdEJzogcmV0dXJuIDB4NDQ7Ci0gICAgICAgIGNhc2UgR0RLX2U6Ci0gICAgICAg
IGNhc2UgR0RLX0U6Ci0gICAgICAgICAgICByZXR1cm4gVktfRTsgLy8gICg0NSkgRSBrZXkgY2Fz
ZSAnZSc6IGNhc2UgJ0UnOiByZXR1cm4gMHg0NTsKLSAgICAgICAgY2FzZSBHREtfZjoKLSAgICAg
ICAgY2FzZSBHREtfRjoKLSAgICAgICAgICAgIHJldHVybiBWS19GOyAvLyAgKDQ2KSBGIGtleSBj
YXNlICdmJzogY2FzZSAnRic6IHJldHVybiAweDQ2OwotICAgICAgICBjYXNlIEdES19nOgotICAg
ICAgICBjYXNlIEdES19HOgotICAgICAgICAgICAgcmV0dXJuIFZLX0c7IC8vICAoNDcpIEcga2V5
IGNhc2UgJ2cnOiBjYXNlICdHJzogcmV0dXJuIDB4NDc7Ci0gICAgICAgIGNhc2UgR0RLX2g6Ci0g
ICAgICAgIGNhc2UgR0RLX0g6Ci0gICAgICAgICAgICByZXR1cm4gVktfSDsgLy8gICg0OCkgSCBr
ZXkgY2FzZSAnaCc6IGNhc2UgJ0gnOiByZXR1cm4gMHg0ODsKLSAgICAgICAgY2FzZSBHREtfaToK
LSAgICAgICAgY2FzZSBHREtfSToKLSAgICAgICAgICAgIHJldHVybiBWS19JOyAvLyAgKDQ5KSBJ
IGtleSBjYXNlICdpJzogY2FzZSAnSSc6IHJldHVybiAweDQ5OwotICAgICAgICBjYXNlIEdES19q
OgotICAgICAgICBjYXNlIEdES19KOgotICAgICAgICAgICAgcmV0dXJuIFZLX0o7IC8vICAoNEEp
IEoga2V5IGNhc2UgJ2onOiBjYXNlICdKJzogcmV0dXJuIDB4NEE7Ci0gICAgICAgIGNhc2UgR0RL
X2s6Ci0gICAgICAgIGNhc2UgR0RLX0s6Ci0gICAgICAgICAgICByZXR1cm4gVktfSzsgLy8gICg0
QikgSyBrZXkgY2FzZSAnayc6IGNhc2UgJ0snOiByZXR1cm4gMHg0QjsKLSAgICAgICAgY2FzZSBH
REtfbDoKLSAgICAgICAgY2FzZSBHREtfTDoKLSAgICAgICAgICAgIHJldHVybiBWS19MOyAvLyAg
KDRDKSBMIGtleSBjYXNlICdsJzogY2FzZSAnTCc6IHJldHVybiAweDRDOwotICAgICAgICBjYXNl
IEdES19tOgotICAgICAgICBjYXNlIEdES19NOgotICAgICAgICAgICAgcmV0dXJuIFZLX007IC8v
ICAoNEQpIE0ga2V5IGNhc2UgJ20nOiBjYXNlICdNJzogcmV0dXJuIDB4NEQ7Ci0gICAgICAgIGNh
c2UgR0RLX246Ci0gICAgICAgIGNhc2UgR0RLX046Ci0gICAgICAgICAgICByZXR1cm4gVktfTjsg
Ly8gICg0RSkgTiBrZXkgY2FzZSAnbic6IGNhc2UgJ04nOiByZXR1cm4gMHg0RTsKLSAgICAgICAg
Y2FzZSBHREtfbzoKLSAgICAgICAgY2FzZSBHREtfTzoKLSAgICAgICAgICAgIHJldHVybiBWS19P
OyAvLyAgKDRGKSBPIGtleSBjYXNlICdvJzogY2FzZSAnTyc6IHJldHVybiAweDRGOwotICAgICAg
ICBjYXNlIEdES19wOgotICAgICAgICBjYXNlIEdES19QOgotICAgICAgICAgICAgcmV0dXJuIFZL
X1A7IC8vICAoNTApIFAga2V5IGNhc2UgJ3AnOiBjYXNlICdQJzogcmV0dXJuIDB4NTA7Ci0gICAg
ICAgIGNhc2UgR0RLX3E6Ci0gICAgICAgIGNhc2UgR0RLX1E6Ci0gICAgICAgICAgICByZXR1cm4g
VktfUTsgLy8gICg1MSkgUSBrZXkgY2FzZSAncSc6IGNhc2UgJ1EnOiByZXR1cm4gMHg1MTsKLSAg
ICAgICAgY2FzZSBHREtfcjoKLSAgICAgICAgY2FzZSBHREtfUjoKLSAgICAgICAgICAgIHJldHVy
biBWS19SOyAvLyAgKDUyKSBSIGtleSBjYXNlICdyJzogY2FzZSAnUic6IHJldHVybiAweDUyOwot
ICAgICAgICBjYXNlIEdES19zOgotICAgICAgICBjYXNlIEdES19TOgotICAgICAgICAgICAgcmV0
dXJuIFZLX1M7IC8vICAoNTMpIFMga2V5IGNhc2UgJ3MnOiBjYXNlICdTJzogcmV0dXJuIDB4NTM7
Ci0gICAgICAgIGNhc2UgR0RLX3Q6Ci0gICAgICAgIGNhc2UgR0RLX1Q6Ci0gICAgICAgICAgICBy
ZXR1cm4gVktfVDsgLy8gICg1NCkgVCBrZXkgY2FzZSAndCc6IGNhc2UgJ1QnOiByZXR1cm4gMHg1
NDsKLSAgICAgICAgY2FzZSBHREtfdToKLSAgICAgICAgY2FzZSBHREtfVToKLSAgICAgICAgICAg
IHJldHVybiBWS19VOyAvLyAgKDU1KSBVIGtleSBjYXNlICd1JzogY2FzZSAnVSc6IHJldHVybiAw
eDU1OwotICAgICAgICBjYXNlIEdES192OgotICAgICAgICBjYXNlIEdES19WOgotICAgICAgICAg
ICAgcmV0dXJuIFZLX1Y7IC8vICAoNTYpIFYga2V5IGNhc2UgJ3YnOiBjYXNlICdWJzogcmV0dXJu
IDB4NTY7Ci0gICAgICAgIGNhc2UgR0RLX3c6Ci0gICAgICAgIGNhc2UgR0RLX1c6Ci0gICAgICAg
ICAgICByZXR1cm4gVktfVzsgLy8gICg1NykgVyBrZXkgY2FzZSAndyc6IGNhc2UgJ1cnOiByZXR1
cm4gMHg1NzsKLSAgICAgICAgY2FzZSBHREtfeDoKLSAgICAgICAgY2FzZSBHREtfWDoKLSAgICAg
ICAgICAgIHJldHVybiBWS19YOyAvLyAgKDU4KSBYIGtleSBjYXNlICd4JzogY2FzZSAnWCc6IHJl
dHVybiAweDU4OwotICAgICAgICBjYXNlIEdES195OgotICAgICAgICBjYXNlIEdES19ZOgotICAg
ICAgICAgICAgcmV0dXJuIFZLX1k7IC8vICAoNTkpIFkga2V5IGNhc2UgJ3knOiBjYXNlICdZJzog
cmV0dXJuIDB4NTk7Ci0gICAgICAgIGNhc2UgR0RLX3o6Ci0gICAgICAgIGNhc2UgR0RLX1o6Ci0g
ICAgICAgICAgICByZXR1cm4gVktfWjsgLy8gICg1QSkgWiBrZXkgY2FzZSAneic6IGNhc2UgJ1on
OiByZXR1cm4gMHg1QTsKLSAgICAgICAgY2FzZSBHREtfTWV0YV9MOgotICAgICAgICAgICAgcmV0
dXJuIFZLX0xXSU47IC8vICg1QikgTGVmdCBXaW5kb3dzIGtleSAoTWljcm9zb2Z0IE5hdHVyYWwg
a2V5Ym9hcmQpCi0gICAgICAgIGNhc2UgR0RLX01ldGFfUjoKLSAgICAgICAgICAgIHJldHVybiBW
S19SV0lOOyAvLyAoNUMpIFJpZ2h0IFdpbmRvd3Mga2V5IChOYXR1cmFsIGtleWJvYXJkKQotICAg
ICAgICAgICAgLy8gVktfU0xFRVAgKDVGKSBDb21wdXRlciBTbGVlcCBrZXkKLSAgICAgICAgICAg
IC8vIFZLX1NFUEFSQVRPUiAoNkMpIFNlcGFyYXRvciBrZXkKLSAgICAgICAgICAgIC8vIFZLX1NV
QlRSQUNUICg2RCkgU3VidHJhY3Qga2V5Ci0gICAgICAgICAgICAvLyBWS19ERUNJTUFMICg2RSkg
RGVjaW1hbCBrZXkKLSAgICAgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERpdmlkZSBrZXkKLSAg
ICAgICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKLQotICAgICAgICBjYXNlIEdE
S19OdW1fTG9jazoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1MT0NLOyAvLyAoOTApIE5VTSBM
T0NLIGtleQotCi0gICAgICAgIGNhc2UgR0RLX1Njcm9sbF9Mb2NrOgotICAgICAgICAgICAgcmV0
dXJuIFZLX1NDUk9MTDsgLy8gKDkxKSBTQ1JPTEwgTE9DSyBrZXkKLQotICAgICAgICAgICAgLy8g
VktfTFNISUZUIChBMCkgTGVmdCBTSElGVCBrZXkKLSAgICAgICAgICAgIC8vIFZLX1JTSElGVCAo
QTEpIFJpZ2h0IFNISUZUIGtleQotICAgICAgICAgICAgLy8gVktfTENPTlRST0wgKEEyKSBMZWZ0
IENPTlRST0wga2V5Ci0gICAgICAgICAgICAvLyBWS19SQ09OVFJPTCAoQTMpIFJpZ2h0IENPTlRS
T0wga2V5Ci0gICAgICAgICAgICAvLyBWS19MTUVOVSAoQTQpIExlZnQgTUVOVSBrZXkKLSAgICAg
ICAgICAgIC8vIFZLX1JNRU5VIChBNSkgUmlnaHQgTUVOVSBrZXkKLSAgICAgICAgICAgIC8vIFZL
X0JST1dTRVJfQkFDSyAoQTYpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBCYWNrIGtleQotICAg
ICAgICAgICAgLy8gVktfQlJPV1NFUl9GT1JXQVJEIChBNykgV2luZG93cyAyMDAwL1hQOiBCcm93
c2VyIEZvcndhcmQga2V5Ci0gICAgICAgICAgICAvLyBWS19CUk9XU0VSX1JFRlJFU0ggKEE4KSBX
aW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgUmVmcmVzaCBrZXkKLSAgICAgICAgICAgIC8vIFZLX0JS
T1dTRVJfU1RPUCAoQTkpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBTdG9wIGtleQotICAgICAg
ICAgICAgLy8gVktfQlJPV1NFUl9TRUFSQ0ggKEFBKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIg
U2VhcmNoIGtleQotICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9GQVZPUklURVMgKEFCKSBXaW5k
b3dzIDIwMDAvWFA6IEJyb3dzZXIgRmF2b3JpdGVzIGtleQotICAgICAgICAgICAgLy8gVktfQlJP
V1NFUl9IT01FIChBQykgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0YXJ0IGFuZCBIb21lIGtl
eQotICAgICAgICAgICAgLy8gVktfVk9MVU1FX01VVEUgKEFEKSBXaW5kb3dzIDIwMDAvWFA6IFZv
bHVtZSBNdXRlIGtleQotICAgICAgICAgICAgLy8gVktfVk9MVU1FX0RPV04gKEFFKSBXaW5kb3dz
IDIwMDAvWFA6IFZvbHVtZSBEb3duIGtleQotICAgICAgICAgICAgLy8gVktfVk9MVU1FX1VQIChB
RikgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgVXAga2V5Ci0gICAgICAgICAgICAvLyBWS19NRURJ
QV9ORVhUX1RSQUNLIChCMCkgV2luZG93cyAyMDAwL1hQOiBOZXh0IFRyYWNrIGtleQotICAgICAg
ICAgICAgLy8gVktfTUVESUFfUFJFVl9UUkFDSyAoQjEpIFdpbmRvd3MgMjAwMC9YUDogUHJldmlv
dXMgVHJhY2sga2V5Ci0gICAgICAgICAgICAvLyBWS19NRURJQV9TVE9QIChCMikgV2luZG93cyAy
MDAwL1hQOiBTdG9wIE1lZGlhIGtleQotICAgICAgICAgICAgLy8gVktfTUVESUFfUExBWV9QQVVT
RSAoQjMpIFdpbmRvd3MgMjAwMC9YUDogUGxheS9QYXVzZSBNZWRpYSBrZXkKLSAgICAgICAgICAg
IC8vIFZLX0xBVU5DSF9NQUlMIChCNCkgV2luZG93cyAyMDAwL1hQOiBTdGFydCBNYWlsIGtleQot
ICAgICAgICAgICAgLy8gVktfTEFVTkNIX01FRElBX1NFTEVDVCAoQjUpIFdpbmRvd3MgMjAwMC9Y
UDogU2VsZWN0IE1lZGlhIGtleQotICAgICAgICAgICAgLy8gVktfTEFVTkNIX0FQUDEgKEI2KSBX
aW5kb3dzIDIwMDAvWFA6IFN0YXJ0IEFwcGxpY2F0aW9uIDEga2V5Ci0gICAgICAgICAgICAvLyBW
S19MQVVOQ0hfQVBQMiAoQjcpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24gMiBr
ZXkKLQotICAgICAgICAgICAgLy8gVktfT0VNXzEgKEJBKSBVc2VkIGZvciBtaXNjZWxsYW5lb3Vz
IGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZv
ciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnOzonIGtleQotICAgICAgICBjYXNlIEdE
S19zZW1pY29sb246Ci0gICAgICAgIGNhc2UgR0RLX2NvbG9uOgotICAgICAgICAgICAgcmV0dXJu
IFZLX09FTV8xOyAvL2Nhc2UgJzsnOiBjYXNlICc6JzogcmV0dXJuIDB4QkE7Ci0gICAgICAgICAg
ICAvLyBWS19PRU1fUExVUyAoQkIpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3Jl
Z2lvbiwgdGhlICcrJyBrZXkKLSAgICAgICAgY2FzZSBHREtfcGx1czoKLSAgICAgICAgY2FzZSBH
REtfZXF1YWw6Ci0gICAgICAgICAgICByZXR1cm4gVktfT0VNX1BMVVM7IC8vY2FzZSAnPSc6IGNh
c2UgJysnOiByZXR1cm4gMHhCQjsKLSAgICAgICAgICAgIC8vIFZLX09FTV9DT01NQSAoQkMpIFdp
bmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcsJyBrZXkKLSAgICAg
ICAgY2FzZSBHREtfY29tbWE6Ci0gICAgICAgIGNhc2UgR0RLX2xlc3M6Ci0gICAgICAgICAgICBy
ZXR1cm4gVktfT0VNX0NPTU1BOyAvL2Nhc2UgJywnOiBjYXNlICc8JzogcmV0dXJuIDB4QkM7Ci0g
ICAgICAgICAgICAvLyBWS19PRU1fTUlOVVMgKEJEKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkg
Y291bnRyeS9yZWdpb24sIHRoZSAnLScga2V5Ci0gICAgICAgIGNhc2UgR0RLX21pbnVzOgotICAg
ICAgICBjYXNlIEdES191bmRlcnNjb3JlOgotICAgICAgICAgICAgcmV0dXJuIFZLX09FTV9NSU5V
UzsgLy9jYXNlICctJzogY2FzZSAnXyc6IHJldHVybiAweEJEOwotICAgICAgICAgICAgLy8gVktf
T0VNX1BFUklPRCAoQkUpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwg
dGhlICcuJyBrZXkKLSAgICAgICAgY2FzZSBHREtfcGVyaW9kOgotICAgICAgICBjYXNlIEdES19n
cmVhdGVyOgotICAgICAgICAgICAgcmV0dXJuIFZLX09FTV9QRVJJT0Q7IC8vY2FzZSAnLic6IGNh
c2UgJz4nOiByZXR1cm4gMHhCRTsKLSAgICAgICAgICAgIC8vIFZLX09FTV8yIChCRikgVXNlZCBm
b3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2lu
ZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJy8/JyBrZXkK
LSAgICAgICAgY2FzZSBHREtfc2xhc2g6Ci0gICAgICAgIGNhc2UgR0RLX3F1ZXN0aW9uOgotICAg
ICAgICAgICAgcmV0dXJuIFZLX09FTV8yOyAvL2Nhc2UgJy8nOiBjYXNlICc/JzogcmV0dXJuIDB4
QkY7Ci0gICAgICAgICAgICAvLyBWS19PRU1fMyAoQzApIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMg
Y2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9y
IHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdgficga2V5Ci0gICAgICAgIGNhc2UgR0RL
X2FzY2lpdGlsZGU6Ci0gICAgICAgIGNhc2UgR0RLX3F1b3RlbGVmdDoKLSAgICAgICAgICAgIHJl
dHVybiBWS19PRU1fMzsgLy9jYXNlICdgJzogY2FzZSAnfic6IHJldHVybiAweEMwOwotICAgICAg
ICAgICAgLy8gVktfT0VNXzQgKERCKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7
IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3Rh
bmRhcmQga2V5Ym9hcmQsIHRoZSAnW3snIGtleQotICAgICAgICBjYXNlIEdES19icmFja2V0bGVm
dDoKLSAgICAgICAgY2FzZSBHREtfYnJhY2VsZWZ0OgotICAgICAgICAgICAgcmV0dXJuIFZLX09F
TV80OyAvL2Nhc2UgJ1snOiBjYXNlICd7JzogcmV0dXJuIDB4REI7Ci0gICAgICAgICAgICAvLyBW
S19PRU1fNSAoREMpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZh
cnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXli
b2FyZCwgdGhlICdcfCcga2V5Ci0gICAgICAgIGNhc2UgR0RLX2JhY2tzbGFzaDoKLSAgICAgICAg
Y2FzZSBHREtfYmFyOgotICAgICAgICAgICAgcmV0dXJuIFZLX09FTV81OyAvL2Nhc2UgJ1xcJzog
Y2FzZSAnfCc6IHJldHVybiAweERDOwotICAgICAgICAgICAgLy8gVktfT0VNXzYgKEREKSBVc2Vk
IGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBX
aW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXX0nIGtl
eQotICAgICAgICBjYXNlIEdES19icmFja2V0cmlnaHQ6Ci0gICAgICAgIGNhc2UgR0RLX2JyYWNl
cmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfT0VNXzY7IC8vIGNhc2UgJ10nOiBjYXNlICd9
JzogcmV0dXJuIDB4REQ7Ci0gICAgICAgICAgICAvLyBWS19PRU1fNyAoREUpIFVzZWQgZm9yIG1p
c2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3Mg
MjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdzaW5nbGUtcXVvdGUv
ZG91YmxlLXF1b3RlJyBrZXkKLSAgICAgICAgY2FzZSBHREtfcXVvdGVyaWdodDoKLSAgICAgICAg
Y2FzZSBHREtfcXVvdGVkYmw6Ci0gICAgICAgICAgICByZXR1cm4gVktfT0VNXzc7IC8vIGNhc2Ug
J1wnJzogY2FzZSAnIic6IHJldHVybiAweERFOwotICAgICAgICAgICAgLy8gVktfT0VNXzggKERG
KSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJv
YXJkLgotICAgICAgICAgICAgLy8gVktfT0VNXzEwMiAoRTIpIFdpbmRvd3MgMjAwMC9YUDogRWl0
aGVyIHRoZSBhbmdsZSBicmFja2V0IGtleSBvciB0aGUgYmFja3NsYXNoIGtleSBvbiB0aGUgUlQg
MTAyLWtleSBrZXlib2FyZAotICAgICAgICAgICAgLy8gVktfUFJPQ0VTU0tFWSAoRTUpIFdpbmRv
d3MgOTUvOTgvTWUsIFdpbmRvd3MgTlQgNC4wLCBXaW5kb3dzIDIwMDAvWFA6IElNRSBQUk9DRVNT
IGtleQotICAgICAgICAgICAgLy8gVktfUEFDS0VUIChFNykgV2luZG93cyAyMDAwL1hQOiBVc2Vk
IHRvIHBhc3MgVW5pY29kZSBjaGFyYWN0ZXJzIGFzIGlmIHRoZXkgd2VyZSBrZXlzdHJva2VzLiBU
aGUgVktfUEFDS0VUIGtleSBpcyB0aGUgbG93IHdvcmQgb2YgYSAzMi1iaXQgVmlydHVhbCBLZXkg
dmFsdWUgdXNlZCBmb3Igbm9uLWtleWJvYXJkIGlucHV0IG1ldGhvZHMuIEZvciBtb3JlIGluZm9y
bWF0aW9uLCBzZWUgUmVtYXJrIGluIEtFWUJESU5QVVQsU2VuZElucHV0LCBXTV9LRVlET1dOLCBh
bmQgV01fS0VZVVAKLSAgICAgICAgICAgIC8vIFZLX0FUVE4gKEY2KSBBdHRuIGtleQotICAgICAg
ICAgICAgLy8gVktfQ1JTRUwgKEY3KSBDclNlbCBrZXkKLSAgICAgICAgICAgIC8vIFZLX0VYU0VM
IChGOCkgRXhTZWwga2V5Ci0gICAgICAgICAgICAvLyBWS19FUkVPRiAoRjkpIEVyYXNlIEVPRiBr
ZXkKLSAgICAgICAgICAgIC8vIFZLX1BMQVkgKEZBKSBQbGF5IGtleQotICAgICAgICAgICAgLy8g
VktfWk9PTSAoRkIpIFpvb20ga2V5Ci0gICAgICAgICAgICAvLyBWS19OT05BTUUgKEZDKSBSZXNl
cnZlZCBmb3IgZnV0dXJlIHVzZQotICAgICAgICAgICAgLy8gVktfUEExIChGRCkgUEExIGtleQot
ICAgICAgICAgICAgLy8gVktfT0VNX0NMRUFSIChGRSkgQ2xlYXIga2V5Ci0gICAgICAgIGNhc2Ug
R0RLX0YxOgotICAgICAgICBjYXNlIEdES19GMjoKLSAgICAgICAgY2FzZSBHREtfRjM6Ci0gICAg
ICAgIGNhc2UgR0RLX0Y0OgotICAgICAgICBjYXNlIEdES19GNToKLSAgICAgICAgY2FzZSBHREtf
RjY6Ci0gICAgICAgIGNhc2UgR0RLX0Y3OgotICAgICAgICBjYXNlIEdES19GODoKLSAgICAgICAg
Y2FzZSBHREtfRjk6Ci0gICAgICAgIGNhc2UgR0RLX0YxMDoKLSAgICAgICAgY2FzZSBHREtfRjEx
OgotICAgICAgICBjYXNlIEdES19GMTI6Ci0gICAgICAgIGNhc2UgR0RLX0YxMzoKLSAgICAgICAg
Y2FzZSBHREtfRjE0OgotICAgICAgICBjYXNlIEdES19GMTU6Ci0gICAgICAgIGNhc2UgR0RLX0Yx
NjoKLSAgICAgICAgY2FzZSBHREtfRjE3OgotICAgICAgICBjYXNlIEdES19GMTg6Ci0gICAgICAg
IGNhc2UgR0RLX0YxOToKLSAgICAgICAgY2FzZSBHREtfRjIwOgotICAgICAgICBjYXNlIEdES19G
MjE6Ci0gICAgICAgIGNhc2UgR0RLX0YyMjoKLSAgICAgICAgY2FzZSBHREtfRjIzOgotICAgICAg
ICBjYXNlIEdES19GMjQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfRjEgKyAoa2V5Y29kZSAtIEdE
S19GMSk7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0K
LQotfQotCi1TdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5nbGVDaGFyYWN0ZXJTdHJp
bmcodW5zaWduZWQgdmFsKQotewotICAgIHN3aXRjaCAodmFsKSB7Ci0gICAgICAgIGNhc2UgR0RL
X0lTT19FbnRlcjoKLSAgICAgICAgY2FzZSBHREtfS1BfRW50ZXI6Ci0gICAgICAgIGNhc2UgR0RL
X1JldHVybjoKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIlxyIik7Ci0gICAgICAgIGNhc2Ug
R0RLX0JhY2tTcGFjZToKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIlx4OCIpOwotICAgICAg
ICBjYXNlIEdES19UYWI6Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJcdCIpOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgZ3VuaWNoYXIgYyA9IGdka19rZXl2YWxfdG9fdW5pY29k
ZSh2YWwpOwotICAgICAgICAgICAgZ2xvbmcgbndjOwotICAgICAgICAgICAgZ3VuaWNoYXIyKiB1
Y2hhcjE2ID0gZ191Y3M0X3RvX3V0ZjE2KCZjLCAxLCAwLCAmbndjLCAwKTsKLQotICAgICAgICAg
ICAgU3RyaW5nIHJldFZhbDsKLSAgICAgICAgICAgIGlmICh1Y2hhcjE2KQotICAgICAgICAgICAg
ICAgIHJldFZhbCA9IFN0cmluZygoVUNoYXIqKXVjaGFyMTYsIG53Yyk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmV0VmFsID0gU3RyaW5nKCk7Ci0KLSAgICAgICAgICAgIGdf
ZnJlZSh1Y2hhcjE2KTsKLQotICAgICAgICAgICAgcmV0dXJuIHJldFZhbDsKLSAgICB9Ci19Ci0K
LS8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIG90aGVyIHBsYXRmb3JtIGV2ZW50IGNvbnN0
cnVjdG9ycwotLy8gVE9ETzogbV9nZGtFdmVudEtleSBzaG91bGQgYmUgcmVmY291bnRlZAotUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2
ZW50KQotICAgIDogbV90eXBlKChldmVudC0+dHlwZSA9PSBHREtfS0VZX1JFTEVBU0UpID8gS2V5
VXAgOiBLZXlEb3duKQotICAgICwgbV90ZXh0KHNpbmdsZUNoYXJhY3RlclN0cmluZyhldmVudC0+
a2V5dmFsKSkKLSAgICAsIG1fdW5tb2RpZmllZFRleHQoc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV2
ZW50LT5rZXl2YWwpKQotICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JHZGtL
ZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQotICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQotICAgICwg
bV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKGV2ZW50
LT5rZXl2YWwpKQotICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShldmVudC0+a2V5dmFsKQot
ICAgICwgbV9pc0tleXBhZChldmVudC0+a2V5dmFsID49IEdES19LUF9TcGFjZSAmJiBldmVudC0+
a2V5dmFsIDw9IEdES19LUF85KQotICAgICwgbV9zaGlmdEtleSgoZXZlbnQtPnN0YXRlICYgR0RL
X1NISUZUX01BU0spIHx8IChldmVudC0+a2V5dmFsID09IEdES18zMjcwX0JhY2tUYWIpKQotICAg
ICwgbV9jdHJsS2V5KGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0spCi0gICAgLCBtX2Fs
dEtleShldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQotICAgICwgbV9tZXRhS2V5KGV2ZW50
LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAgLCBtX2dka0V2ZW50S2V5KGV2ZW50KQotewot
fQotCi12b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KFR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQotewotICAgIC8vIENh
biBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFz
IHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgotICAgIEFTU0VSVCht
X3R5cGUgPT0gS2V5RG93bik7Ci0gICAgbV90eXBlID0gdHlwZTsKLQotICAgIGlmIChiYWNrd2Fy
ZENvbXBhdGliaWxpdHlNb2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAodHlwZSA9PSBS
YXdLZXlEb3duKSB7Ci0gICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwotICAgICAgICBtX3VubW9k
aWZpZWRUZXh0ID0gU3RyaW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9rZXlJZGVudGlm
aWVyID0gU3RyaW5nKCk7Ci0gICAgICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gMDsKLSAg
ICB9Ci19Ci0KLWJvb2wgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0
ZSgpCi17Ci0gICAgcmV0dXJuIGdka19rZXltYXBfZ2V0X2NhcHNfbG9ja19zdGF0ZShnZGtfa2V5
bWFwX2dldF9kZWZhdWx0KCkpOwotfQotCi12b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0
Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0cmxLZXksIGJvb2wm
IGFsdEtleSwgYm9vbCYgbWV0YUtleSkKLXsKLSAgICBHZGtNb2RpZmllclR5cGUgc3RhdGU7Ci0g
ICAgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3N0YXRlKCZzdGF0ZSk7Ci0KLSAgICBzaGlmdEtleSA9
IHN0YXRlICYgR0RLX1NISUZUX01BU0s7Ci0gICAgY3RybEtleSA9IHN0YXRlICYgR0RLX0NPTlRS
T0xfTUFTSzsKLSAgICBhbHRLZXkgPSBzdGF0ZSAmIEdES19NT0QxX01BU0s7Ci0gICAgbWV0YUtl
eSA9IHN0YXRlICYgR0RLX01FVEFfTUFTSzsKLX0KLQotR2RrRXZlbnRLZXkqIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6Z2RrRXZlbnRLZXkoKSBjb25zdAotewotICAgIHJldHVybiBtX2dka0V2ZW50
S2V5OwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTW91c2VFdmVu
dEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01vdXNl
RXZlbnRHdGsuY3BwCShyZXZpc2lvbiA4MzQxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Nb3VzZUV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDUgKzAsMCBAQAot
LyoKLSogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5j
b20KLSogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
KiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0qIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0q
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0qIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybU1vdXNl
RXZlbnQuaCIKLQotI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKLQotI2luY2x1ZGUgPGdkay9nZGsu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogV291bGQgYmUgZXZlbiBiZXR0
ZXIgdG8gZmlndXJlIG91dCB3aGljaCBtb2RpZmllciBpcyBBbHQgaW5zdGVhZCBvZiBhbHdheXMg
dXNpbmcgR0RLX01PRDFfTUFTSy4KLQotLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgb3Ro
ZXIgcGxhdGZvcm0gZXZlbnQgY29uc3RydWN0b3JzCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRm
b3JtTW91c2VFdmVudChHZGtFdmVudEJ1dHRvbiogZXZlbnQpCi17Ci0gICAgbV90aW1lc3RhbXAg
PSBldmVudC0+dGltZTsKLSAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoKGludClldmVudC0+eCwg
KGludClldmVudC0+eSk7Ci0gICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KChpbnQpZXZl
bnQtPnhfcm9vdCwgKGludClldmVudC0+eV9yb290KTsKLSAgICBtX3NoaWZ0S2V5ID0gZXZlbnQt
PnN0YXRlICYgR0RLX1NISUZUX01BU0s7Ci0gICAgbV9jdHJsS2V5ID0gZXZlbnQtPnN0YXRlICYg
R0RLX0NPTlRST0xfTUFTSzsKLSAgICBtX2FsdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19NT0Qx
X01BU0s7Ci0gICAgbV9tZXRhS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX01FVEFfTUFTSzsKLQot
ICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUpIHsKLSAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6Ci0g
ICAgY2FzZSBHREtfMkJVVFRPTl9QUkVTUzoKLSAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNTOgot
ICAgIGNhc2UgR0RLX0JVVFRPTl9SRUxFQVNFOgotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNl
RXZlbnRQcmVzc2VkOwotICAgICAgICBpZiAoZXZlbnQtPnR5cGUgPT0gR0RLX0JVVFRPTl9SRUxF
QVNFKSB7Ci0gICAgICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKLSAg
ICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDA7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5
cGUgPT0gR0RLX0JVVFRPTl9QUkVTUykKLSAgICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDE7Ci0g
ICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlID09IEdES18yQlVUVE9OX1BSRVNTKQotICAgICAg
ICAgICAgbV9jbGlja0NvdW50ID0gMjsKLSAgICAgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUgPT0g
R0RLXzNCVVRUT05fUFJFU1MpCi0gICAgICAgICAgICBtX2NsaWNrQ291bnQgPSAzOwotCi0gICAg
ICAgIGlmIChldmVudC0+YnV0dG9uID09IDEpCi0gICAgICAgICAgICBtX2J1dHRvbiA9IExlZnRC
dXR0b247Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50LT5idXR0b24gPT0gMikKLSAgICAgICAgICAg
IG1fYnV0dG9uID0gTWlkZGxlQnV0dG9uOwotICAgICAgICBlbHNlIGlmIChldmVudC0+YnV0dG9u
ID09IDMpCi0gICAgICAgICAgICBtX2J1dHRvbiA9IFJpZ2h0QnV0dG9uOwotICAgICAgICBicmVh
azsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH07
Ci19Ci0KLVBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEdka0V2ZW50TW90
aW9uKiBtb3Rpb24pCi17Ci0gICAgbV90aW1lc3RhbXAgPSBtb3Rpb24tPnRpbWU7Ci0gICAgbV9w
b3NpdGlvbiA9IEludFBvaW50KChpbnQpbW90aW9uLT54LCAoaW50KW1vdGlvbi0+eSk7Ci0gICAg
bV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KChpbnQpbW90aW9uLT54X3Jvb3QsIChpbnQpbW90
aW9uLT55X3Jvb3QpOwotICAgIG1fc2hpZnRLZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX1NISUZU
X01BU0s7Ci0gICAgbV9jdHJsS2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0s7
Ci0gICAgbV9hbHRLZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX01PRDFfTUFTSzsKLSAgICBtX21l
dGFLZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX01PRDJfTUFTSzsKLQotICAgIHN3aXRjaCAobW90
aW9uLT50eXBlKSB7Ci0gICAgY2FzZSBHREtfTU9USU9OX05PVElGWToKLSAgICAgICAgbV9ldmVu
dFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7Ci0gICAgICAgIG1fYnV0dG9uID0gTm9CdXR0b247Ci0g
ICAgICAgIG1fY2xpY2tDb3VudCA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH07Ci0KLSAgICBpZiAobW90aW9uLT5z
dGF0ZSAmIEdES19CVVRUT04xX01BU0spCi0gICAgICAgIG1fYnV0dG9uID0gTGVmdEJ1dHRvbjsK
LSAgICBlbHNlIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0JVVFRPTjJfTUFTSykKLSAgICAgICAg
bV9idXR0b24gPSBNaWRkbGVCdXR0b247Ci0gICAgZWxzZSBpZiAobW90aW9uLT5zdGF0ZSAmIEdE
S19CVVRUT04zX01BU0spCi0gICAgICAgIG1fYnV0dG9uID0gUmlnaHRCdXR0b247Ci19Ci19Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3Rr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50R3RrLmNwcAkocmV2aXNpb24gODM0MTYpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9LZXlFdmVudEd0ay5jcHA6ODM0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwg
RW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KKyAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRk
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgor
CisjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29k
ZXMuaCIKKworI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBUaGlzIGlzIGluY29tcGxldGUu
ICBXZSBzaG91bGQgY2hhbmdlIHRoaXMgdG8gbWlycm9yCisvLyBtb3JlIGxpa2Ugd2hhdCBGaXJl
Zm94IGRvZXMsIGFuZCBnZW5lcmF0ZSB0aGVzZSBzd2l0Y2ggc3RhdGVtZW50cworLy8gYXQgYnVp
bGQgdGltZS4KK1N0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JH
ZGtLZXlDb2RlKHVuc2lnbmVkIGtleUNvZGUpCit7CisgICAgc3dpdGNoIChrZXlDb2RlKSB7Cisg
ICAgICAgIGNhc2UgR0RLX01lbnU6CisgICAgICAgIGNhc2UgR0RLX0FsdF9MOgorICAgICAgICBj
YXNlIEdES19BbHRfUjoKKyAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgY2FzZSBH
REtfQ2xlYXI6CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgY2FzZSBHREtf
RG93bjoKKyAgICAgICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgICAgICAvLyAiRW5kIgor
ICAgICAgICBjYXNlIEdES19FbmQ6CisgICAgICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAg
ICAgICAvLyAiRW50ZXIiCisgICAgICAgIGNhc2UgR0RLX0lTT19FbnRlcjoKKyAgICAgICAgY2Fz
ZSBHREtfS1BfRW50ZXI6CisgICAgICAgIGNhc2UgR0RLX1JldHVybjoKKyAgICAgICAgICAgIHJl
dHVybiAiRW50ZXIiOworICAgICAgICBjYXNlIEdES19FeGVjdXRlOgorICAgICAgICAgICAgcmV0
dXJuICJFeGVjdXRlIjsKKyAgICAgICAgY2FzZSBHREtfRjE6CisgICAgICAgICAgICByZXR1cm4g
IkYxIjsKKyAgICAgICAgY2FzZSBHREtfRjI6CisgICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAg
ICAgICAgY2FzZSBHREtfRjM6CisgICAgICAgICAgICByZXR1cm4gIkYzIjsKKyAgICAgICAgY2Fz
ZSBHREtfRjQ6CisgICAgICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgY2FzZSBHREtfRjU6
CisgICAgICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgY2FzZSBHREtfRjY6CisgICAgICAg
ICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgY2FzZSBHREtfRjc6CisgICAgICAgICAgICByZXR1
cm4gIkY3IjsKKyAgICAgICAgY2FzZSBHREtfRjg6CisgICAgICAgICAgICByZXR1cm4gIkY4IjsK
KyAgICAgICAgY2FzZSBHREtfRjk6CisgICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAg
Y2FzZSBHREtfRjEwOgorICAgICAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICBjYXNlIEdE
S19GMTE6CisgICAgICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIGNhc2UgR0RLX0YxMjoK
KyAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgY2FzZSBHREtfRjEzOgorICAgICAg
ICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICBjYXNlIEdES19GMTQ6CisgICAgICAgICAgICBy
ZXR1cm4gIkYxNCI7CisgICAgICAgIGNhc2UgR0RLX0YxNToKKyAgICAgICAgICAgIHJldHVybiAi
RjE1IjsKKyAgICAgICAgY2FzZSBHREtfRjE2OgorICAgICAgICAgICAgcmV0dXJuICJGMTYiOwor
ICAgICAgICBjYXNlIEdES19GMTc6CisgICAgICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAg
IGNhc2UgR0RLX0YxODoKKyAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgY2FzZSBH
REtfRjE5OgorICAgICAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICBjYXNlIEdES19GMjA6
CisgICAgICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAgIGNhc2UgR0RLX0YyMToKKyAgICAg
ICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgY2FzZSBHREtfRjIyOgorICAgICAgICAgICAg
cmV0dXJuICJGMjIiOworICAgICAgICBjYXNlIEdES19GMjM6CisgICAgICAgICAgICByZXR1cm4g
IkYyMyI7CisgICAgICAgIGNhc2UgR0RLX0YyNDoKKyAgICAgICAgICAgIHJldHVybiAiRjI0IjsK
KyAgICAgICAgY2FzZSBHREtfSGVscDoKKyAgICAgICAgICAgIHJldHVybiAiSGVscCI7CisgICAg
ICAgIGNhc2UgR0RLX0hvbWU6CisgICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICBj
YXNlIEdES19JbnNlcnQ6CisgICAgICAgICAgICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIGNh
c2UgR0RLX0xlZnQ6CisgICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICBjYXNlIEdE
S19QYWdlX0Rvd246CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgY2Fz
ZSBHREtfUGFnZV9VcDoKKyAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgY2Fz
ZSBHREtfUGF1c2U6CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAgICAgICAgY2FzZSBH
REtfMzI3MF9QcmludFNjcmVlbjoKKyAgICAgICAgY2FzZSBHREtfUHJpbnQ6CisgICAgICAgICAg
ICByZXR1cm4gIlByaW50U2NyZWVuIjsKKyAgICAgICAgY2FzZSBHREtfUmlnaHQ6CisgICAgICAg
ICAgICByZXR1cm4gIlJpZ2h0IjsKKyAgICAgICAgY2FzZSBHREtfU2VsZWN0OgorICAgICAgICAg
ICAgcmV0dXJuICJTZWxlY3QiOworICAgICAgICBjYXNlIEdES19VcDoKKyAgICAgICAgICAgIHJl
dHVybiAiVXAiOworICAgICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVz
IFUrMDA3Ri4KKyAgICAgICAgY2FzZSBHREtfRGVsZXRlOgorICAgICAgICAgICAgcmV0dXJuICJV
KzAwN0YiOworICAgICAgICBjYXNlIEdES19CYWNrU3BhY2U6CisgICAgICAgICAgICByZXR1cm4g
IlUrMDAwOCI7CisgICAgICAgIGNhc2UgR0RLX0lTT19MZWZ0X1RhYjoKKyAgICAgICAgY2FzZSBH
REtfMzI3MF9CYWNrVGFiOgorICAgICAgICBjYXNlIEdES19UYWI6CisgICAgICAgICAgICByZXR1
cm4gIlUrMDAwOSI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIlUrJTA0WCIsIGdka19rZXl2YWxfdG9fdW5pY29kZShnZGtfa2V5dmFsX3RvX3Vw
cGVyKGtleUNvZGUpKSk7CisgICAgfQorfQorCitpbnQgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojp3
aW5kb3dzS2V5Q29kZUZvckdka0tleUNvZGUodW5zaWduZWQga2V5Y29kZSkKK3sKKyAgICBzd2l0
Y2ggKGtleWNvZGUpIHsKKyAgICAgICAgY2FzZSBHREtfS1BfMDoKKyAgICAgICAgICAgIHJldHVy
biBWS19OVU1QQUQwOy8vICg2MCkgTnVtZXJpYyBrZXlwYWQgMCBrZXkKKyAgICAgICAgY2FzZSBH
REtfS1BfMToKKyAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQxOy8vICg2MSkgTnVtZXJpYyBr
ZXlwYWQgMSBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfMjoKKyAgICAgICAgICAgIHJldHVybiAg
VktfTlVNUEFEMjsgLy8gKDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQorICAgICAgICBjYXNlIEdE
S19LUF8zOgorICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDM7IC8vICg2MykgTnVtZXJpYyBr
ZXlwYWQgMyBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfNDoKKyAgICAgICAgICAgIHJldHVybiBW
S19OVU1QQUQ0OyAvLyAoNjQpIE51bWVyaWMga2V5cGFkIDQga2V5CisgICAgICAgIGNhc2UgR0RL
X0tQXzU6CisgICAgICAgICAgICByZXR1cm4gVktfTlVNUEFENTsgLy8oNjUpIE51bWVyaWMga2V5
cGFkIDUga2V5CisgICAgICAgIGNhc2UgR0RLX0tQXzY6CisgICAgICAgICAgICByZXR1cm4gVktf
TlVNUEFENjsgLy8gKDY2KSBOdW1lcmljIGtleXBhZCA2IGtleQorICAgICAgICBjYXNlIEdES19L
UF83OgorICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDc7IC8vICg2NykgTnVtZXJpYyBrZXlw
YWQgNyBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfODoKKyAgICAgICAgICAgIHJldHVybiBWS19O
VU1QQUQ4OyAvLyAoNjgpIE51bWVyaWMga2V5cGFkIDgga2V5CisgICAgICAgIGNhc2UgR0RLX0tQ
Xzk6CisgICAgICAgICAgICByZXR1cm4gVktfTlVNUEFEOTsgLy8gKDY5KSBOdW1lcmljIGtleXBh
ZCA5IGtleQorICAgICAgICBjYXNlIEdES19LUF9NdWx0aXBseToKKyAgICAgICAgICAgIHJldHVy
biBWS19NVUxUSVBMWTsgLy8gKDZBKSBNdWx0aXBseSBrZXkKKyAgICAgICAgY2FzZSBHREtfS1Bf
QWRkOgorICAgICAgICAgICAgcmV0dXJuIFZLX0FERDsgLy8gKDZCKSBBZGQga2V5CisgICAgICAg
IGNhc2UgR0RLX0tQX1N1YnRyYWN0OgorICAgICAgICAgICAgcmV0dXJuIFZLX1NVQlRSQUNUOyAv
LyAoNkQpIFN1YnRyYWN0IGtleQorICAgICAgICBjYXNlIEdES19LUF9EZWNpbWFsOgorICAgICAg
ICAgICAgcmV0dXJuIFZLX0RFQ0lNQUw7IC8vICg2RSkgRGVjaW1hbCBrZXkKKyAgICAgICAgY2Fz
ZSBHREtfS1BfRGl2aWRlOgorICAgICAgICAgICAgcmV0dXJuIFZLX0RJVklERTsgLy8gKDZGKSBE
aXZpZGUga2V5CisKKyAgICAgICAgY2FzZSBHREtfS1BfUGFnZV9VcDoKKyAgICAgICAgICAgIHJl
dHVybiBWS19QUklPUjsgLy8gKDIxKSBQQUdFIFVQIGtleQorICAgICAgICBjYXNlIEdES19LUF9Q
YWdlX0Rvd246CisgICAgICAgICAgICByZXR1cm4gVktfTkVYVDsgLy8gKDIyKSBQQUdFIERPV04g
a2V5CisgICAgICAgIGNhc2UgR0RLX0tQX0VuZDoKKyAgICAgICAgICAgIHJldHVybiBWS19FTkQ7
IC8vICgyMykgRU5EIGtleQorICAgICAgICBjYXNlIEdES19LUF9Ib21lOgorICAgICAgICAgICAg
cmV0dXJuIFZLX0hPTUU7IC8vICgyNCkgSE9NRSBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfTGVm
dDoKKyAgICAgICAgICAgIHJldHVybiBWS19MRUZUOyAvLyAoMjUpIExFRlQgQVJST1cga2V5Cisg
ICAgICAgIGNhc2UgR0RLX0tQX1VwOgorICAgICAgICAgICAgcmV0dXJuIFZLX1VQOyAvLyAoMjYp
IFVQIEFSUk9XIGtleQorICAgICAgICBjYXNlIEdES19LUF9SaWdodDoKKyAgICAgICAgICAgIHJl
dHVybiBWS19SSUdIVDsgLy8gKDI3KSBSSUdIVCBBUlJPVyBrZXkKKyAgICAgICAgY2FzZSBHREtf
S1BfRG93bjoKKyAgICAgICAgICAgIHJldHVybiBWS19ET1dOOyAvLyAoMjgpIERPV04gQVJST1cg
a2V5CisKKyAgICAgICAgY2FzZSBHREtfQmFja1NwYWNlOgorICAgICAgICAgICAgcmV0dXJuIFZL
X0JBQ0s7IC8vICgwOCkgQkFDS1NQQUNFIGtleQorICAgICAgICBjYXNlIEdES19JU09fTGVmdF9U
YWI6CisgICAgICAgIGNhc2UgR0RLXzMyNzBfQmFja1RhYjoKKyAgICAgICAgY2FzZSBHREtfVGFi
OgorICAgICAgICAgICAgcmV0dXJuIFZLX1RBQjsgLy8gKDA5KSBUQUIga2V5CisgICAgICAgIGNh
c2UgR0RLX0NsZWFyOgorICAgICAgICAgICAgcmV0dXJuIFZLX0NMRUFSOyAvLyAoMEMpIENMRUFS
IGtleQorICAgICAgICBjYXNlIEdES19JU09fRW50ZXI6CisgICAgICAgIGNhc2UgR0RLX0tQX0Vu
dGVyOgorICAgICAgICBjYXNlIEdES19SZXR1cm46CisgICAgICAgICAgICByZXR1cm4gVktfUkVU
VVJOOyAvLygwRCkgUmV0dXJuIGtleQorICAgICAgICBjYXNlIEdES19TaGlmdF9MOgorICAgICAg
ICBjYXNlIEdES19TaGlmdF9SOgorICAgICAgICAgICAgcmV0dXJuIFZLX1NISUZUOyAvLyAoMTAp
IFNISUZUIGtleQorICAgICAgICBjYXNlIEdES19Db250cm9sX0w6CisgICAgICAgIGNhc2UgR0RL
X0NvbnRyb2xfUjoKKyAgICAgICAgICAgIHJldHVybiBWS19DT05UUk9MOyAvLyAoMTEpIENUUkwg
a2V5CisgICAgICAgIGNhc2UgR0RLX01lbnU6CisgICAgICAgICAgICByZXR1cm4gVktfQVBQUzsg
IC8vICg1RCkgQXBwbGljYXRpb25zIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKKyAgICAgICAgY2Fz
ZSBHREtfQWx0X0w6CisgICAgICAgIGNhc2UgR0RLX0FsdF9SOgorICAgICAgICAgICAgcmV0dXJu
IFZLX01FTlU7IC8vICgxMikgQUxUIGtleQorCisgICAgICAgIGNhc2UgR0RLX1BhdXNlOgorICAg
ICAgICAgICAgcmV0dXJuIFZLX1BBVVNFOyAvLyAoMTMpIFBBVVNFIGtleQorICAgICAgICBjYXNl
IEdES19DYXBzX0xvY2s6CisgICAgICAgICAgICByZXR1cm4gVktfQ0FQSVRBTDsgLy8gKDE0KSBD
QVBTIExPQ0sga2V5CisgICAgICAgIGNhc2UgR0RLX0thbmFfTG9jazoKKyAgICAgICAgY2FzZSBH
REtfS2FuYV9TaGlmdDoKKyAgICAgICAgICAgIHJldHVybiBWS19LQU5BOyAvLyAoMTUpIElucHV0
IE1ldGhvZCBFZGl0b3IgKElNRSkgS2FuYSBtb2RlCisgICAgICAgIGNhc2UgR0RLX0hhbmd1bDoK
KyAgICAgICAgICAgIHJldHVybiBWS19IQU5HVUw7IC8vIFZLX0hBTkdVTCAoMTUpIElNRSBIYW5n
dWwgbW9kZQorICAgICAgICAgICAgLy8gVktfSlVOSkEgKDE3KSBJTUUgSnVuamEgbW9kZQorICAg
ICAgICAgICAgLy8gVktfRklOQUwgKDE4KSBJTUUgZmluYWwgbW9kZQorICAgICAgICBjYXNlIEdE
S19IYW5ndWxfSGFuamE6CisgICAgICAgICAgICByZXR1cm4gVktfSEFOSkE7IC8vICgxOSkgSU1F
IEhhbmphIG1vZGUKKyAgICAgICAgY2FzZSBHREtfS2Fuamk6CisgICAgICAgICAgICByZXR1cm4g
VktfS0FOSkk7IC8vICgxOSkgSU1FIEthbmppIG1vZGUKKyAgICAgICAgY2FzZSBHREtfRXNjYXBl
OgorICAgICAgICAgICAgcmV0dXJuIFZLX0VTQ0FQRTsgLy8gKDFCKSBFU0Mga2V5CisgICAgICAg
ICAgICAvLyBWS19DT05WRVJUICgxQykgSU1FIGNvbnZlcnQKKyAgICAgICAgICAgIC8vIFZLX05P
TkNPTlZFUlQgKDFEKSBJTUUgbm9uY29udmVydAorICAgICAgICAgICAgLy8gVktfQUNDRVBUICgx
RSkgSU1FIGFjY2VwdAorICAgICAgICAgICAgLy8gVktfTU9ERUNIQU5HRSAoMUYpIElNRSBtb2Rl
IGNoYW5nZSByZXF1ZXN0CisgICAgICAgIGNhc2UgR0RLX3NwYWNlOgorICAgICAgICAgICAgcmV0
dXJuIFZLX1NQQUNFOyAvLyAoMjApIFNQQUNFQkFSCisgICAgICAgIGNhc2UgR0RLX1BhZ2VfVXA6
CisgICAgICAgICAgICByZXR1cm4gVktfUFJJT1I7IC8vICgyMSkgUEFHRSBVUCBrZXkKKyAgICAg
ICAgY2FzZSBHREtfUGFnZV9Eb3duOgorICAgICAgICAgICAgcmV0dXJuIFZLX05FWFQ7IC8vICgy
MikgUEFHRSBET1dOIGtleQorICAgICAgICBjYXNlIEdES19FbmQ6CisgICAgICAgICAgICByZXR1
cm4gVktfRU5EOyAvLyAoMjMpIEVORCBrZXkKKyAgICAgICAgY2FzZSBHREtfSG9tZToKKyAgICAg
ICAgICAgIHJldHVybiBWS19IT01FOyAvLyAoMjQpIEhPTUUga2V5CisgICAgICAgIGNhc2UgR0RL
X0xlZnQ6CisgICAgICAgICAgICByZXR1cm4gVktfTEVGVDsgLy8gKDI1KSBMRUZUIEFSUk9XIGtl
eQorICAgICAgICBjYXNlIEdES19VcDoKKyAgICAgICAgICAgIHJldHVybiBWS19VUDsgLy8gKDI2
KSBVUCBBUlJPVyBrZXkKKyAgICAgICAgY2FzZSBHREtfUmlnaHQ6CisgICAgICAgICAgICByZXR1
cm4gVktfUklHSFQ7IC8vICgyNykgUklHSFQgQVJST1cga2V5CisgICAgICAgIGNhc2UgR0RLX0Rv
d246CisgICAgICAgICAgICByZXR1cm4gVktfRE9XTjsgLy8gKDI4KSBET1dOIEFSUk9XIGtleQor
ICAgICAgICBjYXNlIEdES19TZWxlY3Q6CisgICAgICAgICAgICByZXR1cm4gVktfU0VMRUNUOyAv
LyAoMjkpIFNFTEVDVCBrZXkKKyAgICAgICAgY2FzZSBHREtfUHJpbnQ6CisgICAgICAgICAgICBy
ZXR1cm4gVktfU05BUFNIT1Q7IC8vICgyQykgUFJJTlQgU0NSRUVOIGtleQorICAgICAgICBjYXNl
IEdES19FeGVjdXRlOgorICAgICAgICAgICAgcmV0dXJuIFZLX0VYRUNVVEU7Ly8gKDJCKSBFWEVD
VVRFIGtleQorICAgICAgICBjYXNlIEdES19JbnNlcnQ6CisgICAgICAgIGNhc2UgR0RLX0tQX0lu
c2VydDoKKyAgICAgICAgICAgIHJldHVybiBWS19JTlNFUlQ7IC8vICgyRCkgSU5TIGtleQorICAg
ICAgICBjYXNlIEdES19EZWxldGU6CisgICAgICAgIGNhc2UgR0RLX0tQX0RlbGV0ZToKKyAgICAg
ICAgICAgIHJldHVybiBWS19ERUxFVEU7IC8vICgyRSkgREVMIGtleQorICAgICAgICBjYXNlIEdE
S19IZWxwOgorICAgICAgICAgICAgcmV0dXJuIFZLX0hFTFA7IC8vICgyRikgSEVMUCBrZXkKKyAg
ICAgICAgY2FzZSBHREtfMDoKKyAgICAgICAgY2FzZSBHREtfcGFyZW5yaWdodDoKKyAgICAgICAg
ICAgIHJldHVybiBWS18wOyAgICAvLyAgKDMwKSAwKSBrZXkKKyAgICAgICAgY2FzZSBHREtfMToK
KyAgICAgICAgY2FzZSBHREtfZXhjbGFtOgorICAgICAgICAgICAgcmV0dXJuIFZLXzE7IC8vICAo
MzEpIDEgISBrZXkKKyAgICAgICAgY2FzZSBHREtfMjoKKyAgICAgICAgY2FzZSBHREtfYXQ6Cisg
ICAgICAgICAgICByZXR1cm4gVktfMjsgLy8gICgzMikgMiAmIGtleQorICAgICAgICBjYXNlIEdE
S18zOgorICAgICAgICBjYXNlIEdES19udW1iZXJzaWduOgorICAgICAgICAgICAgcmV0dXJuIFZL
XzM7IC8vY2FzZSAnMyc6IGNhc2UgJyMnOworICAgICAgICBjYXNlIEdES180OgorICAgICAgICBj
YXNlIEdES19kb2xsYXI6IC8vICAoMzQpIDQga2V5ICckJzsKKyAgICAgICAgICAgIHJldHVybiBW
S180OworICAgICAgICBjYXNlIEdES181OgorICAgICAgICBjYXNlIEdES19wZXJjZW50OgorICAg
ICAgICAgICAgcmV0dXJuIFZLXzU7IC8vICAoMzUpIDUga2V5ICAnJScKKyAgICAgICAgY2FzZSBH
REtfNjoKKyAgICAgICAgY2FzZSBHREtfYXNjaWljaXJjdW06CisgICAgICAgICAgICByZXR1cm4g
VktfNjsgLy8gICgzNikgNiBrZXkgICdeJworICAgICAgICBjYXNlIEdES183OgorICAgICAgICBj
YXNlIEdES19hbXBlcnNhbmQ6CisgICAgICAgICAgICByZXR1cm4gVktfNzsgLy8gICgzNykgNyBr
ZXkgIGNhc2UgJyYnCisgICAgICAgIGNhc2UgR0RLXzg6CisgICAgICAgIGNhc2UgR0RLX2FzdGVy
aXNrOgorICAgICAgICAgICAgcmV0dXJuIFZLXzg7IC8vICAoMzgpIDgga2V5ICAnKicKKyAgICAg
ICAgY2FzZSBHREtfOToKKyAgICAgICAgY2FzZSBHREtfcGFyZW5sZWZ0OgorICAgICAgICAgICAg
cmV0dXJuIFZLXzk7IC8vICAoMzkpIDkga2V5ICcoJworICAgICAgICBjYXNlIEdES19hOgorICAg
ICAgICBjYXNlIEdES19BOgorICAgICAgICAgICAgcmV0dXJuIFZLX0E7IC8vICAoNDEpIEEga2V5
IGNhc2UgJ2EnOiBjYXNlICdBJzogcmV0dXJuIDB4NDE7CisgICAgICAgIGNhc2UgR0RLX2I6Cisg
ICAgICAgIGNhc2UgR0RLX0I6CisgICAgICAgICAgICByZXR1cm4gVktfQjsgLy8gICg0MikgQiBr
ZXkgY2FzZSAnYic6IGNhc2UgJ0InOiByZXR1cm4gMHg0MjsKKyAgICAgICAgY2FzZSBHREtfYzoK
KyAgICAgICAgY2FzZSBHREtfQzoKKyAgICAgICAgICAgIHJldHVybiBWS19DOyAvLyAgKDQzKSBD
IGtleSBjYXNlICdjJzogY2FzZSAnQyc6IHJldHVybiAweDQzOworICAgICAgICBjYXNlIEdES19k
OgorICAgICAgICBjYXNlIEdES19EOgorICAgICAgICAgICAgcmV0dXJuIFZLX0Q7IC8vICAoNDQp
IEQga2V5IGNhc2UgJ2QnOiBjYXNlICdEJzogcmV0dXJuIDB4NDQ7CisgICAgICAgIGNhc2UgR0RL
X2U6CisgICAgICAgIGNhc2UgR0RLX0U6CisgICAgICAgICAgICByZXR1cm4gVktfRTsgLy8gICg0
NSkgRSBrZXkgY2FzZSAnZSc6IGNhc2UgJ0UnOiByZXR1cm4gMHg0NTsKKyAgICAgICAgY2FzZSBH
REtfZjoKKyAgICAgICAgY2FzZSBHREtfRjoKKyAgICAgICAgICAgIHJldHVybiBWS19GOyAvLyAg
KDQ2KSBGIGtleSBjYXNlICdmJzogY2FzZSAnRic6IHJldHVybiAweDQ2OworICAgICAgICBjYXNl
IEdES19nOgorICAgICAgICBjYXNlIEdES19HOgorICAgICAgICAgICAgcmV0dXJuIFZLX0c7IC8v
ICAoNDcpIEcga2V5IGNhc2UgJ2cnOiBjYXNlICdHJzogcmV0dXJuIDB4NDc7CisgICAgICAgIGNh
c2UgR0RLX2g6CisgICAgICAgIGNhc2UgR0RLX0g6CisgICAgICAgICAgICByZXR1cm4gVktfSDsg
Ly8gICg0OCkgSCBrZXkgY2FzZSAnaCc6IGNhc2UgJ0gnOiByZXR1cm4gMHg0ODsKKyAgICAgICAg
Y2FzZSBHREtfaToKKyAgICAgICAgY2FzZSBHREtfSToKKyAgICAgICAgICAgIHJldHVybiBWS19J
OyAvLyAgKDQ5KSBJIGtleSBjYXNlICdpJzogY2FzZSAnSSc6IHJldHVybiAweDQ5OworICAgICAg
ICBjYXNlIEdES19qOgorICAgICAgICBjYXNlIEdES19KOgorICAgICAgICAgICAgcmV0dXJuIFZL
X0o7IC8vICAoNEEpIEoga2V5IGNhc2UgJ2onOiBjYXNlICdKJzogcmV0dXJuIDB4NEE7CisgICAg
ICAgIGNhc2UgR0RLX2s6CisgICAgICAgIGNhc2UgR0RLX0s6CisgICAgICAgICAgICByZXR1cm4g
VktfSzsgLy8gICg0QikgSyBrZXkgY2FzZSAnayc6IGNhc2UgJ0snOiByZXR1cm4gMHg0QjsKKyAg
ICAgICAgY2FzZSBHREtfbDoKKyAgICAgICAgY2FzZSBHREtfTDoKKyAgICAgICAgICAgIHJldHVy
biBWS19MOyAvLyAgKDRDKSBMIGtleSBjYXNlICdsJzogY2FzZSAnTCc6IHJldHVybiAweDRDOwor
ICAgICAgICBjYXNlIEdES19tOgorICAgICAgICBjYXNlIEdES19NOgorICAgICAgICAgICAgcmV0
dXJuIFZLX007IC8vICAoNEQpIE0ga2V5IGNhc2UgJ20nOiBjYXNlICdNJzogcmV0dXJuIDB4NEQ7
CisgICAgICAgIGNhc2UgR0RLX246CisgICAgICAgIGNhc2UgR0RLX046CisgICAgICAgICAgICBy
ZXR1cm4gVktfTjsgLy8gICg0RSkgTiBrZXkgY2FzZSAnbic6IGNhc2UgJ04nOiByZXR1cm4gMHg0
RTsKKyAgICAgICAgY2FzZSBHREtfbzoKKyAgICAgICAgY2FzZSBHREtfTzoKKyAgICAgICAgICAg
IHJldHVybiBWS19POyAvLyAgKDRGKSBPIGtleSBjYXNlICdvJzogY2FzZSAnTyc6IHJldHVybiAw
eDRGOworICAgICAgICBjYXNlIEdES19wOgorICAgICAgICBjYXNlIEdES19QOgorICAgICAgICAg
ICAgcmV0dXJuIFZLX1A7IC8vICAoNTApIFAga2V5IGNhc2UgJ3AnOiBjYXNlICdQJzogcmV0dXJu
IDB4NTA7CisgICAgICAgIGNhc2UgR0RLX3E6CisgICAgICAgIGNhc2UgR0RLX1E6CisgICAgICAg
ICAgICByZXR1cm4gVktfUTsgLy8gICg1MSkgUSBrZXkgY2FzZSAncSc6IGNhc2UgJ1EnOiByZXR1
cm4gMHg1MTsKKyAgICAgICAgY2FzZSBHREtfcjoKKyAgICAgICAgY2FzZSBHREtfUjoKKyAgICAg
ICAgICAgIHJldHVybiBWS19SOyAvLyAgKDUyKSBSIGtleSBjYXNlICdyJzogY2FzZSAnUic6IHJl
dHVybiAweDUyOworICAgICAgICBjYXNlIEdES19zOgorICAgICAgICBjYXNlIEdES19TOgorICAg
ICAgICAgICAgcmV0dXJuIFZLX1M7IC8vICAoNTMpIFMga2V5IGNhc2UgJ3MnOiBjYXNlICdTJzog
cmV0dXJuIDB4NTM7CisgICAgICAgIGNhc2UgR0RLX3Q6CisgICAgICAgIGNhc2UgR0RLX1Q6Cisg
ICAgICAgICAgICByZXR1cm4gVktfVDsgLy8gICg1NCkgVCBrZXkgY2FzZSAndCc6IGNhc2UgJ1Qn
OiByZXR1cm4gMHg1NDsKKyAgICAgICAgY2FzZSBHREtfdToKKyAgICAgICAgY2FzZSBHREtfVToK
KyAgICAgICAgICAgIHJldHVybiBWS19VOyAvLyAgKDU1KSBVIGtleSBjYXNlICd1JzogY2FzZSAn
VSc6IHJldHVybiAweDU1OworICAgICAgICBjYXNlIEdES192OgorICAgICAgICBjYXNlIEdES19W
OgorICAgICAgICAgICAgcmV0dXJuIFZLX1Y7IC8vICAoNTYpIFYga2V5IGNhc2UgJ3YnOiBjYXNl
ICdWJzogcmV0dXJuIDB4NTY7CisgICAgICAgIGNhc2UgR0RLX3c6CisgICAgICAgIGNhc2UgR0RL
X1c6CisgICAgICAgICAgICByZXR1cm4gVktfVzsgLy8gICg1NykgVyBrZXkgY2FzZSAndyc6IGNh
c2UgJ1cnOiByZXR1cm4gMHg1NzsKKyAgICAgICAgY2FzZSBHREtfeDoKKyAgICAgICAgY2FzZSBH
REtfWDoKKyAgICAgICAgICAgIHJldHVybiBWS19YOyAvLyAgKDU4KSBYIGtleSBjYXNlICd4Jzog
Y2FzZSAnWCc6IHJldHVybiAweDU4OworICAgICAgICBjYXNlIEdES195OgorICAgICAgICBjYXNl
IEdES19ZOgorICAgICAgICAgICAgcmV0dXJuIFZLX1k7IC8vICAoNTkpIFkga2V5IGNhc2UgJ3kn
OiBjYXNlICdZJzogcmV0dXJuIDB4NTk7CisgICAgICAgIGNhc2UgR0RLX3o6CisgICAgICAgIGNh
c2UgR0RLX1o6CisgICAgICAgICAgICByZXR1cm4gVktfWjsgLy8gICg1QSkgWiBrZXkgY2FzZSAn
eic6IGNhc2UgJ1onOiByZXR1cm4gMHg1QTsKKyAgICAgICAgY2FzZSBHREtfTWV0YV9MOgorICAg
ICAgICAgICAgcmV0dXJuIFZLX0xXSU47IC8vICg1QikgTGVmdCBXaW5kb3dzIGtleSAoTWljcm9z
b2Z0IE5hdHVyYWwga2V5Ym9hcmQpCisgICAgICAgIGNhc2UgR0RLX01ldGFfUjoKKyAgICAgICAg
ICAgIHJldHVybiBWS19SV0lOOyAvLyAoNUMpIFJpZ2h0IFdpbmRvd3Mga2V5IChOYXR1cmFsIGtl
eWJvYXJkKQorICAgICAgICAgICAgLy8gVktfU0xFRVAgKDVGKSBDb21wdXRlciBTbGVlcCBrZXkK
KyAgICAgICAgICAgIC8vIFZLX1NFUEFSQVRPUiAoNkMpIFNlcGFyYXRvciBrZXkKKyAgICAgICAg
ICAgIC8vIFZLX1NVQlRSQUNUICg2RCkgU3VidHJhY3Qga2V5CisgICAgICAgICAgICAvLyBWS19E
RUNJTUFMICg2RSkgRGVjaW1hbCBrZXkKKyAgICAgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERp
dmlkZSBrZXkKKyAgICAgICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKKworICAg
ICAgICBjYXNlIEdES19OdW1fTG9jazoKKyAgICAgICAgICAgIHJldHVybiBWS19OVU1MT0NLOyAv
LyAoOTApIE5VTSBMT0NLIGtleQorCisgICAgICAgIGNhc2UgR0RLX1Njcm9sbF9Mb2NrOgorICAg
ICAgICAgICAgcmV0dXJuIFZLX1NDUk9MTDsgLy8gKDkxKSBTQ1JPTEwgTE9DSyBrZXkKKworICAg
ICAgICAgICAgLy8gVktfTFNISUZUIChBMCkgTGVmdCBTSElGVCBrZXkKKyAgICAgICAgICAgIC8v
IFZLX1JTSElGVCAoQTEpIFJpZ2h0IFNISUZUIGtleQorICAgICAgICAgICAgLy8gVktfTENPTlRS
T0wgKEEyKSBMZWZ0IENPTlRST0wga2V5CisgICAgICAgICAgICAvLyBWS19SQ09OVFJPTCAoQTMp
IFJpZ2h0IENPTlRST0wga2V5CisgICAgICAgICAgICAvLyBWS19MTUVOVSAoQTQpIExlZnQgTUVO
VSBrZXkKKyAgICAgICAgICAgIC8vIFZLX1JNRU5VIChBNSkgUmlnaHQgTUVOVSBrZXkKKyAgICAg
ICAgICAgIC8vIFZLX0JST1dTRVJfQkFDSyAoQTYpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBC
YWNrIGtleQorICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9GT1JXQVJEIChBNykgV2luZG93cyAy
MDAwL1hQOiBCcm93c2VyIEZvcndhcmQga2V5CisgICAgICAgICAgICAvLyBWS19CUk9XU0VSX1JF
RlJFU0ggKEE4KSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgUmVmcmVzaCBrZXkKKyAgICAgICAg
ICAgIC8vIFZLX0JST1dTRVJfU1RPUCAoQTkpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBTdG9w
IGtleQorICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9TRUFSQ0ggKEFBKSBXaW5kb3dzIDIwMDAv
WFA6IEJyb3dzZXIgU2VhcmNoIGtleQorICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9GQVZPUklU
RVMgKEFCKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgRmF2b3JpdGVzIGtleQorICAgICAgICAg
ICAgLy8gVktfQlJPV1NFUl9IT01FIChBQykgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0YXJ0
IGFuZCBIb21lIGtleQorICAgICAgICAgICAgLy8gVktfVk9MVU1FX01VVEUgKEFEKSBXaW5kb3dz
IDIwMDAvWFA6IFZvbHVtZSBNdXRlIGtleQorICAgICAgICAgICAgLy8gVktfVk9MVU1FX0RPV04g
KEFFKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBEb3duIGtleQorICAgICAgICAgICAgLy8gVktf
Vk9MVU1FX1VQIChBRikgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgVXAga2V5CisgICAgICAgICAg
ICAvLyBWS19NRURJQV9ORVhUX1RSQUNLIChCMCkgV2luZG93cyAyMDAwL1hQOiBOZXh0IFRyYWNr
IGtleQorICAgICAgICAgICAgLy8gVktfTUVESUFfUFJFVl9UUkFDSyAoQjEpIFdpbmRvd3MgMjAw
MC9YUDogUHJldmlvdXMgVHJhY2sga2V5CisgICAgICAgICAgICAvLyBWS19NRURJQV9TVE9QIChC
MikgV2luZG93cyAyMDAwL1hQOiBTdG9wIE1lZGlhIGtleQorICAgICAgICAgICAgLy8gVktfTUVE
SUFfUExBWV9QQVVTRSAoQjMpIFdpbmRvd3MgMjAwMC9YUDogUGxheS9QYXVzZSBNZWRpYSBrZXkK
KyAgICAgICAgICAgIC8vIFZLX0xBVU5DSF9NQUlMIChCNCkgV2luZG93cyAyMDAwL1hQOiBTdGFy
dCBNYWlsIGtleQorICAgICAgICAgICAgLy8gVktfTEFVTkNIX01FRElBX1NFTEVDVCAoQjUpIFdp
bmRvd3MgMjAwMC9YUDogU2VsZWN0IE1lZGlhIGtleQorICAgICAgICAgICAgLy8gVktfTEFVTkNI
X0FQUDEgKEI2KSBXaW5kb3dzIDIwMDAvWFA6IFN0YXJ0IEFwcGxpY2F0aW9uIDEga2V5CisgICAg
ICAgICAgICAvLyBWS19MQVVOQ0hfQVBQMiAoQjcpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBw
bGljYXRpb24gMiBrZXkKKworICAgICAgICAgICAgLy8gVktfT0VNXzEgKEJBKSBVc2VkIGZvciBt
aXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dz
IDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnOzonIGtleQorICAg
ICAgICBjYXNlIEdES19zZW1pY29sb246CisgICAgICAgIGNhc2UgR0RLX2NvbG9uOgorICAgICAg
ICAgICAgcmV0dXJuIFZLX09FTV8xOyAvL2Nhc2UgJzsnOiBjYXNlICc6JzogcmV0dXJuIDB4QkE7
CisgICAgICAgICAgICAvLyBWS19PRU1fUExVUyAoQkIpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFu
eSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcrJyBrZXkKKyAgICAgICAgY2FzZSBHREtfcGx1czoKKyAg
ICAgICAgY2FzZSBHREtfZXF1YWw6CisgICAgICAgICAgICByZXR1cm4gVktfT0VNX1BMVVM7IC8v
Y2FzZSAnPSc6IGNhc2UgJysnOiByZXR1cm4gMHhCQjsKKyAgICAgICAgICAgIC8vIFZLX09FTV9D
T01NQSAoQkMpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcs
JyBrZXkKKyAgICAgICAgY2FzZSBHREtfY29tbWE6CisgICAgICAgIGNhc2UgR0RLX2xlc3M6Cisg
ICAgICAgICAgICByZXR1cm4gVktfT0VNX0NPTU1BOyAvL2Nhc2UgJywnOiBjYXNlICc8JzogcmV0
dXJuIDB4QkM7CisgICAgICAgICAgICAvLyBWS19PRU1fTUlOVVMgKEJEKSBXaW5kb3dzIDIwMDAv
WFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLScga2V5CisgICAgICAgIGNhc2UgR0RL
X21pbnVzOgorICAgICAgICBjYXNlIEdES191bmRlcnNjb3JlOgorICAgICAgICAgICAgcmV0dXJu
IFZLX09FTV9NSU5VUzsgLy9jYXNlICctJzogY2FzZSAnXyc6IHJldHVybiAweEJEOworICAgICAg
ICAgICAgLy8gVktfT0VNX1BFUklPRCAoQkUpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3Vu
dHJ5L3JlZ2lvbiwgdGhlICcuJyBrZXkKKyAgICAgICAgY2FzZSBHREtfcGVyaW9kOgorICAgICAg
ICBjYXNlIEdES19ncmVhdGVyOgorICAgICAgICAgICAgcmV0dXJuIFZLX09FTV9QRVJJT0Q7IC8v
Y2FzZSAnLic6IGNhc2UgJz4nOiByZXR1cm4gMHhCRTsKKyAgICAgICAgICAgIC8vIFZLX09FTV8y
IChCRikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBr
ZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0
aGUgJy8/JyBrZXkKKyAgICAgICAgY2FzZSBHREtfc2xhc2g6CisgICAgICAgIGNhc2UgR0RLX3F1
ZXN0aW9uOgorICAgICAgICAgICAgcmV0dXJuIFZLX09FTV8yOyAvL2Nhc2UgJy8nOiBjYXNlICc/
JzogcmV0dXJuIDB4QkY7CisgICAgICAgICAgICAvLyBWS19PRU1fMyAoQzApIFVzZWQgZm9yIG1p
c2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3Mg
MjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdgficga2V5CisgICAg
ICAgIGNhc2UgR0RLX2FzY2lpdGlsZGU6CisgICAgICAgIGNhc2UgR0RLX3F1b3RlbGVmdDoKKyAg
ICAgICAgICAgIHJldHVybiBWS19PRU1fMzsgLy9jYXNlICdgJzogY2FzZSAnfic6IHJldHVybiAw
eEMwOworICAgICAgICAgICAgLy8gVktfT0VNXzQgKERCKSBVc2VkIGZvciBtaXNjZWxsYW5lb3Vz
IGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZv
ciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnW3snIGtleQorICAgICAgICBjYXNlIEdE
S19icmFja2V0bGVmdDoKKyAgICAgICAgY2FzZSBHREtfYnJhY2VsZWZ0OgorICAgICAgICAgICAg
cmV0dXJuIFZLX09FTV80OyAvL2Nhc2UgJ1snOiBjYXNlICd7JzogcmV0dXJuIDB4REI7CisgICAg
ICAgICAgICAvLyBWS19PRU1fNSAoREMpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVy
czsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBz
dGFuZGFyZCBrZXlib2FyZCwgdGhlICdcfCcga2V5CisgICAgICAgIGNhc2UgR0RLX2JhY2tzbGFz
aDoKKyAgICAgICAgY2FzZSBHREtfYmFyOgorICAgICAgICAgICAgcmV0dXJuIFZLX09FTV81OyAv
L2Nhc2UgJ1xcJzogY2FzZSAnfCc6IHJldHVybiAweERDOworICAgICAgICAgICAgLy8gVktfT0VN
XzYgKEREKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5
IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQs
IHRoZSAnXX0nIGtleQorICAgICAgICBjYXNlIEdES19icmFja2V0cmlnaHQ6CisgICAgICAgIGNh
c2UgR0RLX2JyYWNlcmlnaHQ6CisgICAgICAgICAgICByZXR1cm4gVktfT0VNXzY7IC8vIGNhc2Ug
J10nOiBjYXNlICd9JzogcmV0dXJuIDB4REQ7CisgICAgICAgICAgICAvLyBWS19PRU1fNyAoREUp
IFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9h
cmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdz
aW5nbGUtcXVvdGUvZG91YmxlLXF1b3RlJyBrZXkKKyAgICAgICAgY2FzZSBHREtfcXVvdGVyaWdo
dDoKKyAgICAgICAgY2FzZSBHREtfcXVvdGVkYmw6CisgICAgICAgICAgICByZXR1cm4gVktfT0VN
Xzc7IC8vIGNhc2UgJ1wnJzogY2FzZSAnIic6IHJldHVybiAweERFOworICAgICAgICAgICAgLy8g
VktfT0VNXzggKERGKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2
YXJ5IGJ5IGtleWJvYXJkLgorICAgICAgICAgICAgLy8gVktfT0VNXzEwMiAoRTIpIFdpbmRvd3Mg
MjAwMC9YUDogRWl0aGVyIHRoZSBhbmdsZSBicmFja2V0IGtleSBvciB0aGUgYmFja3NsYXNoIGtl
eSBvbiB0aGUgUlQgMTAyLWtleSBrZXlib2FyZAorICAgICAgICAgICAgLy8gVktfUFJPQ0VTU0tF
WSAoRTUpIFdpbmRvd3MgOTUvOTgvTWUsIFdpbmRvd3MgTlQgNC4wLCBXaW5kb3dzIDIwMDAvWFA6
IElNRSBQUk9DRVNTIGtleQorICAgICAgICAgICAgLy8gVktfUEFDS0VUIChFNykgV2luZG93cyAy
MDAwL1hQOiBVc2VkIHRvIHBhc3MgVW5pY29kZSBjaGFyYWN0ZXJzIGFzIGlmIHRoZXkgd2VyZSBr
ZXlzdHJva2VzLiBUaGUgVktfUEFDS0VUIGtleSBpcyB0aGUgbG93IHdvcmQgb2YgYSAzMi1iaXQg
VmlydHVhbCBLZXkgdmFsdWUgdXNlZCBmb3Igbm9uLWtleWJvYXJkIGlucHV0IG1ldGhvZHMuIEZv
ciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgUmVtYXJrIGluIEtFWUJESU5QVVQsU2VuZElucHV0LCBX
TV9LRVlET1dOLCBhbmQgV01fS0VZVVAKKyAgICAgICAgICAgIC8vIFZLX0FUVE4gKEY2KSBBdHRu
IGtleQorICAgICAgICAgICAgLy8gVktfQ1JTRUwgKEY3KSBDclNlbCBrZXkKKyAgICAgICAgICAg
IC8vIFZLX0VYU0VMIChGOCkgRXhTZWwga2V5CisgICAgICAgICAgICAvLyBWS19FUkVPRiAoRjkp
IEVyYXNlIEVPRiBrZXkKKyAgICAgICAgICAgIC8vIFZLX1BMQVkgKEZBKSBQbGF5IGtleQorICAg
ICAgICAgICAgLy8gVktfWk9PTSAoRkIpIFpvb20ga2V5CisgICAgICAgICAgICAvLyBWS19OT05B
TUUgKEZDKSBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQorICAgICAgICAgICAgLy8gVktfUEExIChG
RCkgUEExIGtleQorICAgICAgICAgICAgLy8gVktfT0VNX0NMRUFSIChGRSkgQ2xlYXIga2V5Cisg
ICAgICAgIGNhc2UgR0RLX0YxOgorICAgICAgICBjYXNlIEdES19GMjoKKyAgICAgICAgY2FzZSBH
REtfRjM6CisgICAgICAgIGNhc2UgR0RLX0Y0OgorICAgICAgICBjYXNlIEdES19GNToKKyAgICAg
ICAgY2FzZSBHREtfRjY6CisgICAgICAgIGNhc2UgR0RLX0Y3OgorICAgICAgICBjYXNlIEdES19G
ODoKKyAgICAgICAgY2FzZSBHREtfRjk6CisgICAgICAgIGNhc2UgR0RLX0YxMDoKKyAgICAgICAg
Y2FzZSBHREtfRjExOgorICAgICAgICBjYXNlIEdES19GMTI6CisgICAgICAgIGNhc2UgR0RLX0Yx
MzoKKyAgICAgICAgY2FzZSBHREtfRjE0OgorICAgICAgICBjYXNlIEdES19GMTU6CisgICAgICAg
IGNhc2UgR0RLX0YxNjoKKyAgICAgICAgY2FzZSBHREtfRjE3OgorICAgICAgICBjYXNlIEdES19G
MTg6CisgICAgICAgIGNhc2UgR0RLX0YxOToKKyAgICAgICAgY2FzZSBHREtfRjIwOgorICAgICAg
ICBjYXNlIEdES19GMjE6CisgICAgICAgIGNhc2UgR0RLX0YyMjoKKyAgICAgICAgY2FzZSBHREtf
RjIzOgorICAgICAgICBjYXNlIEdES19GMjQ6CisgICAgICAgICAgICByZXR1cm4gVktfRjEgKyAo
a2V5Y29kZSAtIEdES19GMSk7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgIH0KKworfQorCitTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5nbGVD
aGFyYWN0ZXJTdHJpbmcodW5zaWduZWQgdmFsKQoreworICAgIHN3aXRjaCAodmFsKSB7CisgICAg
ICAgIGNhc2UgR0RLX0lTT19FbnRlcjoKKyAgICAgICAgY2FzZSBHREtfS1BfRW50ZXI6CisgICAg
ICAgIGNhc2UgR0RLX1JldHVybjoKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIlxyIik7Cisg
ICAgICAgIGNhc2UgR0RLX0JhY2tTcGFjZToKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIlx4
OCIpOworICAgICAgICBjYXNlIEdES19UYWI6CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJc
dCIpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZ3VuaWNoYXIgYyA9IGdka19rZXl2
YWxfdG9fdW5pY29kZSh2YWwpOworICAgICAgICAgICAgZ2xvbmcgbndjOworICAgICAgICAgICAg
Z3VuaWNoYXIyKiB1Y2hhcjE2ID0gZ191Y3M0X3RvX3V0ZjE2KCZjLCAxLCAwLCAmbndjLCAwKTsK
KworICAgICAgICAgICAgU3RyaW5nIHJldFZhbDsKKyAgICAgICAgICAgIGlmICh1Y2hhcjE2KQor
ICAgICAgICAgICAgICAgIHJldFZhbCA9IFN0cmluZygoVUNoYXIqKXVjaGFyMTYsIG53Yyk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0VmFsID0gU3RyaW5nKCk7CisKKyAg
ICAgICAgICAgIGdfZnJlZSh1Y2hhcjE2KTsKKworICAgICAgICAgICAgcmV0dXJuIHJldFZhbDsK
KyAgICB9Cit9CisKKy8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIG90aGVyIHBsYXRmb3Jt
IGV2ZW50IGNvbnN0cnVjdG9ycworLy8gVE9ETzogbV9nZGtFdmVudEtleSBzaG91bGQgYmUgcmVm
Y291bnRlZAorUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoR2Rr
RXZlbnRLZXkqIGV2ZW50KQorICAgIDogbV90eXBlKChldmVudC0+dHlwZSA9PSBHREtfS0VZX1JF
TEVBU0UpID8gS2V5VXAgOiBLZXlEb3duKQorICAgICwgbV90ZXh0KHNpbmdsZUNoYXJhY3RlclN0
cmluZyhldmVudC0+a2V5dmFsKSkKKyAgICAsIG1fdW5tb2RpZmllZFRleHQoc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGV2ZW50LT5rZXl2YWwpKQorICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50
aWZpZXJGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQorICAgICwgbV9hdXRvUmVwZWF0KGZh
bHNlKQorICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JHZGtL
ZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQorICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShldmVu
dC0+a2V5dmFsKQorICAgICwgbV9pc0tleXBhZChldmVudC0+a2V5dmFsID49IEdES19LUF9TcGFj
ZSAmJiBldmVudC0+a2V5dmFsIDw9IEdES19LUF85KQorICAgICwgbV9zaGlmdEtleSgoZXZlbnQt
PnN0YXRlICYgR0RLX1NISUZUX01BU0spIHx8IChldmVudC0+a2V5dmFsID09IEdES18zMjcwX0Jh
Y2tUYWIpKQorICAgICwgbV9jdHJsS2V5KGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0sp
CisgICAgLCBtX2FsdEtleShldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQorICAgICwgbV9t
ZXRhS2V5KGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCisgICAgLCBtX2dka0V2ZW50S2V5
KGV2ZW50KQoreworfQorCit2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRl
S2V5RG93bkV2ZW50KFR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQor
eworICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3du
IG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgor
ICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgbV90eXBlID0gdHlwZTsKKworICAg
IGlmIChiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAodHlwZSA9PSBSYXdLZXlEb3duKSB7CisgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOworICAg
ICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV9rZXlJZGVudGlmaWVyID0gU3RyaW5nKCk7CisgICAgICAgIG1fd2luZG93c1ZpcnR1YWxLZXlD
b2RlID0gMDsKKyAgICB9Cit9CisKK2Jvb2wgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50
Q2Fwc0xvY2tTdGF0ZSgpCit7CisgICAgcmV0dXJuIGdka19rZXltYXBfZ2V0X2NhcHNfbG9ja19z
dGF0ZShnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCkpOworfQorCit2b2lkIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0
cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSkKK3sKKyAgICBHZGtNb2RpZmllclR5
cGUgc3RhdGU7CisgICAgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3N0YXRlKCZzdGF0ZSk7CisKKyAg
ICBzaGlmdEtleSA9IHN0YXRlICYgR0RLX1NISUZUX01BU0s7CisgICAgY3RybEtleSA9IHN0YXRl
ICYgR0RLX0NPTlRST0xfTUFTSzsKKyAgICBhbHRLZXkgPSBzdGF0ZSAmIEdES19NT0QxX01BU0s7
CisgICAgbWV0YUtleSA9IHN0YXRlICYgR0RLX01FVEFfTUFTSzsKK30KKworR2RrRXZlbnRLZXkq
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2RrRXZlbnRLZXkoKSBjb25zdAoreworICAgIHJldHVy
biBtX2dka0V2ZW50S2V5OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAkocmV2aXNpb24gODM0MTYp
CShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Nb3VzZUV2ZW50R3RrLmNwcDo4MzQx
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorKiBDb3B5cmlnaHQgKEMp
IDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorCisjaW5jbHVk
ZSAiQXNzZXJ0aW9ucy5oIgorCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKy8vIEZJWE1FOiBXb3VsZCBiZSBldmVuIGJldHRlciB0byBmaWd1cmUgb3V0IHdo
aWNoIG1vZGlmaWVyIGlzIEFsdCBpbnN0ZWFkIG9mIGFsd2F5cyB1c2luZyBHREtfTU9EMV9NQVNL
LgorCisvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIHRoZSBvdGhlciBwbGF0Zm9ybSBldmVudCBj
b25zdHJ1Y3RvcnMKK1BsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEdka0V2
ZW50QnV0dG9uKiBldmVudCkKK3sKKyAgICBtX3RpbWVzdGFtcCA9IGV2ZW50LT50aW1lOworICAg
IG1fcG9zaXRpb24gPSBJbnRQb2ludCgoaW50KWV2ZW50LT54LCAoaW50KWV2ZW50LT55KTsKKyAg
ICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoKGludClldmVudC0+eF9yb290LCAoaW50KWV2
ZW50LT55X3Jvb3QpOworICAgIG1fc2hpZnRLZXkgPSBldmVudC0+c3RhdGUgJiBHREtfU0hJRlRf
TUFTSzsKKyAgICBtX2N0cmxLZXkgPSBldmVudC0+c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLOwor
ICAgIG1fYWx0S2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSzsKKyAgICBtX21ldGFL
ZXkgPSBldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLOworCisgICAgc3dpdGNoIChldmVudC0+
dHlwZSkgeworICAgIGNhc2UgR0RLX0JVVFRPTl9QUkVTUzoKKyAgICBjYXNlIEdES18yQlVUVE9O
X1BSRVNTOgorICAgIGNhc2UgR0RLXzNCVVRUT05fUFJFU1M6CisgICAgY2FzZSBHREtfQlVUVE9O
X1JFTEVBU0U6CisgICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAg
ICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1JFTEVBU0UpIHsKKyAgICAgICAgICAg
IG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAgbV9jbGlja0Nv
dW50ID0gMDsKKyAgICAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1BS
RVNTKQorICAgICAgICAgICAgbV9jbGlja0NvdW50ID0gMTsKKyAgICAgICAgZWxzZSBpZiAoZXZl
bnQtPnR5cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MpCisgICAgICAgICAgICBtX2NsaWNrQ291bnQg
PSAyOworICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSA9PSBHREtfM0JVVFRPTl9QUkVTUykK
KyAgICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDM7CisKKyAgICAgICAgaWYgKGV2ZW50LT5idXR0
b24gPT0gMSkKKyAgICAgICAgICAgIG1fYnV0dG9uID0gTGVmdEJ1dHRvbjsKKyAgICAgICAgZWxz
ZSBpZiAoZXZlbnQtPmJ1dHRvbiA9PSAyKQorICAgICAgICAgICAgbV9idXR0b24gPSBNaWRkbGVC
dXR0b247CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT5idXR0b24gPT0gMykKKyAgICAgICAgICAg
IG1fYnV0dG9uID0gUmlnaHRCdXR0b247CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKK30KKworUGxhdGZvcm1Nb3Vz
ZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRNb3Rpb24qIG1vdGlvbikKK3sKKyAg
ICBtX3RpbWVzdGFtcCA9IG1vdGlvbi0+dGltZTsKKyAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQo
KGludCltb3Rpb24tPngsIChpbnQpbW90aW9uLT55KTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0g
SW50UG9pbnQoKGludCltb3Rpb24tPnhfcm9vdCwgKGludCltb3Rpb24tPnlfcm9vdCk7CisgICAg
bV9zaGlmdEtleSA9IG1vdGlvbi0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSzsKKyAgICBtX2N0cmxL
ZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSzsKKyAgICBtX2FsdEtleSA9IG1v
dGlvbi0+c3RhdGUgJiBHREtfTU9EMV9NQVNLOworICAgIG1fbWV0YUtleSA9IG1vdGlvbi0+c3Rh
dGUgJiBHREtfTU9EMl9NQVNLOworCisgICAgc3dpdGNoIChtb3Rpb24tPnR5cGUpIHsKKyAgICBj
YXNlIEdES19NT1RJT05fTk9USUZZOgorICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRN
b3ZlZDsKKyAgICAgICAgbV9idXR0b24gPSBOb0J1dHRvbjsKKyAgICAgICAgbV9jbGlja0NvdW50
ID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfTsKKworICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0JVVFRPTjFf
TUFTSykKKyAgICAgICAgbV9idXR0b24gPSBMZWZ0QnV0dG9uOworICAgIGVsc2UgaWYgKG1vdGlv
bi0+c3RhdGUgJiBHREtfQlVUVE9OMl9NQVNLKQorICAgICAgICBtX2J1dHRvbiA9IE1pZGRsZUJ1
dHRvbjsKKyAgICBlbHNlIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0JVVFRPTjNfTUFTSykKKyAg
ICAgICAgbV9idXR0b24gPSBSaWdodEJ1dHRvbjsKK30KK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCShyZXZp
c2lvbiA4MzQxNikJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRH
dGsuY3BwOjgzNDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hl
ZWxFdmVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwu
Y29tCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXIuaCIK
KworI2luY2x1ZGUgPGdkay9nZGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBLZWVw
IHRoaXMgaW4gc3luYyB3aXRoIHRoZSBvdGhlciBwbGF0Zm9ybSBldmVudCBjb25zdHJ1Y3RvcnMK
K1BsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEdka0V2ZW50U2Nyb2xsKiBl
dmVudCkKK3sKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgZGVsdGEgPSAxOworCisgICAgbV9kZWx0
YVggPSAwOworICAgIG1fZGVsdGFZID0gMDsKKworICAgIC8vIERvY3Mgc2F5IGFuIHVwd2FyZHMg
c2Nyb2xsIChhd2F5IGZyb20gdGhlIHVzZXIpIGhhcyBhIHBvc2l0aXZlIGRlbHRhCisgICAgc3dp
dGNoIChldmVudC0+ZGlyZWN0aW9uKSB7CisgICAgICAgIGNhc2UgR0RLX1NDUk9MTF9VUDoKKyAg
ICAgICAgICAgIG1fZGVsdGFZID0gZGVsdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHREtfU0NST0xMX0RPV046CisgICAgICAgICAgICBtX2RlbHRhWSA9IC1kZWx0YTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdES19TQ1JPTExfTEVGVDoKKyAgICAgICAg
ICAgIG1fZGVsdGFYID0gZGVsdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
REtfU0NST0xMX1JJR0hUOgorICAgICAgICAgICAgbV9kZWx0YVggPSAtZGVsdGE7CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFYOworICAgIG1f
d2hlZWxUaWNrc1kgPSBtX2RlbHRhWTsKKworICAgIG1fcG9zaXRpb24gPSBJbnRQb2ludChzdGF0
aWNfY2FzdDxpbnQ+KGV2ZW50LT54KSwgc3RhdGljX2Nhc3Q8aW50PihldmVudC0+eSkpOworICAg
IG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT54X3Jv
b3QpLCBzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT55X3Jvb3QpKTsKKyAgICBtX2dyYW51bGFyaXR5
ID0gU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7CisgICAgbV9pc0FjY2VwdGVkID0gZmFsc2U7Cisg
ICAgbV9zaGlmdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLOworICAgIG1fY3Ry
bEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0s7CisgICAgbV9hbHRLZXkgPSBl
dmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLOworICAgIG1fbWV0YUtleSA9IGV2ZW50LT5zdGF0
ZSAmIEdES19NRVRBX01BU0s7CisKKyAgICAvLyBGSVhNRTogcmV0cmlldmUgdGhlIHVzZXIgc2V0
dGluZyBmb3IgdGhlIG51bWJlciBvZiBsaW5lcyB0byBzY3JvbGwgb24gZWFjaCB3aGVlbCBldmVu
dAorICAgIG1fZGVsdGFYICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1Bl
ckxpbmVTdGVwKCkpOworICAgIG1fZGVsdGFZICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvV2hlZWxFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwCShyZXZpc2lvbiA4MzQxNikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1p
Y2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVu
dC5oIgotI2luY2x1ZGUgIlNjcm9sbGJhci5oIgotCi0jaW5jbHVkZSA8Z2RrL2dkay5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIG90aGVy
IHBsYXRmb3JtIGV2ZW50IGNvbnN0cnVjdG9ycwotUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9y
bVdoZWVsRXZlbnQoR2RrRXZlbnRTY3JvbGwqIGV2ZW50KQotewotICAgIHN0YXRpYyBjb25zdCBm
bG9hdCBkZWx0YSA9IDE7Ci0KLSAgICBtX2RlbHRhWCA9IDA7Ci0gICAgbV9kZWx0YVkgPSAwOwot
Ci0gICAgLy8gRG9jcyBzYXkgYW4gdXB3YXJkcyBzY3JvbGwgKGF3YXkgZnJvbSB0aGUgdXNlcikg
aGFzIGEgcG9zaXRpdmUgZGVsdGEKLSAgICBzd2l0Y2ggKGV2ZW50LT5kaXJlY3Rpb24pIHsKLSAg
ICAgICAgY2FzZSBHREtfU0NST0xMX1VQOgotICAgICAgICAgICAgbV9kZWx0YVkgPSBkZWx0YTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdES19TQ1JPTExfRE9XTjoKLSAgICAg
ICAgICAgIG1fZGVsdGFZID0gLWRlbHRhOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgR0RLX1NDUk9MTF9MRUZUOgotICAgICAgICAgICAgbV9kZWx0YVggPSBkZWx0YTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdES19TQ1JPTExfUklHSFQ6Ci0gICAgICAgICAg
ICBtX2RlbHRhWCA9IC1kZWx0YTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBtX3do
ZWVsVGlja3NYID0gbV9kZWx0YVg7Ci0gICAgbV93aGVlbFRpY2tzWSA9IG1fZGVsdGFZOwotCi0g
ICAgbV9wb3NpdGlvbiA9IEludFBvaW50KHN0YXRpY19jYXN0PGludD4oZXZlbnQtPngpLCBzdGF0
aWNfY2FzdDxpbnQ+KGV2ZW50LT55KSk7Ci0gICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50
KHN0YXRpY19jYXN0PGludD4oZXZlbnQtPnhfcm9vdCksIHN0YXRpY19jYXN0PGludD4oZXZlbnQt
Pnlfcm9vdCkpOwotICAgIG1fZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudDsK
LSAgICBtX2lzQWNjZXB0ZWQgPSBmYWxzZTsKLSAgICBtX3NoaWZ0S2V5ID0gZXZlbnQtPnN0YXRl
ICYgR0RLX1NISUZUX01BU0s7Ci0gICAgbV9jdHJsS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX0NP
TlRST0xfTUFTSzsKLSAgICBtX2FsdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19NT0QxX01BU0s7
Ci0gICAgbV9tZXRhS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX01FVEFfTUFTSzsKLQotICAgIC8v
IEZJWE1FOiByZXRyaWV2ZSB0aGUgdXNlciBzZXR0aW5nIGZvciB0aGUgbnVtYmVyIG9mIGxpbmVz
IHRvIHNjcm9sbCBvbiBlYWNoIHdoZWVsIGV2ZW50Ci0gICAgbV9kZWx0YVggKj0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7Ci0gICAgbV9kZWx0YVkg
Kj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7Ci19
Ci0KLX0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88967</attachid>
            <date>2011-04-10 21:33:20 -0700</date>
            <delta_ts>2011-04-10 23:57:53 -0700</delta_ts>
            <desc>revised patch to meet latest version(r83419)</desc>
            <filename>P57416.patch</filename>
            <type>text/plain</type>
            <size>64755</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNDE3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDQtMTAgIENoYW5nU2Vv
ayBPaCAgPHNoaXZhbWlkb3dAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgorCisgICAgICAgIE1ha2UgY29ycmVzcG9uZGVuY2Ugb2YgZmlsZSBuYW1lIHJlbGF0
ZWQgd2l0aCBldmVudCB0byBvdGhlciBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc0MTYKKworICAgICAgICBTb21lIGZpbGUgbmFtZXMgYXJl
IGNoYW5nZWQgdG8gbWFrZSBjb3JyZXNwb25kZW5jZSBuYW1pbmcgcnVsZS4KKyAgICAgICAgS2V5
Ym9hcmQsIG1vdXNlIGFuZCB3aGVlbCBldmVudCBmaWxlIG5hbWVzIGZvciBHVEsgcG9ydCBoYXZl
IGJlZW4gZGlmZmVyZW50IGZyb20gb3RoZXIgcG9ydHMuCisgICAgICAgIFRoaXMgaGFzIG1hZGUg
dXNlciBoYXJkIHRvIGZpbmQgYSBzcGVjaWZpYyBmaWxlIHJlbGF0ZWQgd2l0aCBldmVudCBmb3Ig
R1RLIHBvcnQuIAorCisgICAgICAgIE5vIHRlc3QgcmVxdWlyZWQuIFRoaXMgcGF0Y2gganVzdCBj
aGFuZ2VzIHNvbWUgZmlsZSBuYW1lcy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0tleUV2ZW50R3RrLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvTW91c2VFdmVudEd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHA6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwOiBSZW1vdmVkLgorCiAyMDExLTA0
LTEwICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCShyZXZpc2lvbiA4MzQxNikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM3NTAsNyArMzc1MCw2IEBAIHdlYmNvcmVndGtfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdldC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvS1VSTEd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFn
ZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdz
R3RrLmNwcCBcCkBAIC0zNzU4LDExICszNzU3LDEzIEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0ay5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluRnJhbWVTY3JvbGxiYXJHdGsuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0cnlHdGsuY3BwIFwK
LQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTW91c2VFdmVudEd0ay5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1BvcHVwTWVudUd0ay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGsuY3BwIFwKQEAgLTM3ODAsNyArMzc4MSw2IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NvdW5kR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1dpZGdldEd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRS
ZW5kZXJpbmdDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdl
dFJlbmRlcmluZ0NvbnRleHQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
S2V5RXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9LZXlFdmVudEd0ay5jcHAJKHJldmlzaW9uIDgzNDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0tleUV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2MDUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1l
bEBnbWFpbC5jb20KLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgotCi0jaW5jbHVkZSAiR3Rr
VmVyc2lvbmluZy5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVGV4
dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKLQotI2luY2x1
ZGUgPGdkay9nZGsuaD4KLSNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLS8vIEZJWE1FOiBUaGlzIGlzIGluY29tcGxldGUuICBXZSBzaG91bGQgY2hh
bmdlIHRoaXMgdG8gbWlycm9yCi0vLyBtb3JlIGxpa2Ugd2hhdCBGaXJlZm94IGRvZXMsIGFuZCBn
ZW5lcmF0ZSB0aGVzZSBzd2l0Y2ggc3RhdGVtZW50cwotLy8gYXQgYnVpbGQgdGltZS4KLVN0cmlu
ZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JHZGtLZXlDb2RlKHVuc2ln
bmVkIGtleUNvZGUpCi17Ci0gICAgc3dpdGNoIChrZXlDb2RlKSB7Ci0gICAgICAgIGNhc2UgR0RL
X01lbnU6Ci0gICAgICAgIGNhc2UgR0RLX0FsdF9MOgotICAgICAgICBjYXNlIEdES19BbHRfUjoK
LSAgICAgICAgICAgIHJldHVybiAiQWx0IjsKLSAgICAgICAgY2FzZSBHREtfQ2xlYXI6Ci0gICAg
ICAgICAgICByZXR1cm4gIkNsZWFyIjsKLSAgICAgICAgY2FzZSBHREtfRG93bjoKLSAgICAgICAg
ICAgIHJldHVybiAiRG93biI7Ci0gICAgICAgICAgICAvLyAiRW5kIgotICAgICAgICBjYXNlIEdE
S19FbmQ6Ci0gICAgICAgICAgICByZXR1cm4gIkVuZCI7Ci0gICAgICAgICAgICAvLyAiRW50ZXIi
Ci0gICAgICAgIGNhc2UgR0RLX0lTT19FbnRlcjoKLSAgICAgICAgY2FzZSBHREtfS1BfRW50ZXI6
Ci0gICAgICAgIGNhc2UgR0RLX1JldHVybjoKLSAgICAgICAgICAgIHJldHVybiAiRW50ZXIiOwot
ICAgICAgICBjYXNlIEdES19FeGVjdXRlOgotICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsK
LSAgICAgICAgY2FzZSBHREtfRjE6Ci0gICAgICAgICAgICByZXR1cm4gIkYxIjsKLSAgICAgICAg
Y2FzZSBHREtfRjI6Ci0gICAgICAgICAgICByZXR1cm4gIkYyIjsKLSAgICAgICAgY2FzZSBHREtf
RjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKLSAgICAgICAgY2FzZSBHREtfRjQ6Ci0gICAg
ICAgICAgICByZXR1cm4gIkY0IjsKLSAgICAgICAgY2FzZSBHREtfRjU6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkY1IjsKLSAgICAgICAgY2FzZSBHREtfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2
IjsKLSAgICAgICAgY2FzZSBHREtfRjc6Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsKLSAgICAg
ICAgY2FzZSBHREtfRjg6Ci0gICAgICAgICAgICByZXR1cm4gIkY4IjsKLSAgICAgICAgY2FzZSBH
REtfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKLSAgICAgICAgY2FzZSBHREtfRjEwOgot
ICAgICAgICAgICAgcmV0dXJuICJGMTAiOwotICAgICAgICBjYXNlIEdES19GMTE6Ci0gICAgICAg
ICAgICByZXR1cm4gIkYxMSI7Ci0gICAgICAgIGNhc2UgR0RLX0YxMjoKLSAgICAgICAgICAgIHJl
dHVybiAiRjEyIjsKLSAgICAgICAgY2FzZSBHREtfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJG
MTMiOwotICAgICAgICBjYXNlIEdES19GMTQ6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNCI7Ci0g
ICAgICAgIGNhc2UgR0RLX0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKLSAgICAgICAg
Y2FzZSBHREtfRjE2OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOwotICAgICAgICBjYXNlIEdE
S19GMTc6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNyI7Ci0gICAgICAgIGNhc2UgR0RLX0YxODoK
LSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKLSAgICAgICAgY2FzZSBHREtfRjE5OgotICAgICAg
ICAgICAgcmV0dXJuICJGMTkiOwotICAgICAgICBjYXNlIEdES19GMjA6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkYyMCI7Ci0gICAgICAgIGNhc2UgR0RLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAi
RjIxIjsKLSAgICAgICAgY2FzZSBHREtfRjIyOgotICAgICAgICAgICAgcmV0dXJuICJGMjIiOwot
ICAgICAgICBjYXNlIEdES19GMjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMyI7Ci0gICAgICAg
IGNhc2UgR0RLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKLSAgICAgICAgY2FzZSBH
REtfSGVscDoKLSAgICAgICAgICAgIHJldHVybiAiSGVscCI7Ci0gICAgICAgIGNhc2UgR0RLX0hv
bWU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOwotICAgICAgICBjYXNlIEdES19JbnNlcnQ6
Ci0gICAgICAgICAgICByZXR1cm4gIkluc2VydCI7Ci0gICAgICAgIGNhc2UgR0RLX0xlZnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gIkxlZnQiOwotICAgICAgICBjYXNlIEdES19QYWdlX0Rvd246Ci0g
ICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKLSAgICAgICAgY2FzZSBHREtfUGFnZV9VcDoK
LSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKLSAgICAgICAgY2FzZSBHREtfUGF1c2U6Ci0g
ICAgICAgICAgICByZXR1cm4gIlBhdXNlIjsKLSAgICAgICAgY2FzZSBHREtfMzI3MF9QcmludFNj
cmVlbjoKLSAgICAgICAgY2FzZSBHREtfUHJpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gIlByaW50
U2NyZWVuIjsKLSAgICAgICAgY2FzZSBHREtfUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gIlJp
Z2h0IjsKLSAgICAgICAgY2FzZSBHREtfU2VsZWN0OgotICAgICAgICAgICAgcmV0dXJuICJTZWxl
Y3QiOwotICAgICAgICBjYXNlIEdES19VcDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOwotICAg
ICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KLSAgICAg
ICAgY2FzZSBHREtfRGVsZXRlOgotICAgICAgICAgICAgcmV0dXJuICJVKzAwN0YiOwotICAgICAg
ICBjYXNlIEdES19CYWNrU3BhY2U6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDAwOCI7Ci0gICAg
ICAgIGNhc2UgR0RLX0lTT19MZWZ0X1RhYjoKLSAgICAgICAgY2FzZSBHREtfMzI3MF9CYWNrVGFi
OgotICAgICAgICBjYXNlIEdES19UYWI6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDAwOSI7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlUrJTA0
WCIsIGdka19rZXl2YWxfdG9fdW5pY29kZShnZGtfa2V5dmFsX3RvX3VwcGVyKGtleUNvZGUpKSk7
Ci0gICAgfQotfQotCi1pbnQgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojp3aW5kb3dzS2V5Q29kZUZv
ckdka0tleUNvZGUodW5zaWduZWQga2V5Y29kZSkKLXsKLSAgICBzd2l0Y2ggKGtleWNvZGUpIHsK
LSAgICAgICAgY2FzZSBHREtfS1BfMDoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQwOy8v
ICg2MCkgTnVtZXJpYyBrZXlwYWQgMCBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfMToKLSAgICAg
ICAgICAgIHJldHVybiBWS19OVU1QQUQxOy8vICg2MSkgTnVtZXJpYyBrZXlwYWQgMSBrZXkKLSAg
ICAgICAgY2FzZSBHREtfS1BfMjoKLSAgICAgICAgICAgIHJldHVybiAgVktfTlVNUEFEMjsgLy8g
KDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQotICAgICAgICBjYXNlIEdES19LUF8zOgotICAgICAg
ICAgICAgcmV0dXJuIFZLX05VTVBBRDM7IC8vICg2MykgTnVtZXJpYyBrZXlwYWQgMyBrZXkKLSAg
ICAgICAgY2FzZSBHREtfS1BfNDoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQ0OyAvLyAo
NjQpIE51bWVyaWMga2V5cGFkIDQga2V5Ci0gICAgICAgIGNhc2UgR0RLX0tQXzU6Ci0gICAgICAg
ICAgICByZXR1cm4gVktfTlVNUEFENTsgLy8oNjUpIE51bWVyaWMga2V5cGFkIDUga2V5Ci0gICAg
ICAgIGNhc2UgR0RLX0tQXzY6Ci0gICAgICAgICAgICByZXR1cm4gVktfTlVNUEFENjsgLy8gKDY2
KSBOdW1lcmljIGtleXBhZCA2IGtleQotICAgICAgICBjYXNlIEdES19LUF83OgotICAgICAgICAg
ICAgcmV0dXJuIFZLX05VTVBBRDc7IC8vICg2NykgTnVtZXJpYyBrZXlwYWQgNyBrZXkKLSAgICAg
ICAgY2FzZSBHREtfS1BfODoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQ4OyAvLyAoNjgp
IE51bWVyaWMga2V5cGFkIDgga2V5Ci0gICAgICAgIGNhc2UgR0RLX0tQXzk6Ci0gICAgICAgICAg
ICByZXR1cm4gVktfTlVNUEFEOTsgLy8gKDY5KSBOdW1lcmljIGtleXBhZCA5IGtleQotICAgICAg
ICBjYXNlIEdES19LUF9NdWx0aXBseToKLSAgICAgICAgICAgIHJldHVybiBWS19NVUxUSVBMWTsg
Ly8gKDZBKSBNdWx0aXBseSBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfQWRkOgotICAgICAgICAg
ICAgcmV0dXJuIFZLX0FERDsgLy8gKDZCKSBBZGQga2V5Ci0gICAgICAgIGNhc2UgR0RLX0tQX1N1
YnRyYWN0OgotICAgICAgICAgICAgcmV0dXJuIFZLX1NVQlRSQUNUOyAvLyAoNkQpIFN1YnRyYWN0
IGtleQotICAgICAgICBjYXNlIEdES19LUF9EZWNpbWFsOgotICAgICAgICAgICAgcmV0dXJuIFZL
X0RFQ0lNQUw7IC8vICg2RSkgRGVjaW1hbCBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfRGl2aWRl
OgotICAgICAgICAgICAgcmV0dXJuIFZLX0RJVklERTsgLy8gKDZGKSBEaXZpZGUga2V5Ci0KLSAg
ICAgICAgY2FzZSBHREtfS1BfUGFnZV9VcDoKLSAgICAgICAgICAgIHJldHVybiBWS19QUklPUjsg
Ly8gKDIxKSBQQUdFIFVQIGtleQotICAgICAgICBjYXNlIEdES19LUF9QYWdlX0Rvd246Ci0gICAg
ICAgICAgICByZXR1cm4gVktfTkVYVDsgLy8gKDIyKSBQQUdFIERPV04ga2V5Ci0gICAgICAgIGNh
c2UgR0RLX0tQX0VuZDoKLSAgICAgICAgICAgIHJldHVybiBWS19FTkQ7IC8vICgyMykgRU5EIGtl
eQotICAgICAgICBjYXNlIEdES19LUF9Ib21lOgotICAgICAgICAgICAgcmV0dXJuIFZLX0hPTUU7
IC8vICgyNCkgSE9NRSBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfTGVmdDoKLSAgICAgICAgICAg
IHJldHVybiBWS19MRUZUOyAvLyAoMjUpIExFRlQgQVJST1cga2V5Ci0gICAgICAgIGNhc2UgR0RL
X0tQX1VwOgotICAgICAgICAgICAgcmV0dXJuIFZLX1VQOyAvLyAoMjYpIFVQIEFSUk9XIGtleQot
ICAgICAgICBjYXNlIEdES19LUF9SaWdodDoKLSAgICAgICAgICAgIHJldHVybiBWS19SSUdIVDsg
Ly8gKDI3KSBSSUdIVCBBUlJPVyBrZXkKLSAgICAgICAgY2FzZSBHREtfS1BfRG93bjoKLSAgICAg
ICAgICAgIHJldHVybiBWS19ET1dOOyAvLyAoMjgpIERPV04gQVJST1cga2V5Ci0KLSAgICAgICAg
Y2FzZSBHREtfQmFja1NwYWNlOgotICAgICAgICAgICAgcmV0dXJuIFZLX0JBQ0s7IC8vICgwOCkg
QkFDS1NQQUNFIGtleQotICAgICAgICBjYXNlIEdES19JU09fTGVmdF9UYWI6Ci0gICAgICAgIGNh
c2UgR0RLXzMyNzBfQmFja1RhYjoKLSAgICAgICAgY2FzZSBHREtfVGFiOgotICAgICAgICAgICAg
cmV0dXJuIFZLX1RBQjsgLy8gKDA5KSBUQUIga2V5Ci0gICAgICAgIGNhc2UgR0RLX0NsZWFyOgot
ICAgICAgICAgICAgcmV0dXJuIFZLX0NMRUFSOyAvLyAoMEMpIENMRUFSIGtleQotICAgICAgICBj
YXNlIEdES19JU09fRW50ZXI6Ci0gICAgICAgIGNhc2UgR0RLX0tQX0VudGVyOgotICAgICAgICBj
YXNlIEdES19SZXR1cm46Ci0gICAgICAgICAgICByZXR1cm4gVktfUkVUVVJOOyAvLygwRCkgUmV0
dXJuIGtleQotICAgICAgICBjYXNlIEdES19TaGlmdF9MOgotICAgICAgICBjYXNlIEdES19TaGlm
dF9SOgotICAgICAgICAgICAgcmV0dXJuIFZLX1NISUZUOyAvLyAoMTApIFNISUZUIGtleQotICAg
ICAgICBjYXNlIEdES19Db250cm9sX0w6Ci0gICAgICAgIGNhc2UgR0RLX0NvbnRyb2xfUjoKLSAg
ICAgICAgICAgIHJldHVybiBWS19DT05UUk9MOyAvLyAoMTEpIENUUkwga2V5Ci0gICAgICAgIGNh
c2UgR0RLX01lbnU6Ci0gICAgICAgICAgICByZXR1cm4gVktfQVBQUzsgIC8vICg1RCkgQXBwbGlj
YXRpb25zIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAgY2FzZSBHREtfQWx0X0w6Ci0g
ICAgICAgIGNhc2UgR0RLX0FsdF9SOgotICAgICAgICAgICAgcmV0dXJuIFZLX01FTlU7IC8vICgx
MikgQUxUIGtleQotCi0gICAgICAgIGNhc2UgR0RLX1BhdXNlOgotICAgICAgICAgICAgcmV0dXJu
IFZLX1BBVVNFOyAvLyAoMTMpIFBBVVNFIGtleQotICAgICAgICBjYXNlIEdES19DYXBzX0xvY2s6
Ci0gICAgICAgICAgICByZXR1cm4gVktfQ0FQSVRBTDsgLy8gKDE0KSBDQVBTIExPQ0sga2V5Ci0g
ICAgICAgIGNhc2UgR0RLX0thbmFfTG9jazoKLSAgICAgICAgY2FzZSBHREtfS2FuYV9TaGlmdDoK
LSAgICAgICAgICAgIHJldHVybiBWS19LQU5BOyAvLyAoMTUpIElucHV0IE1ldGhvZCBFZGl0b3Ig
KElNRSkgS2FuYSBtb2RlCi0gICAgICAgIGNhc2UgR0RLX0hhbmd1bDoKLSAgICAgICAgICAgIHJl
dHVybiBWS19IQU5HVUw7IC8vIFZLX0hBTkdVTCAoMTUpIElNRSBIYW5ndWwgbW9kZQotICAgICAg
ICAgICAgLy8gVktfSlVOSkEgKDE3KSBJTUUgSnVuamEgbW9kZQotICAgICAgICAgICAgLy8gVktf
RklOQUwgKDE4KSBJTUUgZmluYWwgbW9kZQotICAgICAgICBjYXNlIEdES19IYW5ndWxfSGFuamE6
Ci0gICAgICAgICAgICByZXR1cm4gVktfSEFOSkE7IC8vICgxOSkgSU1FIEhhbmphIG1vZGUKLSAg
ICAgICAgY2FzZSBHREtfS2Fuamk6Ci0gICAgICAgICAgICByZXR1cm4gVktfS0FOSkk7IC8vICgx
OSkgSU1FIEthbmppIG1vZGUKLSAgICAgICAgY2FzZSBHREtfRXNjYXBlOgotICAgICAgICAgICAg
cmV0dXJuIFZLX0VTQ0FQRTsgLy8gKDFCKSBFU0Mga2V5Ci0gICAgICAgICAgICAvLyBWS19DT05W
RVJUICgxQykgSU1FIGNvbnZlcnQKLSAgICAgICAgICAgIC8vIFZLX05PTkNPTlZFUlQgKDFEKSBJ
TUUgbm9uY29udmVydAotICAgICAgICAgICAgLy8gVktfQUNDRVBUICgxRSkgSU1FIGFjY2VwdAot
ICAgICAgICAgICAgLy8gVktfTU9ERUNIQU5HRSAoMUYpIElNRSBtb2RlIGNoYW5nZSByZXF1ZXN0
Ci0gICAgICAgIGNhc2UgR0RLX3NwYWNlOgotICAgICAgICAgICAgcmV0dXJuIFZLX1NQQUNFOyAv
LyAoMjApIFNQQUNFQkFSCi0gICAgICAgIGNhc2UgR0RLX1BhZ2VfVXA6Ci0gICAgICAgICAgICBy
ZXR1cm4gVktfUFJJT1I7IC8vICgyMSkgUEFHRSBVUCBrZXkKLSAgICAgICAgY2FzZSBHREtfUGFn
ZV9Eb3duOgotICAgICAgICAgICAgcmV0dXJuIFZLX05FWFQ7IC8vICgyMikgUEFHRSBET1dOIGtl
eQotICAgICAgICBjYXNlIEdES19FbmQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfRU5EOyAvLyAo
MjMpIEVORCBrZXkKLSAgICAgICAgY2FzZSBHREtfSG9tZToKLSAgICAgICAgICAgIHJldHVybiBW
S19IT01FOyAvLyAoMjQpIEhPTUUga2V5Ci0gICAgICAgIGNhc2UgR0RLX0xlZnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gVktfTEVGVDsgLy8gKDI1KSBMRUZUIEFSUk9XIGtleQotICAgICAgICBjYXNl
IEdES19VcDoKLSAgICAgICAgICAgIHJldHVybiBWS19VUDsgLy8gKDI2KSBVUCBBUlJPVyBrZXkK
LSAgICAgICAgY2FzZSBHREtfUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfUklHSFQ7IC8v
ICgyNykgUklHSFQgQVJST1cga2V5Ci0gICAgICAgIGNhc2UgR0RLX0Rvd246Ci0gICAgICAgICAg
ICByZXR1cm4gVktfRE9XTjsgLy8gKDI4KSBET1dOIEFSUk9XIGtleQotICAgICAgICBjYXNlIEdE
S19TZWxlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gVktfU0VMRUNUOyAvLyAoMjkpIFNFTEVDVCBr
ZXkKLSAgICAgICAgY2FzZSBHREtfUHJpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfU05BUFNI
T1Q7IC8vICgyQykgUFJJTlQgU0NSRUVOIGtleQotICAgICAgICBjYXNlIEdES19FeGVjdXRlOgot
ICAgICAgICAgICAgcmV0dXJuIFZLX0VYRUNVVEU7Ly8gKDJCKSBFWEVDVVRFIGtleQotICAgICAg
ICBjYXNlIEdES19JbnNlcnQ6Ci0gICAgICAgIGNhc2UgR0RLX0tQX0luc2VydDoKLSAgICAgICAg
ICAgIHJldHVybiBWS19JTlNFUlQ7IC8vICgyRCkgSU5TIGtleQotICAgICAgICBjYXNlIEdES19E
ZWxldGU6Ci0gICAgICAgIGNhc2UgR0RLX0tQX0RlbGV0ZToKLSAgICAgICAgICAgIHJldHVybiBW
S19ERUxFVEU7IC8vICgyRSkgREVMIGtleQotICAgICAgICBjYXNlIEdES19IZWxwOgotICAgICAg
ICAgICAgcmV0dXJuIFZLX0hFTFA7IC8vICgyRikgSEVMUCBrZXkKLSAgICAgICAgY2FzZSBHREtf
MDoKLSAgICAgICAgY2FzZSBHREtfcGFyZW5yaWdodDoKLSAgICAgICAgICAgIHJldHVybiBWS18w
OyAgICAvLyAgKDMwKSAwKSBrZXkKLSAgICAgICAgY2FzZSBHREtfMToKLSAgICAgICAgY2FzZSBH
REtfZXhjbGFtOgotICAgICAgICAgICAgcmV0dXJuIFZLXzE7IC8vICAoMzEpIDEgISBrZXkKLSAg
ICAgICAgY2FzZSBHREtfMjoKLSAgICAgICAgY2FzZSBHREtfYXQ6Ci0gICAgICAgICAgICByZXR1
cm4gVktfMjsgLy8gICgzMikgMiAmIGtleQotICAgICAgICBjYXNlIEdES18zOgotICAgICAgICBj
YXNlIEdES19udW1iZXJzaWduOgotICAgICAgICAgICAgcmV0dXJuIFZLXzM7IC8vY2FzZSAnMyc6
IGNhc2UgJyMnOwotICAgICAgICBjYXNlIEdES180OgotICAgICAgICBjYXNlIEdES19kb2xsYXI6
IC8vICAoMzQpIDQga2V5ICckJzsKLSAgICAgICAgICAgIHJldHVybiBWS180OwotICAgICAgICBj
YXNlIEdES181OgotICAgICAgICBjYXNlIEdES19wZXJjZW50OgotICAgICAgICAgICAgcmV0dXJu
IFZLXzU7IC8vICAoMzUpIDUga2V5ICAnJScKLSAgICAgICAgY2FzZSBHREtfNjoKLSAgICAgICAg
Y2FzZSBHREtfYXNjaWljaXJjdW06Ci0gICAgICAgICAgICByZXR1cm4gVktfNjsgLy8gICgzNikg
NiBrZXkgICdeJwotICAgICAgICBjYXNlIEdES183OgotICAgICAgICBjYXNlIEdES19hbXBlcnNh
bmQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfNzsgLy8gICgzNykgNyBrZXkgIGNhc2UgJyYnCi0g
ICAgICAgIGNhc2UgR0RLXzg6Ci0gICAgICAgIGNhc2UgR0RLX2FzdGVyaXNrOgotICAgICAgICAg
ICAgcmV0dXJuIFZLXzg7IC8vICAoMzgpIDgga2V5ICAnKicKLSAgICAgICAgY2FzZSBHREtfOToK
LSAgICAgICAgY2FzZSBHREtfcGFyZW5sZWZ0OgotICAgICAgICAgICAgcmV0dXJuIFZLXzk7IC8v
ICAoMzkpIDkga2V5ICcoJwotICAgICAgICBjYXNlIEdES19hOgotICAgICAgICBjYXNlIEdES19B
OgotICAgICAgICAgICAgcmV0dXJuIFZLX0E7IC8vICAoNDEpIEEga2V5IGNhc2UgJ2EnOiBjYXNl
ICdBJzogcmV0dXJuIDB4NDE7Ci0gICAgICAgIGNhc2UgR0RLX2I6Ci0gICAgICAgIGNhc2UgR0RL
X0I6Ci0gICAgICAgICAgICByZXR1cm4gVktfQjsgLy8gICg0MikgQiBrZXkgY2FzZSAnYic6IGNh
c2UgJ0InOiByZXR1cm4gMHg0MjsKLSAgICAgICAgY2FzZSBHREtfYzoKLSAgICAgICAgY2FzZSBH
REtfQzoKLSAgICAgICAgICAgIHJldHVybiBWS19DOyAvLyAgKDQzKSBDIGtleSBjYXNlICdjJzog
Y2FzZSAnQyc6IHJldHVybiAweDQzOwotICAgICAgICBjYXNlIEdES19kOgotICAgICAgICBjYXNl
IEdES19EOgotICAgICAgICAgICAgcmV0dXJuIFZLX0Q7IC8vICAoNDQpIEQga2V5IGNhc2UgJ2Qn
OiBjYXNlICdEJzogcmV0dXJuIDB4NDQ7Ci0gICAgICAgIGNhc2UgR0RLX2U6Ci0gICAgICAgIGNh
c2UgR0RLX0U6Ci0gICAgICAgICAgICByZXR1cm4gVktfRTsgLy8gICg0NSkgRSBrZXkgY2FzZSAn
ZSc6IGNhc2UgJ0UnOiByZXR1cm4gMHg0NTsKLSAgICAgICAgY2FzZSBHREtfZjoKLSAgICAgICAg
Y2FzZSBHREtfRjoKLSAgICAgICAgICAgIHJldHVybiBWS19GOyAvLyAgKDQ2KSBGIGtleSBjYXNl
ICdmJzogY2FzZSAnRic6IHJldHVybiAweDQ2OwotICAgICAgICBjYXNlIEdES19nOgotICAgICAg
ICBjYXNlIEdES19HOgotICAgICAgICAgICAgcmV0dXJuIFZLX0c7IC8vICAoNDcpIEcga2V5IGNh
c2UgJ2cnOiBjYXNlICdHJzogcmV0dXJuIDB4NDc7Ci0gICAgICAgIGNhc2UgR0RLX2g6Ci0gICAg
ICAgIGNhc2UgR0RLX0g6Ci0gICAgICAgICAgICByZXR1cm4gVktfSDsgLy8gICg0OCkgSCBrZXkg
Y2FzZSAnaCc6IGNhc2UgJ0gnOiByZXR1cm4gMHg0ODsKLSAgICAgICAgY2FzZSBHREtfaToKLSAg
ICAgICAgY2FzZSBHREtfSToKLSAgICAgICAgICAgIHJldHVybiBWS19JOyAvLyAgKDQ5KSBJIGtl
eSBjYXNlICdpJzogY2FzZSAnSSc6IHJldHVybiAweDQ5OwotICAgICAgICBjYXNlIEdES19qOgot
ICAgICAgICBjYXNlIEdES19KOgotICAgICAgICAgICAgcmV0dXJuIFZLX0o7IC8vICAoNEEpIEog
a2V5IGNhc2UgJ2onOiBjYXNlICdKJzogcmV0dXJuIDB4NEE7Ci0gICAgICAgIGNhc2UgR0RLX2s6
Ci0gICAgICAgIGNhc2UgR0RLX0s6Ci0gICAgICAgICAgICByZXR1cm4gVktfSzsgLy8gICg0Qikg
SyBrZXkgY2FzZSAnayc6IGNhc2UgJ0snOiByZXR1cm4gMHg0QjsKLSAgICAgICAgY2FzZSBHREtf
bDoKLSAgICAgICAgY2FzZSBHREtfTDoKLSAgICAgICAgICAgIHJldHVybiBWS19MOyAvLyAgKDRD
KSBMIGtleSBjYXNlICdsJzogY2FzZSAnTCc6IHJldHVybiAweDRDOwotICAgICAgICBjYXNlIEdE
S19tOgotICAgICAgICBjYXNlIEdES19NOgotICAgICAgICAgICAgcmV0dXJuIFZLX007IC8vICAo
NEQpIE0ga2V5IGNhc2UgJ20nOiBjYXNlICdNJzogcmV0dXJuIDB4NEQ7Ci0gICAgICAgIGNhc2Ug
R0RLX246Ci0gICAgICAgIGNhc2UgR0RLX046Ci0gICAgICAgICAgICByZXR1cm4gVktfTjsgLy8g
ICg0RSkgTiBrZXkgY2FzZSAnbic6IGNhc2UgJ04nOiByZXR1cm4gMHg0RTsKLSAgICAgICAgY2Fz
ZSBHREtfbzoKLSAgICAgICAgY2FzZSBHREtfTzoKLSAgICAgICAgICAgIHJldHVybiBWS19POyAv
LyAgKDRGKSBPIGtleSBjYXNlICdvJzogY2FzZSAnTyc6IHJldHVybiAweDRGOwotICAgICAgICBj
YXNlIEdES19wOgotICAgICAgICBjYXNlIEdES19QOgotICAgICAgICAgICAgcmV0dXJuIFZLX1A7
IC8vICAoNTApIFAga2V5IGNhc2UgJ3AnOiBjYXNlICdQJzogcmV0dXJuIDB4NTA7Ci0gICAgICAg
IGNhc2UgR0RLX3E6Ci0gICAgICAgIGNhc2UgR0RLX1E6Ci0gICAgICAgICAgICByZXR1cm4gVktf
UTsgLy8gICg1MSkgUSBrZXkgY2FzZSAncSc6IGNhc2UgJ1EnOiByZXR1cm4gMHg1MTsKLSAgICAg
ICAgY2FzZSBHREtfcjoKLSAgICAgICAgY2FzZSBHREtfUjoKLSAgICAgICAgICAgIHJldHVybiBW
S19SOyAvLyAgKDUyKSBSIGtleSBjYXNlICdyJzogY2FzZSAnUic6IHJldHVybiAweDUyOwotICAg
ICAgICBjYXNlIEdES19zOgotICAgICAgICBjYXNlIEdES19TOgotICAgICAgICAgICAgcmV0dXJu
IFZLX1M7IC8vICAoNTMpIFMga2V5IGNhc2UgJ3MnOiBjYXNlICdTJzogcmV0dXJuIDB4NTM7Ci0g
ICAgICAgIGNhc2UgR0RLX3Q6Ci0gICAgICAgIGNhc2UgR0RLX1Q6Ci0gICAgICAgICAgICByZXR1
cm4gVktfVDsgLy8gICg1NCkgVCBrZXkgY2FzZSAndCc6IGNhc2UgJ1QnOiByZXR1cm4gMHg1NDsK
LSAgICAgICAgY2FzZSBHREtfdToKLSAgICAgICAgY2FzZSBHREtfVToKLSAgICAgICAgICAgIHJl
dHVybiBWS19VOyAvLyAgKDU1KSBVIGtleSBjYXNlICd1JzogY2FzZSAnVSc6IHJldHVybiAweDU1
OwotICAgICAgICBjYXNlIEdES192OgotICAgICAgICBjYXNlIEdES19WOgotICAgICAgICAgICAg
cmV0dXJuIFZLX1Y7IC8vICAoNTYpIFYga2V5IGNhc2UgJ3YnOiBjYXNlICdWJzogcmV0dXJuIDB4
NTY7Ci0gICAgICAgIGNhc2UgR0RLX3c6Ci0gICAgICAgIGNhc2UgR0RLX1c6Ci0gICAgICAgICAg
ICByZXR1cm4gVktfVzsgLy8gICg1NykgVyBrZXkgY2FzZSAndyc6IGNhc2UgJ1cnOiByZXR1cm4g
MHg1NzsKLSAgICAgICAgY2FzZSBHREtfeDoKLSAgICAgICAgY2FzZSBHREtfWDoKLSAgICAgICAg
ICAgIHJldHVybiBWS19YOyAvLyAgKDU4KSBYIGtleSBjYXNlICd4JzogY2FzZSAnWCc6IHJldHVy
biAweDU4OwotICAgICAgICBjYXNlIEdES195OgotICAgICAgICBjYXNlIEdES19ZOgotICAgICAg
ICAgICAgcmV0dXJuIFZLX1k7IC8vICAoNTkpIFkga2V5IGNhc2UgJ3knOiBjYXNlICdZJzogcmV0
dXJuIDB4NTk7Ci0gICAgICAgIGNhc2UgR0RLX3o6Ci0gICAgICAgIGNhc2UgR0RLX1o6Ci0gICAg
ICAgICAgICByZXR1cm4gVktfWjsgLy8gICg1QSkgWiBrZXkgY2FzZSAneic6IGNhc2UgJ1onOiBy
ZXR1cm4gMHg1QTsKLSAgICAgICAgY2FzZSBHREtfTWV0YV9MOgotICAgICAgICAgICAgcmV0dXJu
IFZLX0xXSU47IC8vICg1QikgTGVmdCBXaW5kb3dzIGtleSAoTWljcm9zb2Z0IE5hdHVyYWwga2V5
Ym9hcmQpCi0gICAgICAgIGNhc2UgR0RLX01ldGFfUjoKLSAgICAgICAgICAgIHJldHVybiBWS19S
V0lOOyAvLyAoNUMpIFJpZ2h0IFdpbmRvd3Mga2V5IChOYXR1cmFsIGtleWJvYXJkKQotICAgICAg
ICAgICAgLy8gVktfU0xFRVAgKDVGKSBDb21wdXRlciBTbGVlcCBrZXkKLSAgICAgICAgICAgIC8v
IFZLX1NFUEFSQVRPUiAoNkMpIFNlcGFyYXRvciBrZXkKLSAgICAgICAgICAgIC8vIFZLX1NVQlRS
QUNUICg2RCkgU3VidHJhY3Qga2V5Ci0gICAgICAgICAgICAvLyBWS19ERUNJTUFMICg2RSkgRGVj
aW1hbCBrZXkKLSAgICAgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERpdmlkZSBrZXkKLSAgICAg
ICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKLQotICAgICAgICBjYXNlIEdES19O
dW1fTG9jazoKLSAgICAgICAgICAgIHJldHVybiBWS19OVU1MT0NLOyAvLyAoOTApIE5VTSBMT0NL
IGtleQotCi0gICAgICAgIGNhc2UgR0RLX1Njcm9sbF9Mb2NrOgotICAgICAgICAgICAgcmV0dXJu
IFZLX1NDUk9MTDsgLy8gKDkxKSBTQ1JPTEwgTE9DSyBrZXkKLQotICAgICAgICAgICAgLy8gVktf
TFNISUZUIChBMCkgTGVmdCBTSElGVCBrZXkKLSAgICAgICAgICAgIC8vIFZLX1JTSElGVCAoQTEp
IFJpZ2h0IFNISUZUIGtleQotICAgICAgICAgICAgLy8gVktfTENPTlRST0wgKEEyKSBMZWZ0IENP
TlRST0wga2V5Ci0gICAgICAgICAgICAvLyBWS19SQ09OVFJPTCAoQTMpIFJpZ2h0IENPTlRST0wg
a2V5Ci0gICAgICAgICAgICAvLyBWS19MTUVOVSAoQTQpIExlZnQgTUVOVSBrZXkKLSAgICAgICAg
ICAgIC8vIFZLX1JNRU5VIChBNSkgUmlnaHQgTUVOVSBrZXkKLSAgICAgICAgICAgIC8vIFZLX0JS
T1dTRVJfQkFDSyAoQTYpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBCYWNrIGtleQotICAgICAg
ICAgICAgLy8gVktfQlJPV1NFUl9GT1JXQVJEIChBNykgV2luZG93cyAyMDAwL1hQOiBCcm93c2Vy
IEZvcndhcmQga2V5Ci0gICAgICAgICAgICAvLyBWS19CUk9XU0VSX1JFRlJFU0ggKEE4KSBXaW5k
b3dzIDIwMDAvWFA6IEJyb3dzZXIgUmVmcmVzaCBrZXkKLSAgICAgICAgICAgIC8vIFZLX0JST1dT
RVJfU1RPUCAoQTkpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBTdG9wIGtleQotICAgICAgICAg
ICAgLy8gVktfQlJPV1NFUl9TRUFSQ0ggKEFBKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgU2Vh
cmNoIGtleQotICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9GQVZPUklURVMgKEFCKSBXaW5kb3dz
IDIwMDAvWFA6IEJyb3dzZXIgRmF2b3JpdGVzIGtleQotICAgICAgICAgICAgLy8gVktfQlJPV1NF
Ul9IT01FIChBQykgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0YXJ0IGFuZCBIb21lIGtleQot
ICAgICAgICAgICAgLy8gVktfVk9MVU1FX01VVEUgKEFEKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVt
ZSBNdXRlIGtleQotICAgICAgICAgICAgLy8gVktfVk9MVU1FX0RPV04gKEFFKSBXaW5kb3dzIDIw
MDAvWFA6IFZvbHVtZSBEb3duIGtleQotICAgICAgICAgICAgLy8gVktfVk9MVU1FX1VQIChBRikg
V2luZG93cyAyMDAwL1hQOiBWb2x1bWUgVXAga2V5Ci0gICAgICAgICAgICAvLyBWS19NRURJQV9O
RVhUX1RSQUNLIChCMCkgV2luZG93cyAyMDAwL1hQOiBOZXh0IFRyYWNrIGtleQotICAgICAgICAg
ICAgLy8gVktfTUVESUFfUFJFVl9UUkFDSyAoQjEpIFdpbmRvd3MgMjAwMC9YUDogUHJldmlvdXMg
VHJhY2sga2V5Ci0gICAgICAgICAgICAvLyBWS19NRURJQV9TVE9QIChCMikgV2luZG93cyAyMDAw
L1hQOiBTdG9wIE1lZGlhIGtleQotICAgICAgICAgICAgLy8gVktfTUVESUFfUExBWV9QQVVTRSAo
QjMpIFdpbmRvd3MgMjAwMC9YUDogUGxheS9QYXVzZSBNZWRpYSBrZXkKLSAgICAgICAgICAgIC8v
IFZLX0xBVU5DSF9NQUlMIChCNCkgV2luZG93cyAyMDAwL1hQOiBTdGFydCBNYWlsIGtleQotICAg
ICAgICAgICAgLy8gVktfTEFVTkNIX01FRElBX1NFTEVDVCAoQjUpIFdpbmRvd3MgMjAwMC9YUDog
U2VsZWN0IE1lZGlhIGtleQotICAgICAgICAgICAgLy8gVktfTEFVTkNIX0FQUDEgKEI2KSBXaW5k
b3dzIDIwMDAvWFA6IFN0YXJ0IEFwcGxpY2F0aW9uIDEga2V5Ci0gICAgICAgICAgICAvLyBWS19M
QVVOQ0hfQVBQMiAoQjcpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24gMiBrZXkK
LQotICAgICAgICAgICAgLy8gVktfT0VNXzEgKEJBKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNo
YXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0
aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnOzonIGtleQotICAgICAgICBjYXNlIEdES19z
ZW1pY29sb246Ci0gICAgICAgIGNhc2UgR0RLX2NvbG9uOgotICAgICAgICAgICAgcmV0dXJuIFZL
X09FTV8xOyAvL2Nhc2UgJzsnOiBjYXNlICc6JzogcmV0dXJuIDB4QkE7Ci0gICAgICAgICAgICAv
LyBWS19PRU1fUExVUyAoQkIpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lv
biwgdGhlICcrJyBrZXkKLSAgICAgICAgY2FzZSBHREtfcGx1czoKLSAgICAgICAgY2FzZSBHREtf
ZXF1YWw6Ci0gICAgICAgICAgICByZXR1cm4gVktfT0VNX1BMVVM7IC8vY2FzZSAnPSc6IGNhc2Ug
JysnOiByZXR1cm4gMHhCQjsKLSAgICAgICAgICAgIC8vIFZLX09FTV9DT01NQSAoQkMpIFdpbmRv
d3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcsJyBrZXkKLSAgICAgICAg
Y2FzZSBHREtfY29tbWE6Ci0gICAgICAgIGNhc2UgR0RLX2xlc3M6Ci0gICAgICAgICAgICByZXR1
cm4gVktfT0VNX0NPTU1BOyAvL2Nhc2UgJywnOiBjYXNlICc8JzogcmV0dXJuIDB4QkM7Ci0gICAg
ICAgICAgICAvLyBWS19PRU1fTUlOVVMgKEJEKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkgY291
bnRyeS9yZWdpb24sIHRoZSAnLScga2V5Ci0gICAgICAgIGNhc2UgR0RLX21pbnVzOgotICAgICAg
ICBjYXNlIEdES191bmRlcnNjb3JlOgotICAgICAgICAgICAgcmV0dXJuIFZLX09FTV9NSU5VUzsg
Ly9jYXNlICctJzogY2FzZSAnXyc6IHJldHVybiAweEJEOwotICAgICAgICAgICAgLy8gVktfT0VN
X1BFUklPRCAoQkUpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhl
ICcuJyBrZXkKLSAgICAgICAgY2FzZSBHREtfcGVyaW9kOgotICAgICAgICBjYXNlIEdES19ncmVh
dGVyOgotICAgICAgICAgICAgcmV0dXJuIFZLX09FTV9QRVJJT0Q7IC8vY2FzZSAnLic6IGNhc2Ug
Jz4nOiByZXR1cm4gMHhCRTsKLSAgICAgICAgICAgIC8vIFZLX09FTV8yIChCRikgVXNlZCBmb3Ig
bWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93
cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJy8/JyBrZXkKLSAg
ICAgICAgY2FzZSBHREtfc2xhc2g6Ci0gICAgICAgIGNhc2UgR0RLX3F1ZXN0aW9uOgotICAgICAg
ICAgICAgcmV0dXJuIFZLX09FTV8yOyAvL2Nhc2UgJy8nOiBjYXNlICc/JzogcmV0dXJuIDB4QkY7
Ci0gICAgICAgICAgICAvLyBWS19PRU1fMyAoQzApIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hh
cmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRo
ZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdgficga2V5Ci0gICAgICAgIGNhc2UgR0RLX2Fz
Y2lpdGlsZGU6Ci0gICAgICAgIGNhc2UgR0RLX3F1b3RlbGVmdDoKLSAgICAgICAgICAgIHJldHVy
biBWS19PRU1fMzsgLy9jYXNlICdgJzogY2FzZSAnfic6IHJldHVybiAweEMwOwotICAgICAgICAg
ICAgLy8gVktfT0VNXzQgKERCKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0
IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRh
cmQga2V5Ym9hcmQsIHRoZSAnW3snIGtleQotICAgICAgICBjYXNlIEdES19icmFja2V0bGVmdDoK
LSAgICAgICAgY2FzZSBHREtfYnJhY2VsZWZ0OgotICAgICAgICAgICAgcmV0dXJuIFZLX09FTV80
OyAvL2Nhc2UgJ1snOiBjYXNlICd7JzogcmV0dXJuIDB4REI7Ci0gICAgICAgICAgICAvLyBWS19P
RU1fNSAoREMpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkg
Ynkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2Fy
ZCwgdGhlICdcfCcga2V5Ci0gICAgICAgIGNhc2UgR0RLX2JhY2tzbGFzaDoKLSAgICAgICAgY2Fz
ZSBHREtfYmFyOgotICAgICAgICAgICAgcmV0dXJuIFZLX09FTV81OyAvL2Nhc2UgJ1xcJzogY2Fz
ZSAnfCc6IHJldHVybiAweERDOwotICAgICAgICAgICAgLy8gVktfT0VNXzYgKEREKSBVc2VkIGZv
ciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5k
b3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXX0nIGtleQot
ICAgICAgICBjYXNlIEdES19icmFja2V0cmlnaHQ6Ci0gICAgICAgIGNhc2UgR0RLX2JyYWNlcmln
aHQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfT0VNXzY7IC8vIGNhc2UgJ10nOiBjYXNlICd9Jzog
cmV0dXJuIDB4REQ7Ci0gICAgICAgICAgICAvLyBWS19PRU1fNyAoREUpIFVzZWQgZm9yIG1pc2Nl
bGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAw
MC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdzaW5nbGUtcXVvdGUvZG91
YmxlLXF1b3RlJyBrZXkKLSAgICAgICAgY2FzZSBHREtfcXVvdGVyaWdodDoKLSAgICAgICAgY2Fz
ZSBHREtfcXVvdGVkYmw6Ci0gICAgICAgICAgICByZXR1cm4gVktfT0VNXzc7IC8vIGNhc2UgJ1wn
JzogY2FzZSAnIic6IHJldHVybiAweERFOwotICAgICAgICAgICAgLy8gVktfT0VNXzggKERGKSBV
c2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJk
LgotICAgICAgICAgICAgLy8gVktfT0VNXzEwMiAoRTIpIFdpbmRvd3MgMjAwMC9YUDogRWl0aGVy
IHRoZSBhbmdsZSBicmFja2V0IGtleSBvciB0aGUgYmFja3NsYXNoIGtleSBvbiB0aGUgUlQgMTAy
LWtleSBrZXlib2FyZAotICAgICAgICAgICAgLy8gVktfUFJPQ0VTU0tFWSAoRTUpIFdpbmRvd3Mg
OTUvOTgvTWUsIFdpbmRvd3MgTlQgNC4wLCBXaW5kb3dzIDIwMDAvWFA6IElNRSBQUk9DRVNTIGtl
eQotICAgICAgICAgICAgLy8gVktfUEFDS0VUIChFNykgV2luZG93cyAyMDAwL1hQOiBVc2VkIHRv
IHBhc3MgVW5pY29kZSBjaGFyYWN0ZXJzIGFzIGlmIHRoZXkgd2VyZSBrZXlzdHJva2VzLiBUaGUg
VktfUEFDS0VUIGtleSBpcyB0aGUgbG93IHdvcmQgb2YgYSAzMi1iaXQgVmlydHVhbCBLZXkgdmFs
dWUgdXNlZCBmb3Igbm9uLWtleWJvYXJkIGlucHV0IG1ldGhvZHMuIEZvciBtb3JlIGluZm9ybWF0
aW9uLCBzZWUgUmVtYXJrIGluIEtFWUJESU5QVVQsU2VuZElucHV0LCBXTV9LRVlET1dOLCBhbmQg
V01fS0VZVVAKLSAgICAgICAgICAgIC8vIFZLX0FUVE4gKEY2KSBBdHRuIGtleQotICAgICAgICAg
ICAgLy8gVktfQ1JTRUwgKEY3KSBDclNlbCBrZXkKLSAgICAgICAgICAgIC8vIFZLX0VYU0VMIChG
OCkgRXhTZWwga2V5Ci0gICAgICAgICAgICAvLyBWS19FUkVPRiAoRjkpIEVyYXNlIEVPRiBrZXkK
LSAgICAgICAgICAgIC8vIFZLX1BMQVkgKEZBKSBQbGF5IGtleQotICAgICAgICAgICAgLy8gVktf
Wk9PTSAoRkIpIFpvb20ga2V5Ci0gICAgICAgICAgICAvLyBWS19OT05BTUUgKEZDKSBSZXNlcnZl
ZCBmb3IgZnV0dXJlIHVzZQotICAgICAgICAgICAgLy8gVktfUEExIChGRCkgUEExIGtleQotICAg
ICAgICAgICAgLy8gVktfT0VNX0NMRUFSIChGRSkgQ2xlYXIga2V5Ci0gICAgICAgIGNhc2UgR0RL
X0YxOgotICAgICAgICBjYXNlIEdES19GMjoKLSAgICAgICAgY2FzZSBHREtfRjM6Ci0gICAgICAg
IGNhc2UgR0RLX0Y0OgotICAgICAgICBjYXNlIEdES19GNToKLSAgICAgICAgY2FzZSBHREtfRjY6
Ci0gICAgICAgIGNhc2UgR0RLX0Y3OgotICAgICAgICBjYXNlIEdES19GODoKLSAgICAgICAgY2Fz
ZSBHREtfRjk6Ci0gICAgICAgIGNhc2UgR0RLX0YxMDoKLSAgICAgICAgY2FzZSBHREtfRjExOgot
ICAgICAgICBjYXNlIEdES19GMTI6Ci0gICAgICAgIGNhc2UgR0RLX0YxMzoKLSAgICAgICAgY2Fz
ZSBHREtfRjE0OgotICAgICAgICBjYXNlIEdES19GMTU6Ci0gICAgICAgIGNhc2UgR0RLX0YxNjoK
LSAgICAgICAgY2FzZSBHREtfRjE3OgotICAgICAgICBjYXNlIEdES19GMTg6Ci0gICAgICAgIGNh
c2UgR0RLX0YxOToKLSAgICAgICAgY2FzZSBHREtfRjIwOgotICAgICAgICBjYXNlIEdES19GMjE6
Ci0gICAgICAgIGNhc2UgR0RLX0YyMjoKLSAgICAgICAgY2FzZSBHREtfRjIzOgotICAgICAgICBj
YXNlIEdES19GMjQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfRjEgKyAoa2V5Y29kZSAtIEdES19G
MSk7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQot
fQotCi1TdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmco
dW5zaWduZWQgdmFsKQotewotICAgIHN3aXRjaCAodmFsKSB7Ci0gICAgICAgIGNhc2UgR0RLX0lT
T19FbnRlcjoKLSAgICAgICAgY2FzZSBHREtfS1BfRW50ZXI6Ci0gICAgICAgIGNhc2UgR0RLX1Jl
dHVybjoKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIlxyIik7Ci0gICAgICAgIGNhc2UgR0RL
X0JhY2tTcGFjZToKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIlx4OCIpOwotICAgICAgICBj
YXNlIEdES19UYWI6Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJcdCIpOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgZ3VuaWNoYXIgYyA9IGdka19rZXl2YWxfdG9fdW5pY29kZSh2
YWwpOwotICAgICAgICAgICAgZ2xvbmcgbndjOwotICAgICAgICAgICAgZ3VuaWNoYXIyKiB1Y2hh
cjE2ID0gZ191Y3M0X3RvX3V0ZjE2KCZjLCAxLCAwLCAmbndjLCAwKTsKLQotICAgICAgICAgICAg
U3RyaW5nIHJldFZhbDsKLSAgICAgICAgICAgIGlmICh1Y2hhcjE2KQotICAgICAgICAgICAgICAg
IHJldFZhbCA9IFN0cmluZygoVUNoYXIqKXVjaGFyMTYsIG53Yyk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmV0VmFsID0gU3RyaW5nKCk7Ci0KLSAgICAgICAgICAgIGdfZnJl
ZSh1Y2hhcjE2KTsKLQotICAgICAgICAgICAgcmV0dXJuIHJldFZhbDsKLSAgICB9Ci19Ci0KLS8v
IEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIG90aGVyIHBsYXRmb3JtIGV2ZW50IGNvbnN0cnVj
dG9ycwotLy8gVE9ETzogbV9nZGtFdmVudEtleSBzaG91bGQgYmUgcmVmY291bnRlZAotUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50
KQotICAgIDogbV90eXBlKChldmVudC0+dHlwZSA9PSBHREtfS0VZX1JFTEVBU0UpID8gS2V5VXAg
OiBLZXlEb3duKQotICAgICwgbV90ZXh0KHNpbmdsZUNoYXJhY3RlclN0cmluZyhldmVudC0+a2V5
dmFsKSkKLSAgICAsIG1fdW5tb2RpZmllZFRleHQoc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV2ZW50
LT5rZXl2YWwpKQotICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JHZGtLZXlD
b2RlKGV2ZW50LT5rZXl2YWwpKQotICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQotICAgICwgbV93
aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKGV2ZW50LT5r
ZXl2YWwpKQotICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShldmVudC0+a2V5dmFsKQotICAg
ICwgbV9pc0tleXBhZChldmVudC0+a2V5dmFsID49IEdES19LUF9TcGFjZSAmJiBldmVudC0+a2V5
dmFsIDw9IEdES19LUF85KQotICAgICwgbV9zaGlmdEtleSgoZXZlbnQtPnN0YXRlICYgR0RLX1NI
SUZUX01BU0spIHx8IChldmVudC0+a2V5dmFsID09IEdES18zMjcwX0JhY2tUYWIpKQotICAgICwg
bV9jdHJsS2V5KGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0spCi0gICAgLCBtX2FsdEtl
eShldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQotICAgICwgbV9tZXRhS2V5KGV2ZW50LT5z
dGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAgLCBtX2dka0V2ZW50S2V5KGV2ZW50KQotewotfQot
Ci12b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5
cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQotewotICAgIC8vIENhbiBv
bmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdl
IGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgotICAgIEFTU0VSVChtX3R5
cGUgPT0gS2V5RG93bik7Ci0gICAgbV90eXBlID0gdHlwZTsKLQotICAgIGlmIChiYWNrd2FyZENv
bXBhdGliaWxpdHlNb2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAodHlwZSA9PSBSYXdL
ZXlEb3duKSB7Ci0gICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwotICAgICAgICBtX3VubW9kaWZp
ZWRUZXh0ID0gU3RyaW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9rZXlJZGVudGlmaWVy
ID0gU3RyaW5nKCk7Ci0gICAgICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gMDsKLSAgICB9
Ci19Ci0KLWJvb2wgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgp
Ci17Ci0gICAgcmV0dXJuIGdka19rZXltYXBfZ2V0X2NhcHNfbG9ja19zdGF0ZShnZGtfa2V5bWFw
X2dldF9kZWZhdWx0KCkpOwotfQotCi12b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3Vy
cmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0cmxLZXksIGJvb2wmIGFs
dEtleSwgYm9vbCYgbWV0YUtleSkKLXsKLSAgICBHZGtNb2RpZmllclR5cGUgc3RhdGU7Ci0gICAg
Z3RrX2dldF9jdXJyZW50X2V2ZW50X3N0YXRlKCZzdGF0ZSk7Ci0KLSAgICBzaGlmdEtleSA9IHN0
YXRlICYgR0RLX1NISUZUX01BU0s7Ci0gICAgY3RybEtleSA9IHN0YXRlICYgR0RLX0NPTlRST0xf
TUFTSzsKLSAgICBhbHRLZXkgPSBzdGF0ZSAmIEdES19NT0QxX01BU0s7Ci0gICAgbWV0YUtleSA9
IHN0YXRlICYgR0RLX01FVEFfTUFTSzsKLX0KLQotR2RrRXZlbnRLZXkqIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6Z2RrRXZlbnRLZXkoKSBjb25zdAotewotICAgIHJldHVybiBtX2dka0V2ZW50S2V5
OwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTW91c2VFdmVudEd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01vdXNlRXZl
bnRHdGsuY3BwCShyZXZpc2lvbiA4MzQxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9Nb3VzZUV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoK
LSogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20K
LSogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBh
cmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCi0qIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0qIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0qIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZl
bnQuaCIKLQotI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKLQotI2luY2x1ZGUgPGdkay9nZGsuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogV291bGQgYmUgZXZlbiBiZXR0ZXIg
dG8gZmlndXJlIG91dCB3aGljaCBtb2RpZmllciBpcyBBbHQgaW5zdGVhZCBvZiBhbHdheXMgdXNp
bmcgR0RLX01PRDFfTUFTSy4KLQotLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgb3RoZXIg
cGxhdGZvcm0gZXZlbnQgY29uc3RydWN0b3JzCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3Jt
TW91c2VFdmVudChHZGtFdmVudEJ1dHRvbiogZXZlbnQpCi17Ci0gICAgbV90aW1lc3RhbXAgPSBl
dmVudC0+dGltZTsKLSAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoKGludClldmVudC0+eCwgKGlu
dClldmVudC0+eSk7Ci0gICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KChpbnQpZXZlbnQt
Pnhfcm9vdCwgKGludClldmVudC0+eV9yb290KTsKLSAgICBtX3NoaWZ0S2V5ID0gZXZlbnQtPnN0
YXRlICYgR0RLX1NISUZUX01BU0s7Ci0gICAgbV9jdHJsS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RL
X0NPTlRST0xfTUFTSzsKLSAgICBtX2FsdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19NT0QxX01B
U0s7Ci0gICAgbV9tZXRhS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX01FVEFfTUFTSzsKLQotICAg
IHN3aXRjaCAoZXZlbnQtPnR5cGUpIHsKLSAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6Ci0gICAg
Y2FzZSBHREtfMkJVVFRPTl9QUkVTUzoKLSAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNTOgotICAg
IGNhc2UgR0RLX0JVVFRPTl9SRUxFQVNFOgotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZl
bnRQcmVzc2VkOwotICAgICAgICBpZiAoZXZlbnQtPnR5cGUgPT0gR0RLX0JVVFRPTl9SRUxFQVNF
KSB7Ci0gICAgICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKLSAgICAg
ICAgICAgIG1fY2xpY2tDb3VudCA9IDA7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUg
PT0gR0RLX0JVVFRPTl9QUkVTUykKLSAgICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDE7Ci0gICAg
ICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlID09IEdES18yQlVUVE9OX1BSRVNTKQotICAgICAgICAg
ICAgbV9jbGlja0NvdW50ID0gMjsKLSAgICAgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUgPT0gR0RL
XzNCVVRUT05fUFJFU1MpCi0gICAgICAgICAgICBtX2NsaWNrQ291bnQgPSAzOwotCi0gICAgICAg
IGlmIChldmVudC0+YnV0dG9uID09IDEpCi0gICAgICAgICAgICBtX2J1dHRvbiA9IExlZnRCdXR0
b247Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50LT5idXR0b24gPT0gMikKLSAgICAgICAgICAgIG1f
YnV0dG9uID0gTWlkZGxlQnV0dG9uOwotICAgICAgICBlbHNlIGlmIChldmVudC0+YnV0dG9uID09
IDMpCi0gICAgICAgICAgICBtX2J1dHRvbiA9IFJpZ2h0QnV0dG9uOwotICAgICAgICBicmVhazsK
LQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH07Ci19
Ci0KLVBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEdka0V2ZW50TW90aW9u
KiBtb3Rpb24pCi17Ci0gICAgbV90aW1lc3RhbXAgPSBtb3Rpb24tPnRpbWU7Ci0gICAgbV9wb3Np
dGlvbiA9IEludFBvaW50KChpbnQpbW90aW9uLT54LCAoaW50KW1vdGlvbi0+eSk7Ci0gICAgbV9n
bG9iYWxQb3NpdGlvbiA9IEludFBvaW50KChpbnQpbW90aW9uLT54X3Jvb3QsIChpbnQpbW90aW9u
LT55X3Jvb3QpOwotICAgIG1fc2hpZnRLZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX1NISUZUX01B
U0s7Ci0gICAgbV9jdHJsS2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0s7Ci0g
ICAgbV9hbHRLZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX01PRDFfTUFTSzsKLSAgICBtX21ldGFL
ZXkgPSBtb3Rpb24tPnN0YXRlICYgR0RLX01PRDJfTUFTSzsKLQotICAgIHN3aXRjaCAobW90aW9u
LT50eXBlKSB7Ci0gICAgY2FzZSBHREtfTU9USU9OX05PVElGWToKLSAgICAgICAgbV9ldmVudFR5
cGUgPSBNb3VzZUV2ZW50TW92ZWQ7Ci0gICAgICAgIG1fYnV0dG9uID0gTm9CdXR0b247Ci0gICAg
ICAgIG1fY2xpY2tDb3VudCA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH07Ci0KLSAgICBpZiAobW90aW9uLT5zdGF0
ZSAmIEdES19CVVRUT04xX01BU0spCi0gICAgICAgIG1fYnV0dG9uID0gTGVmdEJ1dHRvbjsKLSAg
ICBlbHNlIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0JVVFRPTjJfTUFTSykKLSAgICAgICAgbV9i
dXR0b24gPSBNaWRkbGVCdXR0b247Ci0gICAgZWxzZSBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19C
VVRUT04zX01BU0spCi0gICAgICAgIG1fYnV0dG9uID0gUmlnaHRCdXR0b247Ci19Ci19CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXli
b2FyZEV2ZW50R3RrLmNwcAkocmV2aXNpb24gODM0MTYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9LZXlFdmVudEd0ay5jcHA6ODM0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1t
ZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KKyAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorCisj
aW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMu
aCIKKworI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBUaGlzIGlzIGluY29tcGxldGUuICBX
ZSBzaG91bGQgY2hhbmdlIHRoaXMgdG8gbWlycm9yCisvLyBtb3JlIGxpa2Ugd2hhdCBGaXJlZm94
IGRvZXMsIGFuZCBnZW5lcmF0ZSB0aGVzZSBzd2l0Y2ggc3RhdGVtZW50cworLy8gYXQgYnVpbGQg
dGltZS4KK1N0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JHZGtL
ZXlDb2RlKHVuc2lnbmVkIGtleUNvZGUpCit7CisgICAgc3dpdGNoIChrZXlDb2RlKSB7CisgICAg
ICAgIGNhc2UgR0RLX01lbnU6CisgICAgICAgIGNhc2UgR0RLX0FsdF9MOgorICAgICAgICBjYXNl
IEdES19BbHRfUjoKKyAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgY2FzZSBHREtf
Q2xlYXI6CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgY2FzZSBHREtfRG93
bjoKKyAgICAgICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgICAgICAvLyAiRW5kIgorICAg
ICAgICBjYXNlIEdES19FbmQ6CisgICAgICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAgICAg
ICAvLyAiRW50ZXIiCisgICAgICAgIGNhc2UgR0RLX0lTT19FbnRlcjoKKyAgICAgICAgY2FzZSBH
REtfS1BfRW50ZXI6CisgICAgICAgIGNhc2UgR0RLX1JldHVybjoKKyAgICAgICAgICAgIHJldHVy
biAiRW50ZXIiOworICAgICAgICBjYXNlIEdES19FeGVjdXRlOgorICAgICAgICAgICAgcmV0dXJu
ICJFeGVjdXRlIjsKKyAgICAgICAgY2FzZSBHREtfRjE6CisgICAgICAgICAgICByZXR1cm4gIkYx
IjsKKyAgICAgICAgY2FzZSBHREtfRjI6CisgICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAg
ICAgY2FzZSBHREtfRjM6CisgICAgICAgICAgICByZXR1cm4gIkYzIjsKKyAgICAgICAgY2FzZSBH
REtfRjQ6CisgICAgICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgY2FzZSBHREtfRjU6Cisg
ICAgICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgY2FzZSBHREtfRjY6CisgICAgICAgICAg
ICByZXR1cm4gIkY2IjsKKyAgICAgICAgY2FzZSBHREtfRjc6CisgICAgICAgICAgICByZXR1cm4g
IkY3IjsKKyAgICAgICAgY2FzZSBHREtfRjg6CisgICAgICAgICAgICByZXR1cm4gIkY4IjsKKyAg
ICAgICAgY2FzZSBHREtfRjk6CisgICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgY2Fz
ZSBHREtfRjEwOgorICAgICAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICBjYXNlIEdES19G
MTE6CisgICAgICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIGNhc2UgR0RLX0YxMjoKKyAg
ICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgY2FzZSBHREtfRjEzOgorICAgICAgICAg
ICAgcmV0dXJuICJGMTMiOworICAgICAgICBjYXNlIEdES19GMTQ6CisgICAgICAgICAgICByZXR1
cm4gIkYxNCI7CisgICAgICAgIGNhc2UgR0RLX0YxNToKKyAgICAgICAgICAgIHJldHVybiAiRjE1
IjsKKyAgICAgICAgY2FzZSBHREtfRjE2OgorICAgICAgICAgICAgcmV0dXJuICJGMTYiOworICAg
ICAgICBjYXNlIEdES19GMTc6CisgICAgICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAgIGNh
c2UgR0RLX0YxODoKKyAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgY2FzZSBHREtf
RjE5OgorICAgICAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICBjYXNlIEdES19GMjA6Cisg
ICAgICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAgIGNhc2UgR0RLX0YyMToKKyAgICAgICAg
ICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgY2FzZSBHREtfRjIyOgorICAgICAgICAgICAgcmV0
dXJuICJGMjIiOworICAgICAgICBjYXNlIEdES19GMjM6CisgICAgICAgICAgICByZXR1cm4gIkYy
MyI7CisgICAgICAgIGNhc2UgR0RLX0YyNDoKKyAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAg
ICAgICAgY2FzZSBHREtfSGVscDoKKyAgICAgICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAg
IGNhc2UgR0RLX0hvbWU6CisgICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICBjYXNl
IEdES19JbnNlcnQ6CisgICAgICAgICAgICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIGNhc2Ug
R0RLX0xlZnQ6CisgICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICBjYXNlIEdES19Q
YWdlX0Rvd246CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgY2FzZSBH
REtfUGFnZV9VcDoKKyAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgY2FzZSBH
REtfUGF1c2U6CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAgICAgICAgY2FzZSBHREtf
MzI3MF9QcmludFNjcmVlbjoKKyAgICAgICAgY2FzZSBHREtfUHJpbnQ6CisgICAgICAgICAgICBy
ZXR1cm4gIlByaW50U2NyZWVuIjsKKyAgICAgICAgY2FzZSBHREtfUmlnaHQ6CisgICAgICAgICAg
ICByZXR1cm4gIlJpZ2h0IjsKKyAgICAgICAgY2FzZSBHREtfU2VsZWN0OgorICAgICAgICAgICAg
cmV0dXJuICJTZWxlY3QiOworICAgICAgICBjYXNlIEdES19VcDoKKyAgICAgICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUr
MDA3Ri4KKyAgICAgICAgY2FzZSBHREtfRGVsZXRlOgorICAgICAgICAgICAgcmV0dXJuICJVKzAw
N0YiOworICAgICAgICBjYXNlIEdES19CYWNrU3BhY2U6CisgICAgICAgICAgICByZXR1cm4gIlUr
MDAwOCI7CisgICAgICAgIGNhc2UgR0RLX0lTT19MZWZ0X1RhYjoKKyAgICAgICAgY2FzZSBHREtf
MzI3MF9CYWNrVGFiOgorICAgICAgICBjYXNlIEdES19UYWI6CisgICAgICAgICAgICByZXR1cm4g
IlUrMDAwOSI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoIlUrJTA0WCIsIGdka19rZXl2YWxfdG9fdW5pY29kZShnZGtfa2V5dmFsX3RvX3VwcGVy
KGtleUNvZGUpKSk7CisgICAgfQorfQorCitpbnQgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojp3aW5k
b3dzS2V5Q29kZUZvckdka0tleUNvZGUodW5zaWduZWQga2V5Y29kZSkKK3sKKyAgICBzd2l0Y2gg
KGtleWNvZGUpIHsKKyAgICAgICAgY2FzZSBHREtfS1BfMDoKKyAgICAgICAgICAgIHJldHVybiBW
S19OVU1QQUQwOy8vICg2MCkgTnVtZXJpYyBrZXlwYWQgMCBrZXkKKyAgICAgICAgY2FzZSBHREtf
S1BfMToKKyAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQxOy8vICg2MSkgTnVtZXJpYyBrZXlw
YWQgMSBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfMjoKKyAgICAgICAgICAgIHJldHVybiAgVktf
TlVNUEFEMjsgLy8gKDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQorICAgICAgICBjYXNlIEdES19L
UF8zOgorICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDM7IC8vICg2MykgTnVtZXJpYyBrZXlw
YWQgMyBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfNDoKKyAgICAgICAgICAgIHJldHVybiBWS19O
VU1QQUQ0OyAvLyAoNjQpIE51bWVyaWMga2V5cGFkIDQga2V5CisgICAgICAgIGNhc2UgR0RLX0tQ
XzU6CisgICAgICAgICAgICByZXR1cm4gVktfTlVNUEFENTsgLy8oNjUpIE51bWVyaWMga2V5cGFk
IDUga2V5CisgICAgICAgIGNhc2UgR0RLX0tQXzY6CisgICAgICAgICAgICByZXR1cm4gVktfTlVN
UEFENjsgLy8gKDY2KSBOdW1lcmljIGtleXBhZCA2IGtleQorICAgICAgICBjYXNlIEdES19LUF83
OgorICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDc7IC8vICg2NykgTnVtZXJpYyBrZXlwYWQg
NyBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfODoKKyAgICAgICAgICAgIHJldHVybiBWS19OVU1Q
QUQ4OyAvLyAoNjgpIE51bWVyaWMga2V5cGFkIDgga2V5CisgICAgICAgIGNhc2UgR0RLX0tQXzk6
CisgICAgICAgICAgICByZXR1cm4gVktfTlVNUEFEOTsgLy8gKDY5KSBOdW1lcmljIGtleXBhZCA5
IGtleQorICAgICAgICBjYXNlIEdES19LUF9NdWx0aXBseToKKyAgICAgICAgICAgIHJldHVybiBW
S19NVUxUSVBMWTsgLy8gKDZBKSBNdWx0aXBseSBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfQWRk
OgorICAgICAgICAgICAgcmV0dXJuIFZLX0FERDsgLy8gKDZCKSBBZGQga2V5CisgICAgICAgIGNh
c2UgR0RLX0tQX1N1YnRyYWN0OgorICAgICAgICAgICAgcmV0dXJuIFZLX1NVQlRSQUNUOyAvLyAo
NkQpIFN1YnRyYWN0IGtleQorICAgICAgICBjYXNlIEdES19LUF9EZWNpbWFsOgorICAgICAgICAg
ICAgcmV0dXJuIFZLX0RFQ0lNQUw7IC8vICg2RSkgRGVjaW1hbCBrZXkKKyAgICAgICAgY2FzZSBH
REtfS1BfRGl2aWRlOgorICAgICAgICAgICAgcmV0dXJuIFZLX0RJVklERTsgLy8gKDZGKSBEaXZp
ZGUga2V5CisKKyAgICAgICAgY2FzZSBHREtfS1BfUGFnZV9VcDoKKyAgICAgICAgICAgIHJldHVy
biBWS19QUklPUjsgLy8gKDIxKSBQQUdFIFVQIGtleQorICAgICAgICBjYXNlIEdES19LUF9QYWdl
X0Rvd246CisgICAgICAgICAgICByZXR1cm4gVktfTkVYVDsgLy8gKDIyKSBQQUdFIERPV04ga2V5
CisgICAgICAgIGNhc2UgR0RLX0tQX0VuZDoKKyAgICAgICAgICAgIHJldHVybiBWS19FTkQ7IC8v
ICgyMykgRU5EIGtleQorICAgICAgICBjYXNlIEdES19LUF9Ib21lOgorICAgICAgICAgICAgcmV0
dXJuIFZLX0hPTUU7IC8vICgyNCkgSE9NRSBrZXkKKyAgICAgICAgY2FzZSBHREtfS1BfTGVmdDoK
KyAgICAgICAgICAgIHJldHVybiBWS19MRUZUOyAvLyAoMjUpIExFRlQgQVJST1cga2V5CisgICAg
ICAgIGNhc2UgR0RLX0tQX1VwOgorICAgICAgICAgICAgcmV0dXJuIFZLX1VQOyAvLyAoMjYpIFVQ
IEFSUk9XIGtleQorICAgICAgICBjYXNlIEdES19LUF9SaWdodDoKKyAgICAgICAgICAgIHJldHVy
biBWS19SSUdIVDsgLy8gKDI3KSBSSUdIVCBBUlJPVyBrZXkKKyAgICAgICAgY2FzZSBHREtfS1Bf
RG93bjoKKyAgICAgICAgICAgIHJldHVybiBWS19ET1dOOyAvLyAoMjgpIERPV04gQVJST1cga2V5
CisKKyAgICAgICAgY2FzZSBHREtfQmFja1NwYWNlOgorICAgICAgICAgICAgcmV0dXJuIFZLX0JB
Q0s7IC8vICgwOCkgQkFDS1NQQUNFIGtleQorICAgICAgICBjYXNlIEdES19JU09fTGVmdF9UYWI6
CisgICAgICAgIGNhc2UgR0RLXzMyNzBfQmFja1RhYjoKKyAgICAgICAgY2FzZSBHREtfVGFiOgor
ICAgICAgICAgICAgcmV0dXJuIFZLX1RBQjsgLy8gKDA5KSBUQUIga2V5CisgICAgICAgIGNhc2Ug
R0RLX0NsZWFyOgorICAgICAgICAgICAgcmV0dXJuIFZLX0NMRUFSOyAvLyAoMEMpIENMRUFSIGtl
eQorICAgICAgICBjYXNlIEdES19JU09fRW50ZXI6CisgICAgICAgIGNhc2UgR0RLX0tQX0VudGVy
OgorICAgICAgICBjYXNlIEdES19SZXR1cm46CisgICAgICAgICAgICByZXR1cm4gVktfUkVUVVJO
OyAvLygwRCkgUmV0dXJuIGtleQorICAgICAgICBjYXNlIEdES19TaGlmdF9MOgorICAgICAgICBj
YXNlIEdES19TaGlmdF9SOgorICAgICAgICAgICAgcmV0dXJuIFZLX1NISUZUOyAvLyAoMTApIFNI
SUZUIGtleQorICAgICAgICBjYXNlIEdES19Db250cm9sX0w6CisgICAgICAgIGNhc2UgR0RLX0Nv
bnRyb2xfUjoKKyAgICAgICAgICAgIHJldHVybiBWS19DT05UUk9MOyAvLyAoMTEpIENUUkwga2V5
CisgICAgICAgIGNhc2UgR0RLX01lbnU6CisgICAgICAgICAgICByZXR1cm4gVktfQVBQUzsgIC8v
ICg1RCkgQXBwbGljYXRpb25zIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKKyAgICAgICAgY2FzZSBH
REtfQWx0X0w6CisgICAgICAgIGNhc2UgR0RLX0FsdF9SOgorICAgICAgICAgICAgcmV0dXJuIFZL
X01FTlU7IC8vICgxMikgQUxUIGtleQorCisgICAgICAgIGNhc2UgR0RLX1BhdXNlOgorICAgICAg
ICAgICAgcmV0dXJuIFZLX1BBVVNFOyAvLyAoMTMpIFBBVVNFIGtleQorICAgICAgICBjYXNlIEdE
S19DYXBzX0xvY2s6CisgICAgICAgICAgICByZXR1cm4gVktfQ0FQSVRBTDsgLy8gKDE0KSBDQVBT
IExPQ0sga2V5CisgICAgICAgIGNhc2UgR0RLX0thbmFfTG9jazoKKyAgICAgICAgY2FzZSBHREtf
S2FuYV9TaGlmdDoKKyAgICAgICAgICAgIHJldHVybiBWS19LQU5BOyAvLyAoMTUpIElucHV0IE1l
dGhvZCBFZGl0b3IgKElNRSkgS2FuYSBtb2RlCisgICAgICAgIGNhc2UgR0RLX0hhbmd1bDoKKyAg
ICAgICAgICAgIHJldHVybiBWS19IQU5HVUw7IC8vIFZLX0hBTkdVTCAoMTUpIElNRSBIYW5ndWwg
bW9kZQorICAgICAgICAgICAgLy8gVktfSlVOSkEgKDE3KSBJTUUgSnVuamEgbW9kZQorICAgICAg
ICAgICAgLy8gVktfRklOQUwgKDE4KSBJTUUgZmluYWwgbW9kZQorICAgICAgICBjYXNlIEdES19I
YW5ndWxfSGFuamE6CisgICAgICAgICAgICByZXR1cm4gVktfSEFOSkE7IC8vICgxOSkgSU1FIEhh
bmphIG1vZGUKKyAgICAgICAgY2FzZSBHREtfS2Fuamk6CisgICAgICAgICAgICByZXR1cm4gVktf
S0FOSkk7IC8vICgxOSkgSU1FIEthbmppIG1vZGUKKyAgICAgICAgY2FzZSBHREtfRXNjYXBlOgor
ICAgICAgICAgICAgcmV0dXJuIFZLX0VTQ0FQRTsgLy8gKDFCKSBFU0Mga2V5CisgICAgICAgICAg
ICAvLyBWS19DT05WRVJUICgxQykgSU1FIGNvbnZlcnQKKyAgICAgICAgICAgIC8vIFZLX05PTkNP
TlZFUlQgKDFEKSBJTUUgbm9uY29udmVydAorICAgICAgICAgICAgLy8gVktfQUNDRVBUICgxRSkg
SU1FIGFjY2VwdAorICAgICAgICAgICAgLy8gVktfTU9ERUNIQU5HRSAoMUYpIElNRSBtb2RlIGNo
YW5nZSByZXF1ZXN0CisgICAgICAgIGNhc2UgR0RLX3NwYWNlOgorICAgICAgICAgICAgcmV0dXJu
IFZLX1NQQUNFOyAvLyAoMjApIFNQQUNFQkFSCisgICAgICAgIGNhc2UgR0RLX1BhZ2VfVXA6Cisg
ICAgICAgICAgICByZXR1cm4gVktfUFJJT1I7IC8vICgyMSkgUEFHRSBVUCBrZXkKKyAgICAgICAg
Y2FzZSBHREtfUGFnZV9Eb3duOgorICAgICAgICAgICAgcmV0dXJuIFZLX05FWFQ7IC8vICgyMikg
UEFHRSBET1dOIGtleQorICAgICAgICBjYXNlIEdES19FbmQ6CisgICAgICAgICAgICByZXR1cm4g
VktfRU5EOyAvLyAoMjMpIEVORCBrZXkKKyAgICAgICAgY2FzZSBHREtfSG9tZToKKyAgICAgICAg
ICAgIHJldHVybiBWS19IT01FOyAvLyAoMjQpIEhPTUUga2V5CisgICAgICAgIGNhc2UgR0RLX0xl
ZnQ6CisgICAgICAgICAgICByZXR1cm4gVktfTEVGVDsgLy8gKDI1KSBMRUZUIEFSUk9XIGtleQor
ICAgICAgICBjYXNlIEdES19VcDoKKyAgICAgICAgICAgIHJldHVybiBWS19VUDsgLy8gKDI2KSBV
UCBBUlJPVyBrZXkKKyAgICAgICAgY2FzZSBHREtfUmlnaHQ6CisgICAgICAgICAgICByZXR1cm4g
VktfUklHSFQ7IC8vICgyNykgUklHSFQgQVJST1cga2V5CisgICAgICAgIGNhc2UgR0RLX0Rvd246
CisgICAgICAgICAgICByZXR1cm4gVktfRE9XTjsgLy8gKDI4KSBET1dOIEFSUk9XIGtleQorICAg
ICAgICBjYXNlIEdES19TZWxlY3Q6CisgICAgICAgICAgICByZXR1cm4gVktfU0VMRUNUOyAvLyAo
MjkpIFNFTEVDVCBrZXkKKyAgICAgICAgY2FzZSBHREtfUHJpbnQ6CisgICAgICAgICAgICByZXR1
cm4gVktfU05BUFNIT1Q7IC8vICgyQykgUFJJTlQgU0NSRUVOIGtleQorICAgICAgICBjYXNlIEdE
S19FeGVjdXRlOgorICAgICAgICAgICAgcmV0dXJuIFZLX0VYRUNVVEU7Ly8gKDJCKSBFWEVDVVRF
IGtleQorICAgICAgICBjYXNlIEdES19JbnNlcnQ6CisgICAgICAgIGNhc2UgR0RLX0tQX0luc2Vy
dDoKKyAgICAgICAgICAgIHJldHVybiBWS19JTlNFUlQ7IC8vICgyRCkgSU5TIGtleQorICAgICAg
ICBjYXNlIEdES19EZWxldGU6CisgICAgICAgIGNhc2UgR0RLX0tQX0RlbGV0ZToKKyAgICAgICAg
ICAgIHJldHVybiBWS19ERUxFVEU7IC8vICgyRSkgREVMIGtleQorICAgICAgICBjYXNlIEdES19I
ZWxwOgorICAgICAgICAgICAgcmV0dXJuIFZLX0hFTFA7IC8vICgyRikgSEVMUCBrZXkKKyAgICAg
ICAgY2FzZSBHREtfMDoKKyAgICAgICAgY2FzZSBHREtfcGFyZW5yaWdodDoKKyAgICAgICAgICAg
IHJldHVybiBWS18wOyAgICAvLyAgKDMwKSAwKSBrZXkKKyAgICAgICAgY2FzZSBHREtfMToKKyAg
ICAgICAgY2FzZSBHREtfZXhjbGFtOgorICAgICAgICAgICAgcmV0dXJuIFZLXzE7IC8vICAoMzEp
IDEgISBrZXkKKyAgICAgICAgY2FzZSBHREtfMjoKKyAgICAgICAgY2FzZSBHREtfYXQ6CisgICAg
ICAgICAgICByZXR1cm4gVktfMjsgLy8gICgzMikgMiAmIGtleQorICAgICAgICBjYXNlIEdES18z
OgorICAgICAgICBjYXNlIEdES19udW1iZXJzaWduOgorICAgICAgICAgICAgcmV0dXJuIFZLXzM7
IC8vY2FzZSAnMyc6IGNhc2UgJyMnOworICAgICAgICBjYXNlIEdES180OgorICAgICAgICBjYXNl
IEdES19kb2xsYXI6IC8vICAoMzQpIDQga2V5ICckJzsKKyAgICAgICAgICAgIHJldHVybiBWS180
OworICAgICAgICBjYXNlIEdES181OgorICAgICAgICBjYXNlIEdES19wZXJjZW50OgorICAgICAg
ICAgICAgcmV0dXJuIFZLXzU7IC8vICAoMzUpIDUga2V5ICAnJScKKyAgICAgICAgY2FzZSBHREtf
NjoKKyAgICAgICAgY2FzZSBHREtfYXNjaWljaXJjdW06CisgICAgICAgICAgICByZXR1cm4gVktf
NjsgLy8gICgzNikgNiBrZXkgICdeJworICAgICAgICBjYXNlIEdES183OgorICAgICAgICBjYXNl
IEdES19hbXBlcnNhbmQ6CisgICAgICAgICAgICByZXR1cm4gVktfNzsgLy8gICgzNykgNyBrZXkg
IGNhc2UgJyYnCisgICAgICAgIGNhc2UgR0RLXzg6CisgICAgICAgIGNhc2UgR0RLX2FzdGVyaXNr
OgorICAgICAgICAgICAgcmV0dXJuIFZLXzg7IC8vICAoMzgpIDgga2V5ICAnKicKKyAgICAgICAg
Y2FzZSBHREtfOToKKyAgICAgICAgY2FzZSBHREtfcGFyZW5sZWZ0OgorICAgICAgICAgICAgcmV0
dXJuIFZLXzk7IC8vICAoMzkpIDkga2V5ICcoJworICAgICAgICBjYXNlIEdES19hOgorICAgICAg
ICBjYXNlIEdES19BOgorICAgICAgICAgICAgcmV0dXJuIFZLX0E7IC8vICAoNDEpIEEga2V5IGNh
c2UgJ2EnOiBjYXNlICdBJzogcmV0dXJuIDB4NDE7CisgICAgICAgIGNhc2UgR0RLX2I6CisgICAg
ICAgIGNhc2UgR0RLX0I6CisgICAgICAgICAgICByZXR1cm4gVktfQjsgLy8gICg0MikgQiBrZXkg
Y2FzZSAnYic6IGNhc2UgJ0InOiByZXR1cm4gMHg0MjsKKyAgICAgICAgY2FzZSBHREtfYzoKKyAg
ICAgICAgY2FzZSBHREtfQzoKKyAgICAgICAgICAgIHJldHVybiBWS19DOyAvLyAgKDQzKSBDIGtl
eSBjYXNlICdjJzogY2FzZSAnQyc6IHJldHVybiAweDQzOworICAgICAgICBjYXNlIEdES19kOgor
ICAgICAgICBjYXNlIEdES19EOgorICAgICAgICAgICAgcmV0dXJuIFZLX0Q7IC8vICAoNDQpIEQg
a2V5IGNhc2UgJ2QnOiBjYXNlICdEJzogcmV0dXJuIDB4NDQ7CisgICAgICAgIGNhc2UgR0RLX2U6
CisgICAgICAgIGNhc2UgR0RLX0U6CisgICAgICAgICAgICByZXR1cm4gVktfRTsgLy8gICg0NSkg
RSBrZXkgY2FzZSAnZSc6IGNhc2UgJ0UnOiByZXR1cm4gMHg0NTsKKyAgICAgICAgY2FzZSBHREtf
ZjoKKyAgICAgICAgY2FzZSBHREtfRjoKKyAgICAgICAgICAgIHJldHVybiBWS19GOyAvLyAgKDQ2
KSBGIGtleSBjYXNlICdmJzogY2FzZSAnRic6IHJldHVybiAweDQ2OworICAgICAgICBjYXNlIEdE
S19nOgorICAgICAgICBjYXNlIEdES19HOgorICAgICAgICAgICAgcmV0dXJuIFZLX0c7IC8vICAo
NDcpIEcga2V5IGNhc2UgJ2cnOiBjYXNlICdHJzogcmV0dXJuIDB4NDc7CisgICAgICAgIGNhc2Ug
R0RLX2g6CisgICAgICAgIGNhc2UgR0RLX0g6CisgICAgICAgICAgICByZXR1cm4gVktfSDsgLy8g
ICg0OCkgSCBrZXkgY2FzZSAnaCc6IGNhc2UgJ0gnOiByZXR1cm4gMHg0ODsKKyAgICAgICAgY2Fz
ZSBHREtfaToKKyAgICAgICAgY2FzZSBHREtfSToKKyAgICAgICAgICAgIHJldHVybiBWS19JOyAv
LyAgKDQ5KSBJIGtleSBjYXNlICdpJzogY2FzZSAnSSc6IHJldHVybiAweDQ5OworICAgICAgICBj
YXNlIEdES19qOgorICAgICAgICBjYXNlIEdES19KOgorICAgICAgICAgICAgcmV0dXJuIFZLX0o7
IC8vICAoNEEpIEoga2V5IGNhc2UgJ2onOiBjYXNlICdKJzogcmV0dXJuIDB4NEE7CisgICAgICAg
IGNhc2UgR0RLX2s6CisgICAgICAgIGNhc2UgR0RLX0s6CisgICAgICAgICAgICByZXR1cm4gVktf
SzsgLy8gICg0QikgSyBrZXkgY2FzZSAnayc6IGNhc2UgJ0snOiByZXR1cm4gMHg0QjsKKyAgICAg
ICAgY2FzZSBHREtfbDoKKyAgICAgICAgY2FzZSBHREtfTDoKKyAgICAgICAgICAgIHJldHVybiBW
S19MOyAvLyAgKDRDKSBMIGtleSBjYXNlICdsJzogY2FzZSAnTCc6IHJldHVybiAweDRDOworICAg
ICAgICBjYXNlIEdES19tOgorICAgICAgICBjYXNlIEdES19NOgorICAgICAgICAgICAgcmV0dXJu
IFZLX007IC8vICAoNEQpIE0ga2V5IGNhc2UgJ20nOiBjYXNlICdNJzogcmV0dXJuIDB4NEQ7Cisg
ICAgICAgIGNhc2UgR0RLX246CisgICAgICAgIGNhc2UgR0RLX046CisgICAgICAgICAgICByZXR1
cm4gVktfTjsgLy8gICg0RSkgTiBrZXkgY2FzZSAnbic6IGNhc2UgJ04nOiByZXR1cm4gMHg0RTsK
KyAgICAgICAgY2FzZSBHREtfbzoKKyAgICAgICAgY2FzZSBHREtfTzoKKyAgICAgICAgICAgIHJl
dHVybiBWS19POyAvLyAgKDRGKSBPIGtleSBjYXNlICdvJzogY2FzZSAnTyc6IHJldHVybiAweDRG
OworICAgICAgICBjYXNlIEdES19wOgorICAgICAgICBjYXNlIEdES19QOgorICAgICAgICAgICAg
cmV0dXJuIFZLX1A7IC8vICAoNTApIFAga2V5IGNhc2UgJ3AnOiBjYXNlICdQJzogcmV0dXJuIDB4
NTA7CisgICAgICAgIGNhc2UgR0RLX3E6CisgICAgICAgIGNhc2UgR0RLX1E6CisgICAgICAgICAg
ICByZXR1cm4gVktfUTsgLy8gICg1MSkgUSBrZXkgY2FzZSAncSc6IGNhc2UgJ1EnOiByZXR1cm4g
MHg1MTsKKyAgICAgICAgY2FzZSBHREtfcjoKKyAgICAgICAgY2FzZSBHREtfUjoKKyAgICAgICAg
ICAgIHJldHVybiBWS19SOyAvLyAgKDUyKSBSIGtleSBjYXNlICdyJzogY2FzZSAnUic6IHJldHVy
biAweDUyOworICAgICAgICBjYXNlIEdES19zOgorICAgICAgICBjYXNlIEdES19TOgorICAgICAg
ICAgICAgcmV0dXJuIFZLX1M7IC8vICAoNTMpIFMga2V5IGNhc2UgJ3MnOiBjYXNlICdTJzogcmV0
dXJuIDB4NTM7CisgICAgICAgIGNhc2UgR0RLX3Q6CisgICAgICAgIGNhc2UgR0RLX1Q6CisgICAg
ICAgICAgICByZXR1cm4gVktfVDsgLy8gICg1NCkgVCBrZXkgY2FzZSAndCc6IGNhc2UgJ1QnOiBy
ZXR1cm4gMHg1NDsKKyAgICAgICAgY2FzZSBHREtfdToKKyAgICAgICAgY2FzZSBHREtfVToKKyAg
ICAgICAgICAgIHJldHVybiBWS19VOyAvLyAgKDU1KSBVIGtleSBjYXNlICd1JzogY2FzZSAnVSc6
IHJldHVybiAweDU1OworICAgICAgICBjYXNlIEdES192OgorICAgICAgICBjYXNlIEdES19WOgor
ICAgICAgICAgICAgcmV0dXJuIFZLX1Y7IC8vICAoNTYpIFYga2V5IGNhc2UgJ3YnOiBjYXNlICdW
JzogcmV0dXJuIDB4NTY7CisgICAgICAgIGNhc2UgR0RLX3c6CisgICAgICAgIGNhc2UgR0RLX1c6
CisgICAgICAgICAgICByZXR1cm4gVktfVzsgLy8gICg1NykgVyBrZXkgY2FzZSAndyc6IGNhc2Ug
J1cnOiByZXR1cm4gMHg1NzsKKyAgICAgICAgY2FzZSBHREtfeDoKKyAgICAgICAgY2FzZSBHREtf
WDoKKyAgICAgICAgICAgIHJldHVybiBWS19YOyAvLyAgKDU4KSBYIGtleSBjYXNlICd4JzogY2Fz
ZSAnWCc6IHJldHVybiAweDU4OworICAgICAgICBjYXNlIEdES195OgorICAgICAgICBjYXNlIEdE
S19ZOgorICAgICAgICAgICAgcmV0dXJuIFZLX1k7IC8vICAoNTkpIFkga2V5IGNhc2UgJ3knOiBj
YXNlICdZJzogcmV0dXJuIDB4NTk7CisgICAgICAgIGNhc2UgR0RLX3o6CisgICAgICAgIGNhc2Ug
R0RLX1o6CisgICAgICAgICAgICByZXR1cm4gVktfWjsgLy8gICg1QSkgWiBrZXkgY2FzZSAneic6
IGNhc2UgJ1onOiByZXR1cm4gMHg1QTsKKyAgICAgICAgY2FzZSBHREtfTWV0YV9MOgorICAgICAg
ICAgICAgcmV0dXJuIFZLX0xXSU47IC8vICg1QikgTGVmdCBXaW5kb3dzIGtleSAoTWljcm9zb2Z0
IE5hdHVyYWwga2V5Ym9hcmQpCisgICAgICAgIGNhc2UgR0RLX01ldGFfUjoKKyAgICAgICAgICAg
IHJldHVybiBWS19SV0lOOyAvLyAoNUMpIFJpZ2h0IFdpbmRvd3Mga2V5IChOYXR1cmFsIGtleWJv
YXJkKQorICAgICAgICAgICAgLy8gVktfU0xFRVAgKDVGKSBDb21wdXRlciBTbGVlcCBrZXkKKyAg
ICAgICAgICAgIC8vIFZLX1NFUEFSQVRPUiAoNkMpIFNlcGFyYXRvciBrZXkKKyAgICAgICAgICAg
IC8vIFZLX1NVQlRSQUNUICg2RCkgU3VidHJhY3Qga2V5CisgICAgICAgICAgICAvLyBWS19ERUNJ
TUFMICg2RSkgRGVjaW1hbCBrZXkKKyAgICAgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERpdmlk
ZSBrZXkKKyAgICAgICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKKworICAgICAg
ICBjYXNlIEdES19OdW1fTG9jazoKKyAgICAgICAgICAgIHJldHVybiBWS19OVU1MT0NLOyAvLyAo
OTApIE5VTSBMT0NLIGtleQorCisgICAgICAgIGNhc2UgR0RLX1Njcm9sbF9Mb2NrOgorICAgICAg
ICAgICAgcmV0dXJuIFZLX1NDUk9MTDsgLy8gKDkxKSBTQ1JPTEwgTE9DSyBrZXkKKworICAgICAg
ICAgICAgLy8gVktfTFNISUZUIChBMCkgTGVmdCBTSElGVCBrZXkKKyAgICAgICAgICAgIC8vIFZL
X1JTSElGVCAoQTEpIFJpZ2h0IFNISUZUIGtleQorICAgICAgICAgICAgLy8gVktfTENPTlRST0wg
KEEyKSBMZWZ0IENPTlRST0wga2V5CisgICAgICAgICAgICAvLyBWS19SQ09OVFJPTCAoQTMpIFJp
Z2h0IENPTlRST0wga2V5CisgICAgICAgICAgICAvLyBWS19MTUVOVSAoQTQpIExlZnQgTUVOVSBr
ZXkKKyAgICAgICAgICAgIC8vIFZLX1JNRU5VIChBNSkgUmlnaHQgTUVOVSBrZXkKKyAgICAgICAg
ICAgIC8vIFZLX0JST1dTRVJfQkFDSyAoQTYpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBCYWNr
IGtleQorICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9GT1JXQVJEIChBNykgV2luZG93cyAyMDAw
L1hQOiBCcm93c2VyIEZvcndhcmQga2V5CisgICAgICAgICAgICAvLyBWS19CUk9XU0VSX1JFRlJF
U0ggKEE4KSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgUmVmcmVzaCBrZXkKKyAgICAgICAgICAg
IC8vIFZLX0JST1dTRVJfU1RPUCAoQTkpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBTdG9wIGtl
eQorICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9TRUFSQ0ggKEFBKSBXaW5kb3dzIDIwMDAvWFA6
IEJyb3dzZXIgU2VhcmNoIGtleQorICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9GQVZPUklURVMg
KEFCKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgRmF2b3JpdGVzIGtleQorICAgICAgICAgICAg
Ly8gVktfQlJPV1NFUl9IT01FIChBQykgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0YXJ0IGFu
ZCBIb21lIGtleQorICAgICAgICAgICAgLy8gVktfVk9MVU1FX01VVEUgKEFEKSBXaW5kb3dzIDIw
MDAvWFA6IFZvbHVtZSBNdXRlIGtleQorICAgICAgICAgICAgLy8gVktfVk9MVU1FX0RPV04gKEFF
KSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBEb3duIGtleQorICAgICAgICAgICAgLy8gVktfVk9M
VU1FX1VQIChBRikgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgVXAga2V5CisgICAgICAgICAgICAv
LyBWS19NRURJQV9ORVhUX1RSQUNLIChCMCkgV2luZG93cyAyMDAwL1hQOiBOZXh0IFRyYWNrIGtl
eQorICAgICAgICAgICAgLy8gVktfTUVESUFfUFJFVl9UUkFDSyAoQjEpIFdpbmRvd3MgMjAwMC9Y
UDogUHJldmlvdXMgVHJhY2sga2V5CisgICAgICAgICAgICAvLyBWS19NRURJQV9TVE9QIChCMikg
V2luZG93cyAyMDAwL1hQOiBTdG9wIE1lZGlhIGtleQorICAgICAgICAgICAgLy8gVktfTUVESUFf
UExBWV9QQVVTRSAoQjMpIFdpbmRvd3MgMjAwMC9YUDogUGxheS9QYXVzZSBNZWRpYSBrZXkKKyAg
ICAgICAgICAgIC8vIFZLX0xBVU5DSF9NQUlMIChCNCkgV2luZG93cyAyMDAwL1hQOiBTdGFydCBN
YWlsIGtleQorICAgICAgICAgICAgLy8gVktfTEFVTkNIX01FRElBX1NFTEVDVCAoQjUpIFdpbmRv
d3MgMjAwMC9YUDogU2VsZWN0IE1lZGlhIGtleQorICAgICAgICAgICAgLy8gVktfTEFVTkNIX0FQ
UDEgKEI2KSBXaW5kb3dzIDIwMDAvWFA6IFN0YXJ0IEFwcGxpY2F0aW9uIDEga2V5CisgICAgICAg
ICAgICAvLyBWS19MQVVOQ0hfQVBQMiAoQjcpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGlj
YXRpb24gMiBrZXkKKworICAgICAgICAgICAgLy8gVktfT0VNXzEgKEJBKSBVc2VkIGZvciBtaXNj
ZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIw
MDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnOzonIGtleQorICAgICAg
ICBjYXNlIEdES19zZW1pY29sb246CisgICAgICAgIGNhc2UgR0RLX2NvbG9uOgorICAgICAgICAg
ICAgcmV0dXJuIFZLX09FTV8xOyAvL2Nhc2UgJzsnOiBjYXNlICc6JzogcmV0dXJuIDB4QkE7Cisg
ICAgICAgICAgICAvLyBWS19PRU1fUExVUyAoQkIpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBj
b3VudHJ5L3JlZ2lvbiwgdGhlICcrJyBrZXkKKyAgICAgICAgY2FzZSBHREtfcGx1czoKKyAgICAg
ICAgY2FzZSBHREtfZXF1YWw6CisgICAgICAgICAgICByZXR1cm4gVktfT0VNX1BMVVM7IC8vY2Fz
ZSAnPSc6IGNhc2UgJysnOiByZXR1cm4gMHhCQjsKKyAgICAgICAgICAgIC8vIFZLX09FTV9DT01N
QSAoQkMpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcsJyBr
ZXkKKyAgICAgICAgY2FzZSBHREtfY29tbWE6CisgICAgICAgIGNhc2UgR0RLX2xlc3M6CisgICAg
ICAgICAgICByZXR1cm4gVktfT0VNX0NPTU1BOyAvL2Nhc2UgJywnOiBjYXNlICc8JzogcmV0dXJu
IDB4QkM7CisgICAgICAgICAgICAvLyBWS19PRU1fTUlOVVMgKEJEKSBXaW5kb3dzIDIwMDAvWFA6
IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLScga2V5CisgICAgICAgIGNhc2UgR0RLX21p
bnVzOgorICAgICAgICBjYXNlIEdES191bmRlcnNjb3JlOgorICAgICAgICAgICAgcmV0dXJuIFZL
X09FTV9NSU5VUzsgLy9jYXNlICctJzogY2FzZSAnXyc6IHJldHVybiAweEJEOworICAgICAgICAg
ICAgLy8gVktfT0VNX1BFUklPRCAoQkUpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5
L3JlZ2lvbiwgdGhlICcuJyBrZXkKKyAgICAgICAgY2FzZSBHREtfcGVyaW9kOgorICAgICAgICBj
YXNlIEdES19ncmVhdGVyOgorICAgICAgICAgICAgcmV0dXJuIFZLX09FTV9QRVJJT0Q7IC8vY2Fz
ZSAnLic6IGNhc2UgJz4nOiByZXR1cm4gMHhCRTsKKyAgICAgICAgICAgIC8vIFZLX09FTV8yIChC
RikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXli
b2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUg
Jy8/JyBrZXkKKyAgICAgICAgY2FzZSBHREtfc2xhc2g6CisgICAgICAgIGNhc2UgR0RLX3F1ZXN0
aW9uOgorICAgICAgICAgICAgcmV0dXJuIFZLX09FTV8yOyAvL2Nhc2UgJy8nOiBjYXNlICc/Jzog
cmV0dXJuIDB4QkY7CisgICAgICAgICAgICAvLyBWS19PRU1fMyAoQzApIFVzZWQgZm9yIG1pc2Nl
bGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAw
MC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdgficga2V5CisgICAgICAg
IGNhc2UgR0RLX2FzY2lpdGlsZGU6CisgICAgICAgIGNhc2UgR0RLX3F1b3RlbGVmdDoKKyAgICAg
ICAgICAgIHJldHVybiBWS19PRU1fMzsgLy9jYXNlICdgJzogY2FzZSAnfic6IHJldHVybiAweEMw
OworICAgICAgICAgICAgLy8gVktfT0VNXzQgKERCKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNo
YXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0
aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnW3snIGtleQorICAgICAgICBjYXNlIEdES19i
cmFja2V0bGVmdDoKKyAgICAgICAgY2FzZSBHREtfYnJhY2VsZWZ0OgorICAgICAgICAgICAgcmV0
dXJuIFZLX09FTV80OyAvL2Nhc2UgJ1snOiBjYXNlICd7JzogcmV0dXJuIDB4REI7CisgICAgICAg
ICAgICAvLyBWS19PRU1fNSAoREMpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsg
aXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFu
ZGFyZCBrZXlib2FyZCwgdGhlICdcfCcga2V5CisgICAgICAgIGNhc2UgR0RLX2JhY2tzbGFzaDoK
KyAgICAgICAgY2FzZSBHREtfYmFyOgorICAgICAgICAgICAgcmV0dXJuIFZLX09FTV81OyAvL2Nh
c2UgJ1xcJzogY2FzZSAnfCc6IHJldHVybiAweERDOworICAgICAgICAgICAgLy8gVktfT0VNXzYg
KEREKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtl
eWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRo
ZSAnXX0nIGtleQorICAgICAgICBjYXNlIEdES19icmFja2V0cmlnaHQ6CisgICAgICAgIGNhc2Ug
R0RLX2JyYWNlcmlnaHQ6CisgICAgICAgICAgICByZXR1cm4gVktfT0VNXzY7IC8vIGNhc2UgJ10n
OiBjYXNlICd9JzogcmV0dXJuIDB4REQ7CisgICAgICAgICAgICAvLyBWS19PRU1fNyAoREUpIFVz
ZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQu
IFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdzaW5n
bGUtcXVvdGUvZG91YmxlLXF1b3RlJyBrZXkKKyAgICAgICAgY2FzZSBHREtfcXVvdGVyaWdodDoK
KyAgICAgICAgY2FzZSBHREtfcXVvdGVkYmw6CisgICAgICAgICAgICByZXR1cm4gVktfT0VNXzc7
IC8vIGNhc2UgJ1wnJzogY2FzZSAnIic6IHJldHVybiAweERFOworICAgICAgICAgICAgLy8gVktf
T0VNXzggKERGKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5
IGJ5IGtleWJvYXJkLgorICAgICAgICAgICAgLy8gVktfT0VNXzEwMiAoRTIpIFdpbmRvd3MgMjAw
MC9YUDogRWl0aGVyIHRoZSBhbmdsZSBicmFja2V0IGtleSBvciB0aGUgYmFja3NsYXNoIGtleSBv
biB0aGUgUlQgMTAyLWtleSBrZXlib2FyZAorICAgICAgICAgICAgLy8gVktfUFJPQ0VTU0tFWSAo
RTUpIFdpbmRvd3MgOTUvOTgvTWUsIFdpbmRvd3MgTlQgNC4wLCBXaW5kb3dzIDIwMDAvWFA6IElN
RSBQUk9DRVNTIGtleQorICAgICAgICAgICAgLy8gVktfUEFDS0VUIChFNykgV2luZG93cyAyMDAw
L1hQOiBVc2VkIHRvIHBhc3MgVW5pY29kZSBjaGFyYWN0ZXJzIGFzIGlmIHRoZXkgd2VyZSBrZXlz
dHJva2VzLiBUaGUgVktfUEFDS0VUIGtleSBpcyB0aGUgbG93IHdvcmQgb2YgYSAzMi1iaXQgVmly
dHVhbCBLZXkgdmFsdWUgdXNlZCBmb3Igbm9uLWtleWJvYXJkIGlucHV0IG1ldGhvZHMuIEZvciBt
b3JlIGluZm9ybWF0aW9uLCBzZWUgUmVtYXJrIGluIEtFWUJESU5QVVQsU2VuZElucHV0LCBXTV9L
RVlET1dOLCBhbmQgV01fS0VZVVAKKyAgICAgICAgICAgIC8vIFZLX0FUVE4gKEY2KSBBdHRuIGtl
eQorICAgICAgICAgICAgLy8gVktfQ1JTRUwgKEY3KSBDclNlbCBrZXkKKyAgICAgICAgICAgIC8v
IFZLX0VYU0VMIChGOCkgRXhTZWwga2V5CisgICAgICAgICAgICAvLyBWS19FUkVPRiAoRjkpIEVy
YXNlIEVPRiBrZXkKKyAgICAgICAgICAgIC8vIFZLX1BMQVkgKEZBKSBQbGF5IGtleQorICAgICAg
ICAgICAgLy8gVktfWk9PTSAoRkIpIFpvb20ga2V5CisgICAgICAgICAgICAvLyBWS19OT05BTUUg
KEZDKSBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQorICAgICAgICAgICAgLy8gVktfUEExIChGRCkg
UEExIGtleQorICAgICAgICAgICAgLy8gVktfT0VNX0NMRUFSIChGRSkgQ2xlYXIga2V5CisgICAg
ICAgIGNhc2UgR0RLX0YxOgorICAgICAgICBjYXNlIEdES19GMjoKKyAgICAgICAgY2FzZSBHREtf
RjM6CisgICAgICAgIGNhc2UgR0RLX0Y0OgorICAgICAgICBjYXNlIEdES19GNToKKyAgICAgICAg
Y2FzZSBHREtfRjY6CisgICAgICAgIGNhc2UgR0RLX0Y3OgorICAgICAgICBjYXNlIEdES19GODoK
KyAgICAgICAgY2FzZSBHREtfRjk6CisgICAgICAgIGNhc2UgR0RLX0YxMDoKKyAgICAgICAgY2Fz
ZSBHREtfRjExOgorICAgICAgICBjYXNlIEdES19GMTI6CisgICAgICAgIGNhc2UgR0RLX0YxMzoK
KyAgICAgICAgY2FzZSBHREtfRjE0OgorICAgICAgICBjYXNlIEdES19GMTU6CisgICAgICAgIGNh
c2UgR0RLX0YxNjoKKyAgICAgICAgY2FzZSBHREtfRjE3OgorICAgICAgICBjYXNlIEdES19GMTg6
CisgICAgICAgIGNhc2UgR0RLX0YxOToKKyAgICAgICAgY2FzZSBHREtfRjIwOgorICAgICAgICBj
YXNlIEdES19GMjE6CisgICAgICAgIGNhc2UgR0RLX0YyMjoKKyAgICAgICAgY2FzZSBHREtfRjIz
OgorICAgICAgICBjYXNlIEdES19GMjQ6CisgICAgICAgICAgICByZXR1cm4gVktfRjEgKyAoa2V5
Y29kZSAtIEdES19GMSk7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgIH0KKworfQorCitTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5nbGVDaGFy
YWN0ZXJTdHJpbmcodW5zaWduZWQgdmFsKQoreworICAgIHN3aXRjaCAodmFsKSB7CisgICAgICAg
IGNhc2UgR0RLX0lTT19FbnRlcjoKKyAgICAgICAgY2FzZSBHREtfS1BfRW50ZXI6CisgICAgICAg
IGNhc2UgR0RLX1JldHVybjoKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIlxyIik7CisgICAg
ICAgIGNhc2UgR0RLX0JhY2tTcGFjZToKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIlx4OCIp
OworICAgICAgICBjYXNlIEdES19UYWI6CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJcdCIp
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZ3VuaWNoYXIgYyA9IGdka19rZXl2YWxf
dG9fdW5pY29kZSh2YWwpOworICAgICAgICAgICAgZ2xvbmcgbndjOworICAgICAgICAgICAgZ3Vu
aWNoYXIyKiB1Y2hhcjE2ID0gZ191Y3M0X3RvX3V0ZjE2KCZjLCAxLCAwLCAmbndjLCAwKTsKKwor
ICAgICAgICAgICAgU3RyaW5nIHJldFZhbDsKKyAgICAgICAgICAgIGlmICh1Y2hhcjE2KQorICAg
ICAgICAgICAgICAgIHJldFZhbCA9IFN0cmluZygoVUNoYXIqKXVjaGFyMTYsIG53Yyk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0VmFsID0gU3RyaW5nKCk7CisKKyAgICAg
ICAgICAgIGdfZnJlZSh1Y2hhcjE2KTsKKworICAgICAgICAgICAgcmV0dXJuIHJldFZhbDsKKyAg
ICB9Cit9CisKKy8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIG90aGVyIHBsYXRmb3JtIGV2
ZW50IGNvbnN0cnVjdG9ycworLy8gVE9ETzogbV9nZGtFdmVudEtleSBzaG91bGQgYmUgcmVmY291
bnRlZAorUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoR2RrRXZl
bnRLZXkqIGV2ZW50KQorICAgIDogbV90eXBlKChldmVudC0+dHlwZSA9PSBHREtfS0VZX1JFTEVB
U0UpID8gS2V5VXAgOiBLZXlEb3duKQorICAgICwgbV90ZXh0KHNpbmdsZUNoYXJhY3RlclN0cmlu
ZyhldmVudC0+a2V5dmFsKSkKKyAgICAsIG1fdW5tb2RpZmllZFRleHQoc2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKGV2ZW50LT5rZXl2YWwpKQorICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZp
ZXJGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQorICAgICwgbV9hdXRvUmVwZWF0KGZhbHNl
KQorICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JHZGtLZXlD
b2RlKGV2ZW50LT5rZXl2YWwpKQorICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShldmVudC0+
a2V5dmFsKQorICAgICwgbV9pc0tleXBhZChldmVudC0+a2V5dmFsID49IEdES19LUF9TcGFjZSAm
JiBldmVudC0+a2V5dmFsIDw9IEdES19LUF85KQorICAgICwgbV9zaGlmdEtleSgoZXZlbnQtPnN0
YXRlICYgR0RLX1NISUZUX01BU0spIHx8IChldmVudC0+a2V5dmFsID09IEdES18zMjcwX0JhY2tU
YWIpKQorICAgICwgbV9jdHJsS2V5KGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0spCisg
ICAgLCBtX2FsdEtleShldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQorICAgICwgbV9tZXRh
S2V5KGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCisgICAgLCBtX2dka0V2ZW50S2V5KGV2
ZW50KQoreworfQorCit2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5
RG93bkV2ZW50KFR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQorewor
ICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9y
IENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgorICAg
IEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgbV90eXBlID0gdHlwZTsKKworICAgIGlm
IChiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
dHlwZSA9PSBSYXdLZXlEb3duKSB7CisgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOworICAgICAg
ICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9r
ZXlJZGVudGlmaWVyID0gU3RyaW5nKCk7CisgICAgICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2Rl
ID0gMDsKKyAgICB9Cit9CisKK2Jvb2wgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fw
c0xvY2tTdGF0ZSgpCit7CisgICAgcmV0dXJuIGdka19rZXltYXBfZ2V0X2NhcHNfbG9ja19zdGF0
ZShnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCkpOworfQorCit2b2lkIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0cmxL
ZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSkKK3sKKyAgICBHZGtNb2RpZmllclR5cGUg
c3RhdGU7CisgICAgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3N0YXRlKCZzdGF0ZSk7CisKKyAgICBz
aGlmdEtleSA9IHN0YXRlICYgR0RLX1NISUZUX01BU0s7CisgICAgY3RybEtleSA9IHN0YXRlICYg
R0RLX0NPTlRST0xfTUFTSzsKKyAgICBhbHRLZXkgPSBzdGF0ZSAmIEdES19NT0QxX01BU0s7Cisg
ICAgbWV0YUtleSA9IHN0YXRlICYgR0RLX01FVEFfTUFTSzsKK30KKworR2RrRXZlbnRLZXkqIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2RrRXZlbnRLZXkoKSBjb25zdAoreworICAgIHJldHVybiBt
X2dka0V2ZW50S2V5OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAkocmV2aXNpb24gODM0MTYpCShm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Nb3VzZUV2ZW50R3RrLmNwcDo4MzQxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIw
MDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorCisjaW5jbHVkZSAi
QXNzZXJ0aW9ucy5oIgorCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKy8vIEZJWE1FOiBXb3VsZCBiZSBldmVuIGJldHRlciB0byBmaWd1cmUgb3V0IHdoaWNo
IG1vZGlmaWVyIGlzIEFsdCBpbnN0ZWFkIG9mIGFsd2F5cyB1c2luZyBHREtfTU9EMV9NQVNLLgor
CisvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIHRoZSBvdGhlciBwbGF0Zm9ybSBldmVudCBjb25z
dHJ1Y3RvcnMKK1BsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEdka0V2ZW50
QnV0dG9uKiBldmVudCkKK3sKKyAgICBtX3RpbWVzdGFtcCA9IGV2ZW50LT50aW1lOworICAgIG1f
cG9zaXRpb24gPSBJbnRQb2ludCgoaW50KWV2ZW50LT54LCAoaW50KWV2ZW50LT55KTsKKyAgICBt
X2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoKGludClldmVudC0+eF9yb290LCAoaW50KWV2ZW50
LT55X3Jvb3QpOworICAgIG1fc2hpZnRLZXkgPSBldmVudC0+c3RhdGUgJiBHREtfU0hJRlRfTUFT
SzsKKyAgICBtX2N0cmxLZXkgPSBldmVudC0+c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLOworICAg
IG1fYWx0S2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSzsKKyAgICBtX21ldGFLZXkg
PSBldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLOworCisgICAgc3dpdGNoIChldmVudC0+dHlw
ZSkgeworICAgIGNhc2UgR0RLX0JVVFRPTl9QUkVTUzoKKyAgICBjYXNlIEdES18yQlVUVE9OX1BS
RVNTOgorICAgIGNhc2UgR0RLXzNCVVRUT05fUFJFU1M6CisgICAgY2FzZSBHREtfQlVUVE9OX1JF
TEVBU0U6CisgICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAg
IGlmIChldmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1JFTEVBU0UpIHsKKyAgICAgICAgICAgIG1f
ZXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAgbV9jbGlja0NvdW50
ID0gMDsKKyAgICAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1BSRVNT
KQorICAgICAgICAgICAgbV9jbGlja0NvdW50ID0gMTsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQt
PnR5cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MpCisgICAgICAgICAgICBtX2NsaWNrQ291bnQgPSAy
OworICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSA9PSBHREtfM0JVVFRPTl9QUkVTUykKKyAg
ICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDM7CisKKyAgICAgICAgaWYgKGV2ZW50LT5idXR0b24g
PT0gMSkKKyAgICAgICAgICAgIG1fYnV0dG9uID0gTGVmdEJ1dHRvbjsKKyAgICAgICAgZWxzZSBp
ZiAoZXZlbnQtPmJ1dHRvbiA9PSAyKQorICAgICAgICAgICAgbV9idXR0b24gPSBNaWRkbGVCdXR0
b247CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT5idXR0b24gPT0gMykKKyAgICAgICAgICAgIG1f
YnV0dG9uID0gUmlnaHRCdXR0b247CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKK30KKworUGxhdGZvcm1Nb3VzZUV2
ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRNb3Rpb24qIG1vdGlvbikKK3sKKyAgICBt
X3RpbWVzdGFtcCA9IG1vdGlvbi0+dGltZTsKKyAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoKGlu
dCltb3Rpb24tPngsIChpbnQpbW90aW9uLT55KTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50
UG9pbnQoKGludCltb3Rpb24tPnhfcm9vdCwgKGludCltb3Rpb24tPnlfcm9vdCk7CisgICAgbV9z
aGlmdEtleSA9IG1vdGlvbi0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSzsKKyAgICBtX2N0cmxLZXkg
PSBtb3Rpb24tPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSzsKKyAgICBtX2FsdEtleSA9IG1vdGlv
bi0+c3RhdGUgJiBHREtfTU9EMV9NQVNLOworICAgIG1fbWV0YUtleSA9IG1vdGlvbi0+c3RhdGUg
JiBHREtfTU9EMl9NQVNLOworCisgICAgc3dpdGNoIChtb3Rpb24tPnR5cGUpIHsKKyAgICBjYXNl
IEdES19NT1RJT05fTk9USUZZOgorICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3Zl
ZDsKKyAgICAgICAgbV9idXR0b24gPSBOb0J1dHRvbjsKKyAgICAgICAgbV9jbGlja0NvdW50ID0g
MDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfTsKKworICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0JVVFRPTjFfTUFT
SykKKyAgICAgICAgbV9idXR0b24gPSBMZWZ0QnV0dG9uOworICAgIGVsc2UgaWYgKG1vdGlvbi0+
c3RhdGUgJiBHREtfQlVUVE9OMl9NQVNLKQorICAgICAgICBtX2J1dHRvbiA9IE1pZGRsZUJ1dHRv
bjsKKyAgICBlbHNlIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0JVVFRPTjNfTUFTSykKKyAgICAg
ICAgbV9idXR0b24gPSBSaWdodEJ1dHRvbjsKK30KK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCShyZXZpc2lv
biA4MzQxNikJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsu
Y3BwOjgzNDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxF
dmVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29t
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXIuaCIKKwor
I2luY2x1ZGUgPGdkay9nZGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBLZWVwIHRo
aXMgaW4gc3luYyB3aXRoIHRoZSBvdGhlciBwbGF0Zm9ybSBldmVudCBjb25zdHJ1Y3RvcnMKK1Bs
YXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEdka0V2ZW50U2Nyb2xsKiBldmVu
dCkKK3sKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgZGVsdGEgPSAxOworCisgICAgbV9kZWx0YVgg
PSAwOworICAgIG1fZGVsdGFZID0gMDsKKworICAgIC8vIERvY3Mgc2F5IGFuIHVwd2FyZHMgc2Ny
b2xsIChhd2F5IGZyb20gdGhlIHVzZXIpIGhhcyBhIHBvc2l0aXZlIGRlbHRhCisgICAgc3dpdGNo
IChldmVudC0+ZGlyZWN0aW9uKSB7CisgICAgICAgIGNhc2UgR0RLX1NDUk9MTF9VUDoKKyAgICAg
ICAgICAgIG1fZGVsdGFZID0gZGVsdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHREtfU0NST0xMX0RPV046CisgICAgICAgICAgICBtX2RlbHRhWSA9IC1kZWx0YTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdES19TQ1JPTExfTEVGVDoKKyAgICAgICAgICAg
IG1fZGVsdGFYID0gZGVsdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHREtf
U0NST0xMX1JJR0hUOgorICAgICAgICAgICAgbV9kZWx0YVggPSAtZGVsdGE7CisgICAgICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFYOworICAgIG1fd2hl
ZWxUaWNrc1kgPSBtX2RlbHRhWTsKKworICAgIG1fcG9zaXRpb24gPSBJbnRQb2ludChzdGF0aWNf
Y2FzdDxpbnQ+KGV2ZW50LT54KSwgc3RhdGljX2Nhc3Q8aW50PihldmVudC0+eSkpOworICAgIG1f
Z2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT54X3Jvb3Qp
LCBzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT55X3Jvb3QpKTsKKyAgICBtX2dyYW51bGFyaXR5ID0g
U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7CisgICAgbV9pc0FjY2VwdGVkID0gZmFsc2U7CisgICAg
bV9zaGlmdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLOworICAgIG1fY3RybEtl
eSA9IGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0s7CisgICAgbV9hbHRLZXkgPSBldmVu
dC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLOworICAgIG1fbWV0YUtleSA9IGV2ZW50LT5zdGF0ZSAm
IEdES19NRVRBX01BU0s7CisKKyAgICAvLyBGSVhNRTogcmV0cmlldmUgdGhlIHVzZXIgc2V0dGlu
ZyBmb3IgdGhlIG51bWJlciBvZiBsaW5lcyB0byBzY3JvbGwgb24gZWFjaCB3aGVlbCBldmVudAor
ICAgIG1fZGVsdGFYICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1Blckxp
bmVTdGVwKCkpOworICAgIG1fZGVsdGFZICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6
OnBpeGVsc1BlckxpbmVTdGVwKCkpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2hlZWxFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwCShyZXZpc2lvbiA4MzQxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hh
ZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5o
IgotI2luY2x1ZGUgIlNjcm9sbGJhci5oIgotCi0jaW5jbHVkZSA8Z2RrL2dkay5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIG90aGVyIHBs
YXRmb3JtIGV2ZW50IGNvbnN0cnVjdG9ycwotUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdo
ZWVsRXZlbnQoR2RrRXZlbnRTY3JvbGwqIGV2ZW50KQotewotICAgIHN0YXRpYyBjb25zdCBmbG9h
dCBkZWx0YSA9IDE7Ci0KLSAgICBtX2RlbHRhWCA9IDA7Ci0gICAgbV9kZWx0YVkgPSAwOwotCi0g
ICAgLy8gRG9jcyBzYXkgYW4gdXB3YXJkcyBzY3JvbGwgKGF3YXkgZnJvbSB0aGUgdXNlcikgaGFz
IGEgcG9zaXRpdmUgZGVsdGEKLSAgICBzd2l0Y2ggKGV2ZW50LT5kaXJlY3Rpb24pIHsKLSAgICAg
ICAgY2FzZSBHREtfU0NST0xMX1VQOgotICAgICAgICAgICAgbV9kZWx0YVkgPSBkZWx0YTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdES19TQ1JPTExfRE9XTjoKLSAgICAgICAg
ICAgIG1fZGVsdGFZID0gLWRlbHRhOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
R0RLX1NDUk9MTF9MRUZUOgotICAgICAgICAgICAgbV9kZWx0YVggPSBkZWx0YTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdES19TQ1JPTExfUklHSFQ6Ci0gICAgICAgICAgICBt
X2RlbHRhWCA9IC1kZWx0YTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBtX3doZWVs
VGlja3NYID0gbV9kZWx0YVg7Ci0gICAgbV93aGVlbFRpY2tzWSA9IG1fZGVsdGFZOwotCi0gICAg
bV9wb3NpdGlvbiA9IEludFBvaW50KHN0YXRpY19jYXN0PGludD4oZXZlbnQtPngpLCBzdGF0aWNf
Y2FzdDxpbnQ+KGV2ZW50LT55KSk7Ci0gICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KHN0
YXRpY19jYXN0PGludD4oZXZlbnQtPnhfcm9vdCksIHN0YXRpY19jYXN0PGludD4oZXZlbnQtPnlf
cm9vdCkpOwotICAgIG1fZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudDsKLSAg
ICBtX2lzQWNjZXB0ZWQgPSBmYWxzZTsKLSAgICBtX3NoaWZ0S2V5ID0gZXZlbnQtPnN0YXRlICYg
R0RLX1NISUZUX01BU0s7Ci0gICAgbV9jdHJsS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX0NPTlRS
T0xfTUFTSzsKLSAgICBtX2FsdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19NT0QxX01BU0s7Ci0g
ICAgbV9tZXRhS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX01FVEFfTUFTSzsKLQotICAgIC8vIEZJ
WE1FOiByZXRyaWV2ZSB0aGUgdXNlciBzZXR0aW5nIGZvciB0aGUgbnVtYmVyIG9mIGxpbmVzIHRv
IHNjcm9sbCBvbiBlYWNoIHdoZWVsIGV2ZW50Ci0gICAgbV9kZWx0YVggKj0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7Ci0gICAgbV9kZWx0YVkgKj0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7Ci19Ci0K
LX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>