<?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>108275</bug_id>
          
          <creation_ts>2013-01-29 18:06:36 -0800</creation_ts>
          <short_desc>webdatabase: Rename AbstractDatabase to DatabaseBackend</short_desc>
          <delta_ts>2013-01-30 10:45:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>107475</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>levin+threading</cc>
    
    <cc>mkwst+watchlist</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>roger_fong</cc>
    
    <cc>sam</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>819608</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-29 18:06:36 -0800</bug_when>
    <thetext>This is a sub-task of https://bugs.webkit.org/show_bug.cgi?id=107475.  Breaking out as a step for easier review.  This patch should be purely a rename operation.  There are no semantic changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819673</commentid>
    <comment_count>1</comment_count>
      <attachid>185373</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-29 18:45:39 -0800</bug_when>
    <thetext>Created attachment 185373
the patch.

Apart from the renaming, I had to do a couple of minor touches to keep the style checker happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819674</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 18:47:39 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819676</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 18:49:07 -0800</bug_when>
    <thetext>Attachment 185373 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/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/webdatabase/AbstractDatabase.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/AbstractDatabase.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/AbstractDatabaseServer.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DBBackendServer.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DBBackendServer.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/Database.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/Database.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseBackend.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseBackend.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseManager.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseManager.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseSync.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseSync.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/OriginQuotaManager.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/OriginQuotaManager.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionClient.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionClient.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/chromium/DatabaseObserver.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/chromium/DatabaseTrackerChromium.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/chromium/SQLTransactionClientChromium.cpp&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.gypi&apos;, u&apos;Source/WebCore/WebCore.order&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/public/WebDatabase.h&apos;, u&apos;Source/WebKit/chromium/src/DatabaseObserver.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebDatabase.cpp&apos;]&quot; exit_code: 1
Source/WebCore/Modules/webdatabase/DatabaseBackend.h:80:  The parameter name &quot;permissions&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 34 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>819694</commentid>
    <comment_count>4</comment_count>
      <attachid>185373</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-01-29 19:07:58 -0800</bug_when>
    <thetext>Comment on attachment 185373
the patch.

The WebKit/chromium/public/WebDatabase.h change looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819703</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-29 19:23:36 -0800</bug_when>
    <thetext>Landed in r141207: &lt;http://trac.webkit.org/changeset/141207&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819773</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-29 21:34:43 -0800</bug_when>
    <thetext>It seems like this patch caused a Win Debug build failure?

http://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/61510

But maybe this is a build fluke :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819775</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-29 21:35:16 -0800</bug_when>
    <thetext>+rfong to notify him of a possible win dbg build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820310</commentid>
    <comment_count>8</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2013-01-30 10:36:19 -0800</bug_when>
    <thetext>efl bot started asserting quite often on fast/js/caller-property.html soon after this commit: bug 108355.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820320</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-30 10:45:07 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; efl bot started asserting quite often on fast/js/caller-property.html soon after this commit: bug 108355.

This is a misdiagnosis.  This bug is only a rename operation and cannot cause a new failure like this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185373</attachid>
            <date>2013-01-29 18:45:39 -0800</date>
            <delta_ts>2013-01-29 19:07:58 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-108275.patch</filename>
            <type>text/plain</type>
            <size>169089</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTIwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOCBAQAorMjAxMy0wMS0yOSAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIEFic3RyYWN0RGF0YWJh
c2UgdG8gRGF0YWJhc2VCYWNrZW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA4Mjc1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBwdXJlIHJlbmFtZSBvcGVyYXRpb24gYXMgcGFydCBv
ZiB0aGUgd2ViZGF0YWJhc2UgcmVmYWN0b3JpbmcKKyAgICAgICAgZWZmb3J0LiBUaGVyZSBpcyBu
byBzZW1hbnRpYyBjaGFuZ2UgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICBObyBuZXcgdGVzdHMu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFi
YXNlU2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFic3RyYWN0RGF0YWJh
c2VTZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpkYXRhYmFzZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OmFkZE9wZW5EYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6cmVtb3ZlT3BlbkRhdGFi
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpnZXRNYXhTaXplRm9y
RGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVy
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2U6OnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5k
VmVyaWZ5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3Bw
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6
OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tl
bmQ6OkRhdGFiYXNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6
On5EYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpj
bG9zZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6dmVyc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnBlcmZvcm1PcGVuQW5kVmVy
aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnNlY3VyaXR5T3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6c3RyaW5nSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmRpc3BsYXlOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmZpbGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQmFja2VuZDo6ZGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJh
Y2tlbmQ6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VCYWNrZW5kOjpzZXRWZXJzaW9uSW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUJhY2tlbmQ6OnNldEV4cGVjdGVkVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUJhY2tlbmQ6OmdldENhY2hlZFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VCYWNrZW5kOjpzZXRDYWNoZWRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
QmFja2VuZDo6Z2V0QWN0dWFsVmVyc2lvbkZvclRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlQmFja2VuZDo6ZGlzYWJsZUF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VCYWNrZW5kOjplbmFibGVBdXRob3JpemVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQmFja2VuZDo6c2V0QXV0aG9yaXplclJlYWRPbmx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlQmFja2VuZDo6c2V0QXV0aG9yaXplclBlcm1pc3Npb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6bGFzdEFjdGlvbkNoYW5nZWREYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6Omxhc3RBY3Rpb25XYXNJbnNlcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpyZXNldERlbGV0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpoYWREZWxldGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlQmFja2VuZDo6cmVzZXRBdXRob3JpemVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQmFja2VuZDo6bWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VCYWNrZW5kOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQmFja2VuZDo6aW50ZXJydXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
QmFja2VuZDo6aXNJbnRlcnJ1cHRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tl
bmQ6OmxvZ0Vycm9yTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6
OnJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJh
Y2tlbmQ6OnJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VCYWNrZW5kOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpyZXBvcnRFeGVjdXRlU3RhdGVtZW50
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6cmVwb3J0VmFjdXVt
RGF0YWJhc2VSZXN1bHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VC
YWNrZW5kLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
QWJzdHJhY3REYXRhYmFzZS5oLgorICAgICAgICAoRGF0YWJhc2VCYWNrZW5kKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6OnJlbW92ZU9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKERhdGFiYXNlTWFuYWdl
cik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpEYXRhYmFzZVN5bmMpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjpkYXRhYmFzZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6Z2V0T3BlbkRhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdp
blF1b3RhTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5RdW90YU1hbmFnZXI6
Om1hcmtEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90
YU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoT3JpZ2luUXVvdGFNYW5h
Z2VyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRDb21taXRX
cml0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50
OjpkaWRFeGVjdXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9u
Q2xpZW50OjpkaWRFeGNlZWRRdW90YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTUUxU
cmFuc2FjdGlvbkNsaWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1
bS9EYXRhYmFzZU9ic2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERhdGFi
YXNlT2JzZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vRGF0
YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZ5RGF0YWJhc2VP
YnNlcnZlck9uQ2xvc2VUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZ5RGF0
YWJhc2VPYnNlcnZlck9uQ2xvc2VUYXNrOjpOb3RpZnlEYXRhYmFzZU9ic2VydmVyT25DbG9zZVRh
c2spOgorICAgICAgICAoTm90aWZ5RGF0YWJhc2VPYnNlcnZlck9uQ2xvc2VUYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Q2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0
ZWx5VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Q2xv
c2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzazo6Q2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5
VGFzayk6CisgICAgICAgIChEYXRhYmFzZVRyYWNrZXI6OkNsb3NlT25lRGF0YWJhc2VJbW1lZGlh
dGVseVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpjbG9zZU9uZURh
dGFiYXNlSW1tZWRpYXRlbHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21p
dW0vU1FMVHJhbnNhY3Rpb25DbGllbnRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZnlEYXRhYmFzZUNoYW5nZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZ5RGF0YWJhc2VDaGFuZ2VkVGFzazo6Tm90aWZ5RGF0YWJhc2VDaGFuZ2VkVGFzayk6CisgICAg
ICAgIChOb3RpZnlEYXRhYmFzZUNoYW5nZWRUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uQ2xpZW50OjpkaWRDb21taXRXcml0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGVjdXRlU3RhdGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRRdW90YSk6CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS5vcmRlcjoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTMtMDEtMjkgIFJhZmFlbCBXZWluc3RlaW4g
IDxyYWZhZWx3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBwYXJzZXJBcHBlbmRDaGlsZCBhbmQg
cGFyc2VySW5zZXJ0QmVmb3JlIHNob3VsZCBlbnN1cmUgdGhhdCBjaGlsZCBub2RlcyBhcmUgaW4g
dGhlIHNhbWUgZG9jdW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDEx
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
OTQ0LDExICs5NDQsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJs
ZS5jcHAKIAotICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAKICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcAogICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCiAgICAgTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0
aG9yaXplci5jcHAKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAK
ICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKICAgICBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlU3luYy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2
aXNpb24gMTQxMTg3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtMjA5Miw4ICsyMDkyLDYgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlVGFibGUuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFw
cGVyLmggXApAQCAtMjEwMyw2ICsyMTAxLDggQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5k
LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNpY1R5
cGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxs
YmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDExODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxMCArMTksMTAgQEAgU09V
UkNFUyArPSBcCiAgICAgTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwIFwKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcCBc
CiAgICAgXAotICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAgXAog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIFwKICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZC5jcHAgXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwIFwKICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAgXApAQCAtMTQzNCwxMiArMTQz
NCwxMiBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1bGVzL3Byb3hpbWl0eS9EZXZpY2VQcm94aW1p
dHlDb250cm9sbGVyLmggXAogICAgIE1vZHVsZXMvcHJveGltaXR5L0RldmljZVByb3hpbWl0eUV2
ZW50LmggXAogICAgIFwKLSAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2Uu
aCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggXAog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBcCiAgICAgTW9k
dWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5oIFwKICAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgg
XAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxsYmFjay5oIFwKICAgICBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU3luYy5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDE0MTE4
NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtOTk0
LDEzICs5OTQsMTMgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQ
cm9jZXNzb3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9XYXZlVGFibGUuY3Bw
JywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5oJywKLSAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwJywKICAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ2FsbGJhY2suaCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oJywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgkocmV2aXNpb24gMTQxMTg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlcgkod29ya2luZyBjb3B5KQpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgX19aTjdXZWJDb3JlOFNl
dHRpbmdzMjBzZXRKYXZhU2NyaXB0RW5hYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRNaW5p
bXVtRm9udFNpemVFaQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRNaW5pbXVtTG9naWNhbEZv
bnRTaXplRWkKIF9fWk43V2ViQ29yZThTZXR0aW5nczE3c2V0UGx1Z2luc0VuYWJsZWRFYgotX19a
TjdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlMTRzZXRJc0F2YWlsYWJsZUViCitfX1pON1dlYkNv
cmUxNURhdGFiYXNlQmFja2VuZDE0c2V0SXNBdmFpbGFibGVFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMjVzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIy
c2V0U2Fuc1NlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCkBA
IC0yNTUyNiw3ICsyNTUyNiw3IEBAIF9fWk43V2ViQ29yZTI2anNIVE1MSUZyYW1lRWxlbWVudFNh
bmRib3gKIF9fWk43V2ViQ29yZTE1SFRNTFRyZWVCdWlsZGVyMjRkZWZhdWx0Rm9ySW5IZWFkTm9z
Y3JpcHRFdgogX19aTjdXZWJDb3JlNDBqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uT3BlbkRh
dGFiYXNlRVBOM0pTQzlFeGVjU3RhdGVFCiBfX1pON1dlYkNvcmU5RE9NV2luZG93MTJvcGVuRGF0
YWJhc2VFUktOM1dURjZTdHJpbmdFUzRfUzRfbU5TMV8xMFBhc3NSZWZQdHJJTlNfMTZEYXRhYmFz
ZUNhbGxiYWNrRUVFUmkKLV9fWk43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZTExaXNBdmFpbGFi
bGVFdgorX19aTjdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmQxMWlzQXZhaWxhYmxlRXYKIF9fWk43
V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5T
XzhEYXRhYmFzZUUKIF9fWk43V2ViQ29yZThEYXRhYmFzZTEyb3BlbkRhdGFiYXNlRVBOU18yMlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRFUktOM1dURjZTdHJpbmdFUzZfUzZfbU5TM18xMFBhc3NSZWZQ
dHJJTlNfMTZEYXRhYmFzZUNhbGxiYWNrRUVFUmkKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFj
a2VyMjBjYW5Fc3RhYmxpc2hEYXRhYmFzZUVQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RVJL
TjNXVEY2U3RyaW5nRVM2X20KQEAgLTI1NTYyLDcgKzI1NTYyLDcgQEAgX19aTjdXZWJDb3JlMTVE
YXRhYmFzZVRyYWNrZXI4c2V0UXVvdGFFUAogX19aTkszV1RGOUhhc2hUYWJsZUlOU182UmVmUHRy
SU43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FRUVTdDRwYWlySVM0X3lFTlNfMThQYWlyRmlyc3RF
eHRyYWN0b3JJUzZfRUVOUzJfMThTZWN1cml0eU9yaWdpbkhhc2hFTlNfMTRQYWlySGFzaFRyYWl0
c0lOU18xMEhhc2hUcmFpdHNJUzRfRUVOU0JfSXlFRUVFU0NfRThjb250YWluc0lQUzNfTlNfMjlS
ZWZQdHJIYXNoTWFwUmF3S2V5VHJhbnNsYXRvcklTSF9TNl9TRV9TOV9FRUVFYlJLVF8KIF9fWk5L
M1dURjlIYXNoVGFibGVJUFN0NHBhaXJJTlNfNlJlZlB0cklON1dlYkNvcmUxNFNlY3VyaXR5T3Jp
Z2luRUVFTlMzXzE1RGF0YWJhc2VEZXRhaWxzRUVTOF9OU18xN0lkZW50aXR5RXh0cmFjdG9ySVM4
X0VFTlNfN1B0ckhhc2hJUzhfRUVOU18xMEhhc2hUcmFpdHNJUzhfRUVTRV9FNGZpbmRJUzhfTlNf
MjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVM4X1M4X1NDX0VFRUVOU18yMkhhc2hUYWJsZUNvbnN0
SXRlcmF0b3JJUzhfUzhfU0FfU0NfU0VfU0VfRUVSS1RfCiBfX1pON1dlYkNvcmU4RGF0YWJhc2VD
MkVQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RVJLTjNXVEY2U3RyaW5nRVM2X1M2X20KLV9f
Wk43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZUMyRVBOU18yMlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRFUktOM1dURjZTdHJpbmdFUzZfUzZfbQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmRD
MkVQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RVJLTjNXVEY2U3RyaW5nRVM2X1M2X20KIF9f
Wk43V2ViQ29yZTE4RGF0YWJhc2VBdXRob3JpemVyNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTE4RGF0YWJhc2VBdXRob3JpemVyMjNhZGRXaGl0ZWxpc3RlZEZ1bmN0aW9uc0V2
CiBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VTMV9OU18xN0lkZW50aXR5RXh0cmFjdG9y
SVMxX0VFTlNfMTVDYXNlRm9sZGluZ0hhc2hFTlNfMTBIYXNoVHJhaXRzSVMxX0VFUzZfRTE2bG9v
a3VwRm9yV3JpdGluZ0lTMV9OU18yMklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzFfUzFfUzRfRUVF
RVN0NHBhaXJJUFMxX2JFUktUXwpAQCAtMjU1NzAsOSArMjU1NzAsOSBAQCBfX1pOM1dURjlIYXNo
VGFibGVJTlNfNlN0cmluZ0VTdDRwYWlySVMxCiBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmlu
Z0VTdDRwYWlySVMxX2lFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzNfRUVOU18xMFN0cmluZ0hh
c2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzFfRUVOUzhfSWlFRUVFUzlf
RTNhZGRJUzFfaU5TXzE3SGFzaE1hcFRyYW5zbGF0b3JJUzNfU0JfUzZfRUVFRVMyX0lOU18xN0hh
c2hUYWJsZUl0ZXJhdG9ySVMxX1MzX1M1X1M2X1NCX1M5X0VFYkVSS1RfUktUMF8KIF9fWk4zV1RG
OUhhc2hUYWJsZUlOU182U3RyaW5nRVN0NHBhaXJJUzFfaUVOU18xOFBhaXJGaXJzdEV4dHJhY3Rv
cklTM19FRU5TXzEwU3RyaW5nSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0
c0lTMV9FRU5TOF9JaUVFRUVTOV9FNmxvb2t1cElTMV9OU18yMklkZW50aXR5SGFzaFRyYW5zbGF0
b3JJUzFfUzNfUzZfRUVFRVBTM19SS1RfCiBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VT
dDRwYWlySVMxX2lFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzNfRUVOU18xMFN0cmluZ0hhc2hF
TlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzFfRUVOUzhfSWlFRUVFUzlfRTZy
ZWhhc2hFaQotX19aTkszV1RGN0hhc2hNYXBJaVBOU183SGFzaFNldElQTjdXZWJDb3JlMTZBYnN0
cmFjdERhdGFiYXNlRU5TXzdQdHJIYXNoSVM0X0VFTlNfMTBIYXNoVHJhaXRzSVM0X0VFRUVOU183
SW50SGFzaElqRUVOUzdfSWlFRU5TN19JU0FfRUVFM2dldEVSS2kKLV9fWk4zV1RGOUhhc2hUYWJs
ZUlQTjdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlRVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJ
UzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0UzYWRkSVMzX1Mz
X05TXzIySWRlbnRpdHlIYXNoVHJhbnNsYXRvcklTM19TM19TN19FRUVFU3Q0cGFpcklOU18xN0hh
c2hUYWJsZUl0ZXJhdG9ySVMzX1MzX1M1X1M3X1M5X1M5X0VFYkVSS1RfUktUMF8KLV9fWk4zV1RG
OUhhc2hUYWJsZUlQTjdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlRVMzX05TXzE3SWRlbnRpdHlF
eHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0U2
ZXhwYW5kRXYKK19fWk5LM1dURjdIYXNoTWFwSWlQTlNfN0hhc2hTZXRJUE43V2ViQ29yZTE1RGF0
YWJhc2VCYWNrZW5kRU5TXzdQdHJIYXNoSVM0X0VFTlNfMTBIYXNoVHJhaXRzSVM0X0VFRUVOU183
SW50SGFzaElqRUVOUzdfSWlFRU5TN19JU0FfRUVFM2dldEVSS2kKK19fWk4zV1RGOUhhc2hUYWJs
ZUlQTjdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmRFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklT
M19FRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTBIYXNoVHJhaXRzSVMzX0VFUzlfRTNhZGRJUzNfUzNf
TlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMzX1MzX1M3X0VFRUVTdDRwYWlySU5TXzE3SGFz
aFRhYmxlSXRlcmF0b3JJUzNfUzNfUzVfUzdfUzlfUzlfRUViRVJLVF9SS1QwXworX19aTjNXVEY5
SGFzaFRhYmxlSVBON1dlYkNvcmUxNURhdGFiYXNlQmFja2VuZEVTM19OU18xN0lkZW50aXR5RXh0
cmFjdG9ySVMzX0VFTlNfN1B0ckhhc2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNfRUVTOV9FNmV4
cGFuZEV2CiBfX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE5ZnVsbFBhdGhGb3JEYXRhYmFz
ZUVQTlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxNURh
dGFiYXNlVHJhY2tlcjI1ZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9ja0VQTlNfMTRTZWN1cml0eU9y
aWdpbkVSS04zV1RGNlN0cmluZ0ViCiBfX1pOSzdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxMG9y
aWdpblBhdGhFUE5TXzE0U2VjdXJpdHlPcmlnaW5FCkBAIC0yNTU4MywxNiArMjU1ODMsMTYgQEAg
X19aTjdXZWJDb3JlMThPcmlnaW5RdW90YU1hbmFnZXIxMWFkZERhdAogX19aTjdXZWJDb3JlMTdP
cmlnaW5Vc2FnZVJlY29yZDExYWRkRGF0YWJhc2VFUktOM1dURjZTdHJpbmdFUzRfCiBfX1pOM1dU
RjdIYXNoTWFwSU5TXzZTdHJpbmdFTjdXZWJDb3JlMTdPcmlnaW5Vc2FnZVJlY29yZDEzRGF0YWJh
c2VFbnRyeUVOU18xMFN0cmluZ0hhc2hFTlNfMTBIYXNoVHJhaXRzSVMxX0VFTlM2X0lTNF9FRUUz
c2V0RVJLUzFfUktTNF8KIF9fWk4zV1RGMTdIYXNoTWFwVHJhbnNsYXRvcklTdDRwYWlySU5TXzZT
dHJpbmdFTjdXZWJDb3JlMTdPcmlnaW5Vc2FnZVJlY29yZDEzRGF0YWJhc2VFbnRyeUVFTlNfMTRQ
YWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzJfRUVOUzhfSVM1X0VFRUVOU18xMFN0cmlu
Z0hhc2hFRTl0cmFuc2xhdGVFUlM2X1JLUzJfUktTNV8KLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VU
cmFja2VyMTVhZGRPcGVuRGF0YWJhc2VFUE5TXzE2QWJzdHJhY3REYXRhYmFzZUUKLV9fWk4zV1RG
MTBQYXNzT3duUHRySU5TXzdIYXNoTWFwSU5TXzZSZWZQdHJJTjdXZWJDb3JlMTRTZWN1cml0eU9y
aWdpbkVFRVBOUzFfSU5TXzZTdHJpbmdFUE5TXzdIYXNoU2V0SVBOUzNfMTZBYnN0cmFjdERhdGFi
YXNlRU5TXzdQdHJIYXNoSVM5X0VFTlNfMTBIYXNoVHJhaXRzSVM5X0VFRUVOU18xMFN0cmluZ0hh
c2hFTlNDX0lTNl9FRU5TQ19JU0ZfRUVFRU5TM18xOFNlY3VyaXR5T3JpZ2luSGFzaEVOU0NfSVM1
X0VFTlNDX0lTS19FRUVFRUQxRXYKLV9fWk5LN1dlYkNvcmUxNkFic3RyYWN0RGF0YWJhc2UxNnN0
cmluZ0lkZW50aWZpZXJFdgotX19aTks3V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZTE0c2VjdXJp
dHlPcmlnaW5FdgotX19aTkszV1RGN0hhc2hNYXBJTlNfNlJlZlB0cklON1dlYkNvcmUxNFNlY3Vy
aXR5T3JpZ2luRUVFUE5TMF9JTlNfNlN0cmluZ0VQTlNfN0hhc2hTZXRJUE5TMl8xNkFic3RyYWN0
RGF0YWJhc2VFTlNfN1B0ckhhc2hJUzhfRUVOU18xMEhhc2hUcmFpdHNJUzhfRUVFRU5TXzEwU3Ry
aW5nSGFzaEVOU0JfSVM1X0VFTlNCX0lTRV9FRUVFTlMyXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5T
Ql9JUzRfRUVOU0JfSVNKX0VFRTNnZXRFUFMzXwotX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZTdHJp
bmdFU3Q0cGFpcklTMV9QTlNfN0hhc2hTZXRJUE43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZUVO
U183UHRySGFzaElTNl9FRU5TXzEwSGFzaFRyYWl0c0lTNl9FRUVFRU5TXzE4UGFpckZpcnN0RXh0
cmFjdG9ySVNEX0VFTlNfMTBTdHJpbmdIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlM5X0lTMV9F
RU5TOV9JU0NfRUVFRVNJX0UxNmxvb2t1cEZvcldyaXRpbmdJUzFfTlNfMjJJZGVudGl0eUhhc2hU
cmFuc2xhdG9ySVMxX1NEX1NHX0VFRUVTMl9JUFNEX2JFUktUXwotX19aTjNXVEY5SGFzaFRhYmxl
SU5TXzZTdHJpbmdFU3Q0cGFpcklTMV9QTlNfN0hhc2hTZXRJUE43V2ViQ29yZTE2QWJzdHJhY3RE
YXRhYmFzZUVOU183UHRySGFzaElTNl9FRU5TXzEwSGFzaFRyYWl0c0lTNl9FRUVFRU5TXzE4UGFp
ckZpcnN0RXh0cmFjdG9ySVNEX0VFTlNfMTBTdHJpbmdIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJ
TlM5X0lTMV9FRU5TOV9JU0NfRUVFRVNJX0UzYWRkSVMxX1NDX05TXzE3SGFzaE1hcFRyYW5zbGF0
b3JJU0RfU0tfU0dfRUVFRVMyX0lOU18xN0hhc2hUYWJsZUl0ZXJhdG9ySVMxX1NEX1NGX1NHX1NL
X1NJX0VFYkVSS1RfUktUMF8KLV9fWk4zV1RGOUhhc2hUYWJsZUlOU182U3RyaW5nRVN0NHBhaXJJ
UzFfUE5TXzdIYXNoU2V0SVBON1dlYkNvcmUxNkFic3RyYWN0RGF0YWJhc2VFTlNfN1B0ckhhc2hJ
UzZfRUVOU18xMEhhc2hUcmFpdHNJUzZfRUVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTRF9F
RU5TXzEwU3RyaW5nSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TOV9JUzFfRUVOUzlfSVNDX0VF
RUVTSV9FNmxvb2t1cElTMV9OU18yMklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzFfU0RfU0dfRUVF
RVBTRF9SS1RfCi1fX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VTdDRwYWlySVMxX1BOU183
SGFzaFNldElQTjdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlRU5TXzdQdHJIYXNoSVM2X0VFTlNf
MTBIYXNoVHJhaXRzSVM2X0VFRUVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJU0RfRUVOU18xMFN0
cmluZ0hhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOUzlfSVMxX0VFTlM5X0lTQ19FRUVFU0lfRTZy
ZWhhc2hFaQotX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZTdHJpbmdFU3Q0cGFpcklTMV9QTlNfN0hh
c2hTZXRJUE43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZUVOU183UHRySGFzaElTNl9FRU5TXzEw
SGFzaFRyYWl0c0lTNl9FRUVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVNEX0VFTlNfMTBTdHJp
bmdIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlM5X0lTMV9FRU5TOV9JU0NfRUVFRVNJX0U2cmVt
b3ZlRVBTRF8KK19fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMTVhZGRPcGVuRGF0YWJhc2VF
UE5TXzE1RGF0YWJhc2VCYWNrZW5kRQorX19aTjNXVEYxMFBhc3NPd25QdHJJTlNfN0hhc2hNYXBJ
TlNfNlJlZlB0cklON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRUVFUE5TMV9JTlNfNlN0cmluZ0VQ
TlNfN0hhc2hTZXRJUE5TM18xNURhdGFiYXNlQmFja2VuZEVOU183UHRySGFzaElTOV9FRU5TXzEw
SGFzaFRyYWl0c0lTOV9FRUVFTlNfMTBTdHJpbmdIYXNoRU5TQ19JUzZfRUVOU0NfSVNGX0VFRUVO
UzNfMThTZWN1cml0eU9yaWdpbkhhc2hFTlNDX0lTNV9FRU5TQ19JU0tfRUVFRUVEMUV2CitfX1pO
SzdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmQxNnN0cmluZ0lkZW50aWZpZXJFdgorX19aTks3V2Vi
Q29yZTE1RGF0YWJhc2VCYWNrZW5kMTRzZWN1cml0eU9yaWdpbkV2CitfX1pOSzNXVEY3SGFzaE1h
cElOU182UmVmUHRySU43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FRUVQTlMwX0lOU182U3RyaW5n
RVBOU183SGFzaFNldElQTlMyXzE1RGF0YWJhc2VCYWNrZW5kRU5TXzdQdHJIYXNoSVM4X0VFTlNf
MTBIYXNoVHJhaXRzSVM4X0VFRUVOU18xMFN0cmluZ0hhc2hFTlNCX0lTNV9FRU5TQl9JU0VfRUVF
RU5TMl8xOFNlY3VyaXR5T3JpZ2luSGFzaEVOU0JfSVM0X0VFTlNCX0lTSl9FRUUzZ2V0RVBTM18K
K19fWk4zV1RGOUhhc2hUYWJsZUlOU182U3RyaW5nRVN0NHBhaXJJUzFfUE5TXzdIYXNoU2V0SVBO
N1dlYkNvcmUxNURhdGFiYXNlQmFja2VuZEVOU183UHRySGFzaElTNl9FRU5TXzEwSGFzaFRyYWl0
c0lTNl9FRUVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVNEX0VFTlNfMTBTdHJpbmdIYXNoRU5T
XzE0UGFpckhhc2hUcmFpdHNJTlM5X0lTMV9FRU5TOV9JU0NfRUVFRVNJX0UxNmxvb2t1cEZvcldy
aXRpbmdJUzFfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMxX1NEX1NHX0VFRUVTMl9JUFNE
X2JFUktUXworX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZTdHJpbmdFU3Q0cGFpcklTMV9QTlNfN0hh
c2hTZXRJUE43V2ViQ29yZTE1RGF0YWJhc2VCYWNrZW5kRU5TXzdQdHJIYXNoSVM2X0VFTlNfMTBI
YXNoVHJhaXRzSVM2X0VFRUVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJU0RfRUVOU18xMFN0cmlu
Z0hhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOUzlfSVMxX0VFTlM5X0lTQ19FRUVFU0lfRTNhZGRJ
UzFfU0NfTlNfMTdIYXNoTWFwVHJhbnNsYXRvcklTRF9TS19TR19FRUVFUzJfSU5TXzE3SGFzaFRh
YmxlSXRlcmF0b3JJUzFfU0RfU0ZfU0dfU0tfU0lfRUViRVJLVF9SS1QwXworX19aTjNXVEY5SGFz
aFRhYmxlSU5TXzZTdHJpbmdFU3Q0cGFpcklTMV9QTlNfN0hhc2hTZXRJUE43V2ViQ29yZTE1RGF0
YWJhc2VCYWNrZW5kRU5TXzdQdHJIYXNoSVM2X0VFTlNfMTBIYXNoVHJhaXRzSVM2X0VFRUVFTlNf
MThQYWlyRmlyc3RFeHRyYWN0b3JJU0RfRUVOU18xMFN0cmluZ0hhc2hFTlNfMTRQYWlySGFzaFRy
YWl0c0lOUzlfSVMxX0VFTlM5X0lTQ19FRUVFU0lfRTZsb29rdXBJUzFfTlNfMjJJZGVudGl0eUhh
c2hUcmFuc2xhdG9ySVMxX1NEX1NHX0VFRUVQU0RfUktUXworX19aTjNXVEY5SGFzaFRhYmxlSU5T
XzZTdHJpbmdFU3Q0cGFpcklTMV9QTlNfN0hhc2hTZXRJUE43V2ViQ29yZTE1RGF0YWJhc2VCYWNr
ZW5kRU5TXzdQdHJIYXNoSVM2X0VFTlNfMTBIYXNoVHJhaXRzSVM2X0VFRUVFTlNfMThQYWlyRmly
c3RFeHRyYWN0b3JJU0RfRUVOU18xMFN0cmluZ0hhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOUzlf
SVMxX0VFTlM5X0lTQ19FRUVFU0lfRTZyZWhhc2hFaQorX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZT
dHJpbmdFU3Q0cGFpcklTMV9QTlNfN0hhc2hTZXRJUE43V2ViQ29yZTE1RGF0YWJhc2VCYWNrZW5k
RU5TXzdQdHJIYXNoSVM2X0VFTlNfMTBIYXNoVHJhaXRzSVM2X0VFRUVFTlNfMThQYWlyRmlyc3RF
eHRyYWN0b3JJU0RfRUVOU18xMFN0cmluZ0hhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOUzlfSVMx
X0VFTlM5X0lTQ19FRUVFU0lfRTZyZW1vdmVFUFNEXwogX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRy
YWNrZXIyMGRvbmVDcmVhdGluZ0RhdGFiYXNlRVBOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2
U3RyaW5nRQogX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZSZWZQdHJJTjdXZWJDb3JlMTRTZWN1cml0
eU9yaWdpbkVFRVN0NHBhaXJJUzRfUE5TXzdIYXNoTWFwSU5TXzZTdHJpbmdFbE5TXzEwU3RyaW5n
SGFzaEVOU18xMEhhc2hUcmFpdHNJUzdfRUVOUzlfSWxFRUVFRU5TXzE4UGFpckZpcnN0RXh0cmFj
dG9ySVNFX0VFTlMyXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlM5
X0lTNF9FRU5TOV9JU0RfRUVFRVNKX0UxNmxvb2t1cEZvcldyaXRpbmdFUktTNF8KIF9fWk4zV1RG
OUhhc2hUYWJsZUlOU182UmVmUHRySU43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FRUVTdDRwYWly
SVM0X1BOU183SGFzaE1hcElOU182U3RyaW5nRWxOU18xMFN0cmluZ0hhc2hFTlNfMTBIYXNoVHJh
aXRzSVM3X0VFTlM5X0lsRUVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTRV9FRU5TMl8xOFNl
Y3VyaXR5T3JpZ2luSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TOV9JUzRfRUVOUzlfSVNEX0VF
RUVTSl9FM2FkZElTNF9TRF9OU18xN0hhc2hNYXBUcmFuc2xhdG9ySVNFX1NMX1NIX0VFRUVTNV9J
TlNfMTdIYXNoVGFibGVJdGVyYXRvcklTNF9TRV9TR19TSF9TTF9TSl9FRWJFUktUX1JLVDBfCkBA
IC0yNTYxNSwxMSArMjU2MTUsMTEgQEAgX19aTjNXVEY1RGVxdWVJUE43V2ViQ29yZTEyRGF0YWJh
c2VUYXNrRQogX19aTjNXVEYxMk1lc3NhZ2VRdWV1ZUlON1dlYkNvcmUxMkRhdGFiYXNlVGFza0VF
MTR3YWl0Rm9yTWVzc2FnZUV2CiBfX1pOM1dURjEyTWVzc2FnZVF1ZXVlSU43V2ViQ29yZTEyRGF0
YWJhc2VUYXNrRUUxOWFsd2F5c1RydWVQcmVkaWNhdGVFUFMyXwogX19aTjdXZWJDb3JlMTJEYXRh
YmFzZVRhc2sxMXBlcmZvcm1UYXNrRXYKLV9fWk43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZTE1
cmVzZXRBdXRob3JpemVyRXYKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VCYWNrZW5kMTVyZXNldEF1
dGhvcml6ZXJFdgogX19aTjdXZWJDb3JlMThEYXRhYmFzZUF1dGhvcml6ZXI1cmVzZXRFdgogX19a
TjdXZWJDb3JlOERhdGFiYXNlMTZEYXRhYmFzZU9wZW5UYXNrMTNkb1BlcmZvcm1UYXNrRXYKIF9f
Wk43V2ViQ29yZThEYXRhYmFzZTIwcGVyZm9ybU9wZW5BbmRWZXJpZnlFYlJpCi1fX1pON1dlYkNv
cmUxNkFic3RyYWN0RGF0YWJhc2UyMHBlcmZvcm1PcGVuQW5kVmVyaWZ5RWJSaQorX19aTjdXZWJD
b3JlMTVEYXRhYmFzZUJhY2tlbmQyMHBlcmZvcm1PcGVuQW5kVmVyaWZ5RWJSaQogX19aTjdXZWJD
b3JlMTRTUUxpdGVEYXRhYmFzZTI3dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtRXYKIF9fWk43
V2ViQ29yZTE0U1FMaXRlRGF0YWJhc2UxM3NldEF1dGhvcml6ZXJFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfMThEYXRhYmFzZUF1dGhvcml6ZXJFRUUKIF9fWk43V2ViQ29yZTE0U1FMaXRlRGF0YWJhc2Ux
NHNldEJ1c3lUaW1lb3V0RWkKQEAgLTI1NjM0LDEwICsyNTYzNCwxMCBAQCBfX1pON1dlYkNvcmUx
OERhdGFiYXNlQXV0aG9yaXplcjExYWxsb3dJCiBfX1pON1dlYkNvcmUxOERhdGFiYXNlQXV0aG9y
aXplcjExY3JlYXRlVGFibGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOERhdGFiYXNl
QXV0aG9yaXplcjExY3JlYXRlSW5kZXhFUktOM1dURjZTdHJpbmdFUzRfCiBfX1pON1dlYkNvcmUx
OERhdGFiYXNlQXV0aG9yaXplcjExYWxsb3dVcGRhdGVFUktOM1dURjZTdHJpbmdFUzRfCi1fX1pO
N1dlYkNvcmUxNkFic3RyYWN0RGF0YWJhc2UyMmdldFZlcnNpb25Gcm9tRGF0YWJhc2VFUk4zV1RG
NlN0cmluZ0UKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VCYWNrZW5kMjJnZXRWZXJzaW9uRnJvbURh
dGFiYXNlRVJOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOERhdGFiYXNlQXV0aG9yaXplcjdk
aXNhYmxlRXYKIF9fWk43V2ViQ29yZTE4RGF0YWJhc2VBdXRob3JpemVyNmVuYWJsZUV2Ci1fX1pO
N1dlYkNvcmUxNkFic3RyYWN0RGF0YWJhc2UyMHNldFZlcnNpb25JbkRhdGFiYXNlRVJLTjNXVEY2
U3RyaW5nRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmQyMHNldFZlcnNpb25JbkRhdGFi
YXNlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlTDIwdXBkYXRlR3VpZFZlcnNpb25NYXBF
aU4zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0RGF0YWJhc2VUaHJlYWQxOHJlY29yZERhdGFi
YXNlT3BlbkVQTlNfOERhdGFiYXNlRQogX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZSZWZQdHJJTjdX
ZWJDb3JlOERhdGFiYXNlRUVFUzRfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTNF9FRU5TXzdQdHJI
YXNoSVM0X0VFTlNfMTBIYXNoVHJhaXRzSVM0X0VFU0FfRTNhZGRJUzRfUzRfTlNfMjJJZGVudGl0
eUhhc2hUcmFuc2xhdG9ySVM0X1M0X1M4X0VFRUVTdDRwYWlySU5TXzE3SGFzaFRhYmxlSXRlcmF0
b3JJUzRfUzRfUzZfUzhfU0FfU0FfRUViRVJLVF9SS1QwXwpAQCAtMjU2NDgsNyArMjU2NDgsNyBA
QCBfX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE4c2V0RGF0YWJhCiBfX1pON1dlYkNvcmUy
NEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjE1ZGlkT3BlbkRhdGFiYXNlRVBOU18yMlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOERhdGFiYXNlRUVFUktOUzNfNlN0
cmluZ0VTOV9TOV8KIF9fWk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMTlkaWRP
cGVuRGF0YWJhc2VJbXBsRVBOU18xOUluc3RydW1lbnRpbmdBZ2VudHNFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfOERhdGFiYXNlRUVFUktOUzNfNlN0cmluZ0VTOV9TOV8KIF9fWk43V2ViQ29yZTIySW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDE1ZGlkT3BlbkRhdGFiYXNlRU4zV1RGMTBQYXNzUmVmUHRySU5T
XzhEYXRhYmFzZUVFRVJLTlMxXzZTdHJpbmdFUzdfUzdfCi1fX1pOSzdXZWJDb3JlMTZBYnN0cmFj
dERhdGFiYXNlOGZpbGVOYW1lRXYKK19fWk5LN1dlYkNvcmUxNURhdGFiYXNlQmFja2VuZDhmaWxl
TmFtZUV2CiBfX1pON1dlYkNvcmUyMkluc3BlY3RvckRhdGFiYXNlQWdlbnQxNGZpbmRCeUZpbGVO
YW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjVJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0cklOU184RGF0YWJhc2VFRUVSS05TMV82U3RyaW5n
RVM3X1M3XwogX19aTjNXVEY3SGFzaE1hcElpTlNfNlJlZlB0cklON1dlYkNvcmUyNUluc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2VFRUVOU183SW50SGFzaElqRUVOU18xMEhhc2hUcmFpdHNJaUVFTlM3
X0lTNF9FRUUzc2V0RVJLaVJLUzRfCkBAIC0yNTY2NSwyNiArMjU2NjUsMjYgQEAgX19aTjNXVEY5
SGFzaFRhYmxlSU5TXzZTdHJpbmdFU3Q0cGFpcklTMQogX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZT
dHJpbmdFU3Q0cGFpcklTMV9ON1dlYkNvcmUyNVNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IxNkNv
b3JkaW5hdGlvbkluZm9FRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM2X0VFTlNfMTBTdHJpbmdI
YXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMxX0VFTlNCX0lTNV9FRUVF
U0NfRTZsb29rdXBJUzFfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMxX1M2X1M5X0VFRUVQ
UzZfUktUXwogX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZTdHJpbmdFU3Q0cGFpcklTMV9ON1dlYkNv
cmUyNVNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IxNkNvb3JkaW5hdGlvbkluZm9FRU5TXzE4UGFp
ckZpcnN0RXh0cmFjdG9ySVM2X0VFTlNfMTBTdHJpbmdIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJ
TlNfMTBIYXNoVHJhaXRzSVMxX0VFTlNCX0lTNV9FRUVFU0NfRTZyZWhhc2hFaQogX19aTjdXZWJD
b3JlOERhdGFiYXNlNWNsb3NlRXYKLV9fWk43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZTEzY2xv
c2VEYXRhYmFzZUV2Ci1fX1pOSzNXVEY5SGFzaFRhYmxlSVBON1dlYkNvcmUxNkFic3RyYWN0RGF0
YWJhc2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTM19FRU5TXzdQdHJIYXNoSVMzX0VFTlNf
MTBIYXNoVHJhaXRzSVMzX0VFUzlfRTRmaW5kSVMzX05TXzIySWRlbnRpdHlIYXNoVHJhbnNsYXRv
cklTM19TM19TN19FRUVFTlNfMjJIYXNoVGFibGVDb25zdEl0ZXJhdG9ySVMzX1MzX1M1X1M3X1M5
X1M5X0VFUktUXwotX19aTjNXVEY5SGFzaFRhYmxlSVBON1dlYkNvcmUxNkFic3RyYWN0RGF0YWJh
c2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTM19FRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTBI
YXNoVHJhaXRzSVMzX0VFUzlfRTZyZW1vdmVFUFMzXwotX19aTjNXVEY5SGFzaFRhYmxlSWlTdDRw
YWlySWlQTlNfN0hhc2hTZXRJUE43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZUVOU183UHRySGFz
aElTNV9FRU5TXzEwSGFzaFRyYWl0c0lTNV9FRUVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVND
X0VFTlNfN0ludEhhc2hJakVFTlNfMTRQYWlySGFzaFRyYWl0c0lOUzhfSWlFRU5TOF9JU0JfRUVF
RVNJX0UxNmxvb2t1cEZvcldyaXRpbmdFUktpCi1fX1pOM1dURjlIYXNoVGFibGVJaVN0NHBhaXJJ
aVBOU183SGFzaFNldElQTjdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlRU5TXzdQdHJIYXNoSVM1
X0VFTlNfMTBIYXNoVHJhaXRzSVM1X0VFRUVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJU0NfRUVO
U183SW50SGFzaElqRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TOF9JaUVFTlM4X0lTQl9FRUVFU0lf
RTNhZGRJaVNCX05TXzE3SGFzaE1hcFRyYW5zbGF0b3JJU0NfU0tfU0dfRUVFRVMxX0lOU18xN0hh
c2hUYWJsZUl0ZXJhdG9ySWlTQ19TRV9TR19TS19TSV9FRWJFUktUX1JLVDBfCi1fX1pOM1dURjlI
YXNoVGFibGVJaVN0NHBhaXJJaVBOU183SGFzaFNldElQTjdXZWJDb3JlMTZBYnN0cmFjdERhdGFi
YXNlRU5TXzdQdHJIYXNoSVM1X0VFTlNfMTBIYXNoVHJhaXRzSVM1X0VFRUVFTlNfMThQYWlyRmly
c3RFeHRyYWN0b3JJU0NfRUVOU183SW50SGFzaElqRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TOF9J
aUVFTlM4X0lTQl9FRUVFU0lfRTRmaW5kSWlOU18yMklkZW50aXR5SGFzaFRyYW5zbGF0b3JJaVND
X1NHX0VFRUVOU18xN0hhc2hUYWJsZUl0ZXJhdG9ySWlTQ19TRV9TR19TS19TSV9FRVJLVF8KLV9f
Wk4zV1RGOUhhc2hUYWJsZUlpU3Q0cGFpcklpUE5TXzdIYXNoU2V0SVBON1dlYkNvcmUxNkFic3Ry
YWN0RGF0YWJhc2VFTlNfN1B0ckhhc2hJUzVfRUVOU18xMEhhc2hUcmFpdHNJUzVfRUVFRUVOU18x
OFBhaXJGaXJzdEV4dHJhY3RvcklTQ19FRU5TXzdJbnRIYXNoSWpFRU5TXzE0UGFpckhhc2hUcmFp
dHNJTlM4X0lpRUVOUzhfSVNCX0VFRUVTSV9FNnJlaGFzaEVpCitfX1pON1dlYkNvcmUxNURhdGFi
YXNlQmFja2VuZDEzY2xvc2VEYXRhYmFzZUV2CitfX1pOSzNXVEY5SGFzaFRhYmxlSVBON1dlYkNv
cmUxNURhdGFiYXNlQmFja2VuZEVTM19OU18xN0lkZW50aXR5RXh0cmFjdG9ySVMzX0VFTlNfN1B0
ckhhc2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNfRUVTOV9FNGZpbmRJUzNfTlNfMjJJZGVudGl0
eUhhc2hUcmFuc2xhdG9ySVMzX1MzX1M3X0VFRUVOU18yMkhhc2hUYWJsZUNvbnN0SXRlcmF0b3JJ
UzNfUzNfUzVfUzdfUzlfUzlfRUVSS1RfCitfX1pOM1dURjlIYXNoVGFibGVJUE43V2ViQ29yZTE1
RGF0YWJhc2VCYWNrZW5kRVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzNfRUVOU183UHRySGFz
aElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0U2cmVtb3ZlRVBTM18KK19fWk4zV1RGOUhh
c2hUYWJsZUlpU3Q0cGFpcklpUE5TXzdIYXNoU2V0SVBON1dlYkNvcmUxNURhdGFiYXNlQmFja2Vu
ZEVOU183UHRySGFzaElTNV9FRU5TXzEwSGFzaFRyYWl0c0lTNV9FRUVFRU5TXzE4UGFpckZpcnN0
RXh0cmFjdG9ySVNDX0VFTlNfN0ludEhhc2hJakVFTlNfMTRQYWlySGFzaFRyYWl0c0lOUzhfSWlF
RU5TOF9JU0JfRUVFRVNJX0UxNmxvb2t1cEZvcldyaXRpbmdFUktpCitfX1pOM1dURjlIYXNoVGFi
bGVJaVN0NHBhaXJJaVBOU183SGFzaFNldElQTjdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmRFTlNf
N1B0ckhhc2hJUzVfRUVOU18xMEhhc2hUcmFpdHNJUzVfRUVFRUVOU18xOFBhaXJGaXJzdEV4dHJh
Y3RvcklTQ19FRU5TXzdJbnRIYXNoSWpFRU5TXzE0UGFpckhhc2hUcmFpdHNJTlM4X0lpRUVOUzhf
SVNCX0VFRUVTSV9FM2FkZElpU0JfTlNfMTdIYXNoTWFwVHJhbnNsYXRvcklTQ19TS19TR19FRUVF
UzFfSU5TXzE3SGFzaFRhYmxlSXRlcmF0b3JJaVNDX1NFX1NHX1NLX1NJX0VFYkVSS1RfUktUMF8K
K19fWk4zV1RGOUhhc2hUYWJsZUlpU3Q0cGFpcklpUE5TXzdIYXNoU2V0SVBON1dlYkNvcmUxNURh
dGFiYXNlQmFja2VuZEVOU183UHRySGFzaElTNV9FRU5TXzEwSGFzaFRyYWl0c0lTNV9FRUVFRU5T
XzE4UGFpckZpcnN0RXh0cmFjdG9ySVNDX0VFTlNfN0ludEhhc2hJakVFTlNfMTRQYWlySGFzaFRy
YWl0c0lOUzhfSWlFRU5TOF9JU0JfRUVFRVNJX0U0ZmluZElpTlNfMjJJZGVudGl0eUhhc2hUcmFu
c2xhdG9ySWlTQ19TR19FRUVFTlNfMTdIYXNoVGFibGVJdGVyYXRvcklpU0NfU0VfU0dfU0tfU0lf
RUVSS1RfCitfX1pOM1dURjlIYXNoVGFibGVJaVN0NHBhaXJJaVBOU183SGFzaFNldElQTjdXZWJD
b3JlMTVEYXRhYmFzZUJhY2tlbmRFTlNfN1B0ckhhc2hJUzVfRUVOU18xMEhhc2hUcmFpdHNJUzVf
RUVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTQ19FRU5TXzdJbnRIYXNoSWpFRU5TXzE0UGFp
ckhhc2hUcmFpdHNJTlM4X0lpRUVOUzhfSVNCX0VFRUVTSV9FNnJlaGFzaEVpCiBfX1pON1dlYkNv
cmUxNERhdGFiYXNlVGhyZWFkMjByZWNvcmREYXRhYmFzZUNsb3NlZEVQTlNfOERhdGFiYXNlRQog
X19aTkszV1RGOUhhc2hUYWJsZUlOU182UmVmUHRySU43V2ViQ29yZThEYXRhYmFzZUVFRVM0X05T
XzE3SWRlbnRpdHlFeHRyYWN0b3JJUzRfRUVOU183UHRySGFzaElTNF9FRU5TXzEwSGFzaFRyYWl0
c0lTNF9FRVNBX0U0ZmluZElTNF9OU18yMklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzRfUzRfUzhf
RUVFRU5TXzIySGFzaFRhYmxlQ29uc3RJdGVyYXRvcklTNF9TNF9TNl9TOF9TQV9TQV9FRVJLVF8K
IF9fWk43V2ViQ29yZTE0RGF0YWJhc2VUaHJlYWQyM3Vuc2NoZWR1bGVEYXRhYmFzZVRhc2tzRVBO
U184RGF0YWJhc2VFCiBfX1pOM1dURjEyTWVzc2FnZVF1ZXVlSU43V2ViQ29yZTEyRGF0YWJhc2VU
YXNrRUU4cmVtb3ZlSWZJTlMxXzIxU2FtZURhdGFiYXNlUHJlZGljYXRlRUVFdlJUXwotX19aTjdX
ZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxOHJlbW92ZU9wZW5EYXRhYmFzZUVQTlNfMTZBYnN0cmFj
dERhdGFiYXNlRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxOHJlbW92ZU9wZW5EYXRh
YmFzZUVQTlNfMTVEYXRhYmFzZUJhY2tlbmRFCiBfX1pOSzdXZWJDb3JlOERhdGFiYXNlMTRzZWN1
cml0eU9yaWdpbkV2CiBfX1pUaG4yMDhfTks3V2ViQ29yZThEb2N1bWVudDE1aXNDb250ZXh0VGhy
ZWFkRXYKLV9fWk4zV1RGOUhhc2hUYWJsZUlOU182UmVmUHRySU43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW5FRUVTdDRwYWlySVM0X1BOU183SGFzaE1hcElOU182U3RyaW5nRVBOU183SGFzaFNldElQ
TlMyXzE2QWJzdHJhY3REYXRhYmFzZUVOU183UHRySGFzaElTQV9FRU5TXzEwSGFzaFRyYWl0c0lT
QV9FRUVFTlNfMTBTdHJpbmdIYXNoRU5TRF9JUzdfRUVOU0RfSVNHX0VFRUVFTlNfMThQYWlyRmly
c3RFeHRyYWN0b3JJU01fRUVOUzJfMThTZWN1cml0eU9yaWdpbkhhc2hFTlNfMTRQYWlySGFzaFRy
YWl0c0lOU0RfSVM0X0VFTlNEX0lTTF9FRUVFU1JfRTE2bG9va3VwRm9yV3JpdGluZ0VSS1M0Xwot
X19aTjNXVEY5SGFzaFRhYmxlSU5TXzZSZWZQdHJJTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkVF
RVN0NHBhaXJJUzRfUE5TXzdIYXNoTWFwSU5TXzZTdHJpbmdFUE5TXzdIYXNoU2V0SVBOUzJfMTZB
YnN0cmFjdERhdGFiYXNlRU5TXzdQdHJIYXNoSVNBX0VFTlNfMTBIYXNoVHJhaXRzSVNBX0VFRUVO
U18xMFN0cmluZ0hhc2hFTlNEX0lTN19FRU5TRF9JU0dfRUVFRUVOU18xOFBhaXJGaXJzdEV4dHJh
Y3RvcklTTV9FRU5TMl8xOFNlY3VyaXR5T3JpZ2luSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5T
RF9JUzRfRUVOU0RfSVNMX0VFRUVTUl9FM2FkZElTNF9TTF9OU18xN0hhc2hNYXBUcmFuc2xhdG9y
SVNNX1NUX1NQX0VFRUVTNV9JTlNfMTdIYXNoVGFibGVJdGVyYXRvcklTNF9TTV9TT19TUF9TVF9T
Ul9FRWJFUktUX1JLVDBfCi1fX1pOM1dURjlIYXNoVGFibGVJTlNfNlJlZlB0cklON1dlYkNvcmUx
NFNlY3VyaXR5T3JpZ2luRUVFU3Q0cGFpcklTNF9QTlNfN0hhc2hNYXBJTlNfNlN0cmluZ0VQTlNf
N0hhc2hTZXRJUE5TMl8xNkFic3RyYWN0RGF0YWJhc2VFTlNfN1B0ckhhc2hJU0FfRUVOU18xMEhh
c2hUcmFpdHNJU0FfRUVFRU5TXzEwU3RyaW5nSGFzaEVOU0RfSVM3X0VFTlNEX0lTR19FRUVFRU5T
XzE4UGFpckZpcnN0RXh0cmFjdG9ySVNNX0VFTlMyXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TXzE0
UGFpckhhc2hUcmFpdHNJTlNEX0lTNF9FRU5TRF9JU0xfRUVFRVNSX0U0ZmluZElQUzNfTlNfMjlS
ZWZQdHJIYXNoTWFwUmF3S2V5VHJhbnNsYXRvcklTV19TTV9TVF9TUF9FRUVFTlNfMTdIYXNoVGFi
bGVJdGVyYXRvcklTNF9TTV9TT19TUF9TVF9TUl9FRVJLVF8KLV9fWk4zV1RGOUhhc2hUYWJsZUlO
U182UmVmUHRySU43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FRUVTdDRwYWlySVM0X1BOU183SGFz
aE1hcElOU182U3RyaW5nRVBOU183SGFzaFNldElQTlMyXzE2QWJzdHJhY3REYXRhYmFzZUVOU183
UHRySGFzaElTQV9FRU5TXzEwSGFzaFRyYWl0c0lTQV9FRUVFTlNfMTBTdHJpbmdIYXNoRU5TRF9J
UzdfRUVOU0RfSVNHX0VFRUVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJU01fRUVOUzJfMThTZWN1
cml0eU9yaWdpbkhhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOU0RfSVM0X0VFTlNEX0lTTF9FRUVF
U1JfRTRmaW5kSVM0X05TXzIySWRlbnRpdHlIYXNoVHJhbnNsYXRvcklTNF9TTV9TUF9FRUVFTlNf
MTdIYXNoVGFibGVJdGVyYXRvcklTNF9TTV9TT19TUF9TVF9TUl9FRVJLVF8KLV9fWk4zV1RGOUhh
c2hUYWJsZUlOU182UmVmUHRySU43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FRUVTdDRwYWlySVM0
X1BOU183SGFzaE1hcElOU182U3RyaW5nRVBOU183SGFzaFNldElQTlMyXzE2QWJzdHJhY3REYXRh
YmFzZUVOU183UHRySGFzaElTQV9FRU5TXzEwSGFzaFRyYWl0c0lTQV9FRUVFTlNfMTBTdHJpbmdI
YXNoRU5TRF9JUzdfRUVOU0RfSVNHX0VFRUVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJU01fRUVO
UzJfMThTZWN1cml0eU9yaWdpbkhhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOU0RfSVM0X0VFTlNE
X0lTTF9FRUVFU1JfRTZyZWhhc2hFaQotX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZSZWZQdHJJTjdX
ZWJDb3JlMTRTZWN1cml0eU9yaWdpbkVFRVN0NHBhaXJJUzRfUE5TXzdIYXNoTWFwSU5TXzZTdHJp
bmdFUE5TXzdIYXNoU2V0SVBOUzJfMTZBYnN0cmFjdERhdGFiYXNlRU5TXzdQdHJIYXNoSVNBX0VF
TlNfMTBIYXNoVHJhaXRzSVNBX0VFRUVOU18xMFN0cmluZ0hhc2hFTlNEX0lTN19FRU5TRF9JU0df
RUVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTTV9FRU5TMl8xOFNlY3VyaXR5T3JpZ2luSGFz
aEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TRF9JUzRfRUVOU0RfSVNMX0VFRUVTUl9FNnJlbW92ZUVQ
U01fCitfX1pOM1dURjlIYXNoVGFibGVJTlNfNlJlZlB0cklON1dlYkNvcmUxNFNlY3VyaXR5T3Jp
Z2luRUVFU3Q0cGFpcklTNF9QTlNfN0hhc2hNYXBJTlNfNlN0cmluZ0VQTlNfN0hhc2hTZXRJUE5T
Ml8xNURhdGFiYXNlQmFja2VuZEVOU183UHRySGFzaElTQV9FRU5TXzEwSGFzaFRyYWl0c0lTQV9F
RUVFTlNfMTBTdHJpbmdIYXNoRU5TRF9JUzdfRUVOU0RfSVNHX0VFRUVFTlNfMThQYWlyRmlyc3RF
eHRyYWN0b3JJU01fRUVOUzJfMThTZWN1cml0eU9yaWdpbkhhc2hFTlNfMTRQYWlySGFzaFRyYWl0
c0lOU0RfSVM0X0VFTlNEX0lTTF9FRUVFU1JfRTE2bG9va3VwRm9yV3JpdGluZ0VSS1M0XworX19a
TjNXVEY5SGFzaFRhYmxlSU5TXzZSZWZQdHJJTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkVFRVN0
NHBhaXJJUzRfUE5TXzdIYXNoTWFwSU5TXzZTdHJpbmdFUE5TXzdIYXNoU2V0SVBOUzJfMTVEYXRh
YmFzZUJhY2tlbmRFTlNfN1B0ckhhc2hJU0FfRUVOU18xMEhhc2hUcmFpdHNJU0FfRUVFRU5TXzEw
U3RyaW5nSGFzaEVOU0RfSVM3X0VFTlNEX0lTR19FRUVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9y
SVNNX0VFTlMyXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNEX0lT
NF9FRU5TRF9JU0xfRUVFRVNSX0UzYWRkSVM0X1NMX05TXzE3SGFzaE1hcFRyYW5zbGF0b3JJU01f
U1RfU1BfRUVFRVM1X0lOU18xN0hhc2hUYWJsZUl0ZXJhdG9ySVM0X1NNX1NPX1NQX1NUX1NSX0VF
YkVSS1RfUktUMF8KK19fWk4zV1RGOUhhc2hUYWJsZUlOU182UmVmUHRySU43V2ViQ29yZTE0U2Vj
dXJpdHlPcmlnaW5FRUVTdDRwYWlySVM0X1BOU183SGFzaE1hcElOU182U3RyaW5nRVBOU183SGFz
aFNldElQTlMyXzE1RGF0YWJhc2VCYWNrZW5kRU5TXzdQdHJIYXNoSVNBX0VFTlNfMTBIYXNoVHJh
aXRzSVNBX0VFRUVOU18xMFN0cmluZ0hhc2hFTlNEX0lTN19FRU5TRF9JU0dfRUVFRUVOU18xOFBh
aXJGaXJzdEV4dHJhY3RvcklTTV9FRU5TMl8xOFNlY3VyaXR5T3JpZ2luSGFzaEVOU18xNFBhaXJI
YXNoVHJhaXRzSU5TRF9JUzRfRUVOU0RfSVNMX0VFRUVTUl9FNGZpbmRJUFMzX05TXzI5UmVmUHRy
SGFzaE1hcFJhd0tleVRyYW5zbGF0b3JJU1dfU01fU1RfU1BfRUVFRU5TXzE3SGFzaFRhYmxlSXRl
cmF0b3JJUzRfU01fU09fU1BfU1RfU1JfRUVSS1RfCitfX1pOM1dURjlIYXNoVGFibGVJTlNfNlJl
ZlB0cklON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRUVFU3Q0cGFpcklTNF9QTlNfN0hhc2hNYXBJ
TlNfNlN0cmluZ0VQTlNfN0hhc2hTZXRJUE5TMl8xNURhdGFiYXNlQmFja2VuZEVOU183UHRySGFz
aElTQV9FRU5TXzEwSGFzaFRyYWl0c0lTQV9FRUVFTlNfMTBTdHJpbmdIYXNoRU5TRF9JUzdfRUVO
U0RfSVNHX0VFRUVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJU01fRUVOUzJfMThTZWN1cml0eU9y
aWdpbkhhc2hFTlNfMTRQYWlySGFzaFRyYWl0c0lOU0RfSVM0X0VFTlNEX0lTTF9FRUVFU1JfRTRm
aW5kSVM0X05TXzIySWRlbnRpdHlIYXNoVHJhbnNsYXRvcklTNF9TTV9TUF9FRUVFTlNfMTdIYXNo
VGFibGVJdGVyYXRvcklTNF9TTV9TT19TUF9TVF9TUl9FRVJLVF8KK19fWk4zV1RGOUhhc2hUYWJs
ZUlOU182UmVmUHRySU43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FRUVTdDRwYWlySVM0X1BOU183
SGFzaE1hcElOU182U3RyaW5nRVBOU183SGFzaFNldElQTlMyXzE1RGF0YWJhc2VCYWNrZW5kRU5T
XzdQdHJIYXNoSVNBX0VFTlNfMTBIYXNoVHJhaXRzSVNBX0VFRUVOU18xMFN0cmluZ0hhc2hFTlNE
X0lTN19FRU5TRF9JU0dfRUVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTTV9FRU5TMl8xOFNl
Y3VyaXR5T3JpZ2luSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TRF9JUzRfRUVOU0RfSVNMX0VF
RUVTUl9FNnJlaGFzaEVpCitfX1pOM1dURjlIYXNoVGFibGVJTlNfNlJlZlB0cklON1dlYkNvcmUx
NFNlY3VyaXR5T3JpZ2luRUVFU3Q0cGFpcklTNF9QTlNfN0hhc2hNYXBJTlNfNlN0cmluZ0VQTlNf
N0hhc2hTZXRJUE5TMl8xNURhdGFiYXNlQmFja2VuZEVOU183UHRySGFzaElTQV9FRU5TXzEwSGFz
aFRyYWl0c0lTQV9FRUVFTlNfMTBTdHJpbmdIYXNoRU5TRF9JUzdfRUVOU0RfSVNHX0VFRUVFTlNf
MThQYWlyRmlyc3RFeHRyYWN0b3JJU01fRUVOUzJfMThTZWN1cml0eU9yaWdpbkhhc2hFTlNfMTRQ
YWlySGFzaFRyYWl0c0lOU0RfSVM0X0VFTlNEX0lTTF9FRUVFU1JfRTZyZW1vdmVFUFNNXwogX19a
TjdXZWJDb3JlMThPcmlnaW5RdW90YU1hbmFnZXIxMnJlbW92ZU9yaWdpbkVQTlNfMTRTZWN1cml0
eU9yaWdpbkUKIF9fWk4zV1RGOUhhc2hUYWJsZUlOU182UmVmUHRySU43V2ViQ29yZTE0U2VjdXJp
dHlPcmlnaW5FRUVTdDRwYWlySVM0X1BOUzJfMTdPcmlnaW5Vc2FnZVJlY29yZEVFTlNfMThQYWly
Rmlyc3RFeHRyYWN0b3JJUzhfRUVOUzJfMThTZWN1cml0eU9yaWdpbkhhc2hFTlNfMTRQYWlySGFz
aFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzRfRUVOU0RfSVM3X0VFRUVTRV9FMTZsb29rdXBGb3JX
cml0aW5nRVJLUzRfCiBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlJlZlB0cklON1dlYkNvcmUxNFNl
Y3VyaXR5T3JpZ2luRUVFU3Q0cGFpcklTNF9QTlMyXzE3T3JpZ2luVXNhZ2VSZWNvcmRFRU5TXzE4
UGFpckZpcnN0RXh0cmFjdG9ySVM4X0VFTlMyXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TXzE0UGFp
ckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVM0X0VFTlNEX0lTN19FRUVFU0VfRTNhZGRJUzRf
UzdfTlNfMTdIYXNoTWFwVHJhbnNsYXRvcklTOF9TR19TQl9FRUVFUzVfSU5TXzE3SGFzaFRhYmxl
SXRlcmF0b3JJUzRfUzhfU0FfU0JfU0dfU0VfRUViRVJLVF9SS1QwXwpAQCAtMjU2OTcsNyArMjU2
OTcsNyBAQCBfX1pOU3Q0cGFpcklOM1dURjZTdHJpbmdFTjdXZWJDb3JlMTdPcmlnCiBfX1pON1dl
YkNvcmUyNUluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2VEMUV2CiBfX1pON1dlYkNvcmU4RGF0YWJh
c2VEMEV2CiBfX1pOM1dURjVEZXF1ZUlOU182UmVmUHRySU43V2ViQ29yZTE0U1FMVHJhbnNhY3Rp
b25FRUVMbTBFRTEwZGVzdHJveUFsbEV2Ci1fX1pON1dlYkNvcmUxNkFic3RyYWN0RGF0YWJhc2VE
MkV2CitfX1pON1dlYkNvcmUxNURhdGFiYXNlQmFja2VuZEQyRXYKIF9fWk43V2ViQ29yZTE0U1FM
aXRlRGF0YWJhc2VEMUV2CiBfX1pON1dlYkNvcmUxOERhdGFiYXNlQXV0aG9yaXplckQxRXYKIF9f
Wk43V2ViQ29yZTE5SlNEYXRhYmFzZVByb3RvdHlwZUQxRXYKQEAgLTI1ODgyLDcgKzI1ODgyLDcg
QEAgX19aTjdXZWJDb3JlOERhdGFiYXNlMTF0cmFuc2FjdGlvbkVOM1dURgogX19aTjdXZWJDb3Jl
OERhdGFiYXNlMTRydW5UcmFuc2FjdGlvbkVOM1dURjEwUGFzc1JlZlB0cklOU18yMlNRTFRyYW5z
YWN0aW9uQ2FsbGJhY2tFRUVOUzJfSU5TXzI3U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrRUVF
TlMyX0lOU18xMlZvaWRDYWxsYmFja0VFRWIKIF9fWk43V2ViQ29yZTE0U1FMVHJhbnNhY3Rpb242
Y3JlYXRlRVBOU184RGF0YWJhc2VFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjJTUUxUcmFuc2FjdGlv
bkNhbGxiYWNrRUVFTlM0X0lOU18yN1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFja0VFRU5TNF9J
TlNfMTJWb2lkQ2FsbGJhY2tFRUVOUzRfSU5TXzIxU1FMVHJhbnNhY3Rpb25XcmFwcGVyRUVFYgog
X19aTjdXZWJDb3JlMTRTUUxUcmFuc2FjdGlvbkMyRVBOU184RGF0YWJhc2VFTjNXVEYxMFBhc3NS
ZWZQdHJJTlNfMjJTUUxUcmFuc2FjdGlvbkNhbGxiYWNrRUVFTlM0X0lOU18yN1NRTFRyYW5zYWN0
aW9uRXJyb3JDYWxsYmFja0VFRU5TNF9JTlNfMTJWb2lkQ2FsbGJhY2tFRUVOUzRfSU5TXzIxU1FM
VHJhbnNhY3Rpb25XcmFwcGVyRUVFYgotX19aTks3V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZTIy
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEV2CitfX1pOSzdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmQy
MnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFdgogX19aTjNXVEY1RGVxdWVJTlNfNlJlZlB0cklON1dl
YkNvcmUxNFNRTFRyYW5zYWN0aW9uRUVFTG0wRUUxNGV4cGFuZENhcGFjaXR5RXYKIF9fWk43V2Vi
Q29yZThEYXRhYmFzZTE5c2NoZWR1bGVUcmFuc2FjdGlvbkV2CiBfX1pON1dlYkNvcmU4RGF0YWJh
c2UyM0RhdGFiYXNlVHJhbnNhY3Rpb25UYXNrQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTRTUUxU
cmFuc2FjdGlvbkVFRQpAQCAtMjU4OTAsNyArMjU4OTAsNyBAQCBfX1pON1dlYkNvcmUxNERhdGFi
YXNlVGhyZWFkMTJzY2hlZHVsZVRhCiBfX1pON1dlYkNvcmU4RGF0YWJhc2UyM0RhdGFiYXNlVHJh
bnNhY3Rpb25UYXNrMTNkb1BlcmZvcm1UYXNrRXYKIF9fWk43V2ViQ29yZTE0U1FMVHJhbnNhY3Rp
b24xNXBlcmZvcm1OZXh0U3RlcEV2CiBfX1pON1dlYkNvcmUxNFNRTFRyYW5zYWN0aW9uNDFjaGVj
a0FuZEhhbmRsZUNsb3NlZE9ySW50ZXJydXB0ZWREYXRhYmFzZUV2Ci1fX1pON1dlYkNvcmUxNkFi
c3RyYWN0RGF0YWJhc2UxM2lzSW50ZXJydXB0ZWRFdgorX19aTjdXZWJDb3JlMTVEYXRhYmFzZUJh
Y2tlbmQxM2lzSW50ZXJydXB0ZWRFdgogX19aTjdXZWJDb3JlMTRTUUxUcmFuc2FjdGlvbjExYWNx
dWlyZUxvY2tFdgogX19aTks3V2ViQ29yZThEYXRhYmFzZTIydHJhbnNhY3Rpb25Db29yZGluYXRv
ckV2CiBfX1pON1dlYkNvcmUyNVNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IxMWFjcXVpcmVMb2Nr
RVBOU18xNFNRTFRyYW5zYWN0aW9uRQpAQCAtMjU5MDQsNyArMjU5MDQsNyBAQCBfX1pON1dlYkNv
cmU4RGF0YWJhc2UyM3NjaGVkdWxlVHJhbnNhY3RpCiBfX1pON1dlYkNvcmU4RGF0YWJhc2UyM0Rh
dGFiYXNlVHJhbnNhY3Rpb25UYXNrRDBFdgogX19aTjdXZWJDb3JlMTRTUUxUcmFuc2FjdGlvbjI3
b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0RXYKIF9fWk5LN1dlYkNvcmU4RGF0YWJhc2UxMW1h
eGltdW1TaXplRXYKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMjFnZXRNYXhTaXplRm9y
RGF0YWJhc2VFUEtOU18xNkFic3RyYWN0RGF0YWJhc2VFCitfX1pON1dlYkNvcmUxNURhdGFiYXNl
VHJhY2tlcjIxZ2V0TWF4U2l6ZUZvckRhdGFiYXNlRVBLTlNfMTVEYXRhYmFzZUJhY2tlbmRFCiBf
X1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VTdDRwYWlySVMxX043V2ViQ29yZTE3T3JpZ2lu
VXNhZ2VSZWNvcmQxM0RhdGFiYXNlRW50cnlFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM2X0VF
TlNfMTBTdHJpbmdIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMxX0VF
TlNCX0lTNV9FRUVFU0NfRTE2bG9va3VwRm9yV3JpdGluZ0lTMV9OU18yMklkZW50aXR5SGFzaFRy
YW5zbGF0b3JJUzFfUzZfUzlfRUVFRVMyX0lQUzZfYkVSS1RfCiBfX1pOM1dURjlIYXNoVGFibGVJ
TlNfNlN0cmluZ0VTdDRwYWlySVMxX043V2ViQ29yZTE3T3JpZ2luVXNhZ2VSZWNvcmQxM0RhdGFi
YXNlRW50cnlFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM2X0VFTlNfMTBTdHJpbmdIYXNoRU5T
XzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMxX0VFTlNCX0lTNV9FRUVFU0NfRTNh
ZGRJUzFfUzVfTlNfMTdIYXNoTWFwVHJhbnNsYXRvcklTNl9TRV9TOV9FRUVFUzJfSU5TXzE3SGFz
aFRhYmxlSXRlcmF0b3JJUzFfUzZfUzhfUzlfU0VfU0NfRUViRVJLVF9SS1QwXwogX19aTjNXVEY5
SGFzaFRhYmxlSU5TXzZTdHJpbmdFU3Q0cGFpcklTMV9ON1dlYkNvcmUxN09yaWdpblVzYWdlUmVj
b3JkMTNEYXRhYmFzZUVudHJ5RUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNl9FRU5TXzEwU3Ry
aW5nSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lTMV9FRU5TQl9JUzVf
RUVFRVNDX0U2bG9va3VwSVMxX05TXzIySWRlbnRpdHlIYXNoVHJhbnNsYXRvcklTMV9TNl9TOV9F
RUVFUFM2X1JLVF8KQEAgLTI1OTEyLDExICsyNTkxMiwxMSBAQCBfX1pOM1dURjlIYXNoVGFibGVJ
TlNfNlN0cmluZ0VTdDRwYWlySVMxCiBfX1pON1dlYkNvcmUxNlNRTGl0ZUZpbGVTeXN0ZW0xOWdl
dERhdGFiYXNlRmlsZVNpemVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNRTGl0ZURh
dGFiYXNlMTRzZXRNYXhpbXVtU2l6ZUV4CiBfX1pON1dlYkNvcmUxNFNRTGl0ZURhdGFiYXNlOHBh
Z2VTaXplRXYKLV9fWk43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZTEycmVzZXREZWxldGVzRXYK
K19fWk43V2ViQ29yZTE1RGF0YWJhc2VCYWNrZW5kMTJyZXNldERlbGV0ZXNFdgogX19aTjdXZWJD
b3JlMThEYXRhYmFzZUF1dGhvcml6ZXIxMnJlc2V0RGVsZXRlc0V2Ci1fX1pON1dlYkNvcmUxNkFi
c3RyYWN0RGF0YWJhc2UxN2Rpc2FibGVBdXRob3JpemVyRXYKK19fWk43V2ViQ29yZTE1RGF0YWJh
c2VCYWNrZW5kMTdkaXNhYmxlQXV0aG9yaXplckV2CiBfX1pON1dlYkNvcmUxOERhdGFiYXNlQXV0
aG9yaXplcjE2YWxsb3dUcmFuc2FjdGlvbkV2Ci1fX1pON1dlYkNvcmUxNkFic3RyYWN0RGF0YWJh
c2UxNmVuYWJsZUF1dGhvcml6ZXJFdgorX19aTjdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmQxNmVu
YWJsZUF1dGhvcml6ZXJFdgogX19aTjdXZWJDb3JlOERhdGFiYXNlMjdzY2hlZHVsZVRyYW5zYWN0
aW9uQ2FsbGJhY2tFUE5TXzE0U1FMVHJhbnNhY3Rpb25FCiBfX1pON1dlYkNvcmUyNkRlbGl2ZXJQ
ZW5kaW5nQ2FsbGJhY2tUYXNrMTFwZXJmb3JtVGFza0VQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250
ZXh0RQogX19aTjdXZWJDb3JlMTRTUUxUcmFuc2FjdGlvbjIycGVyZm9ybVBlbmRpbmdDYWxsYmFj
a0V2CkBAIC0yNTk0OSw3ICsyNTk0OSw3IEBAIF9fWlRobjIwOF9OSzdXZWJDb3JlOERvY3VtZW50
MTlhbGxvd0RhdGEKIF9fWk43V2ViQ29yZTEyU1FMU3RhdGVtZW50NmNyZWF0ZUVQTlNfOERhdGFi
YXNlRVJLTjNXVEY2U3RyaW5nRVJLTlMzXzZWZWN0b3JJTlNfOFNRTFZhbHVlRUxtMEVFRU5TM18x
MFBhc3NSZWZQdHJJTlNfMjBTUUxTdGF0ZW1lbnRDYWxsYmFja0VFRU5TQ19JTlNfMjVTUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrRUVFaQogX19aTjdXZWJDb3JlMTJTUUxTdGF0ZW1lbnRDMkVQTlNf
OERhdGFiYXNlRVJLTjNXVEY2U3RyaW5nRVJLTlMzXzZWZWN0b3JJTlNfOFNRTFZhbHVlRUxtMEVF
RU5TM18xMFBhc3NSZWZQdHJJTlNfMjBTUUxTdGF0ZW1lbnRDYWxsYmFja0VFRU5TQ19JTlNfMjVT
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrRUVFaQogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZThT
UUxWYWx1ZUVMbTBFRUMyRVJLUzNfCi1fX1pOSzdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlMjJ2
ZXJzaW9uTWF0Y2hlc0V4cGVjdGVkRXYKK19fWk5LN1dlYkNvcmUxNURhdGFiYXNlQmFja2VuZDIy
dmVyc2lvbk1hdGNoZXNFeHBlY3RlZEV2CiBfX1pOSzNXVEY3SGFzaE1hcElpTlNfNlN0cmluZ0VO
U183SW50SGFzaElqRUVOU18xMEhhc2hUcmFpdHNJaUVFTlM0X0lTMV9FRUUzZ2V0RVJLaQogX19a
TjdXZWJDb3JlMTRTUUxUcmFuc2FjdGlvbjE2ZW5xdWV1ZVN0YXRlbWVudEVOM1dURjEwUGFzc1Jl
ZlB0cklOU18xMlNRTFN0YXRlbWVudEVFRQogX19aTjNXVEY1RGVxdWVJTlNfNlJlZlB0cklON1dl
YkNvcmUxMlNRTFN0YXRlbWVudEVFRUxtMEVFMTRleHBhbmRDYXBhY2l0eUV2CkBAIC0yNTk1OCw3
ICsyNTk1OCw3IEBAIF9fWk43V2ViQ29yZTE0U1FMVHJhbnNhY3Rpb24xNmdldE5leHRTdGEKIF9f
Wk43V2ViQ29yZTE0U1FMVHJhbnNhY3Rpb24xOXJ1bkN1cnJlbnRTdGF0ZW1lbnRFdgogX19aTjdX
ZWJDb3JlMTJTUUxTdGF0ZW1lbnQ3ZXhlY3V0ZUVQTlNfOERhdGFiYXNlRQogX19aTjdXZWJDb3Jl
MTJTUUxTdGF0ZW1lbnQyMmNsZWFyRmFpbHVyZUR1ZVRvUXVvdGFFdgotX19aTjdXZWJDb3JlMTZB
YnN0cmFjdERhdGFiYXNlMjRzZXRBdXRob3JpemVyUGVybWlzc2lvbnNFaQorX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZUJhY2tlbmQyNHNldEF1dGhvcml6ZXJQZXJtaXNzaW9uc0VpCiBfX1pON1dlYkNv
cmUxOERhdGFiYXNlQXV0aG9yaXplcjE0c2V0UGVybWlzc2lvbnNFaQogX19aTjdXZWJDb3JlMTRT
UUxpdGVEYXRhYmFzZTEybGFzdEVycm9yTXNnRXYKIF9fWk5LN1dlYkNvcmUxMlNRTFN0YXRlbWVu
dDI5bGFzdEV4ZWN1dGlvbkZhaWxlZER1ZVRvUXVvdGFFdgpAQCAtMjY1MTIsMTQgKzI2NTEyLDE0
IEBAIF9fWk43V2ViQ29yZTE0SlNEYXRhYmFzZVN5bmMxNWNyZWF0ZVByb3QKIF9fWk43V2ViQ29y
ZTE0SlNEYXRhYmFzZVN5bmMxOGdldE93blByb3BlcnR5U2xvdEVQTjNKU0M5RXhlY1N0YXRlRVJL
TlMxXzEwSWRlbnRpZmllckVSTlMxXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxOGdldFN0YXRp
Y1ZhbHVlU2xvdElON1dlYkNvcmUxNEpTRGF0YWJhc2VTeW5jRU5TMV8xMkpTRE9NV3JhcHBlckVF
RWJQTlNfOUV4ZWNTdGF0ZUVQS05TXzlIYXNoVGFibGVFUFRfUktOU18xMElkZW50aWZpZXJFUk5T
XzEyUHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlMjFqc0RhdGFiYXNlU3luY1ZlcnNpb25FUE4z
SlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFUktOUzBfMTBJZGVudGlmaWVyRQotX19aTks3V2Vi
Q29yZTE2QWJzdHJhY3REYXRhYmFzZTd2ZXJzaW9uRXYKK19fWk5LN1dlYkNvcmUxNURhdGFiYXNl
QmFja2VuZDd2ZXJzaW9uRXYKIF9fWk43V2ViQ29yZTIzSlNEYXRhYmFzZVN5bmNQcm90b3R5cGUx
OGdldE93blByb3BlcnR5U2xvdEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVS
TlMxXzEyUHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlNDRqc0RhdGFiYXNlU3luY1Byb3RvdHlw
ZUZ1bmN0aW9uQ2hhbmdlVmVyc2lvbkVQTjNKU0M5RXhlY1N0YXRlRQogX19aTjdXZWJDb3JlMjhK
U1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrQzFFUE4zSlNDOEpTT2JqZWN0RVBOU18xN0pTRE9N
R2xvYmFsT2JqZWN0RQogX19aTjdXZWJDb3JlMTJEYXRhYmFzZVN5bmMxM2NoYW5nZVZlcnNpb25F
UktOM1dURjZTdHJpbmdFUzRfTlMxXzEwUGFzc1JlZlB0cklOU18yNlNRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrRUVFUmkKIF9fWk43V2ViQ29yZTE4U1FMVHJhbnNhY3Rpb25TeW5jNmNyZWF0ZUVQ
TlNfMTJEYXRhYmFzZVN5bmNFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjZTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFja0VFRWIKIF9fWk43V2ViQ29yZTE4U1FMVHJhbnNhY3Rpb25TeW5jNWJlZ2luRXYK
LV9fWk5LN1dlYkNvcmUxNkFic3RyYWN0RGF0YWJhc2UxMW1heGltdW1TaXplRXYKK19fWk5LN1dl
YkNvcmUxNURhdGFiYXNlQmFja2VuZDExbWF4aW11bVNpemVFdgogX19aTjdXZWJDb3JlMThTUUxU
cmFuc2FjdGlvblN5bmM3ZXhlY3V0ZUV2CiBfX1pON1dlYkNvcmUyOEpTU1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2sxMWhhbmRsZUV2ZW50RVBOU18xOFNRTFRyYW5zYWN0aW9uU3luY0UKIF9fWk43
V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5T
XzE4U1FMVHJhbnNhY3Rpb25TeW5jRQpAQCAtMjY1MjcsOCArMjY1MjcsOCBAQCBfX1pON1dlYkNv
cmUxM2NyZWF0ZVdyYXBwZXJJTlNfMjBKU1NRTFRyCiBfX1pON1dlYkNvcmUxNWdldERPTVN0cnVj
dHVyZUlOU18yMEpTU1FMVHJhbnNhY3Rpb25TeW5jRUVFUE4zSlNDOVN0cnVjdHVyZUVQTlMyXzlF
eGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFCiBfX1pON1dlYkNvcmUyMEpTU1FMVHJh
bnNhY3Rpb25TeW5jMTVjcmVhdGVQcm90b3R5cGVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0SlNH
bG9iYWxPYmplY3RFCiBfX1pON1dlYkNvcmUxOFNRTFRyYW5zYWN0aW9uU3luYzZjb21taXRFdgot
X19aTjdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlMTBoYWREZWxldGVzRXYKLV9fWk43V2ViQ29y
ZTE2QWJzdHJhY3REYXRhYmFzZTE4c2V0RXhwZWN0ZWRWZXJzaW9uRVJLTjNXVEY2U3RyaW5nRQor
X19aTjdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmQxMGhhZERlbGV0ZXNFdgorX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZUJhY2tlbmQxOHNldEV4cGVjdGVkVmVyc2lvbkVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTI4SlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFja0QwRXYKIF9fWk5LN1dlYkNv
cmUxM1dvcmtlckNvbnRleHQxNWlzQ29udGV4dFRocmVhZEV2CiBfX1pON1dlYkNvcmU0MmpzRGF0
YWJhc2VTeW5jUHJvdG90eXBlRnVuY3Rpb25UcmFuc2FjdGlvbkVQTjNKU0M5RXhlY1N0YXRlRQpA
QCAtMjY1NDMsMjcgKzI2NTQzLDI3IEBAIF9fWk43V2ViQ29yZTE2U1FMU3RhdGVtZW50U3luY0Mx
RVJLTjNXVEYKIF9fWk43V2ViQ29yZTE2U1FMU3RhdGVtZW50U3luYzdleGVjdXRlRVBOU18xMkRh
dGFiYXNlU3luY0VSaQogX19aTks3V2ViQ29yZTE1U1FMaXRlU3RhdGVtZW50MThiaW5kUGFyYW1l
dGVyQ291bnRFdgogX19aTjdXZWJDb3JlMTJTUUxSZXN1bHRTZXRDMUV2Ci1fX1pON1dlYkNvcmUx
NkFic3RyYWN0RGF0YWJhc2UxOWxhc3RBY3Rpb25XYXNJbnNlcnRFdgorX19aTjdXZWJDb3JlMTVE
YXRhYmFzZUJhY2tlbmQxOWxhc3RBY3Rpb25XYXNJbnNlcnRFdgogX19aTjdXZWJDb3JlMTJTUUxS
ZXN1bHRTZXQxMXNldEluc2VydElkRXgKIF9fWk43V2ViQ29yZTE0U1FMaXRlRGF0YWJhc2UxMWxh
c3RDaGFuZ2VzRXYKIF9fWk43V2ViQ29yZTEyU1FMUmVzdWx0U2V0MTVzZXRSb3dzQWZmZWN0ZWRF
aQotX19aTjdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlMjVsYXN0QWN0aW9uQ2hhbmdlZERhdGFi
YXNlRXYKLV9fWk43V2ViQ29yZTIwU1FMVHJhbnNhY3Rpb25DbGllbnQxOWRpZEV4ZWN1dGVTdGF0
ZW1lbnRFUE5TXzE2QWJzdHJhY3REYXRhYmFzZUUKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFj
a2VyMTVkYXRhYmFzZUNoYW5nZWRFUE5TXzE2QWJzdHJhY3REYXRhYmFzZUUKLV9fWk43V2ViQ29y
ZTE4T3JpZ2luUXVvdGFNYW5hZ2VyMTJtYXJrRGF0YWJhc2VFUE5TXzE2QWJzdHJhY3REYXRhYmFz
ZUUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VCYWNrZW5kMjVsYXN0QWN0aW9uQ2hhbmdlZERhdGFi
YXNlRXYKK19fWk43V2ViQ29yZTIwU1FMVHJhbnNhY3Rpb25DbGllbnQxOWRpZEV4ZWN1dGVTdGF0
ZW1lbnRFUE5TXzE1RGF0YWJhc2VCYWNrZW5kRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNr
ZXIxNWRhdGFiYXNlQ2hhbmdlZEVQTlNfMTVEYXRhYmFzZUJhY2tlbmRFCitfX1pON1dlYkNvcmUx
OE9yaWdpblF1b3RhTWFuYWdlcjEybWFya0RhdGFiYXNlRVBOU18xNURhdGFiYXNlQmFja2VuZEUK
IF9fWk43V2ViQ29yZTE3T3JpZ2luVXNhZ2VSZWNvcmQxMm1hcmtEYXRhYmFzZUVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTE2U1FMU3RhdGVtZW50U3luY0QxRXYKIF9fWk43V2ViQ29yZTR0
b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEyU1FMUmVz
dWx0U2V0RQogX19aTjdXZWJDb3JlMTNjcmVhdGVXcmFwcGVySU5TXzE0SlNTUUxSZXN1bHRTZXRF
TlNfMTJTUUxSZXN1bHRTZXRFRUVQTlNfMTJKU0RPTVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQVDBfCiBfX1pON1dlYkNvcmUxNWdldERPTVN0cnVjdHVy
ZUlOU18xNEpTU1FMUmVzdWx0U2V0RUVFUE4zSlNDOVN0cnVjdHVyZUVQTlMyXzlFeGVjU3RhdGVF
UE5TXzE3SlNET01HbG9iYWxPYmplY3RFCiBfX1pON1dlYkNvcmUxNEpTU1FMUmVzdWx0U2V0MTVj
cmVhdGVQcm90b3R5cGVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0SlNHbG9iYWxPYmplY3RFCi1f
X1pON1dlYkNvcmUyMFNRTFRyYW5zYWN0aW9uQ2xpZW50MjVkaWRDb21taXRXcml0ZVRyYW5zYWN0
aW9uRVBOU18xNkFic3RyYWN0RGF0YWJhc2VFCitfX1pON1dlYkNvcmUyMFNRTFRyYW5zYWN0aW9u
Q2xpZW50MjVkaWRDb21taXRXcml0ZVRyYW5zYWN0aW9uRVBOU18xNURhdGFiYXNlQmFja2VuZEUK
IF9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMjlzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hh
bmdlZEVQTlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0UKIF9fWk4zV1RGNlZlY3Rv
cklTdDRwYWlySU5TXzZSZWZQdHJJTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkVFRU5TXzZTdHJp
bmdFRUxtMEVFMTRleHBhbmRDYXBhY2l0eUVtCiBfX1pOU3Q0cGFpcklOM1dURjZSZWZQdHJJTjdX
ZWJDb3JlMTRTZWN1cml0eU9yaWdpbkVFRU5TMF82U3RyaW5nRUVEMUV2CiBfX1pON1dlYkNvcmUx
NURhdGFiYXNlVHJhY2tlcjIybm90aWZ5RGF0YWJhc2VzQ2hhbmdlZEVQdgotX19aTjNXVEY2VmVj
dG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlRUVFTG0wRUUxNGV4cGFu
ZENhcGFjaXR5RW0KLV9fWk43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZTlpbnRlcnJ1cHRFdgor
X19aTjNXVEY2VmVjdG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmRFRUVM
bTBFRTE0ZXhwYW5kQ2FwYWNpdHlFbQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZUJhY2tlbmQ5aW50
ZXJydXB0RXYKIF9fWk43V2ViQ29yZTE0U1FMaXRlRGF0YWJhc2U5aW50ZXJydXB0RXYKIF9fWk43
V2ViQ29yZTE0SlNEYXRhYmFzZVN5bmNEMUV2CiBfX1pON1dlYkNvcmUyMEpTU1FMVHJhbnNhY3Rp
b25TeW5jRDFFdgpAQCAtMjY3MDgsNyArMjY3MDgsNyBAQCBfX1pON1dlYkNvcmUxOERhdGFiYXNl
QXV0aG9yaXplcjE1ZHJvcFRlCiBfX1pON1dlYkNvcmUxOERhdGFiYXNlQXV0aG9yaXplcjEyZHJv
cFRlbXBWaWV3RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThEYXRhYmFzZUF1dGhvcml6
ZXIxMWRyb3BUcmlnZ2VyRVJLTjNXVEY2U3RyaW5nRVM0XwogX19aTjdXZWJDb3JlMThEYXRhYmFz
ZUF1dGhvcml6ZXI4ZHJvcFZpZXdFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNkFic3Ry
YWN0RGF0YWJhc2UyNWluY3JlbWVudGFsVmFjdXVtSWZOZWVkZWRFdgorX19aTjdXZWJDb3JlMTVE
YXRhYmFzZUJhY2tlbmQyNWluY3JlbWVudGFsVmFjdXVtSWZOZWVkZWRFdgogX19aTjdXZWJDb3Jl
MTRTUUxpdGVEYXRhYmFzZTEzZnJlZVNwYWNlU2l6ZUV2CiBfX1pON1dlYkNvcmUxNFNRTGl0ZURh
dGFiYXNlOXRvdGFsU2l6ZUV2CiBfX1pON1dlYkNvcmUxNFNRTGl0ZURhdGFiYXNlMjdydW5JbmNy
ZW1lbnRhbFZhY3V1bUNvbW1hbmRFdgpAQCAtMjg1OTUsNyArMjg1OTUsNyBAQCBfX1pON1dlYkNv
cmUyN0FjdGl2ZURPTU9iamVjdENhbGxiYWNrSW1wCiBfX1pON1dlYkNvcmUyOERhdGFiYXNlQ3Jl
YXRpb25DYWxsYmFja1Rhc2tEMEV2CiBfX1pON1dlYkNvcmUxMlNRTFN0YXRlbWVudDIwc2V0RmFp
bHVyZUR1ZVRvUXVvdGFFdgogX19aTjdXZWJDb3JlMTRTUUxUcmFuc2FjdGlvbjI4ZGVsaXZlclF1
b3RhSW5jcmVhc2VDYWxsYmFja0V2Ci1fX1pON1dlYkNvcmUyMFNRTFRyYW5zYWN0aW9uQ2xpZW50
MTRkaWRFeGNlZWRRdW90YUVQTlNfMTZBYnN0cmFjdERhdGFiYXNlRQorX19aTjdXZWJDb3JlMjBT
UUxUcmFuc2FjdGlvbkNsaWVudDE0ZGlkRXhjZWVkUXVvdGFFUE5TXzE1RGF0YWJhc2VCYWNrZW5k
RQogX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxNHF1b3RhRm9yT3JpZ2luRVBOU18xNFNl
Y3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTRqc1NRTEVycm9yQ29kZUVQTjNKU0M5RXhlY1N0
YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElkZW50aWZpZXJFCiBfX1pON1dlYkNvcmUxOUpTU1FM
RXJyb3JQcm90b3R5cGUxOGdldE93blByb3BlcnR5U2xvdEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMx
XzEwSWRlbnRpZmllckVSTlMxXzEyUHJvcGVydHlTbG90RQpAQCAtMzI1MjIsNyArMzI1MjIsNyBA
QCBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlUmVuZGVyVGhlbWVOb3RpCiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVUZXh0RmllbGRDZWxsCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlVGV4dEZpZWxk
Q2VsbAogX19aVFZON1dlYkNvcmUyM0luc3BlY3RvckxheWVyVHJlZUFnZW50RQotX19aVFZON1dl
YkNvcmUxNkFic3RyYWN0RGF0YWJhc2VFCitfX1pUVk43V2ViQ29yZTE1RGF0YWJhc2VCYWNrZW5k
RQogX19aVFZON1dlYkNvcmUxNEFic3RyYWN0V29ya2VyRQogX19aVFZON1dlYkNvcmUyMUFjY2Vz
c2liaWxpdHlBUklBR3JpZEUKIF9fWlRWTjdXZWJDb3JlMjVBY2Nlc3NpYmlsaXR5QVJJQUdyaWRD
ZWxsRQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERh
dGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxNDExODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYxMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFi
c3RyYWN0RGF0YWJhc2UuaCIKLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLSNpbmNsdWRl
ICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0j
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgotI2luY2x1
ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0j
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0oQ0hS
T01JVU0pCi0jaW5jbHVkZSAiRGF0YWJhc2VPYnNlcnZlci5oIiAvLyBGb3IgZXJyb3IgcmVwb3J0
aW5nLgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IGNoYXIg
dmVyc2lvbktleVtdID0gIldlYktpdERhdGFiYXNlVmVyc2lvbktleSI7Ci1zdGF0aWMgY29uc3Qg
Y2hhciBpbmZvVGFibGVOYW1lW10gPSAiX19XZWJLaXREYXRhYmFzZUluZm9UYWJsZV9fIjsKLQot
c3RhdGljIFN0cmluZyBmb3JtYXRFcnJvck1lc3NhZ2UoY29uc3QgY2hhciogbWVzc2FnZSwgaW50
IHNxbGl0ZUVycm9yQ29kZSwgY29uc3QgY2hhciogc3FsaXRlRXJyb3JNZXNzYWdlKQotewotICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMgKCVkICVzKSIsIG1lc3NhZ2UsIHNxbGl0ZUVycm9y
Q29kZSwgc3FsaXRlRXJyb3JNZXNzYWdlKTsKLX0KLQotc3RhdGljIGJvb2wgcmV0cmlldmVUZXh0
UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgU3RyaW5nJiByZXN1bHRTdHJpbmcpCi17Ci0gICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVu
dChkYiwgcXVlcnkpOwotICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQucHJlcGFyZSgpOwotCi0g
ICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIkVycm9y
ICglaSkgcHJlcGFyaW5nIHN0YXRlbWVudCB0byByZWFkIHRleHQgcmVzdWx0IGZyb20gZGF0YWJh
c2UgKCVzKSIsIHJlc3VsdCwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKLSAgICBpZiAo
cmVzdWx0ID09IFNRTFJlc3VsdFJvdykgewotICAgICAgICByZXN1bHRTdHJpbmcgPSBzdGF0ZW1l
bnQuZ2V0Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlm
IChyZXN1bHQgPT0gU1FMUmVzdWx0RG9uZSkgewotICAgICAgICByZXN1bHRTdHJpbmcgPSBTdHJp
bmcoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgTE9HX0VSUk9SKCJFcnJv
ciAoJWkpIHJlYWRpbmcgdGV4dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAoJXMpIiwgcmVzdWx0LCBx
dWVyeS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9v
bCBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgY29uc3QgU3RyaW5n
JiBxdWVyeSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3Rh
dGVtZW50KGRiLCBxdWVyeSk7Ci0gICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC5wcmVwYXJlKCk7
Ci0KLSAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHNldCB2YWx1ZSBpbiBkYXRhYmFzZSAoJXMp
IiwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIHZhbHVlKTsKLQotICAgIHJlc3VsdCA9IHN0YXRl
bWVudC5zdGVwKCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7Ci0gICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIHN0ZXAgc3RhdGVtZW50IHRvIHNldCB2YWx1ZSBpbiBkYXRh
YmFzZSAoJXMpIiwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIEZJWE1FOiBtb3ZlIGFsbCBndWlk
LXJlbGF0ZWQgZnVuY3Rpb25zIHRvIGEgRGF0YWJhc2VWZXJzaW9uVHJhY2tlciBjbGFzcy4KLXN0
YXRpYyBNdXRleCYgZ3VpZE11dGV4KCkKLXsKLSAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0
aWMoTXV0ZXgmLCBtdXRleCA9ICpuZXcgTXV0ZXgpOwotICAgIHJldHVybiBtdXRleDsKLX0KLQot
dHlwZWRlZiBIYXNoTWFwPERhdGFiYXNlR3VpZCwgU3RyaW5nPiBHdWlkVmVyc2lvbk1hcDsKLXN0
YXRpYyBHdWlkVmVyc2lvbk1hcCYgZ3VpZFRvVmVyc2lvbk1hcCgpCi17Ci0gICAgLy8gRW5zdXJl
IHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgotICAgIEFTU0VSVCghZ3VpZE11dGV4KCkudHJ5TG9j
aygpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEd1aWRWZXJzaW9uTWFwLCBtYXAsICgpKTsK
LSAgICByZXR1cm4gbWFwOwotfQotCi0vLyBOT1RFOiBDYWxsZXIgbXVzdCBsb2NrIGd1aWRNdXRl
eCgpLgotc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKERhdGFiYXNlR3Vp
ZCBndWlkLCBTdHJpbmcgbmV3VmVyc2lvbikKLXsKLSAgICAvLyBFbnN1cmUgdGhlIHRoZSBtdXRl
eCBpcyBsb2NrZWQuCi0gICAgQVNTRVJUKCFndWlkTXV0ZXgoKS50cnlMb2NrKCkpOwotCi0gICAg
Ly8gTm90ZTogSXQgaXMgbm90IHNhZmUgdG8gcHV0IGFuIGVtcHR5IHN0cmluZyBpbnRvIHRoZSBn
dWlkVG9WZXJzaW9uTWFwKCkgbWFwLgotICAgIC8vIFRoYXQncyBiZWNhdXNlIHRoZSBtYXAgaXMg
Y3Jvc3MtdGhyZWFkLCBidXQgZW1wdHkgc3RyaW5ncyBhcmUgcGVyLXRocmVhZC4KLSAgICAvLyBU
aGUgY29weSgpIGZ1bmN0aW9uIG1ha2VzIGEgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHlvdSBjYW4g
dXNlIG9uIHRoZSBjdXJyZW50Ci0gICAgLy8gdGhyZWFkLCBidXQgd2UgbmVlZCBhIHN0cmluZyB3
ZSBjYW4ga2VlcCBpbiBhIGNyb3NzLXRocmVhZCBkYXRhIHN0cnVjdHVyZS4KLSAgICAvLyBGSVhN
RTogVGhpcyBpcyBhIHF1aXRlLWF3a3dhcmQgcmVzdHJpY3Rpb24gdG8gaGF2ZSB0byBwcm9ncmFt
IHdpdGguCi0KLSAgICAvLyBNYXAgbnVsbCBzdHJpbmcgdG8gZW1wdHkgc3RyaW5nIChzZWUgY29t
bWVudCBhYm92ZSkuCi0gICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnNldChndWlkLCBuZXdWZXJzaW9u
LmlzRW1wdHkoKSA/IFN0cmluZygpIDogbmV3VmVyc2lvbi5pc29sYXRlZENvcHkoKSk7Ci19Ci0K
LXR5cGVkZWYgSGFzaE1hcDxEYXRhYmFzZUd1aWQsIEhhc2hTZXQ8QWJzdHJhY3REYXRhYmFzZSo+
Kj4gR3VpZERhdGFiYXNlTWFwOwotc3RhdGljIEd1aWREYXRhYmFzZU1hcCYgZ3VpZFRvRGF0YWJh
c2VNYXAoKQotewotICAgIC8vIEVuc3VyZSB0aGUgdGhlIG11dGV4IGlzIGxvY2tlZC4KLSAgICBB
U1NFUlQoIWd1aWRNdXRleCgpLnRyeUxvY2soKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChH
dWlkRGF0YWJhc2VNYXAsIG1hcCwgKCkpOwotICAgIHJldHVybiBtYXA7Ci19Ci0KLXN0YXRpYyBE
YXRhYmFzZUd1aWQgZ3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICAvLyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2Nr
ZWQuCi0gICAgQVNTRVJUKCFndWlkTXV0ZXgoKS50cnlMb2NrKCkpOwotCi0gICAgU3RyaW5nIHN0
cmluZ0lEID0gb3JpZ2luICsgIi8iICsgbmFtZTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIGludD4gSURHdWlkTWFwOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSURHdWlkTWFwLCBz
dHJpbmdJZGVudGlmaWVyVG9HVUlETWFwLCAoKSk7Ci0gICAgRGF0YWJhc2VHdWlkIGd1aWQgPSBz
dHJpbmdJZGVudGlmaWVyVG9HVUlETWFwLmdldChzdHJpbmdJRCk7Ci0gICAgaWYgKCFndWlkKSB7
Ci0gICAgICAgIHN0YXRpYyBpbnQgY3VycmVudE5ld0dVSUQgPSAxOwotICAgICAgICBndWlkID0g
Y3VycmVudE5ld0dVSUQrKzsKLSAgICAgICAgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5zZXQo
c3RyaW5nSUQsIGd1aWQpOwotICAgIH0KLQotICAgIHJldHVybiBndWlkOwotfQotCi0vLyBzdGF0
aWMKLWNvbnN0IGNoYXIqIEFic3RyYWN0RGF0YWJhc2U6OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSgp
Ci17Ci0gICAgcmV0dXJuIGluZm9UYWJsZU5hbWU7Ci19Ci0KLUFic3RyYWN0RGF0YWJhc2U6OkFi
c3RyYWN0RGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5cGUgZGF0YWJhc2VUeXBl
KQotICAgIDogbV9kYXRhYmFzZUNvbnRleHQoZGF0YWJhc2VDb250ZXh0KQotICAgICwgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCi0gICAgLCBtX25hbWUobmFtZS5pc29sYXRlZENvcHkoKSkKLSAgICAsIG1fZXhwZWN0
ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKLSAgICAsIG1fZGlzcGxh
eU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCi0gICAgLCBtX2VzdGltYXRlZFNpemUo
ZXN0aW1hdGVkU2l6ZSkKLSAgICAsIG1fZ3VpZCgwKQotICAgICwgbV9vcGVuZWQoZmFsc2UpCi0g
ICAgLCBtX25ldyhmYWxzZSkKLSAgICAsIG1faXNTeW5jRGF0YWJhc2UoZGF0YWJhc2VUeXBlID09
IFN5bmNEYXRhYmFzZSkKLXsKLSAgICBBU1NFUlQobV9kYXRhYmFzZUNvbnRleHQtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIG1fY29udGV4dFRocmVh
ZFNlY3VyaXR5T3JpZ2luID0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLT5pc29sYXRlZENvcHkoKTsKLQotICAgIG1fZGF0YWJhc2VBdXRob3JpemVyID0gRGF0YWJh
c2VBdXRob3JpemVyOjpjcmVhdGUoaW5mb1RhYmxlTmFtZSk7Ci0KLSAgICBpZiAobV9uYW1lLmlz
TnVsbCgpKQotICAgICAgICBtX25hbWUgPSAiIjsKLQotICAgIHsKLSAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKLSAgICAgICAgbV9ndWlkID0gZ3VpZEZvck9yaWdpbkFu
ZE5hbWUoc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7Ci0gICAgICAgIEhhc2hT
ZXQ8QWJzdHJhY3REYXRhYmFzZSo+KiBoYXNoU2V0ID0gZ3VpZFRvRGF0YWJhc2VNYXAoKS5nZXQo
bV9ndWlkKTsKLSAgICAgICAgaWYgKCFoYXNoU2V0KSB7Ci0gICAgICAgICAgICBoYXNoU2V0ID0g
bmV3IEhhc2hTZXQ8QWJzdHJhY3REYXRhYmFzZSo+OwotICAgICAgICAgICAgZ3VpZFRvRGF0YWJh
c2VNYXAoKS5zZXQobV9ndWlkLCBoYXNoU2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGhhc2hT
ZXQtPmFkZCh0aGlzKTsKLSAgICB9Ci0KLSAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1cml0eU9yaWdpbigpLCBtX25hbWUp
OwotICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsK
LX0KLQotQWJzdHJhY3REYXRhYmFzZTo6fkFic3RyYWN0RGF0YWJhc2UoKQotewotICAgIEFTU0VS
VCghbV9vcGVuZWQpOwotfQotCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OmNsb3NlRGF0YWJhc2Uo
KQotewotICAgIGlmICghbV9vcGVuZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3FsaXRl
RGF0YWJhc2UuY2xvc2UoKTsKLSAgICBtX29wZW5lZCA9IGZhbHNlOwotICAgIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKLQotICAgICAgICBIYXNoU2V0PEFic3Ry
YWN0RGF0YWJhc2UqPiogaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuZ2V0KG1fZ3VpZCk7
Ci0gICAgICAgIEFTU0VSVChoYXNoU2V0KTsKLSAgICAgICAgQVNTRVJUKGhhc2hTZXQtPmNvbnRh
aW5zKHRoaXMpKTsKLSAgICAgICAgaGFzaFNldC0+cmVtb3ZlKHRoaXMpOwotICAgICAgICBpZiAo
aGFzaFNldC0+aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBndWlkVG9EYXRhYmFzZU1hcCgpLnJl
bW92ZShtX2d1aWQpOwotICAgICAgICAgICAgZGVsZXRlIGhhc2hTZXQ7Ci0gICAgICAgICAgICBn
dWlkVG9WZXJzaW9uTWFwKCkucmVtb3ZlKG1fZ3VpZCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LVN0cmluZyBBYnN0cmFjdERhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKLXsKLSAgICAvLyBOb3Rl
OiBJbiBtdWx0aS1wcm9jZXNzIGJyb3dzZXJzIHRoZSBjYWNoZWQgdmFsdWUgbWF5IGJlIGFjY3Vy
YXRlLCBidXQgd2UgY2Fubm90IHJlYWQgdGhlCi0gICAgLy8gYWN0dWFsIHZlcnNpb24gZnJvbSB0
aGUgZGF0YWJhc2Ugd2l0aG91dCBwb3RlbnRpYWxseSBpbmR1Y2luZyBhIGRlYWRsb2NrLgotICAg
IC8vIEZJWE1FOiBBZGQgYW4gYXN5bmMgdmVyc2lvbiBnZXR0ZXIgdG8gdGhlIERhdGFiYXNlQVBJ
LgotICAgIHJldHVybiBnZXRDYWNoZWRWZXJzaW9uKCk7Ci19Ci0KLWJvb2wgQWJzdHJhY3REYXRh
YmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRh
YmFzZSwgRXhjZXB0aW9uQ29kZSYgZWMsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIEFT
U0VSVChlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKTsKLQotICAgIGNvbnN0IGludCBtYXhTcWxpdGVC
dXN5V2FpdFRpbWUgPSAzMDAwMDsKLQotICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5vcGVuKG1f
ZmlsZW5hbWUsIHRydWUpKSB7Ci0gICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCgxLCBJ
TlZBTElEX1NUQVRFX0VSUiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSk7Ci0gICAgICAg
IGVycm9yTWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJh
c2UiLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudHVybk9uSW5jcmVt
ZW50YWxBdXRvVmFjdXVtKCkpCi0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHR1cm4gb24g
aW5jcmVtZW50YWwgYXV0by12YWN1dW0gKCVkICVzKSIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVy
cm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotCi0gICAgbV9zcWxpdGVE
YXRhYmFzZS5zZXRCdXN5VGltZW91dChtYXhTcWxpdGVCdXN5V2FpdFRpbWUpOwotCi0gICAgU3Ry
aW5nIGN1cnJlbnRWZXJzaW9uOwotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGd1
aWRNdXRleCgpKTsKLQotICAgICAgICBHdWlkVmVyc2lvbk1hcDo6aXRlcmF0b3IgZW50cnkgPSBn
dWlkVG9WZXJzaW9uTWFwKCkuZmluZChtX2d1aWQpOwotICAgICAgICBpZiAoZW50cnkgIT0gZ3Vp
ZFRvVmVyc2lvbk1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICAvLyBNYXAgbnVsbCBzdHJpbmcg
dG8gZW1wdHkgc3RyaW5nIChzZWUgdXBkYXRlR3VpZFZlcnNpb25NYXAoKSkuCi0gICAgICAgICAg
ICBjdXJyZW50VmVyc2lvbiA9IGVudHJ5LT52YWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkg
OiBlbnRyeS0+dmFsdWUuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgICAgICBMT0coU3RvcmFnZUFQ
SSwgIkN1cnJlbnQgY2FjaGVkIHZlcnNpb24gZm9yIGd1aWQgJWkgaXMgJXMiLCBtX2d1aWQsIGN1
cnJlbnRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpKTsKLQotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQot
ICAgICAgICAgICAgLy8gTm90ZTogSW4gbXVsdGktcHJvY2VzcyBicm93c2VycyB0aGUgY2FjaGVk
IHZhbHVlIG1heSBiZSBpbmFjY3VyYXRlLCBidXQKLSAgICAgICAgICAgIC8vIHdlIGNhbm5vdCBy
ZWFkIHRoZSBhY3R1YWwgdmVyc2lvbiBmcm9tIHRoZSBkYXRhYmFzZSB3aXRob3V0IHBvdGVudGlh
bGx5Ci0gICAgICAgICAgICAvLyBpbmR1Y2luZyBhIGZvcm0gb2YgZGVhZGxvY2ssIGEgYnVzeXRp
bWVvdXQgZXJyb3Igd2hlbiB0cnlpbmcgdG8KLSAgICAgICAgICAgIC8vIGFjY2VzcyB0aGUgZGF0
YWJhc2UuIFNvIHdlJ2xsIHVzZSB0aGUgY2FjaGVkIHZhbHVlIGlmIHdlJ3JlIHVuYWJsZSB0byBy
ZWFkCi0gICAgICAgICAgICAvLyB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgZmlsZSB3aXRo
b3V0IHdhaXRpbmcuCi0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIGFuIGFzeW5jIG9wZW5EYXRh
YmFzZSBtZXRob2QgdG8gdGhlIERhdGFiYXNlQVBJLgotICAgICAgICAgICAgY29uc3QgaW50IG5v
U3FsaXRlQnVzeVdhaXRUaW1lID0gMDsKLSAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2Uuc2V0
QnVzeVRpbWVvdXQobm9TcWxpdGVCdXN5V2FpdFRpbWUpOwotICAgICAgICAgICAgU3RyaW5nIHZl
cnNpb25Gcm9tRGF0YWJhc2U7Ci0gICAgICAgICAgICBpZiAoZ2V0VmVyc2lvbkZyb21EYXRhYmFz
ZSh2ZXJzaW9uRnJvbURhdGFiYXNlLCBmYWxzZSkpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50
VmVyc2lvbiA9IHZlcnNpb25Gcm9tRGF0YWJhc2U7Ci0gICAgICAgICAgICAgICAgdXBkYXRlR3Vp
ZFZlcnNpb25NYXAobV9ndWlkLCBjdXJyZW50VmVyc2lvbik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLnNldEJ1c3lUaW1lb3V0KG1heFNxbGl0ZUJ1c3lXYWl0
VGltZSk7Ci0jZW5kaWYKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExPRyhTdG9yYWdl
QVBJLCAiTm8gY2FjaGVkIHZlcnNpb24gZm9yIGd1aWQgJWkiLCBtX2d1aWQpOwotCi0gICAgICAg
ICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihtX3NxbGl0ZURhdGFiYXNlKTsKLSAg
ICAgICAgICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7Ci0gICAgICAgICAgICBpZiAoIXRyYW5zYWN0
aW9uLmluUHJvZ3Jlc3MoKSkgewotICAgICAgICAgICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJl
c3VsdCgyLCBJTlZBTElEX1NUQVRFX0VSUiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSk7
Ci0gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFi
bGUgdG8gb3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIHN0YXJ0IHRyYW5zYWN0aW9uIiwgbV9zcWxp
dGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
Ci0gICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAgICAg
ICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBTdHJpbmcgdGFibGVOYW1lKGluZm9UYWJs
ZU5hbWUpOwotICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLnRhYmxlRXhpc3RzKHRh
YmxlTmFtZSkpIHsKLSAgICAgICAgICAgICAgICBtX25ldyA9IHRydWU7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSAi
ICsgdGFibGVOYW1lICsgIiAoa2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklR
VUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwpOyIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCgz
LCBJTlZBTElEX1NUQVRFX0VSUiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxl
IHRvIG9wZW4gZGF0YWJhc2UsIGZhaWxlZCB0byBjcmVhdGUgJ2luZm8nIHRhYmxlIiwgbV9zcWxp
dGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAg
ICAgICAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
c3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIWdldFZlcnNpb25G
cm9tRGF0YWJhc2UoY3VycmVudFZlcnNpb24sIGZhbHNlKSkgewotICAgICAgICAgICAgICAgIHJl
cG9ydE9wZW5EYXRhYmFzZVJlc3VsdCg0LCBJTlZBTElEX1NUQVRFX0VSUiwgbV9zcWxpdGVEYXRh
YmFzZS5sYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0
RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIHJlYWQgY3Vy
cmVudCB2ZXJzaW9uIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKLSAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOwotICAgICAgICAg
ICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjdXJyZW50VmVyc2lvbi5s
ZW5ndGgoKSkgewotICAgICAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiUmV0cmlldmVkIGN1
cnJlbnQgdmVyc2lvbiAlcyBmcm9tIGRhdGFiYXNlICVzIiwgY3VycmVudFZlcnNpb24uYXNjaWko
KS5kYXRhKCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmICghbV9uZXcgfHwgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpIHsK
LSAgICAgICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNldHRpbmcgdmVyc2lvbiAlcyBpbiBk
YXRhYmFzZSAlcyB0aGF0IHdhcyBqdXN0IGNyZWF0ZWQiLCBtX2V4cGVjdGVkVmVyc2lvbi5hc2Np
aSgpLmRhdGEoKSwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFzZXRWZXJzaW9uSW5EYXRhYmFzZShtX2V4cGVjdGVkVmVyc2lvbiwgZmFs
c2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCg1LCBJ
TlZBTElEX1NUQVRFX0VSUiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRv
IG9wZW4gZGF0YWJhc2UsIGZhaWxlZCB0byB3cml0ZSBjdXJyZW50IHZlcnNpb24iLCBtX3NxbGl0
ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
LSAgICAgICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAg
ICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKLSAgICAgICAgICAgICAgICAgICAgbV9z
cWxpdGVEYXRhYmFzZS5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gbV9l
eHBlY3RlZFZlcnNpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1cGRhdGVHdWlkVmVy
c2lvbk1hcChtX2d1aWQsIGN1cnJlbnRWZXJzaW9uKTsKLSAgICAgICAgICAgIHRyYW5zYWN0aW9u
LmNvbW1pdCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGN1cnJlbnRWZXJzaW9uLmlz
TnVsbCgpKSB7Ci0gICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMgZG9lcyBub3Qg
aGF2ZSBpdHMgdmVyc2lvbiBzZXQiLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgp
KTsKLSAgICAgICAgY3VycmVudFZlcnNpb24gPSAiIjsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUg
ZXhwZWN0ZWQgdmVyc2lvbiBpc24ndCB0aGUgZW1wdHkgc3RyaW5nLCBlbnN1cmUgdGhhdCB0aGUg
Y3VycmVudCBkYXRhYmFzZSB2ZXJzaW9uIHdlIGhhdmUgbWF0Y2hlcyB0aGF0IHZlcnNpb24uIE90
aGVyd2lzZSwgc2V0IGFuIGV4Y2VwdGlvbi4KLSAgICAvLyBJZiB0aGUgZXhwZWN0ZWQgdmVyc2lv
biBpcyB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIHdlIGFsd2F5cyByZXR1cm4gd2l0aCB3aGF0ZXZl
ciB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSB3ZSBoYXZlLgotICAgIGlmICgoIW1fbmV3IHx8IHNo
b3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKSAmJiBtX2V4cGVjdGVkVmVyc2lvbi5sZW5ndGgo
KSAmJiBtX2V4cGVjdGVkVmVyc2lvbiAhPSBjdXJyZW50VmVyc2lvbikgewotICAgICAgICByZXBv
cnRPcGVuRGF0YWJhc2VSZXN1bHQoNiwgSU5WQUxJRF9TVEFURV9FUlIsIDApOwotICAgICAgICBl
cnJvck1lc3NhZ2UgPSAidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIHZlcnNpb24gbWlzbWF0Y2gs
ICciICsgbV9leHBlY3RlZFZlcnNpb24gKyAiJyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudFZl
cnNpb24gb2YgJyIgKyBjdXJyZW50VmVyc2lvbiArICInIjsKLSAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKLSAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRob3JpemVyKTsK
LSAgICBtX3NxbGl0ZURhdGFiYXNlLnNldEF1dGhvcml6ZXIobV9kYXRhYmFzZUF1dGhvcml6ZXIp
OwotCi0gICAgbV9vcGVuZWQgPSB0cnVlOwotCi0gICAgaWYgKG1fbmV3ICYmICFzaG91bGRTZXRW
ZXJzaW9uSW5OZXdEYXRhYmFzZSkKLSAgICAgICAgbV9leHBlY3RlZFZlcnNpb24gPSAiIjsgLy8g
VGhlIGNhbGxlciBwcm92aWRlZCBhIGNyZWF0aW9uQ2FsbGJhY2sgd2hpY2ggd2lsbCBzZXQgdGhl
IGV4cGVjdGVkIHZlcnNpb24uCi0KLSAgICByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoMCwgLTEs
IDApOyAvLyBPSwotICAgIHJldHVybiB0cnVlOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBBYnN0cmFjdERhdGFiYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOwotfQotCi1TZWN1cml0eU9y
aWdpbiogQWJzdHJhY3REYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAotewotICAgIHJl
dHVybiBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQoKTsKLX0KLQotU3RyaW5nIEFi
c3RyYWN0RGF0YWJhc2U6OnN0cmluZ0lkZW50aWZpZXIoKSBjb25zdAotewotICAgIC8vIFJldHVy
biBhIGRlZXAgY29weSBmb3IgcmVmIGNvdW50aW5nIHRocmVhZCBzYWZldHkKLSAgICByZXR1cm4g
bV9uYW1lLmlzb2xhdGVkQ29weSgpOwotfQotCi1TdHJpbmcgQWJzdHJhY3REYXRhYmFzZTo6ZGlz
cGxheU5hbWUoKSBjb25zdAotewotICAgIC8vIFJldHVybiBhIGRlZXAgY29weSBmb3IgcmVmIGNv
dW50aW5nIHRocmVhZCBzYWZldHkKLSAgICByZXR1cm4gbV9kaXNwbGF5TmFtZS5pc29sYXRlZENv
cHkoKTsKLX0KLQotdW5zaWduZWQgbG9uZyBBYnN0cmFjdERhdGFiYXNlOjplc3RpbWF0ZWRTaXpl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lc3RpbWF0ZWRTaXplOwotfQotCi1TdHJpbmcgQWJz
dHJhY3REYXRhYmFzZTo6ZmlsZU5hbWUoKSBjb25zdAotewotICAgIC8vIFJldHVybiBhIGRlZXAg
Y29weSBmb3IgcmVmIGNvdW50aW5nIHRocmVhZCBzYWZldHkKLSAgICByZXR1cm4gbV9maWxlbmFt
ZS5pc29sYXRlZENvcHkoKTsKLX0KLQotRGF0YWJhc2VEZXRhaWxzIEFic3RyYWN0RGF0YWJhc2U6
OmRldGFpbHMoKSBjb25zdAotewotICAgIHJldHVybiBEYXRhYmFzZURldGFpbHMoc3RyaW5nSWRl
bnRpZmllcigpLCBkaXNwbGF5TmFtZSgpLCBlc3RpbWF0ZWRTaXplKCksIDApOwotfQotCi1ib29s
IEFic3RyYWN0RGF0YWJhc2U6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UoU3RyaW5nJiB2ZXJzaW9u
LCBib29sIHNob3VsZENhY2hlVmVyc2lvbikKLXsKLSAgICBTdHJpbmcgcXVlcnkoU3RyaW5nKCJT
RUxFQ1QgdmFsdWUgRlJPTSAiKSArIGluZm9UYWJsZU5hbWUgKyAgIiBXSEVSRSBrZXkgPSAnIiAr
IHZlcnNpb25LZXkgKyAiJzsiKTsKLQotICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxl
KCk7Ci0KLSAgICBib29sIHJlc3VsdCA9IHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZSht
X3NxbGl0ZURhdGFiYXNlLCBxdWVyeSwgdmVyc2lvbik7Ci0gICAgaWYgKHJlc3VsdCkgewotICAg
ICAgICBpZiAoc2hvdWxkQ2FjaGVWZXJzaW9uKQotICAgICAgICAgICAgc2V0Q2FjaGVkVmVyc2lv
bih2ZXJzaW9uKTsKLSAgICB9IGVsc2UKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0
cmlldmUgdmVyc2lvbiBmcm9tIGRhdGFiYXNlICVzIiwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2Np
aSgpLmRhdGEoKSk7Ci0KLSAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+ZW5hYmxlKCk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIEFic3RyYWN0RGF0YWJhc2U6OnNldFZlcnNpb25J
bkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgYm9vbCBzaG91bGRDYWNoZVZlcnNpb24p
Ci17Ci0gICAgLy8gVGhlIElOU0VSVCB3aWxsIHJlcGxhY2UgYW4gZXhpc3RpbmcgZW50cnkgZm9y
IHRoZSBkYXRhYmFzZSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBudW1iZXIsIGR1ZSB0byB0aGUgVU5J
UVVFIE9OIENPTkZMSUNUIFJFUExBQ0UKLSAgICAvLyBjbGF1c2UgaW4gdGhlIENSRUFURSBzdGF0
ZW1lbnQgKHNlZSBEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoKSkuCi0gICAgU3RyaW5n
IHF1ZXJ5KFN0cmluZygiSU5TRVJUIElOVE8gIikgKyBpbmZvVGFibGVOYW1lICsgICIgKGtleSwg
dmFsdWUpIFZBTFVFUyAoJyIgKyB2ZXJzaW9uS2V5ICsgIicsID8pOyIpOwotCi0gICAgbV9kYXRh
YmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKLQotICAgIGJvb2wgcmVzdWx0ID0gc2V0VGV4dFZh
bHVlSW5EYXRhYmFzZShtX3NxbGl0ZURhdGFiYXNlLCBxdWVyeSwgdmVyc2lvbik7Ci0gICAgaWYg
KHJlc3VsdCkgewotICAgICAgICBpZiAoc2hvdWxkQ2FjaGVWZXJzaW9uKQotICAgICAgICAgICAg
c2V0Q2FjaGVkVmVyc2lvbih2ZXJzaW9uKTsKLSAgICB9IGVsc2UKLSAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gc2V0IHZlcnNpb24gJXMgaW4gZGF0YWJhc2UgKCVzKSIsIHZlcnNpb24uYXNj
aWkoKS5kYXRhKCksIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKLQotICAgIG1fZGF0YWJhc2VBdXRo
b3JpemVyLT5lbmFibGUoKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgQWJzdHJh
Y3REYXRhYmFzZTo6c2V0RXhwZWN0ZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKLXsK
LSAgICBtX2V4cGVjdGVkVmVyc2lvbiA9IHZlcnNpb24uaXNvbGF0ZWRDb3B5KCk7Ci19Ci0KLVN0
cmluZyBBYnN0cmFjdERhdGFiYXNlOjpnZXRDYWNoZWRWZXJzaW9uKCkgY29uc3QKLXsKLSAgICBN
dXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwotICAgIHJldHVybiBndWlkVG9WZXJzaW9u
TWFwKCkuZ2V0KG1fZ3VpZCkuaXNvbGF0ZWRDb3B5KCk7Ci19Ci0KLXZvaWQgQWJzdHJhY3REYXRh
YmFzZTo6c2V0Q2FjaGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIGFjdHVhbFZlcnNpb24pCi17Ci0g
ICAgLy8gVXBkYXRlIHRoZSBpbiBtZW1vcnkgZGF0YWJhc2UgdmVyc2lvbiBtYXAuCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKLSAgICB1cGRhdGVHdWlkVmVyc2lvbk1hcCht
X2d1aWQsIGFjdHVhbFZlcnNpb24pOwotfQotCi1ib29sIEFic3RyYWN0RGF0YWJhc2U6OmdldEFj
dHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJpbmcgJmFjdHVhbFZlcnNpb24pCi17Ci0gICAg
QVNTRVJUKG1fc3FsaXRlRGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwotI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQotICAgIC8vIE5vdGU6IEluIG11bHRpLXByb2Nlc3MgYnJvd3NlcnMg
dGhlIGNhY2hlZCB2YWx1ZSBtYXkgYmUgaW5hY2N1cmF0ZS4KLSAgICAvLyBTbyB3ZSByZXRyaWV2
ZSB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHVwZGF0ZSB0aGUgY2FjaGVkIHZhbHVl
IGhlcmUuCi0gICAgcmV0dXJuIGdldFZlcnNpb25Gcm9tRGF0YWJhc2UoYWN0dWFsVmVyc2lvbiwg
dHJ1ZSk7Ci0jZWxzZQotICAgIGFjdHVhbFZlcnNpb24gPSBnZXRDYWNoZWRWZXJzaW9uKCk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLX0KLQotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpkaXNh
YmxlQXV0aG9yaXplcigpCi17Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRob3JpemVyKTsKLSAg
ICBtX2RhdGFiYXNlQXV0aG9yaXplci0+ZGlzYWJsZSgpOwotfQotCi12b2lkIEFic3RyYWN0RGF0
YWJhc2U6OmVuYWJsZUF1dGhvcml6ZXIoKQotewotICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9y
aXplcik7Ci0gICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmVuYWJsZSgpOwotfQotCi12b2lkIEFi
c3RyYWN0RGF0YWJhc2U6OnNldEF1dGhvcml6ZXJSZWFkT25seSgpCi17Ci0gICAgQVNTRVJUKG1f
ZGF0YWJhc2VBdXRob3JpemVyKTsKLSAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+c2V0UmVhZE9u
bHkoKTsKLX0KLQotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpzZXRBdXRob3JpemVyUGVybWlzc2lv
bnMoaW50IHBlcm1pc3Npb25zKQotewotICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7
Ci0gICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPnNldFBlcm1pc3Npb25zKHBlcm1pc3Npb25zKTsK
LX0KLQotYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpsYXN0QWN0aW9uQ2hhbmdlZERhdGFiYXNlKCkK
LXsKLSAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwotICAgIHJldHVybiBtX2RhdGFi
YXNlQXV0aG9yaXplci0+bGFzdEFjdGlvbkNoYW5nZWREYXRhYmFzZSgpOwotfQotCi1ib29sIEFi
c3RyYWN0RGF0YWJhc2U6Omxhc3RBY3Rpb25XYXNJbnNlcnQoKQotewotICAgIEFTU0VSVChtX2Rh
dGFiYXNlQXV0aG9yaXplcik7Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2VBdXRob3JpemVyLT5sYXN0
QWN0aW9uV2FzSW5zZXJ0KCk7Ci19Ci0KLXZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVzZXREZWxl
dGVzKCkKLXsKLSAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwotICAgIG1fZGF0YWJh
c2VBdXRob3JpemVyLT5yZXNldERlbGV0ZXMoKTsKLX0KLQotYm9vbCBBYnN0cmFjdERhdGFiYXNl
OjpoYWREZWxldGVzKCkKLXsKLSAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwotICAg
IHJldHVybiBtX2RhdGFiYXNlQXV0aG9yaXplci0+aGFkRGVsZXRlcygpOwotfQotCi12b2lkIEFi
c3RyYWN0RGF0YWJhc2U6OnJlc2V0QXV0aG9yaXplcigpCi17Ci0gICAgaWYgKG1fZGF0YWJhc2VB
dXRob3JpemVyKQotICAgICAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+cmVzZXQoKTsKLX0KLQot
dW5zaWduZWQgbG9uZyBsb25nIEFic3RyYWN0RGF0YWJhc2U6Om1heGltdW1TaXplKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZ2V0TWF4U2l6ZUZvckRh
dGFiYXNlKHRoaXMpOwotfQotCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OmluY3JlbWVudGFsVmFj
dXVtSWZOZWVkZWQoKQotewotICAgIGludDY0X3QgZnJlZVNwYWNlU2l6ZSA9IG1fc3FsaXRlRGF0
YWJhc2UuZnJlZVNwYWNlU2l6ZSgpOwotICAgIGludDY0X3QgdG90YWxTaXplID0gbV9zcWxpdGVE
YXRhYmFzZS50b3RhbFNpemUoKTsKLSAgICBpZiAodG90YWxTaXplIDw9IDEwICogZnJlZVNwYWNl
U2l6ZSkgewotICAgICAgICBpbnQgcmVzdWx0ID0gbV9zcWxpdGVEYXRhYmFzZS5ydW5JbmNyZW1l
bnRhbFZhY3V1bUNvbW1hbmQoKTsKLSAgICAgICAgcmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQo
cmVzdWx0KTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRPaykKLSAgICAgICAgICAg
IGxvZ0Vycm9yTWVzc2FnZShmb3JtYXRFcnJvck1lc3NhZ2UoImVycm9yIHZhY3V1bWluZyBkYXRh
YmFzZSIsIHJlc3VsdCwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSkpOwotICAgIH0K
LX0KLQotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjppbnRlcnJ1cHQoKQotewotICAgIG1fc3FsaXRl
RGF0YWJhc2UuaW50ZXJydXB0KCk7Ci19Ci0KLWJvb2wgQWJzdHJhY3REYXRhYmFzZTo6aXNJbnRl
cnJ1cHRlZCgpCi17Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3FsaXRlRGF0YWJhc2UuZGF0
YWJhc2VNdXRleCgpKTsKLSAgICByZXR1cm4gbV9zcWxpdGVEYXRhYmFzZS5pc0ludGVycnVwdGVk
KCk7Ci19Ci0KLXZvaWQgQWJzdHJhY3REYXRhYmFzZTo6bG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNv
bGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2Up
OwotfQotCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0vLyBUaGVzZSBhcmUgdXNlZCB0byBnZW5l
cmF0ZSBoaXN0b2dyYW1zIG9mIGVycm9ycyBzZWVuIHdpdGggd2Vic3FsLgotLy8gU2VlIGFib3V0
Omhpc3RvZ3JhbXMgaW4gY2hyb21pdW0uCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydE9w
ZW5EYXRhYmFzZVJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQg
c3FsaXRlRXJyb3JDb2RlKQotewotICAgIERhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydE9wZW5EYXRh
YmFzZVJlc3VsdCh0aGlzLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JD
b2RlKTsKLX0KLQotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRDaGFuZ2VWZXJzaW9uUmVz
dWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNv
ZGUpCi17Ci0gICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCh0
aGlzLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKLX0KLQot
dm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGludCBl
cnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCi17Ci0g
ICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCh0aGlzLCBl
cnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKLX0KLQotdm9pZCBB
YnN0cmFjdERhdGFiYXNlOjpyZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdChpbnQgZXJyb3JT
aXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQotewotICAgIERh
dGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KHRoaXMsIGVycm9y
U2l0ZSwgd2ViU3FsRXJyb3JDb2RlLCBzcWxpdGVFcnJvckNvZGUpOwotfQotCi12b2lkIEFic3Ry
YWN0RGF0YWJhc2U6OnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoaW50IGVycm9yU2l0ZSwg
aW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKLXsKLSAgICBEYXRhYmFz
ZU9ic2VydmVyOjpyZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KHRoaXMsIGVycm9yU2l0ZSwg
d2ViU3FsRXJyb3JDb2RlLCBzcWxpdGVFcnJvckNvZGUpOwotfQotCi12b2lkIEFic3RyYWN0RGF0
YWJhc2U6OnJlcG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0KGludCBzcWxpdGVFcnJvckNvZGUpCi17
Ci0gICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQodGhpcywg
c3FsaXRlRXJyb3JDb2RlKTsKLX0KLQotI2Vsc2UKLXZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVw
b3J0T3BlbkRhdGFiYXNlUmVzdWx0KGludCwgaW50LCBpbnQpIHsgfQotdm9pZCBBYnN0cmFjdERh
dGFiYXNlOjpyZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KGludCwgaW50LCBpbnQpIHsgfQotdm9p
ZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGludCwgaW50
LCBpbnQpIHsgfQotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRDb21taXRUcmFuc2FjdGlv
blJlc3VsdChpbnQsIGludCwgaW50KSB7IH0KLXZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0
RXhlY3V0ZVN0YXRlbWVudFJlc3VsdChpbnQsIGludCwgaW50KSB7IH0KLXZvaWQgQWJzdHJhY3RE
YXRhYmFzZTo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoaW50KSB7IH0KLSNlbmRpZiAvLyBQ
TEFURk9STShDSFJPTUlVTSkKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oCShyZXZpc2lvbiAxNDExODcpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMSwxNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQWJzdHJhY3REYXRhYmFz
ZV9oCi0jZGVmaW5lIEFic3RyYWN0RGF0YWJhc2VfaAotCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLQotI2luY2x1ZGUgIkRhdGFiYXNlQmFzaWNUeXBlcy5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
RGV0YWlscy5oIgotI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCi0jaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiAh
TE9HX0RJU0FCTEVEIHx8ICFFUlJPUl9ESVNBQkxFRAotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEYXRhYmFzZUF1dGhv
cml6ZXI7Ci1jbGFzcyBEYXRhYmFzZUNvbnRleHQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KLWNsYXNzIEFic3RyYWN0RGF0YWJhc2UgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJhY3REYXRhYmFzZT4gewotcHVibGljOgot
ICAgIHZpcnR1YWwgfkFic3RyYWN0RGF0YWJhc2UoKTsKLQotICAgIHZpcnR1YWwgU3RyaW5nIHZl
cnNpb24oKSBjb25zdDsKLQotICAgIGJvb2wgb3BlbmVkKCkgY29uc3QgeyByZXR1cm4gbV9vcGVu
ZWQ7IH0KLSAgICBib29sIGlzTmV3KCkgY29uc3QgeyByZXR1cm4gbV9uZXc7IH0KLSAgICBib29s
IGlzU3luY0RhdGFiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N5bmNEYXRhYmFzZTsgfQotCi0g
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBTdHJpbmcgZGlzcGxheU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVOYW1l
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBEYXRhYmFzZURldGFpbHMgZGV0YWlscygpIGNvbnN0Owot
ICAgIFNRTGl0ZURhdGFiYXNlJiBzcWxpdGVEYXRhYmFzZSgpIHsgcmV0dXJuIG1fc3FsaXRlRGF0
YWJhc2U7IH0KLQotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhpbXVtU2l6ZSgpIGNvbnN0Owot
ICAgIHZvaWQgaW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpOwotICAgIHZvaWQgaW50ZXJydXB0
KCk7Ci0gICAgYm9vbCBpc0ludGVycnVwdGVkKCk7Ci0KLSAgICB2b2lkIGRpc2FibGVBdXRob3Jp
emVyKCk7Ci0gICAgdm9pZCBlbmFibGVBdXRob3JpemVyKCk7Ci0gICAgdm9pZCBzZXRBdXRob3Jp
emVyUmVhZE9ubHkoKTsKLSAgICB2b2lkIHNldEF1dGhvcml6ZXJQZXJtaXNzaW9ucyhpbnQgcGVy
bWlzc2lvbnMpOwotICAgIGJvb2wgbGFzdEFjdGlvbkNoYW5nZWREYXRhYmFzZSgpOwotICAgIGJv
b2wgbGFzdEFjdGlvbldhc0luc2VydCgpOwotICAgIHZvaWQgcmVzZXREZWxldGVzKCk7Ci0gICAg
Ym9vbCBoYWREZWxldGVzKCk7Ci0gICAgdm9pZCByZXNldEF1dGhvcml6ZXIoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBtYXJrQXNEZWxldGVkQW5kQ2xvc2UoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlSW1tZWRpYXRlbHkoKSA9IDA7Ci0KLSAgICBEYXRhYmFzZUNvbnRleHQqIGRhdGFiYXNl
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VDb250ZXh0LmdldCgpOyB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBmcmllbmQgY2xhc3MgQ2hhbmdlVmVyc2lvbldyYXBwZXI7Ci0gICAgZnJp
ZW5kIGNsYXNzIFNRTFN0YXRlbWVudDsKLSAgICBmcmllbmQgY2xhc3MgU1FMU3RhdGVtZW50U3lu
YzsKLSAgICBmcmllbmQgY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jOwotICAgIGZyaWVuZCBjbGFz
cyBTUUxUcmFuc2FjdGlvbjsKLQotICAgIGVudW0gRGF0YWJhc2VUeXBlIHsKLSAgICAgICAgQXN5
bmNEYXRhYmFzZSwKLSAgICAgICAgU3luY0RhdGFiYXNlCi0gICAgfTsKLQotICAgIEFic3RyYWN0
RGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRh
YmFzZVR5cGUpOwotCi0gICAgdm9pZCBjbG9zZURhdGFiYXNlKCk7Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgcGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYmFz
ZSwgRXhjZXB0aW9uQ29kZSYsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLQotICAgIGJvb2wgZ2V0
VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24sIGJvb2wgc2hvdWxkQ2FjaGVWZXJz
aW9uID0gdHJ1ZSk7Ci0gICAgYm9vbCBzZXRWZXJzaW9uSW5EYXRhYmFzZShjb25zdCBTdHJpbmcm
IHZlcnNpb24sIGJvb2wgc2hvdWxkQ2FjaGVWZXJzaW9uID0gdHJ1ZSk7Ci0gICAgdm9pZCBzZXRF
eHBlY3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3QgU3RyaW5nJiBleHBlY3Rl
ZFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkVmVyc2lvbjsgfQotICAgIFN0cmlu
ZyBnZXRDYWNoZWRWZXJzaW9uKCljb25zdDsKLSAgICB2b2lkIHNldENhY2hlZFZlcnNpb24oY29u
c3QgU3RyaW5nJik7Ci0gICAgYm9vbCBnZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oU3Ry
aW5nJiB2ZXJzaW9uKTsKLQotICAgIHZvaWQgbG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7Ci0KLSAgICB2b2lkIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdChpbnQgZXJyb3JT
aXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKLSAgICB2b2lk
IHJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9y
Q29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7Ci0gICAgdm9pZCByZXBvcnRTdGFydFRyYW5zYWN0
aW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVF
cnJvckNvZGUpOwotICAgIHZvaWQgcmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoaW50IGVy
cm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7Ci0gICAg
dm9pZCByZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJT
cWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOwotICAgIHZvaWQgcmVwb3J0VmFjdXVt
RGF0YWJhc2VSZXN1bHQoaW50IHNxbGl0ZUVycm9yQ29kZSk7Ci0KLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGF0YWJhc2VJbmZvVGFibGVOYW1lKCk7Ci0KLSAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luOwotICAgIFJlZlB0cjxEYXRhYmFzZUNv
bnRleHQ+IG1fZGF0YWJhc2VDb250ZXh0OyAvLyBBc3NvY2lhdGVkIHdpdGggbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LgotICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFN0cmluZyBtX2V4
cGVjdGVkVmVyc2lvbjsKLSAgICBTdHJpbmcgbV9kaXNwbGF5TmFtZTsKLSAgICB1bnNpZ25lZCBs
b25nIG1fZXN0aW1hdGVkU2l6ZTsKLSAgICBTdHJpbmcgbV9maWxlbmFtZTsKLQotI2lmICFMT0df
RElTQUJMRUQgfHwgIUVSUk9SX0RJU0FCTEVECi0gICAgU3RyaW5nIGRhdGFiYXNlRGVidWdOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5n
KCkgKyAiOjoiICsgbV9uYW1lOyB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBEYXRhYmFzZUd1
aWQgbV9ndWlkOwotICAgIGJvb2wgbV9vcGVuZWQ7Ci0gICAgYm9vbCBtX25ldzsKLSAgICBjb25z
dCBib29sIG1faXNTeW5jRGF0YWJhc2U7Ci0KLSAgICBTUUxpdGVEYXRhYmFzZSBtX3NxbGl0ZURh
dGFiYXNlOwotCi0gICAgUmVmUHRyPERhdGFiYXNlQXV0aG9yaXplcj4gbV9kYXRhYmFzZUF1dGhv
cml6ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotCi0jZW5kaWYgLy8gQWJzdHJhY3REYXRhYmFzZV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0
RGF0YWJhc2VTZXJ2ZXIuaAkocmV2aXNpb24gMTQxMTg3KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBYnN0cmFj
dERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VCYWNrZW5kOwogY2xhc3MgRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGcm9tIGEgc2Vjb25kYXJ5
IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCiAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0
cmFjdERhdGFiYXNlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUNoYW5nZWQoRGF0
YWJhc2VCYWNrZW5kKikgPSAwOwogCiAjZWxzZSAvLyBQTEFURk9STShDSFJPTUlVTSkKICAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwpAQCAtNzYsMTEgKzc2LDExIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4
dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgPSAwOwogCiAgICAgdmlydHVhbCBib29s
IGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3RE
YXRhYmFzZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT3BlbkRhdGFiYXNlKEFic3Ry
YWN0RGF0YWJhc2UqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE9wZW5EYXRhYmFzZShEYXRh
YmFzZUJhY2tlbmQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShE
YXRhYmFzZUJhY2tlbmQqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEZXRh
aWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpID0gMDsKLSAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3RE
YXRhYmFzZSopID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXpl
Rm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgQWJzdHJhY3REYXRhYmFzZVNlcnZlcigpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmNwcAkocmV2aXNp
b24gMTQxMTg3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tl
bmRTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBTZXJ2
ZXI6OnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZwogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKG9yaWdpbiwgbmFtZSk7CiB9CiAK
LXZvaWQgU2VydmVyOjpkYXRhYmFzZUNoYW5nZWQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2Up
Cit2b2lkIFNlcnZlcjo6ZGF0YWJhc2VDaGFuZ2VkKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2Up
CiB7CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VDaGFuZ2VkKGRhdGFi
YXNlKTsKIH0KQEAgLTE1MiwxMiArMTUyLDEyIEBAIGJvb2wgU2VydmVyOjpjYW5Fc3RhYmxpc2hE
YXRhYmFzZShTY3JpcHQKICAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2Fu
RXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUpOwogfQogCi12b2lkIFNlcnZlcjo6YWRkT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2Uq
IGRhdGFiYXNlKQordm9pZCBTZXJ2ZXI6OmFkZE9wZW5EYXRhYmFzZShEYXRhYmFzZUJhY2tlbmQq
IGRhdGFiYXNlKQogewogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFkZE9wZW5EYXRh
YmFzZShkYXRhYmFzZSk7CiB9CiAKLXZvaWQgU2VydmVyOjpyZW1vdmVPcGVuRGF0YWJhc2UoQWJz
dHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit2b2lkIFNlcnZlcjo6cmVtb3ZlT3BlbkRhdGFiYXNl
KERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiB7CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlKTsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBA
QCB2b2lkIFNlcnZlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5CiAgICAgRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEZXRhaWxzKG9yaWdpbiwgbmFtZSwgZGlzcGxh
eU5hbWUsIGVzdGltYXRlZFNpemUpOwogfQogCi11bnNpZ25lZCBsb25nIGxvbmcgU2VydmVyOjpn
ZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit1
bnNpZ25lZCBsb25nIGxvbmcgU2VydmVyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0
YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKICAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIu
aAkocmV2aXNpb24gMTQxMTg3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EQkJhY2tlbmRTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBGcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2Fm
ZSB3aXRoIGl0cyBkYXRhCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlTm90aWZ5RGF0YWJhc2VD
aGFuZ2VkKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGF0YWJhc2VDaGFuZ2VkKERhdGFiYXNlQmFja2VuZCopOwogCiAjZWxzZSAvLyBQTEFURk9S
TShDSFJPTUlVTSkKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC03
MiwxMSArNzIsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRh
YmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUpOwotICAgIHZpcnR1YWwgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJz
dHJhY3REYXRhYmFzZSopOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPcGVuRGF0YWJhc2UoQWJz
dHJhY3REYXRhYmFzZSopOworICAgIHZpcnR1YWwgdm9pZCBhZGRPcGVuRGF0YWJhc2UoRGF0YWJh
c2VCYWNrZW5kKik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFz
ZUJhY2tlbmQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBsb25n
IGxvbmcgZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IEFic3RyYWN0RGF0YWJhc2UqKTsKKyAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3Qg
RGF0YWJhc2VCYWNrZW5kKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBEQkJhY2tlbmQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCShy
ZXZpc2lvbiAxNDExODcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBEYXRhYmFzZTo6RGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+
IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVj
dGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3Rp
bWF0ZWRTaXplKQotICAgIDogQWJzdHJhY3REYXRhYmFzZShkYXRhYmFzZUNvbnRleHQsIG5hbWUs
IGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIEFzeW5jRGF0YWJh
c2UpCisgICAgOiBEYXRhYmFzZUJhY2tlbmQoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3Rl
ZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBBc3luY0RhdGFiYXNlKQogICAg
ICwgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2lzVHJhbnNhY3Rpb25R
dWV1ZUVuYWJsZWQodHJ1ZSkKICAgICAsIG1fZGVsZXRlZChmYWxzZSkKQEAgLTExNyw3ICsxMTcs
NyBAQCBTdHJpbmcgRGF0YWJhc2U6OnZlcnNpb24oKSBjb25zdAogewogICAgIGlmIChtX2RlbGV0
ZWQpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gQWJzdHJhY3REYXRhYmFz
ZTo6dmVyc2lvbigpOworICAgIHJldHVybiBEYXRhYmFzZUJhY2tlbmQ6OnZlcnNpb24oKTsKIH0K
IAogYm9vbCBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5O
ZXdEYXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYgZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC0x
OTEsNyArMTkxLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZQog
CiBib29sIERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNldFZlcnNpb25Jbk5l
d0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJiBlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAg
ICBpZiAoQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoc2V0VmVyc2lvbklu
TmV3RGF0YWJhc2UsIGUsIGVycm9yTWVzc2FnZSkpIHsKKyAgICBpZiAoRGF0YWJhc2VCYWNrZW5k
OjpwZXJmb3JtT3BlbkFuZFZlcmlmeShzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgZSwgZXJyb3JN
ZXNzYWdlKSkgewogICAgICAgICBpZiAoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFk
KCkpCiAgICAgICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVj
b3JkRGF0YWJhc2VPcGVuKHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCShyZXZpc2lvbiAxNDExODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJBYnN0
cmFjdERhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VCYXNpY1R5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU1FMVHJhbnNhY3Rpb25FcnJv
ckNhbGxiYWNrOwogY2xhc3MgU1FMVHJhbnNhY3Rpb25XcmFwcGVyOwogY2xhc3MgVm9pZENhbGxi
YWNrOwogCi1jbGFzcyBEYXRhYmFzZSA6IHB1YmxpYyBBYnN0cmFjdERhdGFiYXNlIHsKK2NsYXNz
IERhdGFiYXNlIDogcHVibGljIERhdGFiYXNlQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+RGF0YWJhc2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMTQxMTg3KQkoZnJv
bSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3Bw
OjE0MTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VC
YWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisKKyNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTUUxp
dGVTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIkRhdGFiYXNlT2JzZXJ2ZXIu
aCIgLy8gRm9yIGVycm9yIHJlcG9ydGluZy4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBjb25zdCBjaGFyIHZlcnNpb25LZXlbXSA9ICJXZWJLaXREYXRhYmFzZVZlcnNp
b25LZXkiOworc3RhdGljIGNvbnN0IGNoYXIgaW5mb1RhYmxlTmFtZVtdID0gIl9fV2ViS2l0RGF0
YWJhc2VJbmZvVGFibGVfXyI7CisKK3N0YXRpYyBTdHJpbmcgZm9ybWF0RXJyb3JNZXNzYWdlKGNv
bnN0IGNoYXIqIG1lc3NhZ2UsIGludCBzcWxpdGVFcnJvckNvZGUsIGNvbnN0IGNoYXIqIHNxbGl0
ZUVycm9yTWVzc2FnZSkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzICglZCAlcyki
LCBtZXNzYWdlLCBzcWxpdGVFcnJvckNvZGUsIHNxbGl0ZUVycm9yTWVzc2FnZSk7Cit9CisKK3N0
YXRpYyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYg
ZGIsIGNvbnN0IFN0cmluZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQoreworICAgIFNR
TGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQoZGIsIHF1ZXJ5KTsKKyAgICBpbnQgcmVzdWx0ID0gc3Rh
dGVtZW50LnByZXBhcmUoKTsKKworICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0T2spIHsKKyAg
ICAgICAgTE9HX0VSUk9SKCJFcnJvciAoJWkpIHByZXBhcmluZyBzdGF0ZW1lbnQgdG8gcmVhZCB0
ZXh0IHJlc3VsdCBmcm9tIGRhdGFiYXNlICglcykiLCByZXN1bHQsIHF1ZXJ5LmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJlc3VsdCA9IHN0YXRl
bWVudC5zdGVwKCk7CisgICAgaWYgKHJlc3VsdCA9PSBTUUxSZXN1bHRSb3cpIHsKKyAgICAgICAg
cmVzdWx0U3RyaW5nID0gc3RhdGVtZW50LmdldENvbHVtblRleHQoMCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBpZiAocmVzdWx0ID09IFNRTFJlc3VsdERvbmUpIHsKKyAgICAg
ICAgcmVzdWx0U3RyaW5nID0gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIExPR19FUlJPUigiRXJyb3IgKCVpKSByZWFkaW5nIHRleHQgcmVzdWx0IGZyb20gZGF0
YWJhc2UgKCVzKSIsIHJlc3VsdCwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworc3RhdGljIGJvb2wgc2V0VGV4dFZhbHVlSW5EYXRhYmFzZShTUUxpdGVEYXRh
YmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChkYiwgcXVlcnkpOworICAgIGludCByZXN1bHQg
PSBzdGF0ZW1lbnQucHJlcGFyZSgpOworCisgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRPaykg
eworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQg
dmFsdWUgaW4gZGF0YWJhc2UgKCVzKSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCB2YWx1ZSk7
CisKKyAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOworICAgIGlmIChyZXN1bHQgIT0gU1FM
UmVzdWx0RG9uZSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGVwIHN0YXRlbWVu
dCB0byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVzKSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisv
LyBGSVhNRTogbW92ZSBhbGwgZ3VpZC1yZWxhdGVkIGZ1bmN0aW9ucyB0byBhIERhdGFiYXNlVmVy
c2lvblRyYWNrZXIgY2xhc3MuCitzdGF0aWMgTXV0ZXgmIGd1aWRNdXRleCgpCit7CisgICAgQXRv
bWljYWxseUluaXRpYWxpemVkU3RhdGljKE11dGV4JiwgbXV0ZXggPSAqbmV3IE11dGV4KTsKKyAg
ICByZXR1cm4gbXV0ZXg7Cit9CisKK3R5cGVkZWYgSGFzaE1hcDxEYXRhYmFzZUd1aWQsIFN0cmlu
Zz4gR3VpZFZlcnNpb25NYXA7CitzdGF0aWMgR3VpZFZlcnNpb25NYXAmIGd1aWRUb1ZlcnNpb25N
YXAoKQoreworICAgIC8vIEVuc3VyZSB0aGUgdGhlIG11dGV4IGlzIGxvY2tlZC4KKyAgICBBU1NF
UlQoIWd1aWRNdXRleCgpLnRyeUxvY2soKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChHdWlk
VmVyc2lvbk1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKworLy8gTk9URTogQ2Fs
bGVyIG11c3QgbG9jayBndWlkTXV0ZXgoKS4KK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVHdWlk
VmVyc2lvbk1hcChEYXRhYmFzZUd1aWQgZ3VpZCwgU3RyaW5nIG5ld1ZlcnNpb24pCit7CisgICAg
Ly8gRW5zdXJlIHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgorICAgIEFTU0VSVCghZ3VpZE11dGV4
KCkudHJ5TG9jaygpKTsKKworICAgIC8vIE5vdGU6IEl0IGlzIG5vdCBzYWZlIHRvIHB1dCBhbiBl
bXB0eSBzdHJpbmcgaW50byB0aGUgZ3VpZFRvVmVyc2lvbk1hcCgpIG1hcC4KKyAgICAvLyBUaGF0
J3MgYmVjYXVzZSB0aGUgbWFwIGlzIGNyb3NzLXRocmVhZCwgYnV0IGVtcHR5IHN0cmluZ3MgYXJl
IHBlci10aHJlYWQuCisgICAgLy8gVGhlIGNvcHkoKSBmdW5jdGlvbiBtYWtlcyBhIHZlcnNpb24g
b2YgdGhlIHN0cmluZyB5b3UgY2FuIHVzZSBvbiB0aGUgY3VycmVudAorICAgIC8vIHRocmVhZCwg
YnV0IHdlIG5lZWQgYSBzdHJpbmcgd2UgY2FuIGtlZXAgaW4gYSBjcm9zcy10aHJlYWQgZGF0YSBz
dHJ1Y3R1cmUuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBxdWl0ZS1hd2t3YXJkIHJlc3RyaWN0
aW9uIHRvIGhhdmUgdG8gcHJvZ3JhbSB3aXRoLgorCisgICAgLy8gTWFwIG51bGwgc3RyaW5nIHRv
IGVtcHR5IHN0cmluZyAoc2VlIGNvbW1lbnQgYWJvdmUpLgorICAgIGd1aWRUb1ZlcnNpb25NYXAo
KS5zZXQoZ3VpZCwgbmV3VmVyc2lvbi5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IG5ld1ZlcnNpb24u
aXNvbGF0ZWRDb3B5KCkpOworfQorCit0eXBlZGVmIEhhc2hNYXA8RGF0YWJhc2VHdWlkLCBIYXNo
U2V0PEFic3RyYWN0RGF0YWJhc2UqPio+IEd1aWREYXRhYmFzZU1hcDsKK3N0YXRpYyBHdWlkRGF0
YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNlTWFwKCkKK3sKKyAgICAvLyBFbnN1cmUgdGhlIHRoZSBt
dXRleCBpcyBsb2NrZWQuCisgICAgQVNTRVJUKCFndWlkTXV0ZXgoKS50cnlMb2NrKCkpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoR3VpZERhdGFiYXNlTWFwLCBtYXAsICgpKTsKKyAgICByZXR1
cm4gbWFwOworfQorCitzdGF0aWMgRGF0YWJhc2VHdWlkIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgLy8gRW5zdXJl
IHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgorICAgIEFTU0VSVCghZ3VpZE11dGV4KCkudHJ5TG9j
aygpKTsKKworICAgIFN0cmluZyBzdHJpbmdJRCA9IG9yaWdpbiArICIvIiArIG5hbWU7CisKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IElER3VpZE1hcDsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKElER3VpZE1hcCwgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcCwgKCkpOworICAg
IERhdGFiYXNlR3VpZCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5nZXQoc3RyaW5n
SUQpOworICAgIGlmICghZ3VpZCkgeworICAgICAgICBzdGF0aWMgaW50IGN1cnJlbnROZXdHVUlE
ID0gMTsKKyAgICAgICAgZ3VpZCA9IGN1cnJlbnROZXdHVUlEKys7CisgICAgICAgIHN0cmluZ0lk
ZW50aWZpZXJUb0dVSURNYXAuc2V0KHN0cmluZ0lELCBndWlkKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZ3VpZDsKK30KKworLy8gc3RhdGljCitjb25zdCBjaGFyKiBBYnN0cmFjdERhdGFiYXNlOjpk
YXRhYmFzZUluZm9UYWJsZU5hbWUoKQoreworICAgIHJldHVybiBpbmZvVGFibGVOYW1lOworfQor
CitBYnN0cmFjdERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VD
b250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZFZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0
YWJhc2VUeXBlIGRhdGFiYXNlVHlwZSkKKyAgICA6IG1fZGF0YWJhc2VDb250ZXh0KGRhdGFiYXNl
Q29udGV4dCkKKyAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChtX2RhdGFiYXNlQ29udGV4
dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9uYW1lKG5hbWUuaXNvbGF0ZWRD
b3B5KCkpCisgICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNpb24uaXNvbGF0ZWRD
b3B5KCkpCisgICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpKQor
ICAgICwgbV9lc3RpbWF0ZWRTaXplKGVzdGltYXRlZFNpemUpCisgICAgLCBtX2d1aWQoMCkKKyAg
ICAsIG1fb3BlbmVkKGZhbHNlKQorICAgICwgbV9uZXcoZmFsc2UpCisgICAgLCBtX2lzU3luY0Rh
dGFiYXNlKGRhdGFiYXNlVHlwZSA9PSBTeW5jRGF0YWJhc2UpCit7CisgICAgQVNTRVJUKG1fZGF0
YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgp
KTsKKyAgICBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNvbGF0ZWRDb3B5KCk7CisKKyAgICBtX2RhdGFi
YXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGluZm9UYWJsZU5hbWUp
OworCisgICAgaWYgKG1fbmFtZS5pc051bGwoKSkKKyAgICAgICAgbV9uYW1lID0gIiI7CisKKyAg
ICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CisgICAgICAgIG1f
Z3VpZCA9IGd1aWRGb3JPcmlnaW5BbmROYW1lKHNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCks
IG5hbWUpOworICAgICAgICBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPiogaGFzaFNldCA9IGd1
aWRUb0RhdGFiYXNlTWFwKCkuZ2V0KG1fZ3VpZCk7CisgICAgICAgIGlmICghaGFzaFNldCkgewor
ICAgICAgICAgICAgaGFzaFNldCA9IG5ldyBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPjsKKyAg
ICAgICAgICAgIGd1aWRUb0RhdGFiYXNlTWFwKCkuc2V0KG1fZ3VpZCwgaGFzaFNldCk7CisgICAg
ICAgIH0KKworICAgICAgICBoYXNoU2V0LT5hZGQodGhpcyk7CisgICAgfQorCisgICAgbV9maWxl
bmFtZSA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uoc2Vj
dXJpdHlPcmlnaW4oKSwgbV9uYW1lKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5h
ZGRPcGVuRGF0YWJhc2UodGhpcyk7Cit9CisKK0Fic3RyYWN0RGF0YWJhc2U6On5BYnN0cmFjdERh
dGFiYXNlKCkKK3sKKyAgICBBU1NFUlQoIW1fb3BlbmVkKTsKK30KKwordm9pZCBBYnN0cmFjdERh
dGFiYXNlOjpjbG9zZURhdGFiYXNlKCkKK3sKKyAgICBpZiAoIW1fb3BlbmVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CisgICAgbV9vcGVuZWQgPSBm
YWxzZTsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CisK
KyAgICAgICAgSGFzaFNldDxBYnN0cmFjdERhdGFiYXNlKj4qIGhhc2hTZXQgPSBndWlkVG9EYXRh
YmFzZU1hcCgpLmdldChtX2d1aWQpOworICAgICAgICBBU1NFUlQoaGFzaFNldCk7CisgICAgICAg
IEFTU0VSVChoYXNoU2V0LT5jb250YWlucyh0aGlzKSk7CisgICAgICAgIGhhc2hTZXQtPnJlbW92
ZSh0aGlzKTsKKyAgICAgICAgaWYgKGhhc2hTZXQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
Z3VpZFRvRGF0YWJhc2VNYXAoKS5yZW1vdmUobV9ndWlkKTsKKyAgICAgICAgICAgIGRlbGV0ZSBo
YXNoU2V0OworICAgICAgICAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnJlbW92ZShtX2d1aWQpOwor
ICAgICAgICB9CisgICAgfQorfQorCitTdHJpbmcgQWJzdHJhY3REYXRhYmFzZTo6dmVyc2lvbigp
IGNvbnN0Cit7CisgICAgLy8gTm90ZTogSW4gbXVsdGktcHJvY2VzcyBicm93c2VycyB0aGUgY2Fj
aGVkIHZhbHVlIG1heSBiZSBhY2N1cmF0ZSwgYnV0IHdlIGNhbm5vdCByZWFkIHRoZQorICAgIC8v
IGFjdHVhbCB2ZXJzaW9uIGZyb20gdGhlIGRhdGFiYXNlIHdpdGhvdXQgcG90ZW50aWFsbHkgaW5k
dWNpbmcgYSBkZWFkbG9jay4KKyAgICAvLyBGSVhNRTogQWRkIGFuIGFzeW5jIHZlcnNpb24gZ2V0
dGVyIHRvIHRoZSBEYXRhYmFzZUFQSS4KKyAgICByZXR1cm4gZ2V0Q2FjaGVkVmVyc2lvbigpOwor
fQorCitib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hv
dWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGVjLCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoZXJyb3JNZXNzYWdlLmlzRW1wdHkoKSk7CisKKyAg
ICBjb25zdCBpbnQgbWF4U3FsaXRlQnVzeVdhaXRUaW1lID0gMzAwMDA7CisKKyAgICBpZiAoIW1f
c3FsaXRlRGF0YWJhc2Uub3BlbihtX2ZpbGVuYW1lLCB0cnVlKSkgeworICAgICAgICByZXBvcnRP
cGVuRGF0YWJhc2VSZXN1bHQoMSwgSU5WQUxJRF9TVEFURV9FUlIsIG1fc3FsaXRlRGF0YWJhc2Uu
bGFzdEVycm9yKCkpOworICAgICAgICBlcnJvck1lc3NhZ2UgPSBmb3JtYXRFcnJvck1lc3NhZ2Uo
InVuYWJsZSB0byBvcGVuIGRhdGFiYXNlIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwg
bV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFtX3NxbGl0
ZURhdGFiYXNlLnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpKQorICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byB0dXJuIG9uIGluY3JlbWVudGFsIGF1dG8tdmFjdXVtICglZCAlcykiLCBt
X3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKworICAgIG1fc3FsaXRlRGF0YWJhc2Uuc2V0QnVzeVRpbWVvdXQobWF4U3FsaXRlQnVz
eVdhaXRUaW1lKTsKKworICAgIFN0cmluZyBjdXJyZW50VmVyc2lvbjsKKyAgICB7CisgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CisKKyAgICAgICAgR3VpZFZlcnNpb25N
YXA6Oml0ZXJhdG9yIGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKKyAg
ICAgICAgaWYgKGVudHJ5ICE9IGd1aWRUb1ZlcnNpb25NYXAoKS5lbmQoKSkgeworICAgICAgICAg
ICAgLy8gTWFwIG51bGwgc3RyaW5nIHRvIGVtcHR5IHN0cmluZyAoc2VlIHVwZGF0ZUd1aWRWZXJz
aW9uTWFwKCkpLgorICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSBlbnRyeS0+dmFsdWUuaXNO
dWxsKCkgPyBlbXB0eVN0cmluZygpIDogZW50cnktPnZhbHVlLmlzb2xhdGVkQ29weSgpOworICAg
ICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJDdXJyZW50IGNhY2hlZCB2ZXJzaW9uIGZvciBndWlk
ICVpIGlzICVzIiwgbV9ndWlkLCBjdXJyZW50VmVyc2lvbi5hc2NpaSgpLmRhdGEoKSk7CisKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAgICAgICAgIC8vIE5vdGU6IEluIG11bHRpLXByb2Nl
c3MgYnJvd3NlcnMgdGhlIGNhY2hlZCB2YWx1ZSBtYXkgYmUgaW5hY2N1cmF0ZSwgYnV0CisgICAg
ICAgICAgICAvLyB3ZSBjYW5ub3QgcmVhZCB0aGUgYWN0dWFsIHZlcnNpb24gZnJvbSB0aGUgZGF0
YWJhc2Ugd2l0aG91dCBwb3RlbnRpYWxseQorICAgICAgICAgICAgLy8gaW5kdWNpbmcgYSBmb3Jt
IG9mIGRlYWRsb2NrLCBhIGJ1c3l0aW1lb3V0IGVycm9yIHdoZW4gdHJ5aW5nIHRvCisgICAgICAg
ICAgICAvLyBhY2Nlc3MgdGhlIGRhdGFiYXNlLiBTbyB3ZSdsbCB1c2UgdGhlIGNhY2hlZCB2YWx1
ZSBpZiB3ZSdyZSB1bmFibGUgdG8gcmVhZAorICAgICAgICAgICAgLy8gdGhlIHZhbHVlIGZyb20g
dGhlIGRhdGFiYXNlIGZpbGUgd2l0aG91dCB3YWl0aW5nLgorICAgICAgICAgICAgLy8gRklYTUU6
IEFkZCBhbiBhc3luYyBvcGVuRGF0YWJhc2UgbWV0aG9kIHRvIHRoZSBEYXRhYmFzZUFQSS4KKyAg
ICAgICAgICAgIGNvbnN0IGludCBub1NxbGl0ZUJ1c3lXYWl0VGltZSA9IDA7CisgICAgICAgICAg
ICBtX3NxbGl0ZURhdGFiYXNlLnNldEJ1c3lUaW1lb3V0KG5vU3FsaXRlQnVzeVdhaXRUaW1lKTsK
KyAgICAgICAgICAgIFN0cmluZyB2ZXJzaW9uRnJvbURhdGFiYXNlOworICAgICAgICAgICAgaWYg
KGdldFZlcnNpb25Gcm9tRGF0YWJhc2UodmVyc2lvbkZyb21EYXRhYmFzZSwgZmFsc2UpKSB7Cisg
ICAgICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSB2ZXJzaW9uRnJvbURhdGFiYXNlOworICAg
ICAgICAgICAgICAgIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKG1fZ3VpZCwgY3VycmVudFZlcnNpb24p
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5zZXRCdXN5VGlt
ZW91dChtYXhTcWxpdGVCdXN5V2FpdFRpbWUpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIk5vIGNhY2hlZCB2ZXJzaW9uIGZvciBndWlkICVp
IiwgbV9ndWlkKTsKKworICAgICAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24o
bV9zcWxpdGVEYXRhYmFzZSk7CisgICAgICAgICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOworICAg
ICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbi5pblByb2dyZXNzKCkpIHsKKyAgICAgICAgICAgICAg
ICByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoMiwgSU5WQUxJRF9TVEFURV9FUlIsIG1fc3FsaXRl
RGF0YWJhc2UubGFzdEVycm9yKCkpOworICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGZv
cm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIGZhaWxlZCB0byBzdGFy
dCB0cmFuc2FjdGlvbiIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CisgICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3Ry
aW5nIHRhYmxlTmFtZShpbmZvVGFibGVOYW1lKTsKKyAgICAgICAgICAgIGlmICghbV9zcWxpdGVE
YXRhYmFzZS50YWJsZUV4aXN0cyh0YWJsZU5hbWUpKSB7CisgICAgICAgICAgICAgICAgbV9uZXcg
PSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKCJDUkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBURVhUIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAgICAgICAgICByZXBv
cnRPcGVuRGF0YWJhc2VSZXN1bHQoMywgSU5WQUxJRF9TVEFURV9FUlIsIG1fc3FsaXRlRGF0YWJh
c2UubGFzdEVycm9yKCkpOworICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBmb3Jt
YXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBvcGVuIGRhdGFiYXNlLCBmYWlsZWQgdG8gY3JlYXRl
ICdpbmZvJyB0YWJsZSIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOwor
ICAgICAgICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UgaWYgKCFnZXRWZXJzaW9uRnJvbURhdGFiYXNlKGN1cnJlbnRWZXJzaW9uLCBmYWxzZSkp
IHsKKyAgICAgICAgICAgICAgICByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoNCwgSU5WQUxJRF9T
VEFURV9FUlIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCkpOworICAgICAgICAgICAgICAg
IGVycm9yTWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJh
c2UsIGZhaWxlZCB0byByZWFkIGN1cnJlbnQgdmVyc2lvbiIsIG1fc3FsaXRlRGF0YWJhc2UubGFz
dEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24u
cm9sbGJhY2soKTsKKyAgICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoY3VycmVudFZlcnNpb24ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBMT0coU3Rv
cmFnZUFQSSwgIlJldHJpZXZlZCBjdXJyZW50IHZlcnNpb24gJXMgZnJvbSBkYXRhYmFzZSAlcyIs
IGN1cnJlbnRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1fbmV3IHx8IHNob3VsZFNldFZl
cnNpb25Jbk5ld0RhdGFiYXNlKSB7CisgICAgICAgICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJT
ZXR0aW5nIHZlcnNpb24gJXMgaW4gZGF0YWJhc2UgJXMgdGhhdCB3YXMganVzdCBjcmVhdGVkIiwg
bV9leHBlY3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNj
aWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGlmICghc2V0VmVyc2lvbkluRGF0YWJhc2Uo
bV9leHBlY3RlZFZlcnNpb24sIGZhbHNlKSkgeworICAgICAgICAgICAgICAgICAgICByZXBvcnRP
cGVuRGF0YWJhc2VSZXN1bHQoNSwgSU5WQUxJRF9TVEFURV9FUlIsIG1fc3FsaXRlRGF0YWJhc2Uu
bGFzdEVycm9yKCkpOworICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBmb3JtYXRF
cnJvck1lc3NhZ2UoInVuYWJsZSB0byBvcGVuIGRhdGFiYXNlLCBmYWlsZWQgdG8gd3JpdGUgY3Vy
cmVudCB2ZXJzaW9uIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBjdXJyZW50VmVyc2lvbiA9IG1fZXhwZWN0ZWRWZXJzaW9uOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdXBkYXRlR3VpZFZlcnNpb25NYXAobV9ndWlkLCBjdXJyZW50VmVyc2lvbik7Cisg
ICAgICAgICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChjdXJyZW50VmVyc2lvbi5pc051bGwoKSkgeworICAgICAgICBMT0coU3RvcmFnZUFQSSwg
IkRhdGFiYXNlICVzIGRvZXMgbm90IGhhdmUgaXRzIHZlcnNpb24gc2V0IiwgZGF0YWJhc2VEZWJ1
Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gIiI7Cisg
ICAgfQorCisgICAgLy8gSWYgdGhlIGV4cGVjdGVkIHZlcnNpb24gaXNuJ3QgdGhlIGVtcHR5IHN0
cmluZywgZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgZGF0YWJhc2UgdmVyc2lvbiB3ZSBoYXZlIG1h
dGNoZXMgdGhhdCB2ZXJzaW9uLiBPdGhlcndpc2UsIHNldCBhbiBleGNlcHRpb24uCisgICAgLy8g
SWYgdGhlIGV4cGVjdGVkIHZlcnNpb24gaXMgdGhlIGVtcHR5IHN0cmluZywgdGhlbiB3ZSBhbHdh
eXMgcmV0dXJuIHdpdGggd2hhdGV2ZXIgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2Ugd2UgaGF2ZS4K
KyAgICBpZiAoKCFtX25ldyB8fCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkgJiYgbV9l
eHBlY3RlZFZlcnNpb24ubGVuZ3RoKCkgJiYgbV9leHBlY3RlZFZlcnNpb24gIT0gY3VycmVudFZl
cnNpb24pIHsKKyAgICAgICAgcmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KDYsIElOVkFMSURfU1RB
VEVfRVJSLCAwKTsKKyAgICAgICAgZXJyb3JNZXNzYWdlID0gInVuYWJsZSB0byBvcGVuIGRhdGFi
YXNlLCB2ZXJzaW9uIG1pc21hdGNoLCAnIiArIG1fZXhwZWN0ZWRWZXJzaW9uICsgIicgZG9lcyBu
b3QgbWF0Y2ggdGhlIGN1cnJlbnRWZXJzaW9uIG9mICciICsgY3VycmVudFZlcnNpb24gKyAiJyI7
CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIG1fc3FsaXRlRGF0YWJh
c2UuY2xvc2UoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEFTU0VSVCht
X2RhdGFiYXNlQXV0aG9yaXplcik7CisgICAgbV9zcWxpdGVEYXRhYmFzZS5zZXRBdXRob3JpemVy
KG1fZGF0YWJhc2VBdXRob3JpemVyKTsKKworICAgIG1fb3BlbmVkID0gdHJ1ZTsKKworICAgIGlm
IChtX25ldyAmJiAhc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpCisgICAgICAgIG1fZXhw
ZWN0ZWRWZXJzaW9uID0gIiI7IC8vIFRoZSBjYWxsZXIgcHJvdmlkZWQgYSBjcmVhdGlvbkNhbGxi
YWNrIHdoaWNoIHdpbGwgc2V0IHRoZSBleHBlY3RlZCB2ZXJzaW9uLgorCisgICAgcmVwb3J0T3Bl
bkRhdGFiYXNlUmVzdWx0KDAsIC0xLCAwKTsgLy8gT0sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQWJzdHJhY3REYXRhYmFzZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5n
ZXQoKTsKK30KKworU2VjdXJpdHlPcmlnaW4qIEFic3RyYWN0RGF0YWJhc2U6OnNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4u
Z2V0KCk7Cit9CisKK1N0cmluZyBBYnN0cmFjdERhdGFiYXNlOjpzdHJpbmdJZGVudGlmaWVyKCkg
Y29uc3QKK3sKKyAgICAvLyBSZXR1cm4gYSBkZWVwIGNvcHkgZm9yIHJlZiBjb3VudGluZyB0aHJl
YWQgc2FmZXR5CisgICAgcmV0dXJuIG1fbmFtZS5pc29sYXRlZENvcHkoKTsKK30KKworU3RyaW5n
IEFic3RyYWN0RGF0YWJhc2U6OmRpc3BsYXlOYW1lKCkgY29uc3QKK3sKKyAgICAvLyBSZXR1cm4g
YSBkZWVwIGNvcHkgZm9yIHJlZiBjb3VudGluZyB0aHJlYWQgc2FmZXR5CisgICAgcmV0dXJuIG1f
ZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgQWJzdHJhY3RE
YXRhYmFzZTo6ZXN0aW1hdGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXN0aW1hdGVk
U2l6ZTsKK30KKworU3RyaW5nIEFic3RyYWN0RGF0YWJhc2U6OmZpbGVOYW1lKCkgY29uc3QKK3sK
KyAgICAvLyBSZXR1cm4gYSBkZWVwIGNvcHkgZm9yIHJlZiBjb3VudGluZyB0aHJlYWQgc2FmZXR5
CisgICAgcmV0dXJuIG1fZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCk7Cit9CisKK0RhdGFiYXNlRGV0
YWlscyBBYnN0cmFjdERhdGFiYXNlOjpkZXRhaWxzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRGF0
YWJhc2VEZXRhaWxzKHN0cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUoKSwgZXN0aW1hdGVk
U2l6ZSgpLCAwKTsKK30KKworYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpnZXRWZXJzaW9uRnJvbURh
dGFiYXNlKFN0cmluZyYgdmVyc2lvbiwgYm9vbCBzaG91bGRDYWNoZVZlcnNpb24pCit7CisgICAg
U3RyaW5nIHF1ZXJ5KFN0cmluZygiU0VMRUNUIHZhbHVlIEZST00gIikgKyBpbmZvVGFibGVOYW1l
ICsgICIgV0hFUkUga2V5ID0gJyIgKyB2ZXJzaW9uS2V5ICsgIic7Iik7CisKKyAgICBtX2RhdGFi
YXNlQXV0aG9yaXplci0+ZGlzYWJsZSgpOworCisgICAgYm9vbCByZXN1bHQgPSByZXRyaWV2ZVRl
eHRSZXN1bHRGcm9tRGF0YWJhc2UobV9zcWxpdGVEYXRhYmFzZSwgcXVlcnksIHZlcnNpb24pOwor
ICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgaWYgKHNob3VsZENhY2hlVmVyc2lvbikKKyAgICAg
ICAgICAgIHNldENhY2hlZFZlcnNpb24odmVyc2lvbik7CisgICAgfSBlbHNlCisgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIHZlcnNpb24gZnJvbSBkYXRhYmFzZSAlcyIsIGRh
dGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgbV9kYXRhYmFzZUF1dGhv
cml6ZXItPmVuYWJsZSgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBBYnN0cmFj
dERhdGFiYXNlOjpzZXRWZXJzaW9uSW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIHZlcnNpb24sIGJv
b2wgc2hvdWxkQ2FjaGVWZXJzaW9uKQoreworICAgIC8vIFRoZSBJTlNFUlQgd2lsbCByZXBsYWNl
IGFuIGV4aXN0aW5nIGVudHJ5IGZvciB0aGUgZGF0YWJhc2Ugd2l0aCB0aGUgbmV3IHZlcnNpb24g
bnVtYmVyLCBkdWUgdG8gdGhlIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFCisgICAgLy8gY2xh
dXNlIGluIHRoZSBDUkVBVEUgc3RhdGVtZW50IChzZWUgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5k
VmVyaWZ5KCkpLgorICAgIFN0cmluZyBxdWVyeShTdHJpbmcoIklOU0VSVCBJTlRPICIpICsgaW5m
b1RhYmxlTmFtZSArICAiIChrZXksIHZhbHVlKSBWQUxVRVMgKCciICsgdmVyc2lvbktleSArICIn
LCA/KTsiKTsKKworICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxlKCk7CisKKyAgICBi
b29sIHJlc3VsdCA9IHNldFRleHRWYWx1ZUluRGF0YWJhc2UobV9zcWxpdGVEYXRhYmFzZSwgcXVl
cnksIHZlcnNpb24pOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgaWYgKHNob3VsZENhY2hl
VmVyc2lvbikKKyAgICAgICAgICAgIHNldENhY2hlZFZlcnNpb24odmVyc2lvbik7CisgICAgfSBl
bHNlCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCB2ZXJzaW9uICVzIGluIGRhdGFi
YXNlICglcykiLCB2ZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7
CisKKyAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+ZW5hYmxlKCk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldEV4cGVjdGVkVmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24pCit7CisgICAgbV9leHBlY3RlZFZlcnNpb24gPSB2ZXJzaW9uLmlz
b2xhdGVkQ29weSgpOworfQorCitTdHJpbmcgQWJzdHJhY3REYXRhYmFzZTo6Z2V0Q2FjaGVkVmVy
c2lvbigpIGNvbnN0Cit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKKyAg
ICByZXR1cm4gZ3VpZFRvVmVyc2lvbk1hcCgpLmdldChtX2d1aWQpLmlzb2xhdGVkQ29weSgpOwor
fQorCit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24oY29uc3QgU3RyaW5n
JiBhY3R1YWxWZXJzaW9uKQoreworICAgIC8vIFVwZGF0ZSB0aGUgaW4gbWVtb3J5IGRhdGFiYXNl
IHZlcnNpb24gbWFwLgorICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CisgICAg
dXBkYXRlR3VpZFZlcnNpb25NYXAobV9ndWlkLCBhY3R1YWxWZXJzaW9uKTsKK30KKworYm9vbCBB
YnN0cmFjdERhdGFiYXNlOjpnZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oU3RyaW5nICZh
Y3R1YWxWZXJzaW9uKQoreworICAgIEFTU0VSVChtX3NxbGl0ZURhdGFiYXNlLnRyYW5zYWN0aW9u
SW5Qcm9ncmVzcygpKTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBOb3RlOiBJbiBt
dWx0aS1wcm9jZXNzIGJyb3dzZXJzIHRoZSBjYWNoZWQgdmFsdWUgbWF5IGJlIGluYWNjdXJhdGUu
CisgICAgLy8gU28gd2UgcmV0cmlldmUgdGhlIHZhbHVlIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB1
cGRhdGUgdGhlIGNhY2hlZCB2YWx1ZSBoZXJlLgorICAgIHJldHVybiBnZXRWZXJzaW9uRnJvbURh
dGFiYXNlKGFjdHVhbFZlcnNpb24sIHRydWUpOworI2Vsc2UKKyAgICBhY3R1YWxWZXJzaW9uID0g
Z2V0Q2FjaGVkVmVyc2lvbigpOworICAgIHJldHVybiB0cnVlOworI2VuZGlmCit9CisKK3ZvaWQg
QWJzdHJhY3REYXRhYmFzZTo6ZGlzYWJsZUF1dGhvcml6ZXIoKQoreworICAgIEFTU0VSVChtX2Rh
dGFiYXNlQXV0aG9yaXplcik7CisgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsK
K30KKwordm9pZCBBYnN0cmFjdERhdGFiYXNlOjplbmFibGVBdXRob3JpemVyKCkKK3sKKyAgICBB
U1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOworICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5l
bmFibGUoKTsKK30KKwordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpzZXRBdXRob3JpemVyUmVhZE9u
bHkoKQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7CisgICAgbV9kYXRhYmFz
ZUF1dGhvcml6ZXItPnNldFJlYWRPbmx5KCk7Cit9CisKK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6
c2V0QXV0aG9yaXplclBlcm1pc3Npb25zKGludCBwZXJtaXNzaW9ucykKK3sKKyAgICBBU1NFUlQo
bV9kYXRhYmFzZUF1dGhvcml6ZXIpOworICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5zZXRQZXJt
aXNzaW9ucyhwZXJtaXNzaW9ucyk7Cit9CisKK2Jvb2wgQWJzdHJhY3REYXRhYmFzZTo6bGFzdEFj
dGlvbkNoYW5nZWREYXRhYmFzZSgpCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRob3JpemVy
KTsKKyAgICByZXR1cm4gbV9kYXRhYmFzZUF1dGhvcml6ZXItPmxhc3RBY3Rpb25DaGFuZ2VkRGF0
YWJhc2UoKTsKK30KKworYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpsYXN0QWN0aW9uV2FzSW5zZXJ0
KCkKK3sKKyAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOworICAgIHJldHVybiBtX2Rh
dGFiYXNlQXV0aG9yaXplci0+bGFzdEFjdGlvbldhc0luc2VydCgpOworfQorCit2b2lkIEFic3Ry
YWN0RGF0YWJhc2U6OnJlc2V0RGVsZXRlcygpCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRo
b3JpemVyKTsKKyAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+cmVzZXREZWxldGVzKCk7Cit9CisK
K2Jvb2wgQWJzdHJhY3REYXRhYmFzZTo6aGFkRGVsZXRlcygpCit7CisgICAgQVNTRVJUKG1fZGF0
YWJhc2VBdXRob3JpemVyKTsKKyAgICByZXR1cm4gbV9kYXRhYmFzZUF1dGhvcml6ZXItPmhhZERl
bGV0ZXMoKTsKK30KKwordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXNldEF1dGhvcml6ZXIoKQor
eworICAgIGlmIChtX2RhdGFiYXNlQXV0aG9yaXplcikKKyAgICAgICAgbV9kYXRhYmFzZUF1dGhv
cml6ZXItPnJlc2V0KCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBBYnN0cmFjdERhdGFiYXNl
OjptYXhpbXVtU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLmdldE1heFNpemVGb3JEYXRhYmFzZSh0aGlzKTsKK30KKwordm9pZCBBYnN0cmFjdERh
dGFiYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVlZGVkKCkKK3sKKyAgICBpbnQ2NF90IGZyZWVT
cGFjZVNpemUgPSBtX3NxbGl0ZURhdGFiYXNlLmZyZWVTcGFjZVNpemUoKTsKKyAgICBpbnQ2NF90
IHRvdGFsU2l6ZSA9IG1fc3FsaXRlRGF0YWJhc2UudG90YWxTaXplKCk7CisgICAgaWYgKHRvdGFs
U2l6ZSA8PSAxMCAqIGZyZWVTcGFjZVNpemUpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IG1fc3Fs
aXRlRGF0YWJhc2UucnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCk7CisgICAgICAgIHJlcG9y
dFZhY3V1bURhdGFiYXNlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gU1FM
UmVzdWx0T2spCisgICAgICAgICAgICBsb2dFcnJvck1lc3NhZ2UoZm9ybWF0RXJyb3JNZXNzYWdl
KCJlcnJvciB2YWN1dW1pbmcgZGF0YWJhc2UiLCByZXN1bHQsIG1fc3FsaXRlRGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpKTsKKyAgICB9Cit9CisKK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6aW50ZXJy
dXB0KCkKK3sKKyAgICBtX3NxbGl0ZURhdGFiYXNlLmludGVycnVwdCgpOworfQorCitib29sIEFi
c3RyYWN0RGF0YWJhc2U6OmlzSW50ZXJydXB0ZWQoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX3NxbGl0ZURhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSk7CisgICAgcmV0dXJuIG1fc3FsaXRl
RGF0YWJhc2UuaXNJbnRlcnJ1cHRlZCgpOworfQorCit2b2lkIEFic3RyYWN0RGF0YWJhc2U6Omxv
Z0Vycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVycm9y
TWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKK30KKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorLy8g
VGhlc2UgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgaGlzdG9ncmFtcyBvZiBlcnJvcnMgc2VlbiB3aXRo
IHdlYnNxbC4KKy8vIFNlZSBhYm91dDpoaXN0b2dyYW1zIGluIGNocm9taXVtLgordm9pZCBBYnN0
cmFjdERhdGFiYXNlOjpyZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50
IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3sKKyAgICBEYXRhYmFzZU9i
c2VydmVyOjpyZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQodGhpcywgZXJyb3JTaXRlLCB3ZWJTcWxF
cnJvckNvZGUsIHNxbGl0ZUVycm9yQ29kZSk7Cit9CisKK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6
cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JD
b2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQoreworICAgIERhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9y
dENoYW5nZVZlcnNpb25SZXN1bHQodGhpcywgZXJyb3JTaXRlLCB3ZWJTcWxFcnJvckNvZGUsIHNx
bGl0ZUVycm9yQ29kZSk7Cit9CisKK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0U3RhcnRU
cmFuc2FjdGlvblJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQg
c3FsaXRlRXJyb3JDb2RlKQoreworICAgIERhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydFN0YXJ0VHJh
bnNhY3Rpb25SZXN1bHQodGhpcywgZXJyb3JTaXRlLCB3ZWJTcWxFcnJvckNvZGUsIHNxbGl0ZUVy
cm9yQ29kZSk7Cit9CisKK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0Q29tbWl0VHJhbnNh
Y3Rpb25SZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0
ZUVycm9yQ29kZSkKK3sKKyAgICBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRDb21taXRUcmFuc2Fj
dGlvblJlc3VsdCh0aGlzLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JD
b2RlKTsKK30KKwordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRFeGVjdXRlU3RhdGVtZW50
UmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJv
ckNvZGUpCit7CisgICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJl
c3VsdCh0aGlzLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsK
K30KKwordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRWYWN1dW1EYXRhYmFzZVJlc3VsdChp
bnQgc3FsaXRlRXJyb3JDb2RlKQoreworICAgIERhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydFZhY3V1
bURhdGFiYXNlUmVzdWx0KHRoaXMsIHNxbGl0ZUVycm9yQ29kZSk7Cit9CisKKyNlbHNlCit2b2lk
IEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdChpbnQsIGludCwgaW50
KSB7IH0KK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdChp
bnQsIGludCwgaW50KSB7IH0KK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0U3RhcnRUcmFu
c2FjdGlvblJlc3VsdChpbnQsIGludCwgaW50KSB7IH0KK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6
cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoaW50LCBpbnQsIGludCkgeyB9Cit2b2lkIEFi
c3RyYWN0RGF0YWJhc2U6OnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoaW50LCBpbnQsIGlu
dCkgeyB9Cit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0
KGludCkgeyB9CisjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQu
Y3BwCShyZXZpc2lvbiAxNDExODcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKIApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVHdWlkVmVy
c2lvbk1hcCgKICAgICBndWlkVG9WZXJzaW9uTWFwKCkuc2V0KGd1aWQsIG5ld1ZlcnNpb24uaXNF
bXB0eSgpID8gU3RyaW5nKCkgOiBuZXdWZXJzaW9uLmlzb2xhdGVkQ29weSgpKTsKIH0KIAotdHlw
ZWRlZiBIYXNoTWFwPERhdGFiYXNlR3VpZCwgSGFzaFNldDxBYnN0cmFjdERhdGFiYXNlKj4qPiBH
dWlkRGF0YWJhc2VNYXA7Cit0eXBlZGVmIEhhc2hNYXA8RGF0YWJhc2VHdWlkLCBIYXNoU2V0PERh
dGFiYXNlQmFja2VuZCo+Kj4gR3VpZERhdGFiYXNlTWFwOwogc3RhdGljIEd1aWREYXRhYmFzZU1h
cCYgZ3VpZFRvRGF0YWJhc2VNYXAoKQogewogICAgIC8vIEVuc3VyZSB0aGUgdGhlIG11dGV4IGlz
IGxvY2tlZC4KQEAgLTE2OSwxMyArMTY5LDEzIEBAIHN0YXRpYyBEYXRhYmFzZUd1aWQgZ3VpZEZv
ck9yaWdpbkFuZE5hbWUKIH0KIAogLy8gc3RhdGljCi1jb25zdCBjaGFyKiBBYnN0cmFjdERhdGFi
YXNlOjpkYXRhYmFzZUluZm9UYWJsZU5hbWUoKQorY29uc3QgY2hhciogRGF0YWJhc2VCYWNrZW5k
OjpkYXRhYmFzZUluZm9UYWJsZU5hbWUoKQogewogICAgIHJldHVybiBpbmZvVGFibGVOYW1lOwog
fQogCi1BYnN0cmFjdERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJh
c2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBleHBlY3RlZFZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwg
RGF0YWJhc2VUeXBlIGRhdGFiYXNlVHlwZSkKK0RhdGFiYXNlQmFja2VuZDo6RGF0YWJhc2VCYWNr
ZW5kKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCisgICAgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5
cGUgZGF0YWJhc2VUeXBlKQogICAgIDogbV9kYXRhYmFzZUNvbnRleHQoZGF0YWJhc2VDb250ZXh0
KQogICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KG1fZGF0YWJhc2VDb250ZXh0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRlZENvcHkoKSkK
QEAgLTE5OCw5ICsxOTgsOSBAQCBBYnN0cmFjdERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNlKFBh
c3NSCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwogICAg
ICAgICBtX2d1aWQgPSBndWlkRm9yT3JpZ2luQW5kTmFtZShzZWN1cml0eU9yaWdpbigpLT50b1N0
cmluZygpLCBuYW1lKTsKLSAgICAgICAgSGFzaFNldDxBYnN0cmFjdERhdGFiYXNlKj4qIGhhc2hT
ZXQgPSBndWlkVG9EYXRhYmFzZU1hcCgpLmdldChtX2d1aWQpOworICAgICAgICBIYXNoU2V0PERh
dGFiYXNlQmFja2VuZCo+KiBoYXNoU2V0ID0gZ3VpZFRvRGF0YWJhc2VNYXAoKS5nZXQobV9ndWlk
KTsKICAgICAgICAgaWYgKCFoYXNoU2V0KSB7Ci0gICAgICAgICAgICBoYXNoU2V0ID0gbmV3IEhh
c2hTZXQ8QWJzdHJhY3REYXRhYmFzZSo+OworICAgICAgICAgICAgaGFzaFNldCA9IG5ldyBIYXNo
U2V0PERhdGFiYXNlQmFja2VuZCo+OwogICAgICAgICAgICAgZ3VpZFRvRGF0YWJhc2VNYXAoKS5z
ZXQobV9ndWlkLCBoYXNoU2V0KTsKICAgICAgICAgfQogCkBAIC0yMTEsMTIgKzIxMSwxMiBAQCBB
YnN0cmFjdERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNlKFBhc3NSCiAgICAgRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuYWRkT3BlbkRhdGFiYXNlKHRoaXMpOwogfQogCi1BYnN0cmFjdERhdGFi
YXNlOjp+QWJzdHJhY3REYXRhYmFzZSgpCitEYXRhYmFzZUJhY2tlbmQ6On5EYXRhYmFzZUJhY2tl
bmQoKQogewogICAgIEFTU0VSVCghbV9vcGVuZWQpOwogfQogCi12b2lkIEFic3RyYWN0RGF0YWJh
c2U6OmNsb3NlRGF0YWJhc2UoKQordm9pZCBEYXRhYmFzZUJhY2tlbmQ6OmNsb3NlRGF0YWJhc2Uo
KQogewogICAgIGlmICghbV9vcGVuZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIyNiw3ICsyMjYs
NyBAQCB2b2lkIEFic3RyYWN0RGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UoKQogICAgIHsKICAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKIAotICAgICAgICBIYXNoU2V0PEFi
c3RyYWN0RGF0YWJhc2UqPiogaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuZ2V0KG1fZ3Vp
ZCk7CisgICAgICAgIEhhc2hTZXQ8RGF0YWJhc2VCYWNrZW5kKj4qIGhhc2hTZXQgPSBndWlkVG9E
YXRhYmFzZU1hcCgpLmdldChtX2d1aWQpOwogICAgICAgICBBU1NFUlQoaGFzaFNldCk7CiAgICAg
ICAgIEFTU0VSVChoYXNoU2V0LT5jb250YWlucyh0aGlzKSk7CiAgICAgICAgIGhhc2hTZXQtPnJl
bW92ZSh0aGlzKTsKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIEFic3RyYWN0RGF0YWJhc2U6OmNs
b3NlRGF0YWJhc2UoKQogICAgIH0KIH0KIAotU3RyaW5nIEFic3RyYWN0RGF0YWJhc2U6OnZlcnNp
b24oKSBjb25zdAorU3RyaW5nIERhdGFiYXNlQmFja2VuZDo6dmVyc2lvbigpIGNvbnN0CiB7CiAg
ICAgLy8gTm90ZTogSW4gbXVsdGktcHJvY2VzcyBicm93c2VycyB0aGUgY2FjaGVkIHZhbHVlIG1h
eSBiZSBhY2N1cmF0ZSwgYnV0IHdlIGNhbm5vdCByZWFkIHRoZQogICAgIC8vIGFjdHVhbCB2ZXJz
aW9uIGZyb20gdGhlIGRhdGFiYXNlIHdpdGhvdXQgcG90ZW50aWFsbHkgaW5kdWNpbmcgYSBkZWFk
bG9jay4KQEAgLTI0Niw3ICsyNDYsNyBAQCBTdHJpbmcgQWJzdHJhY3REYXRhYmFzZTo6dmVyc2lv
bigpIGNvbnN0CiAgICAgcmV0dXJuIGdldENhY2hlZFZlcnNpb24oKTsKIH0KIAotYm9vbCBBYnN0
cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25J
bk5ld0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJiBlYywgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiti
b29sIERhdGFiYXNlQmFja2VuZDo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRW
ZXJzaW9uSW5OZXdEYXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYgZWMsIFN0cmluZyYgZXJyb3JNZXNz
YWdlKQogewogICAgIEFTU0VSVChlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKTsKIApAQCAtMzY5LDQ1
ICszNjksNDUgQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcgogICAg
IHJldHVybiB0cnVlOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBYnN0cmFjdERhdGFi
YXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIERhdGFiYXNlQmFja2VuZDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsKIH0KIAotU2VjdXJpdHlP
cmlnaW4qIEFic3RyYWN0RGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK1NlY3VyaXR5
T3JpZ2luKiBEYXRhYmFzZUJhY2tlbmQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCk7CiB9CiAKLVN0cmluZyBB
YnN0cmFjdERhdGFiYXNlOjpzdHJpbmdJZGVudGlmaWVyKCkgY29uc3QKK1N0cmluZyBEYXRhYmFz
ZUJhY2tlbmQ6OnN0cmluZ0lkZW50aWZpZXIoKSBjb25zdAogewogICAgIC8vIFJldHVybiBhIGRl
ZXAgY29weSBmb3IgcmVmIGNvdW50aW5nIHRocmVhZCBzYWZldHkKICAgICByZXR1cm4gbV9uYW1l
Lmlzb2xhdGVkQ29weSgpOwogfQogCi1TdHJpbmcgQWJzdHJhY3REYXRhYmFzZTo6ZGlzcGxheU5h
bWUoKSBjb25zdAorU3RyaW5nIERhdGFiYXNlQmFja2VuZDo6ZGlzcGxheU5hbWUoKSBjb25zdAog
ewogICAgIC8vIFJldHVybiBhIGRlZXAgY29weSBmb3IgcmVmIGNvdW50aW5nIHRocmVhZCBzYWZl
dHkKICAgICByZXR1cm4gbV9kaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKTsKIH0KIAotdW5zaWdu
ZWQgbG9uZyBBYnN0cmFjdERhdGFiYXNlOjplc3RpbWF0ZWRTaXplKCkgY29uc3QKK3Vuc2lnbmVk
IGxvbmcgRGF0YWJhc2VCYWNrZW5kOjplc3RpbWF0ZWRTaXplKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9lc3RpbWF0ZWRTaXplOwogfQogCi1TdHJpbmcgQWJzdHJhY3REYXRhYmFzZTo6ZmlsZU5h
bWUoKSBjb25zdAorU3RyaW5nIERhdGFiYXNlQmFja2VuZDo6ZmlsZU5hbWUoKSBjb25zdAogewog
ICAgIC8vIFJldHVybiBhIGRlZXAgY29weSBmb3IgcmVmIGNvdW50aW5nIHRocmVhZCBzYWZldHkK
ICAgICByZXR1cm4gbV9maWxlbmFtZS5pc29sYXRlZENvcHkoKTsKIH0KIAotRGF0YWJhc2VEZXRh
aWxzIEFic3RyYWN0RGF0YWJhc2U6OmRldGFpbHMoKSBjb25zdAorRGF0YWJhc2VEZXRhaWxzIERh
dGFiYXNlQmFja2VuZDo6ZGV0YWlscygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGFiYXNlRGV0
YWlscyhzdHJpbmdJZGVudGlmaWVyKCksIGRpc3BsYXlOYW1lKCksIGVzdGltYXRlZFNpemUoKSwg
MCk7CiB9CiAKLWJvb2wgQWJzdHJhY3REYXRhYmFzZTo6Z2V0VmVyc2lvbkZyb21EYXRhYmFzZShT
dHJpbmcmIHZlcnNpb24sIGJvb2wgc2hvdWxkQ2FjaGVWZXJzaW9uKQorYm9vbCBEYXRhYmFzZUJh
Y2tlbmQ6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UoU3RyaW5nJiB2ZXJzaW9uLCBib29sIHNob3Vs
ZENhY2hlVmVyc2lvbikKIHsKICAgICBTdHJpbmcgcXVlcnkoU3RyaW5nKCJTRUxFQ1QgdmFsdWUg
RlJPTSAiKSArIGluZm9UYWJsZU5hbWUgKyAgIiBXSEVSRSBrZXkgPSAnIiArIHZlcnNpb25LZXkg
KyAiJzsiKTsKIApAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6Z2V0
VmVyc2lvbkZyb21EYXQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEFic3RyYWN0RGF0
YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgYm9vbCBz
aG91bGRDYWNoZVZlcnNpb24pCitib29sIERhdGFiYXNlQmFja2VuZDo6c2V0VmVyc2lvbkluRGF0
YWJhc2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBib29sIHNob3VsZENhY2hlVmVyc2lvbikKIHsK
ICAgICAvLyBUaGUgSU5TRVJUIHdpbGwgcmVwbGFjZSBhbiBleGlzdGluZyBlbnRyeSBmb3IgdGhl
IGRhdGFiYXNlIHdpdGggdGhlIG5ldyB2ZXJzaW9uIG51bWJlciwgZHVlIHRvIHRoZSBVTklRVUUg
T04gQ09ORkxJQ1QgUkVQTEFDRQogICAgIC8vIGNsYXVzZSBpbiB0aGUgQ1JFQVRFIHN0YXRlbWVu
dCAoc2VlIERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSgpKS4KQEAgLTQ0NSwyNSArNDQ1
LDI1IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0YWIKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldEV4cGVjdGVkVmVyc2lv
bihjb25zdCBTdHJpbmcmIHZlcnNpb24pCit2b2lkIERhdGFiYXNlQmFja2VuZDo6c2V0RXhwZWN0
ZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKICAgICBtX2V4cGVjdGVkVmVyc2lv
biA9IHZlcnNpb24uaXNvbGF0ZWRDb3B5KCk7CiB9CiAKLVN0cmluZyBBYnN0cmFjdERhdGFiYXNl
OjpnZXRDYWNoZWRWZXJzaW9uKCkgY29uc3QKK1N0cmluZyBEYXRhYmFzZUJhY2tlbmQ6OmdldENh
Y2hlZFZlcnNpb24oKSBjb25zdAogewogICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgo
KSk7CiAgICAgcmV0dXJuIGd1aWRUb1ZlcnNpb25NYXAoKS5nZXQobV9ndWlkKS5pc29sYXRlZENv
cHkoKTsKIH0KIAotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0
IFN0cmluZyYgYWN0dWFsVmVyc2lvbikKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kOjpzZXRDYWNoZWRW
ZXJzaW9uKGNvbnN0IFN0cmluZyYgYWN0dWFsVmVyc2lvbikKIHsKICAgICAvLyBVcGRhdGUgdGhl
IGluIG1lbW9yeSBkYXRhYmFzZSB2ZXJzaW9uIG1hcC4KICAgICBNdXRleExvY2tlciBsb2NrZXIo
Z3VpZE11dGV4KCkpOwogICAgIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKG1fZ3VpZCwgYWN0dWFsVmVy
c2lvbik7CiB9CiAKLWJvb2wgQWJzdHJhY3REYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZvclRy
YW5zYWN0aW9uKFN0cmluZyAmYWN0dWFsVmVyc2lvbikKK2Jvb2wgRGF0YWJhc2VCYWNrZW5kOjpn
ZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oU3RyaW5nICZhY3R1YWxWZXJzaW9uKQogewog
ICAgIEFTU0VSVChtX3NxbGl0ZURhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKICNp
ZiBQTEFURk9STShDSFJPTUlVTSkKQEAgLTQ3Niw2NiArNDc2LDY2IEBAIGJvb2wgQWJzdHJhY3RE
YXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkYKICNlbmRpZgogfQogCi12b2lkIEFic3RyYWN0RGF0
YWJhc2U6OmRpc2FibGVBdXRob3JpemVyKCkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kOjpkaXNhYmxl
QXV0aG9yaXplcigpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRob3JpemVyKTsKICAgICBt
X2RhdGFiYXNlQXV0aG9yaXplci0+ZGlzYWJsZSgpOwogfQogCi12b2lkIEFic3RyYWN0RGF0YWJh
c2U6OmVuYWJsZUF1dGhvcml6ZXIoKQordm9pZCBEYXRhYmFzZUJhY2tlbmQ6OmVuYWJsZUF1dGhv
cml6ZXIoKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7CiAgICAgbV9kYXRh
YmFzZUF1dGhvcml6ZXItPmVuYWJsZSgpOwogfQogCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNl
dEF1dGhvcml6ZXJSZWFkT25seSgpCit2b2lkIERhdGFiYXNlQmFja2VuZDo6c2V0QXV0aG9yaXpl
clJlYWRPbmx5KCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwogICAgIG1f
ZGF0YWJhc2VBdXRob3JpemVyLT5zZXRSZWFkT25seSgpOwogfQogCi12b2lkIEFic3RyYWN0RGF0
YWJhc2U6OnNldEF1dGhvcml6ZXJQZXJtaXNzaW9ucyhpbnQgcGVybWlzc2lvbnMpCit2b2lkIERh
dGFiYXNlQmFja2VuZDo6c2V0QXV0aG9yaXplclBlcm1pc3Npb25zKGludCBwZXJtaXNzaW9ucykK
IHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwogICAgIG1fZGF0YWJhc2VBdXRo
b3JpemVyLT5zZXRQZXJtaXNzaW9ucyhwZXJtaXNzaW9ucyk7CiB9CiAKLWJvb2wgQWJzdHJhY3RE
YXRhYmFzZTo6bGFzdEFjdGlvbkNoYW5nZWREYXRhYmFzZSgpCitib29sIERhdGFiYXNlQmFja2Vu
ZDo6bGFzdEFjdGlvbkNoYW5nZWREYXRhYmFzZSgpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VB
dXRob3JpemVyKTsKICAgICByZXR1cm4gbV9kYXRhYmFzZUF1dGhvcml6ZXItPmxhc3RBY3Rpb25D
aGFuZ2VkRGF0YWJhc2UoKTsKIH0KIAotYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpsYXN0QWN0aW9u
V2FzSW5zZXJ0KCkKK2Jvb2wgRGF0YWJhc2VCYWNrZW5kOjpsYXN0QWN0aW9uV2FzSW5zZXJ0KCkK
IHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwogICAgIHJldHVybiBtX2RhdGFi
YXNlQXV0aG9yaXplci0+bGFzdEFjdGlvbldhc0luc2VydCgpOwogfQogCi12b2lkIEFic3RyYWN0
RGF0YWJhc2U6OnJlc2V0RGVsZXRlcygpCit2b2lkIERhdGFiYXNlQmFja2VuZDo6cmVzZXREZWxl
dGVzKCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwogICAgIG1fZGF0YWJh
c2VBdXRob3JpemVyLT5yZXNldERlbGV0ZXMoKTsKIH0KIAotYm9vbCBBYnN0cmFjdERhdGFiYXNl
OjpoYWREZWxldGVzKCkKK2Jvb2wgRGF0YWJhc2VCYWNrZW5kOjpoYWREZWxldGVzKCkKIHsKICAg
ICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwogICAgIHJldHVybiBtX2RhdGFiYXNlQXV0
aG9yaXplci0+aGFkRGVsZXRlcygpOwogfQogCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlc2V0
QXV0aG9yaXplcigpCit2b2lkIERhdGFiYXNlQmFja2VuZDo6cmVzZXRBdXRob3JpemVyKCkKIHsK
ICAgICBpZiAobV9kYXRhYmFzZUF1dGhvcml6ZXIpCiAgICAgICAgIG1fZGF0YWJhc2VBdXRob3Jp
emVyLT5yZXNldCgpOwogfQogCi11bnNpZ25lZCBsb25nIGxvbmcgQWJzdHJhY3REYXRhYmFzZTo6
bWF4aW11bVNpemUoKSBjb25zdAordW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlQmFja2VuZDo6
bWF4aW11bVNpemUoKSBjb25zdAogewogICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5nZXRNYXhTaXplRm9yRGF0YWJhc2UodGhpcyk7CiB9CiAKLXZvaWQgQWJzdHJhY3REYXRh
YmFzZTo6aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpCit2b2lkIERhdGFiYXNlQmFja2VuZDo6
aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpCiB7CiAgICAgaW50NjRfdCBmcmVlU3BhY2VTaXpl
ID0gbV9zcWxpdGVEYXRhYmFzZS5mcmVlU3BhY2VTaXplKCk7CiAgICAgaW50NjRfdCB0b3RhbFNp
emUgPSBtX3NxbGl0ZURhdGFiYXNlLnRvdGFsU2l6ZSgpOwpAQCAtNTQ3LDE4ICs1NDcsMTggQEAg
dm9pZCBBYnN0cmFjdERhdGFiYXNlOjppbmNyZW1lbnRhbFZhY3V1bQogICAgIH0KIH0KIAotdm9p
ZCBBYnN0cmFjdERhdGFiYXNlOjppbnRlcnJ1cHQoKQordm9pZCBEYXRhYmFzZUJhY2tlbmQ6Omlu
dGVycnVwdCgpCiB7CiAgICAgbV9zcWxpdGVEYXRhYmFzZS5pbnRlcnJ1cHQoKTsKIH0KIAotYm9v
bCBBYnN0cmFjdERhdGFiYXNlOjppc0ludGVycnVwdGVkKCkKK2Jvb2wgRGF0YWJhc2VCYWNrZW5k
Ojppc0ludGVycnVwdGVkKCkKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zcWxpdGVEYXRh
YmFzZS5kYXRhYmFzZU11dGV4KCkpOwogICAgIHJldHVybiBtX3NxbGl0ZURhdGFiYXNlLmlzSW50
ZXJydXB0ZWQoKTsKIH0KIAotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpsb2dFcnJvck1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZUJhY2tlbmQ6OmxvZ0Vycm9yTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxl
dmVsLCBtZXNzYWdlKTsKIH0KQEAgLTU2Niw0MyArNTY2LDQzIEBAIHZvaWQgQWJzdHJhY3REYXRh
YmFzZTo6bG9nRXJyb3JNZXNzYWdlKGMKICNpZiBQTEFURk9STShDSFJPTUlVTSkKIC8vIFRoZXNl
IGFyZSB1c2VkIHRvIGdlbmVyYXRlIGhpc3RvZ3JhbXMgb2YgZXJyb3JzIHNlZW4gd2l0aCB3ZWJz
cWwuCiAvLyBTZWUgYWJvdXQ6aGlzdG9ncmFtcyBpbiBjaHJvbWl1bS4KLXZvaWQgQWJzdHJhY3RE
YXRhYmFzZTo6cmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJT
cWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCit2b2lkIERhdGFiYXNlQmFja2VuZDo6
cmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNv
ZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCiB7CiAgICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0
T3BlbkRhdGFiYXNlUmVzdWx0KHRoaXMsIGVycm9yU2l0ZSwgd2ViU3FsRXJyb3JDb2RlLCBzcWxp
dGVFcnJvckNvZGUpOwogfQogCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydENoYW5nZVZl
cnNpb25SZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0
ZUVycm9yQ29kZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kOjpyZXBvcnRDaGFuZ2VWZXJzaW9uUmVz
dWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNv
ZGUpCiB7CiAgICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCh0
aGlzLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKIH0KIAot
dm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGludCBl
cnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCit2b2lk
IERhdGFiYXNlQmFja2VuZDo6cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdChpbnQgZXJyb3JT
aXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQogewogICAgIERh
dGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQodGhpcywgZXJyb3JT
aXRlLCB3ZWJTcWxFcnJvckNvZGUsIHNxbGl0ZUVycm9yQ29kZSk7CiB9CiAKLXZvaWQgQWJzdHJh
Y3REYXRhYmFzZTo6cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoaW50IGVycm9yU2l0ZSwg
aW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3ZvaWQgRGF0YWJhc2VC
YWNrZW5kOjpyZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQg
d2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQogewogICAgIERhdGFiYXNlT2Jz
ZXJ2ZXI6OnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KHRoaXMsIGVycm9yU2l0ZSwgd2Vi
U3FsRXJyb3JDb2RlLCBzcWxpdGVFcnJvckNvZGUpOwogfQogCi12b2lkIEFic3RyYWN0RGF0YWJh
c2U6OnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNx
bEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kOjpy
ZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJv
ckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCiB7CiAgICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVw
b3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdCh0aGlzLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29k
ZSwgc3FsaXRlRXJyb3JDb2RlKTsKIH0KIAotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRW
YWN1dW1EYXRhYmFzZVJlc3VsdChpbnQgc3FsaXRlRXJyb3JDb2RlKQordm9pZCBEYXRhYmFzZUJh
Y2tlbmQ6OnJlcG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0KGludCBzcWxpdGVFcnJvckNvZGUpCiB7
CiAgICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQodGhpcywg
c3FsaXRlRXJyb3JDb2RlKTsKIH0KIAogI2Vsc2UKLXZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVw
b3J0T3BlbkRhdGFiYXNlUmVzdWx0KGludCwgaW50LCBpbnQpIHsgfQotdm9pZCBBYnN0cmFjdERh
dGFiYXNlOjpyZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KGludCwgaW50LCBpbnQpIHsgfQotdm9p
ZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGludCwgaW50
LCBpbnQpIHsgfQotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRDb21taXRUcmFuc2FjdGlv
blJlc3VsdChpbnQsIGludCwgaW50KSB7IH0KLXZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0
RXhlY3V0ZVN0YXRlbWVudFJlc3VsdChpbnQsIGludCwgaW50KSB7IH0KLXZvaWQgQWJzdHJhY3RE
YXRhYmFzZTo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoaW50KSB7IH0KK3ZvaWQgRGF0YWJh
c2VCYWNrZW5kOjpyZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoaW50LCBpbnQsIGludCkgeyB9Cit2
b2lkIERhdGFiYXNlQmFja2VuZDo6cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdChpbnQsIGludCwg
aW50KSB7IH0KK3ZvaWQgRGF0YWJhc2VCYWNrZW5kOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVz
dWx0KGludCwgaW50LCBpbnQpIHsgfQordm9pZCBEYXRhYmFzZUJhY2tlbmQ6OnJlcG9ydENvbW1p
dFRyYW5zYWN0aW9uUmVzdWx0KGludCwgaW50LCBpbnQpIHsgfQordm9pZCBEYXRhYmFzZUJhY2tl
bmQ6OnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoaW50LCBpbnQsIGludCkgeyB9Cit2b2lk
IERhdGFiYXNlQmFja2VuZDo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoaW50KSB7IH0KICNl
bmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QmFja2VuZC5oCShyZXZpc2lvbiAxNDExODcpCShmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oOjE0MTE4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFic3RyYWN0RGF0YWJhc2VfaAorI2RlZmluZSBBYnN0
cmFjdERhdGFiYXNlX2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJE
YXRhYmFzZUJhc2ljVHlwZXMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIKKyNpbmNs
dWRlICJTUUxpdGVEYXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgIUxPR19ESVNBQkxFRCB8fCAh
RVJST1JfRElTQUJMRUQKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0YWJhc2VBdXRob3JpemVyOworY2xhc3MgRGF0
YWJhc2VDb250ZXh0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNlY3Vy
aXR5T3JpZ2luOworCitjbGFzcyBBYnN0cmFjdERhdGFiYXNlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEFic3RyYWN0RGF0YWJhc2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BYnN0
cmFjdERhdGFiYXNlKCk7CisKKyAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CisK
KyAgICBib29sIG9wZW5lZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlbmVkOyB9CisgICAgYm9vbCBp
c05ldygpIGNvbnN0IHsgcmV0dXJuIG1fbmV3OyB9CisgICAgYm9vbCBpc1N5bmNEYXRhYmFzZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTeW5jRGF0YWJhc2U7IH0KKworICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZp
cnR1YWwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CisgICAgdmlydHVh
bCBTdHJpbmcgc3RyaW5nSWRlbnRpZmllcigpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGRp
c3BsYXlOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTmFtZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMoKSBjb25zdDsKKyAgICBTUUxpdGVEYXRhYmFz
ZSYgc3FsaXRlRGF0YWJhc2UoKSB7IHJldHVybiBtX3NxbGl0ZURhdGFiYXNlOyB9CisKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgbWF4aW11bVNpemUoKSBjb25zdDsKKyAgICB2b2lkIGluY3JlbWVu
dGFsVmFjdXVtSWZOZWVkZWQoKTsKKyAgICB2b2lkIGludGVycnVwdCgpOworICAgIGJvb2wgaXNJ
bnRlcnJ1cHRlZCgpOworCisgICAgdm9pZCBkaXNhYmxlQXV0aG9yaXplcigpOworICAgIHZvaWQg
ZW5hYmxlQXV0aG9yaXplcigpOworICAgIHZvaWQgc2V0QXV0aG9yaXplclJlYWRPbmx5KCk7Cisg
ICAgdm9pZCBzZXRBdXRob3JpemVyUGVybWlzc2lvbnMoaW50IHBlcm1pc3Npb25zKTsKKyAgICBi
b29sIGxhc3RBY3Rpb25DaGFuZ2VkRGF0YWJhc2UoKTsKKyAgICBib29sIGxhc3RBY3Rpb25XYXNJ
bnNlcnQoKTsKKyAgICB2b2lkIHJlc2V0RGVsZXRlcygpOworICAgIGJvb2wgaGFkRGVsZXRlcygp
OworICAgIHZvaWQgcmVzZXRBdXRob3JpemVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0Fz
RGVsZXRlZEFuZENsb3NlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUltbWVkaWF0ZWx5
KCkgPSAwOworCisgICAgRGF0YWJhc2VDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2RhdGFiYXNlQ29udGV4dC5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZnJp
ZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFwcGVyOworICAgIGZyaWVuZCBjbGFzcyBTUUxTdGF0
ZW1lbnQ7CisgICAgZnJpZW5kIGNsYXNzIFNRTFN0YXRlbWVudFN5bmM7CisgICAgZnJpZW5kIGNs
YXNzIFNRTFRyYW5zYWN0aW9uU3luYzsKKyAgICBmcmllbmQgY2xhc3MgU1FMVHJhbnNhY3Rpb247
CisKKyAgICBlbnVtIERhdGFiYXNlVHlwZSB7CisgICAgICAgIEFzeW5jRGF0YWJhc2UsCisgICAg
ICAgIFN5bmNEYXRhYmFzZQorICAgIH07CisKKyAgICBBYnN0cmFjdERhdGFiYXNlKFBhc3NSZWZQ
dHI8RGF0YWJhc2VDb250ZXh0PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VUeXBlKTsKKworICAg
IHZvaWQgY2xvc2VEYXRhYmFzZSgpOworCisgICAgdmlydHVhbCBib29sIHBlcmZvcm1PcGVuQW5k
VmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUm
LCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisKKyAgICBib29sIGdldFZlcnNpb25Gcm9tRGF0YWJh
c2UoU3RyaW5nJiB2ZXJzaW9uLCBib29sIHNob3VsZENhY2hlVmVyc2lvbiA9IHRydWUpOworICAg
IGJvb2wgc2V0VmVyc2lvbkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBib29sIHNo
b3VsZENhY2hlVmVyc2lvbiA9IHRydWUpOworICAgIHZvaWQgc2V0RXhwZWN0ZWRWZXJzaW9uKGNv
bnN0IFN0cmluZyYpOworICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9leHBlY3RlZFZlcnNpb247IH0KKyAgICBTdHJpbmcgZ2V0Q2FjaGVkVmVyc2lv
bigpY29uc3Q7CisgICAgdm9pZCBzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYpOworICAg
IGJvb2wgZ2V0QWN0dWFsVmVyc2lvbkZvclRyYW5zYWN0aW9uKFN0cmluZyYgdmVyc2lvbik7CisK
KyAgICB2b2lkIGxvZ0Vycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCisgICAg
dm9pZCByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVy
cm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CisgICAgdm9pZCByZXBvcnRDaGFuZ2VWZXJz
aW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVF
cnJvckNvZGUpOworICAgIHZvaWQgcmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdChpbnQgZXJy
b3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKKyAgICB2
b2lkIHJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJT
cWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOworICAgIHZvaWQgcmVwb3J0RXhlY3V0
ZVN0YXRlbWVudFJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQg
c3FsaXRlRXJyb3JDb2RlKTsKKyAgICB2b2lkIHJlcG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0KGlu
dCBzcWxpdGVFcnJvckNvZGUpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFiYXNlSW5m
b1RhYmxlTmFtZSgpOworCisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX2NvbnRleHRUaHJl
YWRTZWN1cml0eU9yaWdpbjsKKyAgICBSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBtX2RhdGFiYXNl
Q29udGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KKyAg
ICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OworCisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBTdHJpbmcgbV9leHBlY3RlZFZlcnNpb247Cisg
ICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CisgICAgdW5zaWduZWQgbG9uZyBtX2VzdGltYXRlZFNp
emU7CisgICAgU3RyaW5nIG1fZmlsZW5hbWU7CisKKyNpZiAhTE9HX0RJU0FCTEVEIHx8ICFFUlJP
Ul9ESVNBQkxFRAorICAgIFN0cmluZyBkYXRhYmFzZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpICsgIjo6IiArIG1fbmFt
ZTsgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VHdWlkIG1fZ3VpZDsKKyAgICBi
b29sIG1fb3BlbmVkOworICAgIGJvb2wgbV9uZXc7CisgICAgY29uc3QgYm9vbCBtX2lzU3luY0Rh
dGFiYXNlOworCisgICAgU1FMaXRlRGF0YWJhc2UgbV9zcWxpdGVEYXRhYmFzZTsKKworICAgIFJl
ZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRob3JpemVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKwor
I2VuZGlmIC8vIEFic3RyYWN0RGF0YWJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCShyZXZpc2lvbiAxNDEx
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgQWJzdHJhY3REYXRhYmFzZV9oCi0jZGVmaW5lIEFic3RyYWN0RGF0YWJhc2VfaAor
I2lmbmRlZiBEYXRhYmFzZUJhY2tlbmRfaAorI2RlZmluZSBEYXRhYmFzZUJhY2tlbmRfaAogCiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIApAQCAtNTAsOSArNTAsOSBAQCBjbGFzcyBEYXRhYmFz
ZUNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKLWNsYXNzIEFic3RyYWN0RGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8QWJzdHJhY3REYXRhYmFzZT4geworY2xhc3MgRGF0YWJhc2VCYWNrZW5kIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFiYXNlQmFja2VuZD4gewogcHVibGljOgotICAgIHZp
cnR1YWwgfkFic3RyYWN0RGF0YWJhc2UoKTsKKyAgICB2aXJ0dWFsIH5EYXRhYmFzZUJhY2tlbmQo
KTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKIApAQCAtMTAxLDggKzEw
MSw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3luY0RhdGFiYXNlCiAgICAgfTsKIAotICAgIEFi
c3RyYWN0RGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXpl
LCBEYXRhYmFzZVR5cGUpOworICAgIERhdGFiYXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNl
Q29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNp
b24sCisgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSwgRGF0YWJhc2VUeXBlKTsKIAogICAgIHZvaWQgY2xvc2VEYXRhYmFzZSgpOwog
CkBAIC0xNTYsNCArMTU2LDQgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJMRShTUUxfREFU
QUJBU0UpCiAKLSNlbmRpZiAvLyBBYnN0cmFjdERhdGFiYXNlX2gKKyNlbmRpZiAvLyBEYXRhYmFz
ZUJhY2tlbmRfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTQxMTg3KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0j
aW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgpA
QCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzY2hlZHVsZU5vdGlmeURh
dGEKICAgICBtX3NlcnZlci0+c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQob3JpZ2luLCBu
YW1lKTsKIH0KIAotdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlQ2hhbmdlZChBYnN0cmFj
dERhdGFiYXNlKiBkYXRhYmFzZSkKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZUNoYW5n
ZWQoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKICAgICBtX3NlcnZlci0+ZGF0YWJhc2VD
aGFuZ2VkKGRhdGFiYXNlKTsKIH0KQEAgLTM2MiwxMiArMzYyLDEyIEBAIGJvb2wgRGF0YWJhc2VN
YW5hZ2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmEKICAgICByZXR1cm4gbV9zZXJ2ZXItPmNhbkVzdGFi
bGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsK
IH0KIAotdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmFkZE9wZW5EYXRhYmFzZShBYnN0cmFjdERhdGFi
YXNlKiBkYXRhYmFzZSkKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0
YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKICAgICBtX3NlcnZlci0+YWRkT3BlbkRhdGFiYXNl
KGRhdGFiYXNlKTsKIH0KIAotdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZU9wZW5EYXRhYmFz
ZShBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpyZW1v
dmVPcGVuRGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKICAgICBtX3NlcnZl
ci0+cmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlKTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2
b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEZXRhaWxzCiAgICAgbV9zZXJ2ZXItPnNl
dERhdGFiYXNlRGV0YWlscyhvcmlnaW4sIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
KTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6Z2V0TWF4U2l6ZUZv
ckRhdGFiYXNlKGNvbnN0IEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQordW5zaWduZWQgbG9u
ZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFi
YXNlQmFja2VuZCogZGF0YWJhc2UpCiB7CiAgICAgcmV0dXJuIG1fc2VydmVyLT5nZXRNYXhTaXpl
Rm9yRGF0YWJhc2UoZGF0YWJhc2UpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lvbiAxNDExODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIC8vIEZyb20g
YSBzZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEKICAg
ICB2b2lkIHNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0
YWJhc2UqKTsKKyAgICB2b2lkIGRhdGFiYXNlQ2hhbmdlZChEYXRhYmFzZUJhY2tlbmQqKTsKIAog
I2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKQEAgLTExMiwxMSArMTEyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGludGVycnVwdEFsbERh
dGFiYXNlc0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgYm9vbCBj
YW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpOwotICAgIHZvaWQgYWRkT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqKTsKLSAg
ICB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShBYnN0cmFjdERhdGFiYXNlKik7CisgICAgdm9pZCBh
ZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5kKik7CisgICAgdm9pZCByZW1vdmVPcGVuRGF0
YWJhc2UoRGF0YWJhc2VCYWNrZW5kKik7CiAKICAgICB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKLSAgICB1bnNpZ25lZCBsb25nIGxv
bmcgZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IEFic3RyYWN0RGF0YWJhc2UqKTsKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlQmFj
a2VuZCopOwogCiBwcml2YXRlOgogICAgIERhdGFiYXNlTWFuYWdlcigpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAko
cmV2aXNpb24gMTQxMTg3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VTeW5jOjpEYXRhYmFzZVN5bmMoUGFzc1JlZlB0cjxEYXRh
YmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLSAgICA6
IEFic3RyYWN0RGF0YWJhc2UoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24s
IGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBTeW5jRGF0YWJhc2UpCisgICAgOiBEYXRhYmFz
ZUJhY2tlbmQoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlO
YW1lLCBlc3RpbWF0ZWRTaXplLCBTeW5jRGF0YWJhc2UpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaAkocmV2aXNp
b24gMTQxMTg3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogCiAvLyBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBzaG91bGQgYmUgY3Jl
YXRlZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSB3b3JrZXIncyBjb250ZXh0IHRocmVhZC4KLWNsYXNz
IERhdGFiYXNlU3luYyA6IHB1YmxpYyBBYnN0cmFjdERhdGFiYXNlIHsKK2NsYXNzIERhdGFiYXNl
U3luYyA6IHB1YmxpYyBEYXRhYmFzZUJhY2tlbmQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRh
dGFiYXNlU3luYygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAxNDExODcpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgiCkBAIC0yMTMsNyArMjEzLDcgQEAg
Ym9vbCBEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yRGF0YWJhcwogICAgIHJldHVybiBzdGF0
ZW1lbnQuc3RlcCgpID09IFNRTFJlc3VsdFJvdzsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIERh
dGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IEFic3RyYWN0RGF0YWJh
c2UqIGRhdGFiYXNlKQordW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4
U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiB7CiAgICAg
Ly8gVGhlIG1heGltdW0gc2l6ZSBmb3IgYSBkYXRhYmFzZSBpcyB0aGUgZnVsbCBxdW90YSBmb3Ig
aXRzIG9yaWdpbiwgbWludXMgdGhlIGN1cnJlbnQgdXNhZ2Ugd2l0aGluIHRoZSBvcmlnaW4sCiAg
ICAgLy8gcGx1cyB0aGUgY3VycmVudCB1c2FnZSBvZiB0aGUgZ2l2ZW4gZGF0YWJhc2UKQEAgLTIy
Myw3ICsyMjMsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjpnZXRNCiAg
ICAgcmV0dXJuIHF1b3RhRm9yT3JpZ2luTm9Mb2NrKG9yaWdpbikgLSBvcmlnaW5RdW90YU1hbmFn
ZXIoKS5kaXNrVXNhZ2Uob3JpZ2luKSArIFNRTGl0ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmls
ZVNpemUoZGF0YWJhc2UtPmZpbGVOYW1lKCkpOwogfQogCi12b2lkIERhdGFiYXNlVHJhY2tlcjo6
ZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQordm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OmRhdGFiYXNlQ2hhbmdlZChEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewog
ICAgIExvY2tlcjxPcmlnaW5RdW90YU1hbmFnZXI+IHF1b3RhTWFuYWdlckxvY2tlcihvcmlnaW5R
dW90YU1hbmFnZXIoKSk7CiAgICAgb3JpZ2luUXVvdGFNYW5hZ2VyKCkubWFya0RhdGFiYXNlKGRh
dGFiYXNlKTsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJh
c2VDaGFuZ2VkKEFiCiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFz
ZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxBYnN0cmFjdERhdGFiYXNlPiA+IG9wZW5EYXRhYmFzZXM7CisgICAg
VmVjdG9yPFJlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+ID4gb3BlbkRhdGFiYXNlczsKICAgICB7CiAg
ICAgICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBH
dWFyZCk7CiAKQEAgLTI1Myw4ICsyNTMsOCBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6aW50ZXJy
dXB0QWxsRGF0YWJhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFic3Ry
YWN0RGF0YWJhc2U+ID46OmNvbnN0X2l0ZXJhdG9yIG9wZW5EYXRhYmFzZXNFbmRJdCA9IG9wZW5E
YXRhYmFzZXMuZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEFic3RyYWN0RGF0YWJhc2U+
ID46OmNvbnN0X2l0ZXJhdG9yIG9wZW5EYXRhYmFzZXNJdCA9IG9wZW5EYXRhYmFzZXMuYmVnaW4o
KTsgb3BlbkRhdGFiYXNlc0l0ICE9IG9wZW5EYXRhYmFzZXNFbmRJdDsgKytvcGVuRGF0YWJhc2Vz
SXQpCisgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+ID46OmNvbnN0X2l0ZXJhdG9y
IG9wZW5EYXRhYmFzZXNFbmRJdCA9IG9wZW5EYXRhYmFzZXMuZW5kKCk7CisgICAgZm9yIChWZWN0
b3I8UmVmUHRyPERhdGFiYXNlQmFja2VuZD4gPjo6Y29uc3RfaXRlcmF0b3Igb3BlbkRhdGFiYXNl
c0l0ID0gb3BlbkRhdGFiYXNlcy5iZWdpbigpOyBvcGVuRGF0YWJhc2VzSXQgIT0gb3BlbkRhdGFi
YXNlc0VuZEl0OyArK29wZW5EYXRhYmFzZXNJdCkKICAgICAgICAgKCpvcGVuRGF0YWJhc2VzSXQp
LT5pbnRlcnJ1cHQoKTsKIH0KIApAQCAtNDkyLDcgKzQ5Miw3IEBAIHVuc2lnbmVkIGxvbmcgbG9u
ZyBEYXRhYmFzZVRyYWNrZXI6OnVzYWcKICAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3RlbTo6Z2V0
RGF0YWJhc2VGaWxlU2l6ZShwYXRoKTsKIH0KIAotdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9w
ZW5EYXRhYmFzZShBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3ZvaWQgRGF0YWJhc2VUcmFj
a2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKICAgICBp
ZiAoIWRhdGFiYXNlKQogICAgICAgICByZXR1cm47CkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBE
YXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZShBYgogICAgIGRvbmVDcmVhdGluZ0RhdGFi
YXNlKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmll
cigpKTsKIH0KIAotdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShBYnN0
cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVu
RGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKICAgICBpZiAoIWRhdGFiYXNl
KQogICAgICAgICByZXR1cm47CkBAIC01NzgsNyArNTc4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNr
ZXI6OnJlbW92ZU9wZW5EYXRhYmFzZQogICAgIH0KIH0KIAotdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OmdldE9wZW5EYXRhYmFzZXMoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIYXNoU2V0PFJlZlB0cjxBYnN0cmFjdERhdGFiYXNlPiA+KiBkYXRhYmFzZXMpCit2b2lk
IERhdGFiYXNlVHJhY2tlcjo6Z2V0T3BlbkRhdGFiYXNlcyhTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlQmFja2VuZD4gPiog
ZGF0YWJhc2VzKQogewogICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVu
RGF0YWJhc2VNYXBHdWFyZCk7CiAgICAgaWYgKCFtX29wZW5EYXRhYmFzZU1hcCkKQEAgLTEwMDAs
NyArMTAwMCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKICAg
ICB9CiAjZW5kaWYKIAotICAgIFZlY3RvcjxSZWZQdHI8QWJzdHJhY3REYXRhYmFzZT4gPiBkZWxl
dGVkRGF0YWJhc2VzOworICAgIFZlY3RvcjxSZWZQdHI8RGF0YWJhc2VCYWNrZW5kPiA+IGRlbGV0
ZWREYXRhYmFzZXM7CiAKICAgICAvLyBNYWtlIHN1cmUgbm90IHRvIGhvbGQgdGhlIGFueSBsb2Nr
cyB3aGVuIGNhbGxpbmcKICAgICAvLyBEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKCks
IHNpbmNlIHRoYXQgY2FuIGNhdXNlIGEgZGVhZGxvY2sKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24g
MTQxMTg3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEFic3RyYWN0RGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmQ7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAK
QEAgLTc0LDEyICs3NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREYXRhYmFzZURldGFpbHMo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CiAgICAgU3RyaW5nIGZ1bGxQYXRo
Rm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3Jl
YXRlSWZEb2VzTm90RXhpc3QgPSB0cnVlKTsKIAotICAgIHZvaWQgYWRkT3BlbkRhdGFiYXNlKEFi
c3RyYWN0RGF0YWJhc2UqKTsKLSAgICB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShBYnN0cmFjdERh
dGFiYXNlKik7Ci0gICAgdm9pZCBnZXRPcGVuRGF0YWJhc2VzKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgSGFzaFNldDxSZWZQdHI8QWJzdHJhY3REYXRhYmFzZT4g
PiogZGF0YWJhc2VzKTsKKyAgICB2b2lkIGFkZE9wZW5EYXRhYmFzZShEYXRhYmFzZUJhY2tlbmQq
KTsKKyAgICB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZUJhY2tlbmQqKTsKKyAgICB2
b2lkIGdldE9wZW5EYXRhYmFzZXMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUs
IEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlQmFja2VuZD4gPiogZGF0YWJhc2VzKTsKIAotICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRh
YmFzZSopOwotICAgIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqKTsKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNl
QmFja2VuZCopOworICAgIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKERhdGFiYXNlQmFja2VuZCopOwog
CiAgICAgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIGRlbGV0ZURhdGFiYXNlRmlsZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8QWJzdHJhY3REYXRhYmFzZSo+IERhdGFiYXNlU2V0
OworICAgIHR5cGVkZWYgSGFzaFNldDxEYXRhYmFzZUJhY2tlbmQqPiBEYXRhYmFzZVNldDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBEYXRhYmFzZVNldCo+IERhdGFiYXNlTmFtZU1hcDsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRGF0YWJhc2VOYW1l
TWFwKiwgU2VjdXJpdHlPcmlnaW5IYXNoPiBEYXRhYmFzZU9yaWdpbk1hcDsKIApAQCAtMTc1LDEy
ICsxNzUsMTIgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKIHBy
aXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPiBEYXRhYmFzZVNl
dDsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8RGF0YWJhc2VCYWNrZW5kKj4gRGF0YWJhc2VTZXQ7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VTZXQqPiBEYXRhYmFzZU5hbWVNYXA7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VOYW1lTWFwKj4gRGF0YWJhc2VP
cmlnaW5NYXA7CiAgICAgY2xhc3MgQ2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzazsKIAot
ICAgIHZvaWQgY2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFz
ZSk7CisgICAgdm9pZCBjbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIERhdGFiYXNlQmFja2VuZCopOwog
CiAgICAgTXV0ZXggbV9vcGVuRGF0YWJhc2VNYXBHdWFyZDsKICAgICBtdXRhYmxlIE93blB0cjxE
YXRhYmFzZU9yaWdpbk1hcD4gbV9vcGVuRGF0YWJhc2VNYXA7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAxNDExODcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpblF1b3RhTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcg
QEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFi
YXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCiAjaW5jbHVkZSAiT3JpZ2luVXNh
Z2VSZWNvcmQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEyLDcgKzExMiw3IEBAIHZv
aWQgT3JpZ2luUXVvdGFNYW5hZ2VyOjpyZW1vdmVPcmlnaW4oU2UKICAgICB9CiB9CiAKLXZvaWQg
T3JpZ2luUXVvdGFNYW5hZ2VyOjptYXJrRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJh
c2UpCit2b2lkIE9yaWdpblF1b3RhTWFuYWdlcjo6bWFya0RhdGFiYXNlKERhdGFiYXNlQmFja2Vu
ZCogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKICAgICBBU1NFUlQobV91c2Fn
ZVJlY29yZEd1YXJkTG9ja2VkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuaAkocmV2aXNpb24gMTQxMTg3
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEFic3RyYWN0RGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmQ7CiBj
bGFzcyBPcmlnaW5Vc2FnZVJlY29yZDsKIAogY2xhc3MgT3JpZ2luUXVvdGFNYW5hZ2VyIHsKQEAg
LTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1v
dmVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKIAotICAgIHZvaWQgbWFya0RhdGFiYXNlKEFic3Ry
YWN0RGF0YWJhc2UqKTsgLy8gTWFyayBkaXJ0aW5lc3Mgb2YgYSBzcGVjaWZpYyBkYXRhYmFzZS4K
KyAgICB2b2lkIG1hcmtEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmQqKTsgLy8gTWFyayBkaXJ0aW5l
c3Mgb2YgYSBzcGVjaWZpYyBkYXRhYmFzZS4KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlza1Vz
YWdlKFNlY3VyaXR5T3JpZ2luKikgY29uc3Q7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
Q2xpZW50LmNwcAkocmV2aXNpb24gMTQxMTg3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJBYnN0
cmFjdERhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDEsMTggKzQxLDE4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0V3Jp
dGVUcmFuc2FjdGlvbihBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3ZvaWQgU1FMVHJhbnNh
Y3Rpb25DbGllbnQ6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oRGF0YWJhc2VCYWNrZW5kKiBk
YXRhYmFzZSkKIHsKICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zY2hlZHVsZU5vdGlm
eURhdGFiYXNlQ2hhbmdlZCgKICAgICAgICAgZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCksIGRh
dGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFNRTFRyYW5zYWN0aW9uQ2xp
ZW50OjpkaWRFeGVjdXRlU3RhdGVtZW50KEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQordm9p
ZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhlY3V0ZVN0YXRlbWVudChEYXRhYmFzZUJhY2tl
bmQqIGRhdGFiYXNlKQogewogICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNl
Q2hhbmdlZChkYXRhYmFzZSk7CiB9CiAKLWJvb2wgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4
Y2VlZFF1b3RhKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQorYm9vbCBTUUxUcmFuc2FjdGlv
bkNsaWVudDo6ZGlkRXhjZWVkUXVvdGEoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKICAg
ICBBU1NFUlQoZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhy
ZWFkKCkpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4o
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oCShyZXZpc2lvbiAxNDExODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBBYnN0cmFjdERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VCYWNrZW5kOwogCiAvLyBBIGNsaWVu
dCB0byB0aGUgU1FMVHJhbnNhY3Rpb24gY2xhc3MuIEFsbG93cyBTUUxUcmFuc2FjdGlvbiB0byBu
b3RpZnkgaW50ZXJlc3RlZAogLy8gcGFydGllcyB0aGF0IGNlcnRhaW4gdGhpbmdzIGhhdmUgaGFw
cGVuZWQgaW4gYSB0cmFuc2FjdGlvbi4KQEAgLTQ2LDkgKzQ2LDkgQEAgY2xhc3MgU1FMVHJhbnNh
Y3Rpb25DbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTFRyYW5zYWN0aW9uQ2xp
ZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1FMVHJhbnNhY3Rp
b25DbGllbnQoKSB7IH0KLSAgICB2b2lkIGRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oQWJzdHJh
Y3REYXRhYmFzZSopOwotICAgIHZvaWQgZGlkRXhlY3V0ZVN0YXRlbWVudChBYnN0cmFjdERhdGFi
YXNlKik7Ci0gICAgYm9vbCBkaWRFeGNlZWRRdW90YShBYnN0cmFjdERhdGFiYXNlKik7CisgICAg
dm9pZCBkaWRDb21taXRXcml0ZVRyYW5zYWN0aW9uKERhdGFiYXNlQmFja2VuZCopOworICAgIHZv
aWQgZGlkRXhlY3V0ZVN0YXRlbWVudChEYXRhYmFzZUJhY2tlbmQqKTsKKyAgICBib29sIGRpZEV4
Y2VlZFF1b3RhKERhdGFiYXNlQmFja2VuZCopOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9EYXRhYmFzZU9ic2VydmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9EYXRh
YmFzZU9ic2VydmVyLmgJKHJldmlzaW9uIDE0MTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vRGF0YWJhc2VPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQWJzdHJh
Y3REYXRhYmFzZTsKK2NsYXNzIERhdGFiYXNlQmFja2VuZDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAKIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNsYXNzIGlzIGluIHRo
ZSBXZWJLaXQgQVBJIChDaHJvbWl1bSBzb3VyY2UgdHJlZSkKQEAgLTQ1LDE2ICs0NSwxNiBAQCBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgRGF0YWJhc2VPYnNlcnZlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcp
OwotICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlT3BlbmVkKEFic3RyYWN0RGF0YWJhc2UqKTsKLSAg
ICBzdGF0aWMgdm9pZCBkYXRhYmFzZU1vZGlmaWVkKEFic3RyYWN0RGF0YWJhc2UqKTsKLSAgICBz
dGF0aWMgdm9pZCBkYXRhYmFzZUNsb3NlZChBYnN0cmFjdERhdGFiYXNlKik7Ci0KLSAgICBzdGF0
aWMgdm9pZCByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoQWJzdHJhY3REYXRhYmFzZSosIGludCBj
YWxsc2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7Ci0gICAg
c3RhdGljIHZvaWQgcmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdChBYnN0cmFjdERhdGFiYXNlKiwg
aW50IGNhbGxzaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsK
LSAgICBzdGF0aWMgdm9pZCByZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KEFic3RyYWN0RGF0
YWJhc2UqLCBpbnQgY2FsbHNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJv
ckNvZGUpOwotICAgIHN0YXRpYyB2b2lkIHJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KEFi
c3RyYWN0RGF0YWJhc2UqLCBpbnQgY2FsbHNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBz
cWxpdGVFcnJvckNvZGUpOwotICAgIHN0YXRpYyB2b2lkIHJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRS
ZXN1bHQoQWJzdHJhY3REYXRhYmFzZSosIGludCBjYWxsc2l0ZSwgaW50IHdlYlNxbEVycm9yQ29k
ZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVwb3J0VmFjdXVtRGF0
YWJhc2VSZXN1bHQoQWJzdHJhY3REYXRhYmFzZSosIGludCBzcWxpdGVFcnJvckNvZGUpOworICAg
IHN0YXRpYyB2b2lkIGRhdGFiYXNlT3BlbmVkKERhdGFiYXNlQmFja2VuZCopOworICAgIHN0YXRp
YyB2b2lkIGRhdGFiYXNlTW9kaWZpZWQoRGF0YWJhc2VCYWNrZW5kKik7CisgICAgc3RhdGljIHZv
aWQgZGF0YWJhc2VDbG9zZWQoRGF0YWJhc2VCYWNrZW5kKik7CisKKyAgICBzdGF0aWMgdm9pZCBy
ZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoRGF0YWJhc2VCYWNrZW5kKiwgaW50IGNhbGxzaXRlLCBp
bnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKKyAgICBzdGF0aWMgdm9p
ZCByZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KERhdGFiYXNlQmFja2VuZCosIGludCBjYWxsc2l0
ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CisgICAgc3RhdGlj
IHZvaWQgcmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdChEYXRhYmFzZUJhY2tlbmQqLCBpbnQg
Y2FsbHNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOworICAg
IHN0YXRpYyB2b2lkIHJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KERhdGFiYXNlQmFja2Vu
ZCosIGludCBjYWxsc2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29k
ZSk7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdChEYXRhYmFz
ZUJhY2tlbmQqLCBpbnQgY2FsbHNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVF
cnJvckNvZGUpOworICAgIHN0YXRpYyB2b2lkIHJlcG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0KERh
dGFiYXNlQmFja2VuZCosIGludCBzcWxpdGVFcnJvckNvZGUpOwogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJD
aHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDE0MTE4
NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vRGF0YWJh
c2VUcmFja2VyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJRdW90YVRyYWNrZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCkBAIC03MSw3ICs3MSw3IEBAIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1
bGxQYXRoRm9yRGF0YWIKICAgICByZXR1cm4gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSAr
ICIvIiArIG5hbWUgKyAiIyI7CiB9CiAKLXZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0
YWJhc2UoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6
YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJU
KGRhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsK
ICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3Vh
cmQpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFi
YXNlKEFiCiAKIGNsYXNzIE5vdGlmeURhdGFiYXNlT2JzZXJ2ZXJPbkNsb3NlVGFzayA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxOb3RpZnlEYXRhYmFzZU9ic2VydmVyT25DbG9zZVRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPEFic3RyYWN0RGF0YWJhc2U+IGRhdGFiYXNlKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPE5v
dGlmeURhdGFiYXNlT2JzZXJ2ZXJPbkNsb3NlVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RGF0YWJh
c2VCYWNrZW5kPiBkYXRhYmFzZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Tm90aWZ5RGF0YWJhc2VPYnNlcnZlck9uQ2xvc2VUYXNrKGRhdGFiYXNlKSk7CiAgICAgfQpAQCAt
MTE1LDE1ICsxMTUsMTUgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBOb3RpZnlE
YXRhYmFzZU9ic2VydmVyT25DbG9zZVRhc2soUGFzc1JlZlB0cjxBYnN0cmFjdERhdGFiYXNlPiBk
YXRhYmFzZSkKKyAgICBOb3RpZnlEYXRhYmFzZU9ic2VydmVyT25DbG9zZVRhc2soUGFzc1JlZlB0
cjxEYXRhYmFzZUJhY2tlbmQ+IGRhdGFiYXNlKQogICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJh
c2UpCiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxBYnN0cmFjdERhdGFiYXNlPiBtX2RhdGFi
YXNlOworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+IG1fZGF0YWJhc2U7CiB9OwogCi12b2lk
IERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRh
dGFiYXNlKQordm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFz
ZUJhY2tlbmQqIGRhdGFiYXNlKQogewogICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gZGF0
YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIE11dGV4
TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CkBAIC0x
NTcsNyArMTU3LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZQog
ICAgICAgICBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZUNsb3NlZChkYXRhYmFzZSk7CiB9CiAK
LXVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JEYXRhYmFz
ZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3Vuc2lnbmVkIGxvbmcgbG9uZyBE
YXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tl
bmQqIGRhdGFiYXNlKQogewogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzcGFjZUF2YWlsYWJsZSA9
IDA7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFiYXNlU2l6ZSA9IDA7CkBAIC0xOTEsNyAr
MTkxLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYQogCiBjbGFz
cyBEYXRhYmFzZVRyYWNrZXI6OkNsb3NlT25lRGF0YWJhc2VJbW1lZGlhdGVseVRhc2sgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8Q2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzaz4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBBYnN0cmFjdERhdGFi
YXNlKiBkYXRhYmFzZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDbG9zZU9uZURhdGFiYXNlSW1t
ZWRpYXRlbHlUYXNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5hbWUsIERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENsb3NlT25lRGF0YWJhc2VJbW1lZGlhdGVseVRhc2sob3Jp
Z2luSWRlbnRpZmllciwgbmFtZSwgZGF0YWJhc2UpKTsKICAgICB9CkBAIC0yMDIsNyArMjAyLDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDbG9zZU9uZURhdGFiYXNlSW1tZWRp
YXRlbHlUYXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
YW1lLCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKKyAgICBDbG9zZU9uZURhdGFiYXNlSW1t
ZWRpYXRlbHlUYXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuYW1lLCBEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogICAgICAgICA6IG1fb3JpZ2luSWRl
bnRpZmllcihvcmlnaW5JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQogICAgICAgICAsIG1fbmFt
ZShuYW1lLmlzb2xhdGVkQ29weSgpKQogICAgICAgICAsIG1fZGF0YWJhc2UoZGF0YWJhc2UpCkBA
IC0yMTEsNyArMjExLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX29yaWdpbklkZW50aWZp
ZXI7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBBYnN0cmFjdERhdGFiYXNlKiBtX2RhdGFiYXNl
OyAgLy8gSW50ZW50aW9uYWxseSBhIHJhdyBwb2ludGVyLgorICAgIERhdGFiYXNlQmFja2VuZCog
bV9kYXRhYmFzZTsgLy8gSW50ZW50aW9uYWxseSBhIHJhdyBwb2ludGVyLgogfTsKIAogdm9pZCBE
YXRhYmFzZVRyYWNrZXI6OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpIHsKQEAgLTIzNCw3ICsyMzQsNyBA
QCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6Y2xvc2VEYXRhYmFzZXNJbW1lCiAgICAgICAgICgqaXQp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKENsb3NlT25lRGF0YWJhc2VJbW1l
ZGlhdGVseVRhc2s6OmNyZWF0ZShvcmlnaW5JZGVudGlmaWVyLCBuYW1lLCAqaXQpKTsKIH0KIAot
dm9pZCBEYXRhYmFzZVRyYWNrZXI6OmNsb3NlT25lRGF0YWJhc2VJbW1lZGlhdGVseShjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgQWJzdHJhY3REYXRh
YmFzZSogZGF0YWJhc2UpCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6Y2xvc2VPbmVEYXRhYmFzZUlt
bWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
YW1lLCBEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewogICAgIC8vIEZpcnN0IHdlIGhhdmUg
dG8gY29uZmlybSB0aGUgJ2RhdGFiYXNlJyBpcyBzdGlsbCBpbiBvdXIgY29sbGVjdGlvbi4KICAg
ICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1NR
TFRyYW5zYWN0aW9uQ2xpZW50Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vU1FMVHJhbnNhY3Rpb25DbGllbnRDaHJv
bWl1bS5jcHAJKHJldmlzaW9uIDE0MTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvY2hyb21pdW0vU1FMVHJhbnNhY3Rpb25DbGllbnRDaHJvbWl1bS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAK
LSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5k
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKIApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE5vdGlmeURhdGFiYXNlQ2hhbmdlZFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Tm90aWZ5RGF0
YWJhc2VDaGFuZ2VkVGFzaz4gY3JlYXRlKEFic3RyYWN0RGF0YWJhc2UgKmRhdGFiYXNlKQorICAg
IHN0YXRpYyBQYXNzT3duUHRyPE5vdGlmeURhdGFiYXNlQ2hhbmdlZFRhc2s+IGNyZWF0ZShEYXRh
YmFzZUJhY2tlbmQgKmRhdGFiYXNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBOb3RpZnlEYXRhYmFzZUNoYW5nZWRUYXNrKGRhdGFiYXNlKSk7CiAgICAgfQpAQCAtNTIsMTUg
KzUyLDE1IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTm90aWZ5RGF0YWJhc2VD
aGFuZ2VkVGFzayhQYXNzUmVmUHRyPEFic3RyYWN0RGF0YWJhc2U+IGRhdGFiYXNlKQorICAgIE5v
dGlmeURhdGFiYXNlQ2hhbmdlZFRhc2soUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+IGRhdGFi
YXNlKQogICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCiAgICAgewogICAgIH0KIAotICAg
IFJlZlB0cjxBYnN0cmFjdERhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIFJlZlB0cjxEYXRhYmFz
ZUJhY2tlbmQ+IG1fZGF0YWJhc2U7CiB9OwogCi12b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50Ojpk
aWRDb21taXRXcml0ZVRyYW5zYWN0aW9uKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQordm9p
ZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlvbihEYXRhYmFz
ZUJhY2tlbmQqIGRhdGFiYXNlKQogewogICAgIGlmICghZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpIHsKICAgICAgICAgZGF0YWJhc2UtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soTm90aWZ5RGF0YWJhc2VDaGFuZ2VkVGFzazo6
Y3JlYXRlKGRhdGFiYXNlKSk7CkBAIC03MCwxMyArNzAsMTMgQEAgdm9pZCBTUUxUcmFuc2FjdGlv
bkNsaWVudDo6ZGlkQ29tbWl0V3JpdAogICAgIFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OmRh
dGFiYXNlTW9kaWZpZWQoZGF0YWJhc2UpOwogfQogCi12b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50
OjpkaWRFeGVjdXRlU3RhdGVtZW50KEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQordm9pZCBT
UUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhlY3V0ZVN0YXRlbWVudChEYXRhYmFzZUJhY2tlbmQq
IGRhdGFiYXNlKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBhZnRlciBleGVjdXRp
bmcgZXZlcnkgc3RhdGVtZW50IHRoYXQgY2hhbmdlcyB0aGUgREIuCiAgICAgLy8gQ2hyb21pdW0g
ZG9lc24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGF0IHRoYXQgcG9pbnQuCiB9CiAKLWJvb2wgU1FM
VHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2VlZFF1b3RhKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFi
YXNlKQorYm9vbCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVkUXVvdGEoRGF0YWJhc2VC
YWNrZW5kKiBkYXRhYmFzZSkKIHsKICAgICAvLyBDaHJvbWl1bSBkb2VzIG5vdCBhbGxvdyB1c2Vy
cyB0byBtYW51YWxseSBjaGFuZ2UgdGhlIHF1b3RhIGZvciBhbiBvcmlnaW4gKGZvciBub3csIGF0
IGxlYXN0KS4KICAgICAvLyBEb24ndCBkbyBhbnl0aGluZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxNDExODcpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjUzNjksMTQgKzI1MzY5LDYgQEAKIAkJCQlOYW1lPSJ3ZWJkYXRhYmFzZSIKIAkJCQk+
CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXEFi
c3RyYWN0RGF0YWJhc2UuY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxBYnN0cmFjdERhdGFiYXNlLmgi
Ci0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCIKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KQEAgLTI1NDA1LDYgKzI1Mzk3LDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFi
YXNlQmFja2VuZC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZC5oIgorCQkJ
CQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxl
c1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNhbGxiYWNrLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJ
KHJldmlzaW9uIDE0MTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NTMsMTAgKzE4NTMsMTAgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb24u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25z
XE5vdGlmaWNhdGlvbkNlbnRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIiAvPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxBYnN0cmFjdERh
dGFiYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0
YWJhc2VcQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQXV0aG9yaXplci5jcHAi
IC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFi
YXNlQmFja2VuZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdl
YmRhdGFiYXNlXERhdGFiYXNlQ29udGV4dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlTWFuYWdlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlU3luYy5jcHAi
IC8+CkBAIC02Mzk5LDExICs2Mzk5LDExIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2VudGVyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2xpZW50
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNc
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcQWJzdHJhY3REYXRhYmFzZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxBYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNl
XENoYW5nZVZlcnNpb25XcmFwcGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQXV0aG9yaXplci5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0
YWJhc2VDYWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3
ZWJkYXRhYmFzZVxEYXRhYmFzZUNvbnRleHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VNYW5hZ2VyLmgiIC8+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzCShyZXZpc2lvbiAxNDExODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE4MjcsOSArMTgy
Nyw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNc
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1xu
b3RpZmljYXRpb25zPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXEFic3RyYWN0RGF0YWJhc2UuY3BwIj4KLSAg
ICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFuZ2VW
ZXJzaW9uV3JhcHBlci5jcHAiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xODM5LDYgKzE4MzYsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUF1dGhvcml6ZXIu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFz
ZVxEYXRhYmFzZUJhY2tlbmQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFz
ZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNvbnRleHQuY3BwIj4KICAgICAgIDxGaWx0ZXI+
TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtODQzMiw5
ICs4NDMyLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbm90aWZpY2F0
aW9uc1xXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxl
c1xub3RpZmljYXRpb25zPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXEFic3RyYWN0RGF0YWJhc2UuaCI+Ci0g
ICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVk
ZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtODQ0Nyw2ICs4NDQ0LDkgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VBdXRob3JpemVy
LmgiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNl
XERhdGFiYXNlQmFja2VuZC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNhbGxiYWNrLmgiPgogICAgICAgPEZpbHRlcj5Nb2R1
bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxNDExODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2ODksMTQgKzM2ODksMTQgQEAKIAkJOTdCMzhFMjcx
NTFDNDI3MTAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjM4RTI0MTUxQzQyNjQwMDQ2MjJF
OSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggKi87IH07CiAJCTk3QjM4RTI4MTUxQzQyNzMw
MDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjM4RTIzMTUxQzQyNjQwMDQ2MjJFOSAvKiBE
T01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCAqLzsgfTsKIAkJOTdCOEZGRDExNkFFN0Y5NjAwMzgz
ODhEIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjhGRkNGMTZBRTdGOTIwMDM4Mzg4RCAv
KiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggKi87IH07Ci0JCTk3QkM2OURBMTUw
NUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUQ2MTUwNUYwNzYwMDFCNzRBQyAvKiBB
YnN0cmFjdERhdGFiYXNlLmNwcCAqLzsgfTsKLQkJOTdCQzY5REIxNTA1RjA3NjAwMUI3NEFDIC8q
IEFic3RyYWN0RGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3QkM2OUQ3MTUwNUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzY5
REMxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUQ4MTUwNUYwNzYwMDFC
NzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgKi87IH07CiAJCTk3QkM2OUREMTUwNUYw
NzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENo
YW5nZVZlcnNpb25XcmFwcGVyLmggKi87IH07CiAJCTk3QkM2QTIwMTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0JDNjlERTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwICovOyB9OwogCQk5
N0JDNkEyMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OURGMTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZS5oICovOyB9OwogCQk5N0JDNkEyMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VB
dXRob3JpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3QkM2OUUxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwICov
OyB9OwogCQk5N0JDNkEyNDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFMjE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi87IH07CisJCTk3QkM2OURB
MTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8q
IERhdGFiYXNlQmFja2VuZC5jcHAgKi87IH07CisJCTk3QkM2OURCMTUwNUYwNzYwMDFCNzRBQyAv
KiBEYXRhYmFzZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3QkM2OUQ3MTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0JDNkEy
NTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTMxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlQ2FsbGJhY2suaCAqLzsgfTsKIAkJOTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNw
cCAqLzsgfTsKIAkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTYx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTA5MCw4ICsxMTA5MCw2IEBACiAJCTk3
QjM4RTI0MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaDsgcGF0
aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QjM4RTI1MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01X
aW5kb3dOb3RpZmljYXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBET01XaW5kb3dO
b3RpZmljYXRpb25zLmlkbDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dO
b3RpZmljYXRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCOEZGQ0Yx
NkFFN0Y5MjAwMzgzODhEIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0JDNjlENjE1MDVGMDc2MDAx
Qjc0QUMgLyogQWJzdHJhY3REYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBBYnN0cmFjdERhdGFiYXNlLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJh
c2UvQWJzdHJhY3REYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3
QkM2OUQ3MTUwNUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFic3RyYWN0RGF0YWJhc2UuaDsgcGF0aCA9IE1vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5N0JDNjlEODE1MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2hhbmdlVmVyc2lvbldyYXBw
ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUQ5MTUwNUYwNzYwMDFCNzRB
QyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9D
aGFuZ2VWZXJzaW9uV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JD
NjlERTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2UuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA5OSw2ICsx
MTA5Nyw4IEBACiAJCTk3QkM2OUUwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGF0YWJhc2UuaWRsOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUUx
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VBdXRob3JpemVyLmNwcDsgcGF0aCA9IE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RTIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9y
aXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUF1dGhvcml6
ZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QkM2OUQ2MTUwNUYwNzYwMDFCNzRBQyAvKiBE
YXRhYmFzZUJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGF0YWJhc2VCYWNrZW5kLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VC
YWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdCQzY5RDcxNTA1RjA3
NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUUzMTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERhdGFiYXNlQ2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JD
NjlFNDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gRGF0YWJhc2VDYWxsYmFjay5pZGw7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlQ29udGV4dC5jcHA7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODQ5Myw4ICsxODQ5Myw2IEBACiAJCTk3QkM2OUQ1MTUwNUYwNTQwMDFC
NzRBQyAvKiB3ZWJkYXRhYmFzZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2Uu
Y3BwICovLAotCQkJCTk3QkM2OUQ3MTUwNUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNl
LmggKi8sCiAJCQkJRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIuaCAqLywKIAkJCQk5N0JDNjlEODE1MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lv
bldyYXBwZXIuY3BwICovLAogCQkJCTk3QkM2OUQ5MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VW
ZXJzaW9uV3JhcHBlci5oICovLApAQCAtMTg1MDMsNiArMTg1MDEsOCBAQAogCQkJCTk3QkM2OUUw
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZS5pZGwgKi8sCiAJCQkJOTdCQzY5RTExNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAgKi8sCiAJCQkJOTdCQzY5RTIxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5oICovLAorCQkJCTk3QkM2OUQ2MTUw
NUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuY3BwICovLAorCQkJCTk3QkM2OUQ3MTUw
NUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuaCAqLywKIAkJCQlGRTMzNzFBMDE2N0Mx
MUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi8sCiAJCQkJOTdCQzY5RTMxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCAqLywKIAkJCQk5N0JDNjlFNDE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5pZGwgKi8sCkBAIC0yMjkyOCw3ICsyMjky
OCw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk5N0JDNjlEQjE1MDVGMDc2MDAxQjc0
QUMgLyogQWJzdHJhY3REYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxMTVGQUIxNjc5
ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklB
R3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjMyODgsNiArMjMyODcsNyBAQAogCQkJCUE4
MEU2RDBCMEExOTg5Q0EwMDdGQjhDNSAvKiBEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3QkM2QTIxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTdCQzZBMjQxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTdCQzY5REIxNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNl
QmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMzcxQTIxNjdDMTFENDAwRURCNzUyIC8q
IERhdGFiYXNlQmFzaWNUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjUxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2
QTI4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjY2NTQsNyArMjY2NTQsNiBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJOTdCQzY5
REExNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjlDMTZFMTMwMEMyRTIwMDJENzk0RSAvKiBBY2Nlc3NpYmlsaXR5
QWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzZDREQyRjIxMTAzREE2NjAwNjgwNTIx
IC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTMzLDYg
KzI2OTMyLDcgQEAKIAkJCQlBMjk1MzJDRjE1REQ1RTE3MDA0NjlFQkMgLyogQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEyMDE1MDVGMDgx
MDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBMjMxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5N0JDNjlEQTE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFi
YXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRURFRjg0MTE2Nzk3MTA4MDAwRTQ0
NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDEyMDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAxLTI5
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgQWJzdHJh
Y3REYXRhYmFzZSB0byBEYXRhYmFzZUJhY2tlbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgyNzUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHB1cmUgcmVuYW1lIG9wZXJhdGlvbiBh
cyBwYXJ0IG9mIHRoZSB3ZWJkYXRhYmFzZSByZWZhY3RvcmluZworICAgICAgICBlZmZvcnQuIFRo
ZXJlIGlzIG5vIHNlbWFudGljIGNoYW5nZSBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogcHVi
bGljL1dlYkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJEYXRhYmFzZSk6CisgICAgICAgICogc3Jj
L0RhdGFiYXNlT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZl
cjo6ZGF0YWJhc2VPcGVuZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6
ZGF0YWJhc2VNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9ic2VydmVyOjpk
YXRhYmFzZUNsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9ic2VydmVyOjpyZXBv
cnRPcGVuRGF0YWJhc2VSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZl
cjo6cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU9ic2VydmVyOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRS
ZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0VmFjdXVt
RGF0YWJhc2VSZXN1bHQpOgorICAgICAgICAqIHNyYy9XZWJEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkRhdGFiYXNlOjpXZWJEYXRhYmFzZSk6CisKIDIwMTMtMDEtMjkgIFNoaW55
YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
Q2Fubm90IGNvcHkgdGV4dCB3aGVuIHNlbGVjdGluZyByZWFkb25seSAob3IgZGlzYWJsZWQpIGlu
cHV0IGVsZW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRh
YmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRh
dGFiYXNlLmgJKHJldmlzaW9uIDE0MTE4NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgiCiAjaW5j
bHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBB
YnN0cmFjdERhdGFiYXNlOyB9CituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERhdGFiYXNlQmFj
a2VuZDsgfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNjMsMTIgKzYzLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJT
dHJpbmcmIGRhdGFiYXNlTmFtZSk7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBX
ZWJEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlKik7CisgICAgV2ViRGF0
YWJhc2UoY29uc3QgV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kKik7CiAjZW5kaWYKIAogcHJpdmF0
ZToKICAgICBXZWJEYXRhYmFzZSgpIHsgfQotICAgIGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RGF0
YWJhc2UqIG1fZGF0YWJhc2U7CisgICAgY29uc3QgV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kKiBt
X2RhdGFiYXNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAkocmV2aXNpb24gMTQx
MTg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiQ3Jvc3NUaHJl
YWRDb3BpZXIuaCIKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKKyNpbmNsdWRlICJEYXRh
YmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb21tb25Xb3JrZXJDbGllbnQuaCIKQEAg
LTE3Nyw1MCArMTc3LDUwIEBAIGJvb2wgRGF0YWJhc2VPYnNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0
YWIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFz
ZU9wZW5lZChBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3ZvaWQgRGF0YWJhc2VPYnNlcnZl
cjo6ZGF0YWJhc2VPcGVuZWQoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKICAgICBBU1NF
UlQoZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkp
OwogICAgIFdlYkRhdGFiYXNlOjpvYnNlcnZlcigpLT5kYXRhYmFzZU9wZW5lZChXZWJEYXRhYmFz
ZShkYXRhYmFzZSkpOwogfQogCi12b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlTW9kaWZp
ZWQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OmRh
dGFiYXNlTW9kaWZpZWQoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlQo
ZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwog
ICAgIFdlYkRhdGFiYXNlOjpvYnNlcnZlcigpLT5kYXRhYmFzZU1vZGlmaWVkKFdlYkRhdGFiYXNl
KGRhdGFiYXNlKSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VDbG9zZWQo
QWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFi
YXNlQ2xvc2VkKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKGRhdGFi
YXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBX
ZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+ZGF0YWJhc2VDbG9zZWQoV2ViRGF0YWJhc2UoZGF0YWJh
c2UpKTsKIH0KIAotdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRPcGVuRGF0YWJhc2VSZXN1
bHQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UsIGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxF
cnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCit2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OnJl
cG9ydE9wZW5EYXRhYmFzZVJlc3VsdChEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlLCBpbnQgZXJy
b3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQogewogICAg
IFdlYkRhdGFiYXNlOjpvYnNlcnZlcigpLT5yZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoV2ViRGF0
YWJhc2UoZGF0YWJhc2UpLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JD
b2RlKTsKIH0KIAotdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRDaGFuZ2VWZXJzaW9uUmVz
dWx0KEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlLCBpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3Fs
RXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQordm9pZCBEYXRhYmFzZU9ic2VydmVyOjpy
ZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UsIGludCBl
cnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCiB7CiAg
ICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPnJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoV2Vi
RGF0YWJhc2UoZGF0YWJhc2UpLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJy
b3JDb2RlKTsKIH0KIAotdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRTdGFydFRyYW5zYWN0
aW9uUmVzdWx0KEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlLCBpbnQgZXJyb3JTaXRlLCBpbnQg
d2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQordm9pZCBEYXRhYmFzZU9ic2Vy
dmVyOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KERhdGFiYXNlQmFja2VuZCogZGF0YWJh
c2UsIGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNv
ZGUpCiB7CiAgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPnJlcG9ydFN0YXJ0VHJhbnNhY3Rp
b25SZXN1bHQoV2ViRGF0YWJhc2UoZGF0YWJhc2UpLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29k
ZSwgc3FsaXRlRXJyb3JDb2RlKTsKIH0KIAotdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRD
b21taXRUcmFuc2FjdGlvblJlc3VsdChBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSwgaW50IGVy
cm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3ZvaWQg
RGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoRGF0YWJhc2VC
YWNrZW5kKiBkYXRhYmFzZSwgaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50
IHNxbGl0ZUVycm9yQ29kZSkKIHsKICAgICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+cmVwb3J0
Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoV2ViRGF0YWJhc2UoZGF0YWJhc2UpLCBlcnJvclNpdGUs
IHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKIH0KIAotdm9pZCBEYXRhYmFzZU9i
c2VydmVyOjpyZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KEFic3RyYWN0RGF0YWJhc2UqIGRh
dGFiYXNlLCBpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJy
b3JDb2RlKQordm9pZCBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVz
dWx0KERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UsIGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxF
cnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCiB7CiAgICAgV2ViRGF0YWJhc2U6Om9ic2Vy
dmVyKCktPnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoV2ViRGF0YWJhc2UoZGF0YWJhc2Up
LCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKIH0KIAotdm9p
ZCBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRWYWN1dW1EYXRhYmFzZVJlc3VsdChBYnN0cmFjdERh
dGFiYXNlKiBkYXRhYmFzZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3ZvaWQgRGF0YWJhc2VPYnNl
cnZlcjo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFz
ZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKIHsKICAgICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+
cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoV2ViRGF0YWJhc2UoZGF0YWJhc2UpLCBzcWxpdGVF
cnJvckNvZGUpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YWJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFi
YXNlLmNwcAkocmV2aXNpb24gMTQxMTg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRGF0YWJhc2UuaCIKIAotI2luY2x1ZGUgIkFic3Ry
YWN0RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJE
YXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJRdW90YVRyYWNrZXIuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgpAQCAtNDIsNyArNDIsNyBAQAogCiAjaWYgIUVOQUJMRShTUUxfREFU
QUJBU0UpCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBBYnN0cmFjdERhdGFiYXNlIHsKK2Ns
YXNzIERhdGFiYXNlQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgU3RyaW5nIHN0cmluZ0lkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIFN0cmluZyBkaXNwbGF5TmFtZSgp
IGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBXZWJE
YXRhYmFzZTo6Y2xvc2VEYXRhYmFzZUltbWVkaWF0ZQogI2VuZGlmCiB9CiAKLVdlYkRhdGFiYXNl
OjpXZWJEYXRhYmFzZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK1dlYkRhdGFi
YXNlOjpXZWJEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogICAgIDog
bV9kYXRhYmFzZShkYXRhYmFzZSkKIHsKIH0K
</data>
<flag name="review"
          id="204406"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>