<?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>81353</bug_id>
          
          <creation_ts>2012-03-16 08:10:50 -0700</creation_ts>
          <short_desc>Moves remaining filesystem files to Modules/filesystem/</short_desc>
          <delta_ts>2012-03-16 19:37:49 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>81393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>ericu</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>levin+threading</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580521</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-16 08:10:50 -0700</bug_when>
    <thetext>Moves remaining filesystem files to Modules/filesystem/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580524</commentid>
    <comment_count>1</comment_count>
      <attachid>132286</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-16 08:12:22 -0700</bug_when>
    <thetext>Created attachment 132286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580526</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-16 08:14:03 -0700</bug_when>
    <thetext>*** Bug 81111 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580528</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-16 08:14:15 -0700</bug_when>
    <thetext>*** Bug 81149 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580534</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 08:16:45 -0700</bug_when>
    <thetext>Attachment 132286 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/Modules/filesystem/FileSystemCallbacks.h:68:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/DOMFilePath.cpp:71:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/Modules/filesystem/EntryArray.h:51:  The parameter name &quot;entry&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/AsyncFileWriter.h:45:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/Modules/filesystem/DOMFilePath.h:71:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/Modules/filesystem/FileWriter.cpp:173:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/Modules/filesystem/DOMFileSystemBase.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/Modules/filesystem/DOMFileSystemBase.h:69:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/Modules/filesystem/DOMFileSystemBase.h:70:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/Modules/filesystem/FileEntry.h:57:  The parameter name &quot;fileSystem&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:54:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:55:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:56:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:57:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:58:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/AsyncFileWriterClient.h:42:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 16 in 74 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580824</commentid>
    <comment_count>5</comment_count>
      <attachid>132286</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-16 12:53:52 -0700</bug_when>
    <thetext>Comment on attachment 132286
Patch

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

Looks great.  Thanks.

&gt; Source/WebCore/Modules/filesystem/DOMFilePath.h:41
&gt; +class DOMFilePath {

Should this class have an ENABLE(FILE_SYSTEM) ifdef?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580825</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-16 12:55:58 -0700</bug_when>
    <thetext>Probably. I&apos;ll add it in a separate patch once this goes through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580922</commentid>
    <comment_count>7</comment_count>
      <attachid>132286</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 13:54:14 -0700</bug_when>
    <thetext>Comment on attachment 132286
Patch

Rejecting attachment 132286 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
urce/WebKit/chromium/third_party/skia/third_party/glu --revision 3381 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
41&gt;At revision 3381.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/11964390</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580999</commentid>
    <comment_count>8</comment_count>
      <attachid>132286</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 15:00:29 -0700</bug_when>
    <thetext>Comment on attachment 132286
Patch

Clearing flags on attachment: 132286

Committed r111075: &lt;http://trac.webkit.org/changeset/111075&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581000</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 15:00:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581223</commentid>
    <comment_count>10</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-03-16 19:37:49 -0700</bug_when>
    <thetext>Qt build fix was committed in http://trac.webkit.org/changeset/111106</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132286</attachid>
            <date>2012-03-16 08:12:22 -0700</date>
            <delta_ts>2012-03-16 15:00:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81353-20120316111217.patch</filename>
            <type>text/plain</type>
            <size>545931</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MCBAQAorMjAxMi0wMy0xNiAgTWFyayBQ
aWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZXMgcmVtYWluaW5n
IGZpbGVzeXN0ZW0gZmlsZXMgdG8gTW9kdWxlcy9maWxlc3lzdGVtLworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzNTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFsbCBleGlzdGlu
ZyB0ZXN0cyBwYXNzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5
bmNGaWxlV3JpdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlV3JpdGVyLmguCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0FzeW5jRmlsZVdyaXRl
ckNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVdy
aXRlckNsaWVudC5oLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVBhdGguY3BwLgor
ICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVQYXRoLmguCisgICAgICAgICogTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9E
T01GaWxlU3lzdGVtLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbS5oLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmlk
bDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmlkbC4K
KyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcC4KKyAg
ICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oLgorICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwLgorICAgICAgICAqIE1v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmguCisgICAgICAgICogTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwuCisgICAgICAgICogTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRy
eS5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5
LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5jcHAuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9FbnRyeUFycmF5LmguCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5QXJyYXkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJy
YXkuaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwLgor
ICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmguCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwuCisgICAgICAgICogTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QmFzZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RW50cnlCYXNlLmNwcC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmguCisgICAgICAg
ICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmguCisgICAgICAgICogTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0VudHJ5Q2FsbGJhY2suaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eVN5bmMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5j
cHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5oLgorICAgICAgICAqIE1vZHVsZXMv
ZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0VudHJ5U3luYy5pZGwuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2Fs
bGJhY2suaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FcnJvckNhbGxiYWNr
LmguCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaWRsOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vycm9yQ2FsbGJhY2suaWRsLgorICAgICAg
ICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlQ2FsbGJhY2suaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZUNhbGxiYWNrLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlQ2FsbGJhY2suaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50
cnkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5jcHAu
CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5oLgorICAgICAgICAqIE1vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlRW50cnkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVFbnRyeS5pZGwuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5
bmMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeVN5bmMu
Y3BwLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5U3luYy5oLgorICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnlTeW5jLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrLmguCisgICAgICAgICogTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmguCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVXcml0ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVX
cml0ZXIuY3BwLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oLgorICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVdyaXRlckJhc2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXJCYXNlLmNwcC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdy
aXRlckJhc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVy
QmFzZS5oLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNhbGxi
YWNrLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckJhc2VD
YWxsYmFjay5oLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJh
Y2suaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyQ2FsbGJh
Y2suaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmlk
bDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyQ2FsbGJhY2su
aWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlclN5bmMuY3BwLgorICAg
ICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmguCisgICAgICAgICogTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5pZGwuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lz
dGVtL0xvY2FsRmlsZVN5c3RlbS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvTG9jYWxGaWxlU3lzdGVtLmNwcC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9j
YWxGaWxlU3lzdGVtLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTG9jYWxG
aWxlU3lzdGVtLmguCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL01ldGFkYXRhLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0
YWRhdGFDYWxsYmFjay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL01ldGFk
YXRhQ2FsbGJhY2suaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxs
YmFjay5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGFDYWxs
YmFjay5pZGwuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL1N5bmNDYWxsYmFja0hlbHBl
ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1N5bmNDYWxsYmFja0hlbHBl
ci5oLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9XZWJLaXRGbGFncy5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEZsYWdzLmguCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaC4K
KyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRs
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lz
dGVtLmlkbC4KKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVdyaXRlckNsaWVudC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGZpbGVhcGkvRE9NRmlsZVBhdGguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVh
cGkvRE9NRmlsZVBhdGguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
ZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RE9NRmlsZVN5c3RlbVN5bmMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRE9NRmls
ZVN5c3RlbVN5bmMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1T
eW5jLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5LmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBmaWxlYXBpL0VudHJ5Lmg6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9F
bnRyeS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9FbnRyeUFycmF5LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QXJyYXkuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBmaWxlYXBpL0VudHJ5QXJyYXkuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50
cnlBcnJheVN5bmMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlBcnJheVN5
bmMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QXJyYXlTeW5jLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QmFzZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogZmlsZWFwaS9FbnRyeUJhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5
Q2FsbGJhY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5Q2FsbGJhY2suaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlTeW5jLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBmaWxlYXBpL0VudHJ5U3luYy5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RW50cnlTeW5jLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0Vycm9yQ2FsbGJhY2su
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0Vycm9yQ2FsbGJhY2suaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIGZpbGVhcGkvRmlsZUNhbGxiYWNrLmg6IFJlbW92ZWQuCisgICAgICAgICog
ZmlsZWFwaS9GaWxlQ2FsbGJhY2suaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRmls
ZUVudHJ5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVFbnRyeS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZUVudHJ5LmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBmaWxlYXBpL0ZpbGVFbnRyeVN5bmMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RmlsZUVudHJ5U3luYy5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZUVudHJ5U3lu
Yy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2suaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFjay5pZGw6IFJlbW92
ZWQuCisgICAgICAgICogZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmaWxlYXBpL0ZpbGVXcml0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RmlsZVdyaXRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdyaXRlci5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyQmFzZS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyQmFzZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oOiBSZW1vdmVkLgorICAgICAgICAqIGZp
bGVhcGkvRmlsZVdyaXRlckNhbGxiYWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9G
aWxlV3JpdGVyQ2FsbGJhY2suaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdy
aXRlclN5bmMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdyaXRlclN5bmMu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmaWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxl
YXBpL01ldGFkYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9NZXRhZGF0YS5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmg6IFJlbW92ZWQu
CisgICAgICAgICogZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmaWxlYXBpL1N5bmNDYWxsYmFja0hlbHBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGZp
bGVhcGkvV2ViS2l0RmxhZ3MuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL1dvcmtlckNv
bnRleHRGaWxlU3lzdGVtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL1dvcmtlckNv
bnRleHRGaWxlU3lzdGVtLmg6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9Xb3JrZXJDb250
ZXh0RmlsZVN5c3RlbS5pZGw6IFJlbW92ZWQuCisKIDIwMTItMDMtMTYgIFlvc2hpZnVtaSBJbm91
ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbRm9ybXNdIFRoZSAicHJvZ3Jlc3Mi
IGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBhIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50LgpJbmRleDog
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjM3LDI4ICsxNjM3LDI4IEBAIEVORElG
ICgpCiAKIGlmIChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5jcHAKKyAgICAg
ICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCisgICAgICAgIE1vZHVsZXMv
ZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKKyAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAogICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
V2luZG93RmlsZVN5c3RlbS5jcHAKICAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eUVudHJ5LmNwcAogICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5j
LmNwcAogICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcAogICAg
ICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAKLSAgICAgICAg
ZmlsZWFwaS9ET01GaWxlUGF0aC5jcHAKLSAgICAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cAotICAgICAgICBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAotICAgICAgICBmaWxlYXBp
L0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAotICAgICAgICBmaWxlYXBpL0VudHJ5LmNwcAotICAgICAg
ICBmaWxlYXBpL0VudHJ5QXJyYXkuY3BwCi0gICAgICAgIGZpbGVhcGkvRW50cnlBcnJheVN5bmMu
Y3BwCi0gICAgICAgIGZpbGVhcGkvRW50cnlCYXNlLmNwcAotICAgICAgICBmaWxlYXBpL0VudHJ5
U3luYy5jcHAKLSAgICAgICAgZmlsZWFwaS9GaWxlRW50cnkuY3BwCi0gICAgICAgIGZpbGVhcGkv
RmlsZUVudHJ5U3luYy5jcHAKLSAgICAgICAgZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNw
cAotICAgICAgICBmaWxlYXBpL0ZpbGVXcml0ZXIuY3BwCi0gICAgICAgIGZpbGVhcGkvRmlsZVdy
aXRlckJhc2UuY3BwCi0gICAgICAgIGZpbGVhcGkvRmlsZVdyaXRlclN5bmMuY3BwCi0gICAgICAg
IGZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcAotICAgICAgICBmaWxlYXBpL1dvcmtlckNvbnRl
eHRGaWxlU3lzdGVtLmNwcAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuY3BwCisg
ICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmNwcAorICAgICAgICBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUJhc2UuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuY3Bw
CisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuY3BwCisgICAgICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmNwcAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXIuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5j
cHAKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcAorICAgICAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcAorICAgICAgICBNb2R1bGVz
L2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCiAgICAgICAgIHBsYXRmb3Jt
L0FzeW5jRmlsZVN5c3RlbS5jcHAKICAgICApCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExf
RklMRVMKQEAgLTE2NjcsMjUgKzE2NjcsMjUgQEAgaWYgKEVOQUJMRV9GSUxFX1NZU1RFTSkKICAg
ICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwKICAgICAgICAg
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwKICAgICAgICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCi0gICAgICAgIGZpbGVhcGkvRE9NRmls
ZVN5c3RlbS5pZGwKLSAgICAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwKKyAgICAg
ICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsCisgICAgICAgIE1vZHVsZXMv
ZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGwKICAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJpZXNDYWxsYmFjay5pZGwKLSAgICAgICAgZmlsZWFwaS9FbnRyeS5pZGwKLSAgICAg
ICAgZmlsZWFwaS9FbnRyeVN5bmMuaWRsCi0gICAgICAgIGZpbGVhcGkvRW50cnlBcnJheS5pZGwK
LSAgICAgICAgZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwKLSAgICAgICAgZmlsZWFwaS9FbnRy
eUNhbGxiYWNrLmlkbAotICAgICAgICBmaWxlYXBpL0Vycm9yQ2FsbGJhY2suaWRsCi0gICAgICAg
IGZpbGVhcGkvRmlsZUNhbGxiYWNrLmlkbAotICAgICAgICBmaWxlYXBpL0ZpbGVFbnRyeS5pZGwK
LSAgICAgICAgZmlsZWFwaS9GaWxlRW50cnlTeW5jLmlkbAotICAgICAgICBmaWxlYXBpL0ZpbGVT
eXN0ZW1DYWxsYmFjay5pZGwKLSAgICAgICAgZmlsZWFwaS9GaWxlV3JpdGVyQ2FsbGJhY2suaWRs
Ci0gICAgICAgIGZpbGVhcGkvRmlsZVdyaXRlci5pZGwKLSAgICAgICAgZmlsZWFwaS9GaWxlV3Jp
dGVyU3luYy5pZGwKLSAgICAgICAgZmlsZWFwaS9NZXRhZGF0YS5pZGwKLSAgICAgICAgZmlsZWFw
aS9NZXRhZGF0YUNhbGxiYWNrLmlkbAotICAgICAgICBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxl
U3lzdGVtLmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsCisgICAgICAg
IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsCisgICAgICAgIE1vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUFycmF5LmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJh
eVN5bmMuaWRsCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbAor
ICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5pZGwKKyAgICAgICAgTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVFbnRyeS5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5
bmMuaWRsCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaWRs
CisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaWRsCisgICAg
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlkbAorICAgICAgICBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaWRsCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9N
ZXRhZGF0YS5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2su
aWRsCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5p
ZGwKICAgICApCiBFTkRJRiAoKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDMwIEBAIFZQQVRIID0gXAogIwogCiBCSU5ESU5H
X0lETFMgPSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3Rl
bS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1T
eW5jLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93Rmls
ZVN5c3RlbS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eUVudHJ5LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5
RW50cnlTeW5jLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5UmVhZGVyLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5UmVhZGVyU3luYy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJpZXNDYWxsYmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5p
ZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5pZGwgXAorICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsIFwKKyAgICAkKFdl
YkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMv
ZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvcG9zaXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uaWRsIFwKQEAgLTE5NSwzOCArMjE5
LDE0IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9XZWJLaXRUcmFuc2l0
aW9uRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9XaGVlbEV2ZW50LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9maWxlYXBpL0Jsb2IuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbS5pZGwgXAotICAgICQoV2ViQ29yZSkvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3lu
Yy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVT
eXN0ZW0uaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlF
bnRyeS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5U3luYy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlclN5bmMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
aWVzQ2FsbGJhY2suaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnkuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwgXAotICAgICQoV2ViQ29yZSkvZmls
ZWFwaS9FbnRyeUFycmF5U3luYy5pZGwgXAotICAgICQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyeUNh
bGxiYWNrLmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL0VudHJ5U3luYy5pZGwgXAotICAg
ICQoV2ViQ29yZSkvZmlsZWFwaS9FcnJvckNhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9m
aWxlYXBpL0ZpbGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRmlsZUNhbGxiYWNrLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVFbnRyeS5pZGwgXAotICAgICQoV2ViQ29y
ZSkvZmlsZWFwaS9GaWxlRW50cnlTeW5jLmlkbCBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL0Zp
bGVFcnJvci5pZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9m
aWxlYXBpL0ZpbGVSZWFkZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRmlsZVJlYWRl
clN5bmMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVXcml0ZXIuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL2ZpbGVhcGkvRmlsZVdyaXRlckNhbGxiYWNrLmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxl
YXBpL0ZpbGVXcml0ZXJTeW5jLmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL01ldGFkYXRh
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2ZpbGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbi5pZGwgXAog
ICAgICQoV2ViQ29yZSkvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5pZGwgXAotICAgICQoV2Vi
Q29yZSkvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9ET01Gb3JtRGF0YS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9ET01TZXR0YWJs
ZVRva2VuTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9ET01Ub2tlbkxpc3QuaWRsIFwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDExMTAwMykKKysrIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5KQpAQCAtODYsNiAr
ODYsMzAgQEAgU1RZTEVTSEVFVFNfRU1CRUQgPSBcCiAgICAgJCRQV0QvY3NzL21vYmlsZVRoZW1l
UXQuY3NzCiAKIElETF9CSU5ESU5HUyArPSBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW0uaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmls
ZVN5c3RlbVN5bmMuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93
RmlsZVN5c3RlbS5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlF
bnRyeS5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5
bmMuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlk
bCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRs
IFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmlkbCBcCisg
ICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbCBcCisgICAgJCRQV0QvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnlBcnJheVN5bmMuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlDYWxsYmFjay5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMu
aWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5pZGwgXAor
ICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsIFwKKyAgICAkJFBX
RC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVXcml0ZXIuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRl
ckNhbGxiYWNrLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmlk
bCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaWRsIFwK
KyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0QmxvYkJ1aWxkZXIuaWRsIFwKKyAg
ICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsIFwK
ICAgICAkJFBXRC9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmlkbCBcCiAgICAgJCRQ
V0QvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9wb3NpdGlvbi5pZGwgXAogICAgICQkUFdEL01vZHVs
ZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uaWRsIFwKQEAgLTIxNiwzNyArMjQw
LDEzIEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvZG9tL1dlYktpdFRyYW5zaXRpb25F
dmVudC5pZGwgXAogICAgICQkUFdEL2RvbS9XaGVlbEV2ZW50LmlkbCBcCiAgICAgJCRQV0QvZmls
ZWFwaS9CbG9iLmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0Zp
bGVTeXN0ZW0uaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnkuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5j
LmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwg
XAotICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCBc
Ci0gICAgJCRQV0QvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmlkbCBcCi0gICAgJCRQV0QvZmlsZWFw
aS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAotICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyaWVzQ2FsbGJhY2suaWRsIFwKLSAgICAkJFBXRC9maWxlYXBpL0VudHJ5LmlkbCBcCi0gICAg
JCRQV0QvZmlsZWFwaS9FbnRyeUFycmF5LmlkbCBcCi0gICAgJCRQV0QvZmlsZWFwaS9FbnRyeUFy
cmF5U3luYy5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGwgXAotICAg
ICQkUFdEL2ZpbGVhcGkvRW50cnlTeW5jLmlkbCBcCi0gICAgJCRQV0QvZmlsZWFwaS9FcnJvckNh
bGxiYWNrLmlkbCBcCiAgICAgJCRQV0QvZmlsZWFwaS9GaWxlLmlkbCBcCi0gICAgJCRQV0QvZmls
ZWFwaS9GaWxlQ2FsbGJhY2suaWRsIFwKLSAgICAkJFBXRC9maWxlYXBpL0ZpbGVFbnRyeS5pZGwg
XAotICAgICQkUFdEL2ZpbGVhcGkvRmlsZUVudHJ5U3luYy5pZGwgXAogICAgICQkUFdEL2ZpbGVh
cGkvRmlsZUVycm9yLmlkbCBcCiAgICAgJCRQV0QvZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmlkbCBc
CiAgICAgJCRQV0QvZmlsZWFwaS9GaWxlTGlzdC5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvRmls
ZVJlYWRlci5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsIFwKLSAg
ICAkJFBXRC9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFjay5pZGwgXAotICAgICQkUFdEL2ZpbGVh
cGkvRmlsZVdyaXRlci5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkvRmlsZVdyaXRlckNhbGxiYWNr
LmlkbCBcCiAgICAgJCRQV0QvZmlsZWFwaS9PcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmlk
bCBcCi0gICAgJCRQV0QvZmlsZWFwaS9NZXRhZGF0YS5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkv
TWV0YWRhdGFDYWxsYmFjay5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxk
ZXIuaWRsIFwKLSAgICAkJFBXRC9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbCBc
CiAgICAgJCRQV0QvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmlkbCBcCiAgICAgJCRQV0Qv
aHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9EYXRh
Vmlldy5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
MTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNv
cHkpCkBAIC05NjIsNiArOTYyLDYyIEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29y
ZSkveG1sL1hTTFRQcm9jZXNzb3IuaWRsCiAKIHdlYmNvcmVfc291cmNlcyArPSBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0FzeW5jRmlsZVdyaXRlci5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmggXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmggXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaCBcCisJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMu
aCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIu
aCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5
bmMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVh
ZGVyU3luYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0Nh
bGxiYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnlDYWxsYmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cnlTeW5jLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
U3luYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFj
ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmgg
XAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmggXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmggXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmggXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmggXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmggXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmggXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmggXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmggXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBcCkBAIC0y
MDQxLDQ5ICsyMDk3LDExIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Xcml0aW5nRGlyZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5
bmNGaWxlU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJl
YW0uaCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIuaCBcCi0JU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXJDbGllbnQuaCBcCiAJU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYlVSTC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NV2luZG93RmlsZVN5c3RlbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmggXAotCVNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRE9NRmlsZVBhdGguY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZp
bGVQYXRoLmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAgXAot
CVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVT
eXN0ZW1TeW5jLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3lu
Yy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNr
LmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5LmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5j
cHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9FbnRyeUFycmF5U3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QmFzZS5j
cHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmggXAotCVNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlDYWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vu
dHJ5U3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlTeW5jLmggXAotCVNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRXJyb3JDYWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5jcHAgXAotCVNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVu
dHJ5U3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5U3luYy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFcnJvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVFeGNlcHRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgg
XApAQCAtMjA5OCwzMyArMjExNiwxNSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyU3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxs
YmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBcCiAJU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlVGhyZWFkLmggXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZFRh
c2suaCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcCBcCi0JU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVdyaXRlckJhc2UuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXJC
YXNlLmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckJhc2VDYWxsYmFjay5o
IFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktp
dEZsYWdzLmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcCBc
Ci0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaCBcCi0JU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvTWV0YWRhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9PcGVyYXRpb25Ob3RBbGxv
d2VkRXhjZXB0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9PcGVyYXRpb25Ob3RB
bGxvd2VkRXhjZXB0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCi0JU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRMaXN0LmggXApAQCAtNDg5MCwzMCArNDg5MCwzMCBAQCB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZXRhZGF0YUNhbGxi
YWNrLmgKIAogZG9tX2JpbmRpbmdfaWRscyArPSBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0RPTUZp
bGVTeXN0ZW0uaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaWRs
IFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmlkbCBcCisJ
JChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsIFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCBcCiAJJChXZWJD
b3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmlkbCBcCi0JJChXZWJDb3Jl
KS9maWxlYXBpL0VudHJ5LmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0VudHJ5QXJyYXkuaWRs
IFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaWRsIFwKLQkkKFdlYkNvcmUp
L2ZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGwgXAotCSQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyeVN5
bmMuaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvRXJyb3JDYWxsYmFjay5pZGwgXAotCSQoV2Vi
Q29yZSkvZmlsZWFwaS9GaWxlQ2FsbGJhY2suaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvRmls
ZUVudHJ5LmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVFbnRyeVN5bmMuaWRsIFwKLQkk
KFdlYkNvcmUpL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrLmlkbCBcCi0JJChXZWJDb3JlKS9m
aWxlYXBpL0ZpbGVXcml0ZXIuaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvRmlsZVdyaXRlckNh
bGxiYWNrLmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmlkbCBcCi0J
JChXZWJDb3JlKS9maWxlYXBpL01ldGFkYXRhLmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL01l
dGFkYXRhQ2FsbGJhY2suaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZp
bGVTeXN0ZW0uaWRsCisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsIFwK
KwkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmlkbCBcCisJJChXZWJD
b3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaWRsIFwKKwkkKFdlYkNvcmUp
L01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRXJyb3JDYWxsYmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVDYWxsYmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVF
bnRyeS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMu
aWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2su
aWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlkbCBcCisJ
JChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmlkbCBcCisJ
JChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5pZGwgXAorCSQoV2ViQ29yZSkvTW9k
dWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVs
ZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwKIAogd2ViY29yZWd0a19z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVt
R3RrLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTQwMywxMSArNDAzLDI3IEBAIHY4
IHsKIH0KIAogU09VUkNFUyArPSBcCisgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRo
LmNwcCBcCisgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwIFwKKyAgICBN
b2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwIFwKKyAgICBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwIFwKICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NV2luZG93RmlsZVN5c3RlbS5jcHAgXAogICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeS5jcHAgXAogICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMu
Y3BwIFwKICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCBcCiAgICAg
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIFwKKyAgICBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnkuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJh
eS5jcHAgXAorICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAgXAorICAg
IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnlTeW5jLmNwcCBcCisgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5jcHAg
XAorICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmNwcCBcCisgICAgTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZVdyaXRlckJhc2UuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMu
Y3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcCBcCisgICAg
TW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCiAgICAgY3Nz
L0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIFwKICAgICBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZh
bHVlLmNwcCBcCiAgICAgY3NzL0NTU0JvcmRlckltYWdlLmNwcCBcCkBAIC02NjgsMzIgKzY4NCwx
NiBAQCBTT1VSQ0VTICs9IFwKICAgICBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgXAogICAg
IGZpbGVhcGkvQmxvYi5jcHAgXAogICAgIGZpbGVhcGkvQmxvYlVSTC5jcHAgXAotICAgIGZpbGVh
cGkvRE9NRmlsZVBhdGguY3BwIFwKLSAgICBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIFwKLSAg
ICBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcCBcCi0gICAgZmlsZWFwaS9ET01GaWxlU3lz
dGVtU3luYy5jcHAgXAotICAgIGZpbGVhcGkvRW50cnkuY3BwIFwKLSAgICBmaWxlYXBpL0VudHJ5
QXJyYXkuY3BwIFwKLSAgICBmaWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcCBcCi0gICAgZmlsZWFw
aS9FbnRyeUJhc2UuY3BwIFwKLSAgICBmaWxlYXBpL0VudHJ5U3luYy5jcHAgXAogICAgIGZpbGVh
cGkvRmlsZS5jcHAgXAotICAgIGZpbGVhcGkvRmlsZUVudHJ5LmNwcCBcCi0gICAgZmlsZWFwaS9G
aWxlRW50cnlTeW5jLmNwcCBcCiAgICAgZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmNwcCBcCiAgICAg
ZmlsZWFwaS9GaWxlTGlzdC5jcHAgXAogICAgIGZpbGVhcGkvRmlsZVJlYWRlci5jcHAgXAogICAg
IGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgXAogICAgIGZpbGVhcGkvRmlsZVJlYWRlclN5
bmMuY3BwIFwKICAgICBmaWxlYXBpL0ZpbGVUaHJlYWQuY3BwIFwKLSAgICBmaWxlYXBpL0ZpbGVX
cml0ZXIuY3BwIFwKLSAgICBmaWxlYXBpL0ZpbGVXcml0ZXJCYXNlLmNwcCBcCi0gICAgZmlsZWFw
aS9GaWxlV3JpdGVyU3luYy5jcHAgXAotICAgIGZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcCBc
CiAgICAgZmlsZWFwaS9PcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmNwcCBcCiAgICAgZmls
ZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBcCiAgICAgZmlsZWFwaS9XZWJLaXRCbG9i
QnVpbGRlci5jcHAgXAotICAgIGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwIFwK
ICAgICBoaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgXAogICAgIGhpc3RvcnkvQmFj
a0ZvcndhcmRMaXN0SW1wbC5jcHAgXAogICAgIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIFwKQEAg
LTMwNTUsMzkgKzMwNTUsMzkgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RBVEFfVFJBTlNG
RVJfSQogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMRV9TWVNURU09MSkgewogICAgIEhF
QURFUlMgKz0gXAotICAgICAgICBmaWxlYXBpL0FzeW5jRmlsZVdyaXRlci5oIFwKKyAgICAgICAg
TW9kdWxlcy9maWxlc3lzdGVtL0FzeW5jRmlsZVdyaXRlci5oIFwKKyAgICAgICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVQYXRoLmggXAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
RmlsZVN5c3RlbS5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1C
YXNlLmggXAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaCBc
CiAgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oIFwKICAgICAgICAg
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oIFwKICAgICAgICAgTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oIFwKICAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaCBcCiAgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlSZWFkZXJTeW5jLmggXAogICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmll
c0NhbGxiYWNrLmggXAotICAgICAgICBmaWxlYXBpL0RPTUZpbGVQYXRoLmggXAotICAgICAgICBm
aWxlYXBpL0RPTUZpbGVTeXN0ZW0uaCBcCi0gICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJh
c2UuaCBcCi0gICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaCBcCi0gICAgICAgIGZp
bGVhcGkvRW50cnkuaCBcCi0gICAgICAgIGZpbGVhcGkvRW50cnlBcnJheS5oIFwKLSAgICAgICAg
ZmlsZWFwaS9FbnRyeUFycmF5U3luYy5oIFwKLSAgICAgICAgZmlsZWFwaS9FbnRyeUJhc2UuaCBc
Ci0gICAgICAgIGZpbGVhcGkvRW50cnlDYWxsYmFjay5oIFwKLSAgICAgICAgZmlsZWFwaS9FbnRy
eVN5bmMuaCBcCi0gICAgICAgIGZpbGVhcGkvRXJyb3JDYWxsYmFjay5oIFwKLSAgICAgICAgZmls
ZWFwaS9GaWxlQ2FsbGJhY2suaCBcCi0gICAgICAgIGZpbGVhcGkvRmlsZUVudHJ5LmggXAotICAg
ICAgICBmaWxlYXBpL0ZpbGVFbnRyeVN5bmMuaCBcCi0gICAgICAgIGZpbGVhcGkvRmlsZVN5c3Rl
bUNhbGxiYWNrLmggXAotICAgICAgICBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBcCi0g
ICAgICAgIGZpbGVhcGkvRmlsZVdyaXRlci5oIFwKLSAgICAgICAgZmlsZWFwaS9GaWxlV3JpdGVy
QmFzZS5oIFwKLSAgICAgICAgZmlsZWFwaS9GaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmggXAotICAg
ICAgICBmaWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5oIFwKLSAgICAgICAgZmlsZWFwaS9GaWxl
V3JpdGVyQ2xpZW50LmggXAotICAgICAgICBmaWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmggXAotICAg
ICAgICBmaWxlYXBpL1dlYktpdEZsYWdzLmggXAotICAgICAgICBmaWxlYXBpL0xvY2FsRmlsZVN5
c3RlbS5oIFwKLSAgICAgICAgZmlsZWFwaS9NZXRhZGF0YS5oIFwKLSAgICAgICAgZmlsZWFwaS9N
ZXRhZGF0YUNhbGxiYWNrLmggXAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaCBc
CisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmggXAorICAgICAgICBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaCBcCisgICAgICAgIE1vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUJhc2UuaCBcCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxi
YWNrLmggXAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmggXAorICAgICAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5oIFwKKyAgICAgICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVFbnRyeS5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaCBc
CisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaCBcCisgICAg
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmggXAorICAgICAgICBN
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVXcml0ZXJCYXNlLmggXAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdy
aXRlckJhc2VDYWxsYmFjay5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0
ZXJDYWxsYmFjay5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDbGll
bnQuaCBcCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5oIFwKKyAg
ICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL1dlYktpdEZsYWdzLmggXAorICAgICAgICBNb2R1bGVz
L2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmggXAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0
ZW0vTWV0YWRhdGEuaCBcCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxi
YWNrLmggXAogICAgICAgICBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBcCiAgICAgICAgIHBs
YXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIFwKICAgICAgICAgcGxhdGZvcm0vRmls
ZU1ldGFkYXRhLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDExMTAwMykKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNzI4LDExICs3Mjgs
MzQgQEAKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdUcmFuc2Zvcm1MaXN0UHJvcGVy
dHlUZWFyT2ZmLmgnLAogICAgICAgICBdLAogICAgICAgICAnd2ViY29yZV9iaW5kaW5nc19pZGxf
ZmlsZXMnOiBbCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0u
aWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMu
aWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3Rl
bS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5p
ZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMu
aWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlk
bCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMu
aWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRs
JywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlk
bCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwn
LAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlk
bCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJpZXNDYWxsYmFjay5pZGwn
LAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5pZGwnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmlkbCcsCisgICAgICAgICAgICAnTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnlTeW5jLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVt
L0Vycm9yQ2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZUNhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRy
eS5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmlk
bCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5p
ZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlkbCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5pZGwnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5pZGwnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5pZGwnLAorICAgICAgICAgICAg
J01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAn
TW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVz
L2dhbWVwYWQvR2FtZXBhZExpc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2dhbWVwYWQv
TmF2aWdhdG9yR2FtZXBhZC5pZGwnLApAQCAtOTAxLDM3ICs5MjQsMTQgQEAKICAgICAgICAgICAg
ICdkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1doZWVs
RXZlbnQuaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0Jsb2IuaWRsJywKLSAgICAgICAgICAg
ICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsJywKLSAgICAgICAgICAgICdN
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbCcsCi0gICAgICAgICAgICAn
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwnLAotICAgICAgICAgICAgJ01v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCcsCi0gICAgICAgICAgICAn
ZmlsZWFwaS9ET01GaWxlU3lzdGVtLmlkbCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9ET01GaWxl
U3lzdGVtU3luYy5pZGwnLAotICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVz
Q2FsbGJhY2suaWRsJywKLSAgICAgICAgICAgICdmaWxlYXBpL0VudHJ5LmlkbCcsCi0gICAgICAg
ICAgICAnZmlsZWFwaS9FbnRyeUFycmF5LmlkbCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRy
eUFycmF5U3luYy5pZGwnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGwn
LAotICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cnlTeW5jLmlkbCcsCi0gICAgICAgICAgICAnZmls
ZWFwaS9FcnJvckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9GaWxlLmlkbCcs
Ci0gICAgICAgICAgICAnZmlsZWFwaS9GaWxlQ2FsbGJhY2suaWRsJywKLSAgICAgICAgICAgICdm
aWxlYXBpL0ZpbGVFbnRyeS5pZGwnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZUVudHJ5U3lu
Yy5pZGwnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZUVycm9yLmlkbCcsCiAgICAgICAgICAg
ICAnZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9GaWxl
TGlzdC5pZGwnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwnLAogICAgICAg
ICAgICAgJ2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsJywKLSAgICAgICAgICAgICdmaWxlYXBp
L0ZpbGVTeXN0ZW1DYWxsYmFjay5pZGwnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVdyaXRl
ci5pZGwnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVdyaXRlckNhbGxiYWNrLmlkbCcsCi0g
ICAgICAgICAgICAnZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5pZGwnLAogICAgICAgICAgICAgJ2Zp
bGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbi5pZGwnLAotICAgICAgICAgICAgJ2Zp
bGVhcGkvTWV0YWRhdGEuaWRsJywKLSAgICAgICAgICAgICdmaWxlYXBpL01ldGFkYXRhQ2FsbGJh
Y2suaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbCcsCi0g
ICAgICAgICAgICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvRE9NRm9ybURhdGEuaWRsJywKICAgICAgICAgICAgICdodG1sL0RPTVNldHRh
YmxlVG9rZW5MaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9ET01Ub2tlbkxpc3QuaWRsJywK
QEAgLTEzMDYsNiArMTMwNiwxNCBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdab29tRXZlbnQuaWRs
JywKICAgICAgICAgXSwKICAgICAgICAgJ3dlYmNvcmVfZmlsZXMnOiBbCisgICAgICAgICAgICAn
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5
c3RlbS9ET01GaWxlU3lzdGVtLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW0uaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW1CYXNlLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW1CYXNlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtU3luYy5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtU3luYy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93
RmlsZVN5c3RlbS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5k
b3dGaWxlU3lzdGVtLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeS5jcHAnLApAQCAtMTMxNyw2ICsxMzI1LDQzIEBACiAgICAgICAgICAgICAnTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5oJywKKyAgICAgICAgICAgICdNb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMv
ZmlsZXN5c3RlbS9FbnRyeS5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHAn
LAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oJywKKyAgICAgICAgICAgICdN
b2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QmFzZS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cnlDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlT
eW5jLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oJywK
KyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5oJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmgnLAorICAgICAgICAgICAg
J01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlRW50cnlTeW5jLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVFbnRyeVN5bmMuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0
ZW1DYWxsYmFjay5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3Rl
bUNhbGxiYWNrcy5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lz
dGVtQ2FsbGJhY2tzLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3Jp
dGVyLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaCcs
CisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmNwcCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmgnLAorICAgICAgICAgICAg
J01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwJywKKyAgICAgICAgICAgICdN
b2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmgnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0
ZW0vTWV0YWRhdGFDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0v
U3luY0NhbGxiYWNrSGVscGVyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9X
ZWJLaXRGbGFncy5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29u
dGV4dEZpbGVTeXN0ZW0uY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9nYW1lcGFkL0dh
bWVwYWQuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuY3BwJywKQEAgLTI0NjYsNDMg
KzI1MTEsOCBAQAogICAgICAgICAgICAgJ2ZpbGVhcGkvQmxvYi5oJywKICAgICAgICAgICAgICdm
aWxlYXBpL0Jsb2JVUkwuY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0Jsb2JVUkwuaCcsCi0g
ICAgICAgICAgICAnZmlsZWFwaS9ET01GaWxlUGF0aC5jcHAnLAotICAgICAgICAgICAgJ2ZpbGVh
cGkvRE9NRmlsZVBhdGguaCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgnLAotICAgICAgICAgICAg
J2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RP
TUZpbGVTeXN0ZW1CYXNlLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5
bmMuY3BwJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmgnLAotICAg
ICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAnLAotICAgICAg
ICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oJywKLSAgICAgICAgICAg
ICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcCcsCi0gICAgICAgICAg
ICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oJywKLSAgICAgICAgICAg
ICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCcsCi0gICAgICAgICAgICAn
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oJywKLSAgICAgICAgICAgICdNb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oJywKLSAgICAgICAgICAgICdNb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAnLAotICAgICAgICAgICAgJ01v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgnLAotICAgICAgICAgICAgJ01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaCcsCi0gICAgICAgICAgICAnZmlsZWFw
aS9FbnRyeS5jcHAnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cnkuaCcsCi0gICAgICAgICAg
ICAnZmlsZWFwaS9FbnRyeUFycmF5LmNwcCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeUFy
cmF5LmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwJywKLSAgICAg
ICAgICAgICdmaWxlYXBpL0VudHJ5QXJyYXlTeW5jLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkv
RW50cnlCYXNlLmNwcCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeUJhc2UuaCcsCi0gICAg
ICAgICAgICAnZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkv
RW50cnlTeW5jLmNwcCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeVN5bmMuaCcsCi0gICAg
ICAgICAgICAnZmlsZWFwaS9FcnJvckNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkv
RmlsZS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZS5oJywKLSAgICAgICAgICAgICdm
aWxlYXBpL0ZpbGVDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVFbnRyeS5j
cHAnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZUVudHJ5LmgnLAotICAgICAgICAgICAgJ2Zp
bGVhcGkvRmlsZUVudHJ5U3luYy5jcHAnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZUVudHJ5
U3luYy5oJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVFcnJvci5oJywKICAgICAgICAgICAg
ICdmaWxlYXBpL0ZpbGVFeGNlcHRpb24uY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVF
eGNlcHRpb24uaCcsCkBAIC0yNTE1LDMwICsyNTI1LDExIEBACiAgICAgICAgICAgICAnZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVJl
YWRlclN5bmMuY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmgnLAot
ICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrLmgnLAotICAgICAgICAgICAg
J2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAnLAotICAgICAgICAgICAgJ2ZpbGVhcGkv
RmlsZVN5c3RlbUNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVUaHJlYWQu
Y3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVUaHJlYWQuaCcsCiAgICAgICAgICAgICAn
ZmlsZWFwaS9GaWxlVGhyZWFkVGFzay5oJywKLSAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVXcml0
ZXIuY3BwJywKLSAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVXcml0ZXIuaCcsCi0gICAgICAgICAg
ICAnZmlsZWFwaS9GaWxlV3JpdGVyQmFzZS5jcHAnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRmls
ZVdyaXRlckJhc2UuaCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9GaWxlV3JpdGVyQmFzZUNhbGxi
YWNrLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVdyaXRlckNhbGxiYWNrLmgnLAotICAg
ICAgICAgICAgJ2ZpbGVhcGkvRmlsZVdyaXRlclN5bmMuY3BwJywKLSAgICAgICAgICAgICdmaWxl
YXBpL0ZpbGVXcml0ZXJTeW5jLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvV2ViS2l0RmxhZ3Mu
aCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAnLAot
ICAgICAgICAgICAgJ2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaCcsCi0gICAgICAg
ICAgICAnZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3BwJywKLSAgICAgICAgICAgICdmaWxlYXBp
L0xvY2FsRmlsZVN5c3RlbS5oJywKLSAgICAgICAgICAgICdmaWxlYXBpL01ldGFkYXRhLmgnLAot
ICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5oJywKICAgICAgICAgICAgICdm
aWxlYXBpL09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24uY3BwJywKICAgICAgICAgICAgICdm
aWxlYXBpL09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24uaCcsCi0gICAgICAgICAgICAnZmls
ZWFwaS9TeW5jQ2FsbGJhY2tIZWxwZXIuaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9UaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5LmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3Bw
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5
bmNGaWxlV3JpdGVyLmgJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVXcml0ZXIuaDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQXN5bmNGaWxlV3JpdGVyX2gKKyNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyX2gK
KworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBCbG9iOworCitjbGFzcyBBc3luY0ZpbGVXcml0ZXIgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkFzeW5jRmlsZVdyaXRlcigpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGUobG9uZyBs
b25nIHBvc2l0aW9uLCBCbG9iKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRydW5jYXRl
KGxvbmcgbG9uZyBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHdhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkgLy8gTmVlZGVkIGZv
ciBGaWxlV3JpdGVyU3luYyBvbmx5LgorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
CisKKyNlbmRpZiAvLyBBc3luY0ZpbGVXcml0ZXJfaAorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0FzeW5jRmlsZVdyaXRlckNsaWVudC5o
CShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxl
V3JpdGVyQ2xpZW50Lmg6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0FzeW5jRmlsZVdyaXRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEFzeW5jRmlsZVdyaXRlckNsaWVudF9oCisjZGVmaW5lIEFzeW5jRmlsZVdyaXRl
ckNsaWVudF9oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJGaWxlRXJy
b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBc3luY0ZpbGVXcml0ZXJDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFzeW5jRmlsZVdyaXRlckNsaWVudCgpIHt9CisK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFRydW5jYXRlKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsKEZpbGVFcnJvcjo6RXJyb3JDb2RlKSA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gQXN5bmNG
aWxlV3JpdGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVQYXRoLmNwcAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVQYXRoLmNwcDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgi
CisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciBET01GaWxlUGF0aDo6c2Vw
YXJhdG9yID0gJy8nOworY29uc3QgY2hhciBET01GaWxlUGF0aDo6cm9vdFtdID0gIi8iOworCitT
dHJpbmcgRE9NRmlsZVBhdGg6OmFwcGVuZChjb25zdCBTdHJpbmcmIGJhc2UsIGNvbnN0IFN0cmlu
ZyYgY29tcG9uZW50cykKK3sKKyAgICByZXR1cm4gZW5zdXJlRGlyZWN0b3J5UGF0aChiYXNlKSAr
IGNvbXBvbmVudHM7Cit9CisKK1N0cmluZyBET01GaWxlUGF0aDo6ZW5zdXJlRGlyZWN0b3J5UGF0
aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgaWYgKCFET01GaWxlUGF0aDo6ZW5kc1dpdGhT
ZXBhcmF0b3IocGF0aCkpIHsKKyAgICAgICAgU3RyaW5nIG5ld1BhdGggPSBwYXRoOworICAgICAg
ICBuZXdQYXRoLmFwcGVuZChET01GaWxlUGF0aDo6c2VwYXJhdG9yKTsKKyAgICAgICAgcmV0dXJu
IG5ld1BhdGg7CisgICAgfQorICAgIHJldHVybiBwYXRoOworfQorCitTdHJpbmcgRE9NRmlsZVBh
dGg6OmdldE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGludCBpbmRleCA9IHBhdGgu
cmV2ZXJzZUZpbmQoRE9NRmlsZVBhdGg6OnNlcGFyYXRvcik7CisgICAgaWYgKGluZGV4ICE9IC0x
KQorICAgICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoaW5kZXggKyAxKTsKKyAgICByZXR1cm4g
cGF0aDsKK30KKworU3RyaW5nIERPTUZpbGVQYXRoOjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGludCBpbmRleCA9IHBhdGgucmV2ZXJzZUZpbmQoRE9NRmlsZVBhdGg6
OnNlcGFyYXRvcik7CisgICAgaWYgKGluZGV4ID09IDApCisgICAgICAgIHJldHVybiBET01GaWxl
UGF0aDo6cm9vdDsKKyAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgIHJldHVybiBwYXRoLnN1
YnN0cmluZygwLCBpbmRleCk7CisgICAgcmV0dXJuICIuIjsKK30KKworYm9vbCBET01GaWxlUGF0
aDo6aXNQYXJlbnRPZihjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiBtYXlCZUNo
aWxkKQoreworICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXJlbnQpKTsKKyAg
ICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUobWF5QmVDaGlsZCkpOworICAgIGlmIChw
YXJlbnQgPT0gRE9NRmlsZVBhdGg6OnJvb3QgJiYgbWF5QmVDaGlsZCAhPSBET01GaWxlUGF0aDo6
cm9vdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHBhcmVudC5sZW5ndGgoKSA+PSBt
YXlCZUNoaWxkLmxlbmd0aCgpIHx8ICFtYXlCZUNoaWxkLnN0YXJ0c1dpdGgocGFyZW50LCBmYWxz
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobWF5QmVDaGlsZFtwYXJlbnQubGVu
Z3RoKCldICE9IERPTUZpbGVQYXRoOjpzZXBhcmF0b3IpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBh
cmVudFJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEFTU0VSVChET01GaWxl
UGF0aDo6aXNBYnNvbHV0ZShwYXRoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gY29tcG9uZW50czsK
KyAgICBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVkOworICAgIHBhdGguc3BsaXQoRE9NRmls
ZVBhdGg6OnNlcGFyYXRvciwgY29tcG9uZW50cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb21wb25lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjb21wb25lbnRzW2ldID09
ICIuIikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoY29tcG9uZW50c1tpXSA9
PSAiLi4iKSB7CisgICAgICAgICAgICBpZiAoY2Fub25pY2FsaXplZC5zaXplKCkgPiAwKQorICAg
ICAgICAgICAgICAgIGNhbm9uaWNhbGl6ZWQucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgY2Fub25pY2FsaXplZC5hcHBlbmQoY29tcG9uZW50
c1tpXSk7CisgICAgfQorICAgIGlmIChjYW5vbmljYWxpemVkLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIERPTUZpbGVQYXRoOjpyb290OworICAgIFN0cmluZyByZXN1bHQ7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjYW5vbmljYWxpemVkLnNpemUoKTsgKytpKSB7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQoRE9NRmlsZVBhdGg6OnNlcGFyYXRvcik7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoY2Fub25pY2FsaXplZFtpXSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jv
b2wgRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBp
ZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aCA9PSBET01GaWxlUGF0aDo6cm9vdCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyBFbWJlZGRlZCBOVUxzIGFyZSBub3QgYWxsb3dlZC4KKyAg
ICBpZiAocGF0aC5maW5kKHN0YXRpY19jYXN0PFVDaGFyPigwKSkgIT0gV1RGOjpub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gV2hpbGUgbm90IFt5ZXRdIHJlc3RyaWN0
ZWQgYnkgdGhlIHNwZWMsICdcXCcgY29tcGxpY2F0ZXMgaW1wbGVtZW50YXRpb24gZm9yIENocm9t
aXVtLgorICAgIGlmIChwYXRoLmZpbmQoJ1xcJykgIT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgb24gZnVs
bHktZXZhbHVhdGVkIGFic29sdXRlIHBhdGhzLiBBbnkgc2lnbiBvZiAiLi4iIG9yICIuIiBpcyBs
aWtlbHkgYW4gYXR0ZW1wdCB0byBicmVhayBvdXQgb2YgdGhlIHNhbmRib3guCisgICAgVmVjdG9y
PFN0cmluZz4gY29tcG9uZW50czsKKyAgICBwYXRoLnNwbGl0KERPTUZpbGVQYXRoOjpzZXBhcmF0
b3IsIGNvbXBvbmVudHMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tcG9uZW50cy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAoY29tcG9uZW50c1tpXSA9PSAiLiIpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChjb21wb25lbnRzW2ldID09ICIuLiIpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIERPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyAnLycgaXMg
bm90IGFsbG93ZWQgaW4gbmFtZS4KKyAgICBpZiAobmFtZS5jb250YWlucygnLycpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzVmFsaWRQYXRoKG5hbWUpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguaAko
cmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVQYXRo
Lmg6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQ
YXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NRmlsZVBhdGhf
aAorI2RlZmluZSBET01GaWxlUGF0aF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBET01GaWxlU3lzdGVtIHBhdGggdXRpbGl0aWVz
LiBBbGwgbWV0aG9kcyBpbiB0aGlzIGNsYXNzIGFyZSBzdGF0aWMuCitjbGFzcyBET01GaWxlUGF0
aCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IGNoYXIgc2VwYXJhdG9yOworICAgIHN0YXRp
YyBjb25zdCBjaGFyIHJvb3RbXTsKKworICAgIC8vIFJldHVybnMgdGhlIG5hbWUgcGFydCBmcm9t
IHRoZSBnaXZlbiBwYXRoLgorICAgIHN0YXRpYyBTdHJpbmcgZ2V0TmFtZShjb25zdCBTdHJpbmcm
IHBhdGgpOworCisgICAgLy8gUmV0dXJucyB0aGUgcGFyZW50IGRpcmVjdG9yeSBwYXRoIG9mIHRo
ZSBnaXZlbiBwYXRoLgorICAgIHN0YXRpYyBTdHJpbmcgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CisKKyAgICAvLyBDaGVja3MgaWYgYSBnaXZlbiBwYXRoIGlzIGEgcGFyZW50IG9m
IG1heUJlQ2hpbGQuIFRoaXMgbWV0aG9kIGFzc3VtZXMgZ2l2ZW4gcGF0aHMgYXJlIGFic29sdXRl
IGFuZCBkbyBub3QgaGF2ZSBleHRyYSByZWZlcmVuY2VzIHRvIGEgcGFyZW50IChpLmUuICIuLi8i
KS4KKyAgICBzdGF0aWMgYm9vbCBpc1BhcmVudE9mKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBtYXlCZUNoaWxkKTsKKworICAgIC8vIEFwcGVuZHMgdGhlIHNlcGFyYXRvciBhdCB0
aGUgZW5kIG9mIHRoZSBwYXRoIGlmIGl0J3Mgbm90IHRoZXJlIGFscmVhZHkuCisgICAgc3RhdGlj
IFN0cmluZyBlbnN1cmVEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CisKKyAgICAv
LyBSZXR1cm5zIGEgbmV3IHBhdGggYnkgYXBwZW5kaW5nIGEgc2VwYXJhdG9yIGFuZCB0aGUgc3Vw
cGxpZWQgcGF0aCBjb21wb25lbnQgdG8gdGhlIHBhdGguCisgICAgc3RhdGljIFN0cmluZyBhcHBl
bmQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CisKKyAgICBz
dGF0aWMgYm9vbCBpc0Fic29sdXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICB7CisgICAgICAg
IHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoRE9NRmlsZVBhdGg6OnJvb3QpOworICAgIH0KKworICAg
IHN0YXRpYyBib29sIGVuZHNXaXRoU2VwYXJhdG9yKGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICB7
CisgICAgICAgIHJldHVybiBwYXRoW3BhdGgubGVuZ3RoKCkgLSAxXSA9PSBET01GaWxlUGF0aDo6
c2VwYXJhdG9yOworICAgIH0KKworICAgIC8vIEV2YWx1YXRlcyBhbGwgIi4uLyIgYW5kICIuLyIg
c2VnbWVudHMuICBOb3RlIHRoYXQgIi8uLi8iIGV4cGFuZHMgdG8gIi8iLCBzbyB5b3UgY2FuJ3Qg
ZXZlciByZWZlciB0byBhbnl0aGluZyBhYm92ZSB0aGUgcm9vdCBkaXJlY3RvcnkuCisgICAgc3Rh
dGljIFN0cmluZyByZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwYXRo
KTsKKworICAgIC8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gcGF0aCBmb2xsb3dzIHRoZSBGaWxlU3lz
dGVtIEFQSSBuYW1pbmcgcmVzdHJpY3Rpb25zLgorICAgIHN0YXRpYyBib29sIGlzVmFsaWRQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCk7CisKKyAgICAvLyBDaGVja3MgaWYgdGhlIGdpdmVuIG5hbWUg
Zm9sbG93cyB0aGUgRmlsZVN5c3RlbSBBUEkgbmFtaW5nIHJlc3RyaWN0aW9ucy4KKyAgICBzdGF0
aWMgYm9vbCBpc1ZhbGlkTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOworCitwcml2YXRlOgorICAg
IERPTUZpbGVQYXRoKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBET01GaWxlUGF0aF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHA6MTExMDAzKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUZp
bGVTeXN0ZW0uaCIKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkFzeW5j
RmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCisjaW5jbHVkZSAiRGlyZWN0
b3J5RW50cnkuaCIKKyNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZS5o
IgorI2luY2x1ZGUgIkZpbGVDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgorI2lu
Y2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIK
KyNpbmNsdWRlICJGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiRmlsZVdyaXRlckJhc2VDYWxsYmFj
ay5oIgorI2luY2x1ZGUgIkZpbGVXcml0ZXJDYWxsYmFjay5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBzdGF0aWMKK1Bhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK3sKKyAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5
c3RlbShhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVT
eXN0ZW0pKSk7CisgICAgZmlsZVN5c3RlbS0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbShmaWxlU3lzdGVtLmdldCgpKTsK
KyAgICByZXR1cm4gZmlsZVN5c3RlbS5yZWxlYXNlKCk7Cit9CisKK0RPTUZpbGVTeXN0ZW06OkRP
TUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorICAg
IDogRE9NRmlsZVN5c3RlbUJhc2UoY29udGV4dCwgbmFtZSwgYXN5bmNGaWxlU3lzdGVtKQorICAg
ICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCit7Cit9CisKK1Bhc3NSZWZQdHI8RGly
ZWN0b3J5RW50cnk+IERPTUZpbGVTeXN0ZW06OnJvb3QoKQoreworICAgIHJldHVybiBEaXJlY3Rv
cnlFbnRyeTo6Y3JlYXRlKHRoaXMsIERPTUZpbGVQYXRoOjpyb290KTsKK30KKwordm9pZCBET01G
aWxlU3lzdGVtOjpzdG9wKCkKK3sKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+c3RvcCgpOworfQor
Citib29sIERPTUZpbGVTeXN0ZW06Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fYXN5bmNGaWxlU3lzdGVtLT5oYXNQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwordm9p
ZCBET01GaWxlU3lzdGVtOjpjb250ZXh0RGVzdHJveWVkKCkKK3sKKyAgICBtX2FzeW5jRmlsZVN5
c3RlbS0+c3RvcCgpOworICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwor
fQorCituYW1lc3BhY2UgeworCitjbGFzcyBDb252ZXJ0VG9GaWxlV3JpdGVyQ2FsbGJhY2sgOiBw
dWJsaWMgRmlsZVdyaXRlckJhc2VDYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q29udmVydFRvRmlsZVdyaXRlckNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxGaWxl
V3JpdGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDb252ZXJ0VG9GaWxlV3JpdGVyQ2FsbGJhY2soY2FsbGJhY2spKTsKKyAgICB9CisKKyAg
ICBib29sIGhhbmRsZUV2ZW50KEZpbGVXcml0ZXJCYXNlKiBmaWxlV3JpdGVyQmFzZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChzdGF0aWNfY2FzdDxGaWxl
V3JpdGVyKj4oZmlsZVdyaXRlckJhc2UpKTsKKyAgICB9Citwcml2YXRlOgorICAgIENvbnZlcnRU
b0ZpbGVXcml0ZXJDYWxsYmFjayhQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gY2FsbGJh
Y2spCisgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICB7CisgICAgfQorICAgIFJl
ZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IG1fY2FsbGJhY2s7Cit9OworCit9CisKK3ZvaWQgRE9N
RmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNz
UmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGZpbGVFbnRyeSk7CisK
KyAgICBSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdyaXRlciA9IEZpbGVXcml0ZXI6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIFJlZlB0cjxGaWxlV3JpdGVyQmFzZUNhbGxi
YWNrPiBjb252ZXJzaW9uQ2FsbGJhY2sgPSBDb252ZXJ0VG9GaWxlV3JpdGVyQ2FsbGJhY2s6OmNy
ZWF0ZShzdWNjZXNzQ2FsbGJhY2spOworICAgIE93blB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNr
cz4gY2FsbGJhY2tzID0gRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6OmNyZWF0ZShmaWxlV3JpdGVy
LCBjb252ZXJzaW9uQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAgIG1fYXN5bmNGaWxlU3lz
dGVtLT5jcmVhdGVXcml0ZXIoZmlsZVdyaXRlci5nZXQoKSwgZmlsZUVudHJ5LT5mdWxsUGF0aCgp
LCBjYWxsYmFja3MucmVsZWFzZSgpKTsKK30KKworbmFtZXNwYWNlIHsKKworY2xhc3MgR2V0UGF0
aENhbGxiYWNrIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxHZXRQYXRoQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxG
aWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRQYXRo
Q2FsbGJhY2soZmlsZXN5c3RlbSwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShjb25zdCBGaWxl
TWV0YWRhdGEmIG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtZXRhZGF0YS5wbGF0
Zm9ybVBhdGguaXNFbXB0eSgpKTsKKyAgICAgICAgbV9maWxlc3lzdGVtLT5zY2hlZHVsZUNhbGxi
YWNrKG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZTo6Y3JlYXRlV2l0aE5hbWUobWV0
YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2V0
UGF0aENhbGxiYWNrKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCAgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgICAgICA6IEZpbGVT
eXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCisgICAgICAgICwgbV9maWxlc3lzdGVt
KGZpbGVzeXN0ZW0pCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV9zdWNjZXNz
Q2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8RE9N
RmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOworICAgIFN0cmluZyBtX25hbWU7CisgICAgUmVmUHRy
PEZpbGVDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZQor
Cit2b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50
cnksIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSwg
R2V0UGF0aENhbGxiYWNrOjpjcmVhdGUodGhpcywgZmlsZUVudHJ5LT5uYW1lKCksIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgJKHJldmlzaW9uIDExMTAwMykJ
KGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmg6MTExMDAzKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NRmlsZVN5c3RlbV9oCisjZGVmaW5l
IERPTUZpbGVTeXN0ZW1faAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRGlyZWN0b3J5RW50cnk7CitjbGFzcyBGaWxlOworY2xhc3MgRmlsZUNhbGxiYWNrOwor
Y2xhc3MgRmlsZUVudHJ5OworY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNrOworCitjbGFzcyBET01G
aWxlU3lzdGVtIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKworICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJv
b3QoKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdCBtZXRob2RzLgorICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCk7CisgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisKKyAgICB2b2lkIGNyZWF0ZVdy
aXRlcihjb25zdCBGaWxlRW50cnkqLCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4sIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgY3JlYXRlRmlsZShjb25zdCBGaWxl
RW50cnkqLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4pOworCisgICAgLy8gU2NoZWR1bGUgYSBjYWxsYmFjay4gVGhpcyBzaG91bGQgbm90IGNyb3Nz
IHRocmVhZHMgKHNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgY29udGV4dCB0aHJlYWQpLgor
ICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBtb3JlIGdlbmVyaWMgcGxhY2UuCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KKyAgICBzdGF0aWMgdm9pZCBzY2hl
ZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPENCPiwgUGFz
c1JlZlB0cjxDQkFyZz4pOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBD
QkFyZz4KKyAgICB2b2lkIHNjaGVkdWxlQ2FsbGJhY2soUGFzc1JlZlB0cjxDQj4gY2FsbGJhY2ss
IFBhc3NSZWZQdHI8Q0JBcmc+IGNhbGxiYWNrQXJnKQorICAgIHsKKyAgICAgICAgc2NoZWR1bGVD
YWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNhbGxiYWNrLCBjYWxsYmFja0FyZyk7
CisgICAgfQorCitwcml2YXRlOgorICAgIERPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsK
KworICAgIC8vIEEgaGVscGVyIHRlbXBsYXRlIHRvIHNjaGVkdWxlIGEgY2FsbGJhY2sgdGFzay4K
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgorICAgIGNsYXNzIERp
c3BhdGNoQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sg
eworICAgIHB1YmxpYzoKKyAgICAgICAgRGlzcGF0Y2hDYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxD
Qj4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8Q0JBcmc+IGFyZykKKyAgICAgICAgICAgIDogbV9jYWxs
YmFjayhjYWxsYmFjaykKKyAgICAgICAgICAgICwgbV9jYWxsYmFja0FyZyhhcmcpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikKKyAgICAgICAgeworICAgICAgICAgICAgbV9jYWxsYmFjay0+aGFu
ZGxlRXZlbnQobV9jYWxsYmFja0FyZy5nZXQoKSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIFJlZlB0cjxDQj4gbV9jYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPENCQXJnPiBt
X2NhbGxiYWNrQXJnOworICAgIH07Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5cGVu
YW1lIENCQXJnPgordm9pZCBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8Q0I+IGNh
bGxiYWNrLCBQYXNzUmVmUHRyPENCQXJnPiBhcmcpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBpZiAoY2FsbGJhY2spCisgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGFkb3B0UHRyKG5ldyBEaXNwYXRj
aENhbGxiYWNrVGFzazxDQiwgQ0JBcmc+KGNhbGxiYWNrLCBhcmcpKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBET01G
aWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbS5pZGwJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmlkbDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29u
ZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICAgICAg
SlNOb1N0YXRpY1RhYmxlcworICAgIF0gRE9NRmlsZVN5c3RlbSB7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERp
cmVjdG9yeUVudHJ5IHJvb3Q7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAkocmV2aXNp
b24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNl
LmNwcDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmls
ZVN5c3RlbUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCisKKyNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJET01GaWxlUGF0aC5oIgorI2luY2x1ZGUgIkRpcmVj
dG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyQmFzZS5oIgorI2luY2x1ZGUg
IkVudHJpZXNDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKKyNpbmNsdWRlICJF
bnRyeUJhc2UuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JD
YWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitET01GaWxlU3lzdGVt
QmFzZTo6RE9NRmlsZVN5c3RlbUJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxl
U3lzdGVtKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX25hbWUobmFtZSkKKyAg
ICAsIG1fYXN5bmNGaWxlU3lzdGVtKGFzeW5jRmlsZVN5c3RlbSkKK3sKK30KKworRE9NRmlsZVN5
c3RlbUJhc2U6On5ET01GaWxlU3lzdGVtQmFzZSgpCit7Cit9CisKK1NlY3VyaXR5T3JpZ2luKiBE
T01GaWxlU3lzdGVtQmFzZTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7Cit9CisKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6
OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRhdGFD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCit7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShlbnRyeS0+
ZnVsbFBhdGgoKSwgTWV0YWRhdGFDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgdmVyaWZ5
QW5kR2V0RGVzdGluYXRpb25QYXRoRm9yQ29weU9yTW92ZShjb25zdCBFbnRyeUJhc2UqIHNvdXJj
ZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgU3RyaW5nJiBkZXN0
aW5hdGlvblBhdGgpCit7CisgICAgQVNTRVJUKHNvdXJjZSk7CisKKyAgICBpZiAoIXBhcmVudCB8
fCAhcGFyZW50LT5pc0RpcmVjdG9yeSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIW5ld05hbWUuaXNFbXB0eSgpICYmICFET01GaWxlUGF0aDo6aXNWYWxpZE5hbWUobmV3TmFt
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIHRy
eSB0byBjb3B5IG9yIG1vdmUgYW4gZW50cnkgaW5zaWRlIGl0c2VsZiBhdCBhbnkgZGVwdGggaWYg
aXQgaXMgYSBkaXJlY3RvcnkuCisgICAgaWYgKHNvdXJjZS0+aXNEaXJlY3RvcnkoKSAmJiBET01G
aWxlUGF0aDo6aXNQYXJlbnRPZihzb3VyY2UtPmZ1bGxQYXRoKCksIHBhcmVudC0+ZnVsbFBhdGgo
KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIGNv
cHkgb3IgbW92ZSBhbiBlbnRyeSBpbnRvIGl0cyBwYXJlbnQgaWYgYSBuYW1lIGRpZmZlcmVudCBm
cm9tIGl0cyBjdXJyZW50IG9uZSBpc24ndCBwcm92aWRlZC4KKyAgICBpZiAoKG5ld05hbWUuaXNF
bXB0eSgpIHx8IHNvdXJjZS0+bmFtZSgpID09IG5ld05hbWUpICYmIERPTUZpbGVQYXRoOjpnZXRE
aXJlY3Rvcnkoc291cmNlLT5mdWxsUGF0aCgpKSA9PSBwYXJlbnQtPmZ1bGxQYXRoKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGRlc3RpbmF0aW9uUGF0aCA9IHBhcmVudC0+ZnVsbFBh
dGgoKTsKKyAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpKQorICAgICAgICBkZXN0aW5hdGlvblBh
dGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RpbmF0aW9uUGF0aCwgbmV3TmFtZSk7CisgICAg
ZWxzZQorICAgICAgICBkZXN0aW5hdGlvblBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3Rp
bmF0aW9uUGF0aCwgc291cmNlLT5uYW1lKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBib29sIHBhdGhUb0Fic29sdXRlUGF0aChBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwg
Y29uc3QgRW50cnlCYXNlKiBiYXNlLCBTdHJpbmcgcGF0aCwgU3RyaW5nJiBhYnNvbHV0ZVBhdGgp
Cit7CisgICAgQVNTRVJUKGJhc2UpOworCisgICAgaWYgKCFET01GaWxlUGF0aDo6aXNBYnNvbHV0
ZShwYXRoKSkKKyAgICAgICAgcGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBh
dGgoKSwgcGF0aCk7CisgICAgYWJzb2x1dGVQYXRoID0gRE9NRmlsZVBhdGg6OnJlbW92ZUV4dHJh
UGFyZW50UmVmZXJlbmNlcyhwYXRoKTsKKworICAgIGlmICgodHlwZSA9PSBBc3luY0ZpbGVTeXN0
ZW06OlRlbXBvcmFyeSB8fCB0eXBlID09IEFzeW5jRmlsZVN5c3RlbTo6UGVyc2lzdGVudCkgJiYg
IURPTUZpbGVQYXRoOjppc1ZhbGlkUGF0aChhYnNvbHV0ZVBhdGgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6Om1v
dmUoY29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJp
bmcmIG5ld05hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgU3RyaW5nIGRl
c3RpbmF0aW9uUGF0aDsKKyAgICBpZiAoIXZlcmlmeUFuZEdldERlc3RpbmF0aW9uUGF0aEZvckNv
cHlPck1vdmUoc291cmNlLCBwYXJlbnQsIG5ld05hbWUsIGRlc3RpbmF0aW9uUGF0aCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5tb3ZlKHNvdXJjZS0+
ZnVsbFBhdGgoKSwgZGVzdGluYXRpb25QYXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgZGVzdGluYXRpb25QYXRoLCBzb3VyY2Ut
PmlzRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lz
dGVtQmFzZTo6Y29weShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAg
ICBTdHJpbmcgZGVzdGluYXRpb25QYXRoOworICAgIGlmICghdmVyaWZ5QW5kR2V0RGVzdGluYXRp
b25QYXRoRm9yQ29weU9yTW92ZShzb3VyY2UsIHBhcmVudCwgbmV3TmFtZSwgZGVzdGluYXRpb25Q
YXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNv
cHkoc291cmNlLT5mdWxsUGF0aCgpLCBkZXN0aW5hdGlvblBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpj
cmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0aW5hdGlvblBh
dGgsIHNvdXJjZS0+aXNEaXJlY3RvcnkoKSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IERPTUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmUoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7CisgICAgLy8gV2UgZG9u
J3QgYWxsb3cgY2FsbGluZyByZW1vdmUoKSBvbiB0aGUgcm9vdCBkaXJlY3RvcnkuCisgICAgaWYg
KGVudHJ5LT5mdWxsUGF0aCgpID09IFN0cmluZyhET01GaWxlUGF0aDo6cm9vdCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVtb3ZlKGVudHJ5LT5mdWxs
UGF0aCgpLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OnJl
bW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKK3sKKyAgICBBU1NFUlQoZW50cnkgJiYgZW50cnktPmlzRGlyZWN0b3J5KCkpOwor
ICAgIC8vIFdlIGRvbid0IGFsbG93IGNhbGxpbmcgcmVtb3ZlKCkgb24gdGhlIHJvb3QgZGlyZWN0
b3J5LgorICAgIGlmIChlbnRyeS0+ZnVsbFBhdGgoKSA9PSBTdHJpbmcoRE9NRmlsZVBhdGg6OnJv
b3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlbW92
ZVJlY3Vyc2l2ZWx5KGVudHJ5LT5mdWxsUGF0aCgpLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldFBhcmVudChjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7CisgICAgU3Ry
aW5nIHBhdGggPSBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVudHJ5LT5mdWxsUGF0aCgpKTsK
KworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMocGF0aCwgRW50cnlDYWxs
YmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIHBhdGgs
IHRydWUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6
Z2V0RmlsZShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NS
ZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorewor
ICAgIFN0cmluZyBhYnNvbHV0ZVBhdGg7CisgICAgaWYgKCFwYXRoVG9BYnNvbHV0ZVBhdGgobV9h
c3luY0ZpbGVTeXN0ZW0tPnR5cGUoKSwgZW50cnksIHBhdGgsIGFic29sdXRlUGF0aCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHRoaXMsIGFic29sdXRlUGF0aCwgZmFsc2UpOworICAgIGlmIChmbGFncyAmJiBmbGFncy0+aXND
cmVhdGUoKSkKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUoYWJzb2x1dGVQ
YXRoLCBmbGFncy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAgZWxz
ZQorICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhhYnNvbHV0ZVBhdGgsIGNh
bGxiYWNrcy5yZWxlYXNlKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERPTUZpbGVT
eXN0ZW1CYXNlOjpnZXREaXJlY3RvcnkoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKK3sKKyAgICBTdHJpbmcgYWJzb2x1dGVQYXRoOworICAgIGlmICghcGF0aFRv
QWJzb2x1dGVQYXRoKG1fYXN5bmNGaWxlU3lzdGVtLT50eXBlKCksIGVudHJ5LCBwYXRoLCBhYnNv
bHV0ZVBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBPd25QdHI8RW50cnlDYWxs
YmFja3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIHRydWUpOworICAgIGlmIChmbGFn
cyAmJiBmbGFncy0+aXNDcmVhdGUoKSkKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0
ZURpcmVjdG9yeShhYnNvbHV0ZVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3Mu
cmVsZWFzZSgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3Rv
cnlFeGlzdHMoYWJzb2x1dGVQYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6cmVhZERpcmVjdG9yeShQYXNzUmVm
UHRyPERpcmVjdG9yeVJlYWRlckJhc2U+IHJlYWRlciwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNz
UmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fi
c29sdXRlKHBhdGgpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwYXRo
LCBFbnRyaWVzQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
LCByZWFkZXIsIHBhdGgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgJ
KHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lz
dGVtQmFzZS5oOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
T01GaWxlU3lzdGVtQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IERPTUZpbGVTeXN0ZW1CYXNlX2gKKyNkZWZpbmUgRE9NRmlsZVN5c3RlbUJhc2VfaAorCisjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5j
bHVkZSAiV2ViS2l0RmxhZ3MuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXJlY3RvcnlFbnRyeTsKK2NsYXNzIERpcmVjdG9y
eVJlYWRlckJhc2U7CitjbGFzcyBFbnRyaWVzQ2FsbGJhY2s7CitjbGFzcyBFbnRyeUJhc2U7Citj
bGFzcyBFbnRyeUNhbGxiYWNrOworY2xhc3MgRXJyb3JDYWxsYmFjazsKK2NsYXNzIEtVUkw7Citj
bGFzcyBNZXRhZGF0YUNhbGxiYWNrOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2Ns
YXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgVm9pZENhbGxiYWNrOworCisvLyBBIGNvbW1vbiBi
YXNlIGNsYXNzIGZvciBET01GaWxlU3lzdGVtIGFuZCBET01GaWxlU3lzdGVtU3luYy4KK2NsYXNz
IERPTUZpbGVTeXN0ZW1CYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NRmlsZVN5c3RlbUJhc2U+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbUJhc2UoY29udGV4dCwgbmFtZSwg
YXN5bmNGaWxlU3lzdGVtKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkRPTUZpbGVTeXN0ZW1CYXNl
KCk7CisKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
KyAgICBBc3luY0ZpbGVTeXN0ZW0qIGFzeW5jRmlsZVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXN5bmNGaWxlU3lzdGVtLmdldCgpOyB9CisgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3Q7CisKKyAgICAvLyBBY3R1YWwgRmlsZVN5c3RlbSBBUEkgaW1wbGVtZW50YXRp
b25zLiAgQWxsIHRoZSB2YWxpZGl0eSBjaGVja3Mgb24gdmlydHVhbCBwYXRocyBhcmUgZG9uZSBh
dCB0aGlzIGxldmVsLgorICAgIC8vIFRoZXkgcmV0dXJuIGZhbHNlIGZvciBpbW1lZGlhdGUgZXJy
b3JzIHRoYXQgZG9uJ3QgaW52b2x2ZSBsb3dlciBBc3luY0ZpbGVTeXN0ZW0gbGF5ZXIgKGUuZy4g
Zm9yIG5hbWUgdmFsaWRhdGlvbiBlcnJvcnMpLiAgT3RoZXJ3aXNlIHRoZXkgcmV0dXJuIHRydWUg
KGJ1dCBsYXRlciBtYXkgY2FsbCBiYWNrIHdpdGggYW4gcnVudGltZSBlcnJvcikuCisgICAgYm9v
bCBnZXRNZXRhZGF0YShjb25zdCBFbnRyeUJhc2UqLCBQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29sIG1vdmUoY29uc3QgRW50
cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAg
IGJvb2wgY29weShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPik7CisgICAgYm9vbCByZW1vdmUoY29uc3QgRW50cnlCYXNlKiwgUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29s
IHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEVudHJ5QmFzZSosIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBnZXRQYXJlbnQoY29u
c3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPik7CisgICAgYm9vbCBnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSosIGNvbnN0IFN0
cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIGJvb2wgZ2V0RGlyZWN0b3J5
KGNvbnN0IEVudHJ5QmFzZSosIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRG
bGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4pOworICAgIGJvb2wgcmVhZERpcmVjdG9yeShQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJh
c2U+LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisKK3Byb3RlY3RlZDoKKyAgICBET01GaWxlU3lzdGVt
QmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbT4pOworICAgIGZyaWVuZCBjbGFzcyBET01GaWxlU3lzdGVtU3lu
YzsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAgICBTdHJpbmcg
bV9uYW1lOworICAgIG11dGFibGUgT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gbV9hc3luY0ZpbGVT
eXN0ZW07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBET01GaWxlU3lzdGVtQmFzZV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVt
U3luYy5jcHAJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9E
T01GaWxlU3lzdGVtU3luYy5jcHA6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5o
IgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVt
LmgiCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiRE9NRmlsZVBhdGgu
aCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKKyNpbmNsdWRlICJFcnJvckNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKKyNp
bmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCisjaW5jbHVk
ZSAiRmlsZU1ldGFkYXRhLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgorI2lu
Y2x1ZGUgIkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlV3JpdGVyU3lu
Yy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZpbGVXcml0ZXJCYXNlOworCitQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlKERP
TUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RE9NRmlsZVN5c3RlbVN5bmMoZmlsZVN5c3RlbS0+bV9jb250ZXh0LCBmaWxlU3lzdGVtLT5tX25h
bWUsIGZpbGVTeXN0ZW0tPm1fYXN5bmNGaWxlU3lzdGVtLnJlbGVhc2UoKSkpOworfQorCitET01G
aWxlU3lzdGVtU3luYzo6RE9NRmlsZVN5c3RlbVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4g
YXN5bmNGaWxlU3lzdGVtKQorICAgIDogRE9NRmlsZVN5c3RlbUJhc2UoY29udGV4dCwgbmFtZSwg
YXN5bmNGaWxlU3lzdGVtKQoreworfQorCitET01GaWxlU3lzdGVtU3luYzo6fkRPTUZpbGVTeXN0
ZW1TeW5jKCkKK3sKK30KKworUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERPTUZpbGVT
eXN0ZW1TeW5jOjpyb290KCkKK3sKKyAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVh
dGUodGhpcywgRE9NRmlsZVBhdGg6OnJvb3QpOworfQorCituYW1lc3BhY2UgeworCitjbGFzcyBD
cmVhdGVGaWxlSGVscGVyIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7CitwdWJs
aWM6CisgICAgY2xhc3MgQ3JlYXRlRmlsZVJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPENyZWF0
ZUZpbGVSZXN1bHQ+IHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q3JlYXRlRmlsZVJlc3VsdD4gY3JlYXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDcmVhdGVGaWxlUmVzdWx0KCkpOworICAgICAgICB9CisKKyAgICAgICAg
Ym9vbCBtX2ZhaWxlZDsKKyAgICAgICAgaW50IG1fY29kZTsKKyAgICAgICAgUmVmUHRyPEZpbGU+
IG1fZmlsZTsKKworICAgICAgcHJpdmF0ZToKKyAgICAgICAgQ3JlYXRlRmlsZVJlc3VsdCgpCisg
ICAgICAgICAgICA6IG1fZmFpbGVkKGZhbHNlKQorICAgICAgICAgICAgLCBtX2NvZGUoMCkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgfkNyZWF0ZUZpbGVSZXN1bHQoKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxDcmVh
dGVGaWxlUmVzdWx0PjsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q3JlYXRlRmls
ZUhlbHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25z
dCBTdHJpbmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyZWF0
ZUZpbGVIZWxwZXIocmVzdWx0LCBuYW1lKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoaW50IGNvZGUpCisgICAgeworICAgICAgICBtX3Jlc3VsdC0+bV9mYWlsZWQgPSB0cnVl
OworICAgICAgICBtX3Jlc3VsdC0+bV9jb2RlID0gY29kZTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5DcmVhdGVGaWxlSGVscGVyKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBkaWRSZWFkTWV0
YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIG1fcmVz
dWx0LT5tX2ZpbGUgPSBGaWxlOjpjcmVhdGVXaXRoTmFtZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgs
IG1fbmFtZSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBDcmVhdGVGaWxlSGVscGVyKFBhc3NSZWZQ
dHI8Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAg
IDogbV9yZXN1bHQocmVzdWx0KQorICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgIHsKKyAgICB9
CisKKyAgICBSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gbV9yZXN1bHQ7CisgICAgU3RyaW5nIG1f
bmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlCisKK1Bhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5
c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgUmVmUHRyPENyZWF0ZUZpbGVIZWxw
ZXI6OkNyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdChDcmVhdGVGaWxlSGVscGVyOjpDcmVhdGVGaWxl
UmVzdWx0OjpjcmVhdGUoKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90
RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlRW50cnktPmZ1bGxQYXRoKCksIENyZWF0ZUZpbGVIZWxw
ZXI6OmNyZWF0ZShyZXN1bHQsIGZpbGVFbnRyeS0+bmFtZSgpKSk7CisgICAgaWYgKCFtX2FzeW5j
RmlsZVN5c3RlbS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgeworICAgICAgICBlYyA9
IEZpbGVFeGNlcHRpb246OkFCT1JUX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IGlmIChyZXN1bHQtPm1fZmFpbGVkKSB7CisgICAgICAgIGVjID0gcmVzdWx0LT5tX2NvZGU7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0LT5tX2ZpbGU7Cit9CisK
K25hbWVzcGFjZSB7CisKK2NsYXNzIFJlY2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2sgOiBwdWJsaWMg
RmlsZVdyaXRlckJhc2VDYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVjZWl2ZUZpbGVXcml0ZXJDYWxsYmFjaz4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUmVjZWl2ZUZpbGVXcml0ZXJDYWxsYmFjaygpKTsKKyAgICB9CisKKyAg
ICBib29sIGhhbmRsZUV2ZW50KEZpbGVXcml0ZXJCYXNlKiBmaWxlV3JpdGVyQmFzZSkKKyAgICB7
CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2ZpbGVXcml0ZXJCYXNlID0gZmlsZVdyaXRlckJh
c2U7CisjZWxzZQorICAgICAgICBBU1NFUlRfVU5VU0VEKGZpbGVXcml0ZXJCYXNlLCBmaWxlV3Jp
dGVyQmFzZSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisjaWZuZGVm
IE5ERUJVRworICAgIEZpbGVXcml0ZXJCYXNlKiBmaWxlV3JpdGVyQmFzZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9maWxlV3JpdGVyQmFzZTsKKyAgICB9CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICBSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrKCkKKyNpZm5kZWYgTkRFQlVHCisgICAgICAg
IDogbV9maWxlV3JpdGVyQmFzZSgwKQorI2VuZGlmCisgICAgeworICAgIH0KKworI2lmbmRlZiBO
REVCVUcKKyAgICBGaWxlV3JpdGVyQmFzZSogbV9maWxlV3JpdGVyQmFzZTsKKyNlbmRpZgorfTsK
KworY2xhc3MgTG9jYWxFcnJvckNhbGxiYWNrIDogcHVibGljIEVycm9yQ2FsbGJhY2sgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2FsRXJyb3JDYWxsYmFjaz4gY3JlYXRlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9jYWxFcnJvckNhbGxiYWNrKCkp
OworICAgIH0KKworICAgIGJvb2wgaGFuZGxlRXZlbnQoRmlsZUVycm9yKiBlcnJvcikKKyAgICB7
CisgICAgICAgIG1fZXJyb3IgPSBlcnJvcjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgRmlsZUVycm9yKiBlcnJvcigpCisgICAgeworICAgICAgICByZXR1cm4gbV9lcnJvci5n
ZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTG9jYWxFcnJvckNhbGxiYWNrKCkKKyAgICB7
CisgICAgfQorICAgIFJlZlB0cjxGaWxlRXJyb3I+IG1fZXJyb3I7Cit9OworCit9CisKK1Bhc3NS
ZWZQdHI8RmlsZVdyaXRlclN5bmM+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVXcml0ZXIoY29u
c3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBB
U1NFUlQoZmlsZUVudHJ5KTsKKyAgICBlYyA9IDA7CisKKworICAgIFJlZlB0cjxGaWxlV3JpdGVy
U3luYz4gZmlsZVdyaXRlciA9IEZpbGVXcml0ZXJTeW5jOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8
UmVjZWl2ZUZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gUmVjZWl2ZUZpbGVX
cml0ZXJDYWxsYmFjazo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExvY2FsRXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayA9IExvY2FsRXJyb3JDYWxsYmFjazo6Y3JlYXRlKCk7CisKKyAgICBPd25Q
dHI8RmlsZVdyaXRlckJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEZpbGVXcml0ZXJCYXNlQ2Fs
bGJhY2tzOjpjcmVhdGUoZmlsZVdyaXRlciwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCks
IGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAgaWYgKCFt
X2FzeW5jRmlsZVN5c3RlbS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgeworICAgICAg
ICBlYyA9IEZpbGVFeGNlcHRpb246OkFCT1JUX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIGlmIChlcnJvckNhbGxiYWNrLT5lcnJvcigpKSB7CisgICAgICAgIEFTU0VSVCghc3Vj
Y2Vzc0NhbGxiYWNrLT5maWxlV3JpdGVyQmFzZSgpKTsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0
aW9uOjpFcnJvckNvZGVUb0V4Y2VwdGlvbkNvZGUoZXJyb3JDYWxsYmFjay0+ZXJyb3IoKS0+Y29k
ZSgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIEFTU0VSVChzdWNjZXNzQ2FsbGJh
Y2stPmZpbGVXcml0ZXJCYXNlKCkpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxGaWxlV3JpdGVy
U3luYyo+KHN1Y2Nlc3NDYWxsYmFjay0+ZmlsZVdyaXRlckJhc2UoKSkgPT0gZmlsZVdyaXRlci5n
ZXQoKSk7CisgICAgcmV0dXJuIGZpbGVXcml0ZXI7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
T01GaWxlU3lzdGVtU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaDoxMTEwMDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01GaWxlU3lzdGVtU3luY19oCisjZGVm
aW5lIERPTUZpbGVTeXN0ZW1TeW5jX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2lu
Y2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRGlyZWN0b3J5RW50cnlTeW5jOworY2xhc3MgRmlsZTsKK2NsYXNzIEZpbGVFbnRyeVN5bmM7
CitjbGFzcyBGaWxlV3JpdGVyU3luYzsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKwor
Y2xhc3MgRE9NRmlsZVN5c3RlbVN5bmMgOiBwdWJsaWMgRE9NRmlsZVN5c3RlbUJhc2UgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtU3luYyhjb250ZXh0LCBuYW1lLCBhc3luY0Zp
bGVTeXN0ZW0pKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
U3luYz4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKik7CisKKyAgICB2aXJ0dWFsIH5ET01GaWxl
U3lzdGVtU3luYygpOworCisgICAgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHJvb3Qo
KTsKKworICAgIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnlTeW5j
KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RmlsZVdyaXRlclN5bmM+IGNyZWF0
ZVdyaXRlcihjb25zdCBGaWxlRW50cnlTeW5jKiwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRl
OgorICAgIERPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7Cit9OworCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBET01GaWxlU3lzdGVtU3lu
Y19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3Rl
bVN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtU3luYy5pZGwJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGw6MTExMDAzKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBKU05vU3RhdGljVGFibGVz
CisgICAgXSBET01GaWxlU3lzdGVtU3luYyB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgbmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERpcmVjdG9yeUVudHJ5
U3luYyByb290OworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeS5jcHAJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeS5jcHA6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJFbnRyeS5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQor
CisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnku
aCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5o
IgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3Mu
aCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVm9p
ZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0VudHJ5OjpFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1C
YXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIDogRW50cnlCYXNl
KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQoreworfQorCit2b2lkIEVudHJ5OjpnZXRNZXRhZGF0YShQ
YXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKQoreworICAgIFJlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOworICAgIGlmICghbV9maWxlU3lz
dGVtLT5nZXRNZXRhZGF0YSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQor
ICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxl
YXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKSk7Cit9CisKK3ZvaWQgRW50cnk6Om1vdmVUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5
PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1Jl
ZikgY29uc3QKK3sKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJv
ckNhbGxiYWNrUmVmKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQu
Z2V0KCksIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZp
bGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmls
ZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKK30K
Kwordm9pZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAor
eworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tS
ZWYpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5jb3B5KHRoaXMsIHBhcmVudC5nZXQoKSwgbmFt
ZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgZmlsZXN5c3RlbSgp
LT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNy
ZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworfQorCit2b2lkIEVu
dHJ5OjpyZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAoreworICAgIFJl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOworICAg
IGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmUodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSkKKyAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2Fs
bGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUikpOworfQorCit2b2lkIEVudHJ5OjpnZXRQYXJlbnQoUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFja1JlZikgY29uc3QKK3sKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0
UGFyZW50KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZp
bGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmls
ZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVN
KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmgJKHJldmlz
aW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5oOjExMTAwMykK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVudHJ5X2gKKyNkZWZpbmUgRW50cnlfaAorCisj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2lu
Y2x1ZGUgIkVudHJ5QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXJl
Y3RvcnlFbnRyeTsKK2NsYXNzIEVudHJ5Q2FsbGJhY2s7CitjbGFzcyBFbnRyeVN5bmM7CitjbGFz
cyBFcnJvckNhbGxiYWNrOworY2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKK2NsYXNzIFZvaWRDYWxs
YmFjazsKKworY2xhc3MgRW50cnkgOiBwdWJsaWMgRW50cnlCYXNlIHsKK3B1YmxpYzoKKyAgICBE
T01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
RmlsZVN5c3RlbSo+KG1fZmlsZVN5c3RlbS5nZXQoKSk7IH0KKworICAgIHZvaWQgZ2V0TWV0YWRh
dGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKTsKKyAgICB2b2lkIG1vdmVU
byhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9
IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAs
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OworICAg
IHZvaWQgY29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3Ry
aW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkg
Y29uc3Q7CisgICAgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDAp
IGNvbnN0OworICAgIHZvaWQgZ2V0UGFyZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
ID0gMCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBF
bnRyeV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5p
ZGwJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5p
ZGw6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBDdXN0
b21Ub0pTT2JqZWN0LAorICAgICAgICBKU05vU3RhdGljVGFibGVzCisgICAgXSBFbnRyeSB7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRmlsZTsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gaXNEaXJlY3Rvcnk7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgbmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBmdWxsUGF0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUZpbGVTeXN0ZW0gZmls
ZXN5c3RlbTsKKworICAgICAgICB2b2lkIGdldE1ldGFkYXRhKGluIFtDYWxsYmFja10gTWV0YWRh
dGFDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9y
Q2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgbW92ZVRvKGluIERpcmVjdG9y
eUVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVh
dFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWwsIENh
bGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxs
YmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCBjb3B5VG8o
aW4gRGlyZWN0b3J5RW50cnkgcGFyZW50LCBpbiBbT3B0aW9uYWwsIFRyZWF0TnVsbEFzPU51bGxT
dHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtP
cHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0
aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICBE
T01TdHJpbmcgdG9VUkwoKTsKKyAgICAgICAgdm9pZCByZW1vdmUoaW4gW0NhbGxiYWNrXSBWb2lk
Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNh
bGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICB2b2lkIGdldFBhcmVudChpbiBbT3B0aW9u
YWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFs
LCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICB9OworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmNw
cAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJy
YXkuY3BwOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFbnRyeUFycmF5OjpFbnRyeUFycmF5KCkKK3sKK30K
KworRW50cnkqIEVudHJ5QXJyYXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAg
aWYgKGluZGV4ID49IG1fZW50cmllcy5zaXplKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiBtX2VudHJpZXNbaW5kZXhdLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZQorCisjZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5oCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5oOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRW50cnlBcnJheV9oCisjZGVmaW5lIEVudHJ5QXJyYXlfaAorCisjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRW50cnkuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRW50cnlBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QXJy
YXk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5PiBjcmVhdGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5KCkpOworICAg
IH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllcy5zaXpl
KCk7IH0KKyAgICBFbnRyeSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgdm9pZCBz
ZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8RW50cnk+IGVudHJ5KTsKKworICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllcy5pc0VtcHR5KCk7IH0KKyAgICB2b2lk
IGNsZWFyKCkgeyBtX2VudHJpZXMuY2xlYXIoKTsgfQorICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQ
dHI8RW50cnk+IGVudHJ5KSB7IG1fZW50cmllcy5hcHBlbmQoZW50cnkpOyB9CisKK3ByaXZhdGU6
CisgICAgRW50cnlBcnJheSgpOworCisgICAgVmVjdG9yPFJlZlB0cjxFbnRyeT4gPiBtX2VudHJp
ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVN
KQorCisjZW5kaWYgLy8gRW50cnlBcnJheV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsCShyZXZpc2lvbiAxMTEwMDMpCShmcm9t
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5pZGw6MTExMDAzKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIEluZGV4ZWRHZXR0ZXIsCisgICAg
ICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAgICBdIEVudHJ5QXJyYXkgeworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIEVudHJ5IGl0ZW0oaW4g
W0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIH07Cit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAJ
KHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5
U3luYy5jcHA6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5QXJyYXlTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgiCisKKyNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCisKKyNpbmNsdWRlICJFbnRyeUFycmF5LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4gRW50cnlBcnJheVN5bmM6OmNyZWF0ZShF
bnRyeUFycmF5KiBlbnRyaWVzKQoreworICAgIFJlZlB0cjxFbnRyeUFycmF5U3luYz4gZW50cmll
c1N5bmMgPSBhZG9wdFJlZihuZXcgRW50cnlBcnJheVN5bmMoKSk7CisgICAgaWYgKGVudHJpZXMp
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0aCgpOyAr
K2kpCisgICAgICAgICAgICBlbnRyaWVzU3luYy0+YXBwZW5kKEVudHJ5U3luYzo6Y3JlYXRlKGVu
dHJpZXMtPml0ZW0oaSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJpZXNTeW5jLnJlbGVhc2Uo
KTsKK30KKworRW50cnlBcnJheVN5bmM6OkVudHJ5QXJyYXlTeW5jKCkKK3sKK30KKworRW50cnlT
eW5jKiBFbnRyeUFycmF5U3luYzo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBp
ZiAoaW5kZXggPj0gbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG1fZW50cmllc1tpbmRleF0uZ2V0KCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShG
SUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eUFycmF5U3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUFycmF5U3luYy5oCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBFbnRyeUFycmF5U3luY19oCisjZGVmaW5lIEVudHJ5QXJyYXlTeW5j
X2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkVudHJ5U3luYy5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbnRyeUFycmF5OworCitjbGFzcyBFbnRy
eUFycmF5U3luYyA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QXJyYXlTeW5jPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlBcnJheVN5bmM+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVudHJ5QXJyYXlTeW5jKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBjcmVhdGUoRW50cnlBcnJheSop
OworCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbnRyaWVzLnNpemUo
KTsgfQorICAgIEVudHJ5U3luYyogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisKKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2VudHJpZXMuaXNFbXB0eSgpOyB9CisgICAg
dm9pZCBjbGVhcigpIHsgbV9lbnRyaWVzLmNsZWFyKCk7IH0KKyAgICB2b2lkIGFwcGVuZChQYXNz
UmVmUHRyPEVudHJ5U3luYz4gZW50cnkpIHsgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7IH0KKwor
cHJpdmF0ZToKKyAgICBFbnRyeUFycmF5U3luYygpOworCisgICAgVmVjdG9yPFJlZlB0cjxFbnRy
eVN5bmM+ID4gbV9lbnRyaWVzOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQorCisjZW5kaWYgLy8gRW50cnlBcnJheVN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaWRsCShyZXZpc2lv
biAxMTEwMDMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaWRs
OjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5
U3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsK
KyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICAg
ICAgSW5kZXhlZEdldHRlciwKKyAgICAgICAgSlNOb1N0YXRpY1RhYmxlcworICAgIF0gRW50cnlB
cnJheVN5bmMgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CisgICAgICAgIEVudHJ5U3luYyBpdGVtKGluIFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKyAgICB9OworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0VudHJ5QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QmFzZS5jcHAJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9FbnRyeUJhc2UuY3BwOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRW50cnlCYXNlLmgiCisKKyNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRl
ICJET01GaWxlUGF0aC5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0VudHJ5QmFzZTo6RW50cnlCYXNlKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
CisgICAgOiBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKKyAgICAsIG1fZnVsbFBhdGgoZnVsbFBh
dGgpCisgICAgLCBtX25hbWUoRE9NRmlsZVBhdGg6OmdldE5hbWUoZnVsbFBhdGgpKQoreworfQor
CitFbnRyeUJhc2U6On5FbnRyeUJhc2UoKQoreworfQorCitTdHJpbmcgRW50cnlCYXNlOjp0b1VS
TCgpCit7CisgICAgcmV0dXJuIG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCktPnRvVVJM
KG1fZmlsZVN5c3RlbS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbV9mdWxsUGF0aCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZ
U1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlC
YXNlLmgJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRy
eUJhc2UuaDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRW50cnlCYXNl
X2gKKyNkZWZpbmUgRW50cnlCYXNlX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IERPTUZpbGVTeXN0ZW1CYXNlOworY2xhc3MgRW50cnlTeW5jOworCisvLyBBIGNvbW1vbiBiYXNl
IGNsYXNzIGZvciBFbnRyeSBhbmQgRW50cnlTeW5jLgorY2xhc3MgRW50cnlCYXNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8RW50cnlCYXNlPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RW50cnlCYXNl
KCk7CisKKyAgICBET01GaWxlU3lzdGVtQmFzZSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsZVN5c3RlbS5nZXQoKTsgfQorCisgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKworICAgIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgoKSBjb25zdCB7
IHJldHVybiBtX2Z1bGxQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9uYW1lOyB9CisKKyAgICBTdHJpbmcgdG9VUkwoKTsKKworcHJvdGVjdGVkOgorICAg
IEVudHJ5QmFzZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBm
dWxsUGF0aCk7CisgICAgZnJpZW5kIGNsYXNzIEVudHJ5U3luYzsKKworICAgIFJlZlB0cjxET01G
aWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVtOworCisgICAgLy8gVGhpcyBpcyBhIHZpcnR1YWwg
cGF0aC4KKyAgICBTdHJpbmcgbV9mdWxsUGF0aDsKKworICAgIFN0cmluZyBtX25hbWU7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBFbnRyeUJh
c2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlDYWxsYmFjay5oCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRW50cnlDYWxsYmFjay5oOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRW50cnlDYWxsYmFja19oCisjZGVmaW5lIEVudHJ5Q2FsbGJhY2tfaAorCisjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBFbnRyeTsKKworY2xhc3MgRW50cnlDYWxsYmFjayA6IHB1
YmxpYyBSZWZDb3VudGVkPEVudHJ5Q2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5F
bnRyeUNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEVudHJ5Kikg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RF
TSkKKworI2VuZGlmIC8vIEVudHJ5Q2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbAkocmV2aXNpb24gMTEx
MDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5Q2FsbGJhY2suaWRsOjExMTAw
MykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBDYWxs
YmFjaworICAgIF0gRW50cnlDYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQo
aW4gRW50cnkgZW50cnkpOworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5jcHA6MTExMDAzKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRW50cnlTeW5jLmgi
CisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJET01GaWxlUGF0aC5oIgor
I2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnku
aCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKKyNpbmNsdWRlICJGaWxlRW50cnlT
eW5jLmgiCisjaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIk1ldGFkYXRhLmgi
CisjaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y3JlYXRlKEVudHJ5QmFzZSogZW50
cnkpCit7CisgICAgaWYgKGVudHJ5LT5pc0ZpbGUoKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGaWxlRW50cnlTeW5jKGVudHJ5LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQYXRo
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeVN5bmMoZW50cnktPm1f
ZmlsZVN5c3RlbSwgZW50cnktPm1fZnVsbFBhdGgpKTsKK30KKworUGFzc1JlZlB0cjxNZXRhZGF0
YT4gRW50cnlTeW5jOjpnZXRNZXRhZGF0YShFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9
IDA7CisgICAgTWV0YWRhdGFTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+
YXN5bmNGaWxlU3lzdGVtKCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRNZXRhZGF0YSh0
aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7
CisgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMp
OworfQorCitQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0
cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBlYyA9IDA7CisgICAgRW50cnlTeW5jQ2FsbGJhY2tI
ZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOworICAgIGlmICgh
bV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgaGVscGVyLnN1Y2Nl
c3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IEZp
bGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKK30KKworUGFzc1JlZlB0
cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlT
eW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
Cit7CisgICAgZWMgPSAwOworICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2Zp
bGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Y29w
eSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVs
cGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZB
TElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1
cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisKK3ZvaWQgRW50cnlTeW5jOjpyZW1vdmUoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgZWMgPSAwOworICAgIFZvaWRTeW5jQ2FsbGJh
Y2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOworICAgIGlm
ICghbV9maWxlU3lzdGVtLT5yZW1vdmUodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBo
ZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBoZWxw
ZXIuZ2V0UmVzdWx0KGVjKTsKK30KKworUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6
Z2V0UGFyZW50KCkgY29uc3QKK3sKKyAgICAvLyBTeW5jIHZlcmlvbiBvZiBnZXRQYXJlbnQgZG9l
c24ndCB0aHJvdyBleGNlcHRpb25zLgorICAgIFN0cmluZyBwYXJlbnRQYXRoID0gRE9NRmlsZVBh
dGg6OmdldERpcmVjdG9yeShmdWxsUGF0aCgpKTsKKyAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlT
eW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBwYXJlbnRQYXRoKTsKK30KKworRW50cnlTeW5jOjpF
bnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCkKKyAgICA6IEVudHJ5QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkK
K3sKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaAkocmV2aXNpb24gMTEx
MDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5oOjExMTAwMykKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFbnRyeVN5bmNfaAorI2RlZmluZSBFbnRyeVN5
bmNfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRE9NRmlsZVN5c3Rl
bVN5bmMuaCIKKyNpbmNsdWRlICJFbnRyeUJhc2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXJlY3RvcnlFbnRyeVN5bmM7
CitjbGFzcyBNZXRhZGF0YTsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3Mg
RW50cnlTeW5jIDogcHVibGljIEVudHJ5QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RW50cnlTeW5jPiBjcmVhdGUoRW50cnlCYXNlKik7CisKKyAgICBET01GaWxlU3lzdGVt
U3luYyogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERPTUZpbGVTeXN0
ZW1TeW5jKj4obV9maWxlU3lzdGVtLmdldCgpKTsgfQorCisgICAgUGFzc1JlZlB0cjxNZXRhZGF0
YT4gZ2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RW50cnlTeW5j
PiBtb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxFbnRyeVN5
bmM+IGNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZShFeGNl
cHRpb25Db2RlJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGdldFBhcmVudCgp
IGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgRW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5
c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKK307CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIEVudHJ5U3luY19oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbAkocmV2aXNp
b24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5pZGw6MTEx
MDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRl
cmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICAgICAgQ3VzdG9t
VG9KU09iamVjdCwKKyAgICAgICAgSlNOb1N0YXRpY1RhYmxlcworICAgIF0gRW50cnlTeW5jIHsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNGaWxlOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0RpcmVjdG9yeTsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBuYW1lOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGZ1bGxQYXRoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NRmlsZVN5c3RlbVN5
bmMgZmlsZXN5c3RlbTsKKworICAgICAgICBNZXRhZGF0YSBnZXRNZXRhZGF0YSgpIHJhaXNlcyAo
RmlsZUV4Y2VwdGlvbik7CisgICAgICAgIEVudHJ5U3luYyBtb3ZlVG8oaW4gRGlyZWN0b3J5RW50
cnlTeW5jIHBhcmVudCwgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVk
QXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Cisg
ICAgICAgIEVudHJ5U3luYyBjb3B5VG8oaW4gRGlyZWN0b3J5RW50cnlTeW5jIHBhcmVudCwgaW4g
W1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9N
U3RyaW5nIG5hbWUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgICAgIERPTVN0cmluZyB0
b1VSTCgpOworICAgICAgICB2b2lkIHJlbW92ZSgpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Cisg
ICAgICAgIERpcmVjdG9yeUVudHJ5U3luYyBnZXRQYXJlbnQoKTsKKyAgICB9OworfQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5o
CShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRXJyb3JDYWxs
YmFjay5oOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJv
ckNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRXJyb3JD
YWxsYmFja19oCisjZGVmaW5lIEVycm9yQ2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBGaWxlRXJyb3I7CisKK2NsYXNzIEVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgUmVm
Q291bnRlZDxFcnJvckNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RXJyb3JDYWxs
YmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChGaWxlRXJyb3IqKSA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQor
CisjZW5kaWYgLy8gRXJyb3JDYWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAxMTEwMDMp
CShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRXJyb3JDYWxsYmFjay5pZGw6MTExMDAzKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIENhbGxiYWNr
CisgICAgXSBFcnJvckNhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBG
aWxlRXJyb3IgZXJyb3IpOworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5oCShyZXZpc2lvbiAxMTEwMDMpCShmcm9t
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNhbGxiYWNrLmg6MTExMDAzKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbGVDYWxsYmFja19oCisjZGVmaW5lIEZpbGVDYWxs
YmFja19oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJGaWxlLmgiCisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBGaWxlQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlQ2FsbGJhY2s+IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5GaWxlQ2FsbGJhY2soKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlRXZlbnQoRmlsZSopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBGaWxlQ2FsbGJhY2tfaApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5pZGwJ
KHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ2FsbGJh
Y2suaWRsOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
Q2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgZmlsZWFw
aSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisg
ICAgICAgIENhbGxiYWNrCisgICAgXSBGaWxlQ2FsbGJhY2sgeworICAgICAgICBib29sZWFuIGhh
bmRsZUV2ZW50KGluIEZpbGUgZmlsZSk7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuY3BwCShyZXZpc2lvbiAxMTEwMDMp
CShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmNwcDoxMTEwMDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbGVF
bnRyeS5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRE9NRmlsZVN5
c3RlbS5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlLmgiCisj
aW5jbHVkZSAiRmlsZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmlsZUVudHJ5OjpGaWxlRW50cnkoUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkK
KyAgICA6IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQoreworfQorCit2b2lkIEZpbGVFbnRy
eTo6Y3JlYXRlV3JpdGVyKFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBm
aWxlc3lzdGVtKCktPmNyZWF0ZVdyaXRlcih0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spOworfQorCit2b2lkIEZpbGVFbnRyeTo6ZmlsZShQYXNzUmVmUHRyPEZpbGVDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCit7CisgICAgZmlsZXN5c3RlbSgpLT5jcmVhdGVGaWxlKHRoaXMsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjayk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBFTkFC
TEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVFbnRyeS5oCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZUVudHJ5Lmg6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEZpbGVFbnRyeV9oCisjZGVmaW5lIEZpbGVFbnRyeV9oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCisKKyNpbmNsdWRlICJFbnRyeS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IERPTUZpbGVTeXN0ZW1CYXNlOworY2xhc3MgRmlsZUNhbGxiYWNrOworY2xhc3MgRmlsZVdyaXRl
ckNhbGxiYWNrOworCitjbGFzcyBGaWxlRW50cnkgOiBwdWJsaWMgRW50cnkgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVFbnRyeT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0
aCkpOworICAgIH0KKworICAgIHZvaWQgY3JlYXRlV3JpdGVyKFBhc3NSZWZQdHI8RmlsZVdyaXRl
ckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOworICAgIHZvaWQgZmls
ZShQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAw
KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisK
K3ByaXZhdGU6CisgICAgRmlsZUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworfTsKKworfSAvLyBuYW1lc3BhY2UK
KworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIEZpbGVFbnRyeV9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5
LmlkbAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVF
bnRyeS5pZGw6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVFbnRyeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdl
IHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAg
ICAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAorICAgICAgICBKU0dlbmVyYXRlVG9KU09i
amVjdCwKKyAgICAgICAgSlNOb1N0YXRpY1RhYmxlcworICAgIF0gRmlsZUVudHJ5IDogRW50cnkg
eworICAgICAgICB2b2lkIGNyZWF0ZVdyaXRlcihpbiBbQ2FsbGJhY2tdIEZpbGVXcml0ZXJDYWxs
YmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJh
Y2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgZmlsZShpbiBbQ2FsbGJhY2tdIEZpbGVD
YWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2Fs
bGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5jcHAJKHJldmlzaW9uIDEx
MTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnlTeW5jLmNwcDoxMTEw
MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNp
bmNsdWRlICJGaWxlLmgiCisjaW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitGaWxlRW50cnlTeW5jOjpGaWxlRW50cnlTeW5jKFBhc3NSZWZQdHI8RE9N
RmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCisgICAg
OiBFbnRyeVN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8Rmls
ZT4gRmlsZUVudHJ5U3luYzo6ZmlsZShFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICByZXR1cm4g
ZmlsZXN5c3RlbSgpLT5jcmVhdGVGaWxlKHRoaXMsIGVjKTsKK30KKworUGFzc1JlZlB0cjxGaWxl
V3JpdGVyU3luYz4gRmlsZUVudHJ5U3luYzo6Y3JlYXRlV3JpdGVyKEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIHJldHVybiBmaWxlc3lzdGVtKCktPmNyZWF0ZVdyaXRlcih0aGlzLCBlYyk7Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaAkocmV2aXNpb24g
MTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeVN5bmMuaDoxMTEw
MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbGVFbnRyeVN5bmNfaAor
I2RlZmluZSBGaWxlRW50cnlTeW5jX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2lu
Y2x1ZGUgIkVudHJ5U3luYy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZpbGU7CitjbGFzcyBGaWxlV3JpdGVyU3luYzsKKwor
Y2xhc3MgRmlsZUVudHJ5U3luYyA6IHB1YmxpYyBFbnRyeVN5bmMgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlRW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQ
YXRoKSk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKworICAgIFBhc3NSZWZQdHI8RmlsZT4gZmlsZShFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxGaWxlV3JpdGVyU3luYz4gY3JlYXRlV3JpdGVyKEV4Y2VwdGlvbkNvZGUm
KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRW50cnlTeW5jOworICAgIEZpbGVFbnRy
eVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYg
Ly8gRmlsZUVudHJ5U3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZUVudHJ5U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaWRsCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5U3luYy5pZGw6MTExMDAzKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAg
ICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIEpTR2VuZXJhdGVUb05hdGl2
ZU9iamVjdCwKKyAgICAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgICAgIEpTTm9TdGF0
aWNUYWJsZXMKKyAgICBdIEZpbGVFbnRyeVN5bmMgOiBFbnRyeVN5bmMgeworICAgICAgICBGaWxl
IGZpbGUoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgICAgICBGaWxlV3JpdGVyU3luYyBj
cmVhdGVXcml0ZXIoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgIH07Cit9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1D
YWxsYmFjay5oCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVN5c3RlbUNhbGxiYWNrLmg6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEZpbGVTeXN0ZW1DYWxsYmFja19oCisjZGVmaW5lIEZpbGVTeXN0ZW1DYWxs
YmFja19oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTUZpbGVTeXN0ZW07CisK
K2NsYXNzIEZpbGVTeXN0ZW1DYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVTeXN0ZW1D
YWxsYmFjaz4geworcHVibGljOgorICAgIHZpcnR1YWwgfkZpbGVTeXN0ZW1DYWxsYmFjaygpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChET01GaWxlU3lzdGVtKikgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2Vu
ZGlmIC8vIEZpbGVTeXN0ZW1DYWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmlkbAkocmV2aXNp
b24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
ay5pZGw6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVT
eXN0ZW1DYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBz
dG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RF
TSwKKyAgICAgICAgQ2FsbGJhY2sKKyAgICBdIEZpbGVTeXN0ZW1DYWxsYmFjayB7CisgICAgICAg
IGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRE9NRmlsZVN5c3RlbSBmaWxlU3lzdGVtKTsKKyAgICB9
OworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwOjExMTAwMykKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisK
KyNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIu
aCIKKyNpbmNsdWRlICJET01GaWxlUGF0aC5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNl
LmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFk
ZXIuaCIKKyNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJFbnRyeUFycmF5
LmgiCisjaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJGaWxlRW50cnkuaCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNs
dWRlICJGaWxlTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJGaWxlV3JpdGVyQmFzZS5oIgorI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlQ2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJNZXRhZGF0YS5oIgorI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVm9pZENh
bGxiYWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2U6OkZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKKyAgICA6IG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQoreworfQor
CitGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6fkZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKCkKK3sK
K30KKwordm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkKK3sK
KyAgICBpZiAobV9lcnJvckNhbGxiYWNrKSB7CisgICAgICAgIG1fZXJyb3JDYWxsYmFjay0+aGFu
ZGxlRXZlbnQoRmlsZUVycm9yOjpjcmVhdGUoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNv
ZGU+KGNvZGUpKS5nZXQoKSk7CisgICAgICAgIG1fZXJyb3JDYWxsYmFjay5jbGVhcigpOworICAg
IH0KK30KKworLy8gRW50cnlDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQYXNzT3duUHRyPEVudHJ5Q2FsbGJh
Y2tzPiBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhw
ZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
RW50cnlDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBmaWxlU3lzdGVt
LCBleHBlY3RlZFBhdGgsIGlzRGlyZWN0b3J5KSk7Cit9CisKK0VudHJ5Q2FsbGJhY2tzOjpFbnRy
eUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBp
c0RpcmVjdG9yeSkKKyAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2sp
CisgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCisgICAgLCBtX2ZpbGVT
eXN0ZW0oZmlsZVN5c3RlbSkKKyAgICAsIG1fZXhwZWN0ZWRQYXRoKGV4cGVjdGVkUGF0aCkKKyAg
ICAsIG1faXNEaXJlY3RvcnkoaXNEaXJlY3RvcnkpCit7Cit9CisKK3ZvaWQgRW50cnlDYWxsYmFj
a3M6OmRpZFN1Y2NlZWQoKQoreworICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykgeworICAgICAg
ICBpZiAobV9pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5k
bGVFdmVudChEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9leHBlY3RlZFBh
dGgpLmdldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KEZpbGVFbnRyeTo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9leHBlY3RlZFBh
dGgpLmdldCgpKTsKKyAgICB9CisgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKK30KKwor
Ly8gRW50cmllc0NhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQYXNzT3duUHRyPEVudHJpZXNDYWxsYmFja3M+IEVu
dHJpZXNDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4gZGlyZWN0b3J5UmVhZGVyLCBjb25zdCBTdHJpbmcm
IGJhc2VQYXRoKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRW50cmllc0NhbGxiYWNrcyhz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGRpcmVjdG9yeVJlYWRlciwgYmFzZVBhdGgp
KTsKK30KKworRW50cmllc0NhbGxiYWNrczo6RW50cmllc0NhbGxiYWNrcyhQYXNzUmVmUHRyPEVu
dHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4gZGlyZWN0b3J5
UmVhZGVyLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKQorICAgIDogRmlsZVN5c3RlbUNhbGxiYWNr
c0Jhc2UoZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxs
YmFjaykKKyAgICAsIG1fZGlyZWN0b3J5UmVhZGVyKGRpcmVjdG9yeVJlYWRlcikKKyAgICAsIG1f
YmFzZVBhdGgoYmFzZVBhdGgpCisgICAgLCBtX2VudHJpZXMoRW50cnlBcnJheTo6Y3JlYXRlKCkp
Cit7CisgICAgQVNTRVJUKG1fZGlyZWN0b3J5UmVhZGVyKTsKK30KKwordm9pZCBFbnRyaWVzQ2Fs
bGJhY2tzOjpkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGlz
RGlyZWN0b3J5KQoreworICAgIGlmIChpc0RpcmVjdG9yeSkKKyAgICAgICAgbV9lbnRyaWVzLT5h
cHBlbmQoRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShtX2RpcmVjdG9yeVJlYWRlci0+ZmlsZXN5c3Rl
bSgpLCBET01GaWxlUGF0aDo6YXBwZW5kKG1fYmFzZVBhdGgsIG5hbWUpKSk7CisgICAgZWxzZQor
ICAgICAgICBtX2VudHJpZXMtPmFwcGVuZChGaWxlRW50cnk6OmNyZWF0ZShtX2RpcmVjdG9yeVJl
YWRlci0+ZmlsZXN5c3RlbSgpLCBET01GaWxlUGF0aDo6YXBwZW5kKG1fYmFzZVBhdGgsIG5hbWUp
KSk7Cit9CisKK3ZvaWQgRW50cmllc0NhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMo
Ym9vbCBoYXNNb3JlKQoreworICAgIG1fZGlyZWN0b3J5UmVhZGVyLT5zZXRIYXNNb3JlRW50cmll
cyhoYXNNb3JlKTsKKyAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spCisgICAgICAgIG1fc3VjY2Vz
c0NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2VudHJpZXMuZ2V0KCkpOworfQorCisvLyBGaWxlU3lz
dGVtQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1Bhc3NPd25QdHI8RmlsZVN5c3RlbUNhbGxiYWNrcz4gRmlsZVN5c3Rl
bUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEZpbGVTeXN0ZW1DYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7Cit9CisKK0ZpbGVTeXN0ZW1DYWxsYmFj
a3M6OkZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogRmlsZVN5c3RlbUNhbGxiYWNr
c0Jhc2UoZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxs
YmFjaykKKyAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQoreworfQorCit2
b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK3sKKyAg
ICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsKKyAgICAgICAgQVNTRVJUKGFzeW5jRmlsZVN5c3Rl
bSk7CisgICAgICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtID0gRE9NRmlsZVN5
c3RlbTo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgbmFtZSwgYXN5bmNG
aWxlU3lzdGVtKTsKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGZpbGVT
eXN0ZW0uZ2V0KCkpOworICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY2xlYXIoKTsK
KyAgICB9CisgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKK30KKworLy8gUmVzb2x2ZVVS
SUNhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCituYW1lc3BhY2UgeworCitjbGFzcyBFcnJvckNhbGxiYWNrV3JhcHBlciA6
IHB1YmxpYyBFcnJvckNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrV3JhcHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVycm9yQ2FsbGJhY2tXcmFwcGVyKHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgcm9vdCwgZmlsZVBhdGgpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRmlsZUVycm9yKiBlcnJvcikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChlcnJvcik7CisgICAgICAgIGlmIChlcnJvci0+Y29kZSgpID09IEZpbGVF
cnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIpCisgICAgICAgICAgICBtX3Jvb3QtPmdldEZpbGUobV9m
aWxlUGF0aCwgMCwgbV9zdWNjZXNzQ2FsbGJhY2ssIG1fZXJyb3JDYWxsYmFjayk7CisgICAgICAg
IGVsc2UgaWYgKG1fZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZXJyb3JDYWxsYmFjay0+
aGFuZGxlRXZlbnQoZXJyb3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgRXJyb3JDYWxsYmFja1dyYXBwZXIoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
UGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
KyAgICAgICAgOiBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICwg
bV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCisgICAgICAgICwgbV9yb290KHJvb3QpCisg
ICAgICAgICwgbV9maWxlUGF0aChmaWxlUGF0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Jv
b3QpOworICAgIH0KKworICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFj
azsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOworICAgIFJlZlB0
cjxEaXJlY3RvcnlFbnRyeT4gbV9yb290OworICAgIFN0cmluZyBtX2ZpbGVQYXRoOworfTsKKwor
fSAvLyBuYW1lc3BhY2UKKworUGFzc093blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBSZXNvbHZl
VVJJQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJlc29sdmVVUklDYWxsYmFja3Moc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBmaWxl
UGF0aCkpOworfQorCitSZXNvbHZlVVJJQ2FsbGJhY2tzOjpSZXNvbHZlVVJJQ2FsbGJhY2tzKFBh
c3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCisgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShl
cnJvckNhbGxiYWNrKQorICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQor
ICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAgLCBtX2ZpbGVQYXRo
KGZpbGVQYXRoKQoreworfQorCit2b2lkIFJlc29sdmVVUklDYWxsYmFja3M6OmRpZE9wZW5GaWxl
U3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFz
eW5jRmlsZVN5c3RlbSkKK3sKKyAgICBBU1NFUlQoYXN5bmNGaWxlU3lzdGVtKTsKKyAgICBSZWZQ
dHI8RGlyZWN0b3J5RW50cnk+IHJvb3QgPSBET01GaWxlU3lzdGVtOjpjcmVhdGUobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LmdldCgpLCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pLT5yb290KCk7Cisg
ICAgcm9vdC0+Z2V0RGlyZWN0b3J5KG1fZmlsZVBhdGgsIDAsIG1fc3VjY2Vzc0NhbGxiYWNrLCBF
cnJvckNhbGxiYWNrV3JhcHBlcjo6Y3JlYXRlKG1fc3VjY2Vzc0NhbGxiYWNrLCBtX2Vycm9yQ2Fs
bGJhY2ssIHJvb3QsIG1fZmlsZVBhdGgpKTsKK30KKworLy8gTWV0YWRhdGFDYWxsYmFja3MgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitQYXNzT3duUHRyPE1ldGFkYXRhQ2FsbGJhY2tzPiBNZXRhZGF0YUNhbGxiYWNrczo6Y3JlYXRl
KFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBNZXRhZGF0YUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKK30K
KworTWV0YWRhdGFDYWxsYmFja3M6Ok1ldGFkYXRhQ2FsbGJhY2tzKFBhc3NSZWZQdHI8TWV0YWRh
dGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCisgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNr
KQorICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQoreworfQorCit2b2lk
IE1ldGFkYXRhQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBt
ZXRhZGF0YSkKK3sKKyAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spCisgICAgICAgIG1fc3VjY2Vz
c0NhbGxiYWNrLT5oYW5kbGVFdmVudChNZXRhZGF0YTo6Y3JlYXRlKG1ldGFkYXRhKS5nZXQoKSk7
CisgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKK30KKworLy8gRmlsZVdyaXRlckJhc2VD
YWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitQYXNzT3duUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzPiBGaWxlV3Jp
dGVyQmFzZUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2U+IGZpbGVX
cml0ZXIsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcyhmaWxlV3JpdGVyLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKK30KKworRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6
OkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2U+IGZpbGVX
cml0ZXIsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgOiBGaWxlU3lz
dGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQorICAgICwgbV9maWxlV3JpdGVyKGZpbGVX
cml0ZXIpCisgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCit7Cit9CisK
K3ZvaWQgRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093
blB0cjxBc3luY0ZpbGVXcml0ZXI+IGFzeW5jRmlsZVdyaXRlciwgbG9uZyBsb25nIGxlbmd0aCkK
K3sKKyAgICBtX2ZpbGVXcml0ZXItPmluaXRpYWxpemUoYXN5bmNGaWxlV3JpdGVyLCBsZW5ndGgp
OworICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KG1fZmlsZVdyaXRlci5yZWxlYXNlKCkuZ2V0KCkpOworICAgIG1fc3VjY2Vz
c0NhbGxiYWNrLmNsZWFyKCk7Cit9CisKKy8vIFZvaWRDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUGFzc093
blB0cjxWb2lkQ2FsbGJhY2tzPiBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVm9pZENhbGxiYWNrcyhzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKK30KKworVm9pZENhbGxiYWNrczo6Vm9pZENh
bGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgOiBGaWxlU3lzdGVtQ2FsbGJh
Y2tzQmFzZShlcnJvckNhbGxiYWNrKQorICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0Nh
bGxiYWNrKQoreworfQorCit2b2lkIFZvaWRDYWxsYmFja3M6OmRpZFN1Y2NlZWQoKQoreworICAg
IGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRs
ZUV2ZW50KCk7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
aAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBGaWxlU3lzdGVtQ2FsbGJhY2tzX2gKKyNkZWZpbmUgRmlsZVN5c3RlbUNhbGxiYWNr
c19oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEFzeW5jRmlsZVdyaXRlcjsKK2NsYXNzIERPTUZpbGVTeXN0ZW1CYXNl
OworY2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZTsKK2NsYXNzIEVudHJpZXNDYWxsYmFjazsKK2Ns
YXNzIEVudHJ5QXJyYXk7CitjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xhc3MgRXJyb3JDYWxsYmFj
azsKK3N0cnVjdCBGaWxlTWV0YWRhdGE7CitjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7CitjbGFz
cyBGaWxlV3JpdGVyQmFzZTsKK2NsYXNzIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2s7CitjbGFzcyBN
ZXRhZGF0YUNhbGxiYWNrOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFZv
aWRDYWxsYmFjazsKKworY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgOiBwdWJsaWMgQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GaWxlU3lzdGVt
Q2FsbGJhY2tzQmFzZSgpOworCisgICAgLy8gRm9yIEVycm9yQ2FsbGJhY2suCisgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpOworCisgICAgLy8gT3RoZXIgY2FsbGJhY2sgbWV0aG9k
cyBhcmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBzdWJjbGFzcy4KKworcHJvdGVjdGVkOgorICAgIEZp
bGVTeXN0ZW1DYWxsYmFja3NCYXNlKFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjayk7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKK307CisK
Ky8vIFN1YmNsYXNzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBFbnRyeUNhbGxiYWNrcyA6IHB1YmxpYyBG
aWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
RW50cnlDYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3Qg
U3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdWNjZWVkKCk7CisKK3ByaXZhdGU6CisgICAgRW50cnlDYWxsYmFja3MoUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGly
ZWN0b3J5KTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Cisg
ICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBtX2ZpbGVTeXN0ZW07CisgICAgU3RyaW5nIG1f
ZXhwZWN0ZWRQYXRoOworICAgIGJvb2wgbV9pc0RpcmVjdG9yeTsKK307CisKK2NsYXNzIEVudHJp
ZXNDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEVudHJpZXNDYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRy
PEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8
RGlyZWN0b3J5UmVhZGVyQmFzZT4sIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGlz
RGlyZWN0b3J5KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9v
bCBoYXNNb3JlKTsKKworcHJpdmF0ZToKKyAgICBFbnRyaWVzQ2FsbGJhY2tzKFBhc3NSZWZQdHI8
RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxE
aXJlY3RvcnlSZWFkZXJCYXNlPiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCk7CisgICAgUmVmUHRy
PEVudHJpZXNDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgUmVmUHRyPERpcmVjdG9y
eVJlYWRlckJhc2U+IG1fZGlyZWN0b3J5UmVhZGVyOworICAgIFN0cmluZyBtX2Jhc2VQYXRoOwor
ICAgIFJlZlB0cjxFbnRyeUFycmF5PiBtX2VudHJpZXM7Cit9OworCitjbGFzcyBGaWxlU3lzdGVt
Q2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0
cjxGaWxlU3lzdGVtQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKworcHJpdmF0
ZToKKyAgICBGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
ICAgIFJlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOworICAgIFJl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cit9
OworCitjbGFzcyBSZXNvbHZlVVJJQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvbHZlVVJJQ2FsbGJh
Y2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7CisKK3ByaXZhdGU6CisgICAgUmVzb2x2ZVVS
SUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
CisgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOworICAgIFJlZlB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAg
U3RyaW5nIG1fZmlsZVBhdGg7Cit9OworCitjbGFzcyBNZXRhZGF0YUNhbGxiYWNrcyA6IHB1Ymxp
YyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8TWV0YWRhdGFDYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1l
dGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYpOworCitwcml2YXRlOgorICAgIE1ldGFkYXRhQ2Fs
bGJhY2tzKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pOworICAgIFJlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsK
K307CisKK2NsYXNzIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1D
YWxsYmFja3NCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWxlV3JpdGVy
QmFzZUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2U+LCBQYXNzUmVm
UHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmls
ZVdyaXRlcj4sIGxvbmcgbG9uZyBsZW5ndGgpOworCitwcml2YXRlOgorICAgIEZpbGVXcml0ZXJC
YXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2U+LCBQYXNzUmVmUHRyPEZpbGVX
cml0ZXJCYXNlQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBSZWZQ
dHI8RmlsZVdyaXRlckJhc2U+IG1fZmlsZVdyaXRlcjsKKyAgICBSZWZQdHI8RmlsZVdyaXRlckJh
c2VDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Cit9OworCitjbGFzcyBWb2lkQ2FsbGJhY2tz
IDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxWb2lkQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2Vl
ZCgpOworCitwcml2YXRlOgorICAgIFZvaWRDYWxsYmFja3MoUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNr
PiBtX3N1Y2Nlc3NDYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBGaWxlU3lzdGVtQ2FsbGJhY2tzX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5j
cHAJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3Jp
dGVyLmNwcDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZVdyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRmlsZVdyaXRl
ci5oIgorCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiQmxvYi5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNs
dWRlICJGaWxlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBpbnQga01heFJlY3Vyc2lvbkRlcHRoID0g
MzsKKworUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBGaWxlV3JpdGVyOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdy
aXRlcihhZG9wdFJlZihuZXcgRmlsZVdyaXRlcihjb250ZXh0KSkpOworICAgIGZpbGVXcml0ZXIt
PnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBmaWxlV3JpdGVyLnJlbGVhc2UoKTsKK30K
KworRmlsZVdyaXRlcjo6RmlsZVdyaXRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3JlYWR5U3Rh
dGUoSU5JVCkKKyAgICAsIG1faXNPcGVyYXRpb25JblByb2dyZXNzKGZhbHNlKQorICAgICwgbV9x
dWV1ZWRPcGVyYXRpb24oT3BlcmF0aW9uTm9uZSkKKyAgICAsIG1fYnl0ZXNXcml0dGVuKDApCisg
ICAgLCBtX2J5dGVzVG9Xcml0ZSgwKQorICAgICwgbV90cnVuY2F0ZUxlbmd0aCgtMSkKKyAgICAs
IG1fbnVtQWJvcnRzKDApCisgICAgLCBtX3JlY3Vyc2lvbkRlcHRoKDApCit7Cit9CisKK0ZpbGVX
cml0ZXI6On5GaWxlV3JpdGVyKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVjdXJzaW9uRGVwdGgpOwor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gV1JJVElORykKKyAgICAgICAgc3RvcCgpOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIEZpbGVXcml0ZXI6OmludGVyZmFjZU5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRmlsZVdyaXRlcjsKK30KKworYm9v
bCBGaWxlV3JpdGVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIHJldHVybiBt
X3JlYWR5U3RhdGUgPT0gV1JJVElORyB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rp
dml0eSgpOworfQorCitib29sIEZpbGVXcml0ZXI6OmNhblN1c3BlbmQoKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBJdCBpcyBub3QgY3VycmVudGx5IHBvc3NpYmxlIHRvIHN1c3BlbmQgYSBGaWxl
V3JpdGVyLCBzbyBwYWdlcyB3aXRoIEZpbGVXcml0ZXIgY2FuIG5vdCBnbyBpbnRvIHBhZ2UgY2Fj
aGUuCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEZpbGVXcml0ZXI6OnN0b3AoKQorewor
ICAgIC8vIE1ha2Ugc3VyZSB3ZSd2ZSBhY3R1YWxseSBnb3Qgc29tZXRoaW5nIHRvIHN0b3AsIGFu
ZCBoYXZlbid0IGFscmVhZHkgY2FsbGVkIGFib3J0KCkuCisgICAgaWYgKHdyaXRlcigpICYmIG1f
cmVhZHlTdGF0ZSA9PSBXUklUSU5HICYmIG1faXNPcGVyYXRpb25JblByb2dyZXNzICYmIG1fcXVl
dWVkT3BlcmF0aW9uID09IE9wZXJhdGlvbk5vbmUpCisgICAgICAgIHdyaXRlcigpLT5hYm9ydCgp
OworICAgIG1fYmxvYkJlaW5nV3JpdHRlbi5jbGVhcigpOworICAgIG1fcmVhZHlTdGF0ZSA9IERP
TkU7Cit9CisKK3ZvaWQgRmlsZVdyaXRlcjo6d3JpdGUoQmxvYiogZGF0YSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgQVNTRVJUKHdyaXRlcigpKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAg
QVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0g
V1JJVElORykgeworICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OklOVkFMSURfU1RBVEVfRVJS
LCBlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFkYXRhKSB7CisgICAgICAg
IHNldEVycm9yKEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIsIGVjKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAobV9yZWN1cnNpb25EZXB0aCA+IGtNYXhSZWN1cnNpb25EZXB0
aCkgeworICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUiwgZWMpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIG1fYmxvYkJlaW5nV3JpdHRlbiA9IGRhdGE7CisgICAg
bV9yZWFkeVN0YXRlID0gV1JJVElORzsKKyAgICBtX2J5dGVzV3JpdHRlbiA9IDA7CisgICAgbV9i
eXRlc1RvV3JpdGUgPSBkYXRhLT5zaXplKCk7CisgICAgQVNTRVJUKG1fcXVldWVkT3BlcmF0aW9u
ID09IE9wZXJhdGlvbk5vbmUpOworICAgIGlmIChtX2lzT3BlcmF0aW9uSW5Qcm9ncmVzcykgLy8g
V2UgbXVzdCBiZSB3YWl0aW5nIGZvciBhbiBhYm9ydCB0byBjb21wbGV0ZSwgc2luY2UgbV9yZWFk
eVN0YXRlIHdhc24ndCBXUklUSU5HLgorICAgICAgICBtX3F1ZXVlZE9wZXJhdGlvbiA9IE9wZXJh
dGlvbldyaXRlOworICAgIGVsc2UKKyAgICAgICAgd3JpdGVyKCktPndyaXRlKHBvc2l0aW9uKCks
IG1fYmxvYkJlaW5nV3JpdHRlbi5nZXQoKSk7CisgICAgbV9pc09wZXJhdGlvbkluUHJvZ3Jlc3Mg
PSB0cnVlOworICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkud3JpdGVzdGFydEV2ZW50KTsKK30K
Kwordm9pZCBGaWxlV3JpdGVyOjpzZWVrKGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgQVNTRVJUKHdyaXRlcigpKTsKKyAgICBpZiAobV9yZWFkeVN0YXRlID09
IFdSSVRJTkcpIHsKKyAgICAgICAgc2V0RXJyb3IoRmlsZUVycm9yOjpJTlZBTElEX1NUQVRFX0VS
UiwgZWMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG1fdHJ1bmNhdGVM
ZW5ndGggPT0gLTEpOworICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9PSBPcGVyYXRpb25O
b25lKTsKKyAgICBzZWVrSW50ZXJuYWwocG9zaXRpb24pOworfQorCit2b2lkIEZpbGVXcml0ZXI6
OnRydW5jYXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
QVNTRVJUKHdyaXRlcigpKTsKKyAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Cisg
ICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HIHx8IHBvc2l0aW9uIDwgMCkgeworICAgICAg
ICBzZXRFcnJvcihGaWxlRXJyb3I6OklOVkFMSURfU1RBVEVfRVJSLCBlYyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKG1fcmVjdXJzaW9uRGVwdGggPiBrTWF4UmVjdXJzaW9uRGVw
dGgpIHsKKyAgICAgICAgc2V0RXJyb3IoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIsIGVjKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3JlYWR5U3RhdGUgPSBXUklUSU5HOworICAgIG1f
Ynl0ZXNXcml0dGVuID0gMDsKKyAgICBtX2J5dGVzVG9Xcml0ZSA9IDA7CisgICAgbV90cnVuY2F0
ZUxlbmd0aCA9IHBvc2l0aW9uOworICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9PSBPcGVy
YXRpb25Ob25lKTsKKyAgICBpZiAobV9pc09wZXJhdGlvbkluUHJvZ3Jlc3MpIC8vIFdlIG11c3Qg
YmUgd2FpdGluZyBmb3IgYW4gYWJvcnQgdG8gY29tcGxldGUuCisgICAgICAgIG1fcXVldWVkT3Bl
cmF0aW9uID0gT3BlcmF0aW9uVHJ1bmNhdGU7CisgICAgZWxzZQorICAgICAgICB3cml0ZXIoKS0+
dHJ1bmNhdGUobV90cnVuY2F0ZUxlbmd0aCk7CisgICAgbV9pc09wZXJhdGlvbkluUHJvZ3Jlc3Mg
PSB0cnVlOworICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkud3JpdGVzdGFydEV2ZW50KTsKK30K
Kwordm9pZCBGaWxlV3JpdGVyOjphYm9ydChFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NF
UlQod3JpdGVyKCkpOworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gV1JJVElORykgeworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgICsrbV9udW1BYm9ydHM7CisKKyAgICBpZiAobV9pc09wZXJh
dGlvbkluUHJvZ3Jlc3MpCisgICAgICAgIHdyaXRlcigpLT5hYm9ydCgpOworICAgIG1fcXVldWVk
T3BlcmF0aW9uID0gT3BlcmF0aW9uTm9uZTsKKyAgICBtX2Jsb2JCZWluZ1dyaXR0ZW4uY2xlYXIo
KTsKKyAgICBtX3RydW5jYXRlTGVuZ3RoID0gLTE7CisgICAgc2lnbmFsQ29tcGxldGlvbihGaWxl
RXJyb3I6OkFCT1JUX0VSUik7Cit9CisKK3ZvaWQgRmlsZVdyaXRlcjo6ZGlkV3JpdGUobG9uZyBs
b25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKQoreworICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0g
V1JJVElORyk7CisgICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOworICAgIEFTU0VS
VChtX2lzT3BlcmF0aW9uSW5Qcm9ncmVzcyk7CisgICAgQVNTRVJUKGJ5dGVzICsgbV9ieXRlc1dy
aXR0ZW4gPiAwKTsKKyAgICBBU1NFUlQoYnl0ZXMgKyBtX2J5dGVzV3JpdHRlbiA8PSBtX2J5dGVz
VG9Xcml0ZSk7CisgICAgbV9ieXRlc1dyaXR0ZW4gKz0gYnl0ZXM7CisgICAgQVNTRVJUKChtX2J5
dGVzV3JpdHRlbiA9PSBtX2J5dGVzVG9Xcml0ZSkgfHwgIWNvbXBsZXRlKTsKKyAgICBzZXRQb3Np
dGlvbihwb3NpdGlvbigpICsgYnl0ZXMpOworICAgIGlmIChwb3NpdGlvbigpID4gbGVuZ3RoKCkp
CisgICAgICAgIHNldExlbmd0aChwb3NpdGlvbigpKTsKKyAgICAvLyBUT0RPOiBUaHJvdHRsZSB0
byBubyBtb3JlIGZyZXF1ZW50bHkgdGhhbiBldmVyeSA1MG1zLgorICAgIGludCBudW1BYm9ydHMg
PSBtX251bUFib3J0czsKKyAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnByb2dyZXNzRXZlbnQp
OworICAgIC8vIFdlIGNvdWxkIGdldCBhbiBhYm9ydCBpbiB0aGUgaGFuZGxlciBmb3IgdGhpcyBl
dmVudC4gSWYgd2UgZG8sIGl0J3MKKyAgICAvLyBhbHJlYWR5IGhhbmRsZWQgdGhlIGNsZWFudXAg
YW5kIHNpZ25hbENvbXBsZXRpb24gY2FsbC4KKyAgICBpZiAoY29tcGxldGUgJiYgbnVtQWJvcnRz
ID09IG1fbnVtQWJvcnRzKSB7CisgICAgICAgIG1fYmxvYkJlaW5nV3JpdHRlbi5jbGVhcigpOwor
ICAgICAgICBtX2lzT3BlcmF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgICAgICBzaWduYWxD
b21wbGV0aW9uKEZpbGVFcnJvcjo6T0spOworICAgIH0KK30KKwordm9pZCBGaWxlV3JpdGVyOjpk
aWRUcnVuY2F0ZSgpCit7CisgICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPj0gMCk7CisgICAg
c2V0TGVuZ3RoKG1fdHJ1bmNhdGVMZW5ndGgpOworICAgIGlmIChwb3NpdGlvbigpID4gbGVuZ3Ro
KCkpCisgICAgICAgIHNldFBvc2l0aW9uKGxlbmd0aCgpKTsKKyAgICBtX2lzT3BlcmF0aW9uSW5Q
cm9ncmVzcyA9IGZhbHNlOworICAgIHNpZ25hbENvbXBsZXRpb24oRmlsZUVycm9yOjpPSyk7Cit9
CisKK3ZvaWQgRmlsZVdyaXRlcjo6ZGlkRmFpbChGaWxlRXJyb3I6OkVycm9yQ29kZSBjb2RlKQor
eworICAgIEFTU0VSVChtX2lzT3BlcmF0aW9uSW5Qcm9ncmVzcyk7CisgICAgbV9pc09wZXJhdGlv
bkluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBBU1NFUlQoY29kZSAhPSBGaWxlRXJyb3I6Ok9LKTsK
KyAgICBpZiAoY29kZSA9PSBGaWxlRXJyb3I6OkFCT1JUX0VSUikgeworICAgICAgICBPcGVyYXRp
b24gb3BlcmF0aW9uID0gbV9xdWV1ZWRPcGVyYXRpb247CisgICAgICAgIG1fcXVldWVkT3BlcmF0
aW9uID0gT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgZG9PcGVyYXRpb24ob3BlcmF0aW9uKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9xdWV1ZWRPcGVyYXRpb24gPT0gT3BlcmF0aW9u
Tm9uZSk7CisgICAgICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gV1JJVElORyk7CisgICAgICAg
IG1fYmxvYkJlaW5nV3JpdHRlbi5jbGVhcigpOworICAgICAgICBzaWduYWxDb21wbGV0aW9uKGNv
ZGUpOworICAgIH0KK30KKwordm9pZCBGaWxlV3JpdGVyOjpkb09wZXJhdGlvbihPcGVyYXRpb24g
b3BlcmF0aW9uKQoreworICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9PSBPcGVyYXRpb25O
b25lKTsKKyAgICBBU1NFUlQoIW1faXNPcGVyYXRpb25JblByb2dyZXNzKTsKKyAgICBBU1NFUlQo
b3BlcmF0aW9uID09IE9wZXJhdGlvbk5vbmUgfHwgb3BlcmF0aW9uID09IE9wZXJhdGlvbldyaXRl
IHx8IG9wZXJhdGlvbiA9PSBPcGVyYXRpb25UcnVuY2F0ZSk7CisgICAgc3dpdGNoIChvcGVyYXRp
b24pIHsKKyAgICBjYXNlIE9wZXJhdGlvbldyaXRlOgorICAgICAgICBBU1NFUlQobV90cnVuY2F0
ZUxlbmd0aCA9PSAtMSk7CisgICAgICAgIEFTU0VSVChtX2Jsb2JCZWluZ1dyaXR0ZW4uZ2V0KCkp
OworICAgICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFdSSVRJTkcpOworICAgICAgICB3cml0
ZXIoKS0+d3JpdGUocG9zaXRpb24oKSwgbV9ibG9iQmVpbmdXcml0dGVuLmdldCgpKTsKKyAgICAg
ICAgbV9pc09wZXJhdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIE9wZXJhdGlvblRydW5jYXRlOgorICAgICAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA+
PSAwKTsKKyAgICAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HKTsKKyAgICAgICAg
d3JpdGVyKCktPnRydW5jYXRlKG1fdHJ1bmNhdGVMZW5ndGgpOworICAgICAgICBtX2lzT3BlcmF0
aW9uSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3BlcmF0aW9u
Tm9uZToKKyAgICAgICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOworICAgICAgICBB
U1NFUlQoIW1fYmxvYkJlaW5nV3JpdHRlbi5nZXQoKSk7CisgICAgICAgIEFTU0VSVChtX3JlYWR5
U3RhdGUgPT0gRE9ORSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBGaWxlV3Jp
dGVyOjpzaWduYWxDb21wbGV0aW9uKEZpbGVFcnJvcjo6RXJyb3JDb2RlIGNvZGUpCit7CisgICAg
bV9yZWFkeVN0YXRlID0gRE9ORTsKKyAgICBtX3RydW5jYXRlTGVuZ3RoID0gLTE7CisgICAgaWYg
KEZpbGVFcnJvcjo6T0sgIT0gY29kZSkgeworICAgICAgICBtX2Vycm9yID0gRmlsZUVycm9yOjpj
cmVhdGUoY29kZSk7CisgICAgICAgIGlmIChGaWxlRXJyb3I6OkFCT1JUX0VSUiA9PSBjb2RlKQor
ICAgICAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS53cml0ZUV2ZW50KTsKKyAg
ICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLndyaXRlZW5kRXZlbnQpOworfQorCit2b2lkIEZpbGVX
cml0ZXI6OmZpcmVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCit7CisgICAgKyttX3Jl
Y3Vyc2lvbkRlcHRoOworICAgIGRpc3BhdGNoRXZlbnQoUHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKHR5
cGUsIHRydWUsIG1fYnl0ZXNXcml0dGVuLCBtX2J5dGVzVG9Xcml0ZSkpOworICAgIC0tbV9yZWN1
cnNpb25EZXB0aDsKKyAgICBBU1NFUlQobV9yZWN1cnNpb25EZXB0aCA+PSAwKTsKK30KKwordm9p
ZCBGaWxlV3JpdGVyOjpzZXRFcnJvcihGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9F
eGNlcHRpb25Db2RlKGVycm9yQ29kZSk7CisgICAgbV9lcnJvciA9IEZpbGVFcnJvcjo6Y3JlYXRl
KGVycm9yQ29kZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVXcml0ZXIuaAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVXcml0ZXIuaDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgRmlsZVdyaXRlcl9oCisjZGVmaW5lIEZpbGVXcml0ZXJfaAorCisjaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
QXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNs
dWRlICJGaWxlV3JpdGVyQmFzZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKKworY2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQXN5bmNG
aWxlV3JpdGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3Jp
dGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgZW51bSBSZWFkeVN0
YXRlIHsKKyAgICAgICAgSU5JVCA9IDAsCisgICAgICAgIFdSSVRJTkcgPSAxLAorICAgICAgICBE
T05FID0gMgorICAgIH07CisKKyAgICB2b2lkIHdyaXRlKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCBzZWVrKGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgdHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgYWJvcnQoRXhjZXB0aW9uQ29kZSYpOworICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorICAgIEZpbGVFcnJvciogZXJyb3IoKSBjb25z
dCB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CisKKyAgICAvLyBBc3luY0ZpbGVXcml0ZXJDbGll
bnQKKyAgICB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSk7Cisg
ICAgdm9pZCBkaWRUcnVuY2F0ZSgpOworICAgIHZvaWQgZGlkRmFpbChGaWxlRXJyb3I6OkVycm9y
Q29kZSk7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU3Vz
cGVuZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CisKKyAgICB1c2luZyBSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNlPjo6cmVmOworICAgIHVzaW5n
IFJlZkNvdW50ZWQ8RmlsZVdyaXRlckJhc2U+OjpkZXJlZjsKKworICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIod3JpdGVzdGFydCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihwcm9ncmVzcyk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3cml0ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7Cisg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CisgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUih3cml0ZWVuZCk7CisKK3ByaXZhdGU6CisgICAgZW51bSBP
cGVyYXRpb24geworICAgICAgICBPcGVyYXRpb25Ob25lLAorICAgICAgICBPcGVyYXRpb25Xcml0
ZSwKKyAgICAgICAgT3BlcmF0aW9uVHJ1bmNhdGUKKyAgICB9OworCisgICAgRmlsZVdyaXRlcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIH5GaWxlV3JpdGVyKCk7CisK
KyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsg
cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsg
fQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisKKyAg
ICB2b2lkIGRvT3BlcmF0aW9uKE9wZXJhdGlvbik7CisKKyAgICB2b2lkIHNpZ25hbENvbXBsZXRp
b24oRmlsZUVycm9yOjpFcnJvckNvZGUpOworCisgICAgdm9pZCBmaXJlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlKTsKKworICAgIHZvaWQgc2V0RXJyb3IoRmlsZUVycm9yOjpFcnJvckNv
ZGUsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIFJlZlB0cjxGaWxlRXJyb3I+IG1fZXJyb3I7Cisg
ICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAgIFJlYWR5U3RhdGUgbV9y
ZWFkeVN0YXRlOworICAgIGJvb2wgbV9pc09wZXJhdGlvbkluUHJvZ3Jlc3M7CisgICAgT3BlcmF0
aW9uIG1fcXVldWVkT3BlcmF0aW9uOworICAgIGxvbmcgbG9uZyBtX2J5dGVzV3JpdHRlbjsKKyAg
ICBsb25nIGxvbmcgbV9ieXRlc1RvV3JpdGU7CisgICAgbG9uZyBsb25nIG1fdHJ1bmNhdGVMZW5n
dGg7CisgICAgbG9uZyBsb25nIG1fbnVtQWJvcnRzOworICAgIGxvbmcgbG9uZyBtX3JlY3Vyc2lv
bkRlcHRoOworICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2JCZWluZ1dyaXR0ZW47Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNl
bmRpZiAvLyBGaWxlV3JpdGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlV3JpdGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5pZGwJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmlkbDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBBY3RpdmVET01PYmplY3QsCisgICAgICAgIENhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgICAg
ICBKU05vU3RhdGljVGFibGVzCisgICAgXSBGaWxlV3JpdGVyIHsKKyAgICAgICAgLy8gcmVhZHkg
c3RhdGVzCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElOSVQgPSAwOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBXUklUSU5HID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgRE9ORSA9IDI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9y
dCByZWFkeVN0YXRlOworCisgICAgICAgIC8vIGFzeW5jIHdyaXRlL21vZGlmeSBtZXRob2RzCisg
ICAgICAgIHZvaWQgd3JpdGUoaW4gQmxvYiBkYXRhKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwor
ICAgICAgICB2b2lkIHNlZWsoaW4gbG9uZyBsb25nIHBvc2l0aW9uKSByYWlzZXMgKEZpbGVFeGNl
cHRpb24pOworICAgICAgICB2b2lkIHRydW5jYXRlKGluIGxvbmcgbG9uZyBzaXplKSByYWlzZXMg
KEZpbGVFeGNlcHRpb24pOworCisgICAgICAgIHZvaWQgYWJvcnQoKSByYWlzZXMgKEZpbGVFeGNl
cHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlRXJyb3IgZXJyb3I7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmcgcG9zaXRpb247CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud3JpdGVzdGFydDsKKyAgICAgICAgICAgICAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25wcm9ncmVzczsKKyAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb253cml0ZTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25hYm9ydDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25lcnJvcjsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b253cml0ZWVuZDsKKyAgICB9OworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2UuY3BwCShyZXZpc2lvbiAxMTEwMDMpCShm
cm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckJhc2UuY3BwOjExMTAwMykKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZS5oIgorCisjaW5j
bHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlRXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0ZpbGVXcml0ZXJCYXNlOjp+RmlsZVdyaXRlckJhc2UoKQoreworfQorCit2b2lkIEZp
bGVXcml0ZXJCYXNlOjppbml0aWFsaXplKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiB3cml0
ZXIsIGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgQVNTRVJUKCFtX3dyaXRlcik7CisgICAgQVNT
RVJUKGxlbmd0aCA+PSAwKTsKKyAgICBtX3dyaXRlciA9IHdyaXRlcjsKKyAgICBtX2xlbmd0aCA9
IGxlbmd0aDsKK30KKworRmlsZVdyaXRlckJhc2U6OkZpbGVXcml0ZXJCYXNlKCkKKyAgICA6IG1f
cG9zaXRpb24oMCkKK3sKK30KKwordm9pZCBGaWxlV3JpdGVyQmFzZTo6c2Vla0ludGVybmFsKGxv
bmcgbG9uZyBwb3NpdGlvbikKK3sKKyAgICBpZiAocG9zaXRpb24gPiBtX2xlbmd0aCkKKyAgICAg
ICAgcG9zaXRpb24gPSBtX2xlbmd0aDsKKyAgICBlbHNlIGlmIChwb3NpdGlvbiA8IDApCisgICAg
ICAgIHBvc2l0aW9uID0gbV9sZW5ndGggKyBwb3NpdGlvbjsKKyAgICBpZiAocG9zaXRpb24gPCAw
KQorICAgICAgICBwb3NpdGlvbiA9IDA7CisgICAgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdy
aXRlckJhc2UuaAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXJCYXNlLmg6MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEZpbGVXcml0ZXJCYXNlX2gKKyNkZWZpbmUgRmlsZVdyaXRlckJhc2VfaAorCisjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBBc3luY0ZpbGVXcml0ZXI7CisKK3R5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CisKK2NsYXNzIEZpbGVXcml0ZXJCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8
RmlsZVdyaXRlckJhc2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GaWxlV3JpdGVyQmFzZSgp
OworICAgIHZvaWQgaW5pdGlhbGl6ZShQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxvbmcg
bG9uZyBsZW5ndGgpOworCisgICAgbG9uZyBsb25nIHBvc2l0aW9uKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3Bvc2l0aW9uOworICAgIH0KKyAgICBsb25nIGxvbmcgbGVuZ3RoKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xlbmd0aDsKKyAgICB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBGaWxlV3JpdGVyQmFzZSgpOworCisgICAgQXN5bmNGaWxlV3JpdGVyKiB3cml0ZXIo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fd3JpdGVyLmdldCgpOworICAgIH0KKworICAgIHZv
aWQgc2V0UG9zaXRpb24obG9uZyBsb25nIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgbV9wb3Np
dGlvbiA9IHBvc2l0aW9uOworICAgIH0KKworICAgIHZvaWQgc2V0TGVuZ3RoKGxvbmcgbG9uZyBs
ZW5ndGgpCisgICAgeworICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKKyAgICB9CisKKyAgICB2
b2lkIHNlZWtJbnRlcm5hbChsb25nIGxvbmcgcG9zaXRpb24pOworCitwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8RmlsZVdyaXRlckJhc2U+OworCisgICAgT3duUHRy
PEFzeW5jRmlsZVdyaXRlcj4gbV93cml0ZXI7CisgICAgbG9uZyBsb25nIG1fcG9zaXRpb247Cisg
ICAgbG9uZyBsb25nIG1fbGVuZ3RoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRmlsZVdyaXRlckJhc2Vf
aApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNl
Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oOjExMTAwMykKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmlsZVdyaXRlckJhc2VDYWxs
YmFja19oCisjZGVmaW5lIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBGaWxlV3JpdGVyQmFzZTsKKworY2xhc3MgRmlsZVdyaXRlckJhc2VD
YWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2s+IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5GaWxlV3JpdGVyQmFzZUNhbGxiYWNrKCkgeyB9CisgICAgdmly
dHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVXcml0ZXJCYXNlKikgPSAwOworfTsKKworfSAvLyBu
YW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIEZp
bGVXcml0ZXJCYXNlQ2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaAkocmV2aXNpb24gMTExMDAz
KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5oOjExMTAw
MykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGaWxlV3JpdGVyQ2Fs
bGJhY2tfaAorI2RlZmluZSBGaWxlV3JpdGVyQ2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBGaWxlV3JpdGVyOworCitjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2sgOiBw
dWJsaWMgUmVmQ291bnRlZDxGaWxlV3JpdGVyQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5GaWxlV3JpdGVyQ2FsbGJhY2soKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZl
bnQoRmlsZVdyaXRlciopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBGaWxlV3JpdGVyQ2FsbGJhY2tfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVX
cml0ZXJDYWxsYmFjay5pZGwJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlV3JpdGVyQ2FsbGJhY2suaWRsOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittb2R1bGUgZmlsZWFwaSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIENhbGxiYWNrCisgICAgXSBGaWxl
V3JpdGVyQ2FsbGJhY2sgeworICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIEZpbGVXcml0
ZXIgZmlsZVdyaXRlcik7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcAkocmV2aXNpb24gMTExMDAz
KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmNwcDoxMTEwMDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkZpbGVXcml0ZXJTeW5jLmgiCisK
KyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIuaCIKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVk
ZSAiRmlsZUV4Y2VwdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRmlsZVdy
aXRlclN5bmM6OndyaXRlKEJsb2IqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFT
U0VSVCh3cml0ZXIoKSk7CisgICAgQVNTRVJUKG1fY29tcGxldGUpOworICAgIGVjID0gMDsKKyAg
ICBpZiAoIWRhdGEpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpUWVBFX01JU01BVENI
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHByZXBhcmVGb3JXcml0ZSgpOwor
ICAgIHdyaXRlcigpLT53cml0ZShwb3NpdGlvbigpLCBkYXRhKTsKKyAgICB3cml0ZXIoKS0+d2Fp
dEZvck9wZXJhdGlvblRvQ29tcGxldGUoKTsKKyAgICBBU1NFUlQobV9jb21wbGV0ZSk7CisgICAg
ZWMgPSBGaWxlRXhjZXB0aW9uOjpFcnJvckNvZGVUb0V4Y2VwdGlvbkNvZGUobV9lcnJvcik7Cisg
ICAgaWYgKGVjKQorICAgICAgICByZXR1cm47CisgICAgc2V0UG9zaXRpb24ocG9zaXRpb24oKSAr
IGRhdGEtPnNpemUoKSk7CisgICAgaWYgKHBvc2l0aW9uKCkgPiBsZW5ndGgoKSkKKyAgICAgICAg
c2V0TGVuZ3RoKHBvc2l0aW9uKCkpOworfQorCit2b2lkIEZpbGVXcml0ZXJTeW5jOjpzZWVrKGxv
bmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKHdyaXRl
cigpKTsKKyAgICBBU1NFUlQobV9jb21wbGV0ZSk7CisgICAgZWMgPSAwOworICAgIHNlZWtJbnRl
cm5hbChwb3NpdGlvbik7Cit9CisKK3ZvaWQgRmlsZVdyaXRlclN5bmM6OnRydW5jYXRlKGxvbmcg
bG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFTU0VSVCh3cml0ZXIoKSk7
CisgICAgQVNTRVJUKG1fY29tcGxldGUpOworICAgIGVjID0gMDsKKyAgICBpZiAob2Zmc2V0IDwg
MCkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHByZXBhcmVGb3JXcml0ZSgpOworICAgIHdyaXRlcigp
LT50cnVuY2F0ZShvZmZzZXQpOworICAgIHdyaXRlcigpLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21w
bGV0ZSgpOworICAgIEFTU0VSVChtX2NvbXBsZXRlKTsKKyAgICBlYyA9IEZpbGVFeGNlcHRpb246
OkVycm9yQ29kZVRvRXhjZXB0aW9uQ29kZShtX2Vycm9yKTsKKyAgICBpZiAoZWMpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAob2Zmc2V0IDwgcG9zaXRpb24oKSkKKyAgICAgICAgc2V0UG9zaXRp
b24ob2Zmc2V0KTsKKyAgICBzZXRMZW5ndGgob2Zmc2V0KTsKK30KKwordm9pZCBGaWxlV3JpdGVy
U3luYzo6ZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKQoreworICAgIEFT
U0VSVChtX2Vycm9yID09IEZpbGVFcnJvcjo6T0spOworICAgIEFTU0VSVCghbV9jb21wbGV0ZSk7
CisjaWZuZGVmIE5ERUJVRworICAgIG1fY29tcGxldGUgPSBjb21wbGV0ZTsKKyNlbHNlCisgICAg
QVNTRVJUX1VOVVNFRChjb21wbGV0ZSwgY29tcGxldGUpOworI2VuZGlmCit9CisKK3ZvaWQgRmls
ZVdyaXRlclN5bmM6OmRpZFRydW5jYXRlKCkKK3sKKyAgICBBU1NFUlQobV9lcnJvciA9PSBGaWxl
RXJyb3I6Ok9LKTsKKyAgICBBU1NFUlQoIW1fY29tcGxldGUpOworI2lmbmRlZiBOREVCVUcKKyAg
ICBtX2NvbXBsZXRlID0gdHJ1ZTsKKyNlbmRpZgorfQorCit2b2lkIEZpbGVXcml0ZXJTeW5jOjpk
aWRGYWlsKEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yKQoreworICAgIEFTU0VSVChtX2Vycm9y
ID09IEZpbGVFcnJvcjo6T0spOworICAgIG1fZXJyb3IgPSBlcnJvcjsKKyAgICBBU1NFUlQoIW1f
Y29tcGxldGUpOworI2lmbmRlZiBOREVCVUcKKyAgICBtX2NvbXBsZXRlID0gdHJ1ZTsKKyNlbmRp
ZgorfQorCitGaWxlV3JpdGVyU3luYzo6RmlsZVdyaXRlclN5bmMoKQorICAgIDogbV9lcnJvcihG
aWxlRXJyb3I6Ok9LKQorI2lmbmRlZiBOREVCVUcKKyAgICAsIG1fY29tcGxldGUodHJ1ZSkKKyNl
bmRpZgoreworfQorCit2b2lkIEZpbGVXcml0ZXJTeW5jOjpwcmVwYXJlRm9yV3JpdGUoKQorewor
ICAgIEFTU0VSVChtX2NvbXBsZXRlKTsKKyAgICBtX2Vycm9yID0gRmlsZUVycm9yOjpPSzsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgbV9jb21wbGV0ZSA9IGZhbHNlOworI2VuZGlmCit9CisKK0ZpbGVX
cml0ZXJTeW5jOjp+RmlsZVdyaXRlclN5bmMoKQoreworfQorCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5oCShyZXZpc2lv
biAxMTEwMDMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlclN5bmMuaDox
MTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5
bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmlsZVdyaXRlclN5
bmNfaAorI2RlZmluZSBGaWxlV3JpdGVyU3luY19oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CisKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJGaWxlRXJy
b3IuaCIKKyNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmxvYjsKKwordHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgRmlsZVdyaXRlclN5bmMgOiBwdWJsaWMgRmlsZVdy
aXRlckJhc2UsIHB1YmxpYyBBc3luY0ZpbGVXcml0ZXJDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0ZXJTeW5jPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlV3JpdGVyU3luYygpKTsKKyAgICB9CisgICAgdmlydHVh
bCB+RmlsZVdyaXRlclN5bmMoKTsKKworICAgIC8vIEZpbGVXcml0ZXJCYXNlCisgICAgdm9pZCB3
cml0ZShCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2Vlayhsb25nIGxvbmcgcG9z
aXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5n
dGgsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIC8vIEFzeW5jRmlsZVdyaXRlckNsaWVudCwgdmlh
IEZpbGVXcml0ZXJCYXNlCisgICAgdm9pZCBkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wg
Y29tcGxldGUpOworICAgIHZvaWQgZGlkVHJ1bmNhdGUoKTsKKyAgICB2b2lkIGRpZEZhaWwoRmls
ZUVycm9yOjpFcnJvckNvZGUpOworCitwcml2YXRlOgorICAgIEZpbGVXcml0ZXJTeW5jKCk7Cisg
ICAgdm9pZCBwcmVwYXJlRm9yV3JpdGUoKTsKKworICAgIEZpbGVFcnJvcjo6RXJyb3JDb2RlIG1f
ZXJyb3I7CisjaWZuZGVmIE5ERUJVRworICAgIGJvb2wgbV9jb21wbGV0ZTsKKyNlbmRpZgorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVN
KQorCisjZW5kaWYgLy8gRmlsZVdyaXRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5pZGwJKHJldmlzaW9uIDExMTAw
MykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5pZGw6MTExMDAz
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBodG1sIHsKKyAgICBpbnRl
cmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICBdIEZpbGVXcml0
ZXJTeW5jIHsKKyAgICAgICAgLy8gc3luY2hyb25vdXMgd3JpdGUvbW9kaWZ5IG1ldGhvZHMKKyAg
ICAgICAgdm9pZCB3cml0ZShpbiBCbG9iIGRhdGEpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Cisg
ICAgICAgIHZvaWQgc2VlayhpbiBsb25nIGxvbmcgcG9zaXRpb24pIHJhaXNlcyAoRmlsZUV4Y2Vw
dGlvbik7CisgICAgICAgIHZvaWQgdHJ1bmNhdGUoaW4gbG9uZyBsb25nIHNpemUpIHJhaXNlcyAo
RmlsZUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBw
b3NpdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBsZW5ndGg7Cisg
ICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZp
bGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcDoxMTEwMDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvY2FsRmls
ZVN5c3RlbS5oIgorCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisjZXJyb3IgIkNocm9taXVtIHNo
b3VsZCBub3QgY29tcGlsZSB0aGlzIGZpbGUgYW5kIGluc3RlYWQgZGVmaW5lIGl0cyBvd24gdmVy
c2lvbiBvZiB0aGVzZSBmYWN0b3JpZXMuIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCisKKyNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKKyNpbmNsdWRlICJET01GaWxlU3lz
dGVtLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0xvY2FsRmlsZVN5c3RlbSogTG9jYWxGaWxlU3lzdGVtOjpzX2lu
c3RhbmNlID0gMDsKKwordm9pZCBMb2NhbEZpbGVTeXN0ZW06OmluaXRpYWxpemVMb2NhbEZpbGVT
eXN0ZW0oY29uc3QgU3RyaW5nJiBiYXNlUGF0aCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGlu
aXRpYWxpemUgdGhlIHF1b3RhIHNldHRpbmdzIGFzIHdlbGwuCisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoIXNfaW5zdGFuY2UpOworICAgIGlmIChzX2luc3RhbmNlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBPd25QdHI8TG9jYWxGaWxlU3lzdGVtPiBsb2NhbEZpbGVT
eXN0ZW0gPSBhZG9wdFB0cihuZXcgTG9jYWxGaWxlU3lzdGVtKGJhc2VQYXRoKSk7CisgICAgc19p
bnN0YW5jZSA9IGxvY2FsRmlsZVN5c3RlbS5sZWFrUHRyKCk7Cit9CisKK0xvY2FsRmlsZVN5c3Rl
bSYgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKQoreworICAgIC8vIGluaXRpYWxp
emVMb2NhbEZpbGVTeXN0ZW0gbXVzdCBiZSBjYWxsZWQgcHJpb3IgY2FsbGluZyB0aGlzLgorICAg
IEFTU0VSVChzX2luc3RhbmNlKTsKKyAgICByZXR1cm4gKnNfaW5zdGFuY2U7Cit9CisKK1N0cmlu
ZyBMb2NhbEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1CYXNlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fYmFzZVBhdGg7Cit9CisKK3N0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBib29sIGNyZWF0ZSwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBBc3luY0Zp
bGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtKGJhc2VQYXRoLCBpZGVudGlmaWVyLCB0eXBlLCBjcmVh
dGUsIGNhbGxiYWNrcyk7Cit9CisKK3ZvaWQgTG9jYWxGaWxlU3lzdGVtOjpyZWFkRmlsZVN5c3Rl
bShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUg
dHlwZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgYm9v
bCkKK3sKKyAgICAvLyBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtIGNhbGxzIGNhbGxi
YWNrcyBzeW5jaHJvbm91c2x5LCBzbyB0aGUgbWV0aG9kIG5lZWRzIHRvIGJlIGNhbGxlZCBhc3lu
Y2hyb25vdXNseS4KKyAgICBjb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJm9w
ZW5GaWxlU3lzdGVtLCBmaWxlU3lzdGVtQmFzZVBhdGgoKSwgY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIGZhbHNlLCBjYWxsYmFja3MpKTsKK30K
Kwordm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGJvb2wpCit7
CisgICAgLy8gQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbSBjYWxscyBjYWxsYmFja3Mg
c3luY2hyb25vdXNseSwgc28gdGhlIG1ldGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYXN5bmNocm9u
b3VzbHkuCisgICAgY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmls
ZVN5c3RlbSwgZmlsZVN5c3RlbUJhc2VQYXRoKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PmRhdGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCB0cnVlLCBjYWxsYmFja3MpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmgJ
KHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVT
eXN0ZW0uaDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTG9j
YWxGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTG9j
YWxGaWxlU3lzdGVtX2gKKyNkZWZpbmUgTG9jYWxGaWxlU3lzdGVtX2gKKworI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVycm9yQ2Fs
bGJhY2s7CitjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OworCisvLyBLZWVwcyBwZXItcHJvY2VzcyBpbmZvcm1hdGlvbiBhbmQgcHJvdmlkZXMg
YW4gZW50cnkgcG9pbnQgdG8gb3BlbiBhIGZpbGUgc3lzdGVtLgorY2xhc3MgTG9jYWxGaWxlU3lz
dGVtIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbEZpbGVTeXN0ZW0pOworcHVibGlj
OgorICAgIC8vIFJldHVybnMgYSBwZXItcHJvY2VzcyBpbnN0YW5jZSBvZiBMb2NhbEZpbGVTeXN0
ZW0uCisgICAgLy8gTm90ZSB0aGF0IExvY2FsRmlsZVN5c3RlbTo6aW5pdGlhbGl6ZUxvY2FsRmls
ZVN5c3RlbSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUKKyAgICAvLyBjYWxsaW5nIHRoaXMgb25lLgor
ICAgIHN0YXRpYyBMb2NhbEZpbGVTeXN0ZW0mIGxvY2FsRmlsZVN5c3RlbSgpOworCisgICAgLy8g
RG9lcyBub3QgY3JlYXRlIHRoZSByb290IHBhdGggZm9yIGZpbGUgc3lzdGVtLCBqdXN0IHJlYWRz
IGl0IGlmIGF2YWlsYWJsZS4KKyAgICB2b2lkIHJlYWRGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiwgYm9vbCBzeW5jaHJvbm91cyA9IGZhbHNlKTsKKworICAgIHZvaWQgcmVx
dWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN5c3RlbTo6
VHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PiwgYm9vbCBzeW5jaHJvbm91cyA9IGZhbHNlKTsKKworI2lmICFQTEFURk9STShDSFJPTUlVTSkK
KyAgICAvLyBUaGlzIGNhbGwgaXMgbm90IHRocmVhZC1zYWZlOyBtdXN0IGJlIGNhbGxlZCBiZWZv
cmUgYW55IHdvcmtlciB0aHJlYWRzIGFyZSBjcmVhdGVkLgorICAgIHZvaWQgaW5pdGlhbGl6ZUxv
Y2FsRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBmaWxlU3lzdGVtQmFz
ZVBhdGgoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIExvY2FsRmlsZVN5c3RlbShj
b25zdCBTdHJpbmcmIGJhc2VQYXRoKQorICAgICAgICA6IG1fYmFzZVBhdGgoYmFzZVBhdGgpCisg
ICAgeworICAgIH0KKworICAgIHN0YXRpYyBMb2NhbEZpbGVTeXN0ZW0qIHNfaW5zdGFuY2U7CisK
KyAgICAvLyBBbiBpbm5lciBjbGFzcyB0aGF0IGVuZm9yY2VzIHRocmVhZC1zYWZlIHN0cmluZyBh
Y2Nlc3MuCisgICAgY2xhc3MgU3lzdGVtQmFzZVBhdGggeworICAgIHB1YmxpYzoKKyAgICAgICAg
ZXhwbGljaXQgU3lzdGVtQmFzZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKSA6IG1fdmFsdWUocGF0
aCkgeyB9CisgICAgICAgIG9wZXJhdG9yIFN0cmluZygpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBtX3ZhbHVlLmlzb2xhdGVkQ29weSgpOworICAgICAgICB9CisgICAgcHJp
dmF0ZToKKyAgICAgICAgU3RyaW5nIG1fdmFsdWU7CisgICAgfTsKKworICAgIFN5c3RlbUJhc2VQ
YXRoIG1fYmFzZVBhdGg7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gTG9jYWxGaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5oCShyZXZpc2lvbiAxMTEw
MDMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaDoxMTEwMDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZXRhZGF0YV9oCisjZGVmaW5lIE1ldGFkYXRhX2gK
KworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXRhZGF0YT4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1ldGFkYXRhPiBjcmVhdGUoY29uc3QgRmlsZU1ldGFkYXRhJiBw
bGF0Zm9ybU1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXRh
ZGF0YShwbGF0Zm9ybU1ldGFkYXRhKSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWV0YWRhdGE+IGNyZWF0ZShNZXRhZGF0YSogbWV0YWRhdGEpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1ldGFkYXRhKG1ldGFkYXRhLT5tX3BsYXRmb3JtTWV0YWRhdGEpKTsK
KyAgICB9CisKKyAgICAvLyBOZWVkcyB0byByZXR1cm4gZXBvY2ggdGltZSBpbiBtaWxsaXNlY29u
ZHMgZm9yIERhdGUgd2hpbGUgRmlsZU1ldGFkYXRhJ3MgbW9kaWZpY2F0aW9uVGltZSBpcyBpbiBz
ZWNvbmRzLgorICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybU1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUgKiAxMDAwLjA7IH0KKyAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4obV9wbGF0Zm9ybU1ldGFkYXRhLmxlbmd0aCk7IH0KKworcHJpdmF0ZToKKyAgICBN
ZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIHBsYXRmb3JtTWV0YWRhdGEpCisgICAgICAgIDog
bV9wbGF0Zm9ybU1ldGFkYXRhKHBsYXRmb3JtTWV0YWRhdGEpCisgICAgeworICAgIH0KKworICAg
IEZpbGVNZXRhZGF0YSBtX3BsYXRmb3JtTWV0YWRhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZQor
CisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gTWV0YWRhdGFfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaWRs
CShyZXZpc2lvbiAxMTEwMDMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEu
aWRsOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0
YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKyAg
ICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICAgICAg
SlNOb1N0YXRpY1RhYmxlcworICAgIF0gTWV0YWRhdGEgeworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRGF0ZSBtb2RpZmljYXRpb25UaW1lOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsb25nIHNpemU7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaAkocmV2aXNp
b24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL01ldGFkYXRhQ2FsbGJhY2su
aDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFD
YWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1ldGFkYXRh
Q2FsbGJhY2tfaAorI2RlZmluZSBNZXRhZGF0YUNhbGxiYWNrX2gKKworI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTWV0YWRhdGE7CisKK2NsYXNzIE1ldGFkYXRhQ2FsbGJhY2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxNZXRhZGF0YUNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
TWV0YWRhdGFDYWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChNZXRh
ZGF0YSopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCisKKyNlbmRpZiAvLyBNZXRhZGF0YUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5p
ZGwJKHJldmlzaW9uIDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9NZXRhZGF0
YUNhbGxiYWNrLmlkbDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vTWV0YWRhdGFDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21v
ZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxF
X1NZU1RFTSwKKyAgICAgICAgQ2FsbGJhY2sKKyAgICBdIE1ldGFkYXRhQ2FsbGJhY2sgeworICAg
ICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIE1ldGFkYXRhIG1ldGFkYXRhKTsKKyAgICB9Owor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1N5bmNDYWxsYmFja0hl
bHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9T
eW5jQ2FsbGJhY2tIZWxwZXIuaAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1N5bmNDYWxsYmFja0hlbHBlci5oOjExMTAwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9TeW5jQ2FsbGJhY2tIZWxwZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU3luY0NhbGxiYWNrSGVscGVyX2gKKyNkZWZpbmUgU3lu
Y0NhbGxiYWNrSGVscGVyX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUg
IkRpcmVjdG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiRW50cnlBcnJheVN5bmMuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgorI2luY2x1ZGUgIkZp
bGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJGaWxlU3lz
dGVtQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAi
Vm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFzeW5jRmls
ZVN5c3RlbTsKK2NsYXNzIERpcmVjdG9yeUVudHJ5U3luYzsKK2NsYXNzIEVudHJ5QXJyYXlTeW5j
OworY2xhc3MgRW50cnlTeW5jOworY2xhc3MgRmlsZUVudHJ5U3luYzsKKwordHlwZWRlZiBpbnQg
RXhjZXB0aW9uQ29kZTsKKworLy8gQSBoZWxwZXIgdGVtcGxhdGUgZm9yIEZpbGVTeXN0ZW1TeW5j
IGltcGxlbWVudGF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFN1Y2Nlc3NDYWxsYmFjaywgdHlw
ZW5hbWUgT2JzZXJ2ZXJUeXBlLCB0eXBlbmFtZSBDYWxsYmFja0FyZywgdHlwZW5hbWUgUmVzdWx0
VHlwZT4KK2NsYXNzIFN5bmNDYWxsYmFja0hlbHBlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3luY0NhbGxiYWNrSGVscGVyKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFN5bmNDYWxsYmFj
a0hlbHBlcjxTdWNjZXNzQ2FsbGJhY2ssIE9ic2VydmVyVHlwZSwgQ2FsbGJhY2tBcmcsIFJlc3Vs
dFR5cGU+IEhlbHBlclR5cGU7CisgICAgU3luY0NhbGxiYWNrSGVscGVyKE9ic2VydmVyVHlwZSog
b2JzZXJ2ZXIgPSAwKQorICAgICAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgICAgICwg
bV9zdWNjZXNzQ2FsbGJhY2soU3VjY2Vzc0NhbGxiYWNrSW1wbDo6Y3JlYXRlKHRoaXMpKQorICAg
ICAgICAsIG1fZXJyb3JDYWxsYmFjayhFcnJvckNhbGxiYWNrSW1wbDo6Y3JlYXRlKHRoaXMpKQor
ICAgICAgICAsIG1fZXhjZXB0aW9uQ29kZSgwKQorICAgICAgICAsIG1fY29tcGxldGVkKGZhbHNl
KQorICAgIHsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPFJlc3VsdFR5cGU+IGdldFJlc3VsdChF
eGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAgICAgIGlmIChtX29ic2VydmVyKSB7CisgICAg
ICAgICAgICB3aGlsZSAoIW1fY29tcGxldGVkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX29i
c2VydmVyLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fZXhjZXB0aW9uQ29kZSA9IEZpbGVFeGNlcHRpb246OkFCT1JUX0VSUjsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGVjID0gbV9leGNlcHRpb25Db2RlOworICAgICAgICByZXR1cm4gbV9y
ZXN1bHQucmVsZWFzZSgpOworICAgIH0KKworICAgIFBhc3NSZWZQdHI8U3VjY2Vzc0NhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2soKSB7IHJldHVybiBtX3N1Y2Nlc3NDYWxsYmFjazsgfQorICAgIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaygpIHsgcmV0dXJuIG1fZXJyb3JD
YWxsYmFjazsgfQorCitwcml2YXRlOgorICAgIGNsYXNzIFN1Y2Nlc3NDYWxsYmFja0ltcGwgOiBw
dWJsaWMgU3VjY2Vzc0NhbGxiYWNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN1Y2Nlc3NDYWxsYmFja0ltcGw+IGNyZWF0ZShIZWxwZXJUeXBlKiBoZWxwZXIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3VjY2Vzc0NhbGxiYWNr
SW1wbChoZWxwZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVF
dmVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faGVscGVyLT5zZXRFcnJvcigwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChDYWxsYmFja0FyZyog
YXJnKQorICAgICAgICB7CisgICAgICAgICAgICBtX2hlbHBlci0+c2V0UmVzdWx0KFJlc3VsdFR5
cGU6OmNyZWF0ZShhcmcpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBTdWNjZXNzQ2FsbGJhY2tJbXBsKEhlbHBlclR5cGUqIGhl
bHBlcikKKyAgICAgICAgICAgIDogbV9oZWxwZXIoaGVscGVyKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgSGVscGVyVHlwZSogbV9oZWxwZXI7CisgICAgfTsKKworICAgIGNsYXNzIEVy
cm9yQ2FsbGJhY2tJbXBsIDogcHVibGljIEVycm9yQ2FsbGJhY2sgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFja0ltcGw+IGNyZWF0ZShIZWxwZXJU
eXBlKiBoZWxwZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RXJyb3JDYWxsYmFja0ltcGwoaGVscGVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlRXZlbnQoRmlsZUVycm9yKiBlcnJvcikKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGVycm9yKTsKKyAgICAgICAgICAgIG1faGVscGVyLT5zZXRFcnJvcihlcnJvci0+
Y29kZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBFcnJvckNhbGxiYWNrSW1wbChIZWxwZXJUeXBlKiBoZWxwZXIpCisgICAg
ICAgICAgICA6IG1faGVscGVyKGhlbHBlcikKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAg
IEhlbHBlclR5cGUqIG1faGVscGVyOworICAgIH07CisKKyAgICBmcmllbmQgY2xhc3MgU3VjY2Vz
c0NhbGxiYWNrSW1wbDsKKyAgICBmcmllbmQgY2xhc3MgRXJyb3JDYWxsYmFja0ltcGw7CisKKyAg
ICB2b2lkIHNldEVycm9yKGludCBjb2RlKQorICAgIHsKKyAgICAgICAgbV9leGNlcHRpb25Db2Rl
ID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9FeGNlcHRpb25Db2RlKGNvZGUpOworICAgICAg
ICBtX2NvbXBsZXRlZCA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBzZXRSZXN1bHQoUGFzc1Jl
ZlB0cjxSZXN1bHRUeXBlPiByZXN1bHQpCisgICAgeworICAgICAgICBtX3Jlc3VsdCA9IHJlc3Vs
dDsKKyAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOworICAgIH0KKworICAgIE9ic2VydmVyVHlw
ZSogbV9vYnNlcnZlcjsKKyAgICBSZWZQdHI8U3VjY2Vzc0NhbGxiYWNrSW1wbD4gbV9zdWNjZXNz
Q2FsbGJhY2s7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2tJbXBsPiBtX2Vycm9yQ2FsbGJhY2s7
CisgICAgUmVmUHRyPFJlc3VsdFR5cGU+IG1fcmVzdWx0OworICAgIEV4Y2VwdGlvbkNvZGUgbV9l
eGNlcHRpb25Db2RlOworICAgIGJvb2wgbV9jb21wbGV0ZWQ7Cit9OworCitzdHJ1Y3QgRW1wdHlU
eXBlIDogcHVibGljIFJlZkNvdW50ZWQ8RW1wdHlUeXBlPiB7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RW1wdHlUeXBlPiBjcmVhdGUoRW1wdHlUeXBlKikKKyAgICB7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KK307CisKK3N0cnVjdCBFbXB0eU9ic2VydmVyVHlwZSB7CisgICAgYm9vbCB3YWl0
Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfTsKKwordHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8RW50cnlDYWxsYmFjaywgQXN5
bmNGaWxlU3lzdGVtLCBFbnRyeSwgRW50cnlTeW5jPiBFbnRyeVN5bmNDYWxsYmFja0hlbHBlcjsK
K3R5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPEVudHJpZXNDYWxsYmFjaywgQXN5bmNGaWxlU3lz
dGVtLCBFbnRyeUFycmF5LCBFbnRyeUFycmF5U3luYz4gRW50cmllc1N5bmNDYWxsYmFja0hlbHBl
cjsKK3R5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPE1ldGFkYXRhQ2FsbGJhY2ssIEFzeW5jRmls
ZVN5c3RlbSwgTWV0YWRhdGEsIE1ldGFkYXRhPiBNZXRhZGF0YVN5bmNDYWxsYmFja0hlbHBlcjsK
K3R5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPFZvaWRDYWxsYmFjaywgQXN5bmNGaWxlU3lzdGVt
LCBFbXB0eVR5cGUsIEVtcHR5VHlwZT4gVm9pZFN5bmNDYWxsYmFja0hlbHBlcjsKK3R5cGVkZWYg
U3luY0NhbGxiYWNrSGVscGVyPEZpbGVTeXN0ZW1DYWxsYmFjaywgRW1wdHlPYnNlcnZlclR5cGUs
IERPTUZpbGVTeXN0ZW0sIERPTUZpbGVTeXN0ZW1TeW5jPiBGaWxlU3lzdGVtU3luY0NhbGxiYWNr
SGVscGVyOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCisKKyNlbmRpZiAvLyBTeW5jQ2FsbGJhY2tIZWxwZXJfaApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dlYktpdEZsYWdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dlYktpdEZsYWdzLmgJKHJldmlzaW9u
IDExMTAwMykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRGbGFncy5oOjExMTAw
MykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9XZWJLaXRGbGFncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYktpdEZsYWdzX2gKKyNkZWZp
bmUgV2ViS2l0RmxhZ3NfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYktpdEZsYWdzIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
S2l0RmxhZ3M+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4g
Y3JlYXRlKGJvb2wgY3JlYXRlID0gZmFsc2UsIGJvb2wgZXhjbHVzaXZlID0gZmFsc2UpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdEZsYWdzKGNyZWF0ZSwgZXhjbHVz
aXZlKSk7CisgICAgfQorCisgICAgYm9vbCBpc0NyZWF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jl
YXRlOyB9CisgICAgdm9pZCBzZXRDcmVhdGUoYm9vbCBjcmVhdGUpIHsgbV9jcmVhdGUgPSBjcmVh
dGU7IH0KKyAgICBib29sIGlzRXhjbHVzaXZlKCkgY29uc3QgeyByZXR1cm4gbV9leGNsdXNpdmU7
IH0KKyAgICB2b2lkIHNldEV4Y2x1c2l2ZShib29sIGV4Y2x1c2l2ZSkgeyBtX2V4Y2x1c2l2ZSA9
IGV4Y2x1c2l2ZTsgfQorCitwcml2YXRlOgorICAgIFdlYktpdEZsYWdzKGJvb2wgY3JlYXRlLCBi
b29sIGV4Y2x1c2l2ZSkKKyAgICAgICAgOiBtX2NyZWF0ZShjcmVhdGUpCisgICAgICAgICwgbV9l
eGNsdXNpdmUoZXhjbHVzaXZlKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBtX2NyZWF0ZTsKKyAg
ICBib29sIG1fZXhjbHVzaXZlOworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIFdlYktpdEZsYWdzX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNv
bnRleHRGaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcDoxMTEwMDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHRGaWxlU3lzdGVtLmgiCisKKyNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNp
bmNsdWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIK
KyNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5
U3luYy5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlRW50cnlT
eW5jLmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5o
IgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKKyNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgorI2luY2x1ZGUg
IldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFdvcmtlckNv
bnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShXb3JrZXJDb250ZXh0KiB3
b3JrZXIsIGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3
b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3Rl
bTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzRmlsZVN5c3RlbSgpKSB7CisgICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2Fs
bGJhY2sod29ya2VyLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6
OlNFQ1VSSVRZX0VSUikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQXN5bmNGaWxl
U3lzdGVtOjpUeXBlIGZpbGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVt
OjpUeXBlPih0eXBlKTsKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNWYWxpZFR5cGUoZmls
ZVN5c3RlbVR5cGUpKSB7CisgICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2so
d29ya2VyLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTG9j
YWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh3b3JrZXIs
IGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB3b3JrZXIpLCBmYWxzZSk7Cit9CisKK1Bhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbVN5bmM+IFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbVN5bmMoV29ya2VyQ29udGV4dCogd29ya2VyLCBpbnQgdHlwZSwgbG9uZyBs
b25nIHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzZWN1cmVDb250ZXh0ID0gd29ya2VyLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNl
Y3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgewor
ICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OlNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGZpbGVTeXN0ZW1UeXBlID0g
c3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKTsKKyAgICBpZiAoIUFzeW5j
RmlsZVN5c3RlbTo6aXNWYWxpZFR5cGUoZmlsZVN5c3RlbVR5cGUpKSB7CisgICAgICAgIGVjID0g
RmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcjsKKyAg
ICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlcXVlc3RGaWxlU3lzdGVtKHdv
cmtlciwgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZSho
ZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCksIHdvcmtlciks
IHRydWUpOworICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKK30KKwordm9pZCBXb3Jr
ZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3Jr
ZXJDb250ZXh0KiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1
cmwpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3b3JrZXIt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNB
dmFpbGFibGUoKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
RmlsZVN5c3RlbSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1
ZXN0KGNvbXBsZXRlZFVSTCkpIHsKKyAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxs
YmFjayh3b3JrZXIsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6
U0VDVVJJVFlfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBc3luY0ZpbGVT
eXN0ZW06OlR5cGUgdHlwZTsKKyAgICBTdHJpbmcgZmlsZVBhdGg7CisgICAgaWYgKCFjb21wbGV0
ZWRVUkwuaXNWYWxpZCgpIHx8ICFBc3luY0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChj
b21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkgeworICAgICAgICBET01GaWxlU3lzdGVtOjpz
Y2hlZHVsZUNhbGxiYWNrKHdvcmtlciwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUo
RmlsZUVycm9yOjpFTkNPRElOR19FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0od29ya2Vy
LCB0eXBlLCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrLCB3b3JrZXIsIGZpbGVQYXRoKSk7Cit9CisKK1Bhc3NSZWZQdHI8RW50cnlTeW5j
PiBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5
bmNVUkwoV29ya2VyQ29udGV4dCogd29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2Vy
LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNv
bnRleHQgPSB3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIUFzeW5j
RmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9y
aWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhj
ZXB0aW9uOjpTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFz
eW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlOworICAgIFN0cmluZyBmaWxlUGF0aDsKKyAgICBpZiAo
IWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkgfHwgIUFzeW5jRmlsZVN5c3RlbTo6Y3JhY2tGaWxlU3lz
dGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlwZSwgZmlsZVBhdGgpKSB7CisgICAgICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6RU5DT0RJTkdfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICBGaWxlU3lzdGVtU3luY0NhbGxiYWNrSGVscGVyIHJlYWRGaWxlU3lzdGVtSGVscGVyOworICAg
IExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0od29ya2Vy
LCB0eXBlLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUocmVhZEZpbGVTeXN0ZW1IZWxwZXIu
c3VjY2Vzc0NhbGxiYWNrKCksIHJlYWRGaWxlU3lzdGVtSGVscGVyLmVycm9yQ2FsbGJhY2soKSwg
d29ya2VyKSwgdHJ1ZSk7CisgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBmaWxlU3lzdGVt
ID0gcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZ2V0UmVzdWx0KGVjKTsKKyAgICBpZiAoIWZpbGVTeXN0
ZW0pCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPEVudHJ5U3luYz4gZW50cnkgPSBm
aWxlU3lzdGVtLT5yb290KCktPmdldERpcmVjdG9yeShmaWxlUGF0aCwgMCwgZWMpOworICAgIGlm
IChlYyA9PSBGaWxlRXhjZXB0aW9uOjpUWVBFX01JU01BVENIX0VSUikKKyAgICAgICAgcmV0dXJu
IGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RmlsZShmaWxlUGF0aCwgMCwgZWMpOworCisgICAgcmV0
dXJuIGVudHJ5LnJlbGVhc2UoKTsKK30KKworQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50
PihXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6VEVNUE9SQVJZKSA9PSBzdGF0aWNfY2FzdDxpbnQ+
KEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5KSwgZW51bV9taXNtYXRjaCk7CitDT01QSUxFX0FT
U0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjpQRVJTSVNURU5U
KSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6UGVyc2lzdGVudCksIGVudW1f
bWlzbWF0Y2gpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTExMDAz
KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmg6
MTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRl
eHRGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICoKKyAqLworCisjaWZuZGVmIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtX2gKKyNkZWZpbmUgV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW1faAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5j
bHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVudHJ5Q2FsbGJhY2s7CitjbGFzcyBFbnRy
eVN5bmM7CitjbGFzcyBFcnJvckNhbGxiYWNrOworY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwor
Y2xhc3MgV29ya2VyQ29udGV4dDsKKworY2xhc3MgV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0gewor
cHVibGljOgorICAgIGVudW0gRmlsZVN5c3RlbVR5cGUgeworICAgICAgICBURU1QT1JBUlksCisg
ICAgICAgIFBFUlNJU1RFTlQsCisgICAgfTsKKworICAgIHN0YXRpYyB2b2lkIHdlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKFdvcmtlckNvbnRleHQqLCBpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBh
c3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5j
PiB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoV29ya2VyQ29udGV4dCosIGludCB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHdlYmtpdFJl
c29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoV29ya2VyQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJs
LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlTeW5jPiB3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5n
JiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBXb3JrZXJDb250ZXh0Rmls
ZVN5c3RlbSgpOworICAgIH5Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbSgpOyAgICAKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKwor
I2VuZGlmIC8vIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxl
U3lzdGVtLmlkbAkocmV2aXNpb24gMTExMDAzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbDoxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisg
ICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAg
IFN1cHBsZW1lbnRhbD1Xb3JrZXJDb250ZXh0CisgICAgXSBXb3JrZXJDb250ZXh0RmlsZVN5c3Rl
bSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IFBFUlNJU1RFTlQgPSAxOworCisgICAgICAgIFtWOEVuYWJs
ZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbiB1
bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRp
b25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBP
cHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgW1Y4RW5hYmxl
ZEF0UnVudGltZT1GaWxlU3lzdGVtXSBET01GaWxlU3lzdGVtU3luYyB3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbVN5bmMoaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUpIHJh
aXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5
c3RlbV0gdm9pZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGluIERPTVN0cmluZyB1
cmwsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
LCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwor
ICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEVudHJ5U3luYyB3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChpbiBET01TdHJpbmcgdXJsKSByYWlzZXMgKEZp
bGVFeGNlcHRpb24pOworCisgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZp
bGVTeXN0ZW1dIEZpbGVFcnJvckNvbnN0cnVjdG9yIEZpbGVFcnJvcjsKKyAgICAgICAgYXR0cmli
dXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRmlsZUV4Y2VwdGlvbkNvbnN0cnVj
dG9yIEZpbGVFeGNlcHRpb247CisgICAgfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA0LDYgKzE4MDQsNyBA
QAogCiAgICAgICAgIFsnZXhjbHVkZScsICdBbGxJbk9uZVxcLmNwcCQnXSwKIAorICAgICAgICBb
J2V4Y2x1ZGUnLCAnTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbVxcLmNwcCQnXSwK
ICAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlXFwuY3BwJCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UGF0aEJhY2tlbmRJbXBsXFwuY3BwJCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAn
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnRcXC5oJCddLApAQCAtMTgx
MSw3ICsxODEyLDYgQEAKICAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
T3JpZ2luUXVvdGFNYW5hZ2VyXFwuKGNwcHxoKSQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ01v
ZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VSZWNvcmRcXC4oY3BwfGgpJCddLAogICAgICAg
ICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudFxc
LmNwcCQnXSwKLSAgICAgICAgWydleGNsdWRlJywgJ2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtXFwu
Y3BwJCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWxcXC5jcHAkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdpbnNwZWN0b3IvSmF2
YVNjcmlwdFteL10qXFwuY3BwJCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnbG9hZGVyL1VzZXJT
dHlsZVNoZWV0TG9hZGVyXFwuY3BwJCddLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDA1
Niw2ICsyNDA1Niw1NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPEZpbHRlcgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJmaWxlc3lzdGVtIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxh
dGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxBc3luY0ZpbGVXcml0ZXIuaCIKKwkJCQkg
ICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAg
ICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50LmgiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZp
bGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERPTUZp
bGVQYXRoLmNwcCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAgICAg
ICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1c
RE9NRmlsZVBhdGguaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAg
ICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cRE9NRmlsZVN5c3RlbS5jcHAiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4K
KwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xm
aWxlc3lzdGVtXERPTUZpbGVTeXN0ZW0uaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9G
aWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1
bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVN5c3RlbUJhc2UuY3BwIgorCQkJCSAgICAgICAgPgorCQkJ
ICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBh
dGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01GaWxlU3lzdGVtQmFzZS5oIgorCQkJCSAgICAg
ICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBS
ZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01GaWxlU3lzdGVtU3luYy5jcHAi
CisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJ
CQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERPTUZpbGVTeXN0
ZW1TeW5jLmgiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAg
PEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERP
TVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+
CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNc
ZmlsZXN5c3RlbVxET01XaW5kb3dGaWxlU3lzdGVtLmgiCisJCQkJICAgICAgICA+CisJCQkgICAg
ICAgIDwvRmlsZT4KICAgICAgICAgCQkgICAgICAgIDxGaWxlCiAgICAgICAgIAkJCSAgICAgICAg
UmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5RW50cnkuY3BwIgog
CSAgICAgICAgCQkgICAgICAgID4KQEAgLTI0MDk3LDExICsyNDE0NSwxNTEgQEAKIAkJCQkgICAg
ICAgID4KIAkJCSAgICAgICAgPC9GaWxlPgogCQkJICAgICAgICA8RmlsZQotCQkJCSAgICAgICAg
UmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRE9NV2luZG93RmlsZVN5c3RlbS5j
cHAiCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRy
eUJhc2UuY3BwIgogCQkJCSAgICAgICAgPgogCQkJICAgICAgICA8L0ZpbGU+CiAJCQkgICAgICAg
IDxGaWxlCi0JCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxE
T01XaW5kb3dGaWxlU3lzdGVtLmgiCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVs
ZXNcZmlsZXN5c3RlbVxFbnRyeS5jcHAiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmls
ZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxl
c1xmaWxlc3lzdGVtXEVudHJ5LmgiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4K
KwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xm
aWxlc3lzdGVtXEVudHJ5QXJyYXkuY3BwIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0Zp
bGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVs
ZXNcZmlsZXN5c3RlbVxFbnRyeUFycmF5LmgiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwv
RmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9k
dWxlc1xmaWxlc3lzdGVtXEVudHJ5QXJyYXlTeW5jLmNwcCIKKwkJCQkgICAgICAgID4KKwkJCSAg
ICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRo
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnlBcnJheVN5bmMuaCIKKwkJCQkgICAgICAgID4K
KwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRp
dmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnlCYXNlLmgiCisJCQkJICAgICAgICA+
CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0
aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5Q2FsbGJhY2suaCIKKwkJCQkgICAg
ICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAg
UmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnlTeW5jLmNwcCIKKwkJCQkg
ICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAg
ICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnlTeW5jLmgiCisJCQkJ
ICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAg
ICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVycm9yQ2FsbGJhY2suaCIK
KwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJ
CSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZUNhbGxiYWNr
LmgiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUK
KwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVFbnRy
eS5jcHAiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZp
bGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVF
bnRyeS5oIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxG
aWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxl
RW50cnlTeW5jLmNwcCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAg
ICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cRmlsZUVudHJ5U3luYy5oIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJ
CQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmls
ZXN5c3RlbVxGaWxlRXJyb3IuaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgor
CQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZp
bGVzeXN0ZW1cRmlsZVN5c3RlbUNhbGxiYWNrLmgiCisJCQkJICAgICAgICA+CisJCQkgICAgICAg
IDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5c
TW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwIgorCQkJCSAgICAgICAg
PgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxh
dGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCisJ
CQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkg
ICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVXcml0ZXIuY3Bw
IgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJ
CQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlV3JpdGVy
LmgiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUK
KwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVXcml0
ZXJCYXNlLmNwcCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAgICAg
ICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1c
RmlsZVdyaXRlckJhc2UuaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJ
ICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVz
eXN0ZW1cRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oIgorCQkJCSAgICAgICAgPgorCQkJICAgICAg
ICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlV3JpdGVyQ2FsbGJhY2suaCIKKwkJCQkgICAgICAgID4K
KwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRp
dmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlclN5bmMuY3BwIgorCQkJCSAg
ICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAg
ICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlV3JpdGVyU3luYy5oIgor
CQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJ
ICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxMb2NhbEZpbGVTeXN0
ZW0uY3BwIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxG
aWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxMb2Nh
bEZpbGVTeXN0ZW0uaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAg
ICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cTWV0YWRhdGEuaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAg
ICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cTWV0YWRhdGFDYWxsYmFjay5oIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+
CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNc
ZmlsZXN5c3RlbVxTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAg
ICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIu
LlxNb2R1bGVzXGZpbGVzeXN0ZW1cV2ViS2l0RmxhZ3MuaCIKKwkJCQkgICAgICAgID4KKwkJCSAg
ICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRo
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwIgorCQkJ
CSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAg
ICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxXb3JrZXJDb250ZXh0Rmls
ZVN5c3RlbS5oIgogCQkJCSAgICAgICAgPgogCQkJICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICA8L0ZpbHRlcj4KQEAgLTU2NzEwLDE0ICs1Njg5OCw2IEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcQXN5bmNG
aWxlV3JpdGVyLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGZpbGVhcGlcQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgiCi0JCQkJPgotCQkJPC9GaWxl
PgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmFzZUJ1dHRvbklucHV0VHlw
ZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNTY4OTAsMzggKzU3MDcwLDYgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxET01G
aWxlUGF0aC5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGZpbGVhcGlcRE9NRmlsZVBhdGguaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxET01GaWxlU3lzdGVtLmNwcCIKLQkJCQk+
Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxET01G
aWxlU3lzdGVtLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGZpbGVhcGlcRE9NRmlsZVN5c3RlbUJhc2UuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4K
LQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERPTUZpbGVTeXN0ZW1CYXNl
LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZp
bGVhcGlcRE9NRmlsZVN5c3RlbVN5bmMuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERPTUZpbGVTeXN0ZW1TeW5jLmgiCi0JCQkJ
PgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRE9NRm9y
bURhdGEuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTU2OTYyLDUwICs1NzExMCw2IEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlc
RW50cnkuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlxmaWxlYXBpXEVudHJ5LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRW50cnlBcnJheS5jcHAiCi0JCQkJPgotCQkJPC9GaWxl
PgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRW50cnlBcnJheS5oIgot
CQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBp
XEVudHJ5QXJyYXlTeW5jLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRyeUFycmF5U3luYy5oIgotCQkJCT4KLQkJCTwvRmls
ZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEVudHJ5QmFzZS5oIgot
CQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBp
XEVudHJ5Q2FsbGJhY2suaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRyeVN5bmMuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJ
CTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEVudHJ5U3luYy5oIgotCQkJCT4K
LQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEVycm9y
Q2FsbGJhY2suaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZmlsZWFwaVxGaWxlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC01NzAxNCwzMCAr
NTcxMTgsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlxmaWxlYXBpXEZpbGVDYWxsYmFjay5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEZpbGVFbnRyeS5jcHAiCi0JCQkJPgotCQkJ
PC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRmlsZUVudHJ5
LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZp
bGVhcGlcRmlsZUVudHJ5U3luYy5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRmlsZUVudHJ5U3luYy5oIgotCQkJCT4KLQkJCTwv
RmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEZpbGVFcnJvci5o
IgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxl
YXBpXEZpbGVFeGNlcHRpb24uY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTU3MDkwLDE4ICs1
NzE3MCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGZpbGVhcGlcRmlsZVN5c3RlbUNhbGxiYWNrLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRmlsZVN5c3RlbUNhbGxiYWNrcy5j
cHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZp
bGVhcGlcRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEZpbGVUaHJlYWQuY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KQEAgLTU3MTE0LDM4ICs1NzE4Miw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRmlsZVdyaXRlci5jcHAiCi0JCQkJ
PgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRmls
ZVdyaXRlci5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlxmaWxlYXBpXEZpbGVXcml0ZXJCYXNlLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8
RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxGaWxlV3JpdGVyQmFzZS5oIgotCQkJ
CT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEZp
bGVXcml0ZXJCYXNlQ2FsbGJhY2suaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxGaWxlV3JpdGVyQ2FsbGJhY2suaCIKLQkJCQk+Ci0J
CQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxGaWxlV3Jp
dGVyU3luYy5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGZpbGVhcGlcRmlsZVdyaXRlclN5bmMuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
IgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTYxNDgyLDE0ICs2MTUxOCw2IEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcTG9jYWxGaWxl
U3lzdGVtLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZmlsZWFwaVxMb2NhbEZpbGVTeXN0ZW0uaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNZWRpYUNvbnRyb2xsZXIuY3BwIgogCQkJ
CT4KIAkJCTwvRmlsZT4KQEAgLTYxNTE4LDE0ICs2MTU0Niw2IEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcTWV0YWRhdGEuaCIKLQkJ
CQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxN
ZXRhZGF0YUNhbGxiYWNrLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxcTWljcm9EYXRhSXRlbVZhbHVlLmNwcCIKIAkJCQk+CiAJCQk8L0Zp
bGU+CkBAIC02MTcxMCwxMCArNjE3MzAsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXFdlYktpdEZsYWdzLmgiCi0JCQkJPgotCQkJ
PC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcV2Vla0lucHV0VHlw
ZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNzQxNTQsMjYgKzc0MTcwLDYgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJmaWxlYXBpIgot
CQkJPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRW50cnlCYXNlLmNw
cCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmls
ZWFwaVxTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQot
CQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxXb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAi
Ci0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVh
cGlcV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCTwvRmls
dGVyPgogCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlxjb25maWcuaCIKIAkJCT4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzExNCw5ICs3MTE0LDkgQEAKIAkJMTQ5
OTNCRTMwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9jdXNDb250cm9sbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTQwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9jdXNDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QTk4RTA1MTM2Mzg2QTIwMEM5
RkVEMiAvKiBCbG9iLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBCbG9iLmlkbDsgcGF0aCA9
IGZpbGVhcGkvQmxvYi5pZGw7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJMTRCREY1
OTcxMzY1MzkyQzAwMTQ4MzkzIC8qIERPTUZpbGVTeXN0ZW0uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IERPTUZpbGVTeXN0ZW0uaWRsOyBwYXRoID0gZmlsZWFwaS9ET01GaWxlU3lzdGVtLmlk
bDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkxNEJERjU5NzEzNjUzOTJDMDAxNDgz
OTMgLyogRE9NRmlsZVN5c3RlbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRE9NRmlsZVN5
c3RlbS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5pZGw7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJMTRCREY1OUExMzY1Mzk5MTAwMTQ4MzkzIC8q
IEZpbGVSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZpbGVSZWFkZXIuaWRsOyBw
YXRoID0gZmlsZWFwaS9GaWxlUmVhZGVyLmlkbDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwotCQkxNEJERjU5QzEzNjUzOUJFMDAxNDgzOTMgLyogRmlsZVdyaXRlci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gRmlsZVdyaXRlci5pZGw7IHBhdGggPSBmaWxlYXBpL0ZpbGVXcml0ZXIu
aWRsOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTE0QkRGNTlDMTM2NTM5QkUwMDE0
ODM5MyAvKiBGaWxlV3JpdGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlV3JpdGVy
LmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlkbDsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwogCQkxNEM5QTVFOTBCM0QxMDVGMDA1QTAyMzIgLyogU2V0dGlu
Z3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldHRpbmdzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRDRDhEODExMDZCNTI5MDAwQTQ2RDIz
IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTRDRjc4NzEwOUY1ODdDQTAwRUIzNjY1IC8qIENTU1ZhbHVlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQ1NTVmFsdWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODA3NywxMiArODA3NywxMiBAQAogCQk0NTBDRUJFRjE1MDczQkJFMDAyQkIxNDkgLyog
TGFiZWxhYmxlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYWJl
bGFibGVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1QkFDMkFGMTM2
MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEljb25VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYxNEExRkQwQjIz
QThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gY29weUN1cnNvci5wbmc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2NzAwRUNFMTI3Qjk2Q0IwMEY1RDVENiAv
KiBGaWxlV3JpdGVyU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBGaWxlV3JpdGVyU3luYy5jcHA7IHBhdGggPSBmaWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3MDBFQ0YxMjdCOTZDQjAwRjVENUQ2IC8q
IEZpbGVXcml0ZXJTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVX
cml0ZXJTeW5jLmg7IHBhdGggPSBmaWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2NzAwRUNFMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVy
U3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGaWxlV3JpdGVy
U3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjcwMEVDRjEyN0I5NkNCMDBGNUQ1RDYgLyog
RmlsZVdyaXRlclN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVdy
aXRlclN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyog
RmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVNZXRh
ZGF0YS5oOyBwYXRoID0gcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ2QkM3MjRCMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGaWxlV3JpdGVyQmFzZS5j
cHA7IHBhdGggPSBmaWxlYXBpL0ZpbGVXcml0ZXJCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDZCQzcyNEMxMjlCMTA0QzAwNzFDMDdFIC8qIEZpbGVXcml0ZXJCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXJCYXNlLmg7IHBhdGgg
PSBmaWxlYXBpL0ZpbGVXcml0ZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQ2QkM3MjREMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaDsg
cGF0aCA9IGZpbGVhcGkvRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NkJDNzI0QjEyOUIxMDRDMDA3MUMwN0UgLyogRmlsZVdyaXRlckJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRmlsZVdyaXRlckJhc2Uu
Y3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCQzcyNEMxMjlCMTA0QzAwNzFDMDdFIC8qIEZpbGVX
cml0ZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXJC
YXNlLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCQzcyNEQxMjlCMTA0QzAwNzFDMDdFIC8qIEZpbGVX
cml0ZXJCYXNlQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmls
ZVdyaXRlckJhc2VDYWxsYmFjay5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0
ZXJCYXNlQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCRDE2RTIw
QjI3OTQ3MzAwMUYwODM5IC8qIG5vbmVDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gbm9uZUN1cnNvci5w
bmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDRGMjQ2MEFGOTdFODEwMDM1Mzg1
QSAvKiBjZWxsQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNlbGxDdXJzb3IucG5nOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkQ0RjI0NzBBRjk3RTgxMDAzNTM4NUEgLyogY29udGV4dE1l
bnVDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gaW1hZ2UucG5nOyBwYXRoID0gY29udGV4dE1lbnVDdXJzb3IucG5nOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTc4Nyw4ICs5Nzg3LDggQEAKIAkJODkyQ0YyMDkxMzRDOEJC
MzAwQUFFREExIC8qIEpTU3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkyQ0YyMEExMzRDOEJCMzAwQUFFREExIC8q
IEpTU3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTU3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5MzFERTVBMTRDNDRDNDQwMDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCbG9iQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ3QTUxMjM4OTA4QjAwMkIzRDg2IC8qIEZp
bGVDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlQ2FsbGJh
Y2suaDsgcGF0aCA9IGZpbGVhcGkvRmlsZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg5M0M0N0E2MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlV3JpdGVyQ2FsbGJhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVdyaXRlckNhbGxiYWNrLmg7
IHBhdGggPSBmaWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4OTNDNDdBNTEyMzg5MDhCMDAyQjNEODYgLyogRmlsZUNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVDYWxsYmFjay5oOyBwYXRoID0gTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4OTNDNDdBNjEyMzg5MDhCMDAyQjNEODYgLyogRmlsZVdyaXRlckNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXJDYWxsYmFjay5oOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4OTNDNDdCNTEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJh
Y2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlQ2FsbGJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdCNjEyMzhBMDk5MDAy
QjNEODYgLyogSlNGaWxlQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNGaWxlQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3
QjkxMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk3OTksMTcgKzk3OTksMTcgQEAKIAkJODkzQzQ3
RjExMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuaDsgcGF0aCA9IE1vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODkzQzQ3RjIxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3lu
Yy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0N0YzMTI0OEJEMzkwMDJCM0Q4NiAv
KiBEaXJlY3RvcnlSZWFkZXJTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERpcmVjdG9yeVJlYWRlclN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlSZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0Y0MTI0
OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBET01GaWxlU3lzdGVtQmFzZS5jcHA7IHBhdGggPSBmaWxlYXBp
L0RPTUZpbGVTeXN0ZW1CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkz
QzQ3RjUxMjQ4QkQzOTAwMkIzRDg2IC8qIERPTUZpbGVTeXN0ZW1CYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTUZpbGVTeXN0ZW1CYXNlLmg7IHBhdGggPSBmaWxlYXBp
L0RPTUZpbGVTeXN0ZW1CYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0
N0Y2MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBET01GaWxlU3lzdGVtU3luYy5jcHA7IHBhdGggPSBm
aWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODkzQzQ3RjcxMjQ4QkQzOTAwMkIzRDg2IC8qIERPTUZpbGVTeXN0ZW1TeW5jLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTUZpbGVTeXN0ZW1TeW5jLmg7IHBhdGggPSBm
aWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTg5M0M0N0Y4MTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeUFycmF5U3luYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUFycmF5U3luYy5jcHA7IHBhdGggPSBm
aWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODkzQzQ3RjkxMjQ4QkQzOTAwMkIzRDg2IC8qIEVudHJ5QXJyYXlTeW5jLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJ5QXJyYXlTeW5jLmg7IHBhdGggPSBmaWxlYXBpL0Vu
dHJ5QXJyYXlTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0ZCMTI0
OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRW50cnlCYXNlLmg7IHBhdGggPSBmaWxlYXBpL0VudHJ5QmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDdGQzEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlTeW5j
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVudHJ5U3luYy5jcHA7
IHBhdGggPSBmaWxlYXBpL0VudHJ5U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg5M0M0N0ZEMTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeVN5bmMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cnlTeW5jLmg7IHBhdGggPSBmaWxlYXBpL0VudHJ5U3lu
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDdGRTEyNDhCRDM5MDAyQjNE
ODYgLyogRmlsZUVudHJ5U3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBGaWxlRW50cnlTeW5jLmNwcDsgcGF0aCA9IGZpbGVhcGkvRmlsZUVudHJ5U3luYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0ZGMTI0OEJEMzkwMDJCM0Q4NiAv
KiBGaWxlRW50cnlTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVF
bnRyeVN5bmMuaDsgcGF0aCA9IGZpbGVhcGkvRmlsZUVudHJ5U3luYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4OTNDNDdGNDEyNDhCRDM5MDAyQjNEODYgLyogRE9NRmlsZVN5c3Rl
bUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NRmlsZVN5
c3RlbUJhc2UuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODkzQzQ3RjUxMjQ4QkQzOTAwMkIz
RDg2IC8qIERPTUZpbGVTeXN0ZW1CYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERPTUZpbGVTeXN0ZW1CYXNlLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmls
ZVN5c3RlbUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODkzQzQ3RjYxMjQ4
QkQzOTAwMkIzRDg2IC8qIERPTUZpbGVTeXN0ZW1TeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERPTUZpbGVTeXN0ZW1TeW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMv
ZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg5M0M0N0Y3MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01GaWxlU3lzdGVtU3luYy5oOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg5M0M0N0Y4MTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeUFycmF5U3lu
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUFycmF5U3lu
Yy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTNDNDdGOTEyNDhCRDM5MDAyQjNEODYgLyogRW50
cnlBcnJheVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cnlBcnJh
eVN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTNDNDdGQjEyNDhCRDM5MDAyQjNEODYgLyogRW50
cnlCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJ5QmFzZS5oOyBw
YXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4OTNDNDdGQzEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlTeW5jLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVudHJ5U3luYy5jcHA7IHBhdGggPSBN
b2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODkzQzQ3RkQxMjQ4QkQzOTAwMkIzRDg2IC8qIEVudHJ5U3luYy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyeVN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODkzQzQ3RkUx
MjQ4QkQzOTAwMkIzRDg2IC8qIEZpbGVFbnRyeVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRmlsZUVudHJ5U3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZUVudHJ5U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5
M0M0N0ZGMTI0OEJEMzkwMDJCM0Q4NiAvKiBGaWxlRW50cnlTeW5jLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVFbnRyeVN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlRW50cnlTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0
ODIwMTI0OTUzNUIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RpcmVjdG9yeUVudHJ5U3luY0N1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0ODI2MTI0OTU0NzIw
MDJCM0Q4NiAvKiBKU0RpcmVjdG9yeUVudHJ5U3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RpcmVjdG9yeUVudHJ5U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg5M0M0ODI3MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeUVu
dHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RpcmVjdG9yeUVu
dHJ5U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTgyOCwyNyArOTgyOCwy
NyBAQAogCQk4OTg3ODUzQTEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5RW50cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5RW50cnkuaDsgcGF0aCA9IE1v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4OTg3ODUzQjEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5UmVhZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlci5jcHA7
IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1M0MxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9y
eVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlSZWFk
ZXIuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1M0QxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZp
bGVQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUZpbGVQ
YXRoLmNwcDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4OTg3ODUzRTEyMkNBMDY0MDAzQUFCREEgLyogRE9NRmlsZVBhdGguaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NRmlsZVBhdGguaDsgcGF0aCA9IGZp
bGVhcGkvRE9NRmlsZVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1
M0YxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRE9NRmlsZVN5c3RlbS5jcHA7IHBhdGggPSBmaWxlYXBpL0RP
TUZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0MDEy
MkNBMDY0MDAzQUFCREEgLyogRE9NRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBET01GaWxlU3lzdGVtLmg7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk4Nzg1M0QxMjJDQTA2NDAwM0FBQkRB
IC8qIERPTUZpbGVQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERPTUZpbGVQYXRoLmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTNFMTIyQ0EwNjQwMDNBQUJE
QSAvKiBET01GaWxlUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01G
aWxlUGF0aC5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTNGMTIyQ0EwNjQwMDNBQUJEQSAvKiBET01G
aWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUZp
bGVTeXN0ZW0uY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3ODU0MDEyMkNBMDY0MDAzQUFCREEg
LyogRE9NRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01G
aWxlU3lzdGVtLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODU0MTEyMkNBMDY0MDAzQUFCREEgLyog
RW50cmllc0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJp
ZXNDYWxsYmFjay5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJpZXNDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0MjEyMkNBMDY0MDAzQUFCREEg
LyogRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnku
Y3BwOyBwYXRoID0gZmlsZWFwaS9FbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg5ODc4NTQzMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBFbnRyeS5oOyBwYXRoID0gZmlsZWFwaS9FbnRyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0NDEyMkNBMDY0MDAzQUFCREEgLyogRW50cnlB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUFycmF5
LmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg5ODc4NTQ1MTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeUFycmF5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJ5QXJyYXkuaDsgcGF0aCA9IGZpbGVhcGkv
RW50cnlBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0NjEyMkNB
MDY0MDAzQUFCREEgLyogRW50cnlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBFbnRyeUNhbGxiYWNrLmg7IHBhdGggPSBmaWxlYXBpL0VudHJ5Q2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDcxMjJDQTA2NDAwM0FBQkRBIC8q
IEVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRXJyb3JD
YWxsYmFjay5oOyBwYXRoID0gZmlsZWFwaS9FcnJvckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTg5ODc4NTQ4MTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlRW50cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRmlsZUVudHJ5LmNwcDsgcGF0
aCA9IGZpbGVhcGkvRmlsZUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODk4Nzg1NDkxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGaWxlRW50cnkuaDsgcGF0aCA9IGZpbGVhcGkvRmlsZUVudHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTRBMTIyQ0EwNjQwMDNBQUJEQSAv
KiBGaWxlU3lzdGVtQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RmlsZVN5c3RlbUNhbGxiYWNrLmg7IHBhdGggPSBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0QjEyMkNBMDY0MDAzQUFCREEg
LyogRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcDsgcGF0aCA9IGZpbGVhcGkvRmlsZVN5c3Rl
bUNhbGxiYWNrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTRDMTIy
Q0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEZpbGVTeXN0ZW1DYWxsYmFja3MuaDsgcGF0aCA9IGZpbGVhcGkvRmls
ZVN5c3RlbUNhbGxiYWNrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0
RDEyMkNBMDY0MDAzQUFCREEgLyogV2ViS2l0RmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViS2l0RmxhZ3MuaDsgcGF0aCA9IGZpbGVhcGkvV2ViS2l0RmxhZ3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NEUxMjJDQTA2NDAwM0FBQkRBIC8q
IExvY2FsRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMb2NhbEZpbGVTeXN0ZW0uY3BwOyBwYXRoID0gZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0RjEyMkNBMDY0MDAzQUFCREEg
LyogTG9jYWxGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExv
Y2FsRmlsZVN5c3RlbS5oOyBwYXRoID0gZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NTAxMjJDQTA2NDAwM0FBQkRBIC8qIE1ldGFk
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1ldGFkYXRhLmg7IHBhdGgg
PSBmaWxlYXBpL01ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4
NTUxMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0YUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1ldGFkYXRhQ2FsbGJhY2suaDsgcGF0aCA9IGZpbGVhcGkvTWV0
YWRhdGFDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3ODU0MjEy
MkNBMDY0MDAzQUFCREEgLyogRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRW50cnkuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk4Nzg1NDMxMjJDQTA2NDAwM0FBQkRBIC8q
IEVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJ5Lmg7IHBhdGgg
PSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODk4Nzg1NDQxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5QXJyYXkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnlBcnJheS5jcHA7IHBhdGggPSBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg5ODc4NTQ1MTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeUFycmF5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJ5QXJyYXkuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTQ2MTIy
Q0EwNjQwMDNBQUJEQSAvKiBFbnRyeUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEVudHJ5Q2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTQ3MTIyQ0Ew
NjQwMDNBQUJEQSAvKiBFcnJvckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEVycm9yQ2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNh
bGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTQ4MTIyQ0EwNjQw
MDNBQUJEQSAvKiBGaWxlRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRmlsZUVudHJ5LmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3ODU0OTEyMkNBMDY0MDAzQUFC
REEgLyogRmlsZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVF
bnRyeS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4OTg3ODU0QTEyMkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3Rl
bUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVTeXN0ZW1D
YWxsYmFjay5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3ODU0QjEyMkNBMDY0MDAzQUFCREEg
LyogRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODk4Nzg1NEMxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1DYWxsYmFja3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVN5c3RlbUNhbGxiYWNrcy5oOyBwYXRoID0g
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODk4Nzg1NEQxMjJDQTA2NDAwM0FBQkRBIC8qIFdlYktpdEZsYWdzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYktpdEZsYWdzLmg7IHBhdGggPSBN
b2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODk4Nzg1NEUxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3RlbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb2NhbEZpbGVTeXN0ZW0uY3BwOyBw
YXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTRGMTIyQ0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVT
eXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG9jYWxGaWxlU3lzdGVt
Lmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTUwMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZXRhZGF0YS5oOyBwYXRoID0g
TW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg5ODc4NTUxMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0YUNhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1ldGFkYXRhQ2FsbGJhY2suaDsgcGF0aCA9IE1v
ZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5ODc4NTg2MTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeUVudHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGlyZWN0b3J5RW50cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODU4NzEyMkNBMjZBMDAzQUFC
REEgLyogSlNEaXJlY3RvcnlFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0RpcmVjdG9yeUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4
NTg4MTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeVJlYWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RpcmVjdG9yeVJlYWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDM1Nyw3ICsxMDM1Nyw3IEBACiAJCTk3NjY1MDRFMTQ0
RkJGRkUwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXZlbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTc2N0NFMDkxNDVBQkMxMjAwNUU2NERCIC8qIEV4Y2VwdGlvbkhlYWRlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uSGVhZGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5NzY3Q0UwQTE0NUFCQzEzMDA1RTY0REIgLyogRXhjZXB0
aW9uSW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRp
b25JbnRlcmZhY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3NkQ2QzU4MTIy
QjhBM0QwMDFGRDFGNyAvKiBBc3luY0ZpbGVXcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQXN5bmNGaWxlV3JpdGVyLmg7IHBhdGggPSBmaWxlYXBpL0FzeW5jRmlsZVdy
aXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzZENkM1ODEyMkI4QTNEMDAx
RkQxRjcgLyogQXN5bmNGaWxlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFzeW5jRmlsZVdyaXRlci5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0FzeW5jRmls
ZVdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZENkM1OTEyMkI4QTNE
MDAxRkQxRjcgLyogQmxvYi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBCbG9iLmNwcDsgcGF0aCA9IGZpbGVhcGkvQmxvYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3NkQ2QzVBMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJsb2IuaDsgcGF0aCA9IGZpbGVhcGkvQmxvYi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZENkM1QzEyMkI4QTNEMDAxRkQxRjcgLyogV2Vi
S2l0QmxvYkJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
V2ViS2l0QmxvYkJ1aWxkZXIuY3BwOyBwYXRoID0gZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDM3NCw5ICsxMDM3NCw5IEBACiAJ
CTk3NkQ2QzZFMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZpbGVUaHJlYWQuY3BwOyBwYXRoID0gZmlsZWFwaS9G
aWxlVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNkYxMjJC
OEEzRDAwMUZEMUY3IC8qIEZpbGVUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRmlsZVRocmVhZC5oOyBwYXRoID0gZmlsZWFwaS9GaWxlVGhyZWFkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NkQ2QzcwMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhy
ZWFkVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlVGhyZWFkVGFz
ay5oOyBwYXRoID0gZmlsZWFwaS9GaWxlVGhyZWFkVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk5NzZENkM3MTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVdyaXRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGaWxlV3JpdGVyLmNwcDsgcGF0aCA9
IGZpbGVhcGkvRmlsZVdyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3
NkQ2QzcyMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXIuaDsgcGF0aCA9IGZpbGVhcGkvRmlsZVdyaXRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzZENkM3NDEyMkI4QTNEMDAxRkQxRjcg
LyogQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFzeW5jRmlsZVdyaXRlckNsaWVudC5oOyBwYXRoID0gZmlsZWFwaS9Bc3luY0ZpbGVXcml0
ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc2RDZDNzExMjJCOEEz
RDAwMUZEMUY3IC8qIEZpbGVXcml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRmlsZVdyaXRlci5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdy
aXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NkQ2QzcyMTIyQjhBM0Qw
MDFGRDFGNyAvKiBGaWxlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZpbGVXcml0ZXIuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NkQ2Qzc0MTIyQjhBM0QwMDFGRDFGNyAvKiBB
c3luY0ZpbGVXcml0ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QXN5bmNGaWxlV3JpdGVyQ2xpZW50Lmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNG
aWxlV3JpdGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NkQ2Qzc1
MTIyQjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwOyBw
YXRoID0gZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNzYxMjJCOEEzRDAwMUZEMUY3IC8qIFRocmVhZGFibGVCbG9i
UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5oOyBwYXRoID0gZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NkYzNkU4MTQ2ODYyMjUwMDVFOTNCNCAvKiBT
ZWN1cml0eUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2VjdXJpdHlDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzMw
LDcgKzEyNzMwLDcgQEAKIAkJQzZGMDkwMjUxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTV2ViS2l0TXV0
YXRpb25PYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktp
dE11dGF0aW9uT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGMDkx
N0UxNDNBMkJCOTAwNjg1ODQ5IC8qIEpTV2ViS2l0TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkYwOTE4NDE0
M0E2QzNCMDA2ODU4NDkgLyogSlNNdXRhdGlvbkNhbGxiYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRpb25DYWxsYmFja0N1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAv
KiBFbnRyeUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50
cnlCYXNlLmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzZGNDEwNDYxMzBDNkU4OTAwMzkzREU0IC8qIEVudHJ5QmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUJhc2UuY3BwOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAv
KiBTY3JvbGxBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jv
bGxBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQUU5RjkwRDE0NjQ0
MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTEyLDI2ICsxMjkxMiwyNiBAQAogCQlFMUFCMUVBQzE0RTlF
MkY4MDA0NDlFMTMgLyogRGlyZWN0b3J5RW50cnlTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEaXJlY3RvcnlFbnRy
eVN5bmMuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUFEMTRFOUUzMDUwMDQ0OUUx
MyAvKiBEaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlci5pZGw7IHBhdGgg
PSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQUUxNEU5RTMwQjAwNDQ5RTEzIC8qIERpcmVjdG9yeVJlYWRl
clN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlclN5bmMuaWRsOyBwYXRoID0gTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlFMUFCMUVBRjE0RTlFMzE3MDA0NDlFMTMgLyogRE9NRmlsZVN5c3RlbVN5bmMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IERPTUZpbGVTeXN0ZW1TeW5jLmlkbDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVN5c3Rl
bVN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVCMDE0RTlFMzIz
MDA0NDlFMTMgLyogRW50cmllc0NhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyaWVzQ2FsbGJhY2suaWRs
OyBwYXRoID0gZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlFMUFCMUVCMTE0RTlFMzJBMDA0NDlFMTMgLyogRW50cnkuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVu
dHJ5LmlkbDsgcGF0aCA9IGZpbGVhcGkvRW50cnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlFMUFCMUVCMjE0RTlFMzMyMDA0NDlFMTMgLyogRW50cnlBcnJheS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
RW50cnlBcnJheS5pZGw7IHBhdGggPSBmaWxlYXBpL0VudHJ5QXJyYXkuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVCMzE0RTlFMzM5MDA0NDlFMTMgLyogRW50cnlBcnJh
eVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IEVudHJ5QXJyYXlTeW5jLmlkbDsgcGF0aCA9IGZpbGVhcGkvRW50cnlB
cnJheVN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVCNDE0RTlF
MzQ1MDA0NDlFMTMgLyogRW50cnlDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cnlDYWxsYmFjay5pZGw7
IHBhdGggPSBmaWxlYXBpL0VudHJ5Q2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlFMUFCMUVCNTE0RTlFMzRCMDA0NDlFMTMgLyogRW50cnlTeW5jLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBF
bnRyeVN5bmMuaWRsOyBwYXRoID0gZmlsZWFwaS9FbnRyeVN5bmMuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlFMUFCMUVCNjE0RTlFMzUyMDA0NDlFMTMgLyogRXJyb3JDYWxsYmFj
ay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gRXJyb3JDYWxsYmFjay5pZGw7IHBhdGggPSBmaWxlYXBpL0Vycm9yQ2FsbGJh
Y2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUFCMUVBRjE0RTlFMzE3MDA0
NDlFMTMgLyogRE9NRmlsZVN5c3RlbVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERPTUZpbGVTeXN0ZW1TeW5jLmlk
bDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUIwMTRFOUUzMjMwMDQ0OUUxMyAvKiBFbnRy
aWVzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IEVudHJpZXNDYWxsYmFjay5pZGw7IHBhdGggPSBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTFBQjFFQjExNEU5RTMyQTAwNDQ5RTEzIC8qIEVudHJ5LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeS5p
ZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMUFCMUVCMjE0RTlFMzMyMDA0NDlFMTMgLyogRW50cnlBcnJheS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gRW50cnlBcnJheS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJh
eS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUIzMTRFOUUzMzkwMDQ0
OUUxMyAvKiBFbnRyeUFycmF5U3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cnlBcnJheVN5bmMuaWRsOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQjQxNEU5RTM0NTAwNDQ5RTEzIC8qIEVudHJ5Q2FsbGJhY2su
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IEVudHJ5Q2FsbGJhY2suaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5Q2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUFCMUVCNTE0
RTlFMzRCMDA0NDlFMTMgLyogRW50cnlTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeVN5bmMuaWRsOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUxQUIxRUI2MTRFOUUzNTIwMDQ0OUUxMyAvKiBFcnJvckNhbGxiYWNrLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBFcnJvckNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNh
bGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQjcxNEU5RTM1
ODAwNDQ5RTEzIC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZpbGUuaWRsOyBwYXRoID0gZmlsZWFwaS9GaWxl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQjgxNEU5RTM2MjAwNDQ5
RTEzIC8qIEZpbGVDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZUNhbGxiYWNrLmlkbDsgcGF0aCA9IGZp
bGVhcGkvRmlsZUNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFB
QjFFQjkxNEU5RTM2RDAwNDQ5RTEzIC8qIEZpbGVFbnRyeS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZUVudHJ5Lmlk
bDsgcGF0aCA9IGZpbGVhcGkvRmlsZUVudHJ5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRTFBQjFFQkExNEU5RTM3MjAwNDQ5RTEzIC8qIEZpbGVFbnRyeVN5bmMuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IEZpbGVFbnRyeVN5bmMuaWRsOyBwYXRoID0gZmlsZWFwaS9GaWxlRW50cnlTeW5jLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQjgxNEU5RTM2MjAwNDQ5RTEzIC8qIEZp
bGVDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZUNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MUFCMUVCOTE0RTlFMzZEMDA0NDlFMTMgLyogRmlsZUVudHJ5LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlRW50cnku
aWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUJBMTRFOUUzNzIwMDQ0OUUxMyAvKiBGaWxlRW50cnlT
eW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBGaWxlRW50cnlTeW5jLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlRW50cnlTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFF
QkIxNEU5RTM3QTAwNDQ5RTEzIC8qIEZpbGVFcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZUVycm9yLmlkbDsg
cGF0aCA9IGZpbGVhcGkvRmlsZUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFBQjFFQkMxNEU5RTM5NzAwNDQ5RTEzIC8qIEZpbGVFeGNlcHRpb24uaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZp
bGVFeGNlcHRpb24uaWRsOyBwYXRoID0gZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQkQxNEU5RTNBODAwNDQ5RTEzIC8qIEZpbGVS
ZWFkZXJTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlUmVhZGVyU3luYy5pZGw7IHBhdGggPSBmaWxlYXBpL0Zp
bGVSZWFkZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQkUx
NEU5RTNCMjAwNDQ5RTEzIC8qIEZpbGVTeXN0ZW1DYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZVN5c3Rl
bUNhbGxiYWNrLmlkbDsgcGF0aCA9IGZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQkYxNEU5RTNCRTAwNDQ5RTEzIC8qIEZp
bGVXcml0ZXJDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZVdyaXRlckNhbGxiYWNrLmlkbDsgcGF0aCA9
IGZpbGVhcGkvRmlsZVdyaXRlckNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRTFBQjFFQzAxNEU5RTNDNDAwNDQ5RTEzIC8qIEZpbGVXcml0ZXJTeW5jLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBGaWxlV3JpdGVyU3luYy5pZGw7IHBhdGggPSBmaWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQzExNEU5RTNDQzAwNDQ5RTEzIC8q
IE1ldGFkYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBNZXRhZGF0YS5pZGw7IHBhdGggPSBmaWxlYXBpL01ldGFkYXRh
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQzIxNEU5RTNENTAwNDQ5
RTEzIC8qIE1ldGFkYXRhQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1ldGFkYXRhQ2FsbGJhY2suaWRsOyBw
YXRoID0gZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTFBQjFFQkUxNEU5RTNCMjAwNDQ5RTEzIC8qIEZpbGVTeXN0ZW1DYWxsYmFjay5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gRmlsZVN5c3RlbUNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlU3lzdGVtQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MUFCMUVCRjE0RTlFM0JFMDA0NDlFMTMgLyogRmlsZVdyaXRlckNhbGxiYWNrLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBG
aWxlV3JpdGVyQ2FsbGJhY2suaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0
ZXJDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUMwMTRF
OUUzQzQwMDQ0OUUxMyAvKiBGaWxlV3JpdGVyU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZVdyaXRlclN5bmMu
aWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQzExNEU5RTNDQzAwNDQ5RTEzIC8qIE1ldGFk
YXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBNZXRhZGF0YS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0
YWRhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUFCMUVDMjE0RTlFM0Q1
MDA0NDlFMTMgLyogTWV0YWRhdGFDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWV0YWRhdGFDYWxsYmFjay5p
ZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUMzMTRFOUUzRTIwMDQ0OUUxMyAvKiBXZWJL
aXRCbG9iQnVpbGRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViS2l0QmxvYkJ1aWxkZXIuaWRsOyBwYXRoID0gZmls
ZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQUNBRjRBMEU3OTFBQUYwMDg3RDEyQiAvKiBET01NZXNzYWdlUG9ydC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU1lc3NhZ2VQb3J0Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFDQUY0QjBFNzkxQUFGMDA4N0QxMkIgLyogRE9NTWVz
c2FnZVBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZVBv
cnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVXcml0ZXIuaAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBBc3luY0ZpbGVXcml0ZXJfaAotI2RlZmluZSBBc3luY0ZpbGVXcml0ZXJfaAot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEJsb2I7Ci0KLWNsYXNzIEFzeW5jRmlsZVdyaXRlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+QXN5bmNGaWxlV3JpdGVyKCkge30KLQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxv
bmcgcG9zaXRpb24sIEJsb2IqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdHJ1bmNhdGUo
bG9uZyBsb25nIGxlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgd2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSAvLyBOZWVkZWQgZm9y
IEZpbGVXcml0ZXJTeW5jIG9ubHkuCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2VuZGlmIC8vIEFzeW5jRmlsZVdyaXRlcl9oCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXJDbGllbnQuaAkocmV2aXNpb24gMTExMDAzKQorKysg
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBc3luY0ZpbGVXcml0ZXJDbGllbnRfaAotI2Rl
ZmluZSBBc3luY0ZpbGVXcml0ZXJDbGllbnRfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
QXN5bmNGaWxlV3JpdGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVX
cml0ZXJDbGllbnQoKSB7fQotCi0gICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBi
eXRlcywgYm9vbCBjb21wbGV0ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZSgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChGaWxlRXJyb3I6OkVycm9yQ29kZSkgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2VuZGlmIC8vIEFzeW5jRmlsZVdyaXRlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RPTUZpbGVQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVQYXRoLmNwcAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9ET01GaWxlUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTU0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFyIERPTUZpbGVQYXRoOjpzZXBhcmF0b3IgPSAn
Lyc7Ci1jb25zdCBjaGFyIERPTUZpbGVQYXRoOjpyb290W10gPSAiLyI7Ci0KLVN0cmluZyBET01G
aWxlUGF0aDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgYmFzZSwgY29uc3QgU3RyaW5nJiBjb21wb25l
bnRzKQotewotICAgIHJldHVybiBlbnN1cmVEaXJlY3RvcnlQYXRoKGJhc2UpICsgY29tcG9uZW50
czsKLX0KLQotU3RyaW5nIERPTUZpbGVQYXRoOjplbnN1cmVEaXJlY3RvcnlQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICBpZiAoIURPTUZpbGVQYXRoOjplbmRzV2l0aFNlcGFyYXRvcihw
YXRoKSkgewotICAgICAgICBTdHJpbmcgbmV3UGF0aCA9IHBhdGg7Ci0gICAgICAgIG5ld1BhdGgu
YXBwZW5kKERPTUZpbGVQYXRoOjpzZXBhcmF0b3IpOwotICAgICAgICByZXR1cm4gbmV3UGF0aDsK
LSAgICB9Ci0gICAgcmV0dXJuIHBhdGg7Ci19Ci0KLVN0cmluZyBET01GaWxlUGF0aDo6Z2V0TmFt
ZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaW50IGluZGV4ID0gcGF0aC5yZXZlcnNlRmlu
ZChET01GaWxlUGF0aDo6c2VwYXJhdG9yKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICAg
IHJldHVybiBwYXRoLnN1YnN0cmluZyhpbmRleCArIDEpOwotICAgIHJldHVybiBwYXRoOwotfQot
Ci1TdHJpbmcgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgaW50IGluZGV4ID0gcGF0aC5yZXZlcnNlRmluZChET01GaWxlUGF0aDo6c2VwYXJhdG9y
KTsKLSAgICBpZiAoaW5kZXggPT0gMCkKLSAgICAgICAgcmV0dXJuIERPTUZpbGVQYXRoOjpyb290
OwotICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKDAs
IGluZGV4KTsKLSAgICByZXR1cm4gIi4iOwotfQotCi1ib29sIERPTUZpbGVQYXRoOjppc1BhcmVu
dE9mKGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIG1heUJlQ2hpbGQpCi17Ci0g
ICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhcmVudCkpOwotICAgIEFTU0VSVChE
T01GaWxlUGF0aDo6aXNBYnNvbHV0ZShtYXlCZUNoaWxkKSk7Ci0gICAgaWYgKHBhcmVudCA9PSBE
T01GaWxlUGF0aDo6cm9vdCAmJiBtYXlCZUNoaWxkICE9IERPTUZpbGVQYXRoOjpyb290KQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocGFyZW50Lmxlbmd0aCgpID49IG1heUJlQ2hpbGQu
bGVuZ3RoKCkgfHwgIW1heUJlQ2hpbGQuc3RhcnRzV2l0aChwYXJlbnQsIGZhbHNlKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtYXlCZUNoaWxkW3BhcmVudC5sZW5ndGgoKV0gIT0g
RE9NRmlsZVBhdGg6OnNlcGFyYXRvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1TdHJpbmcgRE9NRmlsZVBhdGg6OnJlbW92ZUV4dHJhUGFyZW50UmVmZXJl
bmNlcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fi
c29sdXRlKHBhdGgpKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBjb21wb25lbnRzOwotICAgIFZlY3Rv
cjxTdHJpbmc+IGNhbm9uaWNhbGl6ZWQ7Ci0gICAgcGF0aC5zcGxpdChET01GaWxlUGF0aDo6c2Vw
YXJhdG9yLCBjb21wb25lbnRzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbXBvbmVu
dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGNvbXBvbmVudHNbaV0gPT0gIi4iKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChjb21wb25lbnRzW2ldID09ICIuLiIpIHsK
LSAgICAgICAgICAgIGlmIChjYW5vbmljYWxpemVkLnNpemUoKSA+IDApCi0gICAgICAgICAgICAg
ICAgY2Fub25pY2FsaXplZC5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotICAgICAgICBjYW5vbmljYWxpemVkLmFwcGVuZChjb21wb25lbnRzW2ldKTsKLSAg
ICB9Ci0gICAgaWYgKGNhbm9uaWNhbGl6ZWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gRE9N
RmlsZVBhdGg6OnJvb3Q7Ci0gICAgU3RyaW5nIHJlc3VsdDsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNhbm9uaWNhbGl6ZWQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZChET01GaWxlUGF0aDo6c2VwYXJhdG9yKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChjYW5vbmlj
YWxpemVkW2ldKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBET01GaWxl
UGF0aDo6aXNWYWxpZFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlmIChwYXRoLmlz
RW1wdHkoKSB8fCBwYXRoID09IERPTUZpbGVQYXRoOjpyb290KQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIC8vIEVtYmVkZGVkIE5VTHMgYXJlIG5vdCBhbGxvd2VkLgotICAgIGlmIChwYXRo
LmZpbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KDApKSAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBXaGlsZSBub3QgW3lldF0gcmVzdHJpY3RlZCBieSB0aGUg
c3BlYywgJ1xcJyBjb21wbGljYXRlcyBpbXBsZW1lbnRhdGlvbiBmb3IgQ2hyb21pdW0uCi0gICAg
aWYgKHBhdGguZmluZCgnXFwnKSAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBvbiBmdWxseS1ldmFsdWF0
ZWQgYWJzb2x1dGUgcGF0aHMuIEFueSBzaWduIG9mICIuLiIgb3IgIi4iIGlzIGxpa2VseSBhbiBh
dHRlbXB0IHRvIGJyZWFrIG91dCBvZiB0aGUgc2FuZGJveC4KLSAgICBWZWN0b3I8U3RyaW5nPiBj
b21wb25lbnRzOwotICAgIHBhdGguc3BsaXQoRE9NRmlsZVBhdGg6OnNlcGFyYXRvciwgY29tcG9u
ZW50cyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb21wb25lbnRzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGlmIChjb21wb25lbnRzW2ldID09ICIuIikKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKGNvbXBvbmVudHNbaV0gPT0gIi4uIikKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmls
ZVBhdGg6OmlzVmFsaWROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIC8vICcvJyBpcyBub3QgYWxsb3dl
ZCBpbiBuYW1lLgotICAgIGlmIChuYW1lLmNvbnRhaW5zKCcvJykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gaXNWYWxpZFBhdGgobmFtZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RPTUZpbGVQYXRoLmgJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRE9NRmlsZVBhdGguaAkod29ya2luZyBjb3B5KQpAQCAtMSw4NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBET01GaWxlUGF0aF9oCi0jZGVmaW5lIERPTUZpbGVQYXRoX2gKLQotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIERPTUZpbGVT
eXN0ZW0gcGF0aCB1dGlsaXRpZXMuIEFsbCBtZXRob2RzIGluIHRoaXMgY2xhc3MgYXJlIHN0YXRp
Yy4KLWNsYXNzIERPTUZpbGVQYXRoIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciBz
ZXBhcmF0b3I7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgcm9vdFtdOwotCi0gICAgLy8gUmV0dXJu
cyB0aGUgbmFtZSBwYXJ0IGZyb20gdGhlIGdpdmVuIHBhdGguCi0gICAgc3RhdGljIFN0cmluZyBn
ZXROYW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBwYXJlbnQg
ZGlyZWN0b3J5IHBhdGggb2YgdGhlIGdpdmVuIHBhdGguCi0gICAgc3RhdGljIFN0cmluZyBnZXRE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQotICAgIC8vIENoZWNrcyBpZiBhIGdpdmVu
IHBhdGggaXMgYSBwYXJlbnQgb2YgbWF5QmVDaGlsZC4gVGhpcyBtZXRob2QgYXNzdW1lcyBnaXZl
biBwYXRocyBhcmUgYWJzb2x1dGUgYW5kIGRvIG5vdCBoYXZlIGV4dHJhIHJlZmVyZW5jZXMgdG8g
YSBwYXJlbnQgKGkuZS4gIi4uLyIpLgotICAgIHN0YXRpYyBib29sIGlzUGFyZW50T2YoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1heUJlQ2hpbGQpOwotCi0gICAgLy8gQXBwZW5k
cyB0aGUgc2VwYXJhdG9yIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGggaWYgaXQncyBub3QgdGhlcmUg
YWxyZWFkeS4KLSAgICBzdGF0aWMgU3RyaW5nIGVuc3VyZURpcmVjdG9yeVBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKLQotICAgIC8vIFJldHVybnMgYSBuZXcgcGF0aCBieSBhcHBlbmRpbmcgYSBz
ZXBhcmF0b3IgYW5kIHRoZSBzdXBwbGllZCBwYXRoIGNvbXBvbmVudCB0byB0aGUgcGF0aC4KLSAg
ICBzdGF0aWMgU3RyaW5nIGFwcGVuZChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
Y29tcG9uZW50KTsKLQotICAgIHN0YXRpYyBib29sIGlzQWJzb2x1dGUoY29uc3QgU3RyaW5nJiBw
YXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChET01GaWxlUGF0aDo6
cm9vdCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZW5kc1dpdGhTZXBhcmF0b3IoY29uc3Qg
U3RyaW5nJiBwYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBhdGhbcGF0aC5sZW5ndGgoKSAt
IDFdID09IERPTUZpbGVQYXRoOjpzZXBhcmF0b3I7Ci0gICAgfQotCi0gICAgLy8gRXZhbHVhdGVz
IGFsbCAiLi4vIiBhbmQgIi4vIiBzZWdtZW50cy4gIE5vdGUgdGhhdCAiLy4uLyIgZXhwYW5kcyB0
byAiLyIsIHNvIHlvdSBjYW4ndCBldmVyIHJlZmVyIHRvIGFueXRoaW5nIGFib3ZlIHRoZSByb290
IGRpcmVjdG9yeS4KLSAgICBzdGF0aWMgU3RyaW5nIHJlbW92ZUV4dHJhUGFyZW50UmVmZXJlbmNl
cyhjb25zdCBTdHJpbmcmIHBhdGgpOwotCi0gICAgLy8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBwYXRo
IGZvbGxvd3MgdGhlIEZpbGVTeXN0ZW0gQVBJIG5hbWluZyByZXN0cmljdGlvbnMuCi0gICAgc3Rh
dGljIGJvb2wgaXNWYWxpZFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQotICAgIC8vIENoZWNr
cyBpZiB0aGUgZ2l2ZW4gbmFtZSBmb2xsb3dzIHRoZSBGaWxlU3lzdGVtIEFQSSBuYW1pbmcgcmVz
dHJpY3Rpb25zLgotICAgIHN0YXRpYyBib29sIGlzVmFsaWROYW1lKGNvbnN0IFN0cmluZyYgbmFt
ZSk7Ci0KLXByaXZhdGU6Ci0gICAgRE9NRmlsZVBhdGgoKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIERPTUZpbGVQYXRoX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwx
NjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgi
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0u
aCIKLSNpbmNsdWRlICJET01GaWxlUGF0aC5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5Lmgi
Ci0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRl
ICJGaWxlQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRW50cnkuaCIKLSNpbmNsdWRlICJGaWxl
TWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAi
RmlsZVdyaXRlci5oIgotI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCIKLSNpbmNs
dWRlICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVt
SW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gc3RhdGljCi1QYXNzUmVmUHRyPERPTUZpbGVTeXN0
ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0Zp
bGVTeXN0ZW0pCi17Ci0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0oYWRvcHRS
ZWYobmV3IERPTUZpbGVTeXN0ZW0oY29udGV4dCwgbmFtZSwgYXN5bmNGaWxlU3lzdGVtKSkpOwot
ICAgIGZpbGVTeXN0ZW0tPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW0oZmlsZVN5c3RlbS5nZXQoKSk7Ci0gICAgcmV0dXJu
IGZpbGVTeXN0ZW0ucmVsZWFzZSgpOwotfQotCi1ET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKLSAgICA6IERPTUZpbGVT
eXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIGFzeW5jRmlsZVN5c3RlbSkKLSAgICAsIEFjdGl2ZURP
TU9iamVjdChjb250ZXh0LCB0aGlzKQotewotfQotCi1QYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5
PiBET01GaWxlU3lzdGVtOjpyb290KCkKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50cnk6OmNy
ZWF0ZSh0aGlzLCBET01GaWxlUGF0aDo6cm9vdCk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6
c3RvcCgpCi17Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnN0b3AoKTsKLX0KLQotYm9vbCBET01G
aWxlU3lzdGVtOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX2Fz
eW5jRmlsZVN5c3RlbS0+aGFzUGVuZGluZ0FjdGl2aXR5KCk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5
c3RlbTo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnN0b3Ao
KTsKLSAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKLX0KLQotbmFtZXNw
YWNlIHsKLQotY2xhc3MgQ29udmVydFRvRmlsZVdyaXRlckNhbGxiYWNrIDogcHVibGljIEZpbGVX
cml0ZXJCYXNlQ2FsbGJhY2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnZl
cnRUb0ZpbGVXcml0ZXJDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxi
YWNrPiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udmVy
dFRvRmlsZVdyaXRlckNhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYW5k
bGVFdmVudChGaWxlV3JpdGVyQmFzZSogZmlsZVdyaXRlckJhc2UpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQoc3RhdGljX2Nhc3Q8RmlsZVdyaXRlcio+KGZp
bGVXcml0ZXJCYXNlKSk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBDb252ZXJ0VG9GaWxlV3JpdGVy
Q2FsbGJhY2soUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQotICAgICAg
ICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgewotICAgIH0KLSAgICBSZWZQdHI8RmlsZVdy
aXRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOwotfTsKLQotfQotCi12b2lkIERPTUZpbGVTeXN0ZW06
OmNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxl
V3JpdGVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChmaWxlRW50cnkpOwotCi0gICAgUmVmUHRy
PEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIgPSBGaWxlV3JpdGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKLSAgICBSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4gY29udmVy
c2lvbkNhbGxiYWNrID0gQ29udmVydFRvRmlsZVdyaXRlckNhbGxiYWNrOjpjcmVhdGUoc3VjY2Vz
c0NhbGxiYWNrKTsKLSAgICBPd25QdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFja3M+IGNhbGxiYWNr
cyA9IEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzOjpjcmVhdGUoZmlsZVdyaXRlciwgY29udmVyc2lv
bkNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRl
V3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSwgY2FsbGJhY2tz
LnJlbGVhc2UoKSk7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIEdldFBhdGhDYWxsYmFjayA6
IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8R2V0UGF0aENhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
PiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2V0UGF0aENhbGxiYWNrKGZp
bGVzeXN0ZW0sIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotICAgIH0K
LQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBt
ZXRhZGF0YSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlz
RW1wdHkoKSk7Ci0gICAgICAgIG1fZmlsZXN5c3RlbS0+c2NoZWR1bGVDYWxsYmFjayhtX3N1Y2Nl
c3NDYWxsYmFjay5yZWxlYXNlKCksIEZpbGU6OmNyZWF0ZVdpdGhOYW1lKG1ldGFkYXRhLnBsYXRm
b3JtUGF0aCwgbV9uYW1lKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEdldFBhdGhDYWxsYmFj
ayhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLSAgICAgICAgOiBGaWxlU3lzdGVtQ2FsbGJh
Y2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lzdGVt
KQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1
Y2Nlc3NDYWxsYmFjaykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IG1fZmlsZXN5c3RlbTsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFJlZlB0cjxGaWxlQ2FsbGJh
Y2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotdm9pZCBET01G
aWxlU3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVm
UHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBz
aG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlRW50cnktPmZ1bGxQYXRoKCksIEdldFBhdGhDYWxs
YmFjazo6Y3JlYXRlKHRoaXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lz
dGVtLmgJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBET01GaWxl
U3lzdGVtX2gKLSNkZWZpbmUgRE9NRmlsZVN5c3RlbV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01GaWxlU3lz
dGVtQmFzZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeTsKLWNsYXNzIEZpbGU7Ci1jbGFz
cyBGaWxlQ2FsbGJhY2s7Ci1jbGFzcyBGaWxlRW50cnk7Ci1jbGFzcyBGaWxlV3JpdGVyQ2FsbGJh
Y2s7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMgRE9NRmlsZVN5c3RlbUJhc2UsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotCi0gICAgUGFzc1JlZlB0cjxE
aXJlY3RvcnlFbnRyeT4gcm9vdCgpOwotCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IG1ldGhvZHMu
Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKLQot
ICAgIHZvaWQgY3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSosIFBhc3NSZWZQdHI8RmlsZVdy
aXRlckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgdm9pZCBjcmVh
dGVGaWxlKGNvbnN0IEZpbGVFbnRyeSosIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiwgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0KLSAgICAvLyBTY2hlZHVsZSBhIGNhbGxiYWNrLiBUaGlz
IHNob3VsZCBub3QgY3Jvc3MgdGhyZWFkcyAoc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgc2FtZSBj
b250ZXh0IHRocmVhZCkuCi0gICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhIG1vcmUgZ2VuZXJp
YyBwbGFjZS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgotICAg
IHN0YXRpYyB2b2lkIHNjaGVkdWxlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8Q0I+LCBQYXNzUmVmUHRyPENCQXJnPik7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ0IsIHR5cGVuYW1lIENCQXJnPgotICAgIHZvaWQgc2NoZWR1bGVDYWxsYmFjayhQYXNzUmVm
UHRyPENCPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxDQkFyZz4gY2FsbGJhY2tBcmcpCi0gICAgewot
ICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2FsbGJh
Y2ssIGNhbGxiYWNrQXJnKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRE9NRmlsZVN5c3RlbShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbT4pOwotCi0gICAgLy8gQSBoZWxwZXIgdGVtcGxhdGUgdG8gc2NoZWR1bGUg
YSBjYWxsYmFjayB0YXNrLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDQiwgdHlwZW5hbWUgQ0JB
cmc+Ci0gICAgY2xhc3MgRGlzcGF0Y2hDYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7Ci0gICAgcHVibGljOgotICAgICAgICBEaXNwYXRjaENhbGxiYWNr
VGFzayhQYXNzUmVmUHRyPENCPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxDQkFyZz4gYXJnKQotICAg
ICAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgICAgICAgICAgLCBtX2NhbGxiYWNr
QXJnKGFyZykKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2NhbGxiYWNrQXJnLmdldCgpKTsKLSAgICAgICAg
fQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPENCPiBtX2NhbGxiYWNrOwotICAgICAg
ICBSZWZQdHI8Q0JBcmc+IG1fY2FsbGJhY2tBcmc7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBDQiwgdHlwZW5hbWUgQ0JBcmc+Ci12b2lkIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxl
Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
UGFzc1JlZlB0cjxDQj4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8Q0JBcmc+IGFyZykKLXsKLSAgICBB
U1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIGlm
IChjYWxsYmFjaykKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soYWRv
cHRQdHIobmV3IERpc3BhdGNoQ2FsbGJhY2tUYXNrPENCLCBDQkFyZz4oY2FsbGJhY2ssIGFyZykp
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2VuZGlmIC8vIERPTUZpbGVTeXN0ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RPTUZpbGVTeXN0ZW0uaWRsCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVTeXN0ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9k
dWxlIHN0b3JhZ2UgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVf
U1lTVEVNLAotICAgICAgICBBY3RpdmVET01PYmplY3QsCi0gICAgICAgIEpTTm9TdGF0aWNUYWJs
ZXMKLSAgICBdIERPTUZpbGVTeXN0ZW0gewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBEaXJlY3RvcnlFbnRyeSBy
b290OwotICAgIH07Ci19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW1CYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVT
eXN0ZW1CYXNlLmNwcAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjAxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLQotI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVk
ZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgiCi0j
aW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgotI2lu
Y2x1ZGUgIkVudHJ5QmFzZS5oIgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRl
ICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKLSNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgi
Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURPTUZp
bGVTeXN0ZW1CYXNlOjpET01GaWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBh
c3luY0ZpbGVTeXN0ZW0pCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fbmFtZShu
YW1lKQotICAgICwgbV9hc3luY0ZpbGVTeXN0ZW0oYXN5bmNGaWxlU3lzdGVtKQotewotfQotCi1E
T01GaWxlU3lzdGVtQmFzZTo6fkRPTUZpbGVTeXN0ZW1CYXNlKCkKLXsKLX0KLQotU2VjdXJpdHlP
cmlnaW4qIERPTUZpbGVTeXN0ZW1CYXNlOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKLX0KLQotYm9vbCBET01GaWxlU3lz
dGVtQmFzZTo6Z2V0TWV0YWRhdGEoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxN
ZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRh
KGVudHJ5LT5mdWxsUGF0aCgpLCBNZXRhZGF0YUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9v
bCB2ZXJpZnlBbmRHZXREZXN0aW5hdGlvblBhdGhGb3JDb3B5T3JNb3ZlKGNvbnN0IEVudHJ5QmFz
ZSogc291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBTdHJp
bmcmIGRlc3RpbmF0aW9uUGF0aCkKLXsKLSAgICBBU1NFUlQoc291cmNlKTsKLQotICAgIGlmICgh
cGFyZW50IHx8ICFwYXJlbnQtPmlzRGlyZWN0b3J5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjppc1ZhbGlkTmFt
ZShuZXdOYW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSXQgaXMgYW4gZXJy
b3IgdG8gdHJ5IHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxmIGF0IGFueSBk
ZXB0aCBpZiBpdCBpcyBhIGRpcmVjdG9yeS4KLSAgICBpZiAoc291cmNlLT5pc0RpcmVjdG9yeSgp
ICYmIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKHNvdXJjZS0+ZnVsbFBhdGgoKSwgcGFyZW50LT5m
dWxsUGF0aCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSXQgaXMgYW4gZXJy
b3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlm
ZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3ZpZGVkLgotICAgIGlmICgobmV3
TmFtZS5pc0VtcHR5KCkgfHwgc291cmNlLT5uYW1lKCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBh
dGg6OmdldERpcmVjdG9yeShzb3VyY2UtPmZ1bGxQYXRoKCkpID09IHBhcmVudC0+ZnVsbFBhdGgo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZGVzdGluYXRpb25QYXRoID0gcGFyZW50
LT5mdWxsUGF0aCgpOwotICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIGRlc3Rp
bmF0aW9uUGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdGluYXRpb25QYXRoLCBuZXdOYW1l
KTsKLSAgICBlbHNlCi0gICAgICAgIGRlc3RpbmF0aW9uUGF0aCA9IERPTUZpbGVQYXRoOjphcHBl
bmQoZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPm5hbWUoKSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotc3RhdGljIGJvb2wgcGF0aFRvQWJzb2x1dGVQYXRoKEFzeW5jRmlsZVN5c3RlbTo6VHlw
ZSB0eXBlLCBjb25zdCBFbnRyeUJhc2UqIGJhc2UsIFN0cmluZyBwYXRoLCBTdHJpbmcmIGFic29s
dXRlUGF0aCkKLXsKLSAgICBBU1NFUlQoYmFzZSk7Ci0KLSAgICBpZiAoIURPTUZpbGVQYXRoOjpp
c0Fic29sdXRlKHBhdGgpKQotICAgICAgICBwYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChiYXNl
LT5mdWxsUGF0aCgpLCBwYXRoKTsKLSAgICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVt
b3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKHBhdGgpOwotCi0gICAgaWYgKCh0eXBlID09IEFzeW5j
RmlsZVN5c3RlbTo6VGVtcG9yYXJ5IHx8IHR5cGUgPT0gQXN5bmNGaWxlU3lzdGVtOjpQZXJzaXN0
ZW50KSAmJiAhRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRoKGFic29sdXRlUGF0aCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlU3lzdGVt
QmFzZTo6bW92ZShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNv
bnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBT
dHJpbmcgZGVzdGluYXRpb25QYXRoOwotICAgIGlmICghdmVyaWZ5QW5kR2V0RGVzdGluYXRpb25Q
YXRoRm9yQ29weU9yTW92ZShzb3VyY2UsIHBhcmVudCwgbmV3TmFtZSwgZGVzdGluYXRpb25QYXRo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPm1vdmUo
c291cmNlLT5mdWxsUGF0aCgpLCBkZXN0aW5hdGlvblBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVh
dGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0aW5hdGlvblBhdGgs
IHNvdXJjZS0+aXNEaXJlY3RvcnkoKSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERP
TUZpbGVTeXN0ZW1CYXNlOjpjb3B5KGNvbnN0IEVudHJ5QmFzZSogc291cmNlLCBFbnRyeUJhc2Uq
IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KQotewotICAgIFN0cmluZyBkZXN0aW5hdGlvblBhdGg7Ci0gICAgaWYgKCF2ZXJpZnlBbmRHZXRE
ZXN0aW5hdGlvblBhdGhGb3JDb3B5T3JNb3ZlKHNvdXJjZSwgcGFyZW50LCBuZXdOYW1lLCBkZXN0
aW5hdGlvblBhdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2FzeW5jRmlsZVN5
c3RlbS0+Y29weShzb3VyY2UtPmZ1bGxQYXRoKCksIGRlc3RpbmF0aW9uUGF0aCwgRW50cnlDYWxs
YmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGRlc3Rp
bmF0aW9uUGF0aCwgc291cmNlLT5pc0RpcmVjdG9yeSgpKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OnJlbW92ZShjb25zdCBFbnRyeUJhc2UqIGVudHJ5
LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKGVudHJ5KTsKLSAgICAv
LyBXZSBkb24ndCBhbGxvdyBjYWxsaW5nIHJlbW92ZSgpIG9uIHRoZSByb290IGRpcmVjdG9yeS4K
LSAgICBpZiAoZW50cnktPmZ1bGxQYXRoKCkgPT0gU3RyaW5nKERPTUZpbGVQYXRoOjpyb290KSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUoZW50
cnktPmZ1bGxQYXRoKCksIFZvaWRDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlU3lzdGVt
QmFzZTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChlbnRyeSAmJiBlbnRyeS0+aXNEaXJlY3Rv
cnkoKSk7Ci0gICAgLy8gV2UgZG9uJ3QgYWxsb3cgY2FsbGluZyByZW1vdmUoKSBvbiB0aGUgcm9v
dCBkaXJlY3RvcnkuCi0gICAgaWYgKGVudHJ5LT5mdWxsUGF0aCgpID09IFN0cmluZyhET01GaWxl
UGF0aDo6cm9vdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+cmVtb3ZlUmVjdXJzaXZlbHkoZW50cnktPmZ1bGxQYXRoKCksIFZvaWRDYWxsYmFja3M6OmNy
ZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KGNvbnN0IEVudHJ5QmFzZSog
ZW50cnksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKGVudHJ5KTsK
LSAgICBTdHJpbmcgcGF0aCA9IERPTUZpbGVQYXRoOjpnZXREaXJlY3RvcnkoZW50cnktPmZ1bGxQ
YXRoKCkpOwotCi0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwYXRoLCBF
bnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhp
cywgcGF0aCwgdHJ1ZSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0
ZW1CYXNlOjpnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCi17Ci0gICAgU3RyaW5nIGFic29sdXRlUGF0aDsKLSAgICBpZiAoIXBhdGhUb0Fic29sdXRl
UGF0aChtX2FzeW5jRmlsZVN5c3RlbS0+dHlwZSgpLCBlbnRyeSwgcGF0aCwgYWJzb2x1dGVQYXRo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBj
YWxsYmFja3MgPSBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCBmYWxzZSk7Ci0gICAgaWYgKGZsYWdzICYmIGZs
YWdzLT5pc0NyZWF0ZSgpKQotICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShh
YnNvbHV0ZVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhpc3RzKGFic29sdXRl
UGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
RE9NRmlsZVN5c3RlbUJhc2U6OmdldERpcmVjdG9yeShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIFN0cmluZyBhYnNvbHV0ZVBhdGg7Ci0gICAgaWYg
KCFwYXRoVG9BYnNvbHV0ZVBhdGgobV9hc3luY0ZpbGVTeXN0ZW0tPnR5cGUoKSwgZW50cnksIHBh
dGgsIGFic29sdXRlUGF0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIE93blB0cjxF
bnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0aCwgdHJ1ZSk7Ci0gICAg
aWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQotICAgICAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+Y3JlYXRlRGlyZWN0b3J5KGFic29sdXRlUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNh
bGxiYWNrcy5yZWxlYXNlKCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0t
PmRpcmVjdG9yeUV4aXN0cyhhYnNvbHV0ZVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZWFkRGlyZWN0b3J5
KFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4gcmVhZGVyLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoRE9NRmlsZVBh
dGg6OmlzQWJzb2x1dGUocGF0aCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkRGlyZWN0
b3J5KHBhdGgsIEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2ssIHJlYWRlciwgcGF0aCkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oCShyZXZpc2lvbiAxMTEw
MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NRmlsZVN5c3RlbUJhc2VfaAotI2Rl
ZmluZSBET01GaWxlU3lzdGVtQmFzZV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNp
bmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJXZWJLaXRGbGFncy5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IERpcmVjdG9yeUVudHJ5OwotY2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZTsKLWNsYXNzIEVudHJp
ZXNDYWxsYmFjazsKLWNsYXNzIEVudHJ5QmFzZTsKLWNsYXNzIEVudHJ5Q2FsbGJhY2s7Ci1jbGFz
cyBFcnJvckNhbGxiYWNrOwotY2xhc3MgS1VSTDsKLWNsYXNzIE1ldGFkYXRhQ2FsbGJhY2s7Ci1j
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFz
cyBWb2lkQ2FsbGJhY2s7Ci0KLS8vIEEgY29tbW9uIGJhc2UgY2xhc3MgZm9yIERPTUZpbGVTeXN0
ZW0gYW5kIERPTUZpbGVTeXN0ZW1TeW5jLgotY2xhc3MgRE9NRmlsZVN5c3RlbUJhc2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxET01GaWxlU3lzdGVtQmFzZT4gewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bT4gYXN5bmNGaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
T01GaWxlU3lzdGVtQmFzZShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKTsKLSAgICB9
Ci0gICAgdmlydHVhbCB+RE9NRmlsZVN5c3RlbUJhc2UoKTsKLQotICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIEFzeW5jRmlsZVN5c3RlbSogYXN5
bmNGaWxlU3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0ZpbGVTeXN0ZW0uZ2V0KCk7IH0K
LSAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKLQotICAgIC8vIEFj
dHVhbCBGaWxlU3lzdGVtIEFQSSBpbXBsZW1lbnRhdGlvbnMuICBBbGwgdGhlIHZhbGlkaXR5IGNo
ZWNrcyBvbiB2aXJ0dWFsIHBhdGhzIGFyZSBkb25lIGF0IHRoaXMgbGV2ZWwuCi0gICAgLy8gVGhl
eSByZXR1cm4gZmFsc2UgZm9yIGltbWVkaWF0ZSBlcnJvcnMgdGhhdCBkb24ndCBpbnZvbHZlIGxv
d2VyIEFzeW5jRmlsZVN5c3RlbSBsYXllciAoZS5nLiBmb3IgbmFtZSB2YWxpZGF0aW9uIGVycm9y
cykuICBPdGhlcndpc2UgdGhleSByZXR1cm4gdHJ1ZSAoYnV0IGxhdGVyIG1heSBjYWxsIGJhY2sg
d2l0aCBhbiBydW50aW1lIGVycm9yKS4KLSAgICBib29sIGdldE1ldGFkYXRhKGNvbnN0IEVudHJ5
QmFzZSosIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pOwotICAgIGJvb2wgbW92ZShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNl
KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgYm9vbCBjb3B5KGNvbnN0IEVudHJ5QmFz
ZSogc291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29s
IHJlbW92ZShjb25zdCBFbnRyeUJhc2UqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIGJvb2wgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3Qg
RW50cnlCYXNlKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+KTsKLSAgICBib29sIGdldFBhcmVudChjb25zdCBFbnRyeUJhc2UqLCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIGdl
dEZpbGUoY29uc3QgRW50cnlCYXNlKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdl
YktpdEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPik7Ci0gICAgYm9vbCBnZXREaXJlY3RvcnkoY29uc3QgRW50cnlCYXNlKiwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgYm9vbCByZWFkRGlyZWN0
b3J5KFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4sIGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsK
LQotcHJvdGVjdGVkOgotICAgIERPTUZpbGVTeXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7Ci0g
ICAgZnJpZW5kIGNsYXNzIERPTUZpbGVTeXN0ZW1TeW5jOwotCi0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9jb250ZXh0OwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgbXV0YWJsZSBPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtPiBtX2FzeW5jRmlsZVN5c3RlbTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8v
IERPTUZpbGVTeXN0ZW1CYXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbVN5bmMuY3BwCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgi
Ci0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIK
LSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNr
LmgiCi0jaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNs
dWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAi
RmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1
ZGUgIkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyU3luYy5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZpbGVXcml0ZXJCYXNlOwotCi1QYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlKERPTUZp
bGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9N
RmlsZVN5c3RlbVN5bmMoZmlsZVN5c3RlbS0+bV9jb250ZXh0LCBmaWxlU3lzdGVtLT5tX25hbWUs
IGZpbGVTeXN0ZW0tPm1fYXN5bmNGaWxlU3lzdGVtLnJlbGVhc2UoKSkpOwotfQotCi1ET01GaWxl
U3lzdGVtU3luYzo6RE9NRmlsZVN5c3RlbVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5
bmNGaWxlU3lzdGVtKQotICAgIDogRE9NRmlsZVN5c3RlbUJhc2UoY29udGV4dCwgbmFtZSwgYXN5
bmNGaWxlU3lzdGVtKQotewotfQotCi1ET01GaWxlU3lzdGVtU3luYzo6fkRPTUZpbGVTeXN0ZW1T
eW5jKCkKLXsKLX0KLQotUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERPTUZpbGVTeXN0
ZW1TeW5jOjpyb290KCkKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGUo
dGhpcywgRE9NRmlsZVBhdGg6OnJvb3QpOwotfQotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBDcmVh
dGVGaWxlSGVscGVyIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7Ci1wdWJsaWM6
Ci0gICAgY2xhc3MgQ3JlYXRlRmlsZVJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPENyZWF0ZUZp
bGVSZXN1bHQ+IHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3Jl
YXRlRmlsZVJlc3VsdD4gY3JlYXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDcmVhdGVGaWxlUmVzdWx0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBtX2ZhaWxlZDsKLSAgICAgICAgaW50IG1fY29kZTsKLSAgICAgICAgUmVmUHRyPEZpbGU+IG1f
ZmlsZTsKLQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgQ3JlYXRlRmlsZVJlc3VsdCgpCi0gICAg
ICAgICAgICA6IG1fZmFpbGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NvZGUoMCkKLSAgICAg
ICAgewotICAgICAgICB9Ci0KLSAgICAgICAgfkNyZWF0ZUZpbGVSZXN1bHQoKQotICAgICAgICB7
Ci0gICAgICAgIH0KLSAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxDcmVhdGVG
aWxlUmVzdWx0PjsKLSAgICB9OwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3JlYXRlRmlsZUhl
bHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBT
dHJpbmcmIG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyZWF0ZUZp
bGVIZWxwZXIocmVzdWx0LCBuYW1lKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoaW50IGNvZGUpCi0gICAgewotICAgICAgICBtX3Jlc3VsdC0+bV9mYWlsZWQgPSB0cnVlOwot
ICAgICAgICBtX3Jlc3VsdC0+bV9jb2RlID0gY29kZTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5D
cmVhdGVGaWxlSGVscGVyKCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRSZWFkTWV0YWRh
dGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKLSAgICB7Ci0gICAgICAgIG1fcmVzdWx0
LT5tX2ZpbGUgPSBGaWxlOjpjcmVhdGVXaXRoTmFtZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgsIG1f
bmFtZSk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBDcmVhdGVGaWxlSGVscGVyKFBhc3NSZWZQdHI8
Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIDog
bV9yZXN1bHQocmVzdWx0KQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgIHsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gbV9yZXN1bHQ7Ci0gICAgU3RyaW5nIG1fbmFt
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLVBhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3Rl
bVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgUmVmUHRyPENyZWF0ZUZpbGVIZWxwZXI6
OkNyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdChDcmVhdGVGaWxlSGVscGVyOjpDcmVhdGVGaWxlUmVz
dWx0OjpjcmVhdGUoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShmaWxlRW50cnktPmZ1bGxQYXRoKCksIENyZWF0ZUZpbGVIZWxwZXI6
OmNyZWF0ZShyZXN1bHQsIGZpbGVFbnRyeS0+bmFtZSgpKSk7Ci0gICAgaWYgKCFtX2FzeW5jRmls
ZVN5c3RlbS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgewotICAgICAgICBlYyA9IEZp
bGVFeGNlcHRpb246OkFCT1JUX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlm
IChyZXN1bHQtPm1fZmFpbGVkKSB7Ci0gICAgICAgIGVjID0gcmVzdWx0LT5tX2NvZGU7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0LT5tX2ZpbGU7Ci19Ci0KLW5h
bWVzcGFjZSB7Ci0KLWNsYXNzIFJlY2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2sgOiBwdWJsaWMgRmls
ZVdyaXRlckJhc2VDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVj
ZWl2ZUZpbGVXcml0ZXJDYWxsYmFjaz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUmVjZWl2ZUZpbGVXcml0ZXJDYWxsYmFjaygpKTsKLSAgICB9Ci0KLSAgICBi
b29sIGhhbmRsZUV2ZW50KEZpbGVXcml0ZXJCYXNlKiBmaWxlV3JpdGVyQmFzZSkKLSAgICB7Ci0j
aWZuZGVmIE5ERUJVRwotICAgICAgICBtX2ZpbGVXcml0ZXJCYXNlID0gZmlsZVdyaXRlckJhc2U7
Ci0jZWxzZQotICAgICAgICBBU1NFUlRfVU5VU0VEKGZpbGVXcml0ZXJCYXNlLCBmaWxlV3JpdGVy
QmFzZSk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0jaWZuZGVmIE5E
RUJVRwotICAgIEZpbGVXcml0ZXJCYXNlKiBmaWxlV3JpdGVyQmFzZSgpCi0gICAgewotICAgICAg
ICByZXR1cm4gbV9maWxlV3JpdGVyQmFzZTsKLSAgICB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAg
ICBSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrKCkKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIDog
bV9maWxlV3JpdGVyQmFzZSgwKQotI2VuZGlmCi0gICAgewotICAgIH0KLQotI2lmbmRlZiBOREVC
VUcKLSAgICBGaWxlV3JpdGVyQmFzZSogbV9maWxlV3JpdGVyQmFzZTsKLSNlbmRpZgotfTsKLQot
Y2xhc3MgTG9jYWxFcnJvckNhbGxiYWNrIDogcHVibGljIEVycm9yQ2FsbGJhY2sgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2FsRXJyb3JDYWxsYmFjaz4gY3JlYXRlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9jYWxFcnJvckNhbGxiYWNrKCkpOwot
ICAgIH0KLQotICAgIGJvb2wgaGFuZGxlRXZlbnQoRmlsZUVycm9yKiBlcnJvcikKLSAgICB7Ci0g
ICAgICAgIG1fZXJyb3IgPSBlcnJvcjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgRmlsZUVycm9yKiBlcnJvcigpCi0gICAgewotICAgICAgICByZXR1cm4gbV9lcnJvci5nZXQo
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTG9jYWxFcnJvckNhbGxiYWNrKCkKLSAgICB7Ci0g
ICAgfQotICAgIFJlZlB0cjxGaWxlRXJyb3I+IG1fZXJyb3I7Ci19OwotCi19Ci0KLVBhc3NSZWZQ
dHI8RmlsZVdyaXRlclN5bmM+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVXcml0ZXIoY29uc3Qg
RmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NF
UlQoZmlsZUVudHJ5KTsKLSAgICBlYyA9IDA7Ci0KLQotICAgIFJlZlB0cjxGaWxlV3JpdGVyU3lu
Yz4gZmlsZVdyaXRlciA9IEZpbGVXcml0ZXJTeW5jOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8UmVj
ZWl2ZUZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gUmVjZWl2ZUZpbGVXcml0
ZXJDYWxsYmFjazo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExvY2FsRXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayA9IExvY2FsRXJyb3JDYWxsYmFjazo6Y3JlYXRlKCk7Ci0KLSAgICBPd25QdHI8
RmlsZVdyaXRlckJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEZpbGVXcml0ZXJCYXNlQ2FsbGJh
Y2tzOjpjcmVhdGUoZmlsZVdyaXRlciwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
LSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIGZp
bGVFbnRyeS0+ZnVsbFBhdGgoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci0gICAgaWYgKCFtX2Fz
eW5jRmlsZVN5c3RlbS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgewotICAgICAgICBl
YyA9IEZpbGVFeGNlcHRpb246OkFCT1JUX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
ICAgIGlmIChlcnJvckNhbGxiYWNrLT5lcnJvcigpKSB7Ci0gICAgICAgIEFTU0VSVCghc3VjY2Vz
c0NhbGxiYWNrLT5maWxlV3JpdGVyQmFzZSgpKTsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9u
OjpFcnJvckNvZGVUb0V4Y2VwdGlvbkNvZGUoZXJyb3JDYWxsYmFjay0+ZXJyb3IoKS0+Y29kZSgp
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIEFTU0VSVChzdWNjZXNzQ2FsbGJhY2st
PmZpbGVXcml0ZXJCYXNlKCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxGaWxlV3JpdGVyU3lu
Yyo+KHN1Y2Nlc3NDYWxsYmFjay0+ZmlsZVdyaXRlckJhc2UoKSkgPT0gZmlsZVdyaXRlci5nZXQo
KSk7Ci0gICAgcmV0dXJuIGZpbGVXcml0ZXI7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShG
SUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5
bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1T
eW5jLmgJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBET01G
aWxlU3lzdGVtU3luY19oCi0jZGVmaW5lIERPTUZpbGVTeXN0ZW1TeW5jX2gKLQotI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGlyZWN0b3J5RW50cnlTeW5jOwotY2xhc3MgRmlsZTsK
LWNsYXNzIEZpbGVFbnRyeVN5bmM7Ci1jbGFzcyBGaWxlV3JpdGVyU3luYzsKLQotdHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKLQotY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmMgOiBwdWJsaWMgRE9N
RmlsZVN5c3RlbUJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1TeW5jPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVt
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtU3luYyhj
b250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKik7Ci0K
LSAgICB2aXJ0dWFsIH5ET01GaWxlU3lzdGVtU3luYygpOwotCi0gICAgUGFzc1JlZlB0cjxEaXJl
Y3RvcnlFbnRyeVN5bmM+IHJvb3QoKTsKLQotICAgIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlRmls
ZShjb25zdCBGaWxlRW50cnlTeW5jKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8
RmlsZVdyaXRlclN5bmM+IGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnlTeW5jKiwgRXhjZXB0
aW9uQ29kZSYpOwotCi1wcml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtPik7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRp
ZiAvLyBET01GaWxlU3lzdGVtU3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RP
TUZpbGVTeXN0ZW1TeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RPTUZpbGVTeXN0ZW1TeW5jLmlkbAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRp
b25hbD1GSUxFX1NZU1RFTSwKLSAgICAgICAgSlNOb1N0YXRpY1RhYmxlcwotICAgIF0gRE9NRmls
ZVN5c3RlbVN5bmMgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7
Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBEaXJlY3RvcnlFbnRyeVN5bmMgcm9vdDsKLSAg
ICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAJKHJldmlzaW9uIDExMTAwMykK
KysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5LmgiCi0KLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNs
dWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNs
dWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKLSNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRW50cnk6OkVudHJ5KFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCi0gICAgOiBFbnRyeUJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLXZvaWQg
RW50cnk6OmdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCi17Ci0g
ICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7
Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldE1ldGFkYXRhKHRoaXMsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFj
ayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJ
TlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotdm9pZCBFbnRyeTo6bW92ZVRvKFBhc3NS
ZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVt
LT5tb3ZlKHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2Fs
bGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUikpOwotfQotCi12b2lkIEVudHJ5Ojpjb3B5VG8oUGFzc1JlZlB0cjxEaXJl
Y3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2tSZWYpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHkodGhp
cywgcGFyZW50LmdldCgpLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQot
ICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxl
YXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKSk7Ci19Ci0KLXZvaWQgRW50cnk6OnJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tS
ZWYpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJy
b3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlbW92ZSh0aGlzLCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVk
dWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZp
bGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19Ci0KLXZvaWQgRW50cnk6Omdl
dFBhcmVudChQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlm
ICghbV9maWxlU3lzdGVtLT5nZXRQYXJlbnQodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2Fs
bGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5oCShyZXZpc2lv
biAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlfaAotI2RlZmluZSBFbnRyeV9oCi0KLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5j
bHVkZSAiRW50cnlCYXNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVj
dG9yeUVudHJ5OwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVudHJ5U3luYzsKLWNsYXNz
IEVycm9yQ2FsbGJhY2s7Ci1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgVm9pZENhbGxi
YWNrOwotCi1jbGFzcyBFbnRyeSA6IHB1YmxpYyBFbnRyeUJhc2UgewotcHVibGljOgotICAgIERP
TUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01G
aWxlU3lzdGVtKj4obV9maWxlU3lzdGVtLmdldCgpKTsgfQotCi0gICAgdm9pZCBnZXRNZXRhZGF0
YShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwotICAgIHZvaWQgbW92ZVRv
KFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0g
U3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7Ci0gICAg
dm9pZCBjb3B5VG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJp
bmcmIG5hbWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBj
b25zdDsKLSAgICB2b2lkIHJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkg
Y29uc3Q7Ci0gICAgdm9pZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sg
PSAwKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAgIEVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5
c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEVu
dHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsCShyZXZpc2lvbiAxMTEwMDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotbW9kdWxlIHN0b3JhZ2UgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRp
dGlvbmFsPUZJTEVfU1lTVEVNLAotICAgICAgICBDdXN0b21Ub0pTT2JqZWN0LAotICAgICAgICBK
U05vU3RhdGljVGFibGVzCi0gICAgXSBFbnRyeSB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGlzRmlsZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNE
aXJlY3Rvcnk7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBmdWxsUGF0aDsKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTUZpbGVTeXN0ZW0gZmlsZXN5c3RlbTsKLQotICAgICAgICB2b2lk
IGdldE1ldGFkYXRhKGluIFtDYWxsYmFja10gTWV0YWRhdGFDYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7
Ci0gICAgICAgIHZvaWQgbW92ZVRvKGluIERpcmVjdG9yeUVudHJ5IHBhcmVudCwgaW4gW09wdGlv
bmFsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmdd
IERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJv
ckNhbGxiYWNrKTsKLSAgICAgICAgdm9pZCBjb3B5VG8oaW4gRGlyZWN0b3J5RW50cnkgcGFyZW50
LCBpbiBbT3B0aW9uYWwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9
TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5
Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNh
bGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgICAgICBET01TdHJpbmcgdG9VUkwoKTsKLSAgICAg
ICAgdm9pZCByZW1vdmUoaW4gW0NhbGxiYWNrXSBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
LCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwot
ICAgICAgICB2b2lkIGdldFBhcmVudChpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxi
YWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFj
ayBlcnJvckNhbGxiYWNrKTsKLSAgICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9FbnRyeUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vu
dHJ5QXJyYXkuY3BwCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0VudHJ5QXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVudHJ5QXJyYXk6OkVudHJ5QXJyYXkoKQot
ewotfQotCi1FbnRyeSogRW50cnlBcnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsK
LSAgICBpZiAoaW5kZXggPj0gbV9lbnRyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgcmV0dXJuIG1fZW50cmllc1tpbmRleF0uZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0VudHJ5QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vu
dHJ5QXJyYXkuaAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9F
bnRyeUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlB
cnJheV9oCi0jZGVmaW5lIEVudHJ5QXJyYXlfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jaW5jbHVkZSAiRW50cnkuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50
cnlBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QXJyYXk+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5PiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5KCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7IH0KLSAgICBFbnRyeSogaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFBh
c3NSZWZQdHI8RW50cnk+IGVudHJ5KTsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fZW50cmllcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX2VudHJpZXMu
Y2xlYXIoKTsgfQotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8RW50cnk+IGVudHJ5KSB7IG1f
ZW50cmllcy5hcHBlbmQoZW50cnkpOyB9Ci0KLXByaXZhdGU6Ci0gICAgRW50cnlBcnJheSgpOwot
Ci0gICAgVmVjdG9yPFJlZlB0cjxFbnRyeT4gPiBtX2VudHJpZXM7Ci19OwotCi19IC8vIG5hbWVz
cGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRW50cnlB
cnJheV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwJKHJldmlzaW9u
IDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2Ug
WwotICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICAgICAgSW5kZXhlZEdldHRl
ciwKLSAgICAgICAgSlNOb1N0YXRpY1RhYmxlcwotICAgIF0gRW50cnlBcnJheSB7Ci0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICAgICAgRW50cnkg
aXRlbShpbiBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgfTsKLX0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwCShyZXZpc2lvbiAxMTEw
MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVu
dHJ5QXJyYXlTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJF
bnRyeUFycmF5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxFbnRyeUFy
cmF5U3luYz4gRW50cnlBcnJheVN5bmM6OmNyZWF0ZShFbnRyeUFycmF5KiBlbnRyaWVzKQotewot
ICAgIFJlZlB0cjxFbnRyeUFycmF5U3luYz4gZW50cmllc1N5bmMgPSBhZG9wdFJlZihuZXcgRW50
cnlBcnJheVN5bmMoKSk7Ci0gICAgaWYgKGVudHJpZXMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICBlbnRyaWVz
U3luYy0+YXBwZW5kKEVudHJ5U3luYzo6Y3JlYXRlKGVudHJpZXMtPml0ZW0oaSkpKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGVudHJpZXNTeW5jLnJlbGVhc2UoKTsKLX0KLQotRW50cnlBcnJheVN5bmM6
OkVudHJ5QXJyYXlTeW5jKCkKLXsKLX0KLQotRW50cnlTeW5jKiBFbnRyeUFycmF5U3luYzo6aXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPj0gbV9lbnRyaWVzLnNp
emUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZW50cmllc1tpbmRleF0uZ2V0
KCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmgJKHJldmlzaW9uIDExMTAwMykKKysrIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBFbnRyeUFycmF5U3luY19oCi0jZGVmaW5lIEVudHJ5QXJyYXlT
eW5jX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5U3luYy5o
IgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeUFycmF5OwotCi1jbGFzcyBF
bnRyeUFycmF5U3luYyA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QXJyYXlTeW5jPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlBcnJheVN5bmM+IGNyZWF0ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVudHJ5QXJyYXlTeW5jKCkpOwotICAgIH0K
LQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBjcmVhdGUoRW50cnlBcnJh
eSopOwotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbnRyaWVzLnNp
emUoKTsgfQotICAgIEVudHJ5U3luYyogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0KLSAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2VudHJpZXMuaXNFbXB0eSgpOyB9Ci0g
ICAgdm9pZCBjbGVhcigpIHsgbV9lbnRyaWVzLmNsZWFyKCk7IH0KLSAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPEVudHJ5U3luYz4gZW50cnkpIHsgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7IH0K
LQotcHJpdmF0ZToKLSAgICBFbnRyeUFycmF5U3luYygpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxF
bnRyeVN5bmM+ID4gbV9lbnRyaWVzOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVf
U1lTVEVNKQotCi0jZW5kaWYgLy8gRW50cnlBcnJheVN5bmNfaApJbmRleDogU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi1tb2R1bGUgc3RvcmFnZSB7Ci0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29u
ZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgICAgIEluZGV4ZWRHZXR0ZXIsCi0gICAgICAgIEpT
Tm9TdGF0aWNUYWJsZXMKLSAgICBdIEVudHJ5QXJyYXlTeW5jIHsKLSAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgICAgICBFbnRyeVN5bmMgaXRlbShp
biBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgfTsKLX0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5QmFzZS5jcHAJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5QmFzZS5oIgotCi0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVk
ZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FbnRyeUJhc2U6OkVudHJ5QmFzZShQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KQotICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgLCBtX2Z1bGxQYXRoKGZ1bGxQ
YXRoKQotICAgICwgbV9uYW1lKERPTUZpbGVQYXRoOjpnZXROYW1lKGZ1bGxQYXRoKSkKLXsKLX0K
LQotRW50cnlCYXNlOjp+RW50cnlCYXNlKCkKLXsKLX0KLQotU3RyaW5nIEVudHJ5QmFzZTo6dG9V
UkwoKQotewotICAgIHJldHVybiBtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpLT50b1VS
TChtX2ZpbGVTeXN0ZW0tPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG1fZnVsbFBhdGgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QmFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgJKHJldmlzaW9uIDExMTAw
MykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlCYXNlX2gKLSNkZWZpbmUgRW50cnlCYXNlX2gK
LQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwotY2xh
c3MgRW50cnlTeW5jOwotCi0vLyBBIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBFbnRyeSBhbmQgRW50
cnlTeW5jLgotY2xhc3MgRW50cnlCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnlCYXNlPiB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnlCYXNlKCk7Ci0KLSAgICBET01GaWxlU3lzdGVt
QmFzZSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5nZXQoKTsgfQot
Ci0gICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAg
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxQYXRoOyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICBT
dHJpbmcgdG9VUkwoKTsKLQotcHJvdGVjdGVkOgotICAgIEVudHJ5QmFzZShQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci0gICAgZnJpZW5kIGNs
YXNzIEVudHJ5U3luYzsKLQotICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lz
dGVtOwotCi0gICAgLy8gVGhpcyBpcyBhIHZpcnR1YWwgcGF0aC4KLSAgICBTdHJpbmcgbV9mdWxs
UGF0aDsKLQotICAgIFN0cmluZyBtX25hbWU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyeUJhc2VfaApJbmRleDogU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmgJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIEVudHJ5Q2FsbGJhY2tfaAotI2RlZmluZSBFbnRyeUNhbGxiYWNrX2gKLQotI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50cnk7Ci0KLWNsYXNzIEVudHJ5Q2FsbGJhY2sg
OiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyeUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+RW50cnlDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRy
eSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyeUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmlkbAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotbW9kdWxlIHN0b3JhZ2UgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlv
bmFsPUZJTEVfU1lTVEVNLAotICAgICAgICBDYWxsYmFjawotICAgIF0gRW50cnlDYWxsYmFjayB7
Ci0gICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRW50cnkgZW50cnkpOwotICAgIH07Ci19
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwCShyZXZpc2lvbiAxMTEwMDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRW50cnlTeW5j
LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlUGF0aC5o
IgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50
cnkuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRW50
cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIk1ldGFkYXRh
LmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y3JlYXRlKEVudHJ5QmFzZSog
ZW50cnkpCi17Ci0gICAgaWYgKGVudHJ5LT5pc0ZpbGUoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGaWxlRW50cnlTeW5jKGVudHJ5LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQ
YXRoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeVN5bmMoZW50cnkt
Pm1fZmlsZVN5c3RlbSwgZW50cnktPm1fZnVsbFBhdGgpKTsKLX0KLQotUGFzc1JlZlB0cjxNZXRh
ZGF0YT4gRW50cnlTeW5jOjpnZXRNZXRhZGF0YShFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBl
YyA9IDA7Ci0gICAgTWV0YWRhdGFTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3Rl
bS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRNZXRhZGF0
YSh0aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkp
KSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJS
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQo
ZWMpOwotfQotCi1QYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNl
cHRpb25Db2RlJiBlYykgY29uc3QKLXsKLSAgICBlYyA9IDA7Ci0gICAgRW50cnlTeW5jQ2FsbGJh
Y2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlm
ICghbV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgaGVscGVyLnN1
Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9
IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotUGFzc1Jl
ZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50
cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlciht
X2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+
Y29weSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwg
aGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJ
TlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBy
ZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLXZvaWQgRW50cnlTeW5jOjpyZW1vdmUo
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIFZvaWRTeW5jQ2Fs
bGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAg
IGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmUodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygp
LCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246
OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBo
ZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3lu
Yzo6Z2V0UGFyZW50KCkgY29uc3QKLXsKLSAgICAvLyBTeW5jIHZlcmlvbiBvZiBnZXRQYXJlbnQg
ZG9lc24ndCB0aHJvdyBleGNlcHRpb25zLgotICAgIFN0cmluZyBwYXJlbnRQYXRoID0gRE9NRmls
ZVBhdGg6OmdldERpcmVjdG9yeShmdWxsUGF0aCgpKTsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50
cnlTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBwYXJlbnRQYXRoKTsKLX0KLQotRW50cnlTeW5j
OjpFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IEVudHJ5QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0
aCkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5U3luYy5oCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEVudHJ5U3luY19oCi0jZGVmaW5lIEVudHJ5U3luY19oCi0KLSNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgotI2luY2x1ZGUgIkVu
dHJ5QmFzZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIERpcmVjdG9yeUVudHJ5U3luYzsKLWNsYXNzIE1ldGFkYXRhOwotCi10
eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBFbnRyeVN5bmMgOiBwdWJsaWMgRW50
cnlCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGNyZWF0
ZShFbnRyeUJhc2UqKTsKLQotICAgIERPTUZpbGVTeXN0ZW1TeW5jKiBmaWxlc3lzdGVtKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbVN5bmMqPihtX2ZpbGVTeXN0ZW0u
Z2V0KCkpOyB9Ci0KLSAgICBQYXNzUmVmUHRyPE1ldGFkYXRhPiBnZXRNZXRhZGF0YShFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IG1vdmVUbyhQYXNzUmVmUHRyPERp
cmVjdG9yeUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEVudHJ5U3luYz4gY29weVRvKFBhc3NSZWZQdHI8
RGlyZWN0b3J5RW50cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OwotICAgIHZvaWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAg
ICBQYXNzUmVmUHRyPEVudHJ5U3luYz4gZ2V0UGFyZW50KCkgY29uc3Q7Ci0KLXByb3RlY3RlZDoK
LSAgICBFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jZW5kaWYgLy8gRW50cnlTeW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50
cnlTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3lu
Yy5pZGwJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlT
eW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2Ugewot
ICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgICAg
ICBDdXN0b21Ub0pTT2JqZWN0LAotICAgICAgICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBFbnRy
eVN5bmMgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0ZpbGU7Ci0gICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRGlyZWN0b3J5OwotICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgZnVsbFBhdGg7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01GaWxl
U3lzdGVtU3luYyBmaWxlc3lzdGVtOwotCi0gICAgICAgIE1ldGFkYXRhIGdldE1ldGFkYXRhKCkg
cmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgRW50cnlTeW5jIG1vdmVUbyhpbiBEaXJl
Y3RvcnlFbnRyeVN5bmMgcGFyZW50LCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRV
bmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSkgcmFpc2VzIChGaWxlRXhjZXB0
aW9uKTsKLSAgICAgICAgRW50cnlTeW5jIGNvcHlUbyhpbiBEaXJlY3RvcnlFbnRyeVN5bmMgcGFy
ZW50LCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3Ry
aW5nXSBET01TdHJpbmcgbmFtZSkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgRE9N
U3RyaW5nIHRvVVJMKCk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlKCkgcmFpc2VzIChGaWxlRXhjZXB0
aW9uKTsKLSAgICAgICAgRGlyZWN0b3J5RW50cnlTeW5jIGdldFBhcmVudCgpOwotICAgIH07Ci19
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vycm9yQ2FsbGJhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vycm9yQ2FsbGJhY2suaAkocmV2aXNpb24gMTEx
MDAzKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FcnJvckNhbGxiYWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRXJyb3JDYWxsYmFja19oCi0jZGVmaW5lIEVy
cm9yQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWxlRXJyb3I7
Ci0KLWNsYXNzIEVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxFcnJvckNhbGxiYWNr
PiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RXJyb3JDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVFdmVudChGaWxlRXJyb3IqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRXJyb3JDYWxs
YmFja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vycm9yQ2FsbGJhY2suaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRXJyb3JDYWxsYmFjay5pZGwJKHJl
dmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRXJyb3JDYWxsYmFjay5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBp
bnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICAgICAgQ2Fs
bGJhY2sKLSAgICBdIEVycm9yQ2FsbGJhY2sgewotICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50
KGluIEZpbGVFcnJvciBlcnJvcik7Ci0gICAgfTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlQ2FsbGJhY2suaAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBGaWxlQ2FsbGJhY2tfaAotI2RlZmluZSBGaWxlQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRmlsZUNhbGxiYWNrIDogcHVibGlj
IFJlZkNvdW50ZWQ8RmlsZUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZUNh
bGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGUqKSA9IDA7Ci19
OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
ZW5kaWYgLy8gRmlsZUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZUNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVD
YWxsYmFjay5pZGwJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZUNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIGZp
bGVhcGkgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVN
LAotICAgICAgICBDYWxsYmFjawotICAgIF0gRmlsZUNhbGxiYWNrIHsKLSAgICAgICAgYm9vbGVh
biBoYW5kbGVFdmVudChpbiBGaWxlIGZpbGUpOwotICAgIH07Ci19CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlRW50cnkuY3BwCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlRW50cnkuaCIKLQotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJFcnJv
ckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVDYWxsYmFjay5o
IgotI2luY2x1ZGUgIkZpbGVXcml0ZXJDYWxsYmFjay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLUZpbGVFbnRyeTo6RmlsZUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBFbnRyeShmaWxlU3lzdGVt
LCBmdWxsUGF0aCkKLXsKLX0KLQotdm9pZCBGaWxlRW50cnk6OmNyZWF0ZVdyaXRlcihQYXNzUmVm
UHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgZmlsZXN5c3RlbSgpLT5jcmVhdGVXcml0
ZXIodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotdm9pZCBGaWxl
RW50cnk6OmZpbGUoUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIGZpbGVzeXN0ZW0o
KS0+Y3JlYXRlRmlsZSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQot
Ci19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5oCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIEZpbGVFbnRyeV9oCi0jZGVmaW5lIEZpbGVFbnRyeV9oCi0KLSNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyeS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwotY2xhc3MgRmlsZUNhbGxiYWNrOwotY2xhc3Mg
RmlsZVdyaXRlckNhbGxiYWNrOwotCi1jbGFzcyBGaWxlRW50cnkgOiBwdWJsaWMgRW50cnkgewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVFbnRyeT4gY3JlYXRlKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVFbnRyeShmaWxlU3lzdGVt
LCBmdWxsUGF0aCkpOwotICAgIH0KLQotICAgIHZvaWQgY3JlYXRlV3JpdGVyKFBhc3NSZWZQdHI8
RmlsZVdyaXRlckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwotICAg
IHZvaWQgZmlsZShQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gPSAwKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgRmlsZUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEZp
bGVFbnRyeV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnkuaWRsCShyZXZpc2lv
biAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2Ug
WwotICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICAgICAgSlNHZW5lcmF0ZVRv
TmF0aXZlT2JqZWN0LAotICAgICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICAgICAgSlNO
b1N0YXRpY1RhYmxlcwotICAgIF0gRmlsZUVudHJ5IDogRW50cnkgewotICAgICAgICB2b2lkIGNy
ZWF0ZVdyaXRlcihpbiBbQ2FsbGJhY2tdIEZpbGVXcml0ZXJDYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7
Ci0gICAgICAgIHZvaWQgZmlsZShpbiBbQ2FsbGJhY2tdIEZpbGVDYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFj
ayk7Ci0gICAgfTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5U3lu
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnlTeW5j
LmNwcAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50
cnlTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLQotI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyU3luYy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZpbGVFbnRyeVN5bmM6OkZpbGVFbnRyeVN5bmMoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCkKLSAgICA6IEVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotUGFzc1Jl
ZlB0cjxGaWxlPiBGaWxlRW50cnlTeW5jOjpmaWxlKEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAg
IHJldHVybiBmaWxlc3lzdGVtKCktPmNyZWF0ZUZpbGUodGhpcywgZWMpOwotfQotCi1QYXNzUmVm
UHRyPEZpbGVXcml0ZXJTeW5jPiBGaWxlRW50cnlTeW5jOjpjcmVhdGVXcml0ZXIoRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgcmV0dXJuIGZpbGVzeXN0ZW0oKS0+Y3JlYXRlV3JpdGVyKHRoaXMs
IGVjKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnlTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnlTeW5jLmgJKHJldmlzaW9uIDExMTAwMykKKysrIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIEZpbGVFbnRyeVN5bmNfaAotI2RlZmluZSBGaWxlRW50cnlTeW5j
X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEZpbGU7Ci1jbGFzcyBGaWxlV3JpdGVyU3luYzsKLQotY2xhc3MgRmlsZUVudHJ5U3luYyA6
IHB1YmxpYyBFbnRyeVN5bmMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVF
bnRyeVN5bmM+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGaWxlRW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7Ci0gICAgfQotCi0gICAg
dmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIFBhc3NS
ZWZQdHI8RmlsZT4gZmlsZShFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxGaWxlV3Jp
dGVyU3luYz4gY3JlYXRlV3JpdGVyKEV4Y2VwdGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgRW50cnlTeW5jOwotICAgIEZpbGVFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZUVudHJ5U3luY19oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeVN5bmMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5U3luYy5pZGwJKHJldmlzaW9uIDEx
MTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5U3luYy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2Ug
WwotICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICAgICAgSlNHZW5lcmF0ZVRv
TmF0aXZlT2JqZWN0LAotICAgICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICAgICAgSlNO
b1N0YXRpY1RhYmxlcwotICAgIF0gRmlsZUVudHJ5U3luYyA6IEVudHJ5U3luYyB7Ci0gICAgICAg
IEZpbGUgZmlsZSgpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIEZpbGVXcml0ZXJT
eW5jIGNyZWF0ZVdyaXRlcigpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgfTsKLX0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2suaAkocmV2aXNp
b24gMTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlU3lzdGVtQ2FsbGJh
Y2tfaAotI2RlZmluZSBGaWxlU3lzdGVtQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBET01GaWxlU3lzdGVtOwotCi1jbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2sgOiBw
dWJsaWMgUmVmQ291bnRlZDxGaWxlU3lzdGVtQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5GaWxlU3lzdGVtQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZl
bnQoRE9NRmlsZVN5c3RlbSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlU3lzdGVtQ2FsbGJhY2tfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2suaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrLmlkbAko
cmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2Fs
bGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgc3RvcmFnZSB7
Ci0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAg
ICAgIENhbGxiYWNrCi0gICAgXSBGaWxlU3lzdGVtQ2FsbGJhY2sgewotICAgICAgICBib29sZWFu
IGhhbmRsZUV2ZW50KGluIERPTUZpbGVTeXN0ZW0gZmlsZVN5c3RlbSk7Ci0gICAgfTsKLX0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAko
cmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2Fs
bGJhY2tzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyODMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0KLSNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJBc3lu
Y0ZpbGVXcml0ZXIuaCIKLSNpbmNsdWRlICJET01GaWxlUGF0aC5oIgotI2luY2x1ZGUgIkRPTUZp
bGVTeXN0ZW1CYXNlLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJE
aXJlY3RvcnlSZWFkZXIuaCIKLSNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNpbmNsdWRl
ICJFbnRyeUFycmF5LmgiCi0jaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVy
cm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRW50cnkuaCIKLSNpbmNsdWRlICJGaWxlRXJy
b3IuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2Fs
bGJhY2suaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZS5oIgotI2luY2x1ZGUgIkZpbGVXcml0
ZXJCYXNlQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJNZXRhZGF0YS5oIgotI2luY2x1ZGUgIk1ldGFk
YXRhQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVm9pZENhbGxiYWNrLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRmlsZVN5c3Rl
bUNhbGxiYWNrc0Jhc2U6OkZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLSAgICA6IG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxi
YWNrKQotewotfQotCi1GaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6fkZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlKCkKLXsKLX0KLQotdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChp
bnQgY29kZSkKLXsKLSAgICBpZiAobV9lcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgIG1fZXJyb3JD
YWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9yOjpjcmVhdGUoc3RhdGljX2Nhc3Q8RmlsZUVy
cm9yOjpFcnJvckNvZGU+KGNvZGUpKS5nZXQoKSk7Ci0gICAgICAgIG1fZXJyb3JDYWxsYmFjay5j
bGVhcigpOwotICAgIH0KLX0KLQotLy8gRW50cnlDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1QYXNzT3duUHRy
PEVudHJ5Q2FsbGJhY2tzPiBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KQotewotICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRW50cnlDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
LCBmaWxlU3lzdGVtLCBleHBlY3RlZFBhdGgsIGlzRGlyZWN0b3J5KSk7Ci19Ci0KLUVudHJ5Q2Fs
bGJhY2tzOjpFbnRyeUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVk
UGF0aCwgYm9vbCBpc0RpcmVjdG9yeSkKLSAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVy
cm9yQ2FsbGJhY2spCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi0g
ICAgLCBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKLSAgICAsIG1fZXhwZWN0ZWRQYXRoKGV4cGVj
dGVkUGF0aCkKLSAgICAsIG1faXNEaXJlY3RvcnkoaXNEaXJlY3RvcnkpCi17Ci19Ci0KLXZvaWQg
RW50cnlDYWxsYmFja3M6OmRpZFN1Y2NlZWQoKQotewotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFj
aykgewotICAgICAgICBpZiAobV9pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgIG1fc3VjY2Vzc0Nh
bGxiYWNrLT5oYW5kbGVFdmVudChEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwg
bV9leHBlY3RlZFBhdGgpLmdldCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdWNj
ZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFbnRyeTo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwg
bV9leHBlY3RlZFBhdGgpLmdldCgpKTsKLSAgICB9Ci0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xl
YXIoKTsKLX0KLQotLy8gRW50cmllc0NhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1QYXNzT3duUHRyPEVudHJpZXND
YWxsYmFja3M+IEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEVudHJpZXNDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4gZGlyZWN0b3J5UmVhZGVyLCBj
b25zdCBTdHJpbmcmIGJhc2VQYXRoKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRW50cmll
c0NhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGRpcmVjdG9yeVJlYWRl
ciwgYmFzZVBhdGgpKTsKLX0KLQotRW50cmllc0NhbGxiYWNrczo6RW50cmllc0NhbGxiYWNrcyhQ
YXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFz
ZT4gZGlyZWN0b3J5UmVhZGVyLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKQotICAgIDogRmlsZVN5
c3RlbUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykKLSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNr
KHN1Y2Nlc3NDYWxsYmFjaykKLSAgICAsIG1fZGlyZWN0b3J5UmVhZGVyKGRpcmVjdG9yeVJlYWRl
cikKLSAgICAsIG1fYmFzZVBhdGgoYmFzZVBhdGgpCi0gICAgLCBtX2VudHJpZXMoRW50cnlBcnJh
eTo6Y3JlYXRlKCkpCi17Ci0gICAgQVNTRVJUKG1fZGlyZWN0b3J5UmVhZGVyKTsKLX0KLQotdm9p
ZCBFbnRyaWVzQ2FsbGJhY2tzOjpkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sIGlzRGlyZWN0b3J5KQotewotICAgIGlmIChpc0RpcmVjdG9yeSkKLSAgICAgICAg
bV9lbnRyaWVzLT5hcHBlbmQoRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShtX2RpcmVjdG9yeVJlYWRl
ci0+ZmlsZXN5c3RlbSgpLCBET01GaWxlUGF0aDo6YXBwZW5kKG1fYmFzZVBhdGgsIG5hbWUpKSk7
Ci0gICAgZWxzZQotICAgICAgICBtX2VudHJpZXMtPmFwcGVuZChGaWxlRW50cnk6OmNyZWF0ZSht
X2RpcmVjdG9yeVJlYWRlci0+ZmlsZXN5c3RlbSgpLCBET01GaWxlUGF0aDo6YXBwZW5kKG1fYmFz
ZVBhdGgsIG5hbWUpKSk7Ci19Ci0KLXZvaWQgRW50cmllc0NhbGxiYWNrczo6ZGlkUmVhZERpcmVj
dG9yeUVudHJpZXMoYm9vbCBoYXNNb3JlKQotewotICAgIG1fZGlyZWN0b3J5UmVhZGVyLT5zZXRI
YXNNb3JlRW50cmllcyhoYXNNb3JlKTsKLSAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spCi0gICAg
ICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2VudHJpZXMuZ2V0KCkpOwotfQot
Ci0vLyBGaWxlU3lzdGVtQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVBhc3NPd25QdHI8RmlsZVN5c3RlbUNhbGxiYWNr
cz4gRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbGVTeXN0ZW1DYWxsYmFja3Moc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7Ci19Ci0KLUZpbGVT
eXN0ZW1DYWxsYmFja3M6OkZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlU3lzdGVt
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogRmlsZVN5
c3RlbUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykKLSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNr
KHN1Y2Nlc3NDYWxsYmFjaykKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0
KQotewotfQotCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5
c3RlbSkKLXsKLSAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsKLSAgICAgICAgQVNTRVJUKGFz
eW5jRmlsZVN5c3RlbSk7Ci0gICAgICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVt
ID0gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwg
bmFtZSwgYXN5bmNGaWxlU3lzdGVtKTsKLSAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRs
ZUV2ZW50KGZpbGVTeXN0ZW0uZ2V0KCkpOwotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY2xlYXIoKTsKLSAgICB9Ci0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLX0KLQot
Ly8gUmVzb2x2ZVVSSUNhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBFcnJvckNhbGxi
YWNrV3JhcHBlciA6IHB1YmxpYyBFcnJvckNhbGxiYWNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrV3JhcHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVycm9yQ2FsbGJh
Y2tXcmFwcGVyKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgcm9vdCwgZmlsZVBhdGgp
KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRmlsZUVycm9yKiBlcnJv
cikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChlcnJvcik7Ci0gICAgICAgIGlmIChlcnJvci0+Y29k
ZSgpID09IEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIpCi0gICAgICAgICAgICBtX3Jvb3Qt
PmdldEZpbGUobV9maWxlUGF0aCwgMCwgbV9zdWNjZXNzQ2FsbGJhY2ssIG1fZXJyb3JDYWxsYmFj
ayk7Ci0gICAgICAgIGVsc2UgaWYgKG1fZXJyb3JDYWxsYmFjaykKLSAgICAgICAgICAgIG1fZXJy
b3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgRXJyb3JDYWxsYmFja1dyYXBwZXIoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCwgY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKLSAgICAgICAgOiBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2sp
Ci0gICAgICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCi0gICAgICAgICwgbV9y
b290KHJvb3QpCi0gICAgICAgICwgbV9maWxlUGF0aChmaWxlUGF0aCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3Jvb3QpOwotICAgIH0KLQotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBtX3N1
Y2Nlc3NDYWxsYmFjazsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNr
OwotICAgIFJlZlB0cjxEaXJlY3RvcnlFbnRyeT4gbV9yb290OwotICAgIFN0cmluZyBtX2ZpbGVQ
YXRoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotUGFzc093blB0cjxSZXNvbHZlVVJJQ2FsbGJh
Y2tzPiBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJlc29sdmVVUklD
YWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBmaWxlUGF0aCkpOwotfQotCi1SZXNvbHZlVVJJQ2FsbGJhY2tzOjpSZXNvbHZlVVJJ
Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCi0gICAgOiBGaWxlU3lzdGVtQ2Fs
bGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vz
c0NhbGxiYWNrKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX2ZpbGVQYXRoKGZpbGVQYXRoKQotewotfQotCi12b2lkIFJlc29sdmVVUklDYWxsYmFja3M6
OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKLXsKLSAgICBBU1NFUlQoYXN5bmNGaWxlU3lzdGVt
KTsKLSAgICBSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QgPSBET01GaWxlU3lzdGVtOjpjcmVh
dGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0p
LT5yb290KCk7Ci0gICAgcm9vdC0+Z2V0RGlyZWN0b3J5KG1fZmlsZVBhdGgsIDAsIG1fc3VjY2Vz
c0NhbGxiYWNrLCBFcnJvckNhbGxiYWNrV3JhcHBlcjo6Y3JlYXRlKG1fc3VjY2Vzc0NhbGxiYWNr
LCBtX2Vycm9yQ2FsbGJhY2ssIHJvb3QsIG1fZmlsZVBhdGgpKTsKLX0KLQotLy8gTWV0YWRhdGFD
YWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1QYXNzT3duUHRyPE1ldGFkYXRhQ2FsbGJhY2tzPiBNZXRhZGF0YUNhbGxi
YWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBNZXRhZGF0YUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spKTsKLX0KLQotTWV0YWRhdGFDYWxsYmFja3M6Ok1ldGFkYXRhQ2FsbGJhY2tzKFBhc3NS
ZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShl
cnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQot
ewotfQotCi12b2lkIE1ldGFkYXRhQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmls
ZU1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spCi0gICAg
ICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChNZXRhZGF0YTo6Y3JlYXRlKG1ldGFk
YXRhKS5nZXQoKSk7Ci0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLX0KLQotLy8gRmls
ZVdyaXRlckJhc2VDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1QYXNzT3duUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJh
Y2tzPiBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RmlsZVdyaXRl
ckJhc2U+IGZpbGVXcml0ZXIsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcyhmaWxlV3Jp
dGVyLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLX0KLQotRmlsZVdyaXRlckJh
c2VDYWxsYmFja3M6OkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVdyaXRl
ckJhc2U+IGZpbGVXcml0ZXIsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0g
ICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9maWxl
V3JpdGVyKGZpbGVXcml0ZXIpCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJh
Y2spCi17Ci19Ci0KLXZvaWQgRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVX
cml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+IGFzeW5jRmlsZVdyaXRlciwgbG9uZyBs
b25nIGxlbmd0aCkKLXsKLSAgICBtX2ZpbGVXcml0ZXItPmluaXRpYWxpemUoYXN5bmNGaWxlV3Jp
dGVyLCBsZW5ndGgpOwotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgbV9zdWNj
ZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZmlsZVdyaXRlci5yZWxlYXNlKCkuZ2V0KCkpOwot
ICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7Ci19Ci0KLS8vIFZvaWRDYWxsYmFja3MgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotUGFzc093blB0cjxWb2lkQ2FsbGJhY2tzPiBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVm9pZENh
bGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLX0KLQotVm9pZENhbGxi
YWNrczo6Vm9pZENhbGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0gICAgOiBGaWxl
U3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJh
Y2soc3VjY2Vzc0NhbGxiYWNrKQotewotfQotCi12b2lkIFZvaWRDYWxsYmFja3M6OmRpZFN1Y2Nl
ZWQoKQotewotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgbV9zdWNjZXNzQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KCk7Ci0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCShyZXZpc2lv
biAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmlsZVN5c3RlbUNhbGxi
YWNrc19oCi0jZGVmaW5lIEZpbGVTeXN0ZW1DYWxsYmFja3NfaAotCi0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBc3luY0Zp
bGVXcml0ZXI7Ci1jbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKLWNsYXNzIERpcmVjdG9yeVJlYWRl
ckJhc2U7Ci1jbGFzcyBFbnRyaWVzQ2FsbGJhY2s7Ci1jbGFzcyBFbnRyeUFycmF5OwotY2xhc3Mg
RW50cnlDYWxsYmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7Ci1zdHJ1Y3QgRmlsZU1ldGFkYXRh
OwotY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwotY2xhc3MgRmlsZVdyaXRlckJhc2U7Ci1jbGFz
cyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrOwotY2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKLWNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLWNsYXNzIEZp
bGVTeXN0ZW1DYWxsYmFja3NCYXNlIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoKTsKLQotICAg
IC8vIEZvciBFcnJvckNhbGxiYWNrLgotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBjb2Rl
KTsKLQotICAgIC8vIE90aGVyIGNhbGxiYWNrIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkIGJ5IGVh
Y2ggc3ViY2xhc3MuCi0KLXByb3RlY3RlZDoKLSAgICBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwotICAgIFJlZlB0cjxFcnJv
ckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7Ci19OwotCi0vLyBTdWJjbGFzc2VzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotY2xhc3MgRW50cnlDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2Ug
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjcmVhdGUo
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBi
b29sIGlzRGlyZWN0b3J5KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwotCi1wcml2
YXRlOgotICAgIEVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25z
dCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7Ci0gICAgUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAgIFJlZlB0cjxET01GaWxlU3lzdGVt
QmFzZT4gbV9maWxlU3lzdGVtOwotICAgIFN0cmluZyBtX2V4cGVjdGVkUGF0aDsKLSAgICBib29s
IG1faXNEaXJlY3Rvcnk7Ci19OwotCi1jbGFzcyBFbnRyaWVzQ2FsbGJhY2tzIDogcHVibGljIEZp
bGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxF
bnRyaWVzQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+LCBj
b25zdCBTdHJpbmcmIGJhc2VQYXRoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9y
eUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSk7Ci0KLXByaXZhdGU6
Ci0gICAgRW50cmllc0NhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4sIGNv
bnN0IFN0cmluZyYgYmFzZVBhdGgpOwotICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IG1fc3Vj
Y2Vzc0NhbGxiYWNrOwotICAgIFJlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiBtX2RpcmVjdG9y
eVJlYWRlcjsKLSAgICBTdHJpbmcgbV9iYXNlUGF0aDsKLSAgICBSZWZQdHI8RW50cnlBcnJheT4g
bV9lbnRyaWVzOwotfTsKLQotY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrcyA6IHB1YmxpYyBGaWxl
U3lzdGVtQ2FsbGJhY2tzQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Rmls
ZVN5c3RlbUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtPik7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZVN5c3RlbUNhbGxi
YWNrcyhQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBSZWZQdHI8RmlsZVN5c3RlbUNh
bGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotfTsKLQotY2xhc3MgUmVzb2x2ZVVSSUNh
bGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
T3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pOwotCi1wcml2YXRlOgotICAgIFJlc29sdmVVUklDYWxsYmFja3MoUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotICAgIFJlZlB0cjxFbnRyeUNhbGxi
YWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotfTsK
LQotY2xhc3MgTWV0YWRhdGFDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1ldGFkYXRhQ2FsbGJhY2tzPiBj
cmVhdGUoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRh
dGEmKTsKLQotcHJpdmF0ZToKLSAgICBNZXRhZGF0YUNhbGxiYWNrcyhQYXNzUmVmUHRyPE1ldGFk
YXRhQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBSZWZQdHI8TWV0
YWRhdGFDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci19OwotCi1jbGFzcyBGaWxlV3JpdGVy
QmFzZUNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFja3M+IGNyZWF0ZShQ
YXNzUmVmUHRyPEZpbGVXcml0ZXJCYXNlPiwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZUNhbGxi
YWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcgbGVu
Z3RoKTsKLQotcHJpdmF0ZToKLSAgICBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcyhQYXNzUmVmUHRy
PEZpbGVXcml0ZXJCYXNlPiwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgUmVmUHRyPEZpbGVXcml0ZXJCYXNlPiBtX2Zp
bGVXcml0ZXI7Ci0gICAgUmVmUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2s+IG1fc3VjY2Vzc0Nh
bGxiYWNrOwotfTsKLQotY2xhc3MgVm9pZENhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2Fs
bGJhY2tzQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Vm9pZENhbGxiYWNr
cz4gY3JlYXRlKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKTsKLQotcHJpdmF0ZToKLSAgICBW
b2lkQ2FsbGJhY2tzKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPik7Ci0gICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci19
OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
ZW5kaWYgLy8gRmlsZVN5c3RlbUNhbGxiYWNrc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVXcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVdyaXRlci5jcHAJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVdyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjkzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRmls
ZVdyaXRlci5oIgotCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiQmxv
Yi5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIK
LSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBpbnQga01heFJlY3Vyc2lvbkRl
cHRoID0gMzsKLQotUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBGaWxlV3JpdGVyOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBSZWZQdHI8RmlsZVdyaXRlcj4g
ZmlsZVdyaXRlcihhZG9wdFJlZihuZXcgRmlsZVdyaXRlcihjb250ZXh0KSkpOwotICAgIGZpbGVX
cml0ZXItPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBmaWxlV3JpdGVyLnJlbGVhc2Uo
KTsKLX0KLQotRmlsZVdyaXRlcjo6RmlsZVdyaXRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCi0gICAgLCBtX3Jl
YWR5U3RhdGUoSU5JVCkKLSAgICAsIG1faXNPcGVyYXRpb25JblByb2dyZXNzKGZhbHNlKQotICAg
ICwgbV9xdWV1ZWRPcGVyYXRpb24oT3BlcmF0aW9uTm9uZSkKLSAgICAsIG1fYnl0ZXNXcml0dGVu
KDApCi0gICAgLCBtX2J5dGVzVG9Xcml0ZSgwKQotICAgICwgbV90cnVuY2F0ZUxlbmd0aCgtMSkK
LSAgICAsIG1fbnVtQWJvcnRzKDApCi0gICAgLCBtX3JlY3Vyc2lvbkRlcHRoKDApCi17Ci19Ci0K
LUZpbGVXcml0ZXI6On5GaWxlV3JpdGVyKCkKLXsKLSAgICBBU1NFUlQoIW1fcmVjdXJzaW9uRGVw
dGgpOwotICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gV1JJVElORykKLSAgICAgICAgc3RvcCgpOwot
fQotCi1jb25zdCBBdG9taWNTdHJpbmcmIEZpbGVXcml0ZXI6OmludGVyZmFjZU5hbWUoKSBjb25z
dAotewotICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRmlsZVdyaXRlcjsKLX0K
LQotYm9vbCBGaWxlV3JpdGVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3JlYWR5U3RhdGUgPT0gV1JJVElORyB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpOwotfQotCi1ib29sIEZpbGVXcml0ZXI6OmNhblN1c3BlbmQoKSBjb25zdAot
ewotICAgIC8vIEZJWE1FOiBJdCBpcyBub3QgY3VycmVudGx5IHBvc3NpYmxlIHRvIHN1c3BlbmQg
YSBGaWxlV3JpdGVyLCBzbyBwYWdlcyB3aXRoIEZpbGVXcml0ZXIgY2FuIG5vdCBnbyBpbnRvIHBh
Z2UgY2FjaGUuCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OnN0b3Ao
KQotewotICAgIC8vIE1ha2Ugc3VyZSB3ZSd2ZSBhY3R1YWxseSBnb3Qgc29tZXRoaW5nIHRvIHN0
b3AsIGFuZCBoYXZlbid0IGFscmVhZHkgY2FsbGVkIGFib3J0KCkuCi0gICAgaWYgKHdyaXRlcigp
ICYmIG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HICYmIG1faXNPcGVyYXRpb25JblByb2dyZXNzICYm
IG1fcXVldWVkT3BlcmF0aW9uID09IE9wZXJhdGlvbk5vbmUpCi0gICAgICAgIHdyaXRlcigpLT5h
Ym9ydCgpOwotICAgIG1fYmxvYkJlaW5nV3JpdHRlbi5jbGVhcigpOwotICAgIG1fcmVhZHlTdGF0
ZSA9IERPTkU7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6d3JpdGUoQmxvYiogZGF0YSwgRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBBU1NFUlQoZGF0YSk7
Ci0gICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOwotICAgIGlmIChtX3JlYWR5U3Rh
dGUgPT0gV1JJVElORykgewotICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OklOVkFMSURfU1RB
VEVfRVJSLCBlYyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFkYXRhKSB7Ci0g
ICAgICAgIHNldEVycm9yKEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIsIGVjKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9yZWN1cnNpb25EZXB0aCA+IGtNYXhSZWN1cnNp
b25EZXB0aCkgewotICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUiwgZWMp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYmxvYkJlaW5nV3JpdHRlbiA9IGRhdGE7
Ci0gICAgbV9yZWFkeVN0YXRlID0gV1JJVElORzsKLSAgICBtX2J5dGVzV3JpdHRlbiA9IDA7Ci0g
ICAgbV9ieXRlc1RvV3JpdGUgPSBkYXRhLT5zaXplKCk7Ci0gICAgQVNTRVJUKG1fcXVldWVkT3Bl
cmF0aW9uID09IE9wZXJhdGlvbk5vbmUpOwotICAgIGlmIChtX2lzT3BlcmF0aW9uSW5Qcm9ncmVz
cykgLy8gV2UgbXVzdCBiZSB3YWl0aW5nIGZvciBhbiBhYm9ydCB0byBjb21wbGV0ZSwgc2luY2Ug
bV9yZWFkeVN0YXRlIHdhc24ndCBXUklUSU5HLgotICAgICAgICBtX3F1ZXVlZE9wZXJhdGlvbiA9
IE9wZXJhdGlvbldyaXRlOwotICAgIGVsc2UKLSAgICAgICAgd3JpdGVyKCktPndyaXRlKHBvc2l0
aW9uKCksIG1fYmxvYkJlaW5nV3JpdHRlbi5nZXQoKSk7Ci0gICAgbV9pc09wZXJhdGlvbkluUHJv
Z3Jlc3MgPSB0cnVlOwotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkud3JpdGVzdGFydEV2ZW50
KTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpzZWVrKGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBpZiAobV9yZWFkeVN0
YXRlID09IFdSSVRJTkcpIHsKLSAgICAgICAgc2V0RXJyb3IoRmlsZUVycm9yOjpJTlZBTElEX1NU
QVRFX0VSUiwgZWMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKG1fdHJ1
bmNhdGVMZW5ndGggPT0gLTEpOwotICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9PSBPcGVy
YXRpb25Ob25lKTsKLSAgICBzZWVrSW50ZXJuYWwocG9zaXRpb24pOwotfQotCi12b2lkIEZpbGVX
cml0ZXI6OnRydW5jYXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9PSAt
MSk7Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HIHx8IHBvc2l0aW9uIDwgMCkgewot
ICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OklOVkFMSURfU1RBVEVfRVJSLCBlYyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1fcmVjdXJzaW9uRGVwdGggPiBrTWF4UmVjdXJz
aW9uRGVwdGgpIHsKLSAgICAgICAgc2V0RXJyb3IoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIsIGVj
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3JlYWR5U3RhdGUgPSBXUklUSU5HOwot
ICAgIG1fYnl0ZXNXcml0dGVuID0gMDsKLSAgICBtX2J5dGVzVG9Xcml0ZSA9IDA7Ci0gICAgbV90
cnVuY2F0ZUxlbmd0aCA9IHBvc2l0aW9uOwotICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9
PSBPcGVyYXRpb25Ob25lKTsKLSAgICBpZiAobV9pc09wZXJhdGlvbkluUHJvZ3Jlc3MpIC8vIFdl
IG11c3QgYmUgd2FpdGluZyBmb3IgYW4gYWJvcnQgdG8gY29tcGxldGUuCi0gICAgICAgIG1fcXVl
dWVkT3BlcmF0aW9uID0gT3BlcmF0aW9uVHJ1bmNhdGU7Ci0gICAgZWxzZQotICAgICAgICB3cml0
ZXIoKS0+dHJ1bmNhdGUobV90cnVuY2F0ZUxlbmd0aCk7Ci0gICAgbV9pc09wZXJhdGlvbkluUHJv
Z3Jlc3MgPSB0cnVlOwotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkud3JpdGVzdGFydEV2ZW50
KTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjphYm9ydChFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICBBU1NFUlQod3JpdGVyKCkpOwotICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gV1JJVElORykgewot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICsrbV9udW1BYm9ydHM7Ci0KLSAgICBpZiAobV9p
c09wZXJhdGlvbkluUHJvZ3Jlc3MpCi0gICAgICAgIHdyaXRlcigpLT5hYm9ydCgpOwotICAgIG1f
cXVldWVkT3BlcmF0aW9uID0gT3BlcmF0aW9uTm9uZTsKLSAgICBtX2Jsb2JCZWluZ1dyaXR0ZW4u
Y2xlYXIoKTsKLSAgICBtX3RydW5jYXRlTGVuZ3RoID0gLTE7Ci0gICAgc2lnbmFsQ29tcGxldGlv
bihGaWxlRXJyb3I6OkFCT1JUX0VSUik7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6ZGlkV3JpdGUo
bG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKQotewotICAgIEFTU0VSVChtX3JlYWR5U3Rh
dGUgPT0gV1JJVElORyk7Ci0gICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOwotICAg
IEFTU0VSVChtX2lzT3BlcmF0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgQVNTRVJUKGJ5dGVzICsgbV9i
eXRlc1dyaXR0ZW4gPiAwKTsKLSAgICBBU1NFUlQoYnl0ZXMgKyBtX2J5dGVzV3JpdHRlbiA8PSBt
X2J5dGVzVG9Xcml0ZSk7Ci0gICAgbV9ieXRlc1dyaXR0ZW4gKz0gYnl0ZXM7Ci0gICAgQVNTRVJU
KChtX2J5dGVzV3JpdHRlbiA9PSBtX2J5dGVzVG9Xcml0ZSkgfHwgIWNvbXBsZXRlKTsKLSAgICBz
ZXRQb3NpdGlvbihwb3NpdGlvbigpICsgYnl0ZXMpOwotICAgIGlmIChwb3NpdGlvbigpID4gbGVu
Z3RoKCkpCi0gICAgICAgIHNldExlbmd0aChwb3NpdGlvbigpKTsKLSAgICAvLyBUT0RPOiBUaHJv
dHRsZSB0byBubyBtb3JlIGZyZXF1ZW50bHkgdGhhbiBldmVyeSA1MG1zLgotICAgIGludCBudW1B
Ym9ydHMgPSBtX251bUFib3J0czsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnByb2dyZXNz
RXZlbnQpOwotICAgIC8vIFdlIGNvdWxkIGdldCBhbiBhYm9ydCBpbiB0aGUgaGFuZGxlciBmb3Ig
dGhpcyBldmVudC4gSWYgd2UgZG8sIGl0J3MKLSAgICAvLyBhbHJlYWR5IGhhbmRsZWQgdGhlIGNs
ZWFudXAgYW5kIHNpZ25hbENvbXBsZXRpb24gY2FsbC4KLSAgICBpZiAoY29tcGxldGUgJiYgbnVt
QWJvcnRzID09IG1fbnVtQWJvcnRzKSB7Ci0gICAgICAgIG1fYmxvYkJlaW5nV3JpdHRlbi5jbGVh
cigpOwotICAgICAgICBtX2lzT3BlcmF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgICAgICBz
aWduYWxDb21wbGV0aW9uKEZpbGVFcnJvcjo6T0spOwotICAgIH0KLX0KLQotdm9pZCBGaWxlV3Jp
dGVyOjpkaWRUcnVuY2F0ZSgpCi17Ci0gICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPj0gMCk7
Ci0gICAgc2V0TGVuZ3RoKG1fdHJ1bmNhdGVMZW5ndGgpOwotICAgIGlmIChwb3NpdGlvbigpID4g
bGVuZ3RoKCkpCi0gICAgICAgIHNldFBvc2l0aW9uKGxlbmd0aCgpKTsKLSAgICBtX2lzT3BlcmF0
aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgIHNpZ25hbENvbXBsZXRpb24oRmlsZUVycm9yOjpP
Syk7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6ZGlkRmFpbChGaWxlRXJyb3I6OkVycm9yQ29kZSBj
b2RlKQotewotICAgIEFTU0VSVChtX2lzT3BlcmF0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgbV9pc09w
ZXJhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICBBU1NFUlQoY29kZSAhPSBGaWxlRXJyb3I6
Ok9LKTsKLSAgICBpZiAoY29kZSA9PSBGaWxlRXJyb3I6OkFCT1JUX0VSUikgewotICAgICAgICBP
cGVyYXRpb24gb3BlcmF0aW9uID0gbV9xdWV1ZWRPcGVyYXRpb247Ci0gICAgICAgIG1fcXVldWVk
T3BlcmF0aW9uID0gT3BlcmF0aW9uTm9uZTsKLSAgICAgICAgZG9PcGVyYXRpb24ob3BlcmF0aW9u
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobV9xdWV1ZWRPcGVyYXRpb24gPT0gT3Bl
cmF0aW9uTm9uZSk7Ci0gICAgICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gV1JJVElORyk7Ci0g
ICAgICAgIG1fYmxvYkJlaW5nV3JpdHRlbi5jbGVhcigpOwotICAgICAgICBzaWduYWxDb21wbGV0
aW9uKGNvZGUpOwotICAgIH0KLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpkb09wZXJhdGlvbihPcGVy
YXRpb24gb3BlcmF0aW9uKQotewotICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9PSBPcGVy
YXRpb25Ob25lKTsKLSAgICBBU1NFUlQoIW1faXNPcGVyYXRpb25JblByb2dyZXNzKTsKLSAgICBB
U1NFUlQob3BlcmF0aW9uID09IE9wZXJhdGlvbk5vbmUgfHwgb3BlcmF0aW9uID09IE9wZXJhdGlv
bldyaXRlIHx8IG9wZXJhdGlvbiA9PSBPcGVyYXRpb25UcnVuY2F0ZSk7Ci0gICAgc3dpdGNoIChv
cGVyYXRpb24pIHsKLSAgICBjYXNlIE9wZXJhdGlvbldyaXRlOgotICAgICAgICBBU1NFUlQobV90
cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0gICAgICAgIEFTU0VSVChtX2Jsb2JCZWluZ1dyaXR0ZW4u
Z2V0KCkpOwotICAgICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFdSSVRJTkcpOwotICAgICAg
ICB3cml0ZXIoKS0+d3JpdGUocG9zaXRpb24oKSwgbV9ibG9iQmVpbmdXcml0dGVuLmdldCgpKTsK
LSAgICAgICAgbV9pc09wZXJhdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIE9wZXJhdGlvblRydW5jYXRlOgotICAgICAgICBBU1NFUlQobV90cnVuY2F0ZUxl
bmd0aCA+PSAwKTsKLSAgICAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HKTsKLSAg
ICAgICAgd3JpdGVyKCktPnRydW5jYXRlKG1fdHJ1bmNhdGVMZW5ndGgpOwotICAgICAgICBtX2lz
T3BlcmF0aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3Bl
cmF0aW9uTm9uZToKLSAgICAgICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOwotICAg
ICAgICBBU1NFUlQoIW1fYmxvYkJlaW5nV3JpdHRlbi5nZXQoKSk7Ci0gICAgICAgIEFTU0VSVCht
X3JlYWR5U3RhdGUgPT0gRE9ORSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBG
aWxlV3JpdGVyOjpzaWduYWxDb21wbGV0aW9uKEZpbGVFcnJvcjo6RXJyb3JDb2RlIGNvZGUpCi17
Ci0gICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKLSAgICBtX3RydW5jYXRlTGVuZ3RoID0gLTE7Ci0g
ICAgaWYgKEZpbGVFcnJvcjo6T0sgIT0gY29kZSkgewotICAgICAgICBtX2Vycm9yID0gRmlsZUVy
cm9yOjpjcmVhdGUoY29kZSk7Ci0gICAgICAgIGlmIChGaWxlRXJyb3I6OkFCT1JUX0VSUiA9PSBj
b2RlKQotICAgICAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS53cml0ZUV2ZW50
KTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLndyaXRlZW5kRXZlbnQpOwotfQotCi12b2lk
IEZpbGVXcml0ZXI6OmZpcmVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCi17Ci0gICAg
KyttX3JlY3Vyc2lvbkRlcHRoOwotICAgIGRpc3BhdGNoRXZlbnQoUHJvZ3Jlc3NFdmVudDo6Y3Jl
YXRlKHR5cGUsIHRydWUsIG1fYnl0ZXNXcml0dGVuLCBtX2J5dGVzVG9Xcml0ZSkpOwotICAgIC0t
bV9yZWN1cnNpb25EZXB0aDsKLSAgICBBU1NFUlQobV9yZWN1cnNpb25EZXB0aCA+PSAwKTsKLX0K
LQotdm9pZCBGaWxlV3JpdGVyOjpzZXRFcnJvcihGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNv
ZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JD
b2RlVG9FeGNlcHRpb25Db2RlKGVycm9yQ29kZSk7Ci0gICAgbV9lcnJvciA9IEZpbGVFcnJvcjo6
Y3JlYXRlKGVycm9yQ29kZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVdyaXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRl
ci5oCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVXcml0ZXJf
aAotI2RlZmluZSBGaWxlV3JpdGVyX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVu
dC5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlckJhc2Uu
aCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgQmxvYjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLWNsYXNz
IEZpbGVXcml0ZXIgOiBwdWJsaWMgRmlsZVdyaXRlckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVdyaXRlcj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKLQotICAgIGVudW0gUmVhZHlTdGF0ZSB7Ci0gICAgICAgIElOSVQg
PSAwLAotICAgICAgICBXUklUSU5HID0gMSwKLSAgICAgICAgRE9ORSA9IDIKLSAgICB9OwotCi0g
ICAgdm9pZCB3cml0ZShCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2Vlayhsb25n
IGxvbmcgcG9zaXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHRydW5jYXRlKGxvbmcg
bG9uZyBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGFib3J0KEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5
U3RhdGU7IH0KLSAgICBGaWxlRXJyb3IqIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvci5n
ZXQoKTsgfQotCi0gICAgLy8gQXN5bmNGaWxlV3JpdGVyQ2xpZW50Ci0gICAgdm9pZCBkaWRXcml0
ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpOwotICAgIHZvaWQgZGlkVHJ1bmNhdGUo
KTsKLSAgICB2b2lkIGRpZEZhaWwoRmlsZUVycm9yOjpFcnJvckNvZGUpOwotCi0gICAgLy8gQWN0
aXZlRE9NT2JqZWN0Ci0gICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHN0b3AoKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVE
T01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQotCi0gICAgdXNpbmcgUmVmQ291
bnRlZDxGaWxlV3JpdGVyQmFzZT46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPEZpbGVXcml0
ZXJCYXNlPjo6ZGVyZWY7Ci0KLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdy
aXRlc3RhcnQpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocHJvZ3Jlc3Mp
OwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod3JpdGUpOwotICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwotICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoZXJyb3IpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIod3JpdGVlbmQpOwotCi1wcml2YXRlOgotICAgIGVudW0gT3BlcmF0aW9uIHsKLSAgICAgICAg
T3BlcmF0aW9uTm9uZSwKLSAgICAgICAgT3BlcmF0aW9uV3JpdGUsCi0gICAgICAgIE9wZXJhdGlv
blRydW5jYXRlCi0gICAgfTsKLQotICAgIEZpbGVXcml0ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOwotCi0gICAgdmlydHVhbCB+RmlsZVdyaXRlcigpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQK
LSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRh
OyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
IHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQotCi0gICAgdm9pZCBkb09wZXJhdGlvbihP
cGVyYXRpb24pOwotCi0gICAgdm9pZCBzaWduYWxDb21wbGV0aW9uKEZpbGVFcnJvcjo6RXJyb3JD
b2RlKTsKLQotICAgIHZvaWQgZmlyZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSk7Ci0K
LSAgICB2b2lkIHNldEVycm9yKEZpbGVFcnJvcjo6RXJyb3JDb2RlLCBFeGNlcHRpb25Db2RlJik7
Ci0KLSAgICBSZWZQdHI8RmlsZUVycm9yPiBtX2Vycm9yOwotICAgIEV2ZW50VGFyZ2V0RGF0YSBt
X2V2ZW50VGFyZ2V0RGF0YTsKLSAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKLSAgICBib29s
IG1faXNPcGVyYXRpb25JblByb2dyZXNzOwotICAgIE9wZXJhdGlvbiBtX3F1ZXVlZE9wZXJhdGlv
bjsKLSAgICBsb25nIGxvbmcgbV9ieXRlc1dyaXR0ZW47Ci0gICAgbG9uZyBsb25nIG1fYnl0ZXNU
b1dyaXRlOwotICAgIGxvbmcgbG9uZyBtX3RydW5jYXRlTGVuZ3RoOwotICAgIGxvbmcgbG9uZyBt
X251bUFib3J0czsKLSAgICBsb25nIGxvbmcgbV9yZWN1cnNpb25EZXB0aDsKLSAgICBSZWZQdHI8
QmxvYj4gbV9ibG9iQmVpbmdXcml0dGVuOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZVdyaXRlcl9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5pZGwJKHJldmlzaW9uIDExMTAw
MykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIGh0bWwgewotICAgIGludGVyZmFjZSBbCi0gICAgICAg
IENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgICAgICBBY3RpdmVET01PYmplY3QsCi0gICAg
ICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCi0gICAgICAgIEV2ZW50VGFyZ2V0
LAotICAgICAgICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBGaWxlV3JpdGVyIHsKLSAgICAgICAg
Ly8gcmVhZHkgc3RhdGVzCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElOSVQgPSAwOwot
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBXUklUSU5HID0gMTsKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgRE9ORSA9IDI7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBzaG9ydCByZWFkeVN0YXRlOwotCi0gICAgICAgIC8vIGFzeW5jIHdyaXRlL21vZGlmeSBt
ZXRob2RzCi0gICAgICAgIHZvaWQgd3JpdGUoaW4gQmxvYiBkYXRhKSByYWlzZXMgKEZpbGVFeGNl
cHRpb24pOwotICAgICAgICB2b2lkIHNlZWsoaW4gbG9uZyBsb25nIHBvc2l0aW9uKSByYWlzZXMg
KEZpbGVFeGNlcHRpb24pOwotICAgICAgICB2b2lkIHRydW5jYXRlKGluIGxvbmcgbG9uZyBzaXpl
KSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwotCi0gICAgICAgIHZvaWQgYWJvcnQoKSByYWlzZXMg
KEZpbGVFeGNlcHRpb24pOwotCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlRXJyb3Ig
ZXJyb3I7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmcgcG9zaXRpb247Ci0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmcgbGVuZ3RoOwotCi0gICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud3JpdGVzdGFydDsKLSAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25wcm9ncmVzczsKLSAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253cml0ZTsKLSAgICAgICAgICAgICAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb253cml0ZWVuZDsKLSAgICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlV3JpdGVyQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlV3JpdGVyQmFzZS5jcHAJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVdyaXRlckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
aW5jbHVkZSAiRmlsZVdyaXRlckJhc2UuaCIKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5o
IgotI2luY2x1ZGUgIkJsb2IuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVk
ZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIlBy
b2dyZXNzRXZlbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GaWxlV3JpdGVyQmFzZTo6
fkZpbGVXcml0ZXJCYXNlKCkKLXsKLX0KLQotdm9pZCBGaWxlV3JpdGVyQmFzZTo6aW5pdGlhbGl6
ZShQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4gd3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKQot
ewotICAgIEFTU0VSVCghbV93cml0ZXIpOwotICAgIEFTU0VSVChsZW5ndGggPj0gMCk7Ci0gICAg
bV93cml0ZXIgPSB3cml0ZXI7Ci0gICAgbV9sZW5ndGggPSBsZW5ndGg7Ci19Ci0KLUZpbGVXcml0
ZXJCYXNlOjpGaWxlV3JpdGVyQmFzZSgpCi0gICAgOiBtX3Bvc2l0aW9uKDApCi17Ci19Ci0KLXZv
aWQgRmlsZVdyaXRlckJhc2U6OnNlZWtJbnRlcm5hbChsb25nIGxvbmcgcG9zaXRpb24pCi17Ci0g
ICAgaWYgKHBvc2l0aW9uID4gbV9sZW5ndGgpCi0gICAgICAgIHBvc2l0aW9uID0gbV9sZW5ndGg7
Ci0gICAgZWxzZSBpZiAocG9zaXRpb24gPCAwKQotICAgICAgICBwb3NpdGlvbiA9IG1fbGVuZ3Ro
ICsgcG9zaXRpb247Ci0gICAgaWYgKHBvc2l0aW9uIDwgMCkKLSAgICAgICAgcG9zaXRpb24gPSAw
OwotICAgIG1fcG9zaXRpb24gPSBwb3NpdGlvbjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlV3JpdGVyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVdyaXRlckJhc2UuaAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlV3JpdGVyQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBGaWxlV3JpdGVyQmFzZV9oCi0jZGVmaW5lIEZpbGVXcml0ZXJCYXNlX2gKLQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXN5bmNGaWxlV3JpdGVyOwotCi10eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBGaWxlV3JpdGVyQmFzZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEZpbGVXcml0ZXJCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZVdyaXRlckJh
c2UoKTsKLSAgICB2b2lkIGluaXRpYWxpemUoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+LCBs
b25nIGxvbmcgbGVuZ3RoKTsKLQotICAgIGxvbmcgbG9uZyBwb3NpdGlvbigpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9wb3NpdGlvbjsKLSAgICB9Ci0gICAgbG9uZyBsb25nIGxlbmd0
aCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sZW5ndGg7Ci0gICAgfQotCi1wcm90
ZWN0ZWQ6Ci0gICAgRmlsZVdyaXRlckJhc2UoKTsKLQotICAgIEFzeW5jRmlsZVdyaXRlciogd3Jp
dGVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3dyaXRlci5nZXQoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNldFBvc2l0aW9uKGxvbmcgbG9uZyBwb3NpdGlvbikKLSAgICB7Ci0gICAgICAgIG1f
cG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldExlbmd0aChsb25nIGxv
bmcgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgbV9sZW5ndGggPSBsZW5ndGg7Ci0gICAgfQotCi0g
ICAgdm9pZCBzZWVrSW50ZXJuYWwobG9uZyBsb25nIHBvc2l0aW9uKTsKLQotcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNlPjsKLQotICAgIE93
blB0cjxBc3luY0ZpbGVXcml0ZXI+IG1fd3JpdGVyOwotICAgIGxvbmcgbG9uZyBtX3Bvc2l0aW9u
OwotICAgIGxvbmcgbG9uZyBtX2xlbmd0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEZpbGVXcml0ZXJC
YXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckJhc2VDYWxsYmFj
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckJhc2VD
YWxsYmFjay5oCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVXcml0ZXJCYXNlQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrX2gKLSNkZWZpbmUgRmlsZVdyaXRlckJhc2VDYWxs
YmFja19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZpbGVXcml0ZXJCYXNlOwot
Ci1jbGFzcyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVdy
aXRlckJhc2VDYWxsYmFjaz4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkZpbGVXcml0ZXJCYXNl
Q2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRmlsZVdyaXRlckJh
c2UqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVf
U1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZVdyaXRlckJhc2VDYWxsYmFja19oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckNhbGxiYWNrLmgJKHJldmlzaW9uIDExMTAw
MykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckNhbGxiYWNrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmlsZVdyaXRlckNhbGxiYWNrX2gKLSNk
ZWZpbmUgRmlsZVdyaXRlckNhbGxiYWNrX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgRmlsZVdyaXRlcjsKLQotY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNrIDogcHVibGljIFJlZkNv
dW50ZWQ8RmlsZVdyaXRlckNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZVdy
aXRlckNhbGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVXcml0
ZXIqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVf
U1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZVdyaXRlckNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5pZGwJKHJldmlzaW9uIDExMTAw
MykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlckNhbGxiYWNrLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIGZpbGVhcGkgewotICAgIGludGVyZmFj
ZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgICAgICBDYWxsYmFjawot
ICAgIF0gRmlsZVdyaXRlckNhbGxiYWNrIHsKLSAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChp
biBGaWxlV3JpdGVyIGZpbGVXcml0ZXIpOwotICAgIH07Ci19CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmNwcAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVdy
aXRlci5oIgotI2luY2x1ZGUgIkJsb2IuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBGaWxlV3JpdGVyU3luYzo6d3JpdGUoQmxvYiog
ZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBB
U1NFUlQobV9jb21wbGV0ZSk7Ci0gICAgZWMgPSAwOwotICAgIGlmICghZGF0YSkgewotICAgICAg
ICBlYyA9IEZpbGVFeGNlcHRpb246OlRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgcHJlcGFyZUZvcldyaXRlKCk7Ci0gICAgd3JpdGVyKCktPndyaXRlKHBv
c2l0aW9uKCksIGRhdGEpOwotICAgIHdyaXRlcigpLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0
ZSgpOwotICAgIEFTU0VSVChtX2NvbXBsZXRlKTsKLSAgICBlYyA9IEZpbGVFeGNlcHRpb246OkVy
cm9yQ29kZVRvRXhjZXB0aW9uQ29kZShtX2Vycm9yKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJl
dHVybjsKLSAgICBzZXRQb3NpdGlvbihwb3NpdGlvbigpICsgZGF0YS0+c2l6ZSgpKTsKLSAgICBp
ZiAocG9zaXRpb24oKSA+IGxlbmd0aCgpKQotICAgICAgICBzZXRMZW5ndGgocG9zaXRpb24oKSk7
Ci19Ci0KLXZvaWQgRmlsZVdyaXRlclN5bmM6OnNlZWsobG9uZyBsb25nIHBvc2l0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQod3JpdGVyKCkpOwotICAgIEFTU0VSVChtX2Nv
bXBsZXRlKTsKLSAgICBlYyA9IDA7Ci0gICAgc2Vla0ludGVybmFsKHBvc2l0aW9uKTsKLX0KLQot
dm9pZCBGaWxlV3JpdGVyU3luYzo6dHJ1bmNhdGUobG9uZyBsb25nIG9mZnNldCwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBBU1NFUlQobV9jb21wbGV0
ZSk7Ci0gICAgZWMgPSAwOwotICAgIGlmIChvZmZzZXQgPCAwKSB7Ci0gICAgICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6SU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgcHJlcGFyZUZvcldyaXRlKCk7Ci0gICAgd3JpdGVyKCktPnRydW5jYXRlKG9mZnNldCk7Ci0g
ICAgd3JpdGVyKCktPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCk7Ci0gICAgQVNTRVJUKG1f
Y29tcGxldGUpOwotICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9FeGNlcHRpb25D
b2RlKG1fZXJyb3IpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChvZmZz
ZXQgPCBwb3NpdGlvbigpKQotICAgICAgICBzZXRQb3NpdGlvbihvZmZzZXQpOwotICAgIHNldExl
bmd0aChvZmZzZXQpOwotfQotCi12b2lkIEZpbGVXcml0ZXJTeW5jOjpkaWRXcml0ZShsb25nIGxv
bmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpCi17Ci0gICAgQVNTRVJUKG1fZXJyb3IgPT0gRmlsZUVy
cm9yOjpPSyk7Ci0gICAgQVNTRVJUKCFtX2NvbXBsZXRlKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAg
bV9jb21wbGV0ZSA9IGNvbXBsZXRlOwotI2Vsc2UKLSAgICBBU1NFUlRfVU5VU0VEKGNvbXBsZXRl
LCBjb21wbGV0ZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBGaWxlV3JpdGVyU3luYzo6ZGlkVHJ1bmNh
dGUoKQotewotICAgIEFTU0VSVChtX2Vycm9yID09IEZpbGVFcnJvcjo6T0spOwotICAgIEFTU0VS
VCghbV9jb21wbGV0ZSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIG1fY29tcGxldGUgPSB0cnVlOwot
I2VuZGlmCi19Ci0KLXZvaWQgRmlsZVdyaXRlclN5bmM6OmRpZEZhaWwoRmlsZUVycm9yOjpFcnJv
ckNvZGUgZXJyb3IpCi17Ci0gICAgQVNTRVJUKG1fZXJyb3IgPT0gRmlsZUVycm9yOjpPSyk7Ci0g
ICAgbV9lcnJvciA9IGVycm9yOwotICAgIEFTU0VSVCghbV9jb21wbGV0ZSk7Ci0jaWZuZGVmIE5E
RUJVRwotICAgIG1fY29tcGxldGUgPSB0cnVlOwotI2VuZGlmCi19Ci0KLUZpbGVXcml0ZXJTeW5j
OjpGaWxlV3JpdGVyU3luYygpCi0gICAgOiBtX2Vycm9yKEZpbGVFcnJvcjo6T0spCi0jaWZuZGVm
IE5ERUJVRwotICAgICwgbV9jb21wbGV0ZSh0cnVlKQotI2VuZGlmCi17Ci19Ci0KLXZvaWQgRmls
ZVdyaXRlclN5bmM6OnByZXBhcmVGb3JXcml0ZSgpCi17Ci0gICAgQVNTRVJUKG1fY29tcGxldGUp
OwotICAgIG1fZXJyb3IgPSBGaWxlRXJyb3I6Ok9LOwotI2lmbmRlZiBOREVCVUcKLSAgICBtX2Nv
bXBsZXRlID0gZmFsc2U7Ci0jZW5kaWYKLX0KLQotRmlsZVdyaXRlclN5bmM6On5GaWxlV3JpdGVy
U3luYygpCi17Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVy
U3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlclN5
bmMuaAkocmV2aXNpb24gMTExMDAzKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3Jp
dGVyU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlV3Jp
dGVyU3luY19oCi0jZGVmaW5lIEZpbGVXcml0ZXJTeW5jX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVudC5oIgotI2luY2x1ZGUgIkZp
bGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBCbG9iOwotCi10eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBGaWxlV3JpdGVyU3luYyA6IHB1YmxpYyBG
aWxlV3JpdGVyQmFzZSwgcHVibGljIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVdyaXRlclN5bmM+IGNyZWF0ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVXcml0ZXJTeW5jKCkpOwotICAgIH0KLSAgICB2
aXJ0dWFsIH5GaWxlV3JpdGVyU3luYygpOwotCi0gICAgLy8gRmlsZVdyaXRlckJhc2UKLSAgICB2
b2lkIHdyaXRlKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZWVrKGxvbmcgbG9u
ZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25n
IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgLy8gQXN5bmNGaWxlV3JpdGVyQ2xpZW50
LCB2aWEgRmlsZVdyaXRlckJhc2UKLSAgICB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcywg
Ym9vbCBjb21wbGV0ZSk7Ci0gICAgdm9pZCBkaWRUcnVuY2F0ZSgpOwotICAgIHZvaWQgZGlkRmFp
bChGaWxlRXJyb3I6OkVycm9yQ29kZSk7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZVdyaXRlclN5bmMo
KTsKLSAgICB2b2lkIHByZXBhcmVGb3JXcml0ZSgpOwotCi0gICAgRmlsZUVycm9yOjpFcnJvckNv
ZGUgbV9lcnJvcjsKLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBtX2NvbXBsZXRlOwotI2VuZGlm
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlV3JpdGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVdyaXRlclN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVdyaXRlclN5bmMuaWRsCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLW1vZHVsZSBodG1sIHsKLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25h
bD1GSUxFX1NZU1RFTSwKLSAgICBdIEZpbGVXcml0ZXJTeW5jIHsKLSAgICAgICAgLy8gc3luY2hy
b25vdXMgd3JpdGUvbW9kaWZ5IG1ldGhvZHMKLSAgICAgICAgdm9pZCB3cml0ZShpbiBCbG9iIGRh
dGEpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgc2VlayhpbiBsb25nIGxv
bmcgcG9zaXRpb24pIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgdHJ1bmNh
dGUoaW4gbG9uZyBsb25nIHNpemUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0KLSAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBwb3NpdGlvbjsKLSAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgfTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDExMTAwMykKKysrIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5
c3RlbS5oIgotCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0jZXJyb3IgIkNocm9taXVtIHNob3Vs
ZCBub3QgY29tcGlsZSB0aGlzIGZpbGUgYW5kIGluc3RlYWQgZGVmaW5lIGl0cyBvd24gdmVyc2lv
biBvZiB0aGVzZSBmYWN0b3JpZXMuIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVt
LmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2su
aCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUxvY2FsRmlsZVN5c3RlbSogTG9jYWxGaWxlU3lzdGVtOjpzX2luc3Rh
bmNlID0gMDsKLQotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OmluaXRpYWxpemVMb2NhbEZpbGVTeXN0
ZW0oY29uc3QgU3RyaW5nJiBiYXNlUGF0aCkKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIGluaXRp
YWxpemUgdGhlIHF1b3RhIHNldHRpbmdzIGFzIHdlbGwuCi0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBBU1NFUlQoIXNfaW5zdGFuY2UpOwotICAgIGlmIChzX2luc3RhbmNlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBPd25QdHI8TG9jYWxGaWxlU3lzdGVtPiBsb2NhbEZpbGVTeXN0
ZW0gPSBhZG9wdFB0cihuZXcgTG9jYWxGaWxlU3lzdGVtKGJhc2VQYXRoKSk7Ci0gICAgc19pbnN0
YW5jZSA9IGxvY2FsRmlsZVN5c3RlbS5sZWFrUHRyKCk7Ci19Ci0KLUxvY2FsRmlsZVN5c3RlbSYg
TG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKQotewotICAgIC8vIGluaXRpYWxpemVM
b2NhbEZpbGVTeXN0ZW0gbXVzdCBiZSBjYWxsZWQgcHJpb3IgY2FsbGluZyB0aGlzLgotICAgIEFT
U0VSVChzX2luc3RhbmNlKTsKLSAgICByZXR1cm4gKnNfaW5zdGFuY2U7Ci19Ci0KLVN0cmluZyBM
b2NhbEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1CYXNlUGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fYmFzZVBhdGg7Ci19Ci0KLXN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBib29sIGNyZWF0ZSwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBBc3luY0ZpbGVT
eXN0ZW06Om9wZW5GaWxlU3lzdGVtKGJhc2VQYXRoLCBpZGVudGlmaWVyLCB0eXBlLCBjcmVhdGUs
IGNhbGxiYWNrcyk7Ci19Ci0KLXZvaWQgTG9jYWxGaWxlU3lzdGVtOjpyZWFkRmlsZVN5c3RlbShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlw
ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgYm9vbCkK
LXsKLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtIGNhbGxzIGNhbGxiYWNr
cyBzeW5jaHJvbm91c2x5LCBzbyB0aGUgbWV0aG9kIG5lZWRzIHRvIGJlIGNhbGxlZCBhc3luY2hy
b25vdXNseS4KLSAgICBjb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5G
aWxlU3lzdGVtLCBmaWxlU3lzdGVtQmFzZVBhdGgoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIGZhbHNlLCBjYWxsYmFja3MpKTsKLX0KLQot
dm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGJvb2wpCi17Ci0g
ICAgLy8gQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbSBjYWxscyBjYWxsYmFja3Mgc3lu
Y2hyb25vdXNseSwgc28gdGhlIG1ldGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYXN5bmNocm9ub3Vz
bHkuCi0gICAgY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5
c3RlbSwgZmlsZVN5c3RlbUJhc2VQYXRoKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmRh
dGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCB0cnVlLCBjYWxsYmFja3MpKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTExMDAzKQorKysgU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAt
MSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBMb2NhbEZpbGVTeXN0ZW1faAotI2RlZmluZSBMb2NhbEZpbGVT
eXN0ZW1faAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxl
U3lzdGVtLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgRXJyb3JDYWxsYmFjazsKLWNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFjazsK
LWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLS8vIEtlZXBzIHBlci1wcm9jZXNzIGlu
Zm9ybWF0aW9uIGFuZCBwcm92aWRlcyBhbiBlbnRyeSBwb2ludCB0byBvcGVuIGEgZmlsZSBzeXN0
ZW0uCi1jbGFzcyBMb2NhbEZpbGVTeXN0ZW0gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExv
Y2FsRmlsZVN5c3RlbSk7Ci1wdWJsaWM6Ci0gICAgLy8gUmV0dXJucyBhIHBlci1wcm9jZXNzIGlu
c3RhbmNlIG9mIExvY2FsRmlsZVN5c3RlbS4KLSAgICAvLyBOb3RlIHRoYXQgTG9jYWxGaWxlU3lz
dGVtOjppbml0aWFsaXplTG9jYWxGaWxlU3lzdGVtIG11c3QgYmUgY2FsbGVkIGJlZm9yZQotICAg
IC8vIGNhbGxpbmcgdGhpcyBvbmUuCi0gICAgc3RhdGljIExvY2FsRmlsZVN5c3RlbSYgbG9jYWxG
aWxlU3lzdGVtKCk7Ci0KLSAgICAvLyBEb2VzIG5vdCBjcmVhdGUgdGhlIHJvb3QgcGF0aCBmb3Ig
ZmlsZSBzeXN0ZW0sIGp1c3QgcmVhZHMgaXQgaWYgYXZhaWxhYmxlLgotICAgIHZvaWQgcmVhZEZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+LCBib29sIHN5bmNocm9ub3VzID0g
ZmFsc2UpOwotCi0gICAgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+LCBib29sIHN5bmNocm9ub3VzID0gZmFsc2UpOwotCi0j
aWYgIVBMQVRGT1JNKENIUk9NSVVNKQotICAgIC8vIFRoaXMgY2FsbCBpcyBub3QgdGhyZWFkLXNh
ZmU7IG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgd29ya2VyIHRocmVhZHMgYXJlIGNyZWF0ZWQu
Ci0gICAgdm9pZCBpbml0aWFsaXplTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYpOwotCi0g
ICAgU3RyaW5nIGZpbGVTeXN0ZW1CYXNlUGF0aCgpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6
Ci0gICAgTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCi0gICAgICAgIDog
bV9iYXNlUGF0aChiYXNlUGF0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIExvY2FsRmls
ZVN5c3RlbSogc19pbnN0YW5jZTsKLQotICAgIC8vIEFuIGlubmVyIGNsYXNzIHRoYXQgZW5mb3Jj
ZXMgdGhyZWFkLXNhZmUgc3RyaW5nIGFjY2Vzcy4KLSAgICBjbGFzcyBTeXN0ZW1CYXNlUGF0aCB7
Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBTeXN0ZW1CYXNlUGF0aChjb25zdCBTdHJp
bmcmIHBhdGgpIDogbV92YWx1ZShwYXRoKSB7IH0KLSAgICAgICAgb3BlcmF0b3IgU3RyaW5nKCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUuaXNvbGF0ZWRDb3B5
KCk7Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICBTdHJpbmcgbV92YWx1ZTsKLSAg
ICB9OwotCi0gICAgU3lzdGVtQmFzZVBhdGggbV9iYXNlUGF0aDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBMb2NhbEZp
bGVTeXN0ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9NZXRhZGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaAkocmV2aXNpb24gMTEx
MDAzKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9NZXRhZGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1ldGFkYXRhX2gKLSNkZWZpbmUgTWV0YWRhdGFfaAot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBNZXRhZGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE1ldGFkYXRhPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TWV0YWRhdGE+IGNyZWF0ZShjb25zdCBGaWxlTWV0YWRhdGEmIHBs
YXRmb3JtTWV0YWRhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFk
YXRhKHBsYXRmb3JtTWV0YWRhdGEpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZXRhZGF0YT4gY3JlYXRlKE1ldGFkYXRhKiBtZXRhZGF0YSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWV0YWRhdGEobWV0YWRhdGEtPm1fcGxhdGZvcm1NZXRhZGF0YSkpOwot
ICAgIH0KLQotICAgIC8vIE5lZWRzIHRvIHJldHVybiBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25k
cyBmb3IgRGF0ZSB3aGlsZSBGaWxlTWV0YWRhdGEncyBtb2RpZmljYXRpb25UaW1lIGlzIGluIHNl
Y29uZHMuCi0gICAgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtTWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSAqIDEwMDAuMDsgfQotICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBzaXplKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihtX3BsYXRmb3JtTWV0YWRhdGEubGVuZ3RoKTsgfQotCi1wcml2YXRlOgotICAgIE1l
dGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYgcGxhdGZvcm1NZXRhZGF0YSkKLSAgICAgICAgOiBt
X3BsYXRmb3JtTWV0YWRhdGEocGxhdGZvcm1NZXRhZGF0YSkKLSAgICB7Ci0gICAgfQotCi0gICAg
RmlsZU1ldGFkYXRhIG1fcGxhdGZvcm1NZXRhZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBNZXRhZGF0YV9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL01ldGFkYXRhLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL01ldGFkYXRhLmlkbAkocmV2aXNpb24gMTExMDAzKQorKysg
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9NZXRhZGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25k
aXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICAgICAgSlNOb1N0YXRpY1RhYmxlcwotICAgIF0gTWV0
YWRhdGEgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRGF0ZSBtb2RpZmljYXRpb25UaW1l
OwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7Ci0g
ICAgfTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5o
CShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL01ldGFkYXRhQ2Fs
bGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZXRhZGF0YUNh
bGxiYWNrX2gKLSNkZWZpbmUgTWV0YWRhdGFDYWxsYmFja19oCi0KLSNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIE1ldGFkYXRhOwotCi1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWV0YWRhdGFDYWxsYmFjaz4gewotcHVibGljOgotICAgIHZpcnR1YWwgfk1l
dGFkYXRhQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoTWV0YWRh
dGEqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVf
U1lTVEVNKQotCi0jZW5kaWYgLy8gTWV0YWRhdGFDYWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwJKHJldmlzaW9uIDExMTAwMykKKysr
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2UgWwotICAg
ICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICAgICAgQ2FsbGJhY2sKLSAgICBdIE1l
dGFkYXRhQ2FsbGJhY2sgewotICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIE1ldGFkYXRh
IG1ldGFkYXRhKTsKLSAgICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9TeW5j
Q2FsbGJhY2tIZWxwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1N5
bmNDYWxsYmFja0hlbHBlci5oCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1N5bmNDYWxsYmFja0hlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBTeW5jQ2FsbGJhY2tIZWxwZXJfaAotI2RlZmluZSBTeW5jQ2FsbGJhY2tIZWxw
ZXJfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50
cnkuaCIKLSNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJFbnRyeUFycmF5
U3luYy5oIgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJFcnJvckNhbGxi
YWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5LmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0j
aW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5o
IgotI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2su
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXN5bmNGaWxlU3lzdGVtOwotY2xh
c3MgRGlyZWN0b3J5RW50cnlTeW5jOwotY2xhc3MgRW50cnlBcnJheVN5bmM7Ci1jbGFzcyBFbnRy
eVN5bmM7Ci1jbGFzcyBGaWxlRW50cnlTeW5jOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwotCi0vLyBBIGhlbHBlciB0ZW1wbGF0ZSBmb3IgRmlsZVN5c3RlbVN5bmMgaW1wbGVtZW50YXRp
b24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU3VjY2Vzc0NhbGxiYWNrLCB0eXBlbmFtZSBPYnNlcnZl
clR5cGUsIHR5cGVuYW1lIENhbGxiYWNrQXJnLCB0eXBlbmFtZSBSZXN1bHRUeXBlPgotY2xhc3Mg
U3luY0NhbGxiYWNrSGVscGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTeW5jQ2FsbGJh
Y2tIZWxwZXIpOwotcHVibGljOgotICAgIHR5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPFN1Y2Nl
c3NDYWxsYmFjaywgT2JzZXJ2ZXJUeXBlLCBDYWxsYmFja0FyZywgUmVzdWx0VHlwZT4gSGVscGVy
VHlwZTsKLSAgICBTeW5jQ2FsbGJhY2tIZWxwZXIoT2JzZXJ2ZXJUeXBlKiBvYnNlcnZlciA9IDAp
Ci0gICAgICAgIDogbV9vYnNlcnZlcihvYnNlcnZlcikKLSAgICAgICAgLCBtX3N1Y2Nlc3NDYWxs
YmFjayhTdWNjZXNzQ2FsbGJhY2tJbXBsOjpjcmVhdGUodGhpcykpCi0gICAgICAgICwgbV9lcnJv
ckNhbGxiYWNrKEVycm9yQ2FsbGJhY2tJbXBsOjpjcmVhdGUodGhpcykpCi0gICAgICAgICwgbV9l
eGNlcHRpb25Db2RlKDApCi0gICAgICAgICwgbV9jb21wbGV0ZWQoZmFsc2UpCi0gICAgewotICAg
IH0KLQotICAgIFBhc3NSZWZQdHI8UmVzdWx0VHlwZT4gZ2V0UmVzdWx0KEV4Y2VwdGlvbkNvZGUm
IGVjKQotICAgIHsKLSAgICAgICAgaWYgKG1fb2JzZXJ2ZXIpIHsKLSAgICAgICAgICAgIHdoaWxl
ICghbV9jb21wbGV0ZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1fb2JzZXJ2ZXItPndhaXRG
b3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9leGNlcHRp
b25Db2RlID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZWMgPSBtX2V4Y2VwdGlvbkNvZGU7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNl
KCk7Ci0gICAgfQotCi0gICAgUGFzc1JlZlB0cjxTdWNjZXNzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaygpIHsgcmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNrOyB9Ci0gICAgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKCkgeyByZXR1cm4gbV9lcnJvckNhbGxiYWNrOyB9Ci0K
LXByaXZhdGU6Ci0gICAgY2xhc3MgU3VjY2Vzc0NhbGxiYWNrSW1wbCA6IHB1YmxpYyBTdWNjZXNz
Q2FsbGJhY2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VjY2Vz
c0NhbGxiYWNrSW1wbD4gY3JlYXRlKEhlbHBlclR5cGUqIGhlbHBlcikKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdWNjZXNzQ2FsbGJhY2tJbXBsKGhlbHBlcikp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbV9oZWxwZXItPnNldEVycm9yKDApOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KENhbGxiYWNrQXJnKiBhcmcpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1faGVscGVyLT5zZXRSZXN1bHQoUmVzdWx0VHlwZTo6Y3JlYXRlKGFy
ZykpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFN1Y2Nlc3NDYWxsYmFja0ltcGwoSGVscGVyVHlwZSogaGVscGVyKQotICAgICAg
ICAgICAgOiBtX2hlbHBlcihoZWxwZXIpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICBI
ZWxwZXJUeXBlKiBtX2hlbHBlcjsKLSAgICB9OwotCi0gICAgY2xhc3MgRXJyb3JDYWxsYmFja0lt
cGwgOiBwdWJsaWMgRXJyb3JDYWxsYmFjayB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrSW1wbD4gY3JlYXRlKEhlbHBlclR5cGUqIGhlbHBlcikK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFcnJvckNhbGxiYWNr
SW1wbChoZWxwZXIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVF
dmVudChGaWxlRXJyb3IqIGVycm9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZXJy
b3IpOwotICAgICAgICAgICAgbV9oZWxwZXItPnNldEVycm9yKGVycm9yLT5jb2RlKCkpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAg
IEVycm9yQ2FsbGJhY2tJbXBsKEhlbHBlclR5cGUqIGhlbHBlcikKLSAgICAgICAgICAgIDogbV9o
ZWxwZXIoaGVscGVyKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgSGVscGVyVHlwZSog
bV9oZWxwZXI7Ci0gICAgfTsKLQotICAgIGZyaWVuZCBjbGFzcyBTdWNjZXNzQ2FsbGJhY2tJbXBs
OwotICAgIGZyaWVuZCBjbGFzcyBFcnJvckNhbGxiYWNrSW1wbDsKLQotICAgIHZvaWQgc2V0RXJy
b3IoaW50IGNvZGUpCi0gICAgewotICAgICAgICBtX2V4Y2VwdGlvbkNvZGUgPSBGaWxlRXhjZXB0
aW9uOjpFcnJvckNvZGVUb0V4Y2VwdGlvbkNvZGUoY29kZSk7Ci0gICAgICAgIG1fY29tcGxldGVk
ID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFJlc3VsdChQYXNzUmVmUHRyPFJlc3VsdFR5
cGU+IHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIG1fcmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBt
X2NvbXBsZXRlZCA9IHRydWU7Ci0gICAgfQotCi0gICAgT2JzZXJ2ZXJUeXBlKiBtX29ic2VydmVy
OwotICAgIFJlZlB0cjxTdWNjZXNzQ2FsbGJhY2tJbXBsPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLSAg
ICBSZWZQdHI8RXJyb3JDYWxsYmFja0ltcGw+IG1fZXJyb3JDYWxsYmFjazsKLSAgICBSZWZQdHI8
UmVzdWx0VHlwZT4gbV9yZXN1bHQ7Ci0gICAgRXhjZXB0aW9uQ29kZSBtX2V4Y2VwdGlvbkNvZGU7
Ci0gICAgYm9vbCBtX2NvbXBsZXRlZDsKLX07Ci0KLXN0cnVjdCBFbXB0eVR5cGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxFbXB0eVR5cGU+IHsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbXB0eVR5cGU+
IGNyZWF0ZShFbXB0eVR5cGUqKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfTsK
LQotc3RydWN0IEVtcHR5T2JzZXJ2ZXJUeXBlIHsKLSAgICBib29sIHdhaXRGb3JPcGVyYXRpb25U
b0NvbXBsZXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19OwotCi10
eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxFbnRyeUNhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0s
IEVudHJ5LCBFbnRyeVN5bmM+IEVudHJ5U3luY0NhbGxiYWNrSGVscGVyOwotdHlwZWRlZiBTeW5j
Q2FsbGJhY2tIZWxwZXI8RW50cmllc0NhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIEVudHJ5QXJy
YXksIEVudHJ5QXJyYXlTeW5jPiBFbnRyaWVzU3luY0NhbGxiYWNrSGVscGVyOwotdHlwZWRlZiBT
eW5jQ2FsbGJhY2tIZWxwZXI8TWV0YWRhdGFDYWxsYmFjaywgQXN5bmNGaWxlU3lzdGVtLCBNZXRh
ZGF0YSwgTWV0YWRhdGE+IE1ldGFkYXRhU3luY0NhbGxiYWNrSGVscGVyOwotdHlwZWRlZiBTeW5j
Q2FsbGJhY2tIZWxwZXI8Vm9pZENhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIEVtcHR5VHlwZSwg
RW1wdHlUeXBlPiBWb2lkU3luY0NhbGxiYWNrSGVscGVyOwotdHlwZWRlZiBTeW5jQ2FsbGJhY2tI
ZWxwZXI8RmlsZVN5c3RlbUNhbGxiYWNrLCBFbXB0eU9ic2VydmVyVHlwZSwgRE9NRmlsZVN5c3Rl
bSwgRE9NRmlsZVN5c3RlbVN5bmM+IEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXI7Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQot
I2VuZGlmIC8vIFN5bmNDYWxsYmFja0hlbHBlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1dlYktpdEZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9X
ZWJLaXRGbGFncy5oCShyZXZpc2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1dlYktpdEZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2Vi
S2l0RmxhZ3NfaAotI2RlZmluZSBXZWJLaXRGbGFnc19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViS2l0RmxhZ3MgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJLaXRGbGFncz4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYktpdEZsYWdzPiBjcmVhdGUoYm9vbCBjcmVhdGUgPSBmYWxzZSwgYm9vbCBleGNsdXNp
dmUgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Rmxh
Z3MoY3JlYXRlLCBleGNsdXNpdmUpKTsKLSAgICB9Ci0KLSAgICBib29sIGlzQ3JlYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9jcmVhdGU7IH0KLSAgICB2b2lkIHNldENyZWF0ZShib29sIGNyZWF0ZSkg
eyBtX2NyZWF0ZSA9IGNyZWF0ZTsgfQotICAgIGJvb2wgaXNFeGNsdXNpdmUoKSBjb25zdCB7IHJl
dHVybiBtX2V4Y2x1c2l2ZTsgfQotICAgIHZvaWQgc2V0RXhjbHVzaXZlKGJvb2wgZXhjbHVzaXZl
KSB7IG1fZXhjbHVzaXZlID0gZXhjbHVzaXZlOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViS2l0Rmxh
Z3MoYm9vbCBjcmVhdGUsIGJvb2wgZXhjbHVzaXZlKQotICAgICAgICA6IG1fY3JlYXRlKGNyZWF0
ZSkKLSAgICAgICAgLCBtX2V4Y2x1c2l2ZShleGNsdXNpdmUpCi0gICAgewotICAgIH0KLSAgICBi
b29sIG1fY3JlYXRlOwotICAgIGJvb2wgbV9leGNsdXNpdmU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gV2ViS2l0Rmxh
Z3NfaApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3Rl
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0
RmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDExMTAwMykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldvcmtlckNvbnRleHRGaWxlU3lzdGVtLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0K
LSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgi
Ci0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVt
U3luYy5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkVycm9y
Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVy
cm9yLmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1D
YWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJM
b2NhbEZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUg
IlN5bmNDYWxsYmFja0hlbHBlci5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRS
ZXF1ZXN0RmlsZVN5c3RlbShXb3JrZXJDb250ZXh0KiB3b3JrZXIsIGludCB0eXBlLCBsb25nIGxv
bmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2Vj
dXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpKSB7Ci0g
ICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sod29ya2VyLCBlcnJvckNhbGxi
YWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGZpbGVTeXN0ZW1U
eXBlID0gc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKTsKLSAgICBpZiAo
IUFzeW5jRmlsZVN5c3RlbTo6aXNWYWxpZFR5cGUoZmlsZVN5c3RlbVR5cGUpKSB7Ci0gICAgICAg
IERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sod29ya2VyLCBlcnJvckNhbGxiYWNrLCBG
aWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVT
eXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh3b3JrZXIsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
LCB3b3JrZXIpLCBmYWxzZSk7Ci19Ci0KLVBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IFdv
cmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoV29ya2Vy
Q29udGV4dCogd29ya2VyLCBpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGVjID0gMDsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzZWN1cmVD
b250ZXh0ID0gd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFBc3lu
Y0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRp
b246OlNFQ1VSSVRZX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgQXN5bmNG
aWxlU3lzdGVtOjpUeXBlIGZpbGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lz
dGVtOjpUeXBlPih0eXBlKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNWYWxpZFR5cGUo
ZmlsZVN5c3RlbVR5cGUpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBGaWxlU3lz
dGVtU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcjsKLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2Fs
RmlsZVN5c3RlbSgpLnJlcXVlc3RGaWxlU3lzdGVtKHdvcmtlciwgZmlsZVN5c3RlbVR5cGUsIHNp
emUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCks
IGhlbHBlci5lcnJvckNhbGxiYWNrKCksIHdvcmtlciksIHRydWUpOwotICAgIHJldHVybiBoZWxw
ZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotdm9pZCBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJDb250ZXh0KiB3b3JrZXIsIGNvbnN0
IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEtVUkwgY29t
cGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1cmwpOwotICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJlQ29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cmVD
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKLSAg
ICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh3b3JrZXIsIGVycm9yQ2FsbGJh
Y2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKLSAgICBT
dHJpbmcgZmlsZVBhdGg7Ci0gICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFBc3lu
Y0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQ
YXRoKSkgewotICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHdvcmtlciwg
ZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpFTkNPRElOR19FUlIp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxG
aWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0od29ya2VyLCB0eXBlLCBSZXNvbHZlVVJJQ2FsbGJh
Y2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB3b3JrZXIsIGZpbGVQ
YXRoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8RW50cnlTeW5jPiBXb3JrZXJDb250ZXh0RmlsZVN5c3Rl
bTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoV29ya2VyQ29udGV4dCogd29y
a2VyLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAw
OwotICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1cmwpOwotICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3b3JrZXItPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUo
KSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3Rl
bSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBs
ZXRlZFVSTCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBl
OwotICAgIFN0cmluZyBmaWxlUGF0aDsKLSAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkg
fHwgIUFzeW5jRmlsZVN5c3RlbTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlw
ZSwgZmlsZVBhdGgpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RU5DT0RJTkdfRVJS
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBGaWxlU3lzdGVtU3luY0NhbGxiYWNr
SGVscGVyIHJlYWRGaWxlU3lzdGVtSGVscGVyOwotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxG
aWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0od29ya2VyLCB0eXBlLCBGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpjcmVhdGUocmVhZEZpbGVTeXN0ZW1IZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIHJlYWRG
aWxlU3lzdGVtSGVscGVyLmVycm9yQ2FsbGJhY2soKSwgd29ya2VyKSwgdHJ1ZSk7Ci0gICAgUmVm
UHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBmaWxlU3lzdGVtID0gcmVhZEZpbGVTeXN0ZW1IZWxwZXIu
Z2V0UmVzdWx0KGVjKTsKLSAgICBpZiAoIWZpbGVTeXN0ZW0pCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgUmVmUHRyPEVudHJ5U3luYz4gZW50cnkgPSBmaWxlU3lzdGVtLT5yb290KCktPmdldERp
cmVjdG9yeShmaWxlUGF0aCwgMCwgZWMpOwotICAgIGlmIChlYyA9PSBGaWxlRXhjZXB0aW9uOjpU
WVBFX01JU01BVENIX0VSUikKLSAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0
RmlsZShmaWxlUGF0aCwgMCwgZWMpOwotCi0gICAgcmV0dXJuIGVudHJ5LnJlbGVhc2UoKTsKLX0K
LQotQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250ZXh0RmlsZVN5c3Rl
bTo6VEVNUE9SQVJZKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9y
YXJ5KSwgZW51bV9taXNtYXRjaCk7Ci1DT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdv
cmtlckNvbnRleHRGaWxlU3lzdGVtOjpQRVJTSVNURU5UKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFz
eW5jRmlsZVN5c3RlbTo6UGVyc2lzdGVudCksIGVudW1fbWlzbWF0Y2gpOwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oCShyZXZp
c2lvbiAxMTEwMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxl
U3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAq
LwotCi0jaWZuZGVmIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtX2gKLSNkZWZpbmUgV29ya2VyQ29u
dGV4dEZpbGVTeXN0ZW1faAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAi
RE9NRmlsZVN5c3RlbVN5bmMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5Q2FsbGJhY2s7Ci1jbGFzcyBFbnRyeVN5bmM7
Ci1jbGFzcyBFcnJvckNhbGxiYWNrOwotY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwotY2xhc3Mg
V29ya2VyQ29udGV4dDsKLQotY2xhc3MgV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0gewotcHVibGlj
OgotICAgIGVudW0gRmlsZVN5c3RlbVR5cGUgewotICAgICAgICBURU1QT1JBUlksCi0gICAgICAg
IFBFUlNJU1RFTlQsCi0gICAgfTsKLQotICAgIHN0YXRpYyB2b2lkIHdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKFdvcmtlckNvbnRleHQqLCBpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQ
dHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiB3ZWJr
aXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoV29ya2VyQ29udGV4dCosIGludCB0eXBlLCBsb25nIGxv
bmcgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyB2b2lkIHdlYmtpdFJlc29sdmVM
b2NhbEZpbGVTeXN0ZW1VUkwoV29ya2VyQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNz
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlTeW5jPiB3ZWJraXRSZXNvbHZl
TG9jYWxGaWxlU3lzdGVtU3luY1VSTChXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmws
IEV4Y2VwdGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAgICBXb3JrZXJDb250ZXh0RmlsZVN5c3Rl
bSgpOwotICAgIH5Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbSgpOyAgICAKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlm
IC8vIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsCShyZXZpc2lvbiAxMTEwMDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLW1vZHVsZSB0aHJl
YWRzIHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVN
LAotICAgICAgICBTdXBwbGVtZW50YWw9V29ya2VyQ29udGV4dAotICAgIF0gV29ya2VyQ29udGV4
dEZpbGVTeXN0ZW0gewotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAw
OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsKLQotICAgICAg
ICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUsIGluIFtDYWxs
YmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtD
YWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAg
IFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRE9NRmlsZVN5c3RlbVN5bmMgd2Via2l0
UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGluIHVuc2lnbmVkIHNob3J0IHR5cGUsIGluIGxvbmcgbG9u
ZyBzaXplKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwotICAgICAgICBbVjhFbmFibGVkQXRSdW50
aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChpbiBE
T01TdHJpbmcgdXJsLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFbnRyeUNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNh
bGxiYWNrKTsKLSAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBFbnRyeVN5
bmMgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoaW4gRE9NU3RyaW5nIHVybCkg
cmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLQotICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0
UnVudGltZT1GaWxlU3lzdGVtXSBGaWxlRXJyb3JDb25zdHJ1Y3RvciBGaWxlRXJyb3I7Ci0gICAg
ICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZpbGVFeGNlcHRp
b25Db25zdHJ1Y3RvciBGaWxlRXhjZXB0aW9uOwotICAgIH07Ci0KLX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>